All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser Maven / Gradle / Ivy

The newest version!
// Generated from org/apache/shardingsphere/sql/parser/autogen/OpenGaussStatement.g4 by ANTLR 4.10.1
package org.apache.shardingsphere.sql.parser.autogen;
import org.antlr.v4.runtime.atn.*;
import org.antlr.v4.runtime.dfa.DFA;
import org.antlr.v4.runtime.*;
import org.antlr.v4.runtime.misc.*;
import org.antlr.v4.runtime.tree.*;
import java.util.List;
import java.util.Iterator;
import java.util.ArrayList;

@SuppressWarnings({"all", "warnings", "unchecked", "unused", "cast"})
public class OpenGaussStatementParser extends Parser {
	static { RuntimeMetaData.checkVersion("4.10.1", RuntimeMetaData.VERSION); }

	protected static final DFA[] _decisionToDFA;
	protected static final PredictionContextCache _sharedContextCache =
		new PredictionContextCache();
	public static final int
		T__0=1, BLOCK_COMMENT=2, INLINE_COMMENT=3, AND_=4, OR_=5, NOT_=6, TILDE_=7, 
		VERTICAL_BAR_=8, AMPERSAND_=9, SIGNED_LEFT_SHIFT_=10, SIGNED_RIGHT_SHIFT_=11, 
		CARET_=12, MOD_=13, COLON_=14, PLUS_=15, MINUS_=16, ASTERISK_=17, SLASH_=18, 
		BACKSLASH_=19, DOT_=20, DOT_ASTERISK_=21, SAFE_EQ_=22, DEQ_=23, EQ_=24, 
		CQ_=25, NEQ_=26, GT_=27, GTE_=28, LT_=29, LTE_=30, POUND_=31, LP_=32, 
		RP_=33, LBE_=34, RBE_=35, LBT_=36, RBT_=37, COMMA_=38, DQ_=39, SQ_=40, 
		BQ_=41, QUESTION_=42, DOLLAR_=43, AT_=44, SEMI_=45, TILDE_TILDE_=46, NOT_TILDE_TILDE_=47, 
		TYPE_CAST_=48, ILIKE_=49, NOT_ILIKE_=50, UNICODE_ESCAPE=51, JSON_EXTRACT_=52, 
		JSON_EXTRACT_TEXT_=53, JSON_PATH_EXTRACT_=54, JSON_PATH_EXTRACT_TEXT_=55, 
		JSONB_CONTAIN_RIGHT_=56, JSONB_CONTAIN_LEFT_=57, JSONB_CONTAIN_ALL_TOP_KEY_=58, 
		JSONB_PATH_DELETE_=59, JSONB_PATH_CONTAIN_ANY_VALUE_=60, JSONB_PATH_PREDICATE_CHECK_=61, 
		GEOMETRIC_LENGTH_=62, GEOMETRIC_DISTANCE_=63, GEOMETRIC_EXTEND_RIGHT_=64, 
		GEOMETRIC_EXTEND_LEFT_=65, GEOMETRIC_STRICT_BELOW_=66, GEOMETRIC_STRICT_ABOVE_=67, 
		GEOMETRIC_EXTEND_ABOVE_=68, GEOMETRIC_EXTEND_BELOW_=69, GEOMETRIC_BELOW_=70, 
		GEOMETRIC_ABOVE_=71, GEOMETRIC_INTERSECT_=72, GEOMETRIC_PERPENDICULAR_=73, 
		GEOMETRIC_SAME_AS_=74, SIGNED_LEFT_SHIFT_E_=75, SIGNED_RIGHT_SHIFT_E_=76, 
		DN_=77, CUBE_ROOT_=78, WS=79, SELECT=80, INSERT=81, UPDATE=82, DELETE=83, 
		CREATE=84, ALTER=85, DROP=86, TRUNCATE=87, SCHEMA=88, GRANT=89, REVOKE=90, 
		ADD=91, SET=92, TABLE=93, COLUMN=94, INDEX=95, CONSTRAINT=96, PRIMARY=97, 
		UNIQUE=98, FOREIGN=99, KEY=100, POSITION=101, PRECISION=102, FUNCTION=103, 
		TRIGGER=104, PROCEDURE=105, VIEW=106, INTO=107, VALUES=108, WITH=109, 
		UNION=110, DISTINCT=111, MAXSIZE=112, CASE=113, WHEN=114, CAST=115, TRIM=116, 
		SUBSTRING=117, FROM=118, NATURAL=119, JOIN=120, FULL=121, INNER=122, OUTER=123, 
		LEFT=124, RIGHT=125, CROSS=126, USING=127, WHERE=128, AS=129, ON=130, 
		IF=131, ELSE=132, THEN=133, FOR=134, TO=135, AND=136, OR=137, IS=138, 
		NOT=139, NULL=140, TRUE=141, FALSE=142, EXISTS=143, BETWEEN=144, IN=145, 
		ALL=146, ANY=147, LIKE=148, ORDER=149, GROUP=150, BY=151, ASC=152, DESC=153, 
		HAVING=154, LIMIT=155, OFFSET=156, BEGIN=157, COMMIT=158, ROLLBACK=159, 
		SAVEPOINT=160, BOOLEAN=161, DOUBLE=162, CHAR=163, CHARACTER=164, ARRAY=165, 
		INTERVAL=166, DATE=167, TIME=168, TIMESTAMP=169, LOCALTIME=170, LOCALTIMESTAMP=171, 
		YEAR=172, QUARTER=173, MONTH=174, WEEK=175, DAY=176, HOUR=177, MINUTE=178, 
		SECOND=179, MICROSECOND=180, DEFAULT=181, CURRENT=182, ENABLE=183, DISABLE=184, 
		CALL=185, INSTANCE=186, PRESERVE=187, DO=188, DEFINER=189, CURRENT_USER=190, 
		SQL=191, CASCADED=192, LOCAL=193, CLOSE=194, OPEN=195, NEXT=196, NAME=197, 
		COLLATION=198, NAMES=199, INTEGER=200, REAL=201, DECIMAL=202, TYPE=203, 
		SMALLINT=204, BIGINT=205, NUMERIC=206, TEXT=207, REPEATABLE=208, CURRENT_DATE=209, 
		CURRENT_TIME=210, CURRENT_TIMESTAMP=211, NULLIF=212, VARYING=213, NATIONAL=214, 
		NCHAR=215, VALUE=216, BOTH=217, LEADING=218, TRAILING=219, COALESCE=220, 
		INTERSECT=221, EXCEPT=222, PACKAGE=223, MINUS=224, TIES=225, FETCH=226, 
		CUBE=227, GROUPING=228, SETS=229, WINDOW=230, OTHERS=231, OVERLAPS=232, 
		SOME=233, AT=234, DEC=235, END=236, LESS=237, THAN=238, MAXVALUE=239, 
		FOR_GENERATOR=240, ADMIN=241, BINARY=242, ESCAPE=243, EXCLUDE=244, MOD=245, 
		PARTITION=246, ROW=247, UNKNOWN=248, ALWAYS=249, CASCADE=250, CHECK=251, 
		GENERATED=252, ISOLATION=253, LEVEL=254, NO=255, OPTION=256, PRIVILEGES=257, 
		READ=258, REFERENCES=259, ROLE=260, ROWS=261, START=262, TRANSACTION=263, 
		USER=264, ACTION=265, CACHE=266, CHARACTERISTICS=267, CLUSTER=268, COLLATE=269, 
		COMMENTS=270, CONCURRENTLY=271, CONNECT=272, CONSTRAINTS=273, CYCLE=274, 
		DATA=275, DATABASE=276, DEFAULTS=277, DEFERRABLE=278, DEFERRED=279, DEPENDS=280, 
		DOMAIN=281, EXCLUDING=282, EXECUTE=283, EXTENDED=284, EXTENSION=285, EXTERNAL=286, 
		EXTRACT=287, FILTER=288, FIRST=289, FOLLOWING=290, FORCE=291, GLOBAL=292, 
		IDENTITY=293, IMMEDIATE=294, INCLUDING=295, INCREMENT=296, INDEXES=297, 
		INHERIT=298, INHERITS=299, INITIALLY=300, INCLUDE=301, LANGUAGE=302, LARGE=303, 
		LAST=304, LOGGED=305, MAIN=306, MATCH=307, MINVALUE=308, NOTHING=309, 
		NULLS=310, OBJECT=311, OIDS=312, ONLY=313, OVER=314, OWNED=315, OWNER=316, 
		PARTIAL=317, PLAIN=318, PRECEDING=319, RANGE=320, RENAME=321, REPLICA=322, 
		RESET=323, RESTART=324, RESTRICT=325, ROUTINE=326, SYNONYM=327, RULE=328, 
		SECURITY=329, SEQUENCE=330, SESSION=331, SESSION_USER=332, SHOW=333, SIMPLE=334, 
		STATISTICS=335, STORAGE=336, TABLESPACE=337, TEMP=338, TEMPORARY=339, 
		UNBOUNDED=340, UNLOGGED=341, USAGE=342, VALID=343, VALIDATE=344, WITHIN=345, 
		WITHOUT=346, ZONE=347, OF=348, UESCAPE=349, GROUPS=350, RECURSIVE=351, 
		INT=352, INT2=353, INT4=354, INT8=355, FLOAT=356, FLOAT4=357, FLOAT8=358, 
		SMALLSERIAL=359, SERIAL=360, BIGSERIAL=361, VARCHAR=362, BYTEA=363, ENUM=364, 
		POINT=365, LINE=366, LSEG=367, BOX=368, PATH=369, POLYGON=370, CIRCLE=371, 
		CIDR=372, INET=373, MACADDR=374, MACADDR8=375, BIT=376, VARBIT=377, TSVECTOR=378, 
		TSQUERY=379, XML=380, JSON=381, INT4RANGE=382, INT8RANGE=383, NUMRANGE=384, 
		TSRANGE=385, TSTZRANGE=386, DATERANGE=387, TABLESAMPLE=388, ORDINALITY=389, 
		CURRENT_ROLE=390, CURRENT_CATALOG=391, CURRENT_SCHEMA=392, NORMALIZE=393, 
		OVERLAY=394, XMLCONCAT=395, XMLELEMENT=396, XMLEXISTS=397, XMLFOREST=398, 
		XMLPARSE=399, XMLPI=400, XMLROOT=401, XMLSERIALIZE=402, TREAT=403, SETOF=404, 
		NFC=405, NFD=406, NFKC=407, NFKD=408, XMLATTRIBUTES=409, REF=410, PASSING=411, 
		VERSION=412, YES=413, STANDALONE=414, GREATEST=415, LEAST=416, MATERIALIZED=417, 
		OPERATOR=418, SHARE=419, ROLLUP=420, ILIKE=421, SIMILAR=422, ISNULL=423, 
		NOTNULL=424, SYMMETRIC=425, DOCUMENT=426, NORMALIZED=427, ASYMMETRIC=428, 
		VARIADIC=429, NOWAIT=430, LOCKED=431, XMLTABLE=432, COLUMNS=433, CONTENT=434, 
		STRIP=435, WHITESPACE=436, XMLNAMESPACES=437, PLACING=438, RETURNING=439, 
		LATERAL=440, NONE=441, ANALYSE=442, ANALYZE=443, CONFLICT=444, OVERRIDING=445, 
		SYSTEM=446, ABORT=447, ABSOLUTE=448, ACCESS=449, AFTER=450, AGGREGATE=451, 
		ALSO=452, ATTACH=453, ATTRIBUTE=454, BACKWARD=455, BEFORE=456, ASSERTION=457, 
		ASSIGNMENT=458, CONTINUE=459, CONVERSION=460, COPY=461, COST=462, CSV=463, 
		CALLED=464, CATALOG=465, CHAIN=466, CHECKPOINT=467, CLASS=468, CONFIGURATION=469, 
		COMMENT=470, DETACH=471, DICTIONARY=472, DIRECTORY=473, EXPRESSION=474, 
		INSENSITIVE=475, DISCARD=476, OFF=477, INSTEAD=478, EXPLAIN=479, INPUT=480, 
		INLINE=481, PARALLEL=482, LEAKPROOF=483, COMMITTED=484, ENCODING=485, 
		IMPLICIT=486, DELIMITER=487, CURSOR=488, EACH=489, EVENT=490, DEALLOCATE=491, 
		CONNECTION=492, DECLARE=493, FAMILY=494, FORWARD=495, EXCLUSIVE=496, FUNCTIONS=497, 
		LOCATION=498, LABEL=499, DELIMITERS=500, HANDLER=501, HEADER=502, IMMUTABLE=503, 
		GRANTED=504, HOLD=505, MAPPING=506, OLD=507, METHOD=508, LOAD=509, LISTEN=510, 
		MODE=511, MOVE=512, PROCEDURAL=513, PARSER=514, PROCEDURES=515, ENCRYPTED=516, 
		PUBLICATION=517, PROGRAM=518, REFERENCING=519, PLANS=520, REINDEX=521, 
		PRIOR=522, PASSWORD=523, RELATIVE=524, QUOTE=525, ROUTINES=526, REPLACE=527, 
		SNAPSHOT=528, REFRESH=529, PREPARE=530, OPTIONS=531, IMPORT=532, INVOKER=533, 
		NEW=534, PREPARED=535, SCROLL=536, SEQUENCES=537, SYSID=538, REASSIGN=539, 
		SERVER=540, SUBSCRIPTION=541, SEARCH=542, SCHEMAS=543, RECHECK=544, POLICY=545, 
		NOTIFY=546, LOCK=547, RELEASE=548, SERIALIZABLE=549, RETURNS=550, STATEMENT=551, 
		STDIN=552, STDOUT=553, TABLES=554, SUPPORT=555, STABLE=556, TEMPLATE=557, 
		UNENCRYPTED=558, VIEWS=559, UNCOMMITTED=560, TRANSFORM=561, UNLISTEN=562, 
		TRUSTED=563, VALIDATOR=564, UNTIL=565, VACUUM=566, VOLATILE=567, STORED=568, 
		WRITE=569, STRICT=570, TYPES=571, WRAPPER=572, WORK=573, FREEZE=574, AUTHORIZATION=575, 
		VERBOSE=576, PERFORMANCE=577, PARAM=578, OUT=579, INOUT=580, DUPLICATE=581, 
		PREDICT=582, FEATURES=583, TS_REWRITE=584, INT16=585, INT1=586, ELEM_CONTAINED_BY_RANGE=587, 
		LOWER_INF=588, UPPER_INF=589, ABBREV=590, SET_MASKLEN=591, TRUNC=592, 
		CLIENT_MASTER_KEY=593, COLUMN_ENCRYPTION_KEY=594, IDENTIFIER_=595, STRING_=596, 
		NUMBER_=597, HEX_DIGIT_=598, BIT_NUM_=599, FILESIZE_LITERAL=600;
	public static final int
		RULE_execute = 0, RULE_setTransaction = 1, RULE_beginTransaction = 2, 
		RULE_commit = 3, RULE_savepoint = 4, RULE_abort = 5, RULE_startTransaction = 6, 
		RULE_end = 7, RULE_rollback = 8, RULE_releaseSavepoint = 9, RULE_rollbackToSavepoint = 10, 
		RULE_prepareTransaction = 11, RULE_commitPrepared = 12, RULE_rollbackPrepared = 13, 
		RULE_setConstraints = 14, RULE_constraintsSetMode = 15, RULE_constraintsSetList = 16, 
		RULE_checkpoint = 17, RULE_lock = 18, RULE_lockType = 19, RULE_insert = 20, 
		RULE_insertTarget = 21, RULE_insertRest = 22, RULE_overrideKind = 23, 
		RULE_insertColumnList = 24, RULE_insertColumnItem = 25, RULE_optOnDuplicateKey = 26, 
		RULE_assignment = 27, RULE_update = 28, RULE_setClauseList = 29, RULE_setClause = 30, 
		RULE_setTarget = 31, RULE_setTargetList = 32, RULE_returningClause = 33, 
		RULE_delete = 34, RULE_relationExprOptAlias = 35, RULE_usingClause = 36, 
		RULE_select = 37, RULE_selectWithParens = 38, RULE_selectNoParens = 39, 
		RULE_selectClauseN = 40, RULE_simpleSelect = 41, RULE_withClause = 42, 
		RULE_intoClause = 43, RULE_optTempTableName = 44, RULE_cteList = 45, RULE_commonTableExpr = 46, 
		RULE_optMaterialized = 47, RULE_optNameList = 48, RULE_preparableStmt = 49, 
		RULE_forLockingClause = 50, RULE_forLockingItems = 51, RULE_forLockingItem = 52, 
		RULE_nowaitOrSkip = 53, RULE_forLockingStrength = 54, RULE_lockedRelsList = 55, 
		RULE_qualifiedNameList = 56, RULE_selectLimit = 57, RULE_valuesClause = 58, 
		RULE_limitClause = 59, RULE_offsetClause = 60, RULE_selectLimitValue = 61, 
		RULE_selectOffsetValue = 62, RULE_selectFetchValue = 63, RULE_rowOrRows = 64, 
		RULE_firstOrNext = 65, RULE_onlyOrWithTies = 66, RULE_targetList = 67, 
		RULE_targetEl = 68, RULE_groupClause = 69, RULE_groupByList = 70, RULE_groupByItem = 71, 
		RULE_emptyGroupingSet = 72, RULE_rollupClause = 73, RULE_cubeClause = 74, 
		RULE_groupingSetsClause = 75, RULE_windowClause = 76, RULE_windowDefinitionList = 77, 
		RULE_windowDefinition = 78, RULE_windowSpecification = 79, RULE_existingWindowName = 80, 
		RULE_partitionClause = 81, RULE_frameClause = 82, RULE_frameExtent = 83, 
		RULE_frameBound = 84, RULE_optWindowExclusionClause = 85, RULE_alias = 86, 
		RULE_fromClause = 87, RULE_fromList = 88, RULE_tableReference = 89, RULE_joinedTable = 90, 
		RULE_crossJoinType = 91, RULE_innerJoinType = 92, RULE_outerJoinType = 93, 
		RULE_naturalJoinType = 94, RULE_joinQual = 95, RULE_relationExpr = 96, 
		RULE_whereClause = 97, RULE_whereOrCurrentClause = 98, RULE_havingClause = 99, 
		RULE_doStatement = 100, RULE_dostmtOptList = 101, RULE_dostmtOptItem = 102, 
		RULE_copy = 103, RULE_copyOptions = 104, RULE_copyGenericOptList = 105, 
		RULE_copyGenericOptElem = 106, RULE_copyGenericOptArg = 107, RULE_copyGenericOptArgList = 108, 
		RULE_copyGenericOptArgListItem = 109, RULE_copyOptList = 110, RULE_copyOptItem = 111, 
		RULE_copyDelimiter = 112, RULE_parameterMarker = 113, RULE_reservedKeyword = 114, 
		RULE_numberLiterals = 115, RULE_literalsType = 116, RULE_identifier = 117, 
		RULE_uescape = 118, RULE_unreservedWord = 119, RULE_typeFuncNameKeyword = 120, 
		RULE_schemaName = 121, RULE_synonymName = 122, RULE_objectName = 123, 
		RULE_tableName = 124, RULE_columnName = 125, RULE_owner = 126, RULE_name = 127, 
		RULE_modelName = 128, RULE_tableNames = 129, RULE_columnNames = 130, RULE_collationName = 131, 
		RULE_indexName = 132, RULE_constraintName = 133, RULE_primaryKey = 134, 
		RULE_andOperator = 135, RULE_orOperator = 136, RULE_comparisonOperator = 137, 
		RULE_inetOperator = 138, RULE_patternMatchingOperator = 139, RULE_cursorName = 140, 
		RULE_aExpr = 141, RULE_bExpr = 142, RULE_cExpr = 143, RULE_indirection = 144, 
		RULE_optIndirection = 145, RULE_indirectionEl = 146, RULE_sliceBound = 147, 
		RULE_inExpr = 148, RULE_caseExpr = 149, RULE_whenClauseList = 150, RULE_whenClause = 151, 
		RULE_caseDefault = 152, RULE_caseArg = 153, RULE_columnref = 154, RULE_qualOp = 155, 
		RULE_subqueryOp = 156, RULE_allOp = 157, RULE_op = 158, RULE_mathOperator = 159, 
		RULE_jsonOperator = 160, RULE_geometricOperator = 161, RULE_qualAllOp = 162, 
		RULE_ascDesc = 163, RULE_anyOperator = 164, RULE_windowExclusionClause = 165, 
		RULE_row = 166, RULE_explicitRow = 167, RULE_implicitRow = 168, RULE_subType = 169, 
		RULE_arrayExpr = 170, RULE_arrayExprList = 171, RULE_funcArgList = 172, 
		RULE_paramName = 173, RULE_funcArgExpr = 174, RULE_typeList = 175, RULE_funcApplication = 176, 
		RULE_funcName = 177, RULE_aexprConst = 178, RULE_numberConst = 179, RULE_qualifiedName = 180, 
		RULE_colId = 181, RULE_typeFunctionName = 182, RULE_functionTable = 183, 
		RULE_xmlTable = 184, RULE_xmlTableColumnList = 185, RULE_xmlTableColumnEl = 186, 
		RULE_xmlTableColumnOptionList = 187, RULE_xmlTableColumnOptionEl = 188, 
		RULE_xmlNamespaceList = 189, RULE_xmlNamespaceEl = 190, RULE_funcExpr = 191, 
		RULE_withinGroupClause = 192, RULE_filterClause = 193, RULE_functionExprWindowless = 194, 
		RULE_ordinality = 195, RULE_functionExprCommonSubexpr = 196, RULE_typeName = 197, 
		RULE_simpleTypeName = 198, RULE_constTypeName = 199, RULE_exprList = 200, 
		RULE_extractList = 201, RULE_extractArg = 202, RULE_genericType = 203, 
		RULE_typeModifiers = 204, RULE_numeric = 205, RULE_constDatetime = 206, 
		RULE_timezone = 207, RULE_character = 208, RULE_characterWithLength = 209, 
		RULE_characterWithoutLength = 210, RULE_characterClause = 211, RULE_optFloat = 212, 
		RULE_attrs = 213, RULE_attrName = 214, RULE_colLable = 215, RULE_bit = 216, 
		RULE_bitWithLength = 217, RULE_bitWithoutLength = 218, RULE_constInterval = 219, 
		RULE_optInterval = 220, RULE_optArrayBounds = 221, RULE_intervalSecond = 222, 
		RULE_unicodeNormalForm = 223, RULE_trimList = 224, RULE_overlayList = 225, 
		RULE_overlayPlacing = 226, RULE_substrFrom = 227, RULE_substrFor = 228, 
		RULE_positionList = 229, RULE_substrList = 230, RULE_xmlAttributes = 231, 
		RULE_xmlAttributeList = 232, RULE_xmlAttributeEl = 233, RULE_xmlExistsArgument = 234, 
		RULE_xmlPassingMech = 235, RULE_documentOrContent = 236, RULE_xmlWhitespaceOption = 237, 
		RULE_xmlRootVersion = 238, RULE_xmlRootStandalone = 239, RULE_rowsFromItem = 240, 
		RULE_rowsFromList = 241, RULE_columnDefList = 242, RULE_tableFuncElementList = 243, 
		RULE_tableFuncElement = 244, RULE_collateClause = 245, RULE_anyName = 246, 
		RULE_aliasClause = 247, RULE_directoryName = 248, RULE_packageName = 249, 
		RULE_pathString = 250, RULE_nameList = 251, RULE_funcAliasClause = 252, 
		RULE_tablesampleClause = 253, RULE_repeatableClause = 254, RULE_allOrDistinct = 255, 
		RULE_sortClause = 256, RULE_sortbyList = 257, RULE_sortby = 258, RULE_nullsOrder = 259, 
		RULE_distinctClause = 260, RULE_distinct = 261, RULE_overClause = 262, 
		RULE_windowName = 263, RULE_indexParams = 264, RULE_indexElemOptions = 265, 
		RULE_indexElem = 266, RULE_collate = 267, RULE_optClass = 268, RULE_reloptions = 269, 
		RULE_reloptionList = 270, RULE_reloptionElem = 271, RULE_defArg = 272, 
		RULE_funcType = 273, RULE_dataType = 274, RULE_dataTypeName = 275, RULE_dataTypeLength = 276, 
		RULE_characterSet = 277, RULE_ignoredIdentifier = 278, RULE_ignoredIdentifiers = 279, 
		RULE_signedIconst = 280, RULE_booleanOrString = 281, RULE_nonReservedWord = 282, 
		RULE_colNameKeyword = 283, RULE_databaseName = 284, RULE_roleSpec = 285, 
		RULE_varName = 286, RULE_varList = 287, RULE_varValue = 288, RULE_zoneValue = 289, 
		RULE_numericOnly = 290, RULE_isoLevel = 291, RULE_columnDef = 292, RULE_colQualList = 293, 
		RULE_colConstraint = 294, RULE_constraintAttr = 295, RULE_colConstraintElem = 296, 
		RULE_parenthesizedSeqOptList = 297, RULE_seqOptList = 298, RULE_seqOptElem = 299, 
		RULE_optColumnList = 300, RULE_columnElem = 301, RULE_columnList = 302, 
		RULE_generatedWhen = 303, RULE_noInherit = 304, RULE_consTableSpace = 305, 
		RULE_definition = 306, RULE_defList = 307, RULE_defElem = 308, RULE_colLabel = 309, 
		RULE_keyActions = 310, RULE_keyDelete = 311, RULE_keyUpdate = 312, RULE_keyAction = 313, 
		RULE_keyMatch = 314, RULE_createGenericOptions = 315, RULE_genericOptionList = 316, 
		RULE_genericOptionElem = 317, RULE_genericOptionArg = 318, RULE_genericOptionName = 319, 
		RULE_replicaIdentity = 320, RULE_operArgtypes = 321, RULE_funcArg = 322, 
		RULE_argClass = 323, RULE_funcArgsList = 324, RULE_nonReservedWordOrSconst = 325, 
		RULE_fileName = 326, RULE_roleList = 327, RULE_setResetClause = 328, RULE_setRest = 329, 
		RULE_transactionModeList = 330, RULE_transactionModeItem = 331, RULE_setRestMore = 332, 
		RULE_encoding = 333, RULE_genericSet = 334, RULE_variableResetStmt = 335, 
		RULE_resetRest = 336, RULE_genericReset = 337, RULE_relationExprList = 338, 
		RULE_commonFuncOptItem = 339, RULE_functionSetResetClause = 340, RULE_rowSecurityCmd = 341, 
		RULE_event = 342, RULE_typeNameList = 343, RULE_ifNotExists = 344, RULE_ifExists = 345, 
		RULE_grant = 346, RULE_revoke = 347, RULE_optionForClause = 348, RULE_createUser = 349, 
		RULE_createOptRoleElem = 350, RULE_alterOptRoleElem = 351, RULE_dropBehavior = 352, 
		RULE_dropUser = 353, RULE_alterUser = 354, RULE_alterUserClauses = 355, 
		RULE_alterOptRoleList = 356, RULE_createRole = 357, RULE_dropRole = 358, 
		RULE_alterRole = 359, RULE_createGroup = 360, RULE_dropDroup = 361, RULE_reassignOwned = 362, 
		RULE_createTable = 363, RULE_executeParamClause = 364, RULE_partitionBoundSpec = 365, 
		RULE_hashPartbound = 366, RULE_hashPartboundElem = 367, RULE_typedTableElementList = 368, 
		RULE_typedTableElement = 369, RULE_columnOptions = 370, RULE_withData = 371, 
		RULE_tableSpace = 372, RULE_onCommitOption = 373, RULE_withOption = 374, 
		RULE_tableAccessMethodClause = 375, RULE_accessMethod = 376, RULE_createIndex = 377, 
		RULE_include = 378, RULE_indexIncludingParams = 379, RULE_accessMethodClause = 380, 
		RULE_createDatabase = 381, RULE_createView = 382, RULE_dropDatabase = 383, 
		RULE_dropDirectory = 384, RULE_createDatabaseSpecification = 385, RULE_createdbOptName = 386, 
		RULE_alterTable = 387, RULE_alterIndex = 388, RULE_dropTable = 389, RULE_dropTableOpt = 390, 
		RULE_dropIndex = 391, RULE_dropIndexOpt = 392, RULE_truncateTable = 393, 
		RULE_restartSeqs = 394, RULE_createTableSpecification = 395, RULE_createDefinitionClause = 396, 
		RULE_createDefinition = 397, RULE_columnDefinition = 398, RULE_columnConstraint = 399, 
		RULE_constraintClause = 400, RULE_columnConstraintOption = 401, RULE_checkOption = 402, 
		RULE_defaultExpr = 403, RULE_sequenceOptions = 404, RULE_sequenceOption = 405, 
		RULE_indexParameters = 406, RULE_action = 407, RULE_constraintOptionalParam = 408, 
		RULE_likeOption = 409, RULE_tableConstraint = 410, RULE_tableConstraintOption = 411, 
		RULE_exclusionWhereClause = 412, RULE_exclusionConstraintList = 413, RULE_exclusionConstraintElem = 414, 
		RULE_inheritClause = 415, RULE_partitionSpec = 416, RULE_partParams = 417, 
		RULE_partElem = 418, RULE_funcExprWindowless = 419, RULE_partStrategy = 420, 
		RULE_createIndexSpecification = 421, RULE_concurrentlyClause = 422, RULE_onlyClause = 423, 
		RULE_fileSizeLiteral = 424, RULE_asteriskClause = 425, RULE_alterDefinitionClause = 426, 
		RULE_partitionCmd = 427, RULE_alterIndexDefinitionClause = 428, RULE_indexPartitionCmd = 429, 
		RULE_renameIndexSpecification = 430, RULE_alterIndexDependsOnExtension = 431, 
		RULE_alterIndexSetTableSpace = 432, RULE_tableNamesClause = 433, RULE_tableNameClause = 434, 
		RULE_alterTableActions = 435, RULE_alterTableAction = 436, RULE_addColumnSpecification = 437, 
		RULE_dropColumnSpecification = 438, RULE_modifyColumnSpecification = 439, 
		RULE_modifyColumn = 440, RULE_alterColumnSetOption = 441, RULE_attributeOptions = 442, 
		RULE_attributeOption = 443, RULE_addConstraintSpecification = 444, RULE_tableConstraintUsingIndex = 445, 
		RULE_modifyConstraintSpecification = 446, RULE_validateConstraintSpecification = 447, 
		RULE_dropConstraintSpecification = 448, RULE_storageParameterWithValue = 449, 
		RULE_storageParameter = 450, RULE_renameColumnSpecification = 451, RULE_renameConstraint = 452, 
		RULE_renameTableSpecification = 453, RULE_indexNames = 454, RULE_alterDatabase = 455, 
		RULE_alterDatabaseClause = 456, RULE_createdbOptItems = 457, RULE_createdbOptItem = 458, 
		RULE_alterTableCmds = 459, RULE_alterTableCmd = 460, RULE_constraintAttributeSpec = 461, 
		RULE_constraintAttributeElem = 462, RULE_alterGenericOptions = 463, RULE_alterGenericOptionList = 464, 
		RULE_alterGenericOptionElem = 465, RULE_alterUsing = 466, RULE_setData = 467, 
		RULE_alterIdentityColumnOptionList = 468, RULE_alterIdentityColumnOption = 469, 
		RULE_alterColumnDefault = 470, RULE_alterOperator = 471, RULE_alterOperatorClass = 472, 
		RULE_alterOperatorClassClauses = 473, RULE_alterOperatorFamily = 474, 
		RULE_alterOperatorFamilyClauses = 475, RULE_opclassItemList = 476, RULE_opclassItem = 477, 
		RULE_opclassPurpose = 478, RULE_alterOperatorClauses = 479, RULE_operatorDefList = 480, 
		RULE_operatorDefElem = 481, RULE_operatorDefArg = 482, RULE_operatorWithArgtypes = 483, 
		RULE_alterAggregate = 484, RULE_aggregateSignature = 485, RULE_aggrArgs = 486, 
		RULE_aggrArgsList = 487, RULE_aggrArg = 488, RULE_alterAggregateDefinitionClause = 489, 
		RULE_alterCollation = 490, RULE_alterCollationClause = 491, RULE_alterSynonym = 492, 
		RULE_alterDirectory = 493, RULE_alterConversion = 494, RULE_alterConversionClause = 495, 
		RULE_alterDefaultPrivileges = 496, RULE_defACLAction = 497, RULE_grantGrantOption = 498, 
		RULE_granteeList = 499, RULE_grantee = 500, RULE_defaclPrivilegeTarget = 501, 
		RULE_privileges = 502, RULE_privilegeList = 503, RULE_privilege = 504, 
		RULE_defACLOptionList = 505, RULE_defACLOption = 506, RULE_schemaNameList = 507, 
		RULE_alterDomain = 508, RULE_alterDomainClause = 509, RULE_alterEventTrigger = 510, 
		RULE_alterEventTriggerClause = 511, RULE_tiggerName = 512, RULE_alterExtension = 513, 
		RULE_createSynonym = 514, RULE_alterExtensionClauses = 515, RULE_functionWithArgtypes = 516, 
		RULE_funcArgs = 517, RULE_aggregateWithArgtypes = 518, RULE_alterExtensionOptList = 519, 
		RULE_alterExtensionOptItem = 520, RULE_alterForeignDataWrapper = 521, 
		RULE_alterForeignDataWrapperClauses = 522, RULE_fdwOptions = 523, RULE_fdwOption = 524, 
		RULE_handlerName = 525, RULE_alterGroup = 526, RULE_alterGroupClauses = 527, 
		RULE_alterLanguage = 528, RULE_alterLargeObject = 529, RULE_alterMaterializedView = 530, 
		RULE_alterMaterializedViewClauses = 531, RULE_declare = 532, RULE_cursor = 533, 
		RULE_cursorOptions = 534, RULE_cursorOption = 535, RULE_executeStmt = 536, 
		RULE_createMaterializedView = 537, RULE_createMvTarget = 538, RULE_refreshMatViewStmt = 539, 
		RULE_alterPolicy = 540, RULE_alterPolicyClauses = 541, RULE_alterProcedure = 542, 
		RULE_alterProcedureClauses = 543, RULE_alterfuncOptList = 544, RULE_alterFunction = 545, 
		RULE_alterFunctionClauses = 546, RULE_alterPublication = 547, RULE_alterRoutine = 548, 
		RULE_alterRule = 549, RULE_alterSequence = 550, RULE_alterSequenceClauses = 551, 
		RULE_alterServer = 552, RULE_foreignServerVersion = 553, RULE_alterStatistics = 554, 
		RULE_alterSubscription = 555, RULE_publicationNameList = 556, RULE_publicationNameItem = 557, 
		RULE_alterSystem = 558, RULE_alterTablespace = 559, RULE_alterTextSearchConfiguration = 560, 
		RULE_alterTextSearchConfigurationClauses = 561, RULE_anyNameList = 562, 
		RULE_alterTextSearchDictionary = 563, RULE_alterTextSearchParser = 564, 
		RULE_alterTextSearchTemplate = 565, RULE_alterTrigger = 566, RULE_alterType = 567, 
		RULE_alterTypeClauses = 568, RULE_alterTypeCmds = 569, RULE_alterTypeCmd = 570, 
		RULE_alterUserMapping = 571, RULE_authIdent = 572, RULE_alterView = 573, 
		RULE_alterViewClauses = 574, RULE_close = 575, RULE_cluster = 576, RULE_clusterIndexSpecification = 577, 
		RULE_comment = 578, RULE_commentClauses = 579, RULE_objectTypeNameOnAnyName = 580, 
		RULE_objectTypeName = 581, RULE_dropTypeName = 582, RULE_objectTypeAnyName = 583, 
		RULE_commentText = 584, RULE_createAccessMethod = 585, RULE_createAggregate = 586, 
		RULE_oldAggrDefinition = 587, RULE_oldAggrList = 588, RULE_oldAggrElem = 589, 
		RULE_createCast = 590, RULE_castContext = 591, RULE_createCollation = 592, 
		RULE_createConversion = 593, RULE_createDomain = 594, RULE_createEventTrigger = 595, 
		RULE_eventTriggerWhenList = 596, RULE_eventTriggerWhenItem = 597, RULE_eventTriggerValueList = 598, 
		RULE_createExtension = 599, RULE_createExtensionOptList = 600, RULE_createExtensionOptItem = 601, 
		RULE_createForeignDataWrapper = 602, RULE_createForeignTable = 603, RULE_createForeignTableClauses = 604, 
		RULE_tableElementList = 605, RULE_tableElement = 606, RULE_tableLikeClause = 607, 
		RULE_tableLikeOptionList = 608, RULE_tableLikeOption = 609, RULE_createFunction = 610, 
		RULE_tableFuncColumnList = 611, RULE_tableFuncColumn = 612, RULE_createfuncOptList = 613, 
		RULE_createfuncOptItem = 614, RULE_transformTypeList = 615, RULE_funcAs = 616, 
		RULE_funcReturn = 617, RULE_funcArgsWithDefaults = 618, RULE_funcArgsWithDefaultsList = 619, 
		RULE_funcArgWithDefault = 620, RULE_createLanguage = 621, RULE_transformElementList = 622, 
		RULE_validatorClause = 623, RULE_createPolicy = 624, RULE_createProcedure = 625, 
		RULE_createPublication = 626, RULE_publicationForTables = 627, RULE_createRule = 628, 
		RULE_ruleActionList = 629, RULE_ruleActionStmt = 630, RULE_ruleActionMulti = 631, 
		RULE_notifyStmt = 632, RULE_createTrigger = 633, RULE_triggerEvents = 634, 
		RULE_triggerOneEvent = 635, RULE_triggerActionTime = 636, RULE_triggerFuncArgs = 637, 
		RULE_triggerFuncArg = 638, RULE_triggerWhen = 639, RULE_triggerForSpec = 640, 
		RULE_triggerReferencing = 641, RULE_triggerTransitions = 642, RULE_triggerTransition = 643, 
		RULE_transitionRelName = 644, RULE_transitionRowOrTable = 645, RULE_transitionOldOrNew = 646, 
		RULE_createSequence = 647, RULE_tempOption = 648, RULE_createServer = 649, 
		RULE_createStatistics = 650, RULE_createSubscription = 651, RULE_createTablespace = 652, 
		RULE_createTextSearch = 653, RULE_createTransform = 654, RULE_createType = 655, 
		RULE_createTypeClauses = 656, RULE_enumValList = 657, RULE_createUserMapping = 658, 
		RULE_discard = 659, RULE_dropAccessMethod = 660, RULE_dropAggregate = 661, 
		RULE_aggregateWithArgtypesList = 662, RULE_dropCast = 663, RULE_dropCollation = 664, 
		RULE_dropConversion = 665, RULE_dropDomain = 666, RULE_dropEventTrigger = 667, 
		RULE_dropExtension = 668, RULE_dropForeignDataWrapper = 669, RULE_dropForeignTable = 670, 
		RULE_dropFunction = 671, RULE_functionWithArgtypesList = 672, RULE_dropLanguage = 673, 
		RULE_dropMaterializedView = 674, RULE_dropOperator = 675, RULE_operatorWithArgtypesList = 676, 
		RULE_dropOperatorClass = 677, RULE_dropOperatorFamily = 678, RULE_dropOwned = 679, 
		RULE_dropPolicy = 680, RULE_dropProcedure = 681, RULE_dropPublication = 682, 
		RULE_dropRoutine = 683, RULE_dropRule = 684, RULE_dropSequence = 685, 
		RULE_dropSynonym = 686, RULE_dropServer = 687, RULE_dropStatistics = 688, 
		RULE_dropSubscription = 689, RULE_dropTablespace = 690, RULE_dropTextSearch = 691, 
		RULE_dropTransform = 692, RULE_dropTrigger = 693, RULE_dropType = 694, 
		RULE_dropUserMapping = 695, RULE_dropView = 696, RULE_importForeignSchema = 697, 
		RULE_importQualification = 698, RULE_importQualificationType = 699, RULE_listen = 700, 
		RULE_move = 701, RULE_prepare = 702, RULE_deallocate = 703, RULE_prepTypeClause = 704, 
		RULE_refreshMaterializedView = 705, RULE_reIndex = 706, RULE_reIndexClauses = 707, 
		RULE_reindexOptionList = 708, RULE_reindexOptionElem = 709, RULE_reindexTargetMultitable = 710, 
		RULE_reindexTargetType = 711, RULE_alterForeignTable = 712, RULE_alterForeignTableClauses = 713, 
		RULE_createOperator = 714, RULE_createOperatorClass = 715, RULE_createOperatorFamily = 716, 
		RULE_securityLabelStmt = 717, RULE_securityLabel = 718, RULE_securityLabelClausces = 719, 
		RULE_unlisten = 720, RULE_createSchema = 721, RULE_createSchemaClauses = 722, 
		RULE_schemaEltList = 723, RULE_schemaStmt = 724, RULE_privilegeClause = 725, 
		RULE_roleClause = 726, RULE_privilegeTypes = 727, RULE_onObjectClause = 728, 
		RULE_numericOnlyList = 729, RULE_privilegeLevel = 730, RULE_routineName = 731, 
		RULE_privilegeType = 732, RULE_createDirectory = 733, RULE_alterSchema = 734, 
		RULE_dropSchema = 735, RULE_fetch = 736, RULE_alterPackage = 737, RULE_direction = 738, 
		RULE_show = 739, RULE_set = 740, RULE_runtimeScope = 741, RULE_timeZoneClause = 742, 
		RULE_configurationParameterClause = 743, RULE_resetParameter = 744, RULE_explain = 745, 
		RULE_explainableStmt = 746, RULE_explainOptionList = 747, RULE_explainOptionElem = 748, 
		RULE_explainOptionArg = 749, RULE_explainOptionName = 750, RULE_analyzeKeyword = 751, 
		RULE_analyzeTable = 752, RULE_vacuumRelationList = 753, RULE_vacuumRelation = 754, 
		RULE_vacAnalyzeOptionList = 755, RULE_vacAnalyzeOptionElem = 756, RULE_vacAnalyzeOptionArg = 757, 
		RULE_vacAnalyzeOptionName = 758, RULE_load = 759, RULE_vacuum = 760, RULE_emptyStatement = 761, 
		RULE_call = 762, RULE_callClauses = 763;
	private static String[] makeRuleNames() {
		return new String[] {
			"execute", "setTransaction", "beginTransaction", "commit", "savepoint", 
			"abort", "startTransaction", "end", "rollback", "releaseSavepoint", "rollbackToSavepoint", 
			"prepareTransaction", "commitPrepared", "rollbackPrepared", "setConstraints", 
			"constraintsSetMode", "constraintsSetList", "checkpoint", "lock", "lockType", 
			"insert", "insertTarget", "insertRest", "overrideKind", "insertColumnList", 
			"insertColumnItem", "optOnDuplicateKey", "assignment", "update", "setClauseList", 
			"setClause", "setTarget", "setTargetList", "returningClause", "delete", 
			"relationExprOptAlias", "usingClause", "select", "selectWithParens", 
			"selectNoParens", "selectClauseN", "simpleSelect", "withClause", "intoClause", 
			"optTempTableName", "cteList", "commonTableExpr", "optMaterialized", 
			"optNameList", "preparableStmt", "forLockingClause", "forLockingItems", 
			"forLockingItem", "nowaitOrSkip", "forLockingStrength", "lockedRelsList", 
			"qualifiedNameList", "selectLimit", "valuesClause", "limitClause", "offsetClause", 
			"selectLimitValue", "selectOffsetValue", "selectFetchValue", "rowOrRows", 
			"firstOrNext", "onlyOrWithTies", "targetList", "targetEl", "groupClause", 
			"groupByList", "groupByItem", "emptyGroupingSet", "rollupClause", "cubeClause", 
			"groupingSetsClause", "windowClause", "windowDefinitionList", "windowDefinition", 
			"windowSpecification", "existingWindowName", "partitionClause", "frameClause", 
			"frameExtent", "frameBound", "optWindowExclusionClause", "alias", "fromClause", 
			"fromList", "tableReference", "joinedTable", "crossJoinType", "innerJoinType", 
			"outerJoinType", "naturalJoinType", "joinQual", "relationExpr", "whereClause", 
			"whereOrCurrentClause", "havingClause", "doStatement", "dostmtOptList", 
			"dostmtOptItem", "copy", "copyOptions", "copyGenericOptList", "copyGenericOptElem", 
			"copyGenericOptArg", "copyGenericOptArgList", "copyGenericOptArgListItem", 
			"copyOptList", "copyOptItem", "copyDelimiter", "parameterMarker", "reservedKeyword", 
			"numberLiterals", "literalsType", "identifier", "uescape", "unreservedWord", 
			"typeFuncNameKeyword", "schemaName", "synonymName", "objectName", "tableName", 
			"columnName", "owner", "name", "modelName", "tableNames", "columnNames", 
			"collationName", "indexName", "constraintName", "primaryKey", "andOperator", 
			"orOperator", "comparisonOperator", "inetOperator", "patternMatchingOperator", 
			"cursorName", "aExpr", "bExpr", "cExpr", "indirection", "optIndirection", 
			"indirectionEl", "sliceBound", "inExpr", "caseExpr", "whenClauseList", 
			"whenClause", "caseDefault", "caseArg", "columnref", "qualOp", "subqueryOp", 
			"allOp", "op", "mathOperator", "jsonOperator", "geometricOperator", "qualAllOp", 
			"ascDesc", "anyOperator", "windowExclusionClause", "row", "explicitRow", 
			"implicitRow", "subType", "arrayExpr", "arrayExprList", "funcArgList", 
			"paramName", "funcArgExpr", "typeList", "funcApplication", "funcName", 
			"aexprConst", "numberConst", "qualifiedName", "colId", "typeFunctionName", 
			"functionTable", "xmlTable", "xmlTableColumnList", "xmlTableColumnEl", 
			"xmlTableColumnOptionList", "xmlTableColumnOptionEl", "xmlNamespaceList", 
			"xmlNamespaceEl", "funcExpr", "withinGroupClause", "filterClause", "functionExprWindowless", 
			"ordinality", "functionExprCommonSubexpr", "typeName", "simpleTypeName", 
			"constTypeName", "exprList", "extractList", "extractArg", "genericType", 
			"typeModifiers", "numeric", "constDatetime", "timezone", "character", 
			"characterWithLength", "characterWithoutLength", "characterClause", "optFloat", 
			"attrs", "attrName", "colLable", "bit", "bitWithLength", "bitWithoutLength", 
			"constInterval", "optInterval", "optArrayBounds", "intervalSecond", "unicodeNormalForm", 
			"trimList", "overlayList", "overlayPlacing", "substrFrom", "substrFor", 
			"positionList", "substrList", "xmlAttributes", "xmlAttributeList", "xmlAttributeEl", 
			"xmlExistsArgument", "xmlPassingMech", "documentOrContent", "xmlWhitespaceOption", 
			"xmlRootVersion", "xmlRootStandalone", "rowsFromItem", "rowsFromList", 
			"columnDefList", "tableFuncElementList", "tableFuncElement", "collateClause", 
			"anyName", "aliasClause", "directoryName", "packageName", "pathString", 
			"nameList", "funcAliasClause", "tablesampleClause", "repeatableClause", 
			"allOrDistinct", "sortClause", "sortbyList", "sortby", "nullsOrder", 
			"distinctClause", "distinct", "overClause", "windowName", "indexParams", 
			"indexElemOptions", "indexElem", "collate", "optClass", "reloptions", 
			"reloptionList", "reloptionElem", "defArg", "funcType", "dataType", "dataTypeName", 
			"dataTypeLength", "characterSet", "ignoredIdentifier", "ignoredIdentifiers", 
			"signedIconst", "booleanOrString", "nonReservedWord", "colNameKeyword", 
			"databaseName", "roleSpec", "varName", "varList", "varValue", "zoneValue", 
			"numericOnly", "isoLevel", "columnDef", "colQualList", "colConstraint", 
			"constraintAttr", "colConstraintElem", "parenthesizedSeqOptList", "seqOptList", 
			"seqOptElem", "optColumnList", "columnElem", "columnList", "generatedWhen", 
			"noInherit", "consTableSpace", "definition", "defList", "defElem", "colLabel", 
			"keyActions", "keyDelete", "keyUpdate", "keyAction", "keyMatch", "createGenericOptions", 
			"genericOptionList", "genericOptionElem", "genericOptionArg", "genericOptionName", 
			"replicaIdentity", "operArgtypes", "funcArg", "argClass", "funcArgsList", 
			"nonReservedWordOrSconst", "fileName", "roleList", "setResetClause", 
			"setRest", "transactionModeList", "transactionModeItem", "setRestMore", 
			"encoding", "genericSet", "variableResetStmt", "resetRest", "genericReset", 
			"relationExprList", "commonFuncOptItem", "functionSetResetClause", "rowSecurityCmd", 
			"event", "typeNameList", "ifNotExists", "ifExists", "grant", "revoke", 
			"optionForClause", "createUser", "createOptRoleElem", "alterOptRoleElem", 
			"dropBehavior", "dropUser", "alterUser", "alterUserClauses", "alterOptRoleList", 
			"createRole", "dropRole", "alterRole", "createGroup", "dropDroup", "reassignOwned", 
			"createTable", "executeParamClause", "partitionBoundSpec", "hashPartbound", 
			"hashPartboundElem", "typedTableElementList", "typedTableElement", "columnOptions", 
			"withData", "tableSpace", "onCommitOption", "withOption", "tableAccessMethodClause", 
			"accessMethod", "createIndex", "include", "indexIncludingParams", "accessMethodClause", 
			"createDatabase", "createView", "dropDatabase", "dropDirectory", "createDatabaseSpecification", 
			"createdbOptName", "alterTable", "alterIndex", "dropTable", "dropTableOpt", 
			"dropIndex", "dropIndexOpt", "truncateTable", "restartSeqs", "createTableSpecification", 
			"createDefinitionClause", "createDefinition", "columnDefinition", "columnConstraint", 
			"constraintClause", "columnConstraintOption", "checkOption", "defaultExpr", 
			"sequenceOptions", "sequenceOption", "indexParameters", "action", "constraintOptionalParam", 
			"likeOption", "tableConstraint", "tableConstraintOption", "exclusionWhereClause", 
			"exclusionConstraintList", "exclusionConstraintElem", "inheritClause", 
			"partitionSpec", "partParams", "partElem", "funcExprWindowless", "partStrategy", 
			"createIndexSpecification", "concurrentlyClause", "onlyClause", "fileSizeLiteral", 
			"asteriskClause", "alterDefinitionClause", "partitionCmd", "alterIndexDefinitionClause", 
			"indexPartitionCmd", "renameIndexSpecification", "alterIndexDependsOnExtension", 
			"alterIndexSetTableSpace", "tableNamesClause", "tableNameClause", "alterTableActions", 
			"alterTableAction", "addColumnSpecification", "dropColumnSpecification", 
			"modifyColumnSpecification", "modifyColumn", "alterColumnSetOption", 
			"attributeOptions", "attributeOption", "addConstraintSpecification", 
			"tableConstraintUsingIndex", "modifyConstraintSpecification", "validateConstraintSpecification", 
			"dropConstraintSpecification", "storageParameterWithValue", "storageParameter", 
			"renameColumnSpecification", "renameConstraint", "renameTableSpecification", 
			"indexNames", "alterDatabase", "alterDatabaseClause", "createdbOptItems", 
			"createdbOptItem", "alterTableCmds", "alterTableCmd", "constraintAttributeSpec", 
			"constraintAttributeElem", "alterGenericOptions", "alterGenericOptionList", 
			"alterGenericOptionElem", "alterUsing", "setData", "alterIdentityColumnOptionList", 
			"alterIdentityColumnOption", "alterColumnDefault", "alterOperator", "alterOperatorClass", 
			"alterOperatorClassClauses", "alterOperatorFamily", "alterOperatorFamilyClauses", 
			"opclassItemList", "opclassItem", "opclassPurpose", "alterOperatorClauses", 
			"operatorDefList", "operatorDefElem", "operatorDefArg", "operatorWithArgtypes", 
			"alterAggregate", "aggregateSignature", "aggrArgs", "aggrArgsList", "aggrArg", 
			"alterAggregateDefinitionClause", "alterCollation", "alterCollationClause", 
			"alterSynonym", "alterDirectory", "alterConversion", "alterConversionClause", 
			"alterDefaultPrivileges", "defACLAction", "grantGrantOption", "granteeList", 
			"grantee", "defaclPrivilegeTarget", "privileges", "privilegeList", "privilege", 
			"defACLOptionList", "defACLOption", "schemaNameList", "alterDomain", 
			"alterDomainClause", "alterEventTrigger", "alterEventTriggerClause", 
			"tiggerName", "alterExtension", "createSynonym", "alterExtensionClauses", 
			"functionWithArgtypes", "funcArgs", "aggregateWithArgtypes", "alterExtensionOptList", 
			"alterExtensionOptItem", "alterForeignDataWrapper", "alterForeignDataWrapperClauses", 
			"fdwOptions", "fdwOption", "handlerName", "alterGroup", "alterGroupClauses", 
			"alterLanguage", "alterLargeObject", "alterMaterializedView", "alterMaterializedViewClauses", 
			"declare", "cursor", "cursorOptions", "cursorOption", "executeStmt", 
			"createMaterializedView", "createMvTarget", "refreshMatViewStmt", "alterPolicy", 
			"alterPolicyClauses", "alterProcedure", "alterProcedureClauses", "alterfuncOptList", 
			"alterFunction", "alterFunctionClauses", "alterPublication", "alterRoutine", 
			"alterRule", "alterSequence", "alterSequenceClauses", "alterServer", 
			"foreignServerVersion", "alterStatistics", "alterSubscription", "publicationNameList", 
			"publicationNameItem", "alterSystem", "alterTablespace", "alterTextSearchConfiguration", 
			"alterTextSearchConfigurationClauses", "anyNameList", "alterTextSearchDictionary", 
			"alterTextSearchParser", "alterTextSearchTemplate", "alterTrigger", "alterType", 
			"alterTypeClauses", "alterTypeCmds", "alterTypeCmd", "alterUserMapping", 
			"authIdent", "alterView", "alterViewClauses", "close", "cluster", "clusterIndexSpecification", 
			"comment", "commentClauses", "objectTypeNameOnAnyName", "objectTypeName", 
			"dropTypeName", "objectTypeAnyName", "commentText", "createAccessMethod", 
			"createAggregate", "oldAggrDefinition", "oldAggrList", "oldAggrElem", 
			"createCast", "castContext", "createCollation", "createConversion", "createDomain", 
			"createEventTrigger", "eventTriggerWhenList", "eventTriggerWhenItem", 
			"eventTriggerValueList", "createExtension", "createExtensionOptList", 
			"createExtensionOptItem", "createForeignDataWrapper", "createForeignTable", 
			"createForeignTableClauses", "tableElementList", "tableElement", "tableLikeClause", 
			"tableLikeOptionList", "tableLikeOption", "createFunction", "tableFuncColumnList", 
			"tableFuncColumn", "createfuncOptList", "createfuncOptItem", "transformTypeList", 
			"funcAs", "funcReturn", "funcArgsWithDefaults", "funcArgsWithDefaultsList", 
			"funcArgWithDefault", "createLanguage", "transformElementList", "validatorClause", 
			"createPolicy", "createProcedure", "createPublication", "publicationForTables", 
			"createRule", "ruleActionList", "ruleActionStmt", "ruleActionMulti", 
			"notifyStmt", "createTrigger", "triggerEvents", "triggerOneEvent", "triggerActionTime", 
			"triggerFuncArgs", "triggerFuncArg", "triggerWhen", "triggerForSpec", 
			"triggerReferencing", "triggerTransitions", "triggerTransition", "transitionRelName", 
			"transitionRowOrTable", "transitionOldOrNew", "createSequence", "tempOption", 
			"createServer", "createStatistics", "createSubscription", "createTablespace", 
			"createTextSearch", "createTransform", "createType", "createTypeClauses", 
			"enumValList", "createUserMapping", "discard", "dropAccessMethod", "dropAggregate", 
			"aggregateWithArgtypesList", "dropCast", "dropCollation", "dropConversion", 
			"dropDomain", "dropEventTrigger", "dropExtension", "dropForeignDataWrapper", 
			"dropForeignTable", "dropFunction", "functionWithArgtypesList", "dropLanguage", 
			"dropMaterializedView", "dropOperator", "operatorWithArgtypesList", "dropOperatorClass", 
			"dropOperatorFamily", "dropOwned", "dropPolicy", "dropProcedure", "dropPublication", 
			"dropRoutine", "dropRule", "dropSequence", "dropSynonym", "dropServer", 
			"dropStatistics", "dropSubscription", "dropTablespace", "dropTextSearch", 
			"dropTransform", "dropTrigger", "dropType", "dropUserMapping", "dropView", 
			"importForeignSchema", "importQualification", "importQualificationType", 
			"listen", "move", "prepare", "deallocate", "prepTypeClause", "refreshMaterializedView", 
			"reIndex", "reIndexClauses", "reindexOptionList", "reindexOptionElem", 
			"reindexTargetMultitable", "reindexTargetType", "alterForeignTable", 
			"alterForeignTableClauses", "createOperator", "createOperatorClass", 
			"createOperatorFamily", "securityLabelStmt", "securityLabel", "securityLabelClausces", 
			"unlisten", "createSchema", "createSchemaClauses", "schemaEltList", "schemaStmt", 
			"privilegeClause", "roleClause", "privilegeTypes", "onObjectClause", 
			"numericOnlyList", "privilegeLevel", "routineName", "privilegeType", 
			"createDirectory", "alterSchema", "dropSchema", "fetch", "alterPackage", 
			"direction", "show", "set", "runtimeScope", "timeZoneClause", "configurationParameterClause", 
			"resetParameter", "explain", "explainableStmt", "explainOptionList", 
			"explainOptionElem", "explainOptionArg", "explainOptionName", "analyzeKeyword", 
			"analyzeTable", "vacuumRelationList", "vacuumRelation", "vacAnalyzeOptionList", 
			"vacAnalyzeOptionElem", "vacAnalyzeOptionArg", "vacAnalyzeOptionName", 
			"load", "vacuum", "emptyStatement", "call", "callClauses"
		};
	}
	public static final String[] ruleNames = makeRuleNames();

	private static String[] makeLiteralNames() {
		return new String[] {
			null, "'skip'", null, null, "'&&'", "'||'", "'!'", "'~'", "'|'", "'&'", 
			"'<<'", "'>>'", "'^'", "'%'", "':'", "'+'", "'-'", "'*'", "'/'", "'\\'", 
			"'.'", "'.*'", "'<=>'", "'=='", "'='", "':='", null, "'>'", "'>='", "'<'", 
			"'<='", "'#'", "'('", "')'", "'{'", "'}'", "'['", "']'", "','", "'\"'", 
			"'''", "'`'", "'?'", "'$'", "'@'", "';'", "'~~'", "'!~~'", "'::'", "'~~*'", 
			"'!~~*'", null, "'->'", "'->>'", "'#>'", "'#>>'", "'@>'", "'<@'", "'?&'", 
			"'#-'", "'@?'", "'@@'", "'@-@'", "'<->'", "'&<'", "'&>'", "'<<|'", "'|>>'", 
			"'&<|'", "'|&>'", "'<^'", "'>^'", "'?#'", "'?-|'", "'~='", "'<<='", "'>>='", 
			"'!!'", "'||/'", null, null, null, null, null, null, null, null, null, 
			null, null, null, null, null, null, null, null, null, null, null, null, 
			null, null, null, null, null, null, null, null, null, null, null, null, 
			null, null, null, null, null, null, null, null, null, null, null, null, 
			null, null, null, null, null, null, null, null, null, null, null, null, 
			null, null, null, null, null, null, null, null, null, null, null, null, 
			null, null, null, null, null, null, null, null, null, null, null, null, 
			null, null, null, null, null, null, null, null, null, null, null, null, 
			null, null, null, null, null, null, null, null, null, null, null, null, 
			null, null, null, null, null, null, null, null, null, null, null, null, 
			null, null, null, null, null, null, null, null, null, null, null, null, 
			null, null, null, null, null, null, null, null, null, null, null, null, 
			null, null, null, null, null, null, null, null, null, null, null, null, 
			null, null, null, null, null, null, null, null, "'DO NOT MATCH ANY THING, JUST FOR GENERATOR'"
		};
	}
	private static final String[] _LITERAL_NAMES = makeLiteralNames();
	private static String[] makeSymbolicNames() {
		return new String[] {
			null, null, "BLOCK_COMMENT", "INLINE_COMMENT", "AND_", "OR_", "NOT_", 
			"TILDE_", "VERTICAL_BAR_", "AMPERSAND_", "SIGNED_LEFT_SHIFT_", "SIGNED_RIGHT_SHIFT_", 
			"CARET_", "MOD_", "COLON_", "PLUS_", "MINUS_", "ASTERISK_", "SLASH_", 
			"BACKSLASH_", "DOT_", "DOT_ASTERISK_", "SAFE_EQ_", "DEQ_", "EQ_", "CQ_", 
			"NEQ_", "GT_", "GTE_", "LT_", "LTE_", "POUND_", "LP_", "RP_", "LBE_", 
			"RBE_", "LBT_", "RBT_", "COMMA_", "DQ_", "SQ_", "BQ_", "QUESTION_", "DOLLAR_", 
			"AT_", "SEMI_", "TILDE_TILDE_", "NOT_TILDE_TILDE_", "TYPE_CAST_", "ILIKE_", 
			"NOT_ILIKE_", "UNICODE_ESCAPE", "JSON_EXTRACT_", "JSON_EXTRACT_TEXT_", 
			"JSON_PATH_EXTRACT_", "JSON_PATH_EXTRACT_TEXT_", "JSONB_CONTAIN_RIGHT_", 
			"JSONB_CONTAIN_LEFT_", "JSONB_CONTAIN_ALL_TOP_KEY_", "JSONB_PATH_DELETE_", 
			"JSONB_PATH_CONTAIN_ANY_VALUE_", "JSONB_PATH_PREDICATE_CHECK_", "GEOMETRIC_LENGTH_", 
			"GEOMETRIC_DISTANCE_", "GEOMETRIC_EXTEND_RIGHT_", "GEOMETRIC_EXTEND_LEFT_", 
			"GEOMETRIC_STRICT_BELOW_", "GEOMETRIC_STRICT_ABOVE_", "GEOMETRIC_EXTEND_ABOVE_", 
			"GEOMETRIC_EXTEND_BELOW_", "GEOMETRIC_BELOW_", "GEOMETRIC_ABOVE_", "GEOMETRIC_INTERSECT_", 
			"GEOMETRIC_PERPENDICULAR_", "GEOMETRIC_SAME_AS_", "SIGNED_LEFT_SHIFT_E_", 
			"SIGNED_RIGHT_SHIFT_E_", "DN_", "CUBE_ROOT_", "WS", "SELECT", "INSERT", 
			"UPDATE", "DELETE", "CREATE", "ALTER", "DROP", "TRUNCATE", "SCHEMA", 
			"GRANT", "REVOKE", "ADD", "SET", "TABLE", "COLUMN", "INDEX", "CONSTRAINT", 
			"PRIMARY", "UNIQUE", "FOREIGN", "KEY", "POSITION", "PRECISION", "FUNCTION", 
			"TRIGGER", "PROCEDURE", "VIEW", "INTO", "VALUES", "WITH", "UNION", "DISTINCT", 
			"MAXSIZE", "CASE", "WHEN", "CAST", "TRIM", "SUBSTRING", "FROM", "NATURAL", 
			"JOIN", "FULL", "INNER", "OUTER", "LEFT", "RIGHT", "CROSS", "USING", 
			"WHERE", "AS", "ON", "IF", "ELSE", "THEN", "FOR", "TO", "AND", "OR", 
			"IS", "NOT", "NULL", "TRUE", "FALSE", "EXISTS", "BETWEEN", "IN", "ALL", 
			"ANY", "LIKE", "ORDER", "GROUP", "BY", "ASC", "DESC", "HAVING", "LIMIT", 
			"OFFSET", "BEGIN", "COMMIT", "ROLLBACK", "SAVEPOINT", "BOOLEAN", "DOUBLE", 
			"CHAR", "CHARACTER", "ARRAY", "INTERVAL", "DATE", "TIME", "TIMESTAMP", 
			"LOCALTIME", "LOCALTIMESTAMP", "YEAR", "QUARTER", "MONTH", "WEEK", "DAY", 
			"HOUR", "MINUTE", "SECOND", "MICROSECOND", "DEFAULT", "CURRENT", "ENABLE", 
			"DISABLE", "CALL", "INSTANCE", "PRESERVE", "DO", "DEFINER", "CURRENT_USER", 
			"SQL", "CASCADED", "LOCAL", "CLOSE", "OPEN", "NEXT", "NAME", "COLLATION", 
			"NAMES", "INTEGER", "REAL", "DECIMAL", "TYPE", "SMALLINT", "BIGINT", 
			"NUMERIC", "TEXT", "REPEATABLE", "CURRENT_DATE", "CURRENT_TIME", "CURRENT_TIMESTAMP", 
			"NULLIF", "VARYING", "NATIONAL", "NCHAR", "VALUE", "BOTH", "LEADING", 
			"TRAILING", "COALESCE", "INTERSECT", "EXCEPT", "PACKAGE", "MINUS", "TIES", 
			"FETCH", "CUBE", "GROUPING", "SETS", "WINDOW", "OTHERS", "OVERLAPS", 
			"SOME", "AT", "DEC", "END", "LESS", "THAN", "MAXVALUE", "FOR_GENERATOR", 
			"ADMIN", "BINARY", "ESCAPE", "EXCLUDE", "MOD", "PARTITION", "ROW", "UNKNOWN", 
			"ALWAYS", "CASCADE", "CHECK", "GENERATED", "ISOLATION", "LEVEL", "NO", 
			"OPTION", "PRIVILEGES", "READ", "REFERENCES", "ROLE", "ROWS", "START", 
			"TRANSACTION", "USER", "ACTION", "CACHE", "CHARACTERISTICS", "CLUSTER", 
			"COLLATE", "COMMENTS", "CONCURRENTLY", "CONNECT", "CONSTRAINTS", "CYCLE", 
			"DATA", "DATABASE", "DEFAULTS", "DEFERRABLE", "DEFERRED", "DEPENDS", 
			"DOMAIN", "EXCLUDING", "EXECUTE", "EXTENDED", "EXTENSION", "EXTERNAL", 
			"EXTRACT", "FILTER", "FIRST", "FOLLOWING", "FORCE", "GLOBAL", "IDENTITY", 
			"IMMEDIATE", "INCLUDING", "INCREMENT", "INDEXES", "INHERIT", "INHERITS", 
			"INITIALLY", "INCLUDE", "LANGUAGE", "LARGE", "LAST", "LOGGED", "MAIN", 
			"MATCH", "MINVALUE", "NOTHING", "NULLS", "OBJECT", "OIDS", "ONLY", "OVER", 
			"OWNED", "OWNER", "PARTIAL", "PLAIN", "PRECEDING", "RANGE", "RENAME", 
			"REPLICA", "RESET", "RESTART", "RESTRICT", "ROUTINE", "SYNONYM", "RULE", 
			"SECURITY", "SEQUENCE", "SESSION", "SESSION_USER", "SHOW", "SIMPLE", 
			"STATISTICS", "STORAGE", "TABLESPACE", "TEMP", "TEMPORARY", "UNBOUNDED", 
			"UNLOGGED", "USAGE", "VALID", "VALIDATE", "WITHIN", "WITHOUT", "ZONE", 
			"OF", "UESCAPE", "GROUPS", "RECURSIVE", "INT", "INT2", "INT4", "INT8", 
			"FLOAT", "FLOAT4", "FLOAT8", "SMALLSERIAL", "SERIAL", "BIGSERIAL", "VARCHAR", 
			"BYTEA", "ENUM", "POINT", "LINE", "LSEG", "BOX", "PATH", "POLYGON", "CIRCLE", 
			"CIDR", "INET", "MACADDR", "MACADDR8", "BIT", "VARBIT", "TSVECTOR", "TSQUERY", 
			"XML", "JSON", "INT4RANGE", "INT8RANGE", "NUMRANGE", "TSRANGE", "TSTZRANGE", 
			"DATERANGE", "TABLESAMPLE", "ORDINALITY", "CURRENT_ROLE", "CURRENT_CATALOG", 
			"CURRENT_SCHEMA", "NORMALIZE", "OVERLAY", "XMLCONCAT", "XMLELEMENT", 
			"XMLEXISTS", "XMLFOREST", "XMLPARSE", "XMLPI", "XMLROOT", "XMLSERIALIZE", 
			"TREAT", "SETOF", "NFC", "NFD", "NFKC", "NFKD", "XMLATTRIBUTES", "REF", 
			"PASSING", "VERSION", "YES", "STANDALONE", "GREATEST", "LEAST", "MATERIALIZED", 
			"OPERATOR", "SHARE", "ROLLUP", "ILIKE", "SIMILAR", "ISNULL", "NOTNULL", 
			"SYMMETRIC", "DOCUMENT", "NORMALIZED", "ASYMMETRIC", "VARIADIC", "NOWAIT", 
			"LOCKED", "XMLTABLE", "COLUMNS", "CONTENT", "STRIP", "WHITESPACE", "XMLNAMESPACES", 
			"PLACING", "RETURNING", "LATERAL", "NONE", "ANALYSE", "ANALYZE", "CONFLICT", 
			"OVERRIDING", "SYSTEM", "ABORT", "ABSOLUTE", "ACCESS", "AFTER", "AGGREGATE", 
			"ALSO", "ATTACH", "ATTRIBUTE", "BACKWARD", "BEFORE", "ASSERTION", "ASSIGNMENT", 
			"CONTINUE", "CONVERSION", "COPY", "COST", "CSV", "CALLED", "CATALOG", 
			"CHAIN", "CHECKPOINT", "CLASS", "CONFIGURATION", "COMMENT", "DETACH", 
			"DICTIONARY", "DIRECTORY", "EXPRESSION", "INSENSITIVE", "DISCARD", "OFF", 
			"INSTEAD", "EXPLAIN", "INPUT", "INLINE", "PARALLEL", "LEAKPROOF", "COMMITTED", 
			"ENCODING", "IMPLICIT", "DELIMITER", "CURSOR", "EACH", "EVENT", "DEALLOCATE", 
			"CONNECTION", "DECLARE", "FAMILY", "FORWARD", "EXCLUSIVE", "FUNCTIONS", 
			"LOCATION", "LABEL", "DELIMITERS", "HANDLER", "HEADER", "IMMUTABLE", 
			"GRANTED", "HOLD", "MAPPING", "OLD", "METHOD", "LOAD", "LISTEN", "MODE", 
			"MOVE", "PROCEDURAL", "PARSER", "PROCEDURES", "ENCRYPTED", "PUBLICATION", 
			"PROGRAM", "REFERENCING", "PLANS", "REINDEX", "PRIOR", "PASSWORD", "RELATIVE", 
			"QUOTE", "ROUTINES", "REPLACE", "SNAPSHOT", "REFRESH", "PREPARE", "OPTIONS", 
			"IMPORT", "INVOKER", "NEW", "PREPARED", "SCROLL", "SEQUENCES", "SYSID", 
			"REASSIGN", "SERVER", "SUBSCRIPTION", "SEARCH", "SCHEMAS", "RECHECK", 
			"POLICY", "NOTIFY", "LOCK", "RELEASE", "SERIALIZABLE", "RETURNS", "STATEMENT", 
			"STDIN", "STDOUT", "TABLES", "SUPPORT", "STABLE", "TEMPLATE", "UNENCRYPTED", 
			"VIEWS", "UNCOMMITTED", "TRANSFORM", "UNLISTEN", "TRUSTED", "VALIDATOR", 
			"UNTIL", "VACUUM", "VOLATILE", "STORED", "WRITE", "STRICT", "TYPES", 
			"WRAPPER", "WORK", "FREEZE", "AUTHORIZATION", "VERBOSE", "PERFORMANCE", 
			"PARAM", "OUT", "INOUT", "DUPLICATE", "PREDICT", "FEATURES", "TS_REWRITE", 
			"INT16", "INT1", "ELEM_CONTAINED_BY_RANGE", "LOWER_INF", "UPPER_INF", 
			"ABBREV", "SET_MASKLEN", "TRUNC", "CLIENT_MASTER_KEY", "COLUMN_ENCRYPTION_KEY", 
			"IDENTIFIER_", "STRING_", "NUMBER_", "HEX_DIGIT_", "BIT_NUM_", "FILESIZE_LITERAL"
		};
	}
	private static final String[] _SYMBOLIC_NAMES = makeSymbolicNames();
	public static final Vocabulary VOCABULARY = new VocabularyImpl(_LITERAL_NAMES, _SYMBOLIC_NAMES);

	/**
	 * @deprecated Use {@link #VOCABULARY} instead.
	 */
	@Deprecated
	public static final String[] tokenNames;
	static {
		tokenNames = new String[_SYMBOLIC_NAMES.length];
		for (int i = 0; i < tokenNames.length; i++) {
			tokenNames[i] = VOCABULARY.getLiteralName(i);
			if (tokenNames[i] == null) {
				tokenNames[i] = VOCABULARY.getSymbolicName(i);
			}

			if (tokenNames[i] == null) {
				tokenNames[i] = "";
			}
		}
	}

	@Override
	@Deprecated
	public String[] getTokenNames() {
		return tokenNames;
	}

	@Override

	public Vocabulary getVocabulary() {
		return VOCABULARY;
	}

	@Override
	public String getGrammarFileName() { return "OpenGaussStatement.g4"; }

	@Override
	public String[] getRuleNames() { return ruleNames; }

	@Override
	public String getSerializedATN() { return _serializedATN; }

	@Override
	public ATN getATN() { return _ATN; }

	public OpenGaussStatementParser(TokenStream input) {
		super(input);
		_interp = new ParserATNSimulator(this,_ATN,_decisionToDFA,_sharedContextCache);
	}

	public static class ExecuteContext extends ParserRuleContext {
		public TerminalNode EOF() { return getToken(OpenGaussStatementParser.EOF, 0); }
		public SelectContext select() {
			return getRuleContext(SelectContext.class,0);
		}
		public InsertContext insert() {
			return getRuleContext(InsertContext.class,0);
		}
		public UpdateContext update() {
			return getRuleContext(UpdateContext.class,0);
		}
		public DeleteContext delete() {
			return getRuleContext(DeleteContext.class,0);
		}
		public CreateIndexContext createIndex() {
			return getRuleContext(CreateIndexContext.class,0);
		}
		public AlterIndexContext alterIndex() {
			return getRuleContext(AlterIndexContext.class,0);
		}
		public DropIndexContext dropIndex() {
			return getRuleContext(DropIndexContext.class,0);
		}
		public CreateTableContext createTable() {
			return getRuleContext(CreateTableContext.class,0);
		}
		public AlterTableContext alterTable() {
			return getRuleContext(AlterTableContext.class,0);
		}
		public DropTableContext dropTable() {
			return getRuleContext(DropTableContext.class,0);
		}
		public TruncateTableContext truncateTable() {
			return getRuleContext(TruncateTableContext.class,0);
		}
		public SetTransactionContext setTransaction() {
			return getRuleContext(SetTransactionContext.class,0);
		}
		public BeginTransactionContext beginTransaction() {
			return getRuleContext(BeginTransactionContext.class,0);
		}
		public StartTransactionContext startTransaction() {
			return getRuleContext(StartTransactionContext.class,0);
		}
		public EndContext end() {
			return getRuleContext(EndContext.class,0);
		}
		public CommitContext commit() {
			return getRuleContext(CommitContext.class,0);
		}
		public CommitPreparedContext commitPrepared() {
			return getRuleContext(CommitPreparedContext.class,0);
		}
		public RollbackContext rollback() {
			return getRuleContext(RollbackContext.class,0);
		}
		public RollbackPreparedContext rollbackPrepared() {
			return getRuleContext(RollbackPreparedContext.class,0);
		}
		public AbortContext abort() {
			return getRuleContext(AbortContext.class,0);
		}
		public SavepointContext savepoint() {
			return getRuleContext(SavepointContext.class,0);
		}
		public ReleaseSavepointContext releaseSavepoint() {
			return getRuleContext(ReleaseSavepointContext.class,0);
		}
		public RollbackToSavepointContext rollbackToSavepoint() {
			return getRuleContext(RollbackToSavepointContext.class,0);
		}
		public GrantContext grant() {
			return getRuleContext(GrantContext.class,0);
		}
		public RevokeContext revoke() {
			return getRuleContext(RevokeContext.class,0);
		}
		public CreateUserContext createUser() {
			return getRuleContext(CreateUserContext.class,0);
		}
		public DropUserContext dropUser() {
			return getRuleContext(DropUserContext.class,0);
		}
		public AlterUserContext alterUser() {
			return getRuleContext(AlterUserContext.class,0);
		}
		public CreateRoleContext createRole() {
			return getRuleContext(CreateRoleContext.class,0);
		}
		public DropRoleContext dropRole() {
			return getRuleContext(DropRoleContext.class,0);
		}
		public AlterRoleContext alterRole() {
			return getRuleContext(AlterRoleContext.class,0);
		}
		public ShowContext show() {
			return getRuleContext(ShowContext.class,0);
		}
		public SetContext set() {
			return getRuleContext(SetContext.class,0);
		}
		public ResetParameterContext resetParameter() {
			return getRuleContext(ResetParameterContext.class,0);
		}
		public CallContext call() {
			return getRuleContext(CallContext.class,0);
		}
		public AlterAggregateContext alterAggregate() {
			return getRuleContext(AlterAggregateContext.class,0);
		}
		public AlterFunctionContext alterFunction() {
			return getRuleContext(AlterFunctionContext.class,0);
		}
		public AlterDatabaseContext alterDatabase() {
			return getRuleContext(AlterDatabaseContext.class,0);
		}
		public AlterDomainContext alterDomain() {
			return getRuleContext(AlterDomainContext.class,0);
		}
		public AlterDefaultPrivilegesContext alterDefaultPrivileges() {
			return getRuleContext(AlterDefaultPrivilegesContext.class,0);
		}
		public AlterForeignTableContext alterForeignTable() {
			return getRuleContext(AlterForeignTableContext.class,0);
		}
		public AlterGroupContext alterGroup() {
			return getRuleContext(AlterGroupContext.class,0);
		}
		public AlterMaterializedViewContext alterMaterializedView() {
			return getRuleContext(AlterMaterializedViewContext.class,0);
		}
		public AlterProcedureContext alterProcedure() {
			return getRuleContext(AlterProcedureContext.class,0);
		}
		public AlterServerContext alterServer() {
			return getRuleContext(AlterServerContext.class,0);
		}
		public AlterSequenceContext alterSequence() {
			return getRuleContext(AlterSequenceContext.class,0);
		}
		public AlterViewContext alterView() {
			return getRuleContext(AlterViewContext.class,0);
		}
		public CommentContext comment() {
			return getRuleContext(CommentContext.class,0);
		}
		public CreateDatabaseContext createDatabase() {
			return getRuleContext(CreateDatabaseContext.class,0);
		}
		public CreateFunctionContext createFunction() {
			return getRuleContext(CreateFunctionContext.class,0);
		}
		public CreateProcedureContext createProcedure() {
			return getRuleContext(CreateProcedureContext.class,0);
		}
		public CreateServerContext createServer() {
			return getRuleContext(CreateServerContext.class,0);
		}
		public CreateTriggerContext createTrigger() {
			return getRuleContext(CreateTriggerContext.class,0);
		}
		public CreateViewContext createView() {
			return getRuleContext(CreateViewContext.class,0);
		}
		public CreateSequenceContext createSequence() {
			return getRuleContext(CreateSequenceContext.class,0);
		}
		public CreateDomainContext createDomain() {
			return getRuleContext(CreateDomainContext.class,0);
		}
		public CreateRuleContext createRule() {
			return getRuleContext(CreateRuleContext.class,0);
		}
		public CreateSchemaContext createSchema() {
			return getRuleContext(CreateSchemaContext.class,0);
		}
		public AlterSchemaContext alterSchema() {
			return getRuleContext(AlterSchemaContext.class,0);
		}
		public DropSchemaContext dropSchema() {
			return getRuleContext(DropSchemaContext.class,0);
		}
		public CreateTypeContext createType() {
			return getRuleContext(CreateTypeContext.class,0);
		}
		public DropTypeContext dropType() {
			return getRuleContext(DropTypeContext.class,0);
		}
		public CreateTextSearchContext createTextSearch() {
			return getRuleContext(CreateTextSearchContext.class,0);
		}
		public DropDatabaseContext dropDatabase() {
			return getRuleContext(DropDatabaseContext.class,0);
		}
		public DropFunctionContext dropFunction() {
			return getRuleContext(DropFunctionContext.class,0);
		}
		public DropProcedureContext dropProcedure() {
			return getRuleContext(DropProcedureContext.class,0);
		}
		public DropRuleContext dropRule() {
			return getRuleContext(DropRuleContext.class,0);
		}
		public DropServerContext dropServer() {
			return getRuleContext(DropServerContext.class,0);
		}
		public DropTriggerContext dropTrigger() {
			return getRuleContext(DropTriggerContext.class,0);
		}
		public DropViewContext dropView() {
			return getRuleContext(DropViewContext.class,0);
		}
		public DropSequenceContext dropSequence() {
			return getRuleContext(DropSequenceContext.class,0);
		}
		public DropDomainContext dropDomain() {
			return getRuleContext(DropDomainContext.class,0);
		}
		public VacuumContext vacuum() {
			return getRuleContext(VacuumContext.class,0);
		}
		public PrepareContext prepare() {
			return getRuleContext(PrepareContext.class,0);
		}
		public ExecuteStmtContext executeStmt() {
			return getRuleContext(ExecuteStmtContext.class,0);
		}
		public DeallocateContext deallocate() {
			return getRuleContext(DeallocateContext.class,0);
		}
		public ExplainContext explain() {
			return getRuleContext(ExplainContext.class,0);
		}
		public AnalyzeTableContext analyzeTable() {
			return getRuleContext(AnalyzeTableContext.class,0);
		}
		public LoadContext load() {
			return getRuleContext(LoadContext.class,0);
		}
		public CreateTablespaceContext createTablespace() {
			return getRuleContext(CreateTablespaceContext.class,0);
		}
		public AlterTablespaceContext alterTablespace() {
			return getRuleContext(AlterTablespaceContext.class,0);
		}
		public DropTablespaceContext dropTablespace() {
			return getRuleContext(DropTablespaceContext.class,0);
		}
		public SetConstraintsContext setConstraints() {
			return getRuleContext(SetConstraintsContext.class,0);
		}
		public CopyContext copy() {
			return getRuleContext(CopyContext.class,0);
		}
		public CreateLanguageContext createLanguage() {
			return getRuleContext(CreateLanguageContext.class,0);
		}
		public AlterLanguageContext alterLanguage() {
			return getRuleContext(AlterLanguageContext.class,0);
		}
		public DropLanguageContext dropLanguage() {
			return getRuleContext(DropLanguageContext.class,0);
		}
		public CreateConversionContext createConversion() {
			return getRuleContext(CreateConversionContext.class,0);
		}
		public AlterConversionContext alterConversion() {
			return getRuleContext(AlterConversionContext.class,0);
		}
		public DropConversionContext dropConversion() {
			return getRuleContext(DropConversionContext.class,0);
		}
		public AlterTextSearchDictionaryContext alterTextSearchDictionary() {
			return getRuleContext(AlterTextSearchDictionaryContext.class,0);
		}
		public AlterTextSearchTemplateContext alterTextSearchTemplate() {
			return getRuleContext(AlterTextSearchTemplateContext.class,0);
		}
		public AlterTextSearchParserContext alterTextSearchParser() {
			return getRuleContext(AlterTextSearchParserContext.class,0);
		}
		public CreateExtensionContext createExtension() {
			return getRuleContext(CreateExtensionContext.class,0);
		}
		public AlterExtensionContext alterExtension() {
			return getRuleContext(AlterExtensionContext.class,0);
		}
		public DropExtensionContext dropExtension() {
			return getRuleContext(DropExtensionContext.class,0);
		}
		public DropTextSearchContext dropTextSearch() {
			return getRuleContext(DropTextSearchContext.class,0);
		}
		public CreateSynonymContext createSynonym() {
			return getRuleContext(CreateSynonymContext.class,0);
		}
		public AlterSynonymContext alterSynonym() {
			return getRuleContext(AlterSynonymContext.class,0);
		}
		public DropSynonymContext dropSynonym() {
			return getRuleContext(DropSynonymContext.class,0);
		}
		public DeclareContext declare() {
			return getRuleContext(DeclareContext.class,0);
		}
		public CursorContext cursor() {
			return getRuleContext(CursorContext.class,0);
		}
		public CloseContext close() {
			return getRuleContext(CloseContext.class,0);
		}
		public MoveContext move() {
			return getRuleContext(MoveContext.class,0);
		}
		public FetchContext fetch() {
			return getRuleContext(FetchContext.class,0);
		}
		public CreateDirectoryContext createDirectory() {
			return getRuleContext(CreateDirectoryContext.class,0);
		}
		public AlterDirectoryContext alterDirectory() {
			return getRuleContext(AlterDirectoryContext.class,0);
		}
		public DropDirectoryContext dropDirectory() {
			return getRuleContext(DropDirectoryContext.class,0);
		}
		public CreateCastContext createCast() {
			return getRuleContext(CreateCastContext.class,0);
		}
		public DropCastContext dropCast() {
			return getRuleContext(DropCastContext.class,0);
		}
		public AlterRuleContext alterRule() {
			return getRuleContext(AlterRuleContext.class,0);
		}
		public CheckpointContext checkpoint() {
			return getRuleContext(CheckpointContext.class,0);
		}
		public AlterTypeContext alterType() {
			return getRuleContext(AlterTypeContext.class,0);
		}
		public CreatePublicationContext createPublication() {
			return getRuleContext(CreatePublicationContext.class,0);
		}
		public DropPublicationContext dropPublication() {
			return getRuleContext(DropPublicationContext.class,0);
		}
		public CreateAggregateContext createAggregate() {
			return getRuleContext(CreateAggregateContext.class,0);
		}
		public AlterPackageContext alterPackage() {
			return getRuleContext(AlterPackageContext.class,0);
		}
		public EmptyStatementContext emptyStatement() {
			return getRuleContext(EmptyStatementContext.class,0);
		}
		public TerminalNode SEMI_() { return getToken(OpenGaussStatementParser.SEMI_, 0); }
		public ExecuteContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_execute; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitExecute(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ExecuteContext execute() throws RecognitionException {
		ExecuteContext _localctx = new ExecuteContext(_ctx, getState());
		enterRule(_localctx, 0, RULE_execute);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1646);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,0,_ctx) ) {
			case 1:
				{
				setState(1528);
				select();
				}
				break;
			case 2:
				{
				setState(1529);
				insert();
				}
				break;
			case 3:
				{
				setState(1530);
				update();
				}
				break;
			case 4:
				{
				setState(1531);
				delete();
				}
				break;
			case 5:
				{
				setState(1532);
				createIndex();
				}
				break;
			case 6:
				{
				setState(1533);
				alterIndex();
				}
				break;
			case 7:
				{
				setState(1534);
				dropIndex();
				}
				break;
			case 8:
				{
				setState(1535);
				createTable();
				}
				break;
			case 9:
				{
				setState(1536);
				alterTable();
				}
				break;
			case 10:
				{
				setState(1537);
				dropTable();
				}
				break;
			case 11:
				{
				setState(1538);
				truncateTable();
				}
				break;
			case 12:
				{
				setState(1539);
				setTransaction();
				}
				break;
			case 13:
				{
				setState(1540);
				beginTransaction();
				}
				break;
			case 14:
				{
				setState(1541);
				startTransaction();
				}
				break;
			case 15:
				{
				setState(1542);
				end();
				}
				break;
			case 16:
				{
				setState(1543);
				commit();
				}
				break;
			case 17:
				{
				setState(1544);
				commitPrepared();
				}
				break;
			case 18:
				{
				setState(1545);
				rollback();
				}
				break;
			case 19:
				{
				setState(1546);
				rollbackPrepared();
				}
				break;
			case 20:
				{
				setState(1547);
				abort();
				}
				break;
			case 21:
				{
				setState(1548);
				savepoint();
				}
				break;
			case 22:
				{
				setState(1549);
				releaseSavepoint();
				}
				break;
			case 23:
				{
				setState(1550);
				rollbackToSavepoint();
				}
				break;
			case 24:
				{
				setState(1551);
				grant();
				}
				break;
			case 25:
				{
				setState(1552);
				revoke();
				}
				break;
			case 26:
				{
				setState(1553);
				createUser();
				}
				break;
			case 27:
				{
				setState(1554);
				dropUser();
				}
				break;
			case 28:
				{
				setState(1555);
				alterUser();
				}
				break;
			case 29:
				{
				setState(1556);
				createRole();
				}
				break;
			case 30:
				{
				setState(1557);
				dropRole();
				}
				break;
			case 31:
				{
				setState(1558);
				alterRole();
				}
				break;
			case 32:
				{
				setState(1559);
				show();
				}
				break;
			case 33:
				{
				setState(1560);
				set();
				}
				break;
			case 34:
				{
				setState(1561);
				resetParameter();
				}
				break;
			case 35:
				{
				setState(1562);
				call();
				}
				break;
			case 36:
				{
				setState(1563);
				alterAggregate();
				}
				break;
			case 37:
				{
				setState(1564);
				alterFunction();
				}
				break;
			case 38:
				{
				setState(1565);
				alterDatabase();
				}
				break;
			case 39:
				{
				setState(1566);
				alterDomain();
				}
				break;
			case 40:
				{
				setState(1567);
				alterDefaultPrivileges();
				}
				break;
			case 41:
				{
				setState(1568);
				alterForeignTable();
				}
				break;
			case 42:
				{
				setState(1569);
				alterGroup();
				}
				break;
			case 43:
				{
				setState(1570);
				alterMaterializedView();
				}
				break;
			case 44:
				{
				setState(1571);
				alterProcedure();
				}
				break;
			case 45:
				{
				setState(1572);
				alterServer();
				}
				break;
			case 46:
				{
				setState(1573);
				alterSequence();
				}
				break;
			case 47:
				{
				setState(1574);
				alterView();
				}
				break;
			case 48:
				{
				setState(1575);
				comment();
				}
				break;
			case 49:
				{
				setState(1576);
				createDatabase();
				}
				break;
			case 50:
				{
				setState(1577);
				createFunction();
				}
				break;
			case 51:
				{
				setState(1578);
				createProcedure();
				}
				break;
			case 52:
				{
				setState(1579);
				createServer();
				}
				break;
			case 53:
				{
				setState(1580);
				createTrigger();
				}
				break;
			case 54:
				{
				setState(1581);
				createView();
				}
				break;
			case 55:
				{
				setState(1582);
				createSequence();
				}
				break;
			case 56:
				{
				setState(1583);
				createDomain();
				}
				break;
			case 57:
				{
				setState(1584);
				createRule();
				}
				break;
			case 58:
				{
				setState(1585);
				createSchema();
				}
				break;
			case 59:
				{
				setState(1586);
				alterSchema();
				}
				break;
			case 60:
				{
				setState(1587);
				dropSchema();
				}
				break;
			case 61:
				{
				setState(1588);
				createType();
				}
				break;
			case 62:
				{
				setState(1589);
				dropType();
				}
				break;
			case 63:
				{
				setState(1590);
				createTextSearch();
				}
				break;
			case 64:
				{
				setState(1591);
				dropDatabase();
				}
				break;
			case 65:
				{
				setState(1592);
				dropFunction();
				}
				break;
			case 66:
				{
				setState(1593);
				dropProcedure();
				}
				break;
			case 67:
				{
				setState(1594);
				dropRule();
				}
				break;
			case 68:
				{
				setState(1595);
				dropServer();
				}
				break;
			case 69:
				{
				setState(1596);
				dropTrigger();
				}
				break;
			case 70:
				{
				setState(1597);
				dropView();
				}
				break;
			case 71:
				{
				setState(1598);
				dropSequence();
				}
				break;
			case 72:
				{
				setState(1599);
				dropDomain();
				}
				break;
			case 73:
				{
				setState(1600);
				vacuum();
				}
				break;
			case 74:
				{
				setState(1601);
				prepare();
				}
				break;
			case 75:
				{
				setState(1602);
				executeStmt();
				}
				break;
			case 76:
				{
				setState(1603);
				deallocate();
				}
				break;
			case 77:
				{
				setState(1604);
				explain();
				}
				break;
			case 78:
				{
				setState(1605);
				analyzeTable();
				}
				break;
			case 79:
				{
				setState(1606);
				load();
				}
				break;
			case 80:
				{
				setState(1607);
				createTablespace();
				}
				break;
			case 81:
				{
				setState(1608);
				alterTablespace();
				}
				break;
			case 82:
				{
				setState(1609);
				dropTablespace();
				}
				break;
			case 83:
				{
				setState(1610);
				setConstraints();
				}
				break;
			case 84:
				{
				setState(1611);
				copy();
				}
				break;
			case 85:
				{
				setState(1612);
				createLanguage();
				}
				break;
			case 86:
				{
				setState(1613);
				alterLanguage();
				}
				break;
			case 87:
				{
				setState(1614);
				dropLanguage();
				}
				break;
			case 88:
				{
				setState(1615);
				createConversion();
				}
				break;
			case 89:
				{
				setState(1616);
				alterConversion();
				}
				break;
			case 90:
				{
				setState(1617);
				dropConversion();
				}
				break;
			case 91:
				{
				setState(1618);
				alterTextSearchDictionary();
				}
				break;
			case 92:
				{
				setState(1619);
				alterTextSearchTemplate();
				}
				break;
			case 93:
				{
				setState(1620);
				alterTextSearchParser();
				}
				break;
			case 94:
				{
				setState(1621);
				createExtension();
				}
				break;
			case 95:
				{
				setState(1622);
				alterExtension();
				}
				break;
			case 96:
				{
				setState(1623);
				dropExtension();
				}
				break;
			case 97:
				{
				setState(1624);
				dropTextSearch();
				}
				break;
			case 98:
				{
				setState(1625);
				createSynonym();
				}
				break;
			case 99:
				{
				setState(1626);
				alterSynonym();
				}
				break;
			case 100:
				{
				setState(1627);
				dropSynonym();
				}
				break;
			case 101:
				{
				setState(1628);
				declare();
				}
				break;
			case 102:
				{
				setState(1629);
				cursor();
				}
				break;
			case 103:
				{
				setState(1630);
				close();
				}
				break;
			case 104:
				{
				setState(1631);
				move();
				}
				break;
			case 105:
				{
				setState(1632);
				fetch();
				}
				break;
			case 106:
				{
				setState(1633);
				createDirectory();
				}
				break;
			case 107:
				{
				setState(1634);
				alterDirectory();
				}
				break;
			case 108:
				{
				setState(1635);
				dropDirectory();
				}
				break;
			case 109:
				{
				setState(1636);
				createCast();
				}
				break;
			case 110:
				{
				setState(1637);
				dropCast();
				}
				break;
			case 111:
				{
				setState(1638);
				alterRule();
				}
				break;
			case 112:
				{
				setState(1639);
				checkpoint();
				}
				break;
			case 113:
				{
				setState(1640);
				alterType();
				}
				break;
			case 114:
				{
				setState(1641);
				createPublication();
				}
				break;
			case 115:
				{
				setState(1642);
				dropPublication();
				}
				break;
			case 116:
				{
				setState(1643);
				createAggregate();
				}
				break;
			case 117:
				{
				setState(1644);
				alterPackage();
				}
				break;
			case 118:
				{
				setState(1645);
				emptyStatement();
				}
				break;
			}
			setState(1649);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==SEMI_) {
				{
				setState(1648);
				match(SEMI_);
				}
			}

			setState(1651);
			match(EOF);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class SetTransactionContext extends ParserRuleContext {
		public TerminalNode SET() { return getToken(OpenGaussStatementParser.SET, 0); }
		public TerminalNode TRANSACTION() { return getToken(OpenGaussStatementParser.TRANSACTION, 0); }
		public TransactionModeListContext transactionModeList() {
			return getRuleContext(TransactionModeListContext.class,0);
		}
		public TerminalNode SESSION() { return getToken(OpenGaussStatementParser.SESSION, 0); }
		public TerminalNode CHARACTERISTICS() { return getToken(OpenGaussStatementParser.CHARACTERISTICS, 0); }
		public TerminalNode AS() { return getToken(OpenGaussStatementParser.AS, 0); }
		public TerminalNode SNAPSHOT() { return getToken(OpenGaussStatementParser.SNAPSHOT, 0); }
		public TerminalNode STRING_() { return getToken(OpenGaussStatementParser.STRING_, 0); }
		public SetTransactionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_setTransaction; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitSetTransaction(this);
			else return visitor.visitChildren(this);
		}
	}

	public final SetTransactionContext setTransaction() throws RecognitionException {
		SetTransactionContext _localctx = new SetTransactionContext(_ctx, getState());
		enterRule(_localctx, 2, RULE_setTransaction);
		int _la;
		try {
			setState(1665);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,3,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(1653);
				match(SET);
				setState(1657);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==SESSION) {
					{
					setState(1654);
					match(SESSION);
					setState(1655);
					match(CHARACTERISTICS);
					setState(1656);
					match(AS);
					}
				}

				setState(1659);
				match(TRANSACTION);
				setState(1660);
				transactionModeList();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(1661);
				match(SET);
				setState(1662);
				match(TRANSACTION);
				setState(1663);
				match(SNAPSHOT);
				setState(1664);
				match(STRING_);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class BeginTransactionContext extends ParserRuleContext {
		public TerminalNode BEGIN() { return getToken(OpenGaussStatementParser.BEGIN, 0); }
		public TransactionModeListContext transactionModeList() {
			return getRuleContext(TransactionModeListContext.class,0);
		}
		public TerminalNode WORK() { return getToken(OpenGaussStatementParser.WORK, 0); }
		public TerminalNode TRANSACTION() { return getToken(OpenGaussStatementParser.TRANSACTION, 0); }
		public BeginTransactionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_beginTransaction; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitBeginTransaction(this);
			else return visitor.visitChildren(this);
		}
	}

	public final BeginTransactionContext beginTransaction() throws RecognitionException {
		BeginTransactionContext _localctx = new BeginTransactionContext(_ctx, getState());
		enterRule(_localctx, 4, RULE_beginTransaction);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1667);
			match(BEGIN);
			setState(1669);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==TRANSACTION || _la==WORK) {
				{
				setState(1668);
				_la = _input.LA(1);
				if ( !(_la==TRANSACTION || _la==WORK) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
			}

			setState(1672);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==NOT || ((((_la - 253)) & ~0x3f) == 0 && ((1L << (_la - 253)) & ((1L << (ISOLATION - 253)) | (1L << (READ - 253)) | (1L << (DEFERRABLE - 253)))) != 0)) {
				{
				setState(1671);
				transactionModeList();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CommitContext extends ParserRuleContext {
		public TerminalNode COMMIT() { return getToken(OpenGaussStatementParser.COMMIT, 0); }
		public TerminalNode AND() { return getToken(OpenGaussStatementParser.AND, 0); }
		public TerminalNode CHAIN() { return getToken(OpenGaussStatementParser.CHAIN, 0); }
		public TerminalNode WORK() { return getToken(OpenGaussStatementParser.WORK, 0); }
		public TerminalNode TRANSACTION() { return getToken(OpenGaussStatementParser.TRANSACTION, 0); }
		public TerminalNode NO() { return getToken(OpenGaussStatementParser.NO, 0); }
		public CommitContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_commit; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitCommit(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CommitContext commit() throws RecognitionException {
		CommitContext _localctx = new CommitContext(_ctx, getState());
		enterRule(_localctx, 6, RULE_commit);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1674);
			match(COMMIT);
			setState(1676);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==TRANSACTION || _la==WORK) {
				{
				setState(1675);
				_la = _input.LA(1);
				if ( !(_la==TRANSACTION || _la==WORK) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
			}

			setState(1683);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==AND) {
				{
				setState(1678);
				match(AND);
				setState(1680);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==NO) {
					{
					setState(1679);
					match(NO);
					}
				}

				setState(1682);
				match(CHAIN);
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class SavepointContext extends ParserRuleContext {
		public TerminalNode SAVEPOINT() { return getToken(OpenGaussStatementParser.SAVEPOINT, 0); }
		public ColIdContext colId() {
			return getRuleContext(ColIdContext.class,0);
		}
		public SavepointContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_savepoint; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitSavepoint(this);
			else return visitor.visitChildren(this);
		}
	}

	public final SavepointContext savepoint() throws RecognitionException {
		SavepointContext _localctx = new SavepointContext(_ctx, getState());
		enterRule(_localctx, 8, RULE_savepoint);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1685);
			match(SAVEPOINT);
			setState(1686);
			colId();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AbortContext extends ParserRuleContext {
		public TerminalNode ABORT() { return getToken(OpenGaussStatementParser.ABORT, 0); }
		public TerminalNode AND() { return getToken(OpenGaussStatementParser.AND, 0); }
		public TerminalNode CHAIN() { return getToken(OpenGaussStatementParser.CHAIN, 0); }
		public TerminalNode WORK() { return getToken(OpenGaussStatementParser.WORK, 0); }
		public TerminalNode TRANSACTION() { return getToken(OpenGaussStatementParser.TRANSACTION, 0); }
		public TerminalNode NO() { return getToken(OpenGaussStatementParser.NO, 0); }
		public AbortContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_abort; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitAbort(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AbortContext abort() throws RecognitionException {
		AbortContext _localctx = new AbortContext(_ctx, getState());
		enterRule(_localctx, 10, RULE_abort);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1688);
			match(ABORT);
			setState(1690);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==TRANSACTION || _la==WORK) {
				{
				setState(1689);
				_la = _input.LA(1);
				if ( !(_la==TRANSACTION || _la==WORK) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
			}

			setState(1697);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==AND) {
				{
				setState(1692);
				match(AND);
				setState(1694);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==NO) {
					{
					setState(1693);
					match(NO);
					}
				}

				setState(1696);
				match(CHAIN);
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class StartTransactionContext extends ParserRuleContext {
		public TerminalNode START() { return getToken(OpenGaussStatementParser.START, 0); }
		public TerminalNode TRANSACTION() { return getToken(OpenGaussStatementParser.TRANSACTION, 0); }
		public TransactionModeListContext transactionModeList() {
			return getRuleContext(TransactionModeListContext.class,0);
		}
		public StartTransactionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_startTransaction; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitStartTransaction(this);
			else return visitor.visitChildren(this);
		}
	}

	public final StartTransactionContext startTransaction() throws RecognitionException {
		StartTransactionContext _localctx = new StartTransactionContext(_ctx, getState());
		enterRule(_localctx, 12, RULE_startTransaction);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1699);
			match(START);
			setState(1700);
			match(TRANSACTION);
			setState(1702);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==NOT || ((((_la - 253)) & ~0x3f) == 0 && ((1L << (_la - 253)) & ((1L << (ISOLATION - 253)) | (1L << (READ - 253)) | (1L << (DEFERRABLE - 253)))) != 0)) {
				{
				setState(1701);
				transactionModeList();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class EndContext extends ParserRuleContext {
		public TerminalNode END() { return getToken(OpenGaussStatementParser.END, 0); }
		public TerminalNode AND() { return getToken(OpenGaussStatementParser.AND, 0); }
		public TerminalNode CHAIN() { return getToken(OpenGaussStatementParser.CHAIN, 0); }
		public TerminalNode WORK() { return getToken(OpenGaussStatementParser.WORK, 0); }
		public TerminalNode TRANSACTION() { return getToken(OpenGaussStatementParser.TRANSACTION, 0); }
		public TerminalNode NO() { return getToken(OpenGaussStatementParser.NO, 0); }
		public EndContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_end; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitEnd(this);
			else return visitor.visitChildren(this);
		}
	}

	public final EndContext end() throws RecognitionException {
		EndContext _localctx = new EndContext(_ctx, getState());
		enterRule(_localctx, 14, RULE_end);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1704);
			match(END);
			setState(1706);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==TRANSACTION || _la==WORK) {
				{
				setState(1705);
				_la = _input.LA(1);
				if ( !(_la==TRANSACTION || _la==WORK) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
			}

			setState(1713);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==AND) {
				{
				setState(1708);
				match(AND);
				setState(1710);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==NO) {
					{
					setState(1709);
					match(NO);
					}
				}

				setState(1712);
				match(CHAIN);
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class RollbackContext extends ParserRuleContext {
		public TerminalNode ROLLBACK() { return getToken(OpenGaussStatementParser.ROLLBACK, 0); }
		public TerminalNode AND() { return getToken(OpenGaussStatementParser.AND, 0); }
		public TerminalNode CHAIN() { return getToken(OpenGaussStatementParser.CHAIN, 0); }
		public TerminalNode WORK() { return getToken(OpenGaussStatementParser.WORK, 0); }
		public TerminalNode TRANSACTION() { return getToken(OpenGaussStatementParser.TRANSACTION, 0); }
		public TerminalNode NO() { return getToken(OpenGaussStatementParser.NO, 0); }
		public RollbackContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_rollback; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitRollback(this);
			else return visitor.visitChildren(this);
		}
	}

	public final RollbackContext rollback() throws RecognitionException {
		RollbackContext _localctx = new RollbackContext(_ctx, getState());
		enterRule(_localctx, 16, RULE_rollback);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1715);
			match(ROLLBACK);
			setState(1717);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==TRANSACTION || _la==WORK) {
				{
				setState(1716);
				_la = _input.LA(1);
				if ( !(_la==TRANSACTION || _la==WORK) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
			}

			setState(1724);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==AND) {
				{
				setState(1719);
				match(AND);
				setState(1721);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==NO) {
					{
					setState(1720);
					match(NO);
					}
				}

				setState(1723);
				match(CHAIN);
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ReleaseSavepointContext extends ParserRuleContext {
		public TerminalNode RELEASE() { return getToken(OpenGaussStatementParser.RELEASE, 0); }
		public ColIdContext colId() {
			return getRuleContext(ColIdContext.class,0);
		}
		public TerminalNode SAVEPOINT() { return getToken(OpenGaussStatementParser.SAVEPOINT, 0); }
		public ReleaseSavepointContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_releaseSavepoint; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitReleaseSavepoint(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ReleaseSavepointContext releaseSavepoint() throws RecognitionException {
		ReleaseSavepointContext _localctx = new ReleaseSavepointContext(_ctx, getState());
		enterRule(_localctx, 18, RULE_releaseSavepoint);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1726);
			match(RELEASE);
			setState(1728);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,19,_ctx) ) {
			case 1:
				{
				setState(1727);
				match(SAVEPOINT);
				}
				break;
			}
			setState(1730);
			colId();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class RollbackToSavepointContext extends ParserRuleContext {
		public TerminalNode ROLLBACK() { return getToken(OpenGaussStatementParser.ROLLBACK, 0); }
		public TerminalNode TO() { return getToken(OpenGaussStatementParser.TO, 0); }
		public ColIdContext colId() {
			return getRuleContext(ColIdContext.class,0);
		}
		public TerminalNode SAVEPOINT() { return getToken(OpenGaussStatementParser.SAVEPOINT, 0); }
		public TerminalNode WORK() { return getToken(OpenGaussStatementParser.WORK, 0); }
		public TerminalNode TRANSACTION() { return getToken(OpenGaussStatementParser.TRANSACTION, 0); }
		public RollbackToSavepointContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_rollbackToSavepoint; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitRollbackToSavepoint(this);
			else return visitor.visitChildren(this);
		}
	}

	public final RollbackToSavepointContext rollbackToSavepoint() throws RecognitionException {
		RollbackToSavepointContext _localctx = new RollbackToSavepointContext(_ctx, getState());
		enterRule(_localctx, 20, RULE_rollbackToSavepoint);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1732);
			match(ROLLBACK);
			setState(1734);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==TRANSACTION || _la==WORK) {
				{
				setState(1733);
				_la = _input.LA(1);
				if ( !(_la==TRANSACTION || _la==WORK) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
			}

			setState(1736);
			match(TO);
			setState(1738);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,21,_ctx) ) {
			case 1:
				{
				setState(1737);
				match(SAVEPOINT);
				}
				break;
			}
			setState(1740);
			colId();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class PrepareTransactionContext extends ParserRuleContext {
		public TerminalNode PREPARE() { return getToken(OpenGaussStatementParser.PREPARE, 0); }
		public TerminalNode TRANSACTION() { return getToken(OpenGaussStatementParser.TRANSACTION, 0); }
		public TerminalNode STRING_() { return getToken(OpenGaussStatementParser.STRING_, 0); }
		public PrepareTransactionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_prepareTransaction; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitPrepareTransaction(this);
			else return visitor.visitChildren(this);
		}
	}

	public final PrepareTransactionContext prepareTransaction() throws RecognitionException {
		PrepareTransactionContext _localctx = new PrepareTransactionContext(_ctx, getState());
		enterRule(_localctx, 22, RULE_prepareTransaction);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1742);
			match(PREPARE);
			setState(1743);
			match(TRANSACTION);
			setState(1744);
			match(STRING_);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CommitPreparedContext extends ParserRuleContext {
		public TerminalNode COMMIT() { return getToken(OpenGaussStatementParser.COMMIT, 0); }
		public TerminalNode PREPARED() { return getToken(OpenGaussStatementParser.PREPARED, 0); }
		public TerminalNode STRING_() { return getToken(OpenGaussStatementParser.STRING_, 0); }
		public CommitPreparedContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_commitPrepared; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitCommitPrepared(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CommitPreparedContext commitPrepared() throws RecognitionException {
		CommitPreparedContext _localctx = new CommitPreparedContext(_ctx, getState());
		enterRule(_localctx, 24, RULE_commitPrepared);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1746);
			match(COMMIT);
			setState(1747);
			match(PREPARED);
			setState(1748);
			match(STRING_);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class RollbackPreparedContext extends ParserRuleContext {
		public TerminalNode ROLLBACK() { return getToken(OpenGaussStatementParser.ROLLBACK, 0); }
		public TerminalNode PREPARED() { return getToken(OpenGaussStatementParser.PREPARED, 0); }
		public TerminalNode STRING_() { return getToken(OpenGaussStatementParser.STRING_, 0); }
		public RollbackPreparedContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_rollbackPrepared; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitRollbackPrepared(this);
			else return visitor.visitChildren(this);
		}
	}

	public final RollbackPreparedContext rollbackPrepared() throws RecognitionException {
		RollbackPreparedContext _localctx = new RollbackPreparedContext(_ctx, getState());
		enterRule(_localctx, 26, RULE_rollbackPrepared);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1750);
			match(ROLLBACK);
			setState(1751);
			match(PREPARED);
			setState(1752);
			match(STRING_);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class SetConstraintsContext extends ParserRuleContext {
		public TerminalNode SET() { return getToken(OpenGaussStatementParser.SET, 0); }
		public TerminalNode CONSTRAINTS() { return getToken(OpenGaussStatementParser.CONSTRAINTS, 0); }
		public ConstraintsSetListContext constraintsSetList() {
			return getRuleContext(ConstraintsSetListContext.class,0);
		}
		public ConstraintsSetModeContext constraintsSetMode() {
			return getRuleContext(ConstraintsSetModeContext.class,0);
		}
		public SetConstraintsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_setConstraints; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitSetConstraints(this);
			else return visitor.visitChildren(this);
		}
	}

	public final SetConstraintsContext setConstraints() throws RecognitionException {
		SetConstraintsContext _localctx = new SetConstraintsContext(_ctx, getState());
		enterRule(_localctx, 28, RULE_setConstraints);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1754);
			match(SET);
			setState(1755);
			match(CONSTRAINTS);
			setState(1756);
			constraintsSetList();
			setState(1757);
			constraintsSetMode();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ConstraintsSetModeContext extends ParserRuleContext {
		public TerminalNode DEFERRED() { return getToken(OpenGaussStatementParser.DEFERRED, 0); }
		public TerminalNode IMMEDIATE() { return getToken(OpenGaussStatementParser.IMMEDIATE, 0); }
		public ConstraintsSetModeContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_constraintsSetMode; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitConstraintsSetMode(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ConstraintsSetModeContext constraintsSetMode() throws RecognitionException {
		ConstraintsSetModeContext _localctx = new ConstraintsSetModeContext(_ctx, getState());
		enterRule(_localctx, 30, RULE_constraintsSetMode);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1759);
			_la = _input.LA(1);
			if ( !(_la==DEFERRED || _la==IMMEDIATE) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ConstraintsSetListContext extends ParserRuleContext {
		public TerminalNode ALL() { return getToken(OpenGaussStatementParser.ALL, 0); }
		public QualifiedNameListContext qualifiedNameList() {
			return getRuleContext(QualifiedNameListContext.class,0);
		}
		public ConstraintsSetListContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_constraintsSetList; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitConstraintsSetList(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ConstraintsSetListContext constraintsSetList() throws RecognitionException {
		ConstraintsSetListContext _localctx = new ConstraintsSetListContext(_ctx, getState());
		enterRule(_localctx, 32, RULE_constraintsSetList);
		try {
			setState(1763);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case ALL:
				enterOuterAlt(_localctx, 1);
				{
				setState(1761);
				match(ALL);
				}
				break;
			case UNICODE_ESCAPE:
			case INSERT:
			case UPDATE:
			case DELETE:
			case ALTER:
			case DROP:
			case TRUNCATE:
			case SCHEMA:
			case REVOKE:
			case ADD:
			case SET:
			case INDEX:
			case KEY:
			case POSITION:
			case FUNCTION:
			case TRIGGER:
			case PROCEDURE:
			case VIEW:
			case IF:
			case BY:
			case BEGIN:
			case COMMIT:
			case ROLLBACK:
			case SAVEPOINT:
			case DOUBLE:
			case INTERVAL:
			case TIME:
			case TIMESTAMP:
			case YEAR:
			case MONTH:
			case DAY:
			case HOUR:
			case MINUTE:
			case SECOND:
			case CURRENT:
			case ENABLE:
			case DISABLE:
			case CALL:
			case PRESERVE:
			case DEFINER:
			case SQL:
			case CASCADED:
			case LOCAL:
			case CLOSE:
			case NEXT:
			case NAME:
			case NAMES:
			case TYPE:
			case TEXT:
			case REPEATABLE:
			case VARYING:
			case NATIONAL:
			case VALUE:
			case TIES:
			case CUBE:
			case SETS:
			case OTHERS:
			case AT:
			case MAXVALUE:
			case ADMIN:
			case ESCAPE:
			case EXCLUDE:
			case MOD:
			case PARTITION:
			case UNKNOWN:
			case ALWAYS:
			case CASCADE:
			case GENERATED:
			case ISOLATION:
			case LEVEL:
			case NO:
			case OPTION:
			case PRIVILEGES:
			case READ:
			case ROLE:
			case ROWS:
			case START:
			case TRANSACTION:
			case ACTION:
			case CACHE:
			case CHARACTERISTICS:
			case CLUSTER:
			case COMMENTS:
			case CONSTRAINTS:
			case CYCLE:
			case DATA:
			case DATABASE:
			case DEFAULTS:
			case DEFERRED:
			case DEPENDS:
			case DOMAIN:
			case EXCLUDING:
			case EXECUTE:
			case EXTENDED:
			case EXTENSION:
			case EXTERNAL:
			case FILTER:
			case FIRST:
			case FOLLOWING:
			case FORCE:
			case GLOBAL:
			case IDENTITY:
			case IMMEDIATE:
			case INCLUDING:
			case INCREMENT:
			case INDEXES:
			case INHERIT:
			case INHERITS:
			case INCLUDE:
			case LANGUAGE:
			case LARGE:
			case LAST:
			case LOGGED:
			case MAIN:
			case MATCH:
			case MINVALUE:
			case NOTHING:
			case NULLS:
			case OBJECT:
			case OIDS:
			case OVER:
			case OWNED:
			case OWNER:
			case PARTIAL:
			case PLAIN:
			case PRECEDING:
			case RANGE:
			case RENAME:
			case REPLICA:
			case RESET:
			case RESTART:
			case RESTRICT:
			case ROUTINE:
			case RULE:
			case SECURITY:
			case SEQUENCE:
			case SESSION:
			case SHOW:
			case SIMPLE:
			case STATISTICS:
			case STORAGE:
			case TABLESPACE:
			case TEMP:
			case TEMPORARY:
			case UNBOUNDED:
			case UNLOGGED:
			case VALID:
			case VALIDATE:
			case WITHIN:
			case WITHOUT:
			case ZONE:
			case OF:
			case UESCAPE:
			case GROUPS:
			case RECURSIVE:
			case INT2:
			case INT4:
			case FLOAT4:
			case BYTEA:
			case ENUM:
			case POINT:
			case LSEG:
			case BOX:
			case PATH:
			case POLYGON:
			case CIRCLE:
			case INET:
			case TSQUERY:
			case XML:
			case JSON:
			case INT4RANGE:
			case INT8RANGE:
			case NUMRANGE:
			case DATERANGE:
			case ORDINALITY:
			case NFC:
			case NFD:
			case NFKC:
			case NFKD:
			case REF:
			case PASSING:
			case VERSION:
			case YES:
			case STANDALONE:
			case MATERIALIZED:
			case OPERATOR:
			case SHARE:
			case ROLLUP:
			case DOCUMENT:
			case NORMALIZED:
			case NOWAIT:
			case LOCKED:
			case COLUMNS:
			case CONTENT:
			case STRIP:
			case WHITESPACE:
			case CONFLICT:
			case OVERRIDING:
			case SYSTEM:
			case ABORT:
			case ABSOLUTE:
			case ACCESS:
			case AFTER:
			case AGGREGATE:
			case ALSO:
			case ATTACH:
			case ATTRIBUTE:
			case BACKWARD:
			case BEFORE:
			case ASSERTION:
			case ASSIGNMENT:
			case CONTINUE:
			case CONVERSION:
			case COPY:
			case COST:
			case CSV:
			case CALLED:
			case CATALOG:
			case CHAIN:
			case CHECKPOINT:
			case CLASS:
			case CONFIGURATION:
			case COMMENT:
			case DETACH:
			case DICTIONARY:
			case EXPRESSION:
			case INSENSITIVE:
			case DISCARD:
			case OFF:
			case INSTEAD:
			case EXPLAIN:
			case INPUT:
			case INLINE:
			case PARALLEL:
			case LEAKPROOF:
			case COMMITTED:
			case ENCODING:
			case IMPLICIT:
			case DELIMITER:
			case CURSOR:
			case EACH:
			case EVENT:
			case DEALLOCATE:
			case CONNECTION:
			case DECLARE:
			case FAMILY:
			case FORWARD:
			case EXCLUSIVE:
			case FUNCTIONS:
			case LOCATION:
			case LABEL:
			case DELIMITERS:
			case HANDLER:
			case HEADER:
			case IMMUTABLE:
			case GRANTED:
			case HOLD:
			case MAPPING:
			case OLD:
			case METHOD:
			case LOAD:
			case LISTEN:
			case MODE:
			case MOVE:
			case PROCEDURAL:
			case PARSER:
			case PROCEDURES:
			case ENCRYPTED:
			case PUBLICATION:
			case PROGRAM:
			case REFERENCING:
			case PLANS:
			case REINDEX:
			case PRIOR:
			case PASSWORD:
			case RELATIVE:
			case QUOTE:
			case ROUTINES:
			case REPLACE:
			case SNAPSHOT:
			case REFRESH:
			case PREPARE:
			case OPTIONS:
			case IMPORT:
			case INVOKER:
			case NEW:
			case PREPARED:
			case SCROLL:
			case SEQUENCES:
			case SYSID:
			case REASSIGN:
			case SERVER:
			case SUBSCRIPTION:
			case SEARCH:
			case SCHEMAS:
			case RECHECK:
			case POLICY:
			case NOTIFY:
			case LOCK:
			case RELEASE:
			case SERIALIZABLE:
			case RETURNS:
			case STATEMENT:
			case STDIN:
			case STDOUT:
			case TABLES:
			case SUPPORT:
			case STABLE:
			case TEMPLATE:
			case UNENCRYPTED:
			case VIEWS:
			case UNCOMMITTED:
			case TRANSFORM:
			case UNLISTEN:
			case TRUSTED:
			case VALIDATOR:
			case UNTIL:
			case VACUUM:
			case VOLATILE:
			case STORED:
			case WRITE:
			case STRICT:
			case TYPES:
			case WRAPPER:
			case WORK:
			case INT16:
			case INT1:
			case ELEM_CONTAINED_BY_RANGE:
			case IDENTIFIER_:
				enterOuterAlt(_localctx, 2);
				{
				setState(1762);
				qualifiedNameList(0);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CheckpointContext extends ParserRuleContext {
		public TerminalNode CHECKPOINT() { return getToken(OpenGaussStatementParser.CHECKPOINT, 0); }
		public CheckpointContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_checkpoint; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitCheckpoint(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CheckpointContext checkpoint() throws RecognitionException {
		CheckpointContext _localctx = new CheckpointContext(_ctx, getState());
		enterRule(_localctx, 34, RULE_checkpoint);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1765);
			match(CHECKPOINT);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class LockContext extends ParserRuleContext {
		public TerminalNode LOCK() { return getToken(OpenGaussStatementParser.LOCK, 0); }
		public RelationExprListContext relationExprList() {
			return getRuleContext(RelationExprListContext.class,0);
		}
		public TerminalNode TABLE() { return getToken(OpenGaussStatementParser.TABLE, 0); }
		public TerminalNode IN() { return getToken(OpenGaussStatementParser.IN, 0); }
		public LockTypeContext lockType() {
			return getRuleContext(LockTypeContext.class,0);
		}
		public TerminalNode MODE() { return getToken(OpenGaussStatementParser.MODE, 0); }
		public TerminalNode NOWAIT() { return getToken(OpenGaussStatementParser.NOWAIT, 0); }
		public LockContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_lock; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitLock(this);
			else return visitor.visitChildren(this);
		}
	}

	public final LockContext lock() throws RecognitionException {
		LockContext _localctx = new LockContext(_ctx, getState());
		enterRule(_localctx, 36, RULE_lock);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1767);
			match(LOCK);
			setState(1769);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==TABLE) {
				{
				setState(1768);
				match(TABLE);
				}
			}

			setState(1771);
			relationExprList();
			setState(1776);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==IN) {
				{
				setState(1772);
				match(IN);
				setState(1773);
				lockType();
				setState(1774);
				match(MODE);
				}
			}

			setState(1779);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==NOWAIT) {
				{
				setState(1778);
				match(NOWAIT);
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class LockTypeContext extends ParserRuleContext {
		public TerminalNode ACCESS() { return getToken(OpenGaussStatementParser.ACCESS, 0); }
		public TerminalNode SHARE() { return getToken(OpenGaussStatementParser.SHARE, 0); }
		public TerminalNode ROW() { return getToken(OpenGaussStatementParser.ROW, 0); }
		public TerminalNode EXCLUSIVE() { return getToken(OpenGaussStatementParser.EXCLUSIVE, 0); }
		public TerminalNode UPDATE() { return getToken(OpenGaussStatementParser.UPDATE, 0); }
		public LockTypeContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_lockType; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitLockType(this);
			else return visitor.visitChildren(this);
		}
	}

	public final LockTypeContext lockType() throws RecognitionException {
		LockTypeContext _localctx = new LockTypeContext(_ctx, getState());
		enterRule(_localctx, 38, RULE_lockType);
		try {
			setState(1797);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,26,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(1781);
				match(ACCESS);
				setState(1782);
				match(SHARE);
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(1783);
				match(ROW);
				setState(1784);
				match(SHARE);
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(1785);
				match(ROW);
				setState(1786);
				match(EXCLUSIVE);
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(1787);
				match(SHARE);
				setState(1788);
				match(UPDATE);
				setState(1789);
				match(EXCLUSIVE);
				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(1790);
				match(SHARE);
				}
				break;
			case 6:
				enterOuterAlt(_localctx, 6);
				{
				setState(1791);
				match(SHARE);
				setState(1792);
				match(ROW);
				setState(1793);
				match(EXCLUSIVE);
				}
				break;
			case 7:
				enterOuterAlt(_localctx, 7);
				{
				setState(1794);
				match(EXCLUSIVE);
				}
				break;
			case 8:
				enterOuterAlt(_localctx, 8);
				{
				setState(1795);
				match(ACCESS);
				setState(1796);
				match(EXCLUSIVE);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class InsertContext extends ParserRuleContext {
		public TerminalNode INSERT() { return getToken(OpenGaussStatementParser.INSERT, 0); }
		public TerminalNode INTO() { return getToken(OpenGaussStatementParser.INTO, 0); }
		public InsertTargetContext insertTarget() {
			return getRuleContext(InsertTargetContext.class,0);
		}
		public InsertRestContext insertRest() {
			return getRuleContext(InsertRestContext.class,0);
		}
		public WithClauseContext withClause() {
			return getRuleContext(WithClauseContext.class,0);
		}
		public OptOnDuplicateKeyContext optOnDuplicateKey() {
			return getRuleContext(OptOnDuplicateKeyContext.class,0);
		}
		public ReturningClauseContext returningClause() {
			return getRuleContext(ReturningClauseContext.class,0);
		}
		public InsertContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_insert; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitInsert(this);
			else return visitor.visitChildren(this);
		}
	}

	public final InsertContext insert() throws RecognitionException {
		InsertContext _localctx = new InsertContext(_ctx, getState());
		enterRule(_localctx, 40, RULE_insert);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1800);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==WITH) {
				{
				setState(1799);
				withClause();
				}
			}

			setState(1802);
			match(INSERT);
			setState(1803);
			match(INTO);
			setState(1804);
			insertTarget();
			setState(1805);
			insertRest();
			setState(1807);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==ON) {
				{
				setState(1806);
				optOnDuplicateKey();
				}
			}

			setState(1810);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==RETURNING) {
				{
				setState(1809);
				returningClause();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class InsertTargetContext extends ParserRuleContext {
		public QualifiedNameContext qualifiedName() {
			return getRuleContext(QualifiedNameContext.class,0);
		}
		public TerminalNode AS() { return getToken(OpenGaussStatementParser.AS, 0); }
		public ColIdContext colId() {
			return getRuleContext(ColIdContext.class,0);
		}
		public InsertTargetContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_insertTarget; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitInsertTarget(this);
			else return visitor.visitChildren(this);
		}
	}

	public final InsertTargetContext insertTarget() throws RecognitionException {
		InsertTargetContext _localctx = new InsertTargetContext(_ctx, getState());
		enterRule(_localctx, 42, RULE_insertTarget);
		try {
			setState(1817);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,30,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(1812);
				qualifiedName();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(1813);
				qualifiedName();
				setState(1814);
				match(AS);
				setState(1815);
				colId();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class InsertRestContext extends ParserRuleContext {
		public SelectContext select() {
			return getRuleContext(SelectContext.class,0);
		}
		public TerminalNode OVERRIDING() { return getToken(OpenGaussStatementParser.OVERRIDING, 0); }
		public OverrideKindContext overrideKind() {
			return getRuleContext(OverrideKindContext.class,0);
		}
		public TerminalNode VALUE() { return getToken(OpenGaussStatementParser.VALUE, 0); }
		public TerminalNode LP_() { return getToken(OpenGaussStatementParser.LP_, 0); }
		public InsertColumnListContext insertColumnList() {
			return getRuleContext(InsertColumnListContext.class,0);
		}
		public TerminalNode RP_() { return getToken(OpenGaussStatementParser.RP_, 0); }
		public TerminalNode DEFAULT() { return getToken(OpenGaussStatementParser.DEFAULT, 0); }
		public TerminalNode VALUES() { return getToken(OpenGaussStatementParser.VALUES, 0); }
		public InsertRestContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_insertRest; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitInsertRest(this);
			else return visitor.visitChildren(this);
		}
	}

	public final InsertRestContext insertRest() throws RecognitionException {
		InsertRestContext _localctx = new InsertRestContext(_ctx, getState());
		enterRule(_localctx, 44, RULE_insertRest);
		try {
			setState(1840);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,31,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(1819);
				select();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(1820);
				match(OVERRIDING);
				setState(1821);
				overrideKind();
				setState(1822);
				match(VALUE);
				setState(1823);
				select();
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(1825);
				match(LP_);
				setState(1826);
				insertColumnList(0);
				setState(1827);
				match(RP_);
				setState(1828);
				select();
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(1830);
				match(LP_);
				setState(1831);
				insertColumnList(0);
				setState(1832);
				match(RP_);
				setState(1833);
				match(OVERRIDING);
				setState(1834);
				overrideKind();
				setState(1835);
				match(VALUE);
				setState(1836);
				select();
				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(1838);
				match(DEFAULT);
				setState(1839);
				match(VALUES);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class OverrideKindContext extends ParserRuleContext {
		public TerminalNode USER() { return getToken(OpenGaussStatementParser.USER, 0); }
		public TerminalNode SYSTEM() { return getToken(OpenGaussStatementParser.SYSTEM, 0); }
		public OverrideKindContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_overrideKind; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitOverrideKind(this);
			else return visitor.visitChildren(this);
		}
	}

	public final OverrideKindContext overrideKind() throws RecognitionException {
		OverrideKindContext _localctx = new OverrideKindContext(_ctx, getState());
		enterRule(_localctx, 46, RULE_overrideKind);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1842);
			_la = _input.LA(1);
			if ( !(_la==USER || _la==SYSTEM) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class InsertColumnListContext extends ParserRuleContext {
		public InsertColumnItemContext insertColumnItem() {
			return getRuleContext(InsertColumnItemContext.class,0);
		}
		public InsertColumnListContext insertColumnList() {
			return getRuleContext(InsertColumnListContext.class,0);
		}
		public TerminalNode COMMA_() { return getToken(OpenGaussStatementParser.COMMA_, 0); }
		public InsertColumnListContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_insertColumnList; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitInsertColumnList(this);
			else return visitor.visitChildren(this);
		}
	}

	public final InsertColumnListContext insertColumnList() throws RecognitionException {
		return insertColumnList(0);
	}

	private InsertColumnListContext insertColumnList(int _p) throws RecognitionException {
		ParserRuleContext _parentctx = _ctx;
		int _parentState = getState();
		InsertColumnListContext _localctx = new InsertColumnListContext(_ctx, _parentState);
		InsertColumnListContext _prevctx = _localctx;
		int _startState = 48;
		enterRecursionRule(_localctx, 48, RULE_insertColumnList, _p);
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			{
			setState(1845);
			insertColumnItem();
			}
			_ctx.stop = _input.LT(-1);
			setState(1852);
			_errHandler.sync(this);
			_alt = getInterpreter().adaptivePredict(_input,32,_ctx);
			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
				if ( _alt==1 ) {
					if ( _parseListeners!=null ) triggerExitRuleEvent();
					_prevctx = _localctx;
					{
					{
					_localctx = new InsertColumnListContext(_parentctx, _parentState);
					pushNewRecursionContext(_localctx, _startState, RULE_insertColumnList);
					setState(1847);
					if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)");
					setState(1848);
					match(COMMA_);
					setState(1849);
					insertColumnItem();
					}
					} 
				}
				setState(1854);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,32,_ctx);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			unrollRecursionContexts(_parentctx);
		}
		return _localctx;
	}

	public static class InsertColumnItemContext extends ParserRuleContext {
		public ColIdContext colId() {
			return getRuleContext(ColIdContext.class,0);
		}
		public OptIndirectionContext optIndirection() {
			return getRuleContext(OptIndirectionContext.class,0);
		}
		public InsertColumnItemContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_insertColumnItem; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitInsertColumnItem(this);
			else return visitor.visitChildren(this);
		}
	}

	public final InsertColumnItemContext insertColumnItem() throws RecognitionException {
		InsertColumnItemContext _localctx = new InsertColumnItemContext(_ctx, getState());
		enterRule(_localctx, 50, RULE_insertColumnItem);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1855);
			colId();
			setState(1856);
			optIndirection(0);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class OptOnDuplicateKeyContext extends ParserRuleContext {
		public TerminalNode ON() { return getToken(OpenGaussStatementParser.ON, 0); }
		public TerminalNode DUPLICATE() { return getToken(OpenGaussStatementParser.DUPLICATE, 0); }
		public TerminalNode KEY() { return getToken(OpenGaussStatementParser.KEY, 0); }
		public TerminalNode UPDATE() { return getToken(OpenGaussStatementParser.UPDATE, 0); }
		public List assignment() {
			return getRuleContexts(AssignmentContext.class);
		}
		public AssignmentContext assignment(int i) {
			return getRuleContext(AssignmentContext.class,i);
		}
		public List COMMA_() { return getTokens(OpenGaussStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(OpenGaussStatementParser.COMMA_, i);
		}
		public TerminalNode NOTHING() { return getToken(OpenGaussStatementParser.NOTHING, 0); }
		public OptOnDuplicateKeyContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_optOnDuplicateKey; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitOptOnDuplicateKey(this);
			else return visitor.visitChildren(this);
		}
	}

	public final OptOnDuplicateKeyContext optOnDuplicateKey() throws RecognitionException {
		OptOnDuplicateKeyContext _localctx = new OptOnDuplicateKeyContext(_ctx, getState());
		enterRule(_localctx, 52, RULE_optOnDuplicateKey);
		int _la;
		try {
			setState(1875);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,34,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(1858);
				match(ON);
				setState(1859);
				match(DUPLICATE);
				setState(1860);
				match(KEY);
				setState(1861);
				match(UPDATE);
				setState(1862);
				assignment();
				setState(1867);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA_) {
					{
					{
					setState(1863);
					match(COMMA_);
					setState(1864);
					assignment();
					}
					}
					setState(1869);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(1870);
				match(ON);
				setState(1871);
				match(DUPLICATE);
				setState(1872);
				match(KEY);
				setState(1873);
				match(UPDATE);
				setState(1874);
				match(NOTHING);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AssignmentContext extends ParserRuleContext {
		public SetTargetContext setTarget() {
			return getRuleContext(SetTargetContext.class,0);
		}
		public TerminalNode EQ_() { return getToken(OpenGaussStatementParser.EQ_, 0); }
		public AExprContext aExpr() {
			return getRuleContext(AExprContext.class,0);
		}
		public TerminalNode VALUES() { return getToken(OpenGaussStatementParser.VALUES, 0); }
		public TerminalNode LP_() { return getToken(OpenGaussStatementParser.LP_, 0); }
		public NameContext name() {
			return getRuleContext(NameContext.class,0);
		}
		public TerminalNode RP_() { return getToken(OpenGaussStatementParser.RP_, 0); }
		public AssignmentContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_assignment; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitAssignment(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AssignmentContext assignment() throws RecognitionException {
		AssignmentContext _localctx = new AssignmentContext(_ctx, getState());
		enterRule(_localctx, 54, RULE_assignment);
		try {
			setState(1888);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,35,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(1877);
				setTarget();
				setState(1878);
				match(EQ_);
				setState(1879);
				aExpr(0);
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(1881);
				setTarget();
				setState(1882);
				match(EQ_);
				setState(1883);
				match(VALUES);
				setState(1884);
				match(LP_);
				setState(1885);
				name();
				setState(1886);
				match(RP_);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class UpdateContext extends ParserRuleContext {
		public TerminalNode UPDATE() { return getToken(OpenGaussStatementParser.UPDATE, 0); }
		public RelationExprOptAliasContext relationExprOptAlias() {
			return getRuleContext(RelationExprOptAliasContext.class,0);
		}
		public TerminalNode SET() { return getToken(OpenGaussStatementParser.SET, 0); }
		public SetClauseListContext setClauseList() {
			return getRuleContext(SetClauseListContext.class,0);
		}
		public WithClauseContext withClause() {
			return getRuleContext(WithClauseContext.class,0);
		}
		public FromClauseContext fromClause() {
			return getRuleContext(FromClauseContext.class,0);
		}
		public WhereOrCurrentClauseContext whereOrCurrentClause() {
			return getRuleContext(WhereOrCurrentClauseContext.class,0);
		}
		public ReturningClauseContext returningClause() {
			return getRuleContext(ReturningClauseContext.class,0);
		}
		public UpdateContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_update; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitUpdate(this);
			else return visitor.visitChildren(this);
		}
	}

	public final UpdateContext update() throws RecognitionException {
		UpdateContext _localctx = new UpdateContext(_ctx, getState());
		enterRule(_localctx, 56, RULE_update);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1891);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==WITH) {
				{
				setState(1890);
				withClause();
				}
			}

			setState(1893);
			match(UPDATE);
			setState(1894);
			relationExprOptAlias();
			setState(1895);
			match(SET);
			setState(1896);
			setClauseList(0);
			setState(1898);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==FROM) {
				{
				setState(1897);
				fromClause();
				}
			}

			setState(1901);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==WHERE) {
				{
				setState(1900);
				whereOrCurrentClause();
				}
			}

			setState(1904);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==RETURNING) {
				{
				setState(1903);
				returningClause();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class SetClauseListContext extends ParserRuleContext {
		public SetClauseContext setClause() {
			return getRuleContext(SetClauseContext.class,0);
		}
		public SetClauseListContext setClauseList() {
			return getRuleContext(SetClauseListContext.class,0);
		}
		public TerminalNode COMMA_() { return getToken(OpenGaussStatementParser.COMMA_, 0); }
		public SetClauseListContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_setClauseList; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitSetClauseList(this);
			else return visitor.visitChildren(this);
		}
	}

	public final SetClauseListContext setClauseList() throws RecognitionException {
		return setClauseList(0);
	}

	private SetClauseListContext setClauseList(int _p) throws RecognitionException {
		ParserRuleContext _parentctx = _ctx;
		int _parentState = getState();
		SetClauseListContext _localctx = new SetClauseListContext(_ctx, _parentState);
		SetClauseListContext _prevctx = _localctx;
		int _startState = 58;
		enterRecursionRule(_localctx, 58, RULE_setClauseList, _p);
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			{
			setState(1907);
			setClause();
			}
			_ctx.stop = _input.LT(-1);
			setState(1914);
			_errHandler.sync(this);
			_alt = getInterpreter().adaptivePredict(_input,40,_ctx);
			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
				if ( _alt==1 ) {
					if ( _parseListeners!=null ) triggerExitRuleEvent();
					_prevctx = _localctx;
					{
					{
					_localctx = new SetClauseListContext(_parentctx, _parentState);
					pushNewRecursionContext(_localctx, _startState, RULE_setClauseList);
					setState(1909);
					if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)");
					setState(1910);
					match(COMMA_);
					setState(1911);
					setClause();
					}
					} 
				}
				setState(1916);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,40,_ctx);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			unrollRecursionContexts(_parentctx);
		}
		return _localctx;
	}

	public static class SetClauseContext extends ParserRuleContext {
		public SetTargetContext setTarget() {
			return getRuleContext(SetTargetContext.class,0);
		}
		public TerminalNode EQ_() { return getToken(OpenGaussStatementParser.EQ_, 0); }
		public AExprContext aExpr() {
			return getRuleContext(AExprContext.class,0);
		}
		public TerminalNode LP_() { return getToken(OpenGaussStatementParser.LP_, 0); }
		public SetTargetListContext setTargetList() {
			return getRuleContext(SetTargetListContext.class,0);
		}
		public TerminalNode RP_() { return getToken(OpenGaussStatementParser.RP_, 0); }
		public SetClauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_setClause; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitSetClause(this);
			else return visitor.visitChildren(this);
		}
	}

	public final SetClauseContext setClause() throws RecognitionException {
		SetClauseContext _localctx = new SetClauseContext(_ctx, getState());
		enterRule(_localctx, 60, RULE_setClause);
		try {
			setState(1927);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case UNICODE_ESCAPE:
			case INSERT:
			case UPDATE:
			case DELETE:
			case ALTER:
			case DROP:
			case TRUNCATE:
			case SCHEMA:
			case REVOKE:
			case ADD:
			case SET:
			case INDEX:
			case KEY:
			case POSITION:
			case FUNCTION:
			case TRIGGER:
			case PROCEDURE:
			case VIEW:
			case IF:
			case BY:
			case BEGIN:
			case COMMIT:
			case ROLLBACK:
			case SAVEPOINT:
			case DOUBLE:
			case INTERVAL:
			case TIME:
			case TIMESTAMP:
			case YEAR:
			case MONTH:
			case DAY:
			case HOUR:
			case MINUTE:
			case SECOND:
			case CURRENT:
			case ENABLE:
			case DISABLE:
			case CALL:
			case PRESERVE:
			case DEFINER:
			case SQL:
			case CASCADED:
			case LOCAL:
			case CLOSE:
			case NEXT:
			case NAME:
			case NAMES:
			case TYPE:
			case TEXT:
			case REPEATABLE:
			case VARYING:
			case NATIONAL:
			case VALUE:
			case TIES:
			case CUBE:
			case SETS:
			case OTHERS:
			case AT:
			case MAXVALUE:
			case ADMIN:
			case ESCAPE:
			case EXCLUDE:
			case MOD:
			case PARTITION:
			case UNKNOWN:
			case ALWAYS:
			case CASCADE:
			case GENERATED:
			case ISOLATION:
			case LEVEL:
			case NO:
			case OPTION:
			case PRIVILEGES:
			case READ:
			case ROLE:
			case ROWS:
			case START:
			case TRANSACTION:
			case ACTION:
			case CACHE:
			case CHARACTERISTICS:
			case CLUSTER:
			case COMMENTS:
			case CONSTRAINTS:
			case CYCLE:
			case DATA:
			case DATABASE:
			case DEFAULTS:
			case DEFERRED:
			case DEPENDS:
			case DOMAIN:
			case EXCLUDING:
			case EXECUTE:
			case EXTENDED:
			case EXTENSION:
			case EXTERNAL:
			case FILTER:
			case FIRST:
			case FOLLOWING:
			case FORCE:
			case GLOBAL:
			case IDENTITY:
			case IMMEDIATE:
			case INCLUDING:
			case INCREMENT:
			case INDEXES:
			case INHERIT:
			case INHERITS:
			case INCLUDE:
			case LANGUAGE:
			case LARGE:
			case LAST:
			case LOGGED:
			case MAIN:
			case MATCH:
			case MINVALUE:
			case NOTHING:
			case NULLS:
			case OBJECT:
			case OIDS:
			case OVER:
			case OWNED:
			case OWNER:
			case PARTIAL:
			case PLAIN:
			case PRECEDING:
			case RANGE:
			case RENAME:
			case REPLICA:
			case RESET:
			case RESTART:
			case RESTRICT:
			case ROUTINE:
			case RULE:
			case SECURITY:
			case SEQUENCE:
			case SESSION:
			case SHOW:
			case SIMPLE:
			case STATISTICS:
			case STORAGE:
			case TABLESPACE:
			case TEMP:
			case TEMPORARY:
			case UNBOUNDED:
			case UNLOGGED:
			case VALID:
			case VALIDATE:
			case WITHIN:
			case WITHOUT:
			case ZONE:
			case OF:
			case UESCAPE:
			case GROUPS:
			case RECURSIVE:
			case INT2:
			case INT4:
			case FLOAT4:
			case BYTEA:
			case ENUM:
			case POINT:
			case LSEG:
			case BOX:
			case PATH:
			case POLYGON:
			case CIRCLE:
			case INET:
			case TSQUERY:
			case XML:
			case JSON:
			case INT4RANGE:
			case INT8RANGE:
			case NUMRANGE:
			case DATERANGE:
			case ORDINALITY:
			case NFC:
			case NFD:
			case NFKC:
			case NFKD:
			case REF:
			case PASSING:
			case VERSION:
			case YES:
			case STANDALONE:
			case MATERIALIZED:
			case OPERATOR:
			case SHARE:
			case ROLLUP:
			case DOCUMENT:
			case NORMALIZED:
			case NOWAIT:
			case LOCKED:
			case COLUMNS:
			case CONTENT:
			case STRIP:
			case WHITESPACE:
			case CONFLICT:
			case OVERRIDING:
			case SYSTEM:
			case ABORT:
			case ABSOLUTE:
			case ACCESS:
			case AFTER:
			case AGGREGATE:
			case ALSO:
			case ATTACH:
			case ATTRIBUTE:
			case BACKWARD:
			case BEFORE:
			case ASSERTION:
			case ASSIGNMENT:
			case CONTINUE:
			case CONVERSION:
			case COPY:
			case COST:
			case CSV:
			case CALLED:
			case CATALOG:
			case CHAIN:
			case CHECKPOINT:
			case CLASS:
			case CONFIGURATION:
			case COMMENT:
			case DETACH:
			case DICTIONARY:
			case EXPRESSION:
			case INSENSITIVE:
			case DISCARD:
			case OFF:
			case INSTEAD:
			case EXPLAIN:
			case INPUT:
			case INLINE:
			case PARALLEL:
			case LEAKPROOF:
			case COMMITTED:
			case ENCODING:
			case IMPLICIT:
			case DELIMITER:
			case CURSOR:
			case EACH:
			case EVENT:
			case DEALLOCATE:
			case CONNECTION:
			case DECLARE:
			case FAMILY:
			case FORWARD:
			case EXCLUSIVE:
			case FUNCTIONS:
			case LOCATION:
			case LABEL:
			case DELIMITERS:
			case HANDLER:
			case HEADER:
			case IMMUTABLE:
			case GRANTED:
			case HOLD:
			case MAPPING:
			case OLD:
			case METHOD:
			case LOAD:
			case LISTEN:
			case MODE:
			case MOVE:
			case PROCEDURAL:
			case PARSER:
			case PROCEDURES:
			case ENCRYPTED:
			case PUBLICATION:
			case PROGRAM:
			case REFERENCING:
			case PLANS:
			case REINDEX:
			case PRIOR:
			case PASSWORD:
			case RELATIVE:
			case QUOTE:
			case ROUTINES:
			case REPLACE:
			case SNAPSHOT:
			case REFRESH:
			case PREPARE:
			case OPTIONS:
			case IMPORT:
			case INVOKER:
			case NEW:
			case PREPARED:
			case SCROLL:
			case SEQUENCES:
			case SYSID:
			case REASSIGN:
			case SERVER:
			case SUBSCRIPTION:
			case SEARCH:
			case SCHEMAS:
			case RECHECK:
			case POLICY:
			case NOTIFY:
			case LOCK:
			case RELEASE:
			case SERIALIZABLE:
			case RETURNS:
			case STATEMENT:
			case STDIN:
			case STDOUT:
			case TABLES:
			case SUPPORT:
			case STABLE:
			case TEMPLATE:
			case UNENCRYPTED:
			case VIEWS:
			case UNCOMMITTED:
			case TRANSFORM:
			case UNLISTEN:
			case TRUSTED:
			case VALIDATOR:
			case UNTIL:
			case VACUUM:
			case VOLATILE:
			case STORED:
			case WRITE:
			case STRICT:
			case TYPES:
			case WRAPPER:
			case WORK:
			case INT16:
			case INT1:
			case ELEM_CONTAINED_BY_RANGE:
			case IDENTIFIER_:
				enterOuterAlt(_localctx, 1);
				{
				setState(1917);
				setTarget();
				setState(1918);
				match(EQ_);
				setState(1919);
				aExpr(0);
				}
				break;
			case LP_:
				enterOuterAlt(_localctx, 2);
				{
				setState(1921);
				match(LP_);
				setState(1922);
				setTargetList(0);
				setState(1923);
				match(RP_);
				setState(1924);
				match(EQ_);
				setState(1925);
				aExpr(0);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class SetTargetContext extends ParserRuleContext {
		public List colId() {
			return getRuleContexts(ColIdContext.class);
		}
		public ColIdContext colId(int i) {
			return getRuleContext(ColIdContext.class,i);
		}
		public TerminalNode DOT_() { return getToken(OpenGaussStatementParser.DOT_, 0); }
		public SetTargetContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_setTarget; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitSetTarget(this);
			else return visitor.visitChildren(this);
		}
	}

	public final SetTargetContext setTarget() throws RecognitionException {
		SetTargetContext _localctx = new SetTargetContext(_ctx, getState());
		enterRule(_localctx, 62, RULE_setTarget);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1929);
			colId();
			setState(1932);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,42,_ctx) ) {
			case 1:
				{
				setState(1930);
				match(DOT_);
				setState(1931);
				colId();
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class SetTargetListContext extends ParserRuleContext {
		public SetTargetContext setTarget() {
			return getRuleContext(SetTargetContext.class,0);
		}
		public SetTargetListContext setTargetList() {
			return getRuleContext(SetTargetListContext.class,0);
		}
		public TerminalNode COMMA_() { return getToken(OpenGaussStatementParser.COMMA_, 0); }
		public SetTargetListContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_setTargetList; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitSetTargetList(this);
			else return visitor.visitChildren(this);
		}
	}

	public final SetTargetListContext setTargetList() throws RecognitionException {
		return setTargetList(0);
	}

	private SetTargetListContext setTargetList(int _p) throws RecognitionException {
		ParserRuleContext _parentctx = _ctx;
		int _parentState = getState();
		SetTargetListContext _localctx = new SetTargetListContext(_ctx, _parentState);
		SetTargetListContext _prevctx = _localctx;
		int _startState = 64;
		enterRecursionRule(_localctx, 64, RULE_setTargetList, _p);
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			{
			setState(1935);
			setTarget();
			}
			_ctx.stop = _input.LT(-1);
			setState(1942);
			_errHandler.sync(this);
			_alt = getInterpreter().adaptivePredict(_input,43,_ctx);
			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
				if ( _alt==1 ) {
					if ( _parseListeners!=null ) triggerExitRuleEvent();
					_prevctx = _localctx;
					{
					{
					_localctx = new SetTargetListContext(_parentctx, _parentState);
					pushNewRecursionContext(_localctx, _startState, RULE_setTargetList);
					setState(1937);
					if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)");
					setState(1938);
					match(COMMA_);
					setState(1939);
					setTarget();
					}
					} 
				}
				setState(1944);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,43,_ctx);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			unrollRecursionContexts(_parentctx);
		}
		return _localctx;
	}

	public static class ReturningClauseContext extends ParserRuleContext {
		public TerminalNode RETURNING() { return getToken(OpenGaussStatementParser.RETURNING, 0); }
		public TargetListContext targetList() {
			return getRuleContext(TargetListContext.class,0);
		}
		public ReturningClauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_returningClause; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitReturningClause(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ReturningClauseContext returningClause() throws RecognitionException {
		ReturningClauseContext _localctx = new ReturningClauseContext(_ctx, getState());
		enterRule(_localctx, 66, RULE_returningClause);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1945);
			match(RETURNING);
			setState(1946);
			targetList(0);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DeleteContext extends ParserRuleContext {
		public TerminalNode DELETE() { return getToken(OpenGaussStatementParser.DELETE, 0); }
		public TerminalNode FROM() { return getToken(OpenGaussStatementParser.FROM, 0); }
		public RelationExprOptAliasContext relationExprOptAlias() {
			return getRuleContext(RelationExprOptAliasContext.class,0);
		}
		public WithClauseContext withClause() {
			return getRuleContext(WithClauseContext.class,0);
		}
		public UsingClauseContext usingClause() {
			return getRuleContext(UsingClauseContext.class,0);
		}
		public WhereOrCurrentClauseContext whereOrCurrentClause() {
			return getRuleContext(WhereOrCurrentClauseContext.class,0);
		}
		public ReturningClauseContext returningClause() {
			return getRuleContext(ReturningClauseContext.class,0);
		}
		public DeleteContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_delete; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitDelete(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DeleteContext delete() throws RecognitionException {
		DeleteContext _localctx = new DeleteContext(_ctx, getState());
		enterRule(_localctx, 68, RULE_delete);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1949);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==WITH) {
				{
				setState(1948);
				withClause();
				}
			}

			setState(1951);
			match(DELETE);
			setState(1952);
			match(FROM);
			setState(1953);
			relationExprOptAlias();
			setState(1955);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==USING) {
				{
				setState(1954);
				usingClause();
				}
			}

			setState(1958);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==WHERE) {
				{
				setState(1957);
				whereOrCurrentClause();
				}
			}

			setState(1961);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==RETURNING) {
				{
				setState(1960);
				returningClause();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class RelationExprOptAliasContext extends ParserRuleContext {
		public RelationExprContext relationExpr() {
			return getRuleContext(RelationExprContext.class,0);
		}
		public ColIdContext colId() {
			return getRuleContext(ColIdContext.class,0);
		}
		public TerminalNode AS() { return getToken(OpenGaussStatementParser.AS, 0); }
		public RelationExprOptAliasContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_relationExprOptAlias; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitRelationExprOptAlias(this);
			else return visitor.visitChildren(this);
		}
	}

	public final RelationExprOptAliasContext relationExprOptAlias() throws RecognitionException {
		RelationExprOptAliasContext _localctx = new RelationExprOptAliasContext(_ctx, getState());
		enterRule(_localctx, 70, RULE_relationExprOptAlias);
		try {
			setState(1971);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,48,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(1963);
				relationExpr();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(1964);
				relationExpr();
				setState(1965);
				colId();
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(1967);
				relationExpr();
				setState(1968);
				match(AS);
				setState(1969);
				colId();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class UsingClauseContext extends ParserRuleContext {
		public TerminalNode USING() { return getToken(OpenGaussStatementParser.USING, 0); }
		public FromListContext fromList() {
			return getRuleContext(FromListContext.class,0);
		}
		public UsingClauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_usingClause; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitUsingClause(this);
			else return visitor.visitChildren(this);
		}
	}

	public final UsingClauseContext usingClause() throws RecognitionException {
		UsingClauseContext _localctx = new UsingClauseContext(_ctx, getState());
		enterRule(_localctx, 72, RULE_usingClause);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1973);
			match(USING);
			setState(1974);
			fromList(0);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class SelectContext extends ParserRuleContext {
		public SelectNoParensContext selectNoParens() {
			return getRuleContext(SelectNoParensContext.class,0);
		}
		public SelectWithParensContext selectWithParens() {
			return getRuleContext(SelectWithParensContext.class,0);
		}
		public SelectContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_select; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitSelect(this);
			else return visitor.visitChildren(this);
		}
	}

	public final SelectContext select() throws RecognitionException {
		SelectContext _localctx = new SelectContext(_ctx, getState());
		enterRule(_localctx, 74, RULE_select);
		try {
			setState(1978);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,49,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(1976);
				selectNoParens();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(1977);
				selectWithParens();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class SelectWithParensContext extends ParserRuleContext {
		public TerminalNode LP_() { return getToken(OpenGaussStatementParser.LP_, 0); }
		public SelectNoParensContext selectNoParens() {
			return getRuleContext(SelectNoParensContext.class,0);
		}
		public TerminalNode RP_() { return getToken(OpenGaussStatementParser.RP_, 0); }
		public SelectWithParensContext selectWithParens() {
			return getRuleContext(SelectWithParensContext.class,0);
		}
		public SelectWithParensContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_selectWithParens; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitSelectWithParens(this);
			else return visitor.visitChildren(this);
		}
	}

	public final SelectWithParensContext selectWithParens() throws RecognitionException {
		SelectWithParensContext _localctx = new SelectWithParensContext(_ctx, getState());
		enterRule(_localctx, 76, RULE_selectWithParens);
		try {
			setState(1988);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,50,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(1980);
				match(LP_);
				setState(1981);
				selectNoParens();
				setState(1982);
				match(RP_);
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(1984);
				match(LP_);
				setState(1985);
				selectWithParens();
				setState(1986);
				match(RP_);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class SelectNoParensContext extends ParserRuleContext {
		public SelectClauseNContext selectClauseN() {
			return getRuleContext(SelectClauseNContext.class,0);
		}
		public SortClauseContext sortClause() {
			return getRuleContext(SortClauseContext.class,0);
		}
		public ForLockingClauseContext forLockingClause() {
			return getRuleContext(ForLockingClauseContext.class,0);
		}
		public SelectLimitContext selectLimit() {
			return getRuleContext(SelectLimitContext.class,0);
		}
		public WithClauseContext withClause() {
			return getRuleContext(WithClauseContext.class,0);
		}
		public SelectNoParensContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_selectNoParens; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitSelectNoParens(this);
			else return visitor.visitChildren(this);
		}
	}

	public final SelectNoParensContext selectNoParens() throws RecognitionException {
		SelectNoParensContext _localctx = new SelectNoParensContext(_ctx, getState());
		enterRule(_localctx, 78, RULE_selectNoParens);
		int _la;
		try {
			setState(2029);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,59,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(1990);
				selectClauseN(0);
				setState(1992);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==ORDER) {
					{
					setState(1991);
					sortClause();
					}
				}

				setState(2002);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case FOR:
					{
					setState(1994);
					forLockingClause();
					setState(1996);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==LIMIT || _la==OFFSET || _la==FETCH) {
						{
						setState(1995);
						selectLimit();
						}
					}

					}
					break;
				case LIMIT:
				case OFFSET:
				case FETCH:
					{
					setState(1998);
					selectLimit();
					setState(2000);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==FOR) {
						{
						setState(1999);
						forLockingClause();
						}
					}

					}
					break;
				case EOF:
				case RP_:
				case SEMI_:
				case CREATE:
				case GRANT:
				case WITH:
				case ON:
				case EXECUTE:
				case RETURNING:
					break;
				default:
					break;
				}
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(2004);
				withClause();
				setState(2005);
				selectClauseN(0);
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(2007);
				withClause();
				setState(2008);
				selectClauseN(0);
				setState(2009);
				sortClause();
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(2011);
				withClause();
				setState(2012);
				selectClauseN(0);
				setState(2014);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==ORDER) {
					{
					setState(2013);
					sortClause();
					}
				}

				setState(2016);
				forLockingClause();
				setState(2018);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==LIMIT || _la==OFFSET || _la==FETCH) {
					{
					setState(2017);
					selectLimit();
					}
				}

				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(2020);
				withClause();
				setState(2021);
				selectClauseN(0);
				setState(2023);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==ORDER) {
					{
					setState(2022);
					sortClause();
					}
				}

				setState(2025);
				selectLimit();
				setState(2027);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==FOR) {
					{
					setState(2026);
					forLockingClause();
					}
				}

				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class SelectClauseNContext extends ParserRuleContext {
		public SimpleSelectContext simpleSelect() {
			return getRuleContext(SimpleSelectContext.class,0);
		}
		public SelectWithParensContext selectWithParens() {
			return getRuleContext(SelectWithParensContext.class,0);
		}
		public List selectClauseN() {
			return getRuleContexts(SelectClauseNContext.class);
		}
		public SelectClauseNContext selectClauseN(int i) {
			return getRuleContext(SelectClauseNContext.class,i);
		}
		public TerminalNode INTERSECT() { return getToken(OpenGaussStatementParser.INTERSECT, 0); }
		public AllOrDistinctContext allOrDistinct() {
			return getRuleContext(AllOrDistinctContext.class,0);
		}
		public TerminalNode UNION() { return getToken(OpenGaussStatementParser.UNION, 0); }
		public TerminalNode EXCEPT() { return getToken(OpenGaussStatementParser.EXCEPT, 0); }
		public TerminalNode MINUS() { return getToken(OpenGaussStatementParser.MINUS, 0); }
		public SelectClauseNContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_selectClauseN; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitSelectClauseN(this);
			else return visitor.visitChildren(this);
		}
	}

	public final SelectClauseNContext selectClauseN() throws RecognitionException {
		return selectClauseN(0);
	}

	private SelectClauseNContext selectClauseN(int _p) throws RecognitionException {
		ParserRuleContext _parentctx = _ctx;
		int _parentState = getState();
		SelectClauseNContext _localctx = new SelectClauseNContext(_ctx, _parentState);
		SelectClauseNContext _prevctx = _localctx;
		int _startState = 80;
		enterRecursionRule(_localctx, 80, RULE_selectClauseN, _p);
		int _la;
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			setState(2034);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case SELECT:
			case TABLE:
			case VALUES:
				{
				setState(2032);
				simpleSelect();
				}
				break;
			case LP_:
				{
				setState(2033);
				selectWithParens();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			_ctx.stop = _input.LT(-1);
			setState(2050);
			_errHandler.sync(this);
			_alt = getInterpreter().adaptivePredict(_input,64,_ctx);
			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
				if ( _alt==1 ) {
					if ( _parseListeners!=null ) triggerExitRuleEvent();
					_prevctx = _localctx;
					{
					setState(2048);
					_errHandler.sync(this);
					switch ( getInterpreter().adaptivePredict(_input,63,_ctx) ) {
					case 1:
						{
						_localctx = new SelectClauseNContext(_parentctx, _parentState);
						pushNewRecursionContext(_localctx, _startState, RULE_selectClauseN);
						setState(2036);
						if (!(precpred(_ctx, 2))) throw new FailedPredicateException(this, "precpred(_ctx, 2)");
						setState(2037);
						match(INTERSECT);
						setState(2039);
						_errHandler.sync(this);
						_la = _input.LA(1);
						if (_la==DISTINCT || _la==ALL) {
							{
							setState(2038);
							allOrDistinct();
							}
						}

						setState(2041);
						selectClauseN(3);
						}
						break;
					case 2:
						{
						_localctx = new SelectClauseNContext(_parentctx, _parentState);
						pushNewRecursionContext(_localctx, _startState, RULE_selectClauseN);
						setState(2042);
						if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)");
						setState(2043);
						_la = _input.LA(1);
						if ( !(_la==UNION || _la==EXCEPT || _la==MINUS) ) {
						_errHandler.recoverInline(this);
						}
						else {
							if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
							_errHandler.reportMatch(this);
							consume();
						}
						setState(2045);
						_errHandler.sync(this);
						_la = _input.LA(1);
						if (_la==DISTINCT || _la==ALL) {
							{
							setState(2044);
							allOrDistinct();
							}
						}

						setState(2047);
						selectClauseN(2);
						}
						break;
					}
					} 
				}
				setState(2052);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,64,_ctx);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			unrollRecursionContexts(_parentctx);
		}
		return _localctx;
	}

	public static class SimpleSelectContext extends ParserRuleContext {
		public TerminalNode SELECT() { return getToken(OpenGaussStatementParser.SELECT, 0); }
		public TerminalNode ALL() { return getToken(OpenGaussStatementParser.ALL, 0); }
		public TargetListContext targetList() {
			return getRuleContext(TargetListContext.class,0);
		}
		public IntoClauseContext intoClause() {
			return getRuleContext(IntoClauseContext.class,0);
		}
		public FromClauseContext fromClause() {
			return getRuleContext(FromClauseContext.class,0);
		}
		public WhereClauseContext whereClause() {
			return getRuleContext(WhereClauseContext.class,0);
		}
		public GroupClauseContext groupClause() {
			return getRuleContext(GroupClauseContext.class,0);
		}
		public HavingClauseContext havingClause() {
			return getRuleContext(HavingClauseContext.class,0);
		}
		public WindowClauseContext windowClause() {
			return getRuleContext(WindowClauseContext.class,0);
		}
		public DistinctClauseContext distinctClause() {
			return getRuleContext(DistinctClauseContext.class,0);
		}
		public ValuesClauseContext valuesClause() {
			return getRuleContext(ValuesClauseContext.class,0);
		}
		public TerminalNode TABLE() { return getToken(OpenGaussStatementParser.TABLE, 0); }
		public RelationExprContext relationExpr() {
			return getRuleContext(RelationExprContext.class,0);
		}
		public SimpleSelectContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_simpleSelect; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitSimpleSelect(this);
			else return visitor.visitChildren(this);
		}
	}

	public final SimpleSelectContext simpleSelect() throws RecognitionException {
		SimpleSelectContext _localctx = new SimpleSelectContext(_ctx, getState());
		enterRule(_localctx, 82, RULE_simpleSelect);
		try {
			setState(2102);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,79,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(2053);
				match(SELECT);
				setState(2055);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,65,_ctx) ) {
				case 1:
					{
					setState(2054);
					match(ALL);
					}
					break;
				}
				setState(2058);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,66,_ctx) ) {
				case 1:
					{
					setState(2057);
					targetList(0);
					}
					break;
				}
				setState(2061);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,67,_ctx) ) {
				case 1:
					{
					setState(2060);
					intoClause();
					}
					break;
				}
				setState(2064);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,68,_ctx) ) {
				case 1:
					{
					setState(2063);
					fromClause();
					}
					break;
				}
				setState(2067);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,69,_ctx) ) {
				case 1:
					{
					setState(2066);
					whereClause();
					}
					break;
				}
				setState(2070);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,70,_ctx) ) {
				case 1:
					{
					setState(2069);
					groupClause();
					}
					break;
				}
				setState(2073);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,71,_ctx) ) {
				case 1:
					{
					setState(2072);
					havingClause();
					}
					break;
				}
				setState(2076);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,72,_ctx) ) {
				case 1:
					{
					setState(2075);
					windowClause();
					}
					break;
				}
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(2078);
				match(SELECT);
				setState(2079);
				distinctClause();
				setState(2080);
				targetList(0);
				setState(2082);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,73,_ctx) ) {
				case 1:
					{
					setState(2081);
					intoClause();
					}
					break;
				}
				setState(2085);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,74,_ctx) ) {
				case 1:
					{
					setState(2084);
					fromClause();
					}
					break;
				}
				setState(2088);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,75,_ctx) ) {
				case 1:
					{
					setState(2087);
					whereClause();
					}
					break;
				}
				setState(2091);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,76,_ctx) ) {
				case 1:
					{
					setState(2090);
					groupClause();
					}
					break;
				}
				setState(2094);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,77,_ctx) ) {
				case 1:
					{
					setState(2093);
					havingClause();
					}
					break;
				}
				setState(2097);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,78,_ctx) ) {
				case 1:
					{
					setState(2096);
					windowClause();
					}
					break;
				}
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(2099);
				valuesClause(0);
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(2100);
				match(TABLE);
				setState(2101);
				relationExpr();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class WithClauseContext extends ParserRuleContext {
		public TerminalNode WITH() { return getToken(OpenGaussStatementParser.WITH, 0); }
		public CteListContext cteList() {
			return getRuleContext(CteListContext.class,0);
		}
		public TerminalNode RECURSIVE() { return getToken(OpenGaussStatementParser.RECURSIVE, 0); }
		public WithClauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_withClause; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitWithClause(this);
			else return visitor.visitChildren(this);
		}
	}

	public final WithClauseContext withClause() throws RecognitionException {
		WithClauseContext _localctx = new WithClauseContext(_ctx, getState());
		enterRule(_localctx, 84, RULE_withClause);
		try {
			setState(2109);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,80,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(2104);
				match(WITH);
				setState(2105);
				cteList();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(2106);
				match(WITH);
				setState(2107);
				match(RECURSIVE);
				setState(2108);
				cteList();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class IntoClauseContext extends ParserRuleContext {
		public TerminalNode INTO() { return getToken(OpenGaussStatementParser.INTO, 0); }
		public OptTempTableNameContext optTempTableName() {
			return getRuleContext(OptTempTableNameContext.class,0);
		}
		public IntoClauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_intoClause; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitIntoClause(this);
			else return visitor.visitChildren(this);
		}
	}

	public final IntoClauseContext intoClause() throws RecognitionException {
		IntoClauseContext _localctx = new IntoClauseContext(_ctx, getState());
		enterRule(_localctx, 86, RULE_intoClause);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2111);
			match(INTO);
			setState(2112);
			optTempTableName();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class OptTempTableNameContext extends ParserRuleContext {
		public TerminalNode TEMPORARY() { return getToken(OpenGaussStatementParser.TEMPORARY, 0); }
		public QualifiedNameContext qualifiedName() {
			return getRuleContext(QualifiedNameContext.class,0);
		}
		public TerminalNode TABLE() { return getToken(OpenGaussStatementParser.TABLE, 0); }
		public TerminalNode TEMP() { return getToken(OpenGaussStatementParser.TEMP, 0); }
		public TerminalNode LOCAL() { return getToken(OpenGaussStatementParser.LOCAL, 0); }
		public TerminalNode GLOBAL() { return getToken(OpenGaussStatementParser.GLOBAL, 0); }
		public TerminalNode UNLOGGED() { return getToken(OpenGaussStatementParser.UNLOGGED, 0); }
		public OptTempTableNameContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_optTempTableName; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitOptTempTableName(this);
			else return visitor.visitChildren(this);
		}
	}

	public final OptTempTableNameContext optTempTableName() throws RecognitionException {
		OptTempTableNameContext _localctx = new OptTempTableNameContext(_ctx, getState());
		enterRule(_localctx, 88, RULE_optTempTableName);
		int _la;
		try {
			setState(2158);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,89,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(2114);
				match(TEMPORARY);
				setState(2116);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==TABLE) {
					{
					setState(2115);
					match(TABLE);
					}
				}

				setState(2118);
				qualifiedName();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(2119);
				match(TEMP);
				setState(2121);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==TABLE) {
					{
					setState(2120);
					match(TABLE);
					}
				}

				setState(2123);
				qualifiedName();
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(2124);
				match(LOCAL);
				setState(2125);
				match(TEMPORARY);
				setState(2127);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==TABLE) {
					{
					setState(2126);
					match(TABLE);
					}
				}

				setState(2129);
				qualifiedName();
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(2130);
				match(LOCAL);
				setState(2131);
				match(TEMP);
				setState(2133);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==TABLE) {
					{
					setState(2132);
					match(TABLE);
					}
				}

				setState(2135);
				qualifiedName();
				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(2136);
				match(GLOBAL);
				setState(2137);
				match(TEMPORARY);
				setState(2139);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==TABLE) {
					{
					setState(2138);
					match(TABLE);
					}
				}

				setState(2141);
				qualifiedName();
				}
				break;
			case 6:
				enterOuterAlt(_localctx, 6);
				{
				setState(2142);
				match(GLOBAL);
				setState(2143);
				match(TEMP);
				setState(2145);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==TABLE) {
					{
					setState(2144);
					match(TABLE);
					}
				}

				setState(2147);
				qualifiedName();
				}
				break;
			case 7:
				enterOuterAlt(_localctx, 7);
				{
				setState(2148);
				match(UNLOGGED);
				setState(2150);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==TABLE) {
					{
					setState(2149);
					match(TABLE);
					}
				}

				setState(2152);
				qualifiedName();
				}
				break;
			case 8:
				enterOuterAlt(_localctx, 8);
				{
				setState(2154);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==TABLE) {
					{
					setState(2153);
					match(TABLE);
					}
				}

				setState(2156);
				qualifiedName();
				}
				break;
			case 9:
				enterOuterAlt(_localctx, 9);
				{
				setState(2157);
				qualifiedName();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CteListContext extends ParserRuleContext {
		public List commonTableExpr() {
			return getRuleContexts(CommonTableExprContext.class);
		}
		public CommonTableExprContext commonTableExpr(int i) {
			return getRuleContext(CommonTableExprContext.class,i);
		}
		public List COMMA_() { return getTokens(OpenGaussStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(OpenGaussStatementParser.COMMA_, i);
		}
		public CteListContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_cteList; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitCteList(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CteListContext cteList() throws RecognitionException {
		CteListContext _localctx = new CteListContext(_ctx, getState());
		enterRule(_localctx, 90, RULE_cteList);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2160);
			commonTableExpr();
			setState(2165);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA_) {
				{
				{
				setState(2161);
				match(COMMA_);
				setState(2162);
				commonTableExpr();
				}
				}
				setState(2167);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CommonTableExprContext extends ParserRuleContext {
		public AliasContext alias() {
			return getRuleContext(AliasContext.class,0);
		}
		public OptNameListContext optNameList() {
			return getRuleContext(OptNameListContext.class,0);
		}
		public TerminalNode AS() { return getToken(OpenGaussStatementParser.AS, 0); }
		public OptMaterializedContext optMaterialized() {
			return getRuleContext(OptMaterializedContext.class,0);
		}
		public TerminalNode LP_() { return getToken(OpenGaussStatementParser.LP_, 0); }
		public PreparableStmtContext preparableStmt() {
			return getRuleContext(PreparableStmtContext.class,0);
		}
		public TerminalNode RP_() { return getToken(OpenGaussStatementParser.RP_, 0); }
		public CommonTableExprContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_commonTableExpr; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitCommonTableExpr(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CommonTableExprContext commonTableExpr() throws RecognitionException {
		CommonTableExprContext _localctx = new CommonTableExprContext(_ctx, getState());
		enterRule(_localctx, 92, RULE_commonTableExpr);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2168);
			alias();
			setState(2169);
			optNameList();
			setState(2170);
			match(AS);
			setState(2171);
			optMaterialized();
			setState(2172);
			match(LP_);
			setState(2173);
			preparableStmt();
			setState(2174);
			match(RP_);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class OptMaterializedContext extends ParserRuleContext {
		public TerminalNode MATERIALIZED() { return getToken(OpenGaussStatementParser.MATERIALIZED, 0); }
		public TerminalNode NOT() { return getToken(OpenGaussStatementParser.NOT, 0); }
		public OptMaterializedContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_optMaterialized; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitOptMaterialized(this);
			else return visitor.visitChildren(this);
		}
	}

	public final OptMaterializedContext optMaterialized() throws RecognitionException {
		OptMaterializedContext _localctx = new OptMaterializedContext(_ctx, getState());
		enterRule(_localctx, 94, RULE_optMaterialized);
		try {
			setState(2180);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case MATERIALIZED:
				enterOuterAlt(_localctx, 1);
				{
				setState(2176);
				match(MATERIALIZED);
				}
				break;
			case NOT:
				enterOuterAlt(_localctx, 2);
				{
				setState(2177);
				match(NOT);
				setState(2178);
				match(MATERIALIZED);
				}
				break;
			case LP_:
				enterOuterAlt(_localctx, 3);
				{
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class OptNameListContext extends ParserRuleContext {
		public TerminalNode LP_() { return getToken(OpenGaussStatementParser.LP_, 0); }
		public NameListContext nameList() {
			return getRuleContext(NameListContext.class,0);
		}
		public TerminalNode RP_() { return getToken(OpenGaussStatementParser.RP_, 0); }
		public OptNameListContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_optNameList; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitOptNameList(this);
			else return visitor.visitChildren(this);
		}
	}

	public final OptNameListContext optNameList() throws RecognitionException {
		OptNameListContext _localctx = new OptNameListContext(_ctx, getState());
		enterRule(_localctx, 96, RULE_optNameList);
		try {
			setState(2187);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case LP_:
				enterOuterAlt(_localctx, 1);
				{
				setState(2182);
				match(LP_);
				setState(2183);
				nameList(0);
				setState(2184);
				match(RP_);
				}
				break;
			case EOF:
			case COMMA_:
			case SEMI_:
			case AS:
			case ON:
				enterOuterAlt(_localctx, 2);
				{
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class PreparableStmtContext extends ParserRuleContext {
		public SelectContext select() {
			return getRuleContext(SelectContext.class,0);
		}
		public InsertContext insert() {
			return getRuleContext(InsertContext.class,0);
		}
		public UpdateContext update() {
			return getRuleContext(UpdateContext.class,0);
		}
		public DeleteContext delete() {
			return getRuleContext(DeleteContext.class,0);
		}
		public PreparableStmtContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_preparableStmt; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitPreparableStmt(this);
			else return visitor.visitChildren(this);
		}
	}

	public final PreparableStmtContext preparableStmt() throws RecognitionException {
		PreparableStmtContext _localctx = new PreparableStmtContext(_ctx, getState());
		enterRule(_localctx, 98, RULE_preparableStmt);
		try {
			setState(2193);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,93,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(2189);
				select();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(2190);
				insert();
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(2191);
				update();
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(2192);
				delete();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ForLockingClauseContext extends ParserRuleContext {
		public ForLockingItemsContext forLockingItems() {
			return getRuleContext(ForLockingItemsContext.class,0);
		}
		public TerminalNode FOR() { return getToken(OpenGaussStatementParser.FOR, 0); }
		public TerminalNode READ() { return getToken(OpenGaussStatementParser.READ, 0); }
		public TerminalNode ONLY() { return getToken(OpenGaussStatementParser.ONLY, 0); }
		public ForLockingClauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_forLockingClause; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitForLockingClause(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ForLockingClauseContext forLockingClause() throws RecognitionException {
		ForLockingClauseContext _localctx = new ForLockingClauseContext(_ctx, getState());
		enterRule(_localctx, 100, RULE_forLockingClause);
		try {
			setState(2199);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,94,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(2195);
				forLockingItems(0);
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(2196);
				match(FOR);
				setState(2197);
				match(READ);
				setState(2198);
				match(ONLY);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ForLockingItemsContext extends ParserRuleContext {
		public ForLockingItemContext forLockingItem() {
			return getRuleContext(ForLockingItemContext.class,0);
		}
		public ForLockingItemsContext forLockingItems() {
			return getRuleContext(ForLockingItemsContext.class,0);
		}
		public ForLockingItemsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_forLockingItems; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitForLockingItems(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ForLockingItemsContext forLockingItems() throws RecognitionException {
		return forLockingItems(0);
	}

	private ForLockingItemsContext forLockingItems(int _p) throws RecognitionException {
		ParserRuleContext _parentctx = _ctx;
		int _parentState = getState();
		ForLockingItemsContext _localctx = new ForLockingItemsContext(_ctx, _parentState);
		ForLockingItemsContext _prevctx = _localctx;
		int _startState = 102;
		enterRecursionRule(_localctx, 102, RULE_forLockingItems, _p);
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			{
			setState(2202);
			forLockingItem();
			}
			_ctx.stop = _input.LT(-1);
			setState(2208);
			_errHandler.sync(this);
			_alt = getInterpreter().adaptivePredict(_input,95,_ctx);
			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
				if ( _alt==1 ) {
					if ( _parseListeners!=null ) triggerExitRuleEvent();
					_prevctx = _localctx;
					{
					{
					_localctx = new ForLockingItemsContext(_parentctx, _parentState);
					pushNewRecursionContext(_localctx, _startState, RULE_forLockingItems);
					setState(2204);
					if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)");
					setState(2205);
					forLockingItem();
					}
					} 
				}
				setState(2210);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,95,_ctx);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			unrollRecursionContexts(_parentctx);
		}
		return _localctx;
	}

	public static class ForLockingItemContext extends ParserRuleContext {
		public ForLockingStrengthContext forLockingStrength() {
			return getRuleContext(ForLockingStrengthContext.class,0);
		}
		public LockedRelsListContext lockedRelsList() {
			return getRuleContext(LockedRelsListContext.class,0);
		}
		public NowaitOrSkipContext nowaitOrSkip() {
			return getRuleContext(NowaitOrSkipContext.class,0);
		}
		public ForLockingItemContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_forLockingItem; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitForLockingItem(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ForLockingItemContext forLockingItem() throws RecognitionException {
		ForLockingItemContext _localctx = new ForLockingItemContext(_ctx, getState());
		enterRule(_localctx, 104, RULE_forLockingItem);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2211);
			forLockingStrength();
			setState(2213);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,96,_ctx) ) {
			case 1:
				{
				setState(2212);
				lockedRelsList();
				}
				break;
			}
			setState(2216);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,97,_ctx) ) {
			case 1:
				{
				setState(2215);
				nowaitOrSkip();
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class NowaitOrSkipContext extends ParserRuleContext {
		public TerminalNode NOWAIT() { return getToken(OpenGaussStatementParser.NOWAIT, 0); }
		public TerminalNode LOCKED() { return getToken(OpenGaussStatementParser.LOCKED, 0); }
		public NowaitOrSkipContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_nowaitOrSkip; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitNowaitOrSkip(this);
			else return visitor.visitChildren(this);
		}
	}

	public final NowaitOrSkipContext nowaitOrSkip() throws RecognitionException {
		NowaitOrSkipContext _localctx = new NowaitOrSkipContext(_ctx, getState());
		enterRule(_localctx, 106, RULE_nowaitOrSkip);
		try {
			setState(2221);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case NOWAIT:
				enterOuterAlt(_localctx, 1);
				{
				setState(2218);
				match(NOWAIT);
				}
				break;
			case T__0:
				enterOuterAlt(_localctx, 2);
				{
				setState(2219);
				match(T__0);
				setState(2220);
				match(LOCKED);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ForLockingStrengthContext extends ParserRuleContext {
		public TerminalNode FOR() { return getToken(OpenGaussStatementParser.FOR, 0); }
		public TerminalNode UPDATE() { return getToken(OpenGaussStatementParser.UPDATE, 0); }
		public TerminalNode NO() { return getToken(OpenGaussStatementParser.NO, 0); }
		public TerminalNode KEY() { return getToken(OpenGaussStatementParser.KEY, 0); }
		public TerminalNode SHARE() { return getToken(OpenGaussStatementParser.SHARE, 0); }
		public ForLockingStrengthContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_forLockingStrength; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitForLockingStrength(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ForLockingStrengthContext forLockingStrength() throws RecognitionException {
		ForLockingStrengthContext _localctx = new ForLockingStrengthContext(_ctx, getState());
		enterRule(_localctx, 108, RULE_forLockingStrength);
		try {
			setState(2234);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,99,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(2223);
				match(FOR);
				setState(2224);
				match(UPDATE);
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(2225);
				match(FOR);
				setState(2226);
				match(NO);
				setState(2227);
				match(KEY);
				setState(2228);
				match(UPDATE);
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(2229);
				match(FOR);
				setState(2230);
				match(SHARE);
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(2231);
				match(FOR);
				setState(2232);
				match(KEY);
				setState(2233);
				match(SHARE);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class LockedRelsListContext extends ParserRuleContext {
		public TerminalNode OF() { return getToken(OpenGaussStatementParser.OF, 0); }
		public QualifiedNameListContext qualifiedNameList() {
			return getRuleContext(QualifiedNameListContext.class,0);
		}
		public LockedRelsListContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_lockedRelsList; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitLockedRelsList(this);
			else return visitor.visitChildren(this);
		}
	}

	public final LockedRelsListContext lockedRelsList() throws RecognitionException {
		LockedRelsListContext _localctx = new LockedRelsListContext(_ctx, getState());
		enterRule(_localctx, 110, RULE_lockedRelsList);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2236);
			match(OF);
			setState(2237);
			qualifiedNameList(0);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class QualifiedNameListContext extends ParserRuleContext {
		public QualifiedNameContext qualifiedName() {
			return getRuleContext(QualifiedNameContext.class,0);
		}
		public QualifiedNameListContext qualifiedNameList() {
			return getRuleContext(QualifiedNameListContext.class,0);
		}
		public TerminalNode COMMA_() { return getToken(OpenGaussStatementParser.COMMA_, 0); }
		public QualifiedNameListContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_qualifiedNameList; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitQualifiedNameList(this);
			else return visitor.visitChildren(this);
		}
	}

	public final QualifiedNameListContext qualifiedNameList() throws RecognitionException {
		return qualifiedNameList(0);
	}

	private QualifiedNameListContext qualifiedNameList(int _p) throws RecognitionException {
		ParserRuleContext _parentctx = _ctx;
		int _parentState = getState();
		QualifiedNameListContext _localctx = new QualifiedNameListContext(_ctx, _parentState);
		QualifiedNameListContext _prevctx = _localctx;
		int _startState = 112;
		enterRecursionRule(_localctx, 112, RULE_qualifiedNameList, _p);
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			{
			setState(2240);
			qualifiedName();
			}
			_ctx.stop = _input.LT(-1);
			setState(2247);
			_errHandler.sync(this);
			_alt = getInterpreter().adaptivePredict(_input,100,_ctx);
			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
				if ( _alt==1 ) {
					if ( _parseListeners!=null ) triggerExitRuleEvent();
					_prevctx = _localctx;
					{
					{
					_localctx = new QualifiedNameListContext(_parentctx, _parentState);
					pushNewRecursionContext(_localctx, _startState, RULE_qualifiedNameList);
					setState(2242);
					if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)");
					setState(2243);
					match(COMMA_);
					setState(2244);
					qualifiedName();
					}
					} 
				}
				setState(2249);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,100,_ctx);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			unrollRecursionContexts(_parentctx);
		}
		return _localctx;
	}

	public static class SelectLimitContext extends ParserRuleContext {
		public LimitClauseContext limitClause() {
			return getRuleContext(LimitClauseContext.class,0);
		}
		public OffsetClauseContext offsetClause() {
			return getRuleContext(OffsetClauseContext.class,0);
		}
		public SelectLimitContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_selectLimit; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitSelectLimit(this);
			else return visitor.visitChildren(this);
		}
	}

	public final SelectLimitContext selectLimit() throws RecognitionException {
		SelectLimitContext _localctx = new SelectLimitContext(_ctx, getState());
		enterRule(_localctx, 114, RULE_selectLimit);
		int _la;
		try {
			setState(2258);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case LIMIT:
			case FETCH:
				enterOuterAlt(_localctx, 1);
				{
				setState(2250);
				limitClause();
				setState(2252);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==OFFSET) {
					{
					setState(2251);
					offsetClause();
					}
				}

				}
				break;
			case OFFSET:
				enterOuterAlt(_localctx, 2);
				{
				setState(2254);
				offsetClause();
				setState(2256);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==LIMIT || _la==FETCH) {
					{
					setState(2255);
					limitClause();
					}
				}

				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ValuesClauseContext extends ParserRuleContext {
		public TerminalNode VALUES() { return getToken(OpenGaussStatementParser.VALUES, 0); }
		public TerminalNode LP_() { return getToken(OpenGaussStatementParser.LP_, 0); }
		public ExprListContext exprList() {
			return getRuleContext(ExprListContext.class,0);
		}
		public TerminalNode RP_() { return getToken(OpenGaussStatementParser.RP_, 0); }
		public ValuesClauseContext valuesClause() {
			return getRuleContext(ValuesClauseContext.class,0);
		}
		public TerminalNode COMMA_() { return getToken(OpenGaussStatementParser.COMMA_, 0); }
		public ValuesClauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_valuesClause; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitValuesClause(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ValuesClauseContext valuesClause() throws RecognitionException {
		return valuesClause(0);
	}

	private ValuesClauseContext valuesClause(int _p) throws RecognitionException {
		ParserRuleContext _parentctx = _ctx;
		int _parentState = getState();
		ValuesClauseContext _localctx = new ValuesClauseContext(_ctx, _parentState);
		ValuesClauseContext _prevctx = _localctx;
		int _startState = 116;
		enterRecursionRule(_localctx, 116, RULE_valuesClause, _p);
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			{
			setState(2261);
			match(VALUES);
			setState(2262);
			match(LP_);
			setState(2263);
			exprList(0);
			setState(2264);
			match(RP_);
			}
			_ctx.stop = _input.LT(-1);
			setState(2274);
			_errHandler.sync(this);
			_alt = getInterpreter().adaptivePredict(_input,104,_ctx);
			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
				if ( _alt==1 ) {
					if ( _parseListeners!=null ) triggerExitRuleEvent();
					_prevctx = _localctx;
					{
					{
					_localctx = new ValuesClauseContext(_parentctx, _parentState);
					pushNewRecursionContext(_localctx, _startState, RULE_valuesClause);
					setState(2266);
					if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)");
					setState(2267);
					match(COMMA_);
					setState(2268);
					match(LP_);
					setState(2269);
					exprList(0);
					setState(2270);
					match(RP_);
					}
					} 
				}
				setState(2276);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,104,_ctx);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			unrollRecursionContexts(_parentctx);
		}
		return _localctx;
	}

	public static class LimitClauseContext extends ParserRuleContext {
		public TerminalNode LIMIT() { return getToken(OpenGaussStatementParser.LIMIT, 0); }
		public SelectLimitValueContext selectLimitValue() {
			return getRuleContext(SelectLimitValueContext.class,0);
		}
		public SelectOffsetValueContext selectOffsetValue() {
			return getRuleContext(SelectOffsetValueContext.class,0);
		}
		public TerminalNode COMMA_() { return getToken(OpenGaussStatementParser.COMMA_, 0); }
		public TerminalNode FETCH() { return getToken(OpenGaussStatementParser.FETCH, 0); }
		public FirstOrNextContext firstOrNext() {
			return getRuleContext(FirstOrNextContext.class,0);
		}
		public RowOrRowsContext rowOrRows() {
			return getRuleContext(RowOrRowsContext.class,0);
		}
		public OnlyOrWithTiesContext onlyOrWithTies() {
			return getRuleContext(OnlyOrWithTiesContext.class,0);
		}
		public SelectFetchValueContext selectFetchValue() {
			return getRuleContext(SelectFetchValueContext.class,0);
		}
		public LimitClauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_limitClause; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitLimitClause(this);
			else return visitor.visitChildren(this);
		}
	}

	public final LimitClauseContext limitClause() throws RecognitionException {
		LimitClauseContext _localctx = new LimitClauseContext(_ctx, getState());
		enterRule(_localctx, 118, RULE_limitClause);
		try {
			setState(2292);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,106,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(2277);
				match(LIMIT);
				setState(2278);
				selectLimitValue();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(2279);
				match(LIMIT);
				setState(2280);
				selectOffsetValue();
				setState(2281);
				match(COMMA_);
				setState(2282);
				selectLimitValue();
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(2284);
				match(FETCH);
				setState(2285);
				firstOrNext();
				setState(2287);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,105,_ctx) ) {
				case 1:
					{
					setState(2286);
					selectFetchValue();
					}
					break;
				}
				setState(2289);
				rowOrRows();
				setState(2290);
				onlyOrWithTies();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class OffsetClauseContext extends ParserRuleContext {
		public TerminalNode OFFSET() { return getToken(OpenGaussStatementParser.OFFSET, 0); }
		public SelectOffsetValueContext selectOffsetValue() {
			return getRuleContext(SelectOffsetValueContext.class,0);
		}
		public RowOrRowsContext rowOrRows() {
			return getRuleContext(RowOrRowsContext.class,0);
		}
		public OffsetClauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_offsetClause; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitOffsetClause(this);
			else return visitor.visitChildren(this);
		}
	}

	public final OffsetClauseContext offsetClause() throws RecognitionException {
		OffsetClauseContext _localctx = new OffsetClauseContext(_ctx, getState());
		enterRule(_localctx, 120, RULE_offsetClause);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2294);
			match(OFFSET);
			setState(2295);
			selectOffsetValue();
			setState(2297);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==ROW || _la==ROWS) {
				{
				setState(2296);
				rowOrRows();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class SelectLimitValueContext extends ParserRuleContext {
		public CExprContext cExpr() {
			return getRuleContext(CExprContext.class,0);
		}
		public TerminalNode ALL() { return getToken(OpenGaussStatementParser.ALL, 0); }
		public SelectLimitValueContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_selectLimitValue; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitSelectLimitValue(this);
			else return visitor.visitChildren(this);
		}
	}

	public final SelectLimitValueContext selectLimitValue() throws RecognitionException {
		SelectLimitValueContext _localctx = new SelectLimitValueContext(_ctx, getState());
		enterRule(_localctx, 122, RULE_selectLimitValue);
		try {
			setState(2301);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case PLUS_:
			case MINUS_:
			case LP_:
			case QUESTION_:
			case DOLLAR_:
			case UNICODE_ESCAPE:
			case INSERT:
			case UPDATE:
			case DELETE:
			case ALTER:
			case DROP:
			case TRUNCATE:
			case SCHEMA:
			case REVOKE:
			case ADD:
			case SET:
			case INDEX:
			case KEY:
			case POSITION:
			case FUNCTION:
			case TRIGGER:
			case PROCEDURE:
			case VIEW:
			case CASE:
			case CAST:
			case TRIM:
			case SUBSTRING:
			case NATURAL:
			case JOIN:
			case FULL:
			case INNER:
			case OUTER:
			case LEFT:
			case RIGHT:
			case CROSS:
			case IF:
			case IS:
			case NULL:
			case TRUE:
			case FALSE:
			case EXISTS:
			case LIKE:
			case BY:
			case BEGIN:
			case COMMIT:
			case ROLLBACK:
			case SAVEPOINT:
			case BOOLEAN:
			case DOUBLE:
			case CHAR:
			case CHARACTER:
			case ARRAY:
			case INTERVAL:
			case DATE:
			case TIME:
			case TIMESTAMP:
			case LOCALTIME:
			case LOCALTIMESTAMP:
			case YEAR:
			case MONTH:
			case DAY:
			case HOUR:
			case MINUTE:
			case SECOND:
			case CURRENT:
			case ENABLE:
			case DISABLE:
			case CALL:
			case PRESERVE:
			case DEFINER:
			case CURRENT_USER:
			case SQL:
			case CASCADED:
			case LOCAL:
			case CLOSE:
			case NEXT:
			case NAME:
			case COLLATION:
			case NAMES:
			case INTEGER:
			case REAL:
			case DECIMAL:
			case TYPE:
			case SMALLINT:
			case BIGINT:
			case NUMERIC:
			case TEXT:
			case REPEATABLE:
			case CURRENT_DATE:
			case CURRENT_TIME:
			case CURRENT_TIMESTAMP:
			case NULLIF:
			case VARYING:
			case NATIONAL:
			case NCHAR:
			case VALUE:
			case COALESCE:
			case TIES:
			case CUBE:
			case GROUPING:
			case SETS:
			case OTHERS:
			case OVERLAPS:
			case AT:
			case DEC:
			case MAXVALUE:
			case ADMIN:
			case BINARY:
			case ESCAPE:
			case EXCLUDE:
			case MOD:
			case PARTITION:
			case ROW:
			case UNKNOWN:
			case ALWAYS:
			case CASCADE:
			case GENERATED:
			case ISOLATION:
			case LEVEL:
			case NO:
			case OPTION:
			case PRIVILEGES:
			case READ:
			case ROLE:
			case ROWS:
			case START:
			case TRANSACTION:
			case USER:
			case ACTION:
			case CACHE:
			case CHARACTERISTICS:
			case CLUSTER:
			case COMMENTS:
			case CONCURRENTLY:
			case CONSTRAINTS:
			case CYCLE:
			case DATA:
			case DATABASE:
			case DEFAULTS:
			case DEFERRED:
			case DEPENDS:
			case DOMAIN:
			case EXCLUDING:
			case EXECUTE:
			case EXTENDED:
			case EXTENSION:
			case EXTERNAL:
			case EXTRACT:
			case FILTER:
			case FIRST:
			case FOLLOWING:
			case FORCE:
			case GLOBAL:
			case IDENTITY:
			case IMMEDIATE:
			case INCLUDING:
			case INCREMENT:
			case INDEXES:
			case INHERIT:
			case INHERITS:
			case INCLUDE:
			case LANGUAGE:
			case LARGE:
			case LAST:
			case LOGGED:
			case MAIN:
			case MATCH:
			case MINVALUE:
			case NOTHING:
			case NULLS:
			case OBJECT:
			case OIDS:
			case OVER:
			case OWNED:
			case OWNER:
			case PARTIAL:
			case PLAIN:
			case PRECEDING:
			case RANGE:
			case RENAME:
			case REPLICA:
			case RESET:
			case RESTART:
			case RESTRICT:
			case ROUTINE:
			case RULE:
			case SECURITY:
			case SEQUENCE:
			case SESSION:
			case SESSION_USER:
			case SHOW:
			case SIMPLE:
			case STATISTICS:
			case STORAGE:
			case TABLESPACE:
			case TEMP:
			case TEMPORARY:
			case UNBOUNDED:
			case UNLOGGED:
			case VALID:
			case VALIDATE:
			case WITHIN:
			case WITHOUT:
			case ZONE:
			case OF:
			case UESCAPE:
			case GROUPS:
			case RECURSIVE:
			case INT:
			case INT2:
			case INT4:
			case INT8:
			case FLOAT:
			case FLOAT4:
			case FLOAT8:
			case VARCHAR:
			case BYTEA:
			case ENUM:
			case POINT:
			case LSEG:
			case BOX:
			case PATH:
			case POLYGON:
			case CIRCLE:
			case INET:
			case BIT:
			case TSQUERY:
			case XML:
			case JSON:
			case INT4RANGE:
			case INT8RANGE:
			case NUMRANGE:
			case DATERANGE:
			case TABLESAMPLE:
			case ORDINALITY:
			case CURRENT_ROLE:
			case CURRENT_CATALOG:
			case CURRENT_SCHEMA:
			case NORMALIZE:
			case OVERLAY:
			case XMLCONCAT:
			case XMLELEMENT:
			case XMLEXISTS:
			case XMLFOREST:
			case XMLPARSE:
			case XMLPI:
			case XMLROOT:
			case XMLSERIALIZE:
			case TREAT:
			case NFC:
			case NFD:
			case NFKC:
			case NFKD:
			case REF:
			case PASSING:
			case VERSION:
			case YES:
			case STANDALONE:
			case GREATEST:
			case LEAST:
			case MATERIALIZED:
			case OPERATOR:
			case SHARE:
			case ROLLUP:
			case ILIKE:
			case SIMILAR:
			case ISNULL:
			case NOTNULL:
			case DOCUMENT:
			case NORMALIZED:
			case NOWAIT:
			case LOCKED:
			case COLUMNS:
			case CONTENT:
			case STRIP:
			case WHITESPACE:
			case CONFLICT:
			case OVERRIDING:
			case SYSTEM:
			case ABORT:
			case ABSOLUTE:
			case ACCESS:
			case AFTER:
			case AGGREGATE:
			case ALSO:
			case ATTACH:
			case ATTRIBUTE:
			case BACKWARD:
			case BEFORE:
			case ASSERTION:
			case ASSIGNMENT:
			case CONTINUE:
			case CONVERSION:
			case COPY:
			case COST:
			case CSV:
			case CALLED:
			case CATALOG:
			case CHAIN:
			case CHECKPOINT:
			case CLASS:
			case CONFIGURATION:
			case COMMENT:
			case DETACH:
			case DICTIONARY:
			case EXPRESSION:
			case INSENSITIVE:
			case DISCARD:
			case OFF:
			case INSTEAD:
			case EXPLAIN:
			case INPUT:
			case INLINE:
			case PARALLEL:
			case LEAKPROOF:
			case COMMITTED:
			case ENCODING:
			case IMPLICIT:
			case DELIMITER:
			case CURSOR:
			case EACH:
			case EVENT:
			case DEALLOCATE:
			case CONNECTION:
			case DECLARE:
			case FAMILY:
			case FORWARD:
			case EXCLUSIVE:
			case FUNCTIONS:
			case LOCATION:
			case LABEL:
			case DELIMITERS:
			case HANDLER:
			case HEADER:
			case IMMUTABLE:
			case GRANTED:
			case HOLD:
			case MAPPING:
			case OLD:
			case METHOD:
			case LOAD:
			case LISTEN:
			case MODE:
			case MOVE:
			case PROCEDURAL:
			case PARSER:
			case PROCEDURES:
			case ENCRYPTED:
			case PUBLICATION:
			case PROGRAM:
			case REFERENCING:
			case PLANS:
			case REINDEX:
			case PRIOR:
			case PASSWORD:
			case RELATIVE:
			case QUOTE:
			case ROUTINES:
			case REPLACE:
			case SNAPSHOT:
			case REFRESH:
			case PREPARE:
			case OPTIONS:
			case IMPORT:
			case INVOKER:
			case NEW:
			case PREPARED:
			case SCROLL:
			case SEQUENCES:
			case SYSID:
			case REASSIGN:
			case SERVER:
			case SUBSCRIPTION:
			case SEARCH:
			case SCHEMAS:
			case RECHECK:
			case POLICY:
			case NOTIFY:
			case LOCK:
			case RELEASE:
			case SERIALIZABLE:
			case RETURNS:
			case STATEMENT:
			case STDIN:
			case STDOUT:
			case TABLES:
			case SUPPORT:
			case STABLE:
			case TEMPLATE:
			case UNENCRYPTED:
			case VIEWS:
			case UNCOMMITTED:
			case TRANSFORM:
			case UNLISTEN:
			case TRUSTED:
			case VALIDATOR:
			case UNTIL:
			case VACUUM:
			case VOLATILE:
			case STORED:
			case WRITE:
			case STRICT:
			case TYPES:
			case WRAPPER:
			case WORK:
			case FREEZE:
			case AUTHORIZATION:
			case VERBOSE:
			case PARAM:
			case PREDICT:
			case TS_REWRITE:
			case INT16:
			case INT1:
			case ELEM_CONTAINED_BY_RANGE:
			case LOWER_INF:
			case UPPER_INF:
			case ABBREV:
			case SET_MASKLEN:
			case TRUNC:
			case IDENTIFIER_:
			case STRING_:
			case NUMBER_:
				enterOuterAlt(_localctx, 1);
				{
				setState(2299);
				cExpr();
				}
				break;
			case ALL:
				enterOuterAlt(_localctx, 2);
				{
				setState(2300);
				match(ALL);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class SelectOffsetValueContext extends ParserRuleContext {
		public CExprContext cExpr() {
			return getRuleContext(CExprContext.class,0);
		}
		public SelectOffsetValueContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_selectOffsetValue; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitSelectOffsetValue(this);
			else return visitor.visitChildren(this);
		}
	}

	public final SelectOffsetValueContext selectOffsetValue() throws RecognitionException {
		SelectOffsetValueContext _localctx = new SelectOffsetValueContext(_ctx, getState());
		enterRule(_localctx, 124, RULE_selectOffsetValue);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2303);
			cExpr();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class SelectFetchValueContext extends ParserRuleContext {
		public CExprContext cExpr() {
			return getRuleContext(CExprContext.class,0);
		}
		public SelectFetchValueContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_selectFetchValue; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitSelectFetchValue(this);
			else return visitor.visitChildren(this);
		}
	}

	public final SelectFetchValueContext selectFetchValue() throws RecognitionException {
		SelectFetchValueContext _localctx = new SelectFetchValueContext(_ctx, getState());
		enterRule(_localctx, 126, RULE_selectFetchValue);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2305);
			cExpr();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class RowOrRowsContext extends ParserRuleContext {
		public TerminalNode ROW() { return getToken(OpenGaussStatementParser.ROW, 0); }
		public TerminalNode ROWS() { return getToken(OpenGaussStatementParser.ROWS, 0); }
		public RowOrRowsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_rowOrRows; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitRowOrRows(this);
			else return visitor.visitChildren(this);
		}
	}

	public final RowOrRowsContext rowOrRows() throws RecognitionException {
		RowOrRowsContext _localctx = new RowOrRowsContext(_ctx, getState());
		enterRule(_localctx, 128, RULE_rowOrRows);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2307);
			_la = _input.LA(1);
			if ( !(_la==ROW || _la==ROWS) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class FirstOrNextContext extends ParserRuleContext {
		public TerminalNode FIRST() { return getToken(OpenGaussStatementParser.FIRST, 0); }
		public TerminalNode NEXT() { return getToken(OpenGaussStatementParser.NEXT, 0); }
		public FirstOrNextContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_firstOrNext; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitFirstOrNext(this);
			else return visitor.visitChildren(this);
		}
	}

	public final FirstOrNextContext firstOrNext() throws RecognitionException {
		FirstOrNextContext _localctx = new FirstOrNextContext(_ctx, getState());
		enterRule(_localctx, 130, RULE_firstOrNext);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2309);
			_la = _input.LA(1);
			if ( !(_la==NEXT || _la==FIRST) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class OnlyOrWithTiesContext extends ParserRuleContext {
		public TerminalNode ONLY() { return getToken(OpenGaussStatementParser.ONLY, 0); }
		public TerminalNode WITH() { return getToken(OpenGaussStatementParser.WITH, 0); }
		public TerminalNode TIES() { return getToken(OpenGaussStatementParser.TIES, 0); }
		public OnlyOrWithTiesContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_onlyOrWithTies; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitOnlyOrWithTies(this);
			else return visitor.visitChildren(this);
		}
	}

	public final OnlyOrWithTiesContext onlyOrWithTies() throws RecognitionException {
		OnlyOrWithTiesContext _localctx = new OnlyOrWithTiesContext(_ctx, getState());
		enterRule(_localctx, 132, RULE_onlyOrWithTies);
		try {
			setState(2314);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case ONLY:
				enterOuterAlt(_localctx, 1);
				{
				setState(2311);
				match(ONLY);
				}
				break;
			case WITH:
				enterOuterAlt(_localctx, 2);
				{
				setState(2312);
				match(WITH);
				setState(2313);
				match(TIES);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class TargetListContext extends ParserRuleContext {
		public TargetElContext targetEl() {
			return getRuleContext(TargetElContext.class,0);
		}
		public TargetListContext targetList() {
			return getRuleContext(TargetListContext.class,0);
		}
		public TerminalNode COMMA_() { return getToken(OpenGaussStatementParser.COMMA_, 0); }
		public TargetListContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_targetList; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitTargetList(this);
			else return visitor.visitChildren(this);
		}
	}

	public final TargetListContext targetList() throws RecognitionException {
		return targetList(0);
	}

	private TargetListContext targetList(int _p) throws RecognitionException {
		ParserRuleContext _parentctx = _ctx;
		int _parentState = getState();
		TargetListContext _localctx = new TargetListContext(_ctx, _parentState);
		TargetListContext _prevctx = _localctx;
		int _startState = 134;
		enterRecursionRule(_localctx, 134, RULE_targetList, _p);
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			{
			setState(2317);
			targetEl();
			}
			_ctx.stop = _input.LT(-1);
			setState(2324);
			_errHandler.sync(this);
			_alt = getInterpreter().adaptivePredict(_input,110,_ctx);
			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
				if ( _alt==1 ) {
					if ( _parseListeners!=null ) triggerExitRuleEvent();
					_prevctx = _localctx;
					{
					{
					_localctx = new TargetListContext(_parentctx, _parentState);
					pushNewRecursionContext(_localctx, _startState, RULE_targetList);
					setState(2319);
					if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)");
					setState(2320);
					match(COMMA_);
					setState(2321);
					targetEl();
					}
					} 
				}
				setState(2326);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,110,_ctx);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			unrollRecursionContexts(_parentctx);
		}
		return _localctx;
	}

	public static class TargetElContext extends ParserRuleContext {
		public ColIdContext colId() {
			return getRuleContext(ColIdContext.class,0);
		}
		public TerminalNode DOT_ASTERISK_() { return getToken(OpenGaussStatementParser.DOT_ASTERISK_, 0); }
		public AExprContext aExpr() {
			return getRuleContext(AExprContext.class,0);
		}
		public TerminalNode AS() { return getToken(OpenGaussStatementParser.AS, 0); }
		public IdentifierContext identifier() {
			return getRuleContext(IdentifierContext.class,0);
		}
		public TerminalNode ASTERISK_() { return getToken(OpenGaussStatementParser.ASTERISK_, 0); }
		public TargetElContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_targetEl; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitTargetEl(this);
			else return visitor.visitChildren(this);
		}
	}

	public final TargetElContext targetEl() throws RecognitionException {
		TargetElContext _localctx = new TargetElContext(_ctx, getState());
		enterRule(_localctx, 136, RULE_targetEl);
		try {
			setState(2338);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,113,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(2327);
				colId();
				setState(2328);
				match(DOT_ASTERISK_);
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(2330);
				aExpr(0);
				setState(2332);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,111,_ctx) ) {
				case 1:
					{
					setState(2331);
					match(AS);
					}
					break;
				}
				setState(2335);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,112,_ctx) ) {
				case 1:
					{
					setState(2334);
					identifier();
					}
					break;
				}
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(2337);
				match(ASTERISK_);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class GroupClauseContext extends ParserRuleContext {
		public TerminalNode GROUP() { return getToken(OpenGaussStatementParser.GROUP, 0); }
		public TerminalNode BY() { return getToken(OpenGaussStatementParser.BY, 0); }
		public GroupByListContext groupByList() {
			return getRuleContext(GroupByListContext.class,0);
		}
		public GroupClauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_groupClause; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitGroupClause(this);
			else return visitor.visitChildren(this);
		}
	}

	public final GroupClauseContext groupClause() throws RecognitionException {
		GroupClauseContext _localctx = new GroupClauseContext(_ctx, getState());
		enterRule(_localctx, 138, RULE_groupClause);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2340);
			match(GROUP);
			setState(2341);
			match(BY);
			setState(2342);
			groupByList();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class GroupByListContext extends ParserRuleContext {
		public List groupByItem() {
			return getRuleContexts(GroupByItemContext.class);
		}
		public GroupByItemContext groupByItem(int i) {
			return getRuleContext(GroupByItemContext.class,i);
		}
		public List COMMA_() { return getTokens(OpenGaussStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(OpenGaussStatementParser.COMMA_, i);
		}
		public GroupByListContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_groupByList; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitGroupByList(this);
			else return visitor.visitChildren(this);
		}
	}

	public final GroupByListContext groupByList() throws RecognitionException {
		GroupByListContext _localctx = new GroupByListContext(_ctx, getState());
		enterRule(_localctx, 140, RULE_groupByList);
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			setState(2344);
			groupByItem();
			setState(2349);
			_errHandler.sync(this);
			_alt = getInterpreter().adaptivePredict(_input,114,_ctx);
			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
				if ( _alt==1 ) {
					{
					{
					setState(2345);
					match(COMMA_);
					setState(2346);
					groupByItem();
					}
					} 
				}
				setState(2351);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,114,_ctx);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class GroupByItemContext extends ParserRuleContext {
		public AExprContext aExpr() {
			return getRuleContext(AExprContext.class,0);
		}
		public EmptyGroupingSetContext emptyGroupingSet() {
			return getRuleContext(EmptyGroupingSetContext.class,0);
		}
		public CubeClauseContext cubeClause() {
			return getRuleContext(CubeClauseContext.class,0);
		}
		public RollupClauseContext rollupClause() {
			return getRuleContext(RollupClauseContext.class,0);
		}
		public GroupingSetsClauseContext groupingSetsClause() {
			return getRuleContext(GroupingSetsClauseContext.class,0);
		}
		public GroupByItemContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_groupByItem; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitGroupByItem(this);
			else return visitor.visitChildren(this);
		}
	}

	public final GroupByItemContext groupByItem() throws RecognitionException {
		GroupByItemContext _localctx = new GroupByItemContext(_ctx, getState());
		enterRule(_localctx, 142, RULE_groupByItem);
		try {
			setState(2357);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,115,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(2352);
				aExpr(0);
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(2353);
				emptyGroupingSet();
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(2354);
				cubeClause();
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(2355);
				rollupClause();
				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(2356);
				groupingSetsClause();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class EmptyGroupingSetContext extends ParserRuleContext {
		public TerminalNode LP_() { return getToken(OpenGaussStatementParser.LP_, 0); }
		public TerminalNode RP_() { return getToken(OpenGaussStatementParser.RP_, 0); }
		public EmptyGroupingSetContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_emptyGroupingSet; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitEmptyGroupingSet(this);
			else return visitor.visitChildren(this);
		}
	}

	public final EmptyGroupingSetContext emptyGroupingSet() throws RecognitionException {
		EmptyGroupingSetContext _localctx = new EmptyGroupingSetContext(_ctx, getState());
		enterRule(_localctx, 144, RULE_emptyGroupingSet);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2359);
			match(LP_);
			setState(2360);
			match(RP_);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class RollupClauseContext extends ParserRuleContext {
		public TerminalNode ROLLUP() { return getToken(OpenGaussStatementParser.ROLLUP, 0); }
		public TerminalNode LP_() { return getToken(OpenGaussStatementParser.LP_, 0); }
		public ExprListContext exprList() {
			return getRuleContext(ExprListContext.class,0);
		}
		public TerminalNode RP_() { return getToken(OpenGaussStatementParser.RP_, 0); }
		public RollupClauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_rollupClause; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitRollupClause(this);
			else return visitor.visitChildren(this);
		}
	}

	public final RollupClauseContext rollupClause() throws RecognitionException {
		RollupClauseContext _localctx = new RollupClauseContext(_ctx, getState());
		enterRule(_localctx, 146, RULE_rollupClause);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2362);
			match(ROLLUP);
			setState(2363);
			match(LP_);
			setState(2364);
			exprList(0);
			setState(2365);
			match(RP_);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CubeClauseContext extends ParserRuleContext {
		public TerminalNode CUBE() { return getToken(OpenGaussStatementParser.CUBE, 0); }
		public TerminalNode LP_() { return getToken(OpenGaussStatementParser.LP_, 0); }
		public ExprListContext exprList() {
			return getRuleContext(ExprListContext.class,0);
		}
		public TerminalNode RP_() { return getToken(OpenGaussStatementParser.RP_, 0); }
		public CubeClauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_cubeClause; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitCubeClause(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CubeClauseContext cubeClause() throws RecognitionException {
		CubeClauseContext _localctx = new CubeClauseContext(_ctx, getState());
		enterRule(_localctx, 148, RULE_cubeClause);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2367);
			match(CUBE);
			setState(2368);
			match(LP_);
			setState(2369);
			exprList(0);
			setState(2370);
			match(RP_);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class GroupingSetsClauseContext extends ParserRuleContext {
		public TerminalNode GROUPING() { return getToken(OpenGaussStatementParser.GROUPING, 0); }
		public TerminalNode SETS() { return getToken(OpenGaussStatementParser.SETS, 0); }
		public TerminalNode LP_() { return getToken(OpenGaussStatementParser.LP_, 0); }
		public GroupByListContext groupByList() {
			return getRuleContext(GroupByListContext.class,0);
		}
		public TerminalNode RP_() { return getToken(OpenGaussStatementParser.RP_, 0); }
		public GroupingSetsClauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_groupingSetsClause; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitGroupingSetsClause(this);
			else return visitor.visitChildren(this);
		}
	}

	public final GroupingSetsClauseContext groupingSetsClause() throws RecognitionException {
		GroupingSetsClauseContext _localctx = new GroupingSetsClauseContext(_ctx, getState());
		enterRule(_localctx, 150, RULE_groupingSetsClause);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2372);
			match(GROUPING);
			setState(2373);
			match(SETS);
			setState(2374);
			match(LP_);
			setState(2375);
			groupByList();
			setState(2376);
			match(RP_);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class WindowClauseContext extends ParserRuleContext {
		public TerminalNode WINDOW() { return getToken(OpenGaussStatementParser.WINDOW, 0); }
		public WindowDefinitionListContext windowDefinitionList() {
			return getRuleContext(WindowDefinitionListContext.class,0);
		}
		public WindowClauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_windowClause; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitWindowClause(this);
			else return visitor.visitChildren(this);
		}
	}

	public final WindowClauseContext windowClause() throws RecognitionException {
		WindowClauseContext _localctx = new WindowClauseContext(_ctx, getState());
		enterRule(_localctx, 152, RULE_windowClause);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2378);
			match(WINDOW);
			setState(2379);
			windowDefinitionList(0);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class WindowDefinitionListContext extends ParserRuleContext {
		public WindowDefinitionContext windowDefinition() {
			return getRuleContext(WindowDefinitionContext.class,0);
		}
		public WindowDefinitionListContext windowDefinitionList() {
			return getRuleContext(WindowDefinitionListContext.class,0);
		}
		public TerminalNode COMMA_() { return getToken(OpenGaussStatementParser.COMMA_, 0); }
		public WindowDefinitionListContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_windowDefinitionList; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitWindowDefinitionList(this);
			else return visitor.visitChildren(this);
		}
	}

	public final WindowDefinitionListContext windowDefinitionList() throws RecognitionException {
		return windowDefinitionList(0);
	}

	private WindowDefinitionListContext windowDefinitionList(int _p) throws RecognitionException {
		ParserRuleContext _parentctx = _ctx;
		int _parentState = getState();
		WindowDefinitionListContext _localctx = new WindowDefinitionListContext(_ctx, _parentState);
		WindowDefinitionListContext _prevctx = _localctx;
		int _startState = 154;
		enterRecursionRule(_localctx, 154, RULE_windowDefinitionList, _p);
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			{
			setState(2382);
			windowDefinition();
			}
			_ctx.stop = _input.LT(-1);
			setState(2389);
			_errHandler.sync(this);
			_alt = getInterpreter().adaptivePredict(_input,116,_ctx);
			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
				if ( _alt==1 ) {
					if ( _parseListeners!=null ) triggerExitRuleEvent();
					_prevctx = _localctx;
					{
					{
					_localctx = new WindowDefinitionListContext(_parentctx, _parentState);
					pushNewRecursionContext(_localctx, _startState, RULE_windowDefinitionList);
					setState(2384);
					if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)");
					setState(2385);
					match(COMMA_);
					setState(2386);
					windowDefinition();
					}
					} 
				}
				setState(2391);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,116,_ctx);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			unrollRecursionContexts(_parentctx);
		}
		return _localctx;
	}

	public static class WindowDefinitionContext extends ParserRuleContext {
		public ColIdContext colId() {
			return getRuleContext(ColIdContext.class,0);
		}
		public TerminalNode AS() { return getToken(OpenGaussStatementParser.AS, 0); }
		public WindowSpecificationContext windowSpecification() {
			return getRuleContext(WindowSpecificationContext.class,0);
		}
		public WindowDefinitionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_windowDefinition; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitWindowDefinition(this);
			else return visitor.visitChildren(this);
		}
	}

	public final WindowDefinitionContext windowDefinition() throws RecognitionException {
		WindowDefinitionContext _localctx = new WindowDefinitionContext(_ctx, getState());
		enterRule(_localctx, 156, RULE_windowDefinition);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2392);
			colId();
			setState(2393);
			match(AS);
			setState(2394);
			windowSpecification();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class WindowSpecificationContext extends ParserRuleContext {
		public TerminalNode LP_() { return getToken(OpenGaussStatementParser.LP_, 0); }
		public TerminalNode RP_() { return getToken(OpenGaussStatementParser.RP_, 0); }
		public ExistingWindowNameContext existingWindowName() {
			return getRuleContext(ExistingWindowNameContext.class,0);
		}
		public PartitionClauseContext partitionClause() {
			return getRuleContext(PartitionClauseContext.class,0);
		}
		public SortClauseContext sortClause() {
			return getRuleContext(SortClauseContext.class,0);
		}
		public FrameClauseContext frameClause() {
			return getRuleContext(FrameClauseContext.class,0);
		}
		public WindowSpecificationContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_windowSpecification; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitWindowSpecification(this);
			else return visitor.visitChildren(this);
		}
	}

	public final WindowSpecificationContext windowSpecification() throws RecognitionException {
		WindowSpecificationContext _localctx = new WindowSpecificationContext(_ctx, getState());
		enterRule(_localctx, 158, RULE_windowSpecification);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2396);
			match(LP_);
			setState(2398);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,117,_ctx) ) {
			case 1:
				{
				setState(2397);
				existingWindowName();
				}
				break;
			}
			setState(2401);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==PARTITION) {
				{
				setState(2400);
				partitionClause();
				}
			}

			setState(2404);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==ORDER) {
				{
				setState(2403);
				sortClause();
				}
			}

			setState(2407);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==ROWS || _la==RANGE || _la==GROUPS) {
				{
				setState(2406);
				frameClause();
				}
			}

			setState(2409);
			match(RP_);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ExistingWindowNameContext extends ParserRuleContext {
		public ColIdContext colId() {
			return getRuleContext(ColIdContext.class,0);
		}
		public ExistingWindowNameContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_existingWindowName; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitExistingWindowName(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ExistingWindowNameContext existingWindowName() throws RecognitionException {
		ExistingWindowNameContext _localctx = new ExistingWindowNameContext(_ctx, getState());
		enterRule(_localctx, 160, RULE_existingWindowName);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2411);
			colId();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class PartitionClauseContext extends ParserRuleContext {
		public TerminalNode PARTITION() { return getToken(OpenGaussStatementParser.PARTITION, 0); }
		public TerminalNode BY() { return getToken(OpenGaussStatementParser.BY, 0); }
		public ExprListContext exprList() {
			return getRuleContext(ExprListContext.class,0);
		}
		public PartitionClauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_partitionClause; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitPartitionClause(this);
			else return visitor.visitChildren(this);
		}
	}

	public final PartitionClauseContext partitionClause() throws RecognitionException {
		PartitionClauseContext _localctx = new PartitionClauseContext(_ctx, getState());
		enterRule(_localctx, 162, RULE_partitionClause);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2413);
			match(PARTITION);
			setState(2414);
			match(BY);
			setState(2415);
			exprList(0);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class FrameClauseContext extends ParserRuleContext {
		public TerminalNode RANGE() { return getToken(OpenGaussStatementParser.RANGE, 0); }
		public FrameExtentContext frameExtent() {
			return getRuleContext(FrameExtentContext.class,0);
		}
		public OptWindowExclusionClauseContext optWindowExclusionClause() {
			return getRuleContext(OptWindowExclusionClauseContext.class,0);
		}
		public TerminalNode ROWS() { return getToken(OpenGaussStatementParser.ROWS, 0); }
		public TerminalNode GROUPS() { return getToken(OpenGaussStatementParser.GROUPS, 0); }
		public FrameClauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_frameClause; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitFrameClause(this);
			else return visitor.visitChildren(this);
		}
	}

	public final FrameClauseContext frameClause() throws RecognitionException {
		FrameClauseContext _localctx = new FrameClauseContext(_ctx, getState());
		enterRule(_localctx, 164, RULE_frameClause);
		try {
			setState(2429);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case RANGE:
				enterOuterAlt(_localctx, 1);
				{
				setState(2417);
				match(RANGE);
				setState(2418);
				frameExtent();
				setState(2419);
				optWindowExclusionClause();
				}
				break;
			case ROWS:
				enterOuterAlt(_localctx, 2);
				{
				setState(2421);
				match(ROWS);
				setState(2422);
				frameExtent();
				setState(2423);
				optWindowExclusionClause();
				}
				break;
			case GROUPS:
				enterOuterAlt(_localctx, 3);
				{
				setState(2425);
				match(GROUPS);
				setState(2426);
				frameExtent();
				setState(2427);
				optWindowExclusionClause();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class FrameExtentContext extends ParserRuleContext {
		public List frameBound() {
			return getRuleContexts(FrameBoundContext.class);
		}
		public FrameBoundContext frameBound(int i) {
			return getRuleContext(FrameBoundContext.class,i);
		}
		public TerminalNode BETWEEN() { return getToken(OpenGaussStatementParser.BETWEEN, 0); }
		public TerminalNode AND() { return getToken(OpenGaussStatementParser.AND, 0); }
		public FrameExtentContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_frameExtent; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitFrameExtent(this);
			else return visitor.visitChildren(this);
		}
	}

	public final FrameExtentContext frameExtent() throws RecognitionException {
		FrameExtentContext _localctx = new FrameExtentContext(_ctx, getState());
		enterRule(_localctx, 166, RULE_frameExtent);
		try {
			setState(2437);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case OR_:
			case TILDE_:
			case SIGNED_LEFT_SHIFT_:
			case SIGNED_RIGHT_SHIFT_:
			case PLUS_:
			case MINUS_:
			case POUND_:
			case LP_:
			case QUESTION_:
			case DOLLAR_:
			case UNICODE_ESCAPE:
			case JSON_EXTRACT_:
			case JSON_EXTRACT_TEXT_:
			case JSON_PATH_EXTRACT_:
			case JSON_PATH_EXTRACT_TEXT_:
			case JSONB_CONTAIN_RIGHT_:
			case JSONB_CONTAIN_LEFT_:
			case JSONB_CONTAIN_ALL_TOP_KEY_:
			case JSONB_PATH_DELETE_:
			case JSONB_PATH_CONTAIN_ANY_VALUE_:
			case JSONB_PATH_PREDICATE_CHECK_:
			case GEOMETRIC_LENGTH_:
			case GEOMETRIC_DISTANCE_:
			case GEOMETRIC_EXTEND_RIGHT_:
			case GEOMETRIC_EXTEND_LEFT_:
			case GEOMETRIC_STRICT_BELOW_:
			case GEOMETRIC_STRICT_ABOVE_:
			case GEOMETRIC_EXTEND_ABOVE_:
			case GEOMETRIC_EXTEND_BELOW_:
			case GEOMETRIC_BELOW_:
			case GEOMETRIC_ABOVE_:
			case GEOMETRIC_INTERSECT_:
			case GEOMETRIC_PERPENDICULAR_:
			case GEOMETRIC_SAME_AS_:
			case DN_:
			case CUBE_ROOT_:
			case INSERT:
			case UPDATE:
			case DELETE:
			case ALTER:
			case DROP:
			case TRUNCATE:
			case SCHEMA:
			case REVOKE:
			case ADD:
			case SET:
			case INDEX:
			case UNIQUE:
			case KEY:
			case POSITION:
			case FUNCTION:
			case TRIGGER:
			case PROCEDURE:
			case VIEW:
			case CASE:
			case CAST:
			case TRIM:
			case SUBSTRING:
			case NATURAL:
			case JOIN:
			case FULL:
			case INNER:
			case OUTER:
			case LEFT:
			case RIGHT:
			case CROSS:
			case IF:
			case IS:
			case NOT:
			case NULL:
			case TRUE:
			case FALSE:
			case EXISTS:
			case LIKE:
			case BY:
			case BEGIN:
			case COMMIT:
			case ROLLBACK:
			case SAVEPOINT:
			case BOOLEAN:
			case DOUBLE:
			case CHAR:
			case CHARACTER:
			case ARRAY:
			case INTERVAL:
			case DATE:
			case TIME:
			case TIMESTAMP:
			case LOCALTIME:
			case LOCALTIMESTAMP:
			case YEAR:
			case MONTH:
			case DAY:
			case HOUR:
			case MINUTE:
			case SECOND:
			case DEFAULT:
			case CURRENT:
			case ENABLE:
			case DISABLE:
			case CALL:
			case PRESERVE:
			case DEFINER:
			case CURRENT_USER:
			case SQL:
			case CASCADED:
			case LOCAL:
			case CLOSE:
			case NEXT:
			case NAME:
			case COLLATION:
			case NAMES:
			case INTEGER:
			case REAL:
			case DECIMAL:
			case TYPE:
			case SMALLINT:
			case BIGINT:
			case NUMERIC:
			case TEXT:
			case REPEATABLE:
			case CURRENT_DATE:
			case CURRENT_TIME:
			case CURRENT_TIMESTAMP:
			case NULLIF:
			case VARYING:
			case NATIONAL:
			case NCHAR:
			case VALUE:
			case COALESCE:
			case TIES:
			case CUBE:
			case GROUPING:
			case SETS:
			case OTHERS:
			case OVERLAPS:
			case AT:
			case DEC:
			case MAXVALUE:
			case ADMIN:
			case BINARY:
			case ESCAPE:
			case EXCLUDE:
			case MOD:
			case PARTITION:
			case ROW:
			case UNKNOWN:
			case ALWAYS:
			case CASCADE:
			case GENERATED:
			case ISOLATION:
			case LEVEL:
			case NO:
			case OPTION:
			case PRIVILEGES:
			case READ:
			case ROLE:
			case ROWS:
			case START:
			case TRANSACTION:
			case USER:
			case ACTION:
			case CACHE:
			case CHARACTERISTICS:
			case CLUSTER:
			case COMMENTS:
			case CONCURRENTLY:
			case CONSTRAINTS:
			case CYCLE:
			case DATA:
			case DATABASE:
			case DEFAULTS:
			case DEFERRED:
			case DEPENDS:
			case DOMAIN:
			case EXCLUDING:
			case EXECUTE:
			case EXTENDED:
			case EXTENSION:
			case EXTERNAL:
			case EXTRACT:
			case FILTER:
			case FIRST:
			case FOLLOWING:
			case FORCE:
			case GLOBAL:
			case IDENTITY:
			case IMMEDIATE:
			case INCLUDING:
			case INCREMENT:
			case INDEXES:
			case INHERIT:
			case INHERITS:
			case INCLUDE:
			case LANGUAGE:
			case LARGE:
			case LAST:
			case LOGGED:
			case MAIN:
			case MATCH:
			case MINVALUE:
			case NOTHING:
			case NULLS:
			case OBJECT:
			case OIDS:
			case OVER:
			case OWNED:
			case OWNER:
			case PARTIAL:
			case PLAIN:
			case PRECEDING:
			case RANGE:
			case RENAME:
			case REPLICA:
			case RESET:
			case RESTART:
			case RESTRICT:
			case ROUTINE:
			case RULE:
			case SECURITY:
			case SEQUENCE:
			case SESSION:
			case SESSION_USER:
			case SHOW:
			case SIMPLE:
			case STATISTICS:
			case STORAGE:
			case TABLESPACE:
			case TEMP:
			case TEMPORARY:
			case UNBOUNDED:
			case UNLOGGED:
			case VALID:
			case VALIDATE:
			case WITHIN:
			case WITHOUT:
			case ZONE:
			case OF:
			case UESCAPE:
			case GROUPS:
			case RECURSIVE:
			case INT:
			case INT2:
			case INT4:
			case INT8:
			case FLOAT:
			case FLOAT4:
			case FLOAT8:
			case VARCHAR:
			case BYTEA:
			case ENUM:
			case POINT:
			case LSEG:
			case BOX:
			case PATH:
			case POLYGON:
			case CIRCLE:
			case INET:
			case BIT:
			case TSQUERY:
			case XML:
			case JSON:
			case INT4RANGE:
			case INT8RANGE:
			case NUMRANGE:
			case DATERANGE:
			case TABLESAMPLE:
			case ORDINALITY:
			case CURRENT_ROLE:
			case CURRENT_CATALOG:
			case CURRENT_SCHEMA:
			case NORMALIZE:
			case OVERLAY:
			case XMLCONCAT:
			case XMLELEMENT:
			case XMLEXISTS:
			case XMLFOREST:
			case XMLPARSE:
			case XMLPI:
			case XMLROOT:
			case XMLSERIALIZE:
			case TREAT:
			case NFC:
			case NFD:
			case NFKC:
			case NFKD:
			case REF:
			case PASSING:
			case VERSION:
			case YES:
			case STANDALONE:
			case GREATEST:
			case LEAST:
			case MATERIALIZED:
			case OPERATOR:
			case SHARE:
			case ROLLUP:
			case ILIKE:
			case SIMILAR:
			case ISNULL:
			case NOTNULL:
			case DOCUMENT:
			case NORMALIZED:
			case NOWAIT:
			case LOCKED:
			case COLUMNS:
			case CONTENT:
			case STRIP:
			case WHITESPACE:
			case CONFLICT:
			case OVERRIDING:
			case SYSTEM:
			case ABORT:
			case ABSOLUTE:
			case ACCESS:
			case AFTER:
			case AGGREGATE:
			case ALSO:
			case ATTACH:
			case ATTRIBUTE:
			case BACKWARD:
			case BEFORE:
			case ASSERTION:
			case ASSIGNMENT:
			case CONTINUE:
			case CONVERSION:
			case COPY:
			case COST:
			case CSV:
			case CALLED:
			case CATALOG:
			case CHAIN:
			case CHECKPOINT:
			case CLASS:
			case CONFIGURATION:
			case COMMENT:
			case DETACH:
			case DICTIONARY:
			case EXPRESSION:
			case INSENSITIVE:
			case DISCARD:
			case OFF:
			case INSTEAD:
			case EXPLAIN:
			case INPUT:
			case INLINE:
			case PARALLEL:
			case LEAKPROOF:
			case COMMITTED:
			case ENCODING:
			case IMPLICIT:
			case DELIMITER:
			case CURSOR:
			case EACH:
			case EVENT:
			case DEALLOCATE:
			case CONNECTION:
			case DECLARE:
			case FAMILY:
			case FORWARD:
			case EXCLUSIVE:
			case FUNCTIONS:
			case LOCATION:
			case LABEL:
			case DELIMITERS:
			case HANDLER:
			case HEADER:
			case IMMUTABLE:
			case GRANTED:
			case HOLD:
			case MAPPING:
			case OLD:
			case METHOD:
			case LOAD:
			case LISTEN:
			case MODE:
			case MOVE:
			case PROCEDURAL:
			case PARSER:
			case PROCEDURES:
			case ENCRYPTED:
			case PUBLICATION:
			case PROGRAM:
			case REFERENCING:
			case PLANS:
			case REINDEX:
			case PRIOR:
			case PASSWORD:
			case RELATIVE:
			case QUOTE:
			case ROUTINES:
			case REPLACE:
			case SNAPSHOT:
			case REFRESH:
			case PREPARE:
			case OPTIONS:
			case IMPORT:
			case INVOKER:
			case NEW:
			case PREPARED:
			case SCROLL:
			case SEQUENCES:
			case SYSID:
			case REASSIGN:
			case SERVER:
			case SUBSCRIPTION:
			case SEARCH:
			case SCHEMAS:
			case RECHECK:
			case POLICY:
			case NOTIFY:
			case LOCK:
			case RELEASE:
			case SERIALIZABLE:
			case RETURNS:
			case STATEMENT:
			case STDIN:
			case STDOUT:
			case TABLES:
			case SUPPORT:
			case STABLE:
			case TEMPLATE:
			case UNENCRYPTED:
			case VIEWS:
			case UNCOMMITTED:
			case TRANSFORM:
			case UNLISTEN:
			case TRUSTED:
			case VALIDATOR:
			case UNTIL:
			case VACUUM:
			case VOLATILE:
			case STORED:
			case WRITE:
			case STRICT:
			case TYPES:
			case WRAPPER:
			case WORK:
			case FREEZE:
			case AUTHORIZATION:
			case VERBOSE:
			case PARAM:
			case PREDICT:
			case TS_REWRITE:
			case INT16:
			case INT1:
			case ELEM_CONTAINED_BY_RANGE:
			case LOWER_INF:
			case UPPER_INF:
			case ABBREV:
			case SET_MASKLEN:
			case TRUNC:
			case IDENTIFIER_:
			case STRING_:
			case NUMBER_:
				enterOuterAlt(_localctx, 1);
				{
				setState(2431);
				frameBound();
				}
				break;
			case BETWEEN:
				enterOuterAlt(_localctx, 2);
				{
				setState(2432);
				match(BETWEEN);
				setState(2433);
				frameBound();
				setState(2434);
				match(AND);
				setState(2435);
				frameBound();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class FrameBoundContext extends ParserRuleContext {
		public TerminalNode UNBOUNDED() { return getToken(OpenGaussStatementParser.UNBOUNDED, 0); }
		public TerminalNode PRECEDING() { return getToken(OpenGaussStatementParser.PRECEDING, 0); }
		public TerminalNode FOLLOWING() { return getToken(OpenGaussStatementParser.FOLLOWING, 0); }
		public TerminalNode CURRENT() { return getToken(OpenGaussStatementParser.CURRENT, 0); }
		public TerminalNode ROW() { return getToken(OpenGaussStatementParser.ROW, 0); }
		public AExprContext aExpr() {
			return getRuleContext(AExprContext.class,0);
		}
		public FrameBoundContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_frameBound; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitFrameBound(this);
			else return visitor.visitChildren(this);
		}
	}

	public final FrameBoundContext frameBound() throws RecognitionException {
		FrameBoundContext _localctx = new FrameBoundContext(_ctx, getState());
		enterRule(_localctx, 168, RULE_frameBound);
		try {
			setState(2451);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,123,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(2439);
				match(UNBOUNDED);
				setState(2440);
				match(PRECEDING);
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(2441);
				match(UNBOUNDED);
				setState(2442);
				match(FOLLOWING);
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(2443);
				match(CURRENT);
				setState(2444);
				match(ROW);
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(2445);
				aExpr(0);
				setState(2446);
				match(PRECEDING);
				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(2448);
				aExpr(0);
				setState(2449);
				match(FOLLOWING);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class OptWindowExclusionClauseContext extends ParserRuleContext {
		public TerminalNode EXCLUDE() { return getToken(OpenGaussStatementParser.EXCLUDE, 0); }
		public TerminalNode CURRENT() { return getToken(OpenGaussStatementParser.CURRENT, 0); }
		public TerminalNode ROW() { return getToken(OpenGaussStatementParser.ROW, 0); }
		public TerminalNode GROUP() { return getToken(OpenGaussStatementParser.GROUP, 0); }
		public TerminalNode TIES() { return getToken(OpenGaussStatementParser.TIES, 0); }
		public TerminalNode NO() { return getToken(OpenGaussStatementParser.NO, 0); }
		public TerminalNode OTHERS() { return getToken(OpenGaussStatementParser.OTHERS, 0); }
		public OptWindowExclusionClauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_optWindowExclusionClause; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitOptWindowExclusionClause(this);
			else return visitor.visitChildren(this);
		}
	}

	public final OptWindowExclusionClauseContext optWindowExclusionClause() throws RecognitionException {
		OptWindowExclusionClauseContext _localctx = new OptWindowExclusionClauseContext(_ctx, getState());
		enterRule(_localctx, 170, RULE_optWindowExclusionClause);
		try {
			setState(2464);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,124,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(2453);
				match(EXCLUDE);
				setState(2454);
				match(CURRENT);
				setState(2455);
				match(ROW);
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(2456);
				match(EXCLUDE);
				setState(2457);
				match(GROUP);
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(2458);
				match(EXCLUDE);
				setState(2459);
				match(TIES);
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(2460);
				match(EXCLUDE);
				setState(2461);
				match(NO);
				setState(2462);
				match(OTHERS);
				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AliasContext extends ParserRuleContext {
		public IdentifierContext identifier() {
			return getRuleContext(IdentifierContext.class,0);
		}
		public TerminalNode STRING_() { return getToken(OpenGaussStatementParser.STRING_, 0); }
		public AliasContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alias; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitAlias(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AliasContext alias() throws RecognitionException {
		AliasContext _localctx = new AliasContext(_ctx, getState());
		enterRule(_localctx, 172, RULE_alias);
		try {
			setState(2468);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case UNICODE_ESCAPE:
			case INSERT:
			case UPDATE:
			case DELETE:
			case ALTER:
			case DROP:
			case TRUNCATE:
			case SCHEMA:
			case REVOKE:
			case ADD:
			case SET:
			case INDEX:
			case KEY:
			case POSITION:
			case FUNCTION:
			case TRIGGER:
			case PROCEDURE:
			case VIEW:
			case IF:
			case BY:
			case BEGIN:
			case COMMIT:
			case ROLLBACK:
			case SAVEPOINT:
			case DOUBLE:
			case INTERVAL:
			case TIME:
			case TIMESTAMP:
			case YEAR:
			case MONTH:
			case DAY:
			case HOUR:
			case MINUTE:
			case SECOND:
			case CURRENT:
			case ENABLE:
			case DISABLE:
			case CALL:
			case PRESERVE:
			case DEFINER:
			case SQL:
			case CASCADED:
			case LOCAL:
			case CLOSE:
			case NEXT:
			case NAME:
			case NAMES:
			case TYPE:
			case TEXT:
			case REPEATABLE:
			case VARYING:
			case NATIONAL:
			case VALUE:
			case TIES:
			case CUBE:
			case SETS:
			case OTHERS:
			case AT:
			case MAXVALUE:
			case ADMIN:
			case ESCAPE:
			case EXCLUDE:
			case MOD:
			case PARTITION:
			case UNKNOWN:
			case ALWAYS:
			case CASCADE:
			case GENERATED:
			case ISOLATION:
			case LEVEL:
			case NO:
			case OPTION:
			case PRIVILEGES:
			case READ:
			case ROLE:
			case ROWS:
			case START:
			case TRANSACTION:
			case ACTION:
			case CACHE:
			case CHARACTERISTICS:
			case CLUSTER:
			case COMMENTS:
			case CONSTRAINTS:
			case CYCLE:
			case DATA:
			case DATABASE:
			case DEFAULTS:
			case DEFERRED:
			case DEPENDS:
			case DOMAIN:
			case EXCLUDING:
			case EXECUTE:
			case EXTENDED:
			case EXTENSION:
			case EXTERNAL:
			case FILTER:
			case FIRST:
			case FOLLOWING:
			case FORCE:
			case GLOBAL:
			case IDENTITY:
			case IMMEDIATE:
			case INCLUDING:
			case INCREMENT:
			case INDEXES:
			case INHERIT:
			case INHERITS:
			case INCLUDE:
			case LANGUAGE:
			case LARGE:
			case LAST:
			case LOGGED:
			case MAIN:
			case MATCH:
			case MINVALUE:
			case NOTHING:
			case NULLS:
			case OBJECT:
			case OIDS:
			case OVER:
			case OWNED:
			case OWNER:
			case PARTIAL:
			case PLAIN:
			case PRECEDING:
			case RANGE:
			case RENAME:
			case REPLICA:
			case RESET:
			case RESTART:
			case RESTRICT:
			case ROUTINE:
			case RULE:
			case SECURITY:
			case SEQUENCE:
			case SESSION:
			case SHOW:
			case SIMPLE:
			case STATISTICS:
			case STORAGE:
			case TABLESPACE:
			case TEMP:
			case TEMPORARY:
			case UNBOUNDED:
			case UNLOGGED:
			case VALID:
			case VALIDATE:
			case WITHIN:
			case WITHOUT:
			case ZONE:
			case OF:
			case UESCAPE:
			case GROUPS:
			case RECURSIVE:
			case INT2:
			case INT4:
			case FLOAT4:
			case BYTEA:
			case ENUM:
			case POINT:
			case LSEG:
			case BOX:
			case PATH:
			case POLYGON:
			case CIRCLE:
			case INET:
			case TSQUERY:
			case XML:
			case JSON:
			case INT4RANGE:
			case INT8RANGE:
			case NUMRANGE:
			case DATERANGE:
			case ORDINALITY:
			case NFC:
			case NFD:
			case NFKC:
			case NFKD:
			case REF:
			case PASSING:
			case VERSION:
			case YES:
			case STANDALONE:
			case MATERIALIZED:
			case OPERATOR:
			case SHARE:
			case ROLLUP:
			case DOCUMENT:
			case NORMALIZED:
			case NOWAIT:
			case LOCKED:
			case COLUMNS:
			case CONTENT:
			case STRIP:
			case WHITESPACE:
			case CONFLICT:
			case OVERRIDING:
			case SYSTEM:
			case ABORT:
			case ABSOLUTE:
			case ACCESS:
			case AFTER:
			case AGGREGATE:
			case ALSO:
			case ATTACH:
			case ATTRIBUTE:
			case BACKWARD:
			case BEFORE:
			case ASSERTION:
			case ASSIGNMENT:
			case CONTINUE:
			case CONVERSION:
			case COPY:
			case COST:
			case CSV:
			case CALLED:
			case CATALOG:
			case CHAIN:
			case CHECKPOINT:
			case CLASS:
			case CONFIGURATION:
			case COMMENT:
			case DETACH:
			case DICTIONARY:
			case EXPRESSION:
			case INSENSITIVE:
			case DISCARD:
			case OFF:
			case INSTEAD:
			case EXPLAIN:
			case INPUT:
			case INLINE:
			case PARALLEL:
			case LEAKPROOF:
			case COMMITTED:
			case ENCODING:
			case IMPLICIT:
			case DELIMITER:
			case CURSOR:
			case EACH:
			case EVENT:
			case DEALLOCATE:
			case CONNECTION:
			case DECLARE:
			case FAMILY:
			case FORWARD:
			case EXCLUSIVE:
			case FUNCTIONS:
			case LOCATION:
			case LABEL:
			case DELIMITERS:
			case HANDLER:
			case HEADER:
			case IMMUTABLE:
			case GRANTED:
			case HOLD:
			case MAPPING:
			case OLD:
			case METHOD:
			case LOAD:
			case LISTEN:
			case MODE:
			case MOVE:
			case PROCEDURAL:
			case PARSER:
			case PROCEDURES:
			case ENCRYPTED:
			case PUBLICATION:
			case PROGRAM:
			case REFERENCING:
			case PLANS:
			case REINDEX:
			case PRIOR:
			case PASSWORD:
			case RELATIVE:
			case QUOTE:
			case ROUTINES:
			case REPLACE:
			case SNAPSHOT:
			case REFRESH:
			case PREPARE:
			case OPTIONS:
			case IMPORT:
			case INVOKER:
			case NEW:
			case PREPARED:
			case SCROLL:
			case SEQUENCES:
			case SYSID:
			case REASSIGN:
			case SERVER:
			case SUBSCRIPTION:
			case SEARCH:
			case SCHEMAS:
			case RECHECK:
			case POLICY:
			case NOTIFY:
			case LOCK:
			case RELEASE:
			case SERIALIZABLE:
			case RETURNS:
			case STATEMENT:
			case STDIN:
			case STDOUT:
			case TABLES:
			case SUPPORT:
			case STABLE:
			case TEMPLATE:
			case UNENCRYPTED:
			case VIEWS:
			case UNCOMMITTED:
			case TRANSFORM:
			case UNLISTEN:
			case TRUSTED:
			case VALIDATOR:
			case UNTIL:
			case VACUUM:
			case VOLATILE:
			case STORED:
			case WRITE:
			case STRICT:
			case TYPES:
			case WRAPPER:
			case WORK:
			case INT16:
			case INT1:
			case ELEM_CONTAINED_BY_RANGE:
			case IDENTIFIER_:
				enterOuterAlt(_localctx, 1);
				{
				setState(2466);
				identifier();
				}
				break;
			case STRING_:
				enterOuterAlt(_localctx, 2);
				{
				setState(2467);
				match(STRING_);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class FromClauseContext extends ParserRuleContext {
		public TerminalNode FROM() { return getToken(OpenGaussStatementParser.FROM, 0); }
		public FromListContext fromList() {
			return getRuleContext(FromListContext.class,0);
		}
		public FromClauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_fromClause; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitFromClause(this);
			else return visitor.visitChildren(this);
		}
	}

	public final FromClauseContext fromClause() throws RecognitionException {
		FromClauseContext _localctx = new FromClauseContext(_ctx, getState());
		enterRule(_localctx, 174, RULE_fromClause);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2470);
			match(FROM);
			setState(2471);
			fromList(0);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class FromListContext extends ParserRuleContext {
		public TableReferenceContext tableReference() {
			return getRuleContext(TableReferenceContext.class,0);
		}
		public FromListContext fromList() {
			return getRuleContext(FromListContext.class,0);
		}
		public TerminalNode COMMA_() { return getToken(OpenGaussStatementParser.COMMA_, 0); }
		public FromListContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_fromList; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitFromList(this);
			else return visitor.visitChildren(this);
		}
	}

	public final FromListContext fromList() throws RecognitionException {
		return fromList(0);
	}

	private FromListContext fromList(int _p) throws RecognitionException {
		ParserRuleContext _parentctx = _ctx;
		int _parentState = getState();
		FromListContext _localctx = new FromListContext(_ctx, _parentState);
		FromListContext _prevctx = _localctx;
		int _startState = 176;
		enterRecursionRule(_localctx, 176, RULE_fromList, _p);
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			{
			setState(2474);
			tableReference(0);
			}
			_ctx.stop = _input.LT(-1);
			setState(2481);
			_errHandler.sync(this);
			_alt = getInterpreter().adaptivePredict(_input,126,_ctx);
			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
				if ( _alt==1 ) {
					if ( _parseListeners!=null ) triggerExitRuleEvent();
					_prevctx = _localctx;
					{
					{
					_localctx = new FromListContext(_parentctx, _parentState);
					pushNewRecursionContext(_localctx, _startState, RULE_fromList);
					setState(2476);
					if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)");
					setState(2477);
					match(COMMA_);
					setState(2478);
					tableReference(0);
					}
					} 
				}
				setState(2483);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,126,_ctx);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			unrollRecursionContexts(_parentctx);
		}
		return _localctx;
	}

	public static class TableReferenceContext extends ParserRuleContext {
		public RelationExprContext relationExpr() {
			return getRuleContext(RelationExprContext.class,0);
		}
		public AliasClauseContext aliasClause() {
			return getRuleContext(AliasClauseContext.class,0);
		}
		public TablesampleClauseContext tablesampleClause() {
			return getRuleContext(TablesampleClauseContext.class,0);
		}
		public FunctionTableContext functionTable() {
			return getRuleContext(FunctionTableContext.class,0);
		}
		public FuncAliasClauseContext funcAliasClause() {
			return getRuleContext(FuncAliasClauseContext.class,0);
		}
		public TerminalNode LATERAL() { return getToken(OpenGaussStatementParser.LATERAL, 0); }
		public XmlTableContext xmlTable() {
			return getRuleContext(XmlTableContext.class,0);
		}
		public SelectWithParensContext selectWithParens() {
			return getRuleContext(SelectWithParensContext.class,0);
		}
		public TerminalNode LP_() { return getToken(OpenGaussStatementParser.LP_, 0); }
		public TableReferenceContext tableReference() {
			return getRuleContext(TableReferenceContext.class,0);
		}
		public JoinedTableContext joinedTable() {
			return getRuleContext(JoinedTableContext.class,0);
		}
		public TerminalNode RP_() { return getToken(OpenGaussStatementParser.RP_, 0); }
		public TableReferenceContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_tableReference; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitTableReference(this);
			else return visitor.visitChildren(this);
		}
	}

	public final TableReferenceContext tableReference() throws RecognitionException {
		return tableReference(0);
	}

	private TableReferenceContext tableReference(int _p) throws RecognitionException {
		ParserRuleContext _parentctx = _ctx;
		int _parentState = getState();
		TableReferenceContext _localctx = new TableReferenceContext(_ctx, _parentState);
		TableReferenceContext _prevctx = _localctx;
		int _startState = 178;
		enterRecursionRule(_localctx, 178, RULE_tableReference, _p);
		int _la;
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			setState(2529);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,136,_ctx) ) {
			case 1:
				{
				setState(2485);
				relationExpr();
				setState(2487);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,127,_ctx) ) {
				case 1:
					{
					setState(2486);
					aliasClause();
					}
					break;
				}
				}
				break;
			case 2:
				{
				setState(2489);
				relationExpr();
				setState(2491);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==UNICODE_ESCAPE || ((((_la - 81)) & ~0x3f) == 0 && ((1L << (_la - 81)) & ((1L << (INSERT - 81)) | (1L << (UPDATE - 81)) | (1L << (DELETE - 81)) | (1L << (ALTER - 81)) | (1L << (DROP - 81)) | (1L << (TRUNCATE - 81)) | (1L << (SCHEMA - 81)) | (1L << (REVOKE - 81)) | (1L << (ADD - 81)) | (1L << (SET - 81)) | (1L << (INDEX - 81)) | (1L << (KEY - 81)) | (1L << (POSITION - 81)) | (1L << (FUNCTION - 81)) | (1L << (TRIGGER - 81)) | (1L << (PROCEDURE - 81)) | (1L << (VIEW - 81)) | (1L << (AS - 81)) | (1L << (IF - 81)))) != 0) || ((((_la - 151)) & ~0x3f) == 0 && ((1L << (_la - 151)) & ((1L << (BY - 151)) | (1L << (BEGIN - 151)) | (1L << (COMMIT - 151)) | (1L << (ROLLBACK - 151)) | (1L << (SAVEPOINT - 151)) | (1L << (DOUBLE - 151)) | (1L << (INTERVAL - 151)) | (1L << (TIME - 151)) | (1L << (TIMESTAMP - 151)) | (1L << (YEAR - 151)) | (1L << (MONTH - 151)) | (1L << (DAY - 151)) | (1L << (HOUR - 151)) | (1L << (MINUTE - 151)) | (1L << (SECOND - 151)) | (1L << (CURRENT - 151)) | (1L << (ENABLE - 151)) | (1L << (DISABLE - 151)) | (1L << (CALL - 151)) | (1L << (PRESERVE - 151)) | (1L << (DEFINER - 151)) | (1L << (SQL - 151)) | (1L << (CASCADED - 151)) | (1L << (LOCAL - 151)) | (1L << (CLOSE - 151)) | (1L << (NEXT - 151)) | (1L << (NAME - 151)) | (1L << (NAMES - 151)) | (1L << (TYPE - 151)) | (1L << (TEXT - 151)) | (1L << (REPEATABLE - 151)) | (1L << (VARYING - 151)) | (1L << (NATIONAL - 151)))) != 0) || ((((_la - 216)) & ~0x3f) == 0 && ((1L << (_la - 216)) & ((1L << (VALUE - 216)) | (1L << (TIES - 216)) | (1L << (CUBE - 216)) | (1L << (SETS - 216)) | (1L << (OTHERS - 216)) | (1L << (AT - 216)) | (1L << (MAXVALUE - 216)) | (1L << (ADMIN - 216)) | (1L << (ESCAPE - 216)) | (1L << (EXCLUDE - 216)) | (1L << (MOD - 216)) | (1L << (PARTITION - 216)) | (1L << (UNKNOWN - 216)) | (1L << (ALWAYS - 216)) | (1L << (CASCADE - 216)) | (1L << (GENERATED - 216)) | (1L << (ISOLATION - 216)) | (1L << (LEVEL - 216)) | (1L << (NO - 216)) | (1L << (OPTION - 216)) | (1L << (PRIVILEGES - 216)) | (1L << (READ - 216)) | (1L << (ROLE - 216)) | (1L << (ROWS - 216)) | (1L << (START - 216)) | (1L << (TRANSACTION - 216)) | (1L << (ACTION - 216)) | (1L << (CACHE - 216)) | (1L << (CHARACTERISTICS - 216)) | (1L << (CLUSTER - 216)) | (1L << (COMMENTS - 216)) | (1L << (CONSTRAINTS - 216)) | (1L << (CYCLE - 216)) | (1L << (DATA - 216)) | (1L << (DATABASE - 216)) | (1L << (DEFAULTS - 216)) | (1L << (DEFERRED - 216)))) != 0) || ((((_la - 280)) & ~0x3f) == 0 && ((1L << (_la - 280)) & ((1L << (DEPENDS - 280)) | (1L << (DOMAIN - 280)) | (1L << (EXCLUDING - 280)) | (1L << (EXECUTE - 280)) | (1L << (EXTENDED - 280)) | (1L << (EXTENSION - 280)) | (1L << (EXTERNAL - 280)) | (1L << (FILTER - 280)) | (1L << (FIRST - 280)) | (1L << (FOLLOWING - 280)) | (1L << (FORCE - 280)) | (1L << (GLOBAL - 280)) | (1L << (IDENTITY - 280)) | (1L << (IMMEDIATE - 280)) | (1L << (INCLUDING - 280)) | (1L << (INCREMENT - 280)) | (1L << (INDEXES - 280)) | (1L << (INHERIT - 280)) | (1L << (INHERITS - 280)) | (1L << (INCLUDE - 280)) | (1L << (LANGUAGE - 280)) | (1L << (LARGE - 280)) | (1L << (LAST - 280)) | (1L << (LOGGED - 280)) | (1L << (MAIN - 280)) | (1L << (MATCH - 280)) | (1L << (MINVALUE - 280)) | (1L << (NOTHING - 280)) | (1L << (NULLS - 280)) | (1L << (OBJECT - 280)) | (1L << (OIDS - 280)) | (1L << (OVER - 280)) | (1L << (OWNED - 280)) | (1L << (OWNER - 280)) | (1L << (PARTIAL - 280)) | (1L << (PLAIN - 280)) | (1L << (PRECEDING - 280)) | (1L << (RANGE - 280)) | (1L << (RENAME - 280)) | (1L << (REPLICA - 280)) | (1L << (RESET - 280)) | (1L << (RESTART - 280)) | (1L << (RESTRICT - 280)) | (1L << (ROUTINE - 280)) | (1L << (RULE - 280)) | (1L << (SECURITY - 280)) | (1L << (SEQUENCE - 280)) | (1L << (SESSION - 280)) | (1L << (SHOW - 280)) | (1L << (SIMPLE - 280)) | (1L << (STATISTICS - 280)) | (1L << (STORAGE - 280)) | (1L << (TABLESPACE - 280)) | (1L << (TEMP - 280)) | (1L << (TEMPORARY - 280)) | (1L << (UNBOUNDED - 280)) | (1L << (UNLOGGED - 280)) | (1L << (VALID - 280)))) != 0) || ((((_la - 344)) & ~0x3f) == 0 && ((1L << (_la - 344)) & ((1L << (VALIDATE - 344)) | (1L << (WITHIN - 344)) | (1L << (WITHOUT - 344)) | (1L << (ZONE - 344)) | (1L << (OF - 344)) | (1L << (UESCAPE - 344)) | (1L << (GROUPS - 344)) | (1L << (RECURSIVE - 344)) | (1L << (INT2 - 344)) | (1L << (INT4 - 344)) | (1L << (FLOAT4 - 344)) | (1L << (BYTEA - 344)) | (1L << (ENUM - 344)) | (1L << (POINT - 344)) | (1L << (LSEG - 344)) | (1L << (BOX - 344)) | (1L << (PATH - 344)) | (1L << (POLYGON - 344)) | (1L << (CIRCLE - 344)) | (1L << (INET - 344)) | (1L << (TSQUERY - 344)) | (1L << (XML - 344)) | (1L << (JSON - 344)) | (1L << (INT4RANGE - 344)) | (1L << (INT8RANGE - 344)) | (1L << (NUMRANGE - 344)) | (1L << (DATERANGE - 344)) | (1L << (ORDINALITY - 344)) | (1L << (NFC - 344)) | (1L << (NFD - 344)) | (1L << (NFKC - 344)))) != 0) || ((((_la - 408)) & ~0x3f) == 0 && ((1L << (_la - 408)) & ((1L << (NFKD - 408)) | (1L << (REF - 408)) | (1L << (PASSING - 408)) | (1L << (VERSION - 408)) | (1L << (YES - 408)) | (1L << (STANDALONE - 408)) | (1L << (MATERIALIZED - 408)) | (1L << (OPERATOR - 408)) | (1L << (SHARE - 408)) | (1L << (ROLLUP - 408)) | (1L << (DOCUMENT - 408)) | (1L << (NORMALIZED - 408)) | (1L << (NOWAIT - 408)) | (1L << (LOCKED - 408)) | (1L << (COLUMNS - 408)) | (1L << (CONTENT - 408)) | (1L << (STRIP - 408)) | (1L << (WHITESPACE - 408)) | (1L << (CONFLICT - 408)) | (1L << (OVERRIDING - 408)) | (1L << (SYSTEM - 408)) | (1L << (ABORT - 408)) | (1L << (ABSOLUTE - 408)) | (1L << (ACCESS - 408)) | (1L << (AFTER - 408)) | (1L << (AGGREGATE - 408)) | (1L << (ALSO - 408)) | (1L << (ATTACH - 408)) | (1L << (ATTRIBUTE - 408)) | (1L << (BACKWARD - 408)) | (1L << (BEFORE - 408)) | (1L << (ASSERTION - 408)) | (1L << (ASSIGNMENT - 408)) | (1L << (CONTINUE - 408)) | (1L << (CONVERSION - 408)) | (1L << (COPY - 408)) | (1L << (COST - 408)) | (1L << (CSV - 408)) | (1L << (CALLED - 408)) | (1L << (CATALOG - 408)) | (1L << (CHAIN - 408)) | (1L << (CHECKPOINT - 408)) | (1L << (CLASS - 408)) | (1L << (CONFIGURATION - 408)) | (1L << (COMMENT - 408)) | (1L << (DETACH - 408)))) != 0) || ((((_la - 472)) & ~0x3f) == 0 && ((1L << (_la - 472)) & ((1L << (DICTIONARY - 472)) | (1L << (EXPRESSION - 472)) | (1L << (INSENSITIVE - 472)) | (1L << (DISCARD - 472)) | (1L << (OFF - 472)) | (1L << (INSTEAD - 472)) | (1L << (EXPLAIN - 472)) | (1L << (INPUT - 472)) | (1L << (INLINE - 472)) | (1L << (PARALLEL - 472)) | (1L << (LEAKPROOF - 472)) | (1L << (COMMITTED - 472)) | (1L << (ENCODING - 472)) | (1L << (IMPLICIT - 472)) | (1L << (DELIMITER - 472)) | (1L << (CURSOR - 472)) | (1L << (EACH - 472)) | (1L << (EVENT - 472)) | (1L << (DEALLOCATE - 472)) | (1L << (CONNECTION - 472)) | (1L << (DECLARE - 472)) | (1L << (FAMILY - 472)) | (1L << (FORWARD - 472)) | (1L << (EXCLUSIVE - 472)) | (1L << (FUNCTIONS - 472)) | (1L << (LOCATION - 472)) | (1L << (LABEL - 472)) | (1L << (DELIMITERS - 472)) | (1L << (HANDLER - 472)) | (1L << (HEADER - 472)) | (1L << (IMMUTABLE - 472)) | (1L << (GRANTED - 472)) | (1L << (HOLD - 472)) | (1L << (MAPPING - 472)) | (1L << (OLD - 472)) | (1L << (METHOD - 472)) | (1L << (LOAD - 472)) | (1L << (LISTEN - 472)) | (1L << (MODE - 472)) | (1L << (MOVE - 472)) | (1L << (PROCEDURAL - 472)) | (1L << (PARSER - 472)) | (1L << (PROCEDURES - 472)) | (1L << (ENCRYPTED - 472)) | (1L << (PUBLICATION - 472)) | (1L << (PROGRAM - 472)) | (1L << (REFERENCING - 472)) | (1L << (PLANS - 472)) | (1L << (REINDEX - 472)) | (1L << (PRIOR - 472)) | (1L << (PASSWORD - 472)) | (1L << (RELATIVE - 472)) | (1L << (QUOTE - 472)) | (1L << (ROUTINES - 472)) | (1L << (REPLACE - 472)) | (1L << (SNAPSHOT - 472)) | (1L << (REFRESH - 472)) | (1L << (PREPARE - 472)) | (1L << (OPTIONS - 472)) | (1L << (IMPORT - 472)) | (1L << (INVOKER - 472)) | (1L << (NEW - 472)) | (1L << (PREPARED - 472)))) != 0) || ((((_la - 536)) & ~0x3f) == 0 && ((1L << (_la - 536)) & ((1L << (SCROLL - 536)) | (1L << (SEQUENCES - 536)) | (1L << (SYSID - 536)) | (1L << (REASSIGN - 536)) | (1L << (SERVER - 536)) | (1L << (SUBSCRIPTION - 536)) | (1L << (SEARCH - 536)) | (1L << (SCHEMAS - 536)) | (1L << (RECHECK - 536)) | (1L << (POLICY - 536)) | (1L << (NOTIFY - 536)) | (1L << (LOCK - 536)) | (1L << (RELEASE - 536)) | (1L << (SERIALIZABLE - 536)) | (1L << (RETURNS - 536)) | (1L << (STATEMENT - 536)) | (1L << (STDIN - 536)) | (1L << (STDOUT - 536)) | (1L << (TABLES - 536)) | (1L << (SUPPORT - 536)) | (1L << (STABLE - 536)) | (1L << (TEMPLATE - 536)) | (1L << (UNENCRYPTED - 536)) | (1L << (VIEWS - 536)) | (1L << (UNCOMMITTED - 536)) | (1L << (TRANSFORM - 536)) | (1L << (UNLISTEN - 536)) | (1L << (TRUSTED - 536)) | (1L << (VALIDATOR - 536)) | (1L << (UNTIL - 536)) | (1L << (VACUUM - 536)) | (1L << (VOLATILE - 536)) | (1L << (STORED - 536)) | (1L << (WRITE - 536)) | (1L << (STRICT - 536)) | (1L << (TYPES - 536)) | (1L << (WRAPPER - 536)) | (1L << (WORK - 536)) | (1L << (INT16 - 536)) | (1L << (INT1 - 536)) | (1L << (ELEM_CONTAINED_BY_RANGE - 536)) | (1L << (IDENTIFIER_ - 536)))) != 0)) {
					{
					setState(2490);
					aliasClause();
					}
				}

				setState(2493);
				tablesampleClause();
				}
				break;
			case 3:
				{
				setState(2495);
				functionTable();
				setState(2497);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,129,_ctx) ) {
				case 1:
					{
					setState(2496);
					funcAliasClause();
					}
					break;
				}
				}
				break;
			case 4:
				{
				setState(2499);
				match(LATERAL);
				setState(2500);
				functionTable();
				setState(2502);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,130,_ctx) ) {
				case 1:
					{
					setState(2501);
					funcAliasClause();
					}
					break;
				}
				}
				break;
			case 5:
				{
				setState(2504);
				xmlTable();
				setState(2506);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,131,_ctx) ) {
				case 1:
					{
					setState(2505);
					aliasClause();
					}
					break;
				}
				}
				break;
			case 6:
				{
				setState(2508);
				match(LATERAL);
				setState(2509);
				xmlTable();
				setState(2511);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,132,_ctx) ) {
				case 1:
					{
					setState(2510);
					aliasClause();
					}
					break;
				}
				}
				break;
			case 7:
				{
				setState(2513);
				selectWithParens();
				setState(2515);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,133,_ctx) ) {
				case 1:
					{
					setState(2514);
					aliasClause();
					}
					break;
				}
				}
				break;
			case 8:
				{
				setState(2517);
				match(LATERAL);
				setState(2518);
				selectWithParens();
				setState(2520);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,134,_ctx) ) {
				case 1:
					{
					setState(2519);
					aliasClause();
					}
					break;
				}
				}
				break;
			case 9:
				{
				setState(2522);
				match(LP_);
				setState(2523);
				tableReference(0);
				setState(2524);
				joinedTable();
				setState(2525);
				match(RP_);
				setState(2527);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,135,_ctx) ) {
				case 1:
					{
					setState(2526);
					aliasClause();
					}
					break;
				}
				}
				break;
			}
			_ctx.stop = _input.LT(-1);
			setState(2535);
			_errHandler.sync(this);
			_alt = getInterpreter().adaptivePredict(_input,137,_ctx);
			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
				if ( _alt==1 ) {
					if ( _parseListeners!=null ) triggerExitRuleEvent();
					_prevctx = _localctx;
					{
					{
					_localctx = new TableReferenceContext(_parentctx, _parentState);
					pushNewRecursionContext(_localctx, _startState, RULE_tableReference);
					setState(2531);
					if (!(precpred(_ctx, 2))) throw new FailedPredicateException(this, "precpred(_ctx, 2)");
					setState(2532);
					joinedTable();
					}
					} 
				}
				setState(2537);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,137,_ctx);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			unrollRecursionContexts(_parentctx);
		}
		return _localctx;
	}

	public static class JoinedTableContext extends ParserRuleContext {
		public CrossJoinTypeContext crossJoinType() {
			return getRuleContext(CrossJoinTypeContext.class,0);
		}
		public TableReferenceContext tableReference() {
			return getRuleContext(TableReferenceContext.class,0);
		}
		public InnerJoinTypeContext innerJoinType() {
			return getRuleContext(InnerJoinTypeContext.class,0);
		}
		public JoinQualContext joinQual() {
			return getRuleContext(JoinQualContext.class,0);
		}
		public OuterJoinTypeContext outerJoinType() {
			return getRuleContext(OuterJoinTypeContext.class,0);
		}
		public NaturalJoinTypeContext naturalJoinType() {
			return getRuleContext(NaturalJoinTypeContext.class,0);
		}
		public JoinedTableContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_joinedTable; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitJoinedTable(this);
			else return visitor.visitChildren(this);
		}
	}

	public final JoinedTableContext joinedTable() throws RecognitionException {
		JoinedTableContext _localctx = new JoinedTableContext(_ctx, getState());
		enterRule(_localctx, 180, RULE_joinedTable);
		try {
			setState(2552);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case CROSS:
				enterOuterAlt(_localctx, 1);
				{
				setState(2538);
				crossJoinType();
				setState(2539);
				tableReference(0);
				}
				break;
			case JOIN:
			case INNER:
				enterOuterAlt(_localctx, 2);
				{
				setState(2541);
				innerJoinType();
				setState(2542);
				tableReference(0);
				setState(2543);
				joinQual();
				}
				break;
			case FULL:
			case LEFT:
			case RIGHT:
				enterOuterAlt(_localctx, 3);
				{
				setState(2545);
				outerJoinType();
				setState(2546);
				tableReference(0);
				setState(2547);
				joinQual();
				}
				break;
			case NATURAL:
				enterOuterAlt(_localctx, 4);
				{
				setState(2549);
				naturalJoinType();
				setState(2550);
				tableReference(0);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CrossJoinTypeContext extends ParserRuleContext {
		public TerminalNode CROSS() { return getToken(OpenGaussStatementParser.CROSS, 0); }
		public TerminalNode JOIN() { return getToken(OpenGaussStatementParser.JOIN, 0); }
		public CrossJoinTypeContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_crossJoinType; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitCrossJoinType(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CrossJoinTypeContext crossJoinType() throws RecognitionException {
		CrossJoinTypeContext _localctx = new CrossJoinTypeContext(_ctx, getState());
		enterRule(_localctx, 182, RULE_crossJoinType);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2554);
			match(CROSS);
			setState(2555);
			match(JOIN);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class InnerJoinTypeContext extends ParserRuleContext {
		public TerminalNode JOIN() { return getToken(OpenGaussStatementParser.JOIN, 0); }
		public TerminalNode INNER() { return getToken(OpenGaussStatementParser.INNER, 0); }
		public InnerJoinTypeContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_innerJoinType; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitInnerJoinType(this);
			else return visitor.visitChildren(this);
		}
	}

	public final InnerJoinTypeContext innerJoinType() throws RecognitionException {
		InnerJoinTypeContext _localctx = new InnerJoinTypeContext(_ctx, getState());
		enterRule(_localctx, 184, RULE_innerJoinType);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2558);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==INNER) {
				{
				setState(2557);
				match(INNER);
				}
			}

			setState(2560);
			match(JOIN);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class OuterJoinTypeContext extends ParserRuleContext {
		public TerminalNode JOIN() { return getToken(OpenGaussStatementParser.JOIN, 0); }
		public TerminalNode FULL() { return getToken(OpenGaussStatementParser.FULL, 0); }
		public TerminalNode LEFT() { return getToken(OpenGaussStatementParser.LEFT, 0); }
		public TerminalNode RIGHT() { return getToken(OpenGaussStatementParser.RIGHT, 0); }
		public TerminalNode OUTER() { return getToken(OpenGaussStatementParser.OUTER, 0); }
		public OuterJoinTypeContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_outerJoinType; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitOuterJoinType(this);
			else return visitor.visitChildren(this);
		}
	}

	public final OuterJoinTypeContext outerJoinType() throws RecognitionException {
		OuterJoinTypeContext _localctx = new OuterJoinTypeContext(_ctx, getState());
		enterRule(_localctx, 186, RULE_outerJoinType);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2562);
			_la = _input.LA(1);
			if ( !(((((_la - 121)) & ~0x3f) == 0 && ((1L << (_la - 121)) & ((1L << (FULL - 121)) | (1L << (LEFT - 121)) | (1L << (RIGHT - 121)))) != 0)) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			setState(2564);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==OUTER) {
				{
				setState(2563);
				match(OUTER);
				}
			}

			setState(2566);
			match(JOIN);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class NaturalJoinTypeContext extends ParserRuleContext {
		public TerminalNode NATURAL() { return getToken(OpenGaussStatementParser.NATURAL, 0); }
		public TerminalNode JOIN() { return getToken(OpenGaussStatementParser.JOIN, 0); }
		public TerminalNode INNER() { return getToken(OpenGaussStatementParser.INNER, 0); }
		public TerminalNode FULL() { return getToken(OpenGaussStatementParser.FULL, 0); }
		public TerminalNode LEFT() { return getToken(OpenGaussStatementParser.LEFT, 0); }
		public TerminalNode RIGHT() { return getToken(OpenGaussStatementParser.RIGHT, 0); }
		public TerminalNode OUTER() { return getToken(OpenGaussStatementParser.OUTER, 0); }
		public NaturalJoinTypeContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_naturalJoinType; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitNaturalJoinType(this);
			else return visitor.visitChildren(this);
		}
	}

	public final NaturalJoinTypeContext naturalJoinType() throws RecognitionException {
		NaturalJoinTypeContext _localctx = new NaturalJoinTypeContext(_ctx, getState());
		enterRule(_localctx, 188, RULE_naturalJoinType);
		int _la;
		try {
			setState(2579);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,143,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(2568);
				match(NATURAL);
				setState(2570);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==INNER) {
					{
					setState(2569);
					match(INNER);
					}
				}

				setState(2572);
				match(JOIN);
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(2573);
				match(NATURAL);
				setState(2574);
				_la = _input.LA(1);
				if ( !(((((_la - 121)) & ~0x3f) == 0 && ((1L << (_la - 121)) & ((1L << (FULL - 121)) | (1L << (LEFT - 121)) | (1L << (RIGHT - 121)))) != 0)) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(2576);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==OUTER) {
					{
					setState(2575);
					match(OUTER);
					}
				}

				setState(2578);
				match(JOIN);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class JoinQualContext extends ParserRuleContext {
		public TerminalNode USING() { return getToken(OpenGaussStatementParser.USING, 0); }
		public TerminalNode LP_() { return getToken(OpenGaussStatementParser.LP_, 0); }
		public NameListContext nameList() {
			return getRuleContext(NameListContext.class,0);
		}
		public TerminalNode RP_() { return getToken(OpenGaussStatementParser.RP_, 0); }
		public TerminalNode ON() { return getToken(OpenGaussStatementParser.ON, 0); }
		public AExprContext aExpr() {
			return getRuleContext(AExprContext.class,0);
		}
		public JoinQualContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_joinQual; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitJoinQual(this);
			else return visitor.visitChildren(this);
		}
	}

	public final JoinQualContext joinQual() throws RecognitionException {
		JoinQualContext _localctx = new JoinQualContext(_ctx, getState());
		enterRule(_localctx, 190, RULE_joinQual);
		try {
			setState(2588);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case USING:
				enterOuterAlt(_localctx, 1);
				{
				setState(2581);
				match(USING);
				setState(2582);
				match(LP_);
				setState(2583);
				nameList(0);
				setState(2584);
				match(RP_);
				}
				break;
			case ON:
				enterOuterAlt(_localctx, 2);
				{
				setState(2586);
				match(ON);
				setState(2587);
				aExpr(0);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class RelationExprContext extends ParserRuleContext {
		public QualifiedNameContext qualifiedName() {
			return getRuleContext(QualifiedNameContext.class,0);
		}
		public TerminalNode ASTERISK_() { return getToken(OpenGaussStatementParser.ASTERISK_, 0); }
		public TerminalNode ONLY() { return getToken(OpenGaussStatementParser.ONLY, 0); }
		public TerminalNode LP_() { return getToken(OpenGaussStatementParser.LP_, 0); }
		public TerminalNode RP_() { return getToken(OpenGaussStatementParser.RP_, 0); }
		public RelationExprContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_relationExpr; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitRelationExpr(this);
			else return visitor.visitChildren(this);
		}
	}

	public final RelationExprContext relationExpr() throws RecognitionException {
		RelationExprContext _localctx = new RelationExprContext(_ctx, getState());
		enterRule(_localctx, 192, RULE_relationExpr);
		try {
			setState(2601);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,145,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(2590);
				qualifiedName();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(2591);
				qualifiedName();
				setState(2592);
				match(ASTERISK_);
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(2594);
				match(ONLY);
				setState(2595);
				qualifiedName();
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(2596);
				match(ONLY);
				setState(2597);
				match(LP_);
				setState(2598);
				qualifiedName();
				setState(2599);
				match(RP_);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class WhereClauseContext extends ParserRuleContext {
		public TerminalNode WHERE() { return getToken(OpenGaussStatementParser.WHERE, 0); }
		public AExprContext aExpr() {
			return getRuleContext(AExprContext.class,0);
		}
		public WhereClauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_whereClause; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitWhereClause(this);
			else return visitor.visitChildren(this);
		}
	}

	public final WhereClauseContext whereClause() throws RecognitionException {
		WhereClauseContext _localctx = new WhereClauseContext(_ctx, getState());
		enterRule(_localctx, 194, RULE_whereClause);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2603);
			match(WHERE);
			setState(2604);
			aExpr(0);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class WhereOrCurrentClauseContext extends ParserRuleContext {
		public WhereClauseContext whereClause() {
			return getRuleContext(WhereClauseContext.class,0);
		}
		public TerminalNode WHERE() { return getToken(OpenGaussStatementParser.WHERE, 0); }
		public TerminalNode CURRENT() { return getToken(OpenGaussStatementParser.CURRENT, 0); }
		public TerminalNode OF() { return getToken(OpenGaussStatementParser.OF, 0); }
		public CursorNameContext cursorName() {
			return getRuleContext(CursorNameContext.class,0);
		}
		public WhereOrCurrentClauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_whereOrCurrentClause; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitWhereOrCurrentClause(this);
			else return visitor.visitChildren(this);
		}
	}

	public final WhereOrCurrentClauseContext whereOrCurrentClause() throws RecognitionException {
		WhereOrCurrentClauseContext _localctx = new WhereOrCurrentClauseContext(_ctx, getState());
		enterRule(_localctx, 196, RULE_whereOrCurrentClause);
		try {
			setState(2611);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,146,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(2606);
				whereClause();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(2607);
				match(WHERE);
				setState(2608);
				match(CURRENT);
				setState(2609);
				match(OF);
				setState(2610);
				cursorName();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class HavingClauseContext extends ParserRuleContext {
		public TerminalNode HAVING() { return getToken(OpenGaussStatementParser.HAVING, 0); }
		public AExprContext aExpr() {
			return getRuleContext(AExprContext.class,0);
		}
		public HavingClauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_havingClause; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitHavingClause(this);
			else return visitor.visitChildren(this);
		}
	}

	public final HavingClauseContext havingClause() throws RecognitionException {
		HavingClauseContext _localctx = new HavingClauseContext(_ctx, getState());
		enterRule(_localctx, 198, RULE_havingClause);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2613);
			match(HAVING);
			setState(2614);
			aExpr(0);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DoStatementContext extends ParserRuleContext {
		public TerminalNode DO() { return getToken(OpenGaussStatementParser.DO, 0); }
		public DostmtOptListContext dostmtOptList() {
			return getRuleContext(DostmtOptListContext.class,0);
		}
		public DoStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_doStatement; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitDoStatement(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DoStatementContext doStatement() throws RecognitionException {
		DoStatementContext _localctx = new DoStatementContext(_ctx, getState());
		enterRule(_localctx, 200, RULE_doStatement);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2616);
			match(DO);
			setState(2617);
			dostmtOptList();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DostmtOptListContext extends ParserRuleContext {
		public List dostmtOptItem() {
			return getRuleContexts(DostmtOptItemContext.class);
		}
		public DostmtOptItemContext dostmtOptItem(int i) {
			return getRuleContext(DostmtOptItemContext.class,i);
		}
		public DostmtOptListContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_dostmtOptList; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitDostmtOptList(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DostmtOptListContext dostmtOptList() throws RecognitionException {
		DostmtOptListContext _localctx = new DostmtOptListContext(_ctx, getState());
		enterRule(_localctx, 202, RULE_dostmtOptList);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2620); 
			_errHandler.sync(this);
			_la = _input.LA(1);
			do {
				{
				{
				setState(2619);
				dostmtOptItem();
				}
				}
				setState(2622); 
				_errHandler.sync(this);
				_la = _input.LA(1);
			} while ( _la==LANGUAGE || _la==STRING_ );
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DostmtOptItemContext extends ParserRuleContext {
		public TerminalNode STRING_() { return getToken(OpenGaussStatementParser.STRING_, 0); }
		public TerminalNode LANGUAGE() { return getToken(OpenGaussStatementParser.LANGUAGE, 0); }
		public NonReservedWordOrSconstContext nonReservedWordOrSconst() {
			return getRuleContext(NonReservedWordOrSconstContext.class,0);
		}
		public DostmtOptItemContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_dostmtOptItem; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitDostmtOptItem(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DostmtOptItemContext dostmtOptItem() throws RecognitionException {
		DostmtOptItemContext _localctx = new DostmtOptItemContext(_ctx, getState());
		enterRule(_localctx, 204, RULE_dostmtOptItem);
		try {
			setState(2627);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case STRING_:
				enterOuterAlt(_localctx, 1);
				{
				setState(2624);
				match(STRING_);
				}
				break;
			case LANGUAGE:
				enterOuterAlt(_localctx, 2);
				{
				setState(2625);
				match(LANGUAGE);
				setState(2626);
				nonReservedWordOrSconst();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CopyContext extends ParserRuleContext {
		public TerminalNode COPY() { return getToken(OpenGaussStatementParser.COPY, 0); }
		public QualifiedNameContext qualifiedName() {
			return getRuleContext(QualifiedNameContext.class,0);
		}
		public CopyOptionsContext copyOptions() {
			return getRuleContext(CopyOptionsContext.class,0);
		}
		public TerminalNode FROM() { return getToken(OpenGaussStatementParser.FROM, 0); }
		public TerminalNode TO() { return getToken(OpenGaussStatementParser.TO, 0); }
		public TerminalNode STRING_() { return getToken(OpenGaussStatementParser.STRING_, 0); }
		public TerminalNode STDIN() { return getToken(OpenGaussStatementParser.STDIN, 0); }
		public TerminalNode STDOUT() { return getToken(OpenGaussStatementParser.STDOUT, 0); }
		public TerminalNode BINARY() { return getToken(OpenGaussStatementParser.BINARY, 0); }
		public TerminalNode LP_() { return getToken(OpenGaussStatementParser.LP_, 0); }
		public ColumnListContext columnList() {
			return getRuleContext(ColumnListContext.class,0);
		}
		public TerminalNode RP_() { return getToken(OpenGaussStatementParser.RP_, 0); }
		public TerminalNode PROGRAM() { return getToken(OpenGaussStatementParser.PROGRAM, 0); }
		public CopyDelimiterContext copyDelimiter() {
			return getRuleContext(CopyDelimiterContext.class,0);
		}
		public TerminalNode WITH() { return getToken(OpenGaussStatementParser.WITH, 0); }
		public WhereClauseContext whereClause() {
			return getRuleContext(WhereClauseContext.class,0);
		}
		public PreparableStmtContext preparableStmt() {
			return getRuleContext(PreparableStmtContext.class,0);
		}
		public CopyContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_copy; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitCopy(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CopyContext copy() throws RecognitionException {
		CopyContext _localctx = new CopyContext(_ctx, getState());
		enterRule(_localctx, 206, RULE_copy);
		int _la;
		try {
			setState(2669);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,157,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(2629);
				match(COPY);
				setState(2631);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==BINARY) {
					{
					setState(2630);
					match(BINARY);
					}
				}

				setState(2633);
				qualifiedName();
				setState(2638);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==LP_) {
					{
					setState(2634);
					match(LP_);
					setState(2635);
					columnList();
					setState(2636);
					match(RP_);
					}
				}

				setState(2640);
				_la = _input.LA(1);
				if ( !(_la==FROM || _la==TO) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(2642);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==PROGRAM) {
					{
					setState(2641);
					match(PROGRAM);
					}
				}

				setState(2644);
				_la = _input.LA(1);
				if ( !(((((_la - 552)) & ~0x3f) == 0 && ((1L << (_la - 552)) & ((1L << (STDIN - 552)) | (1L << (STDOUT - 552)) | (1L << (STRING_ - 552)))) != 0)) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(2646);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==USING || _la==DELIMITERS) {
					{
					setState(2645);
					copyDelimiter();
					}
				}

				setState(2649);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==WITH) {
					{
					setState(2648);
					match(WITH);
					}
				}

				setState(2651);
				copyOptions();
				setState(2653);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==WHERE) {
					{
					setState(2652);
					whereClause();
					}
				}

				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(2655);
				match(COPY);
				setState(2656);
				match(LP_);
				setState(2657);
				preparableStmt();
				setState(2658);
				match(RP_);
				setState(2659);
				match(TO);
				setState(2661);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==PROGRAM) {
					{
					setState(2660);
					match(PROGRAM);
					}
				}

				setState(2663);
				_la = _input.LA(1);
				if ( !(((((_la - 552)) & ~0x3f) == 0 && ((1L << (_la - 552)) & ((1L << (STDIN - 552)) | (1L << (STDOUT - 552)) | (1L << (STRING_ - 552)))) != 0)) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(2665);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==WITH) {
					{
					setState(2664);
					match(WITH);
					}
				}

				setState(2667);
				copyOptions();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CopyOptionsContext extends ParserRuleContext {
		public CopyOptListContext copyOptList() {
			return getRuleContext(CopyOptListContext.class,0);
		}
		public TerminalNode LP_() { return getToken(OpenGaussStatementParser.LP_, 0); }
		public CopyGenericOptListContext copyGenericOptList() {
			return getRuleContext(CopyGenericOptListContext.class,0);
		}
		public TerminalNode RP_() { return getToken(OpenGaussStatementParser.RP_, 0); }
		public CopyOptionsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_copyOptions; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitCopyOptions(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CopyOptionsContext copyOptions() throws RecognitionException {
		CopyOptionsContext _localctx = new CopyOptionsContext(_ctx, getState());
		enterRule(_localctx, 208, RULE_copyOptions);
		try {
			setState(2676);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case EOF:
			case SEMI_:
			case WHERE:
			case NULL:
			case BINARY:
			case ESCAPE:
			case FORCE:
			case CSV:
			case ENCODING:
			case DELIMITER:
			case HEADER:
			case QUOTE:
			case FREEZE:
				enterOuterAlt(_localctx, 1);
				{
				setState(2671);
				copyOptList();
				}
				break;
			case LP_:
				enterOuterAlt(_localctx, 2);
				{
				setState(2672);
				match(LP_);
				setState(2673);
				copyGenericOptList();
				setState(2674);
				match(RP_);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CopyGenericOptListContext extends ParserRuleContext {
		public List copyGenericOptElem() {
			return getRuleContexts(CopyGenericOptElemContext.class);
		}
		public CopyGenericOptElemContext copyGenericOptElem(int i) {
			return getRuleContext(CopyGenericOptElemContext.class,i);
		}
		public List COMMA_() { return getTokens(OpenGaussStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(OpenGaussStatementParser.COMMA_, i);
		}
		public CopyGenericOptListContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_copyGenericOptList; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitCopyGenericOptList(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CopyGenericOptListContext copyGenericOptList() throws RecognitionException {
		CopyGenericOptListContext _localctx = new CopyGenericOptListContext(_ctx, getState());
		enterRule(_localctx, 210, RULE_copyGenericOptList);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2678);
			copyGenericOptElem();
			setState(2683);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA_) {
				{
				{
				setState(2679);
				match(COMMA_);
				setState(2680);
				copyGenericOptElem();
				}
				}
				setState(2685);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CopyGenericOptElemContext extends ParserRuleContext {
		public ColLabelContext colLabel() {
			return getRuleContext(ColLabelContext.class,0);
		}
		public CopyGenericOptArgContext copyGenericOptArg() {
			return getRuleContext(CopyGenericOptArgContext.class,0);
		}
		public CopyGenericOptElemContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_copyGenericOptElem; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitCopyGenericOptElem(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CopyGenericOptElemContext copyGenericOptElem() throws RecognitionException {
		CopyGenericOptElemContext _localctx = new CopyGenericOptElemContext(_ctx, getState());
		enterRule(_localctx, 212, RULE_copyGenericOptElem);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2686);
			colLabel();
			setState(2687);
			copyGenericOptArg();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CopyGenericOptArgContext extends ParserRuleContext {
		public BooleanOrStringContext booleanOrString() {
			return getRuleContext(BooleanOrStringContext.class,0);
		}
		public NumericOnlyContext numericOnly() {
			return getRuleContext(NumericOnlyContext.class,0);
		}
		public TerminalNode ASTERISK_() { return getToken(OpenGaussStatementParser.ASTERISK_, 0); }
		public TerminalNode LP_() { return getToken(OpenGaussStatementParser.LP_, 0); }
		public CopyGenericOptArgListContext copyGenericOptArgList() {
			return getRuleContext(CopyGenericOptArgListContext.class,0);
		}
		public TerminalNode RP_() { return getToken(OpenGaussStatementParser.RP_, 0); }
		public CopyGenericOptArgContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_copyGenericOptArg; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitCopyGenericOptArg(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CopyGenericOptArgContext copyGenericOptArg() throws RecognitionException {
		CopyGenericOptArgContext _localctx = new CopyGenericOptArgContext(_ctx, getState());
		enterRule(_localctx, 214, RULE_copyGenericOptArg);
		try {
			setState(2696);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case UNICODE_ESCAPE:
			case INSERT:
			case UPDATE:
			case DELETE:
			case ALTER:
			case DROP:
			case TRUNCATE:
			case SCHEMA:
			case REVOKE:
			case ADD:
			case SET:
			case INDEX:
			case KEY:
			case POSITION:
			case PRECISION:
			case FUNCTION:
			case TRIGGER:
			case PROCEDURE:
			case VIEW:
			case VALUES:
			case TRIM:
			case SUBSTRING:
			case NATURAL:
			case JOIN:
			case FULL:
			case INNER:
			case OUTER:
			case LEFT:
			case RIGHT:
			case CROSS:
			case ON:
			case IF:
			case IS:
			case TRUE:
			case FALSE:
			case EXISTS:
			case BETWEEN:
			case LIKE:
			case BY:
			case BEGIN:
			case COMMIT:
			case ROLLBACK:
			case SAVEPOINT:
			case BOOLEAN:
			case DOUBLE:
			case CHAR:
			case CHARACTER:
			case INTERVAL:
			case TIME:
			case TIMESTAMP:
			case YEAR:
			case MONTH:
			case DAY:
			case HOUR:
			case MINUTE:
			case SECOND:
			case CURRENT:
			case ENABLE:
			case DISABLE:
			case CALL:
			case PRESERVE:
			case DEFINER:
			case SQL:
			case CASCADED:
			case LOCAL:
			case CLOSE:
			case NEXT:
			case NAME:
			case COLLATION:
			case NAMES:
			case INTEGER:
			case REAL:
			case DECIMAL:
			case TYPE:
			case SMALLINT:
			case BIGINT:
			case NUMERIC:
			case TEXT:
			case REPEATABLE:
			case NULLIF:
			case VARYING:
			case NATIONAL:
			case NCHAR:
			case VALUE:
			case COALESCE:
			case TIES:
			case CUBE:
			case GROUPING:
			case SETS:
			case OTHERS:
			case OVERLAPS:
			case AT:
			case DEC:
			case MAXVALUE:
			case ADMIN:
			case BINARY:
			case ESCAPE:
			case EXCLUDE:
			case MOD:
			case PARTITION:
			case ROW:
			case UNKNOWN:
			case ALWAYS:
			case CASCADE:
			case GENERATED:
			case ISOLATION:
			case LEVEL:
			case NO:
			case OPTION:
			case PRIVILEGES:
			case READ:
			case ROLE:
			case ROWS:
			case START:
			case TRANSACTION:
			case ACTION:
			case CACHE:
			case CHARACTERISTICS:
			case CLUSTER:
			case COMMENTS:
			case CONCURRENTLY:
			case CONSTRAINTS:
			case CYCLE:
			case DATA:
			case DATABASE:
			case DEFAULTS:
			case DEFERRED:
			case DEPENDS:
			case DOMAIN:
			case EXCLUDING:
			case EXECUTE:
			case EXTENDED:
			case EXTENSION:
			case EXTERNAL:
			case EXTRACT:
			case FILTER:
			case FIRST:
			case FOLLOWING:
			case FORCE:
			case GLOBAL:
			case IDENTITY:
			case IMMEDIATE:
			case INCLUDING:
			case INCREMENT:
			case INDEXES:
			case INHERIT:
			case INHERITS:
			case INCLUDE:
			case LANGUAGE:
			case LARGE:
			case LAST:
			case LOGGED:
			case MAIN:
			case MATCH:
			case MINVALUE:
			case NOTHING:
			case NULLS:
			case OBJECT:
			case OIDS:
			case OVER:
			case OWNED:
			case OWNER:
			case PARTIAL:
			case PLAIN:
			case PRECEDING:
			case RANGE:
			case RENAME:
			case REPLICA:
			case RESET:
			case RESTART:
			case RESTRICT:
			case ROUTINE:
			case RULE:
			case SECURITY:
			case SEQUENCE:
			case SESSION:
			case SHOW:
			case SIMPLE:
			case STATISTICS:
			case STORAGE:
			case TABLESPACE:
			case TEMP:
			case TEMPORARY:
			case UNBOUNDED:
			case UNLOGGED:
			case VALID:
			case VALIDATE:
			case WITHIN:
			case WITHOUT:
			case ZONE:
			case OF:
			case UESCAPE:
			case GROUPS:
			case RECURSIVE:
			case INT:
			case INT2:
			case INT4:
			case FLOAT:
			case FLOAT4:
			case VARCHAR:
			case BYTEA:
			case ENUM:
			case POINT:
			case LSEG:
			case BOX:
			case PATH:
			case POLYGON:
			case CIRCLE:
			case INET:
			case BIT:
			case TSQUERY:
			case XML:
			case JSON:
			case INT4RANGE:
			case INT8RANGE:
			case NUMRANGE:
			case DATERANGE:
			case TABLESAMPLE:
			case ORDINALITY:
			case CURRENT_SCHEMA:
			case OVERLAY:
			case XMLCONCAT:
			case XMLELEMENT:
			case XMLEXISTS:
			case XMLFOREST:
			case XMLPARSE:
			case XMLPI:
			case XMLROOT:
			case XMLSERIALIZE:
			case TREAT:
			case SETOF:
			case NFC:
			case NFD:
			case NFKC:
			case NFKD:
			case XMLATTRIBUTES:
			case REF:
			case PASSING:
			case VERSION:
			case YES:
			case STANDALONE:
			case GREATEST:
			case LEAST:
			case MATERIALIZED:
			case OPERATOR:
			case SHARE:
			case ROLLUP:
			case ILIKE:
			case SIMILAR:
			case ISNULL:
			case NOTNULL:
			case DOCUMENT:
			case NORMALIZED:
			case NOWAIT:
			case LOCKED:
			case XMLTABLE:
			case COLUMNS:
			case CONTENT:
			case STRIP:
			case WHITESPACE:
			case XMLNAMESPACES:
			case NONE:
			case CONFLICT:
			case OVERRIDING:
			case SYSTEM:
			case ABORT:
			case ABSOLUTE:
			case ACCESS:
			case AFTER:
			case AGGREGATE:
			case ALSO:
			case ATTACH:
			case ATTRIBUTE:
			case BACKWARD:
			case BEFORE:
			case ASSERTION:
			case ASSIGNMENT:
			case CONTINUE:
			case CONVERSION:
			case COPY:
			case COST:
			case CSV:
			case CALLED:
			case CATALOG:
			case CHAIN:
			case CHECKPOINT:
			case CLASS:
			case CONFIGURATION:
			case COMMENT:
			case DETACH:
			case DICTIONARY:
			case EXPRESSION:
			case INSENSITIVE:
			case DISCARD:
			case OFF:
			case INSTEAD:
			case EXPLAIN:
			case INPUT:
			case INLINE:
			case PARALLEL:
			case LEAKPROOF:
			case COMMITTED:
			case ENCODING:
			case IMPLICIT:
			case DELIMITER:
			case CURSOR:
			case EACH:
			case EVENT:
			case DEALLOCATE:
			case CONNECTION:
			case DECLARE:
			case FAMILY:
			case FORWARD:
			case EXCLUSIVE:
			case FUNCTIONS:
			case LOCATION:
			case LABEL:
			case DELIMITERS:
			case HANDLER:
			case HEADER:
			case IMMUTABLE:
			case GRANTED:
			case HOLD:
			case MAPPING:
			case OLD:
			case METHOD:
			case LOAD:
			case LISTEN:
			case MODE:
			case MOVE:
			case PROCEDURAL:
			case PARSER:
			case PROCEDURES:
			case ENCRYPTED:
			case PUBLICATION:
			case PROGRAM:
			case REFERENCING:
			case PLANS:
			case REINDEX:
			case PRIOR:
			case PASSWORD:
			case RELATIVE:
			case QUOTE:
			case ROUTINES:
			case REPLACE:
			case SNAPSHOT:
			case REFRESH:
			case PREPARE:
			case OPTIONS:
			case IMPORT:
			case INVOKER:
			case NEW:
			case PREPARED:
			case SCROLL:
			case SEQUENCES:
			case SYSID:
			case REASSIGN:
			case SERVER:
			case SUBSCRIPTION:
			case SEARCH:
			case SCHEMAS:
			case RECHECK:
			case POLICY:
			case NOTIFY:
			case LOCK:
			case RELEASE:
			case SERIALIZABLE:
			case RETURNS:
			case STATEMENT:
			case STDIN:
			case STDOUT:
			case TABLES:
			case SUPPORT:
			case STABLE:
			case TEMPLATE:
			case UNENCRYPTED:
			case VIEWS:
			case UNCOMMITTED:
			case TRANSFORM:
			case UNLISTEN:
			case TRUSTED:
			case VALIDATOR:
			case UNTIL:
			case VACUUM:
			case VOLATILE:
			case STORED:
			case WRITE:
			case STRICT:
			case TYPES:
			case WRAPPER:
			case WORK:
			case FREEZE:
			case AUTHORIZATION:
			case VERBOSE:
			case OUT:
			case INOUT:
			case INT16:
			case INT1:
			case ELEM_CONTAINED_BY_RANGE:
			case IDENTIFIER_:
			case STRING_:
				enterOuterAlt(_localctx, 1);
				{
				setState(2689);
				booleanOrString();
				}
				break;
			case PLUS_:
			case MINUS_:
			case NUMBER_:
				enterOuterAlt(_localctx, 2);
				{
				setState(2690);
				numericOnly();
				}
				break;
			case ASTERISK_:
				enterOuterAlt(_localctx, 3);
				{
				setState(2691);
				match(ASTERISK_);
				}
				break;
			case LP_:
				enterOuterAlt(_localctx, 4);
				{
				setState(2692);
				match(LP_);
				setState(2693);
				copyGenericOptArgList();
				setState(2694);
				match(RP_);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CopyGenericOptArgListContext extends ParserRuleContext {
		public List copyGenericOptArgListItem() {
			return getRuleContexts(CopyGenericOptArgListItemContext.class);
		}
		public CopyGenericOptArgListItemContext copyGenericOptArgListItem(int i) {
			return getRuleContext(CopyGenericOptArgListItemContext.class,i);
		}
		public List COMMA_() { return getTokens(OpenGaussStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(OpenGaussStatementParser.COMMA_, i);
		}
		public CopyGenericOptArgListContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_copyGenericOptArgList; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitCopyGenericOptArgList(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CopyGenericOptArgListContext copyGenericOptArgList() throws RecognitionException {
		CopyGenericOptArgListContext _localctx = new CopyGenericOptArgListContext(_ctx, getState());
		enterRule(_localctx, 216, RULE_copyGenericOptArgList);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2698);
			copyGenericOptArgListItem();
			setState(2703);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA_) {
				{
				{
				setState(2699);
				match(COMMA_);
				setState(2700);
				copyGenericOptArgListItem();
				}
				}
				setState(2705);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CopyGenericOptArgListItemContext extends ParserRuleContext {
		public BooleanOrStringContext booleanOrString() {
			return getRuleContext(BooleanOrStringContext.class,0);
		}
		public CopyGenericOptArgListItemContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_copyGenericOptArgListItem; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitCopyGenericOptArgListItem(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CopyGenericOptArgListItemContext copyGenericOptArgListItem() throws RecognitionException {
		CopyGenericOptArgListItemContext _localctx = new CopyGenericOptArgListItemContext(_ctx, getState());
		enterRule(_localctx, 218, RULE_copyGenericOptArgListItem);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2706);
			booleanOrString();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CopyOptListContext extends ParserRuleContext {
		public List copyOptItem() {
			return getRuleContexts(CopyOptItemContext.class);
		}
		public CopyOptItemContext copyOptItem(int i) {
			return getRuleContext(CopyOptItemContext.class,i);
		}
		public CopyOptListContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_copyOptList; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitCopyOptList(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CopyOptListContext copyOptList() throws RecognitionException {
		CopyOptListContext _localctx = new CopyOptListContext(_ctx, getState());
		enterRule(_localctx, 220, RULE_copyOptList);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2711);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==NULL || ((((_la - 242)) & ~0x3f) == 0 && ((1L << (_la - 242)) & ((1L << (BINARY - 242)) | (1L << (ESCAPE - 242)) | (1L << (FORCE - 242)))) != 0) || ((((_la - 463)) & ~0x3f) == 0 && ((1L << (_la - 463)) & ((1L << (CSV - 463)) | (1L << (ENCODING - 463)) | (1L << (DELIMITER - 463)) | (1L << (HEADER - 463)) | (1L << (QUOTE - 463)))) != 0) || _la==FREEZE) {
				{
				{
				setState(2708);
				copyOptItem();
				}
				}
				setState(2713);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CopyOptItemContext extends ParserRuleContext {
		public TerminalNode BINARY() { return getToken(OpenGaussStatementParser.BINARY, 0); }
		public TerminalNode FREEZE() { return getToken(OpenGaussStatementParser.FREEZE, 0); }
		public TerminalNode DELIMITER() { return getToken(OpenGaussStatementParser.DELIMITER, 0); }
		public TerminalNode STRING_() { return getToken(OpenGaussStatementParser.STRING_, 0); }
		public TerminalNode AS() { return getToken(OpenGaussStatementParser.AS, 0); }
		public TerminalNode NULL() { return getToken(OpenGaussStatementParser.NULL, 0); }
		public TerminalNode CSV() { return getToken(OpenGaussStatementParser.CSV, 0); }
		public TerminalNode HEADER() { return getToken(OpenGaussStatementParser.HEADER, 0); }
		public TerminalNode QUOTE() { return getToken(OpenGaussStatementParser.QUOTE, 0); }
		public TerminalNode ESCAPE() { return getToken(OpenGaussStatementParser.ESCAPE, 0); }
		public TerminalNode FORCE() { return getToken(OpenGaussStatementParser.FORCE, 0); }
		public ColumnListContext columnList() {
			return getRuleContext(ColumnListContext.class,0);
		}
		public TerminalNode ASTERISK_() { return getToken(OpenGaussStatementParser.ASTERISK_, 0); }
		public TerminalNode NOT() { return getToken(OpenGaussStatementParser.NOT, 0); }
		public TerminalNode ENCODING() { return getToken(OpenGaussStatementParser.ENCODING, 0); }
		public CopyOptItemContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_copyOptItem; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitCopyOptItem(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CopyOptItemContext copyOptItem() throws RecognitionException {
		CopyOptItemContext _localctx = new CopyOptItemContext(_ctx, getState());
		enterRule(_localctx, 222, RULE_copyOptItem);
		int _la;
		try {
			setState(2753);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,167,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(2714);
				match(BINARY);
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(2715);
				match(FREEZE);
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(2716);
				match(DELIMITER);
				setState(2718);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==AS) {
					{
					setState(2717);
					match(AS);
					}
				}

				setState(2720);
				match(STRING_);
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(2721);
				match(NULL);
				setState(2723);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==AS) {
					{
					setState(2722);
					match(AS);
					}
				}

				setState(2725);
				match(STRING_);
				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(2726);
				match(CSV);
				}
				break;
			case 6:
				enterOuterAlt(_localctx, 6);
				{
				setState(2727);
				match(HEADER);
				}
				break;
			case 7:
				enterOuterAlt(_localctx, 7);
				{
				setState(2728);
				match(QUOTE);
				setState(2730);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==AS) {
					{
					setState(2729);
					match(AS);
					}
				}

				setState(2732);
				match(STRING_);
				}
				break;
			case 8:
				enterOuterAlt(_localctx, 8);
				{
				setState(2733);
				match(ESCAPE);
				setState(2735);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==AS) {
					{
					setState(2734);
					match(AS);
					}
				}

				setState(2737);
				match(STRING_);
				}
				break;
			case 9:
				enterOuterAlt(_localctx, 9);
				{
				setState(2738);
				match(FORCE);
				setState(2739);
				match(QUOTE);
				setState(2740);
				columnList();
				}
				break;
			case 10:
				enterOuterAlt(_localctx, 10);
				{
				setState(2741);
				match(FORCE);
				setState(2742);
				match(QUOTE);
				setState(2743);
				match(ASTERISK_);
				}
				break;
			case 11:
				enterOuterAlt(_localctx, 11);
				{
				setState(2744);
				match(FORCE);
				setState(2745);
				match(NOT);
				setState(2746);
				match(NULL);
				setState(2747);
				columnList();
				}
				break;
			case 12:
				enterOuterAlt(_localctx, 12);
				{
				setState(2748);
				match(FORCE);
				setState(2749);
				match(NULL);
				setState(2750);
				columnList();
				}
				break;
			case 13:
				enterOuterAlt(_localctx, 13);
				{
				setState(2751);
				match(ENCODING);
				setState(2752);
				match(STRING_);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CopyDelimiterContext extends ParserRuleContext {
		public TerminalNode DELIMITERS() { return getToken(OpenGaussStatementParser.DELIMITERS, 0); }
		public TerminalNode STRING_() { return getToken(OpenGaussStatementParser.STRING_, 0); }
		public TerminalNode USING() { return getToken(OpenGaussStatementParser.USING, 0); }
		public CopyDelimiterContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_copyDelimiter; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitCopyDelimiter(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CopyDelimiterContext copyDelimiter() throws RecognitionException {
		CopyDelimiterContext _localctx = new CopyDelimiterContext(_ctx, getState());
		enterRule(_localctx, 224, RULE_copyDelimiter);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2756);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==USING) {
				{
				setState(2755);
				match(USING);
				}
			}

			setState(2758);
			match(DELIMITERS);
			setState(2759);
			match(STRING_);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ParameterMarkerContext extends ParserRuleContext {
		public TerminalNode QUESTION_() { return getToken(OpenGaussStatementParser.QUESTION_, 0); }
		public LiteralsTypeContext literalsType() {
			return getRuleContext(LiteralsTypeContext.class,0);
		}
		public TerminalNode DOLLAR_() { return getToken(OpenGaussStatementParser.DOLLAR_, 0); }
		public TerminalNode NUMBER_() { return getToken(OpenGaussStatementParser.NUMBER_, 0); }
		public ParameterMarkerContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_parameterMarker; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitParameterMarker(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ParameterMarkerContext parameterMarker() throws RecognitionException {
		ParameterMarkerContext _localctx = new ParameterMarkerContext(_ctx, getState());
		enterRule(_localctx, 226, RULE_parameterMarker);
		try {
			setState(2767);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case QUESTION_:
				enterOuterAlt(_localctx, 1);
				{
				setState(2761);
				match(QUESTION_);
				setState(2763);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,169,_ctx) ) {
				case 1:
					{
					setState(2762);
					literalsType();
					}
					break;
				}
				}
				break;
			case DOLLAR_:
				enterOuterAlt(_localctx, 2);
				{
				setState(2765);
				match(DOLLAR_);
				setState(2766);
				match(NUMBER_);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ReservedKeywordContext extends ParserRuleContext {
		public TerminalNode ALL() { return getToken(OpenGaussStatementParser.ALL, 0); }
		public TerminalNode ANALYSE() { return getToken(OpenGaussStatementParser.ANALYSE, 0); }
		public TerminalNode ANALYZE() { return getToken(OpenGaussStatementParser.ANALYZE, 0); }
		public TerminalNode AND() { return getToken(OpenGaussStatementParser.AND, 0); }
		public TerminalNode ANY() { return getToken(OpenGaussStatementParser.ANY, 0); }
		public TerminalNode ARRAY() { return getToken(OpenGaussStatementParser.ARRAY, 0); }
		public TerminalNode AS() { return getToken(OpenGaussStatementParser.AS, 0); }
		public TerminalNode ASC() { return getToken(OpenGaussStatementParser.ASC, 0); }
		public TerminalNode ASYMMETRIC() { return getToken(OpenGaussStatementParser.ASYMMETRIC, 0); }
		public TerminalNode BOTH() { return getToken(OpenGaussStatementParser.BOTH, 0); }
		public TerminalNode CASE() { return getToken(OpenGaussStatementParser.CASE, 0); }
		public TerminalNode CAST() { return getToken(OpenGaussStatementParser.CAST, 0); }
		public TerminalNode CHECK() { return getToken(OpenGaussStatementParser.CHECK, 0); }
		public TerminalNode COLLATE() { return getToken(OpenGaussStatementParser.COLLATE, 0); }
		public TerminalNode COLUMN() { return getToken(OpenGaussStatementParser.COLUMN, 0); }
		public TerminalNode CONSTRAINT() { return getToken(OpenGaussStatementParser.CONSTRAINT, 0); }
		public TerminalNode CREATE() { return getToken(OpenGaussStatementParser.CREATE, 0); }
		public TerminalNode CURRENT_CATALOG() { return getToken(OpenGaussStatementParser.CURRENT_CATALOG, 0); }
		public TerminalNode CURRENT_DATE() { return getToken(OpenGaussStatementParser.CURRENT_DATE, 0); }
		public TerminalNode CURRENT_ROLE() { return getToken(OpenGaussStatementParser.CURRENT_ROLE, 0); }
		public TerminalNode CURRENT_TIME() { return getToken(OpenGaussStatementParser.CURRENT_TIME, 0); }
		public TerminalNode CURRENT_TIMESTAMP() { return getToken(OpenGaussStatementParser.CURRENT_TIMESTAMP, 0); }
		public TerminalNode CURRENT_USER() { return getToken(OpenGaussStatementParser.CURRENT_USER, 0); }
		public TerminalNode DEFAULT() { return getToken(OpenGaussStatementParser.DEFAULT, 0); }
		public TerminalNode DEFERRABLE() { return getToken(OpenGaussStatementParser.DEFERRABLE, 0); }
		public TerminalNode DESC() { return getToken(OpenGaussStatementParser.DESC, 0); }
		public TerminalNode DISTINCT() { return getToken(OpenGaussStatementParser.DISTINCT, 0); }
		public TerminalNode DO() { return getToken(OpenGaussStatementParser.DO, 0); }
		public TerminalNode ELSE() { return getToken(OpenGaussStatementParser.ELSE, 0); }
		public TerminalNode END() { return getToken(OpenGaussStatementParser.END, 0); }
		public TerminalNode EXCEPT() { return getToken(OpenGaussStatementParser.EXCEPT, 0); }
		public TerminalNode FALSE() { return getToken(OpenGaussStatementParser.FALSE, 0); }
		public TerminalNode FETCH() { return getToken(OpenGaussStatementParser.FETCH, 0); }
		public TerminalNode FOR() { return getToken(OpenGaussStatementParser.FOR, 0); }
		public TerminalNode FOREIGN() { return getToken(OpenGaussStatementParser.FOREIGN, 0); }
		public TerminalNode FROM() { return getToken(OpenGaussStatementParser.FROM, 0); }
		public TerminalNode GRANT() { return getToken(OpenGaussStatementParser.GRANT, 0); }
		public TerminalNode GROUP() { return getToken(OpenGaussStatementParser.GROUP, 0); }
		public TerminalNode HAVING() { return getToken(OpenGaussStatementParser.HAVING, 0); }
		public TerminalNode IN() { return getToken(OpenGaussStatementParser.IN, 0); }
		public TerminalNode INITIALLY() { return getToken(OpenGaussStatementParser.INITIALLY, 0); }
		public TerminalNode INTERSECT() { return getToken(OpenGaussStatementParser.INTERSECT, 0); }
		public TerminalNode INTO() { return getToken(OpenGaussStatementParser.INTO, 0); }
		public TerminalNode LATERAL() { return getToken(OpenGaussStatementParser.LATERAL, 0); }
		public TerminalNode LEADING() { return getToken(OpenGaussStatementParser.LEADING, 0); }
		public TerminalNode LIMIT() { return getToken(OpenGaussStatementParser.LIMIT, 0); }
		public TerminalNode LOCALTIME() { return getToken(OpenGaussStatementParser.LOCALTIME, 0); }
		public TerminalNode LOCALTIMESTAMP() { return getToken(OpenGaussStatementParser.LOCALTIMESTAMP, 0); }
		public TerminalNode NOT() { return getToken(OpenGaussStatementParser.NOT, 0); }
		public TerminalNode NULL() { return getToken(OpenGaussStatementParser.NULL, 0); }
		public TerminalNode OFFSET() { return getToken(OpenGaussStatementParser.OFFSET, 0); }
		public TerminalNode ON() { return getToken(OpenGaussStatementParser.ON, 0); }
		public TerminalNode ONLY() { return getToken(OpenGaussStatementParser.ONLY, 0); }
		public TerminalNode OR() { return getToken(OpenGaussStatementParser.OR, 0); }
		public TerminalNode ORDER() { return getToken(OpenGaussStatementParser.ORDER, 0); }
		public TerminalNode PLACING() { return getToken(OpenGaussStatementParser.PLACING, 0); }
		public TerminalNode PRIMARY() { return getToken(OpenGaussStatementParser.PRIMARY, 0); }
		public TerminalNode REFERENCES() { return getToken(OpenGaussStatementParser.REFERENCES, 0); }
		public TerminalNode RETURNING() { return getToken(OpenGaussStatementParser.RETURNING, 0); }
		public TerminalNode ROW() { return getToken(OpenGaussStatementParser.ROW, 0); }
		public TerminalNode SELECT() { return getToken(OpenGaussStatementParser.SELECT, 0); }
		public TerminalNode SESSION_USER() { return getToken(OpenGaussStatementParser.SESSION_USER, 0); }
		public TerminalNode SOME() { return getToken(OpenGaussStatementParser.SOME, 0); }
		public TerminalNode SYMMETRIC() { return getToken(OpenGaussStatementParser.SYMMETRIC, 0); }
		public TerminalNode TABLE() { return getToken(OpenGaussStatementParser.TABLE, 0); }
		public TerminalNode THEN() { return getToken(OpenGaussStatementParser.THEN, 0); }
		public TerminalNode TO() { return getToken(OpenGaussStatementParser.TO, 0); }
		public TerminalNode TRAILING() { return getToken(OpenGaussStatementParser.TRAILING, 0); }
		public TerminalNode TRUE() { return getToken(OpenGaussStatementParser.TRUE, 0); }
		public TerminalNode UNION() { return getToken(OpenGaussStatementParser.UNION, 0); }
		public TerminalNode UNIQUE() { return getToken(OpenGaussStatementParser.UNIQUE, 0); }
		public TerminalNode USER() { return getToken(OpenGaussStatementParser.USER, 0); }
		public TerminalNode USING() { return getToken(OpenGaussStatementParser.USING, 0); }
		public TerminalNode VARIADIC() { return getToken(OpenGaussStatementParser.VARIADIC, 0); }
		public TerminalNode WHEN() { return getToken(OpenGaussStatementParser.WHEN, 0); }
		public TerminalNode WHERE() { return getToken(OpenGaussStatementParser.WHERE, 0); }
		public TerminalNode WINDOW() { return getToken(OpenGaussStatementParser.WINDOW, 0); }
		public TerminalNode WITH() { return getToken(OpenGaussStatementParser.WITH, 0); }
		public ReservedKeywordContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_reservedKeyword; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitReservedKeyword(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ReservedKeywordContext reservedKeyword() throws RecognitionException {
		ReservedKeywordContext _localctx = new ReservedKeywordContext(_ctx, getState());
		enterRule(_localctx, 228, RULE_reservedKeyword);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2769);
			_la = _input.LA(1);
			if ( !(((((_la - 80)) & ~0x3f) == 0 && ((1L << (_la - 80)) & ((1L << (SELECT - 80)) | (1L << (CREATE - 80)) | (1L << (GRANT - 80)) | (1L << (TABLE - 80)) | (1L << (COLUMN - 80)) | (1L << (CONSTRAINT - 80)) | (1L << (PRIMARY - 80)) | (1L << (UNIQUE - 80)) | (1L << (FOREIGN - 80)) | (1L << (INTO - 80)) | (1L << (WITH - 80)) | (1L << (UNION - 80)) | (1L << (DISTINCT - 80)) | (1L << (CASE - 80)) | (1L << (WHEN - 80)) | (1L << (CAST - 80)) | (1L << (FROM - 80)) | (1L << (USING - 80)) | (1L << (WHERE - 80)) | (1L << (AS - 80)) | (1L << (ON - 80)) | (1L << (ELSE - 80)) | (1L << (THEN - 80)) | (1L << (FOR - 80)) | (1L << (TO - 80)) | (1L << (AND - 80)) | (1L << (OR - 80)) | (1L << (NOT - 80)) | (1L << (NULL - 80)) | (1L << (TRUE - 80)) | (1L << (FALSE - 80)))) != 0) || ((((_la - 145)) & ~0x3f) == 0 && ((1L << (_la - 145)) & ((1L << (IN - 145)) | (1L << (ALL - 145)) | (1L << (ANY - 145)) | (1L << (ORDER - 145)) | (1L << (GROUP - 145)) | (1L << (ASC - 145)) | (1L << (DESC - 145)) | (1L << (HAVING - 145)) | (1L << (LIMIT - 145)) | (1L << (OFFSET - 145)) | (1L << (ARRAY - 145)) | (1L << (LOCALTIME - 145)) | (1L << (LOCALTIMESTAMP - 145)) | (1L << (DEFAULT - 145)) | (1L << (DO - 145)) | (1L << (CURRENT_USER - 145)))) != 0) || ((((_la - 209)) & ~0x3f) == 0 && ((1L << (_la - 209)) & ((1L << (CURRENT_DATE - 209)) | (1L << (CURRENT_TIME - 209)) | (1L << (CURRENT_TIMESTAMP - 209)) | (1L << (BOTH - 209)) | (1L << (LEADING - 209)) | (1L << (TRAILING - 209)) | (1L << (INTERSECT - 209)) | (1L << (EXCEPT - 209)) | (1L << (FETCH - 209)) | (1L << (WINDOW - 209)) | (1L << (SOME - 209)) | (1L << (END - 209)) | (1L << (ROW - 209)) | (1L << (CHECK - 209)) | (1L << (REFERENCES - 209)) | (1L << (USER - 209)) | (1L << (COLLATE - 209)))) != 0) || ((((_la - 278)) & ~0x3f) == 0 && ((1L << (_la - 278)) & ((1L << (DEFERRABLE - 278)) | (1L << (INITIALLY - 278)) | (1L << (ONLY - 278)) | (1L << (SESSION_USER - 278)))) != 0) || ((((_la - 390)) & ~0x3f) == 0 && ((1L << (_la - 390)) & ((1L << (CURRENT_ROLE - 390)) | (1L << (CURRENT_CATALOG - 390)) | (1L << (SYMMETRIC - 390)) | (1L << (ASYMMETRIC - 390)) | (1L << (VARIADIC - 390)) | (1L << (PLACING - 390)) | (1L << (RETURNING - 390)) | (1L << (LATERAL - 390)) | (1L << (ANALYSE - 390)) | (1L << (ANALYZE - 390)))) != 0)) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class NumberLiteralsContext extends ParserRuleContext {
		public TerminalNode NUMBER_() { return getToken(OpenGaussStatementParser.NUMBER_, 0); }
		public TerminalNode MINUS_() { return getToken(OpenGaussStatementParser.MINUS_, 0); }
		public LiteralsTypeContext literalsType() {
			return getRuleContext(LiteralsTypeContext.class,0);
		}
		public NumberLiteralsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_numberLiterals; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitNumberLiterals(this);
			else return visitor.visitChildren(this);
		}
	}

	public final NumberLiteralsContext numberLiterals() throws RecognitionException {
		NumberLiteralsContext _localctx = new NumberLiteralsContext(_ctx, getState());
		enterRule(_localctx, 230, RULE_numberLiterals);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2772);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==MINUS_) {
				{
				setState(2771);
				match(MINUS_);
				}
			}

			setState(2774);
			match(NUMBER_);
			setState(2776);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==TYPE_CAST_) {
				{
				setState(2775);
				literalsType();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class LiteralsTypeContext extends ParserRuleContext {
		public TerminalNode TYPE_CAST_() { return getToken(OpenGaussStatementParser.TYPE_CAST_, 0); }
		public TerminalNode IDENTIFIER_() { return getToken(OpenGaussStatementParser.IDENTIFIER_, 0); }
		public LiteralsTypeContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_literalsType; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitLiteralsType(this);
			else return visitor.visitChildren(this);
		}
	}

	public final LiteralsTypeContext literalsType() throws RecognitionException {
		LiteralsTypeContext _localctx = new LiteralsTypeContext(_ctx, getState());
		enterRule(_localctx, 232, RULE_literalsType);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2778);
			match(TYPE_CAST_);
			setState(2779);
			match(IDENTIFIER_);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class IdentifierContext extends ParserRuleContext {
		public TerminalNode IDENTIFIER_() { return getToken(OpenGaussStatementParser.IDENTIFIER_, 0); }
		public TerminalNode UNICODE_ESCAPE() { return getToken(OpenGaussStatementParser.UNICODE_ESCAPE, 0); }
		public UescapeContext uescape() {
			return getRuleContext(UescapeContext.class,0);
		}
		public UnreservedWordContext unreservedWord() {
			return getRuleContext(UnreservedWordContext.class,0);
		}
		public IdentifierContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_identifier; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitIdentifier(this);
			else return visitor.visitChildren(this);
		}
	}

	public final IdentifierContext identifier() throws RecognitionException {
		IdentifierContext _localctx = new IdentifierContext(_ctx, getState());
		enterRule(_localctx, 234, RULE_identifier);
		int _la;
		try {
			setState(2789);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case UNICODE_ESCAPE:
			case IDENTIFIER_:
				enterOuterAlt(_localctx, 1);
				{
				setState(2782);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==UNICODE_ESCAPE) {
					{
					setState(2781);
					match(UNICODE_ESCAPE);
					}
				}

				setState(2784);
				match(IDENTIFIER_);
				setState(2786);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,174,_ctx) ) {
				case 1:
					{
					setState(2785);
					uescape();
					}
					break;
				}
				}
				break;
			case INSERT:
			case UPDATE:
			case DELETE:
			case ALTER:
			case DROP:
			case TRUNCATE:
			case SCHEMA:
			case REVOKE:
			case ADD:
			case SET:
			case INDEX:
			case KEY:
			case POSITION:
			case FUNCTION:
			case TRIGGER:
			case PROCEDURE:
			case VIEW:
			case IF:
			case BY:
			case BEGIN:
			case COMMIT:
			case ROLLBACK:
			case SAVEPOINT:
			case DOUBLE:
			case INTERVAL:
			case TIME:
			case TIMESTAMP:
			case YEAR:
			case MONTH:
			case DAY:
			case HOUR:
			case MINUTE:
			case SECOND:
			case CURRENT:
			case ENABLE:
			case DISABLE:
			case CALL:
			case PRESERVE:
			case DEFINER:
			case SQL:
			case CASCADED:
			case LOCAL:
			case CLOSE:
			case NEXT:
			case NAME:
			case NAMES:
			case TYPE:
			case TEXT:
			case REPEATABLE:
			case VARYING:
			case NATIONAL:
			case VALUE:
			case TIES:
			case CUBE:
			case SETS:
			case OTHERS:
			case AT:
			case MAXVALUE:
			case ADMIN:
			case ESCAPE:
			case EXCLUDE:
			case MOD:
			case PARTITION:
			case UNKNOWN:
			case ALWAYS:
			case CASCADE:
			case GENERATED:
			case ISOLATION:
			case LEVEL:
			case NO:
			case OPTION:
			case PRIVILEGES:
			case READ:
			case ROLE:
			case ROWS:
			case START:
			case TRANSACTION:
			case ACTION:
			case CACHE:
			case CHARACTERISTICS:
			case CLUSTER:
			case COMMENTS:
			case CONSTRAINTS:
			case CYCLE:
			case DATA:
			case DATABASE:
			case DEFAULTS:
			case DEFERRED:
			case DEPENDS:
			case DOMAIN:
			case EXCLUDING:
			case EXECUTE:
			case EXTENDED:
			case EXTENSION:
			case EXTERNAL:
			case FILTER:
			case FIRST:
			case FOLLOWING:
			case FORCE:
			case GLOBAL:
			case IDENTITY:
			case IMMEDIATE:
			case INCLUDING:
			case INCREMENT:
			case INDEXES:
			case INHERIT:
			case INHERITS:
			case INCLUDE:
			case LANGUAGE:
			case LARGE:
			case LAST:
			case LOGGED:
			case MAIN:
			case MATCH:
			case MINVALUE:
			case NOTHING:
			case NULLS:
			case OBJECT:
			case OIDS:
			case OVER:
			case OWNED:
			case OWNER:
			case PARTIAL:
			case PLAIN:
			case PRECEDING:
			case RANGE:
			case RENAME:
			case REPLICA:
			case RESET:
			case RESTART:
			case RESTRICT:
			case ROUTINE:
			case RULE:
			case SECURITY:
			case SEQUENCE:
			case SESSION:
			case SHOW:
			case SIMPLE:
			case STATISTICS:
			case STORAGE:
			case TABLESPACE:
			case TEMP:
			case TEMPORARY:
			case UNBOUNDED:
			case UNLOGGED:
			case VALID:
			case VALIDATE:
			case WITHIN:
			case WITHOUT:
			case ZONE:
			case OF:
			case UESCAPE:
			case GROUPS:
			case RECURSIVE:
			case INT2:
			case INT4:
			case FLOAT4:
			case BYTEA:
			case ENUM:
			case POINT:
			case LSEG:
			case BOX:
			case PATH:
			case POLYGON:
			case CIRCLE:
			case INET:
			case TSQUERY:
			case XML:
			case JSON:
			case INT4RANGE:
			case INT8RANGE:
			case NUMRANGE:
			case DATERANGE:
			case ORDINALITY:
			case NFC:
			case NFD:
			case NFKC:
			case NFKD:
			case REF:
			case PASSING:
			case VERSION:
			case YES:
			case STANDALONE:
			case MATERIALIZED:
			case OPERATOR:
			case SHARE:
			case ROLLUP:
			case DOCUMENT:
			case NORMALIZED:
			case NOWAIT:
			case LOCKED:
			case COLUMNS:
			case CONTENT:
			case STRIP:
			case WHITESPACE:
			case CONFLICT:
			case OVERRIDING:
			case SYSTEM:
			case ABORT:
			case ABSOLUTE:
			case ACCESS:
			case AFTER:
			case AGGREGATE:
			case ALSO:
			case ATTACH:
			case ATTRIBUTE:
			case BACKWARD:
			case BEFORE:
			case ASSERTION:
			case ASSIGNMENT:
			case CONTINUE:
			case CONVERSION:
			case COPY:
			case COST:
			case CSV:
			case CALLED:
			case CATALOG:
			case CHAIN:
			case CHECKPOINT:
			case CLASS:
			case CONFIGURATION:
			case COMMENT:
			case DETACH:
			case DICTIONARY:
			case EXPRESSION:
			case INSENSITIVE:
			case DISCARD:
			case OFF:
			case INSTEAD:
			case EXPLAIN:
			case INPUT:
			case INLINE:
			case PARALLEL:
			case LEAKPROOF:
			case COMMITTED:
			case ENCODING:
			case IMPLICIT:
			case DELIMITER:
			case CURSOR:
			case EACH:
			case EVENT:
			case DEALLOCATE:
			case CONNECTION:
			case DECLARE:
			case FAMILY:
			case FORWARD:
			case EXCLUSIVE:
			case FUNCTIONS:
			case LOCATION:
			case LABEL:
			case DELIMITERS:
			case HANDLER:
			case HEADER:
			case IMMUTABLE:
			case GRANTED:
			case HOLD:
			case MAPPING:
			case OLD:
			case METHOD:
			case LOAD:
			case LISTEN:
			case MODE:
			case MOVE:
			case PROCEDURAL:
			case PARSER:
			case PROCEDURES:
			case ENCRYPTED:
			case PUBLICATION:
			case PROGRAM:
			case REFERENCING:
			case PLANS:
			case REINDEX:
			case PRIOR:
			case PASSWORD:
			case RELATIVE:
			case QUOTE:
			case ROUTINES:
			case REPLACE:
			case SNAPSHOT:
			case REFRESH:
			case PREPARE:
			case OPTIONS:
			case IMPORT:
			case INVOKER:
			case NEW:
			case PREPARED:
			case SCROLL:
			case SEQUENCES:
			case SYSID:
			case REASSIGN:
			case SERVER:
			case SUBSCRIPTION:
			case SEARCH:
			case SCHEMAS:
			case RECHECK:
			case POLICY:
			case NOTIFY:
			case LOCK:
			case RELEASE:
			case SERIALIZABLE:
			case RETURNS:
			case STATEMENT:
			case STDIN:
			case STDOUT:
			case TABLES:
			case SUPPORT:
			case STABLE:
			case TEMPLATE:
			case UNENCRYPTED:
			case VIEWS:
			case UNCOMMITTED:
			case TRANSFORM:
			case UNLISTEN:
			case TRUSTED:
			case VALIDATOR:
			case UNTIL:
			case VACUUM:
			case VOLATILE:
			case STORED:
			case WRITE:
			case STRICT:
			case TYPES:
			case WRAPPER:
			case WORK:
			case INT16:
			case INT1:
			case ELEM_CONTAINED_BY_RANGE:
				enterOuterAlt(_localctx, 2);
				{
				setState(2788);
				unreservedWord();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class UescapeContext extends ParserRuleContext {
		public TerminalNode UESCAPE() { return getToken(OpenGaussStatementParser.UESCAPE, 0); }
		public TerminalNode STRING_() { return getToken(OpenGaussStatementParser.STRING_, 0); }
		public UescapeContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_uescape; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitUescape(this);
			else return visitor.visitChildren(this);
		}
	}

	public final UescapeContext uescape() throws RecognitionException {
		UescapeContext _localctx = new UescapeContext(_ctx, getState());
		enterRule(_localctx, 236, RULE_uescape);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2791);
			match(UESCAPE);
			setState(2792);
			match(STRING_);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class UnreservedWordContext extends ParserRuleContext {
		public TerminalNode ABORT() { return getToken(OpenGaussStatementParser.ABORT, 0); }
		public TerminalNode ABSOLUTE() { return getToken(OpenGaussStatementParser.ABSOLUTE, 0); }
		public TerminalNode ACCESS() { return getToken(OpenGaussStatementParser.ACCESS, 0); }
		public TerminalNode ACTION() { return getToken(OpenGaussStatementParser.ACTION, 0); }
		public TerminalNode ADD() { return getToken(OpenGaussStatementParser.ADD, 0); }
		public TerminalNode ADMIN() { return getToken(OpenGaussStatementParser.ADMIN, 0); }
		public TerminalNode AFTER() { return getToken(OpenGaussStatementParser.AFTER, 0); }
		public TerminalNode AGGREGATE() { return getToken(OpenGaussStatementParser.AGGREGATE, 0); }
		public TerminalNode ALSO() { return getToken(OpenGaussStatementParser.ALSO, 0); }
		public TerminalNode ALTER() { return getToken(OpenGaussStatementParser.ALTER, 0); }
		public TerminalNode ALWAYS() { return getToken(OpenGaussStatementParser.ALWAYS, 0); }
		public TerminalNode ASSERTION() { return getToken(OpenGaussStatementParser.ASSERTION, 0); }
		public TerminalNode ASSIGNMENT() { return getToken(OpenGaussStatementParser.ASSIGNMENT, 0); }
		public TerminalNode AT() { return getToken(OpenGaussStatementParser.AT, 0); }
		public TerminalNode ATTACH() { return getToken(OpenGaussStatementParser.ATTACH, 0); }
		public TerminalNode ATTRIBUTE() { return getToken(OpenGaussStatementParser.ATTRIBUTE, 0); }
		public TerminalNode BACKWARD() { return getToken(OpenGaussStatementParser.BACKWARD, 0); }
		public TerminalNode BEFORE() { return getToken(OpenGaussStatementParser.BEFORE, 0); }
		public TerminalNode BEGIN() { return getToken(OpenGaussStatementParser.BEGIN, 0); }
		public TerminalNode BY() { return getToken(OpenGaussStatementParser.BY, 0); }
		public TerminalNode BYTEA() { return getToken(OpenGaussStatementParser.BYTEA, 0); }
		public TerminalNode BOX() { return getToken(OpenGaussStatementParser.BOX, 0); }
		public TerminalNode CACHE() { return getToken(OpenGaussStatementParser.CACHE, 0); }
		public TerminalNode CALL() { return getToken(OpenGaussStatementParser.CALL, 0); }
		public TerminalNode CALLED() { return getToken(OpenGaussStatementParser.CALLED, 0); }
		public TerminalNode CASCADE() { return getToken(OpenGaussStatementParser.CASCADE, 0); }
		public TerminalNode CASCADED() { return getToken(OpenGaussStatementParser.CASCADED, 0); }
		public TerminalNode CATALOG() { return getToken(OpenGaussStatementParser.CATALOG, 0); }
		public TerminalNode CHAIN() { return getToken(OpenGaussStatementParser.CHAIN, 0); }
		public TerminalNode CHARACTERISTICS() { return getToken(OpenGaussStatementParser.CHARACTERISTICS, 0); }
		public TerminalNode CHECKPOINT() { return getToken(OpenGaussStatementParser.CHECKPOINT, 0); }
		public TerminalNode CLASS() { return getToken(OpenGaussStatementParser.CLASS, 0); }
		public TerminalNode CLOSE() { return getToken(OpenGaussStatementParser.CLOSE, 0); }
		public TerminalNode CLUSTER() { return getToken(OpenGaussStatementParser.CLUSTER, 0); }
		public TerminalNode COLUMNS() { return getToken(OpenGaussStatementParser.COLUMNS, 0); }
		public TerminalNode COMMENT() { return getToken(OpenGaussStatementParser.COMMENT, 0); }
		public TerminalNode COMMENTS() { return getToken(OpenGaussStatementParser.COMMENTS, 0); }
		public TerminalNode COMMIT() { return getToken(OpenGaussStatementParser.COMMIT, 0); }
		public TerminalNode COMMITTED() { return getToken(OpenGaussStatementParser.COMMITTED, 0); }
		public TerminalNode CONFIGURATION() { return getToken(OpenGaussStatementParser.CONFIGURATION, 0); }
		public TerminalNode CONFLICT() { return getToken(OpenGaussStatementParser.CONFLICT, 0); }
		public TerminalNode CONNECTION() { return getToken(OpenGaussStatementParser.CONNECTION, 0); }
		public TerminalNode CONSTRAINTS() { return getToken(OpenGaussStatementParser.CONSTRAINTS, 0); }
		public TerminalNode CONTENT() { return getToken(OpenGaussStatementParser.CONTENT, 0); }
		public TerminalNode CONTINUE() { return getToken(OpenGaussStatementParser.CONTINUE, 0); }
		public TerminalNode CONVERSION() { return getToken(OpenGaussStatementParser.CONVERSION, 0); }
		public TerminalNode COPY() { return getToken(OpenGaussStatementParser.COPY, 0); }
		public TerminalNode COST() { return getToken(OpenGaussStatementParser.COST, 0); }
		public TerminalNode CSV() { return getToken(OpenGaussStatementParser.CSV, 0); }
		public TerminalNode CUBE() { return getToken(OpenGaussStatementParser.CUBE, 0); }
		public TerminalNode CURRENT() { return getToken(OpenGaussStatementParser.CURRENT, 0); }
		public TerminalNode CURSOR() { return getToken(OpenGaussStatementParser.CURSOR, 0); }
		public TerminalNode CYCLE() { return getToken(OpenGaussStatementParser.CYCLE, 0); }
		public TerminalNode CIRCLE() { return getToken(OpenGaussStatementParser.CIRCLE, 0); }
		public TerminalNode DATA() { return getToken(OpenGaussStatementParser.DATA, 0); }
		public TerminalNode DATABASE() { return getToken(OpenGaussStatementParser.DATABASE, 0); }
		public TerminalNode DAY() { return getToken(OpenGaussStatementParser.DAY, 0); }
		public TerminalNode DEALLOCATE() { return getToken(OpenGaussStatementParser.DEALLOCATE, 0); }
		public TerminalNode DECLARE() { return getToken(OpenGaussStatementParser.DECLARE, 0); }
		public TerminalNode DEFAULTS() { return getToken(OpenGaussStatementParser.DEFAULTS, 0); }
		public TerminalNode DEFERRED() { return getToken(OpenGaussStatementParser.DEFERRED, 0); }
		public TerminalNode DEFINER() { return getToken(OpenGaussStatementParser.DEFINER, 0); }
		public TerminalNode DELETE() { return getToken(OpenGaussStatementParser.DELETE, 0); }
		public TerminalNode DELIMITER() { return getToken(OpenGaussStatementParser.DELIMITER, 0); }
		public TerminalNode DELIMITERS() { return getToken(OpenGaussStatementParser.DELIMITERS, 0); }
		public TerminalNode DEPENDS() { return getToken(OpenGaussStatementParser.DEPENDS, 0); }
		public TerminalNode DETACH() { return getToken(OpenGaussStatementParser.DETACH, 0); }
		public TerminalNode DICTIONARY() { return getToken(OpenGaussStatementParser.DICTIONARY, 0); }
		public TerminalNode DISABLE() { return getToken(OpenGaussStatementParser.DISABLE, 0); }
		public TerminalNode DISCARD() { return getToken(OpenGaussStatementParser.DISCARD, 0); }
		public TerminalNode DOCUMENT() { return getToken(OpenGaussStatementParser.DOCUMENT, 0); }
		public TerminalNode DOMAIN() { return getToken(OpenGaussStatementParser.DOMAIN, 0); }
		public TerminalNode DOUBLE() { return getToken(OpenGaussStatementParser.DOUBLE, 0); }
		public TerminalNode DROP() { return getToken(OpenGaussStatementParser.DROP, 0); }
		public TerminalNode EACH() { return getToken(OpenGaussStatementParser.EACH, 0); }
		public TerminalNode ENABLE() { return getToken(OpenGaussStatementParser.ENABLE, 0); }
		public TerminalNode ENCODING() { return getToken(OpenGaussStatementParser.ENCODING, 0); }
		public TerminalNode ENCRYPTED() { return getToken(OpenGaussStatementParser.ENCRYPTED, 0); }
		public TerminalNode ENUM() { return getToken(OpenGaussStatementParser.ENUM, 0); }
		public TerminalNode ESCAPE() { return getToken(OpenGaussStatementParser.ESCAPE, 0); }
		public TerminalNode EVENT() { return getToken(OpenGaussStatementParser.EVENT, 0); }
		public TerminalNode EXCLUDE() { return getToken(OpenGaussStatementParser.EXCLUDE, 0); }
		public TerminalNode EXCLUDING() { return getToken(OpenGaussStatementParser.EXCLUDING, 0); }
		public TerminalNode EXCLUSIVE() { return getToken(OpenGaussStatementParser.EXCLUSIVE, 0); }
		public TerminalNode EXECUTE() { return getToken(OpenGaussStatementParser.EXECUTE, 0); }
		public TerminalNode EXPLAIN() { return getToken(OpenGaussStatementParser.EXPLAIN, 0); }
		public TerminalNode EXPRESSION() { return getToken(OpenGaussStatementParser.EXPRESSION, 0); }
		public TerminalNode EXTENDED() { return getToken(OpenGaussStatementParser.EXTENDED, 0); }
		public TerminalNode EXTENSION() { return getToken(OpenGaussStatementParser.EXTENSION, 0); }
		public TerminalNode EXTERNAL() { return getToken(OpenGaussStatementParser.EXTERNAL, 0); }
		public TerminalNode FAMILY() { return getToken(OpenGaussStatementParser.FAMILY, 0); }
		public TerminalNode FILTER() { return getToken(OpenGaussStatementParser.FILTER, 0); }
		public TerminalNode FIRST() { return getToken(OpenGaussStatementParser.FIRST, 0); }
		public TerminalNode FOLLOWING() { return getToken(OpenGaussStatementParser.FOLLOWING, 0); }
		public TerminalNode FORCE() { return getToken(OpenGaussStatementParser.FORCE, 0); }
		public TerminalNode FORWARD() { return getToken(OpenGaussStatementParser.FORWARD, 0); }
		public TerminalNode FUNCTION() { return getToken(OpenGaussStatementParser.FUNCTION, 0); }
		public TerminalNode FUNCTIONS() { return getToken(OpenGaussStatementParser.FUNCTIONS, 0); }
		public TerminalNode GENERATED() { return getToken(OpenGaussStatementParser.GENERATED, 0); }
		public TerminalNode GLOBAL() { return getToken(OpenGaussStatementParser.GLOBAL, 0); }
		public TerminalNode GRANTED() { return getToken(OpenGaussStatementParser.GRANTED, 0); }
		public TerminalNode GROUPS() { return getToken(OpenGaussStatementParser.GROUPS, 0); }
		public TerminalNode HANDLER() { return getToken(OpenGaussStatementParser.HANDLER, 0); }
		public TerminalNode HEADER() { return getToken(OpenGaussStatementParser.HEADER, 0); }
		public TerminalNode HOLD() { return getToken(OpenGaussStatementParser.HOLD, 0); }
		public TerminalNode HOUR() { return getToken(OpenGaussStatementParser.HOUR, 0); }
		public TerminalNode IDENTITY() { return getToken(OpenGaussStatementParser.IDENTITY, 0); }
		public TerminalNode IF() { return getToken(OpenGaussStatementParser.IF, 0); }
		public TerminalNode IMMEDIATE() { return getToken(OpenGaussStatementParser.IMMEDIATE, 0); }
		public TerminalNode IMMUTABLE() { return getToken(OpenGaussStatementParser.IMMUTABLE, 0); }
		public TerminalNode IMPLICIT() { return getToken(OpenGaussStatementParser.IMPLICIT, 0); }
		public TerminalNode IMPORT() { return getToken(OpenGaussStatementParser.IMPORT, 0); }
		public TerminalNode INCLUDE() { return getToken(OpenGaussStatementParser.INCLUDE, 0); }
		public TerminalNode INCLUDING() { return getToken(OpenGaussStatementParser.INCLUDING, 0); }
		public TerminalNode INCREMENT() { return getToken(OpenGaussStatementParser.INCREMENT, 0); }
		public TerminalNode INDEX() { return getToken(OpenGaussStatementParser.INDEX, 0); }
		public TerminalNode INDEXES() { return getToken(OpenGaussStatementParser.INDEXES, 0); }
		public TerminalNode INHERIT() { return getToken(OpenGaussStatementParser.INHERIT, 0); }
		public TerminalNode INHERITS() { return getToken(OpenGaussStatementParser.INHERITS, 0); }
		public TerminalNode INLINE() { return getToken(OpenGaussStatementParser.INLINE, 0); }
		public TerminalNode INPUT() { return getToken(OpenGaussStatementParser.INPUT, 0); }
		public TerminalNode INSENSITIVE() { return getToken(OpenGaussStatementParser.INSENSITIVE, 0); }
		public TerminalNode INSERT() { return getToken(OpenGaussStatementParser.INSERT, 0); }
		public TerminalNode INSTEAD() { return getToken(OpenGaussStatementParser.INSTEAD, 0); }
		public TerminalNode INVOKER() { return getToken(OpenGaussStatementParser.INVOKER, 0); }
		public TerminalNode INTERVAL() { return getToken(OpenGaussStatementParser.INTERVAL, 0); }
		public TerminalNode ISOLATION() { return getToken(OpenGaussStatementParser.ISOLATION, 0); }
		public TerminalNode KEY() { return getToken(OpenGaussStatementParser.KEY, 0); }
		public TerminalNode LABEL() { return getToken(OpenGaussStatementParser.LABEL, 0); }
		public TerminalNode LANGUAGE() { return getToken(OpenGaussStatementParser.LANGUAGE, 0); }
		public TerminalNode LARGE() { return getToken(OpenGaussStatementParser.LARGE, 0); }
		public TerminalNode LAST() { return getToken(OpenGaussStatementParser.LAST, 0); }
		public TerminalNode LEAKPROOF() { return getToken(OpenGaussStatementParser.LEAKPROOF, 0); }
		public TerminalNode LEVEL() { return getToken(OpenGaussStatementParser.LEVEL, 0); }
		public TerminalNode LISTEN() { return getToken(OpenGaussStatementParser.LISTEN, 0); }
		public TerminalNode LOAD() { return getToken(OpenGaussStatementParser.LOAD, 0); }
		public TerminalNode LOCAL() { return getToken(OpenGaussStatementParser.LOCAL, 0); }
		public TerminalNode LOCATION() { return getToken(OpenGaussStatementParser.LOCATION, 0); }
		public TerminalNode LOCK() { return getToken(OpenGaussStatementParser.LOCK, 0); }
		public TerminalNode LOCKED() { return getToken(OpenGaussStatementParser.LOCKED, 0); }
		public TerminalNode LOGGED() { return getToken(OpenGaussStatementParser.LOGGED, 0); }
		public TerminalNode LSEG() { return getToken(OpenGaussStatementParser.LSEG, 0); }
		public TerminalNode MAIN() { return getToken(OpenGaussStatementParser.MAIN, 0); }
		public TerminalNode MAPPING() { return getToken(OpenGaussStatementParser.MAPPING, 0); }
		public TerminalNode MATCH() { return getToken(OpenGaussStatementParser.MATCH, 0); }
		public TerminalNode MATERIALIZED() { return getToken(OpenGaussStatementParser.MATERIALIZED, 0); }
		public TerminalNode MAXVALUE() { return getToken(OpenGaussStatementParser.MAXVALUE, 0); }
		public TerminalNode METHOD() { return getToken(OpenGaussStatementParser.METHOD, 0); }
		public TerminalNode MINUTE() { return getToken(OpenGaussStatementParser.MINUTE, 0); }
		public TerminalNode MINVALUE() { return getToken(OpenGaussStatementParser.MINVALUE, 0); }
		public TerminalNode MODE() { return getToken(OpenGaussStatementParser.MODE, 0); }
		public TerminalNode MONTH() { return getToken(OpenGaussStatementParser.MONTH, 0); }
		public TerminalNode MOVE() { return getToken(OpenGaussStatementParser.MOVE, 0); }
		public TerminalNode MOD() { return getToken(OpenGaussStatementParser.MOD, 0); }
		public TerminalNode NAME() { return getToken(OpenGaussStatementParser.NAME, 0); }
		public TerminalNode NAMES() { return getToken(OpenGaussStatementParser.NAMES, 0); }
		public TerminalNode NATIONAL() { return getToken(OpenGaussStatementParser.NATIONAL, 0); }
		public TerminalNode NEW() { return getToken(OpenGaussStatementParser.NEW, 0); }
		public TerminalNode NEXT() { return getToken(OpenGaussStatementParser.NEXT, 0); }
		public TerminalNode NFC() { return getToken(OpenGaussStatementParser.NFC, 0); }
		public TerminalNode NFD() { return getToken(OpenGaussStatementParser.NFD, 0); }
		public TerminalNode NFKC() { return getToken(OpenGaussStatementParser.NFKC, 0); }
		public TerminalNode NFKD() { return getToken(OpenGaussStatementParser.NFKD, 0); }
		public TerminalNode NO() { return getToken(OpenGaussStatementParser.NO, 0); }
		public TerminalNode NORMALIZED() { return getToken(OpenGaussStatementParser.NORMALIZED, 0); }
		public TerminalNode NOTHING() { return getToken(OpenGaussStatementParser.NOTHING, 0); }
		public TerminalNode NOTIFY() { return getToken(OpenGaussStatementParser.NOTIFY, 0); }
		public TerminalNode NOWAIT() { return getToken(OpenGaussStatementParser.NOWAIT, 0); }
		public TerminalNode NULLS() { return getToken(OpenGaussStatementParser.NULLS, 0); }
		public TerminalNode OBJECT() { return getToken(OpenGaussStatementParser.OBJECT, 0); }
		public TerminalNode OF() { return getToken(OpenGaussStatementParser.OF, 0); }
		public TerminalNode OFF() { return getToken(OpenGaussStatementParser.OFF, 0); }
		public TerminalNode OIDS() { return getToken(OpenGaussStatementParser.OIDS, 0); }
		public TerminalNode OLD() { return getToken(OpenGaussStatementParser.OLD, 0); }
		public TerminalNode OPERATOR() { return getToken(OpenGaussStatementParser.OPERATOR, 0); }
		public TerminalNode OPTION() { return getToken(OpenGaussStatementParser.OPTION, 0); }
		public TerminalNode OPTIONS() { return getToken(OpenGaussStatementParser.OPTIONS, 0); }
		public TerminalNode ORDINALITY() { return getToken(OpenGaussStatementParser.ORDINALITY, 0); }
		public TerminalNode OTHERS() { return getToken(OpenGaussStatementParser.OTHERS, 0); }
		public TerminalNode OVER() { return getToken(OpenGaussStatementParser.OVER, 0); }
		public TerminalNode OVERRIDING() { return getToken(OpenGaussStatementParser.OVERRIDING, 0); }
		public TerminalNode OWNED() { return getToken(OpenGaussStatementParser.OWNED, 0); }
		public TerminalNode OWNER() { return getToken(OpenGaussStatementParser.OWNER, 0); }
		public TerminalNode PARALLEL() { return getToken(OpenGaussStatementParser.PARALLEL, 0); }
		public TerminalNode PARSER() { return getToken(OpenGaussStatementParser.PARSER, 0); }
		public TerminalNode PARTIAL() { return getToken(OpenGaussStatementParser.PARTIAL, 0); }
		public TerminalNode PARTITION() { return getToken(OpenGaussStatementParser.PARTITION, 0); }
		public TerminalNode PASSING() { return getToken(OpenGaussStatementParser.PASSING, 0); }
		public TerminalNode PASSWORD() { return getToken(OpenGaussStatementParser.PASSWORD, 0); }
		public TerminalNode PATH() { return getToken(OpenGaussStatementParser.PATH, 0); }
		public TerminalNode PLAIN() { return getToken(OpenGaussStatementParser.PLAIN, 0); }
		public TerminalNode PLANS() { return getToken(OpenGaussStatementParser.PLANS, 0); }
		public TerminalNode POLICY() { return getToken(OpenGaussStatementParser.POLICY, 0); }
		public TerminalNode POINT() { return getToken(OpenGaussStatementParser.POINT, 0); }
		public TerminalNode POLYGON() { return getToken(OpenGaussStatementParser.POLYGON, 0); }
		public TerminalNode PRECEDING() { return getToken(OpenGaussStatementParser.PRECEDING, 0); }
		public TerminalNode PREPARE() { return getToken(OpenGaussStatementParser.PREPARE, 0); }
		public TerminalNode PREPARED() { return getToken(OpenGaussStatementParser.PREPARED, 0); }
		public TerminalNode PRESERVE() { return getToken(OpenGaussStatementParser.PRESERVE, 0); }
		public TerminalNode PRIOR() { return getToken(OpenGaussStatementParser.PRIOR, 0); }
		public TerminalNode PRIVILEGES() { return getToken(OpenGaussStatementParser.PRIVILEGES, 0); }
		public TerminalNode PROCEDURAL() { return getToken(OpenGaussStatementParser.PROCEDURAL, 0); }
		public TerminalNode PROCEDURE() { return getToken(OpenGaussStatementParser.PROCEDURE, 0); }
		public TerminalNode PROCEDURES() { return getToken(OpenGaussStatementParser.PROCEDURES, 0); }
		public TerminalNode PROGRAM() { return getToken(OpenGaussStatementParser.PROGRAM, 0); }
		public TerminalNode PUBLICATION() { return getToken(OpenGaussStatementParser.PUBLICATION, 0); }
		public TerminalNode QUOTE() { return getToken(OpenGaussStatementParser.QUOTE, 0); }
		public TerminalNode RANGE() { return getToken(OpenGaussStatementParser.RANGE, 0); }
		public TerminalNode READ() { return getToken(OpenGaussStatementParser.READ, 0); }
		public TerminalNode REASSIGN() { return getToken(OpenGaussStatementParser.REASSIGN, 0); }
		public TerminalNode RECHECK() { return getToken(OpenGaussStatementParser.RECHECK, 0); }
		public TerminalNode RECURSIVE() { return getToken(OpenGaussStatementParser.RECURSIVE, 0); }
		public TerminalNode REF() { return getToken(OpenGaussStatementParser.REF, 0); }
		public TerminalNode REFERENCING() { return getToken(OpenGaussStatementParser.REFERENCING, 0); }
		public TerminalNode REFRESH() { return getToken(OpenGaussStatementParser.REFRESH, 0); }
		public TerminalNode REINDEX() { return getToken(OpenGaussStatementParser.REINDEX, 0); }
		public TerminalNode RELATIVE() { return getToken(OpenGaussStatementParser.RELATIVE, 0); }
		public TerminalNode RELEASE() { return getToken(OpenGaussStatementParser.RELEASE, 0); }
		public TerminalNode RENAME() { return getToken(OpenGaussStatementParser.RENAME, 0); }
		public TerminalNode REPEATABLE() { return getToken(OpenGaussStatementParser.REPEATABLE, 0); }
		public TerminalNode REPLACE() { return getToken(OpenGaussStatementParser.REPLACE, 0); }
		public TerminalNode REPLICA() { return getToken(OpenGaussStatementParser.REPLICA, 0); }
		public TerminalNode RESET() { return getToken(OpenGaussStatementParser.RESET, 0); }
		public TerminalNode RESTART() { return getToken(OpenGaussStatementParser.RESTART, 0); }
		public TerminalNode RESTRICT() { return getToken(OpenGaussStatementParser.RESTRICT, 0); }
		public TerminalNode RETURNS() { return getToken(OpenGaussStatementParser.RETURNS, 0); }
		public TerminalNode REVOKE() { return getToken(OpenGaussStatementParser.REVOKE, 0); }
		public TerminalNode ROLE() { return getToken(OpenGaussStatementParser.ROLE, 0); }
		public TerminalNode ROLLBACK() { return getToken(OpenGaussStatementParser.ROLLBACK, 0); }
		public TerminalNode ROLLUP() { return getToken(OpenGaussStatementParser.ROLLUP, 0); }
		public TerminalNode ROUTINE() { return getToken(OpenGaussStatementParser.ROUTINE, 0); }
		public TerminalNode ROUTINES() { return getToken(OpenGaussStatementParser.ROUTINES, 0); }
		public TerminalNode ROWS() { return getToken(OpenGaussStatementParser.ROWS, 0); }
		public TerminalNode RULE() { return getToken(OpenGaussStatementParser.RULE, 0); }
		public TerminalNode SAVEPOINT() { return getToken(OpenGaussStatementParser.SAVEPOINT, 0); }
		public TerminalNode SCHEMA() { return getToken(OpenGaussStatementParser.SCHEMA, 0); }
		public TerminalNode SCHEMAS() { return getToken(OpenGaussStatementParser.SCHEMAS, 0); }
		public TerminalNode SCROLL() { return getToken(OpenGaussStatementParser.SCROLL, 0); }
		public TerminalNode SEARCH() { return getToken(OpenGaussStatementParser.SEARCH, 0); }
		public TerminalNode SECOND() { return getToken(OpenGaussStatementParser.SECOND, 0); }
		public TerminalNode SECURITY() { return getToken(OpenGaussStatementParser.SECURITY, 0); }
		public TerminalNode SEQUENCE() { return getToken(OpenGaussStatementParser.SEQUENCE, 0); }
		public TerminalNode SEQUENCES() { return getToken(OpenGaussStatementParser.SEQUENCES, 0); }
		public TerminalNode SERIALIZABLE() { return getToken(OpenGaussStatementParser.SERIALIZABLE, 0); }
		public TerminalNode SERVER() { return getToken(OpenGaussStatementParser.SERVER, 0); }
		public TerminalNode SESSION() { return getToken(OpenGaussStatementParser.SESSION, 0); }
		public TerminalNode SET() { return getToken(OpenGaussStatementParser.SET, 0); }
		public TerminalNode SETS() { return getToken(OpenGaussStatementParser.SETS, 0); }
		public TerminalNode SHARE() { return getToken(OpenGaussStatementParser.SHARE, 0); }
		public TerminalNode SHOW() { return getToken(OpenGaussStatementParser.SHOW, 0); }
		public TerminalNode SIMPLE() { return getToken(OpenGaussStatementParser.SIMPLE, 0); }
		public TerminalNode SNAPSHOT() { return getToken(OpenGaussStatementParser.SNAPSHOT, 0); }
		public TerminalNode SQL() { return getToken(OpenGaussStatementParser.SQL, 0); }
		public TerminalNode STABLE() { return getToken(OpenGaussStatementParser.STABLE, 0); }
		public TerminalNode STANDALONE() { return getToken(OpenGaussStatementParser.STANDALONE, 0); }
		public TerminalNode START() { return getToken(OpenGaussStatementParser.START, 0); }
		public TerminalNode STATEMENT() { return getToken(OpenGaussStatementParser.STATEMENT, 0); }
		public TerminalNode STATISTICS() { return getToken(OpenGaussStatementParser.STATISTICS, 0); }
		public TerminalNode STDIN() { return getToken(OpenGaussStatementParser.STDIN, 0); }
		public TerminalNode STDOUT() { return getToken(OpenGaussStatementParser.STDOUT, 0); }
		public TerminalNode STORAGE() { return getToken(OpenGaussStatementParser.STORAGE, 0); }
		public TerminalNode STORED() { return getToken(OpenGaussStatementParser.STORED, 0); }
		public TerminalNode STRICT() { return getToken(OpenGaussStatementParser.STRICT, 0); }
		public TerminalNode STRIP() { return getToken(OpenGaussStatementParser.STRIP, 0); }
		public TerminalNode SUBSCRIPTION() { return getToken(OpenGaussStatementParser.SUBSCRIPTION, 0); }
		public TerminalNode SUPPORT() { return getToken(OpenGaussStatementParser.SUPPORT, 0); }
		public TerminalNode SYSID() { return getToken(OpenGaussStatementParser.SYSID, 0); }
		public TerminalNode SYSTEM() { return getToken(OpenGaussStatementParser.SYSTEM, 0); }
		public TerminalNode TABLES() { return getToken(OpenGaussStatementParser.TABLES, 0); }
		public TerminalNode TABLESPACE() { return getToken(OpenGaussStatementParser.TABLESPACE, 0); }
		public TerminalNode TEMP() { return getToken(OpenGaussStatementParser.TEMP, 0); }
		public TerminalNode TEMPLATE() { return getToken(OpenGaussStatementParser.TEMPLATE, 0); }
		public TerminalNode TEMPORARY() { return getToken(OpenGaussStatementParser.TEMPORARY, 0); }
		public TerminalNode TEXT() { return getToken(OpenGaussStatementParser.TEXT, 0); }
		public TerminalNode TIES() { return getToken(OpenGaussStatementParser.TIES, 0); }
		public TerminalNode TRANSACTION() { return getToken(OpenGaussStatementParser.TRANSACTION, 0); }
		public TerminalNode TRANSFORM() { return getToken(OpenGaussStatementParser.TRANSFORM, 0); }
		public TerminalNode TRIGGER() { return getToken(OpenGaussStatementParser.TRIGGER, 0); }
		public TerminalNode TRUNCATE() { return getToken(OpenGaussStatementParser.TRUNCATE, 0); }
		public TerminalNode TRUSTED() { return getToken(OpenGaussStatementParser.TRUSTED, 0); }
		public TerminalNode TYPE() { return getToken(OpenGaussStatementParser.TYPE, 0); }
		public TerminalNode TYPES() { return getToken(OpenGaussStatementParser.TYPES, 0); }
		public TerminalNode TIME() { return getToken(OpenGaussStatementParser.TIME, 0); }
		public TerminalNode TIMESTAMP() { return getToken(OpenGaussStatementParser.TIMESTAMP, 0); }
		public TerminalNode UESCAPE() { return getToken(OpenGaussStatementParser.UESCAPE, 0); }
		public TerminalNode UNBOUNDED() { return getToken(OpenGaussStatementParser.UNBOUNDED, 0); }
		public TerminalNode UNCOMMITTED() { return getToken(OpenGaussStatementParser.UNCOMMITTED, 0); }
		public TerminalNode UNENCRYPTED() { return getToken(OpenGaussStatementParser.UNENCRYPTED, 0); }
		public TerminalNode UNKNOWN() { return getToken(OpenGaussStatementParser.UNKNOWN, 0); }
		public TerminalNode UNLISTEN() { return getToken(OpenGaussStatementParser.UNLISTEN, 0); }
		public TerminalNode UNLOGGED() { return getToken(OpenGaussStatementParser.UNLOGGED, 0); }
		public TerminalNode UNTIL() { return getToken(OpenGaussStatementParser.UNTIL, 0); }
		public TerminalNode UPDATE() { return getToken(OpenGaussStatementParser.UPDATE, 0); }
		public TerminalNode VACUUM() { return getToken(OpenGaussStatementParser.VACUUM, 0); }
		public TerminalNode VALID() { return getToken(OpenGaussStatementParser.VALID, 0); }
		public TerminalNode VALIDATE() { return getToken(OpenGaussStatementParser.VALIDATE, 0); }
		public TerminalNode VALIDATOR() { return getToken(OpenGaussStatementParser.VALIDATOR, 0); }
		public TerminalNode VALUE() { return getToken(OpenGaussStatementParser.VALUE, 0); }
		public TerminalNode VARYING() { return getToken(OpenGaussStatementParser.VARYING, 0); }
		public TerminalNode VERSION() { return getToken(OpenGaussStatementParser.VERSION, 0); }
		public TerminalNode VIEW() { return getToken(OpenGaussStatementParser.VIEW, 0); }
		public TerminalNode VIEWS() { return getToken(OpenGaussStatementParser.VIEWS, 0); }
		public TerminalNode VOLATILE() { return getToken(OpenGaussStatementParser.VOLATILE, 0); }
		public TerminalNode WHITESPACE() { return getToken(OpenGaussStatementParser.WHITESPACE, 0); }
		public TerminalNode WITHIN() { return getToken(OpenGaussStatementParser.WITHIN, 0); }
		public TerminalNode WITHOUT() { return getToken(OpenGaussStatementParser.WITHOUT, 0); }
		public TerminalNode WORK() { return getToken(OpenGaussStatementParser.WORK, 0); }
		public TerminalNode WRAPPER() { return getToken(OpenGaussStatementParser.WRAPPER, 0); }
		public TerminalNode WRITE() { return getToken(OpenGaussStatementParser.WRITE, 0); }
		public TerminalNode XML() { return getToken(OpenGaussStatementParser.XML, 0); }
		public TerminalNode YEAR() { return getToken(OpenGaussStatementParser.YEAR, 0); }
		public TerminalNode YES() { return getToken(OpenGaussStatementParser.YES, 0); }
		public TerminalNode ZONE() { return getToken(OpenGaussStatementParser.ZONE, 0); }
		public TerminalNode JSON() { return getToken(OpenGaussStatementParser.JSON, 0); }
		public TerminalNode POSITION() { return getToken(OpenGaussStatementParser.POSITION, 0); }
		public TerminalNode INET() { return getToken(OpenGaussStatementParser.INET, 0); }
		public TerminalNode INT1() { return getToken(OpenGaussStatementParser.INT1, 0); }
		public TerminalNode INT2() { return getToken(OpenGaussStatementParser.INT2, 0); }
		public TerminalNode INT4() { return getToken(OpenGaussStatementParser.INT4, 0); }
		public TerminalNode INT16() { return getToken(OpenGaussStatementParser.INT16, 0); }
		public TerminalNode FLOAT4() { return getToken(OpenGaussStatementParser.FLOAT4, 0); }
		public TerminalNode ELEM_CONTAINED_BY_RANGE() { return getToken(OpenGaussStatementParser.ELEM_CONTAINED_BY_RANGE, 0); }
		public TerminalNode INT8RANGE() { return getToken(OpenGaussStatementParser.INT8RANGE, 0); }
		public TerminalNode INT4RANGE() { return getToken(OpenGaussStatementParser.INT4RANGE, 0); }
		public TerminalNode NUMRANGE() { return getToken(OpenGaussStatementParser.NUMRANGE, 0); }
		public TerminalNode DATERANGE() { return getToken(OpenGaussStatementParser.DATERANGE, 0); }
		public TerminalNode TSQUERY() { return getToken(OpenGaussStatementParser.TSQUERY, 0); }
		public UnreservedWordContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_unreservedWord; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitUnreservedWord(this);
			else return visitor.visitChildren(this);
		}
	}

	public final UnreservedWordContext unreservedWord() throws RecognitionException {
		UnreservedWordContext _localctx = new UnreservedWordContext(_ctx, getState());
		enterRule(_localctx, 238, RULE_unreservedWord);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2794);
			_la = _input.LA(1);
			if ( !(((((_la - 81)) & ~0x3f) == 0 && ((1L << (_la - 81)) & ((1L << (INSERT - 81)) | (1L << (UPDATE - 81)) | (1L << (DELETE - 81)) | (1L << (ALTER - 81)) | (1L << (DROP - 81)) | (1L << (TRUNCATE - 81)) | (1L << (SCHEMA - 81)) | (1L << (REVOKE - 81)) | (1L << (ADD - 81)) | (1L << (SET - 81)) | (1L << (INDEX - 81)) | (1L << (KEY - 81)) | (1L << (POSITION - 81)) | (1L << (FUNCTION - 81)) | (1L << (TRIGGER - 81)) | (1L << (PROCEDURE - 81)) | (1L << (VIEW - 81)) | (1L << (IF - 81)))) != 0) || ((((_la - 151)) & ~0x3f) == 0 && ((1L << (_la - 151)) & ((1L << (BY - 151)) | (1L << (BEGIN - 151)) | (1L << (COMMIT - 151)) | (1L << (ROLLBACK - 151)) | (1L << (SAVEPOINT - 151)) | (1L << (DOUBLE - 151)) | (1L << (INTERVAL - 151)) | (1L << (TIME - 151)) | (1L << (TIMESTAMP - 151)) | (1L << (YEAR - 151)) | (1L << (MONTH - 151)) | (1L << (DAY - 151)) | (1L << (HOUR - 151)) | (1L << (MINUTE - 151)) | (1L << (SECOND - 151)) | (1L << (CURRENT - 151)) | (1L << (ENABLE - 151)) | (1L << (DISABLE - 151)) | (1L << (CALL - 151)) | (1L << (PRESERVE - 151)) | (1L << (DEFINER - 151)) | (1L << (SQL - 151)) | (1L << (CASCADED - 151)) | (1L << (LOCAL - 151)) | (1L << (CLOSE - 151)) | (1L << (NEXT - 151)) | (1L << (NAME - 151)) | (1L << (NAMES - 151)) | (1L << (TYPE - 151)) | (1L << (TEXT - 151)) | (1L << (REPEATABLE - 151)) | (1L << (VARYING - 151)) | (1L << (NATIONAL - 151)))) != 0) || ((((_la - 216)) & ~0x3f) == 0 && ((1L << (_la - 216)) & ((1L << (VALUE - 216)) | (1L << (TIES - 216)) | (1L << (CUBE - 216)) | (1L << (SETS - 216)) | (1L << (OTHERS - 216)) | (1L << (AT - 216)) | (1L << (MAXVALUE - 216)) | (1L << (ADMIN - 216)) | (1L << (ESCAPE - 216)) | (1L << (EXCLUDE - 216)) | (1L << (MOD - 216)) | (1L << (PARTITION - 216)) | (1L << (UNKNOWN - 216)) | (1L << (ALWAYS - 216)) | (1L << (CASCADE - 216)) | (1L << (GENERATED - 216)) | (1L << (ISOLATION - 216)) | (1L << (LEVEL - 216)) | (1L << (NO - 216)) | (1L << (OPTION - 216)) | (1L << (PRIVILEGES - 216)) | (1L << (READ - 216)) | (1L << (ROLE - 216)) | (1L << (ROWS - 216)) | (1L << (START - 216)) | (1L << (TRANSACTION - 216)) | (1L << (ACTION - 216)) | (1L << (CACHE - 216)) | (1L << (CHARACTERISTICS - 216)) | (1L << (CLUSTER - 216)) | (1L << (COMMENTS - 216)) | (1L << (CONSTRAINTS - 216)) | (1L << (CYCLE - 216)) | (1L << (DATA - 216)) | (1L << (DATABASE - 216)) | (1L << (DEFAULTS - 216)) | (1L << (DEFERRED - 216)))) != 0) || ((((_la - 280)) & ~0x3f) == 0 && ((1L << (_la - 280)) & ((1L << (DEPENDS - 280)) | (1L << (DOMAIN - 280)) | (1L << (EXCLUDING - 280)) | (1L << (EXECUTE - 280)) | (1L << (EXTENDED - 280)) | (1L << (EXTENSION - 280)) | (1L << (EXTERNAL - 280)) | (1L << (FILTER - 280)) | (1L << (FIRST - 280)) | (1L << (FOLLOWING - 280)) | (1L << (FORCE - 280)) | (1L << (GLOBAL - 280)) | (1L << (IDENTITY - 280)) | (1L << (IMMEDIATE - 280)) | (1L << (INCLUDING - 280)) | (1L << (INCREMENT - 280)) | (1L << (INDEXES - 280)) | (1L << (INHERIT - 280)) | (1L << (INHERITS - 280)) | (1L << (INCLUDE - 280)) | (1L << (LANGUAGE - 280)) | (1L << (LARGE - 280)) | (1L << (LAST - 280)) | (1L << (LOGGED - 280)) | (1L << (MAIN - 280)) | (1L << (MATCH - 280)) | (1L << (MINVALUE - 280)) | (1L << (NOTHING - 280)) | (1L << (NULLS - 280)) | (1L << (OBJECT - 280)) | (1L << (OIDS - 280)) | (1L << (OVER - 280)) | (1L << (OWNED - 280)) | (1L << (OWNER - 280)) | (1L << (PARTIAL - 280)) | (1L << (PLAIN - 280)) | (1L << (PRECEDING - 280)) | (1L << (RANGE - 280)) | (1L << (RENAME - 280)) | (1L << (REPLICA - 280)) | (1L << (RESET - 280)) | (1L << (RESTART - 280)) | (1L << (RESTRICT - 280)) | (1L << (ROUTINE - 280)) | (1L << (RULE - 280)) | (1L << (SECURITY - 280)) | (1L << (SEQUENCE - 280)) | (1L << (SESSION - 280)) | (1L << (SHOW - 280)) | (1L << (SIMPLE - 280)) | (1L << (STATISTICS - 280)) | (1L << (STORAGE - 280)) | (1L << (TABLESPACE - 280)) | (1L << (TEMP - 280)) | (1L << (TEMPORARY - 280)) | (1L << (UNBOUNDED - 280)) | (1L << (UNLOGGED - 280)) | (1L << (VALID - 280)))) != 0) || ((((_la - 344)) & ~0x3f) == 0 && ((1L << (_la - 344)) & ((1L << (VALIDATE - 344)) | (1L << (WITHIN - 344)) | (1L << (WITHOUT - 344)) | (1L << (ZONE - 344)) | (1L << (OF - 344)) | (1L << (UESCAPE - 344)) | (1L << (GROUPS - 344)) | (1L << (RECURSIVE - 344)) | (1L << (INT2 - 344)) | (1L << (INT4 - 344)) | (1L << (FLOAT4 - 344)) | (1L << (BYTEA - 344)) | (1L << (ENUM - 344)) | (1L << (POINT - 344)) | (1L << (LSEG - 344)) | (1L << (BOX - 344)) | (1L << (PATH - 344)) | (1L << (POLYGON - 344)) | (1L << (CIRCLE - 344)) | (1L << (INET - 344)) | (1L << (TSQUERY - 344)) | (1L << (XML - 344)) | (1L << (JSON - 344)) | (1L << (INT4RANGE - 344)) | (1L << (INT8RANGE - 344)) | (1L << (NUMRANGE - 344)) | (1L << (DATERANGE - 344)) | (1L << (ORDINALITY - 344)) | (1L << (NFC - 344)) | (1L << (NFD - 344)) | (1L << (NFKC - 344)))) != 0) || ((((_la - 408)) & ~0x3f) == 0 && ((1L << (_la - 408)) & ((1L << (NFKD - 408)) | (1L << (REF - 408)) | (1L << (PASSING - 408)) | (1L << (VERSION - 408)) | (1L << (YES - 408)) | (1L << (STANDALONE - 408)) | (1L << (MATERIALIZED - 408)) | (1L << (OPERATOR - 408)) | (1L << (SHARE - 408)) | (1L << (ROLLUP - 408)) | (1L << (DOCUMENT - 408)) | (1L << (NORMALIZED - 408)) | (1L << (NOWAIT - 408)) | (1L << (LOCKED - 408)) | (1L << (COLUMNS - 408)) | (1L << (CONTENT - 408)) | (1L << (STRIP - 408)) | (1L << (WHITESPACE - 408)) | (1L << (CONFLICT - 408)) | (1L << (OVERRIDING - 408)) | (1L << (SYSTEM - 408)) | (1L << (ABORT - 408)) | (1L << (ABSOLUTE - 408)) | (1L << (ACCESS - 408)) | (1L << (AFTER - 408)) | (1L << (AGGREGATE - 408)) | (1L << (ALSO - 408)) | (1L << (ATTACH - 408)) | (1L << (ATTRIBUTE - 408)) | (1L << (BACKWARD - 408)) | (1L << (BEFORE - 408)) | (1L << (ASSERTION - 408)) | (1L << (ASSIGNMENT - 408)) | (1L << (CONTINUE - 408)) | (1L << (CONVERSION - 408)) | (1L << (COPY - 408)) | (1L << (COST - 408)) | (1L << (CSV - 408)) | (1L << (CALLED - 408)) | (1L << (CATALOG - 408)) | (1L << (CHAIN - 408)) | (1L << (CHECKPOINT - 408)) | (1L << (CLASS - 408)) | (1L << (CONFIGURATION - 408)) | (1L << (COMMENT - 408)) | (1L << (DETACH - 408)))) != 0) || ((((_la - 472)) & ~0x3f) == 0 && ((1L << (_la - 472)) & ((1L << (DICTIONARY - 472)) | (1L << (EXPRESSION - 472)) | (1L << (INSENSITIVE - 472)) | (1L << (DISCARD - 472)) | (1L << (OFF - 472)) | (1L << (INSTEAD - 472)) | (1L << (EXPLAIN - 472)) | (1L << (INPUT - 472)) | (1L << (INLINE - 472)) | (1L << (PARALLEL - 472)) | (1L << (LEAKPROOF - 472)) | (1L << (COMMITTED - 472)) | (1L << (ENCODING - 472)) | (1L << (IMPLICIT - 472)) | (1L << (DELIMITER - 472)) | (1L << (CURSOR - 472)) | (1L << (EACH - 472)) | (1L << (EVENT - 472)) | (1L << (DEALLOCATE - 472)) | (1L << (CONNECTION - 472)) | (1L << (DECLARE - 472)) | (1L << (FAMILY - 472)) | (1L << (FORWARD - 472)) | (1L << (EXCLUSIVE - 472)) | (1L << (FUNCTIONS - 472)) | (1L << (LOCATION - 472)) | (1L << (LABEL - 472)) | (1L << (DELIMITERS - 472)) | (1L << (HANDLER - 472)) | (1L << (HEADER - 472)) | (1L << (IMMUTABLE - 472)) | (1L << (GRANTED - 472)) | (1L << (HOLD - 472)) | (1L << (MAPPING - 472)) | (1L << (OLD - 472)) | (1L << (METHOD - 472)) | (1L << (LOAD - 472)) | (1L << (LISTEN - 472)) | (1L << (MODE - 472)) | (1L << (MOVE - 472)) | (1L << (PROCEDURAL - 472)) | (1L << (PARSER - 472)) | (1L << (PROCEDURES - 472)) | (1L << (ENCRYPTED - 472)) | (1L << (PUBLICATION - 472)) | (1L << (PROGRAM - 472)) | (1L << (REFERENCING - 472)) | (1L << (PLANS - 472)) | (1L << (REINDEX - 472)) | (1L << (PRIOR - 472)) | (1L << (PASSWORD - 472)) | (1L << (RELATIVE - 472)) | (1L << (QUOTE - 472)) | (1L << (ROUTINES - 472)) | (1L << (REPLACE - 472)) | (1L << (SNAPSHOT - 472)) | (1L << (REFRESH - 472)) | (1L << (PREPARE - 472)) | (1L << (OPTIONS - 472)) | (1L << (IMPORT - 472)) | (1L << (INVOKER - 472)) | (1L << (NEW - 472)) | (1L << (PREPARED - 472)))) != 0) || ((((_la - 536)) & ~0x3f) == 0 && ((1L << (_la - 536)) & ((1L << (SCROLL - 536)) | (1L << (SEQUENCES - 536)) | (1L << (SYSID - 536)) | (1L << (REASSIGN - 536)) | (1L << (SERVER - 536)) | (1L << (SUBSCRIPTION - 536)) | (1L << (SEARCH - 536)) | (1L << (SCHEMAS - 536)) | (1L << (RECHECK - 536)) | (1L << (POLICY - 536)) | (1L << (NOTIFY - 536)) | (1L << (LOCK - 536)) | (1L << (RELEASE - 536)) | (1L << (SERIALIZABLE - 536)) | (1L << (RETURNS - 536)) | (1L << (STATEMENT - 536)) | (1L << (STDIN - 536)) | (1L << (STDOUT - 536)) | (1L << (TABLES - 536)) | (1L << (SUPPORT - 536)) | (1L << (STABLE - 536)) | (1L << (TEMPLATE - 536)) | (1L << (UNENCRYPTED - 536)) | (1L << (VIEWS - 536)) | (1L << (UNCOMMITTED - 536)) | (1L << (TRANSFORM - 536)) | (1L << (UNLISTEN - 536)) | (1L << (TRUSTED - 536)) | (1L << (VALIDATOR - 536)) | (1L << (UNTIL - 536)) | (1L << (VACUUM - 536)) | (1L << (VOLATILE - 536)) | (1L << (STORED - 536)) | (1L << (WRITE - 536)) | (1L << (STRICT - 536)) | (1L << (TYPES - 536)) | (1L << (WRAPPER - 536)) | (1L << (WORK - 536)) | (1L << (INT16 - 536)) | (1L << (INT1 - 536)) | (1L << (ELEM_CONTAINED_BY_RANGE - 536)))) != 0)) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class TypeFuncNameKeywordContext extends ParserRuleContext {
		public TerminalNode AUTHORIZATION() { return getToken(OpenGaussStatementParser.AUTHORIZATION, 0); }
		public TerminalNode BINARY() { return getToken(OpenGaussStatementParser.BINARY, 0); }
		public TerminalNode COLLATION() { return getToken(OpenGaussStatementParser.COLLATION, 0); }
		public TerminalNode CONCURRENTLY() { return getToken(OpenGaussStatementParser.CONCURRENTLY, 0); }
		public TerminalNode CROSS() { return getToken(OpenGaussStatementParser.CROSS, 0); }
		public TerminalNode CURRENT_SCHEMA() { return getToken(OpenGaussStatementParser.CURRENT_SCHEMA, 0); }
		public TerminalNode FREEZE() { return getToken(OpenGaussStatementParser.FREEZE, 0); }
		public TerminalNode FULL() { return getToken(OpenGaussStatementParser.FULL, 0); }
		public TerminalNode ILIKE() { return getToken(OpenGaussStatementParser.ILIKE, 0); }
		public TerminalNode INNER() { return getToken(OpenGaussStatementParser.INNER, 0); }
		public TerminalNode IS() { return getToken(OpenGaussStatementParser.IS, 0); }
		public TerminalNode ISNULL() { return getToken(OpenGaussStatementParser.ISNULL, 0); }
		public TerminalNode JOIN() { return getToken(OpenGaussStatementParser.JOIN, 0); }
		public TerminalNode LEFT() { return getToken(OpenGaussStatementParser.LEFT, 0); }
		public TerminalNode LIKE() { return getToken(OpenGaussStatementParser.LIKE, 0); }
		public TerminalNode NATURAL() { return getToken(OpenGaussStatementParser.NATURAL, 0); }
		public TerminalNode NOTNULL() { return getToken(OpenGaussStatementParser.NOTNULL, 0); }
		public TerminalNode OUTER() { return getToken(OpenGaussStatementParser.OUTER, 0); }
		public TerminalNode OVERLAPS() { return getToken(OpenGaussStatementParser.OVERLAPS, 0); }
		public TerminalNode RIGHT() { return getToken(OpenGaussStatementParser.RIGHT, 0); }
		public TerminalNode SIMILAR() { return getToken(OpenGaussStatementParser.SIMILAR, 0); }
		public TerminalNode TABLESAMPLE() { return getToken(OpenGaussStatementParser.TABLESAMPLE, 0); }
		public TerminalNode VERBOSE() { return getToken(OpenGaussStatementParser.VERBOSE, 0); }
		public TypeFuncNameKeywordContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_typeFuncNameKeyword; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitTypeFuncNameKeyword(this);
			else return visitor.visitChildren(this);
		}
	}

	public final TypeFuncNameKeywordContext typeFuncNameKeyword() throws RecognitionException {
		TypeFuncNameKeywordContext _localctx = new TypeFuncNameKeywordContext(_ctx, getState());
		enterRule(_localctx, 240, RULE_typeFuncNameKeyword);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2796);
			_la = _input.LA(1);
			if ( !(((((_la - 119)) & ~0x3f) == 0 && ((1L << (_la - 119)) & ((1L << (NATURAL - 119)) | (1L << (JOIN - 119)) | (1L << (FULL - 119)) | (1L << (INNER - 119)) | (1L << (OUTER - 119)) | (1L << (LEFT - 119)) | (1L << (RIGHT - 119)) | (1L << (CROSS - 119)) | (1L << (IS - 119)) | (1L << (LIKE - 119)))) != 0) || ((((_la - 198)) & ~0x3f) == 0 && ((1L << (_la - 198)) & ((1L << (COLLATION - 198)) | (1L << (OVERLAPS - 198)) | (1L << (BINARY - 198)))) != 0) || _la==CONCURRENTLY || ((((_la - 388)) & ~0x3f) == 0 && ((1L << (_la - 388)) & ((1L << (TABLESAMPLE - 388)) | (1L << (CURRENT_SCHEMA - 388)) | (1L << (ILIKE - 388)) | (1L << (SIMILAR - 388)) | (1L << (ISNULL - 388)) | (1L << (NOTNULL - 388)))) != 0) || ((((_la - 574)) & ~0x3f) == 0 && ((1L << (_la - 574)) & ((1L << (FREEZE - 574)) | (1L << (AUTHORIZATION - 574)) | (1L << (VERBOSE - 574)))) != 0)) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class SchemaNameContext extends ParserRuleContext {
		public IdentifierContext identifier() {
			return getRuleContext(IdentifierContext.class,0);
		}
		public SchemaNameContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_schemaName; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitSchemaName(this);
			else return visitor.visitChildren(this);
		}
	}

	public final SchemaNameContext schemaName() throws RecognitionException {
		SchemaNameContext _localctx = new SchemaNameContext(_ctx, getState());
		enterRule(_localctx, 242, RULE_schemaName);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2798);
			identifier();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class SynonymNameContext extends ParserRuleContext {
		public IdentifierContext identifier() {
			return getRuleContext(IdentifierContext.class,0);
		}
		public SynonymNameContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_synonymName; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitSynonymName(this);
			else return visitor.visitChildren(this);
		}
	}

	public final SynonymNameContext synonymName() throws RecognitionException {
		SynonymNameContext _localctx = new SynonymNameContext(_ctx, getState());
		enterRule(_localctx, 244, RULE_synonymName);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2800);
			identifier();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ObjectNameContext extends ParserRuleContext {
		public IdentifierContext identifier() {
			return getRuleContext(IdentifierContext.class,0);
		}
		public OwnerContext owner() {
			return getRuleContext(OwnerContext.class,0);
		}
		public TerminalNode DOT_() { return getToken(OpenGaussStatementParser.DOT_, 0); }
		public ObjectNameContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_objectName; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitObjectName(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ObjectNameContext objectName() throws RecognitionException {
		ObjectNameContext _localctx = new ObjectNameContext(_ctx, getState());
		enterRule(_localctx, 246, RULE_objectName);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2805);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,176,_ctx) ) {
			case 1:
				{
				setState(2802);
				owner();
				setState(2803);
				match(DOT_);
				}
				break;
			}
			setState(2807);
			identifier();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class TableNameContext extends ParserRuleContext {
		public NameContext name() {
			return getRuleContext(NameContext.class,0);
		}
		public OwnerContext owner() {
			return getRuleContext(OwnerContext.class,0);
		}
		public TerminalNode DOT_() { return getToken(OpenGaussStatementParser.DOT_, 0); }
		public TableNameContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_tableName; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitTableName(this);
			else return visitor.visitChildren(this);
		}
	}

	public final TableNameContext tableName() throws RecognitionException {
		TableNameContext _localctx = new TableNameContext(_ctx, getState());
		enterRule(_localctx, 248, RULE_tableName);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2812);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,177,_ctx) ) {
			case 1:
				{
				setState(2809);
				owner();
				setState(2810);
				match(DOT_);
				}
				break;
			}
			setState(2814);
			name();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ColumnNameContext extends ParserRuleContext {
		public NameContext name() {
			return getRuleContext(NameContext.class,0);
		}
		public OwnerContext owner() {
			return getRuleContext(OwnerContext.class,0);
		}
		public TerminalNode DOT_() { return getToken(OpenGaussStatementParser.DOT_, 0); }
		public ColumnNameContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_columnName; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitColumnName(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ColumnNameContext columnName() throws RecognitionException {
		ColumnNameContext _localctx = new ColumnNameContext(_ctx, getState());
		enterRule(_localctx, 250, RULE_columnName);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2819);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,178,_ctx) ) {
			case 1:
				{
				setState(2816);
				owner();
				setState(2817);
				match(DOT_);
				}
				break;
			}
			setState(2821);
			name();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class OwnerContext extends ParserRuleContext {
		public IdentifierContext identifier() {
			return getRuleContext(IdentifierContext.class,0);
		}
		public OwnerContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_owner; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitOwner(this);
			else return visitor.visitChildren(this);
		}
	}

	public final OwnerContext owner() throws RecognitionException {
		OwnerContext _localctx = new OwnerContext(_ctx, getState());
		enterRule(_localctx, 252, RULE_owner);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2823);
			identifier();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class NameContext extends ParserRuleContext {
		public IdentifierContext identifier() {
			return getRuleContext(IdentifierContext.class,0);
		}
		public NameContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_name; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitName(this);
			else return visitor.visitChildren(this);
		}
	}

	public final NameContext name() throws RecognitionException {
		NameContext _localctx = new NameContext(_ctx, getState());
		enterRule(_localctx, 254, RULE_name);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2825);
			identifier();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ModelNameContext extends ParserRuleContext {
		public IdentifierContext identifier() {
			return getRuleContext(IdentifierContext.class,0);
		}
		public ModelNameContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_modelName; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitModelName(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ModelNameContext modelName() throws RecognitionException {
		ModelNameContext _localctx = new ModelNameContext(_ctx, getState());
		enterRule(_localctx, 256, RULE_modelName);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2827);
			identifier();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class TableNamesContext extends ParserRuleContext {
		public List tableName() {
			return getRuleContexts(TableNameContext.class);
		}
		public TableNameContext tableName(int i) {
			return getRuleContext(TableNameContext.class,i);
		}
		public TerminalNode LP_() { return getToken(OpenGaussStatementParser.LP_, 0); }
		public List COMMA_() { return getTokens(OpenGaussStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(OpenGaussStatementParser.COMMA_, i);
		}
		public TerminalNode RP_() { return getToken(OpenGaussStatementParser.RP_, 0); }
		public TableNamesContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_tableNames; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitTableNames(this);
			else return visitor.visitChildren(this);
		}
	}

	public final TableNamesContext tableNames() throws RecognitionException {
		TableNamesContext _localctx = new TableNamesContext(_ctx, getState());
		enterRule(_localctx, 258, RULE_tableNames);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2830);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==LP_) {
				{
				setState(2829);
				match(LP_);
				}
			}

			setState(2832);
			tableName();
			setState(2837);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA_) {
				{
				{
				setState(2833);
				match(COMMA_);
				setState(2834);
				tableName();
				}
				}
				setState(2839);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			setState(2841);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==RP_) {
				{
				setState(2840);
				match(RP_);
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ColumnNamesContext extends ParserRuleContext {
		public TerminalNode LP_() { return getToken(OpenGaussStatementParser.LP_, 0); }
		public List columnName() {
			return getRuleContexts(ColumnNameContext.class);
		}
		public ColumnNameContext columnName(int i) {
			return getRuleContext(ColumnNameContext.class,i);
		}
		public TerminalNode RP_() { return getToken(OpenGaussStatementParser.RP_, 0); }
		public List COMMA_() { return getTokens(OpenGaussStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(OpenGaussStatementParser.COMMA_, i);
		}
		public ColumnNamesContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_columnNames; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitColumnNames(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ColumnNamesContext columnNames() throws RecognitionException {
		ColumnNamesContext _localctx = new ColumnNamesContext(_ctx, getState());
		enterRule(_localctx, 260, RULE_columnNames);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2843);
			match(LP_);
			setState(2844);
			columnName();
			setState(2849);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA_) {
				{
				{
				setState(2845);
				match(COMMA_);
				setState(2846);
				columnName();
				}
				}
				setState(2851);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			setState(2852);
			match(RP_);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CollationNameContext extends ParserRuleContext {
		public TerminalNode STRING_() { return getToken(OpenGaussStatementParser.STRING_, 0); }
		public IdentifierContext identifier() {
			return getRuleContext(IdentifierContext.class,0);
		}
		public CollationNameContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_collationName; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitCollationName(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CollationNameContext collationName() throws RecognitionException {
		CollationNameContext _localctx = new CollationNameContext(_ctx, getState());
		enterRule(_localctx, 262, RULE_collationName);
		try {
			setState(2856);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case STRING_:
				enterOuterAlt(_localctx, 1);
				{
				setState(2854);
				match(STRING_);
				}
				break;
			case UNICODE_ESCAPE:
			case INSERT:
			case UPDATE:
			case DELETE:
			case ALTER:
			case DROP:
			case TRUNCATE:
			case SCHEMA:
			case REVOKE:
			case ADD:
			case SET:
			case INDEX:
			case KEY:
			case POSITION:
			case FUNCTION:
			case TRIGGER:
			case PROCEDURE:
			case VIEW:
			case IF:
			case BY:
			case BEGIN:
			case COMMIT:
			case ROLLBACK:
			case SAVEPOINT:
			case DOUBLE:
			case INTERVAL:
			case TIME:
			case TIMESTAMP:
			case YEAR:
			case MONTH:
			case DAY:
			case HOUR:
			case MINUTE:
			case SECOND:
			case CURRENT:
			case ENABLE:
			case DISABLE:
			case CALL:
			case PRESERVE:
			case DEFINER:
			case SQL:
			case CASCADED:
			case LOCAL:
			case CLOSE:
			case NEXT:
			case NAME:
			case NAMES:
			case TYPE:
			case TEXT:
			case REPEATABLE:
			case VARYING:
			case NATIONAL:
			case VALUE:
			case TIES:
			case CUBE:
			case SETS:
			case OTHERS:
			case AT:
			case MAXVALUE:
			case ADMIN:
			case ESCAPE:
			case EXCLUDE:
			case MOD:
			case PARTITION:
			case UNKNOWN:
			case ALWAYS:
			case CASCADE:
			case GENERATED:
			case ISOLATION:
			case LEVEL:
			case NO:
			case OPTION:
			case PRIVILEGES:
			case READ:
			case ROLE:
			case ROWS:
			case START:
			case TRANSACTION:
			case ACTION:
			case CACHE:
			case CHARACTERISTICS:
			case CLUSTER:
			case COMMENTS:
			case CONSTRAINTS:
			case CYCLE:
			case DATA:
			case DATABASE:
			case DEFAULTS:
			case DEFERRED:
			case DEPENDS:
			case DOMAIN:
			case EXCLUDING:
			case EXECUTE:
			case EXTENDED:
			case EXTENSION:
			case EXTERNAL:
			case FILTER:
			case FIRST:
			case FOLLOWING:
			case FORCE:
			case GLOBAL:
			case IDENTITY:
			case IMMEDIATE:
			case INCLUDING:
			case INCREMENT:
			case INDEXES:
			case INHERIT:
			case INHERITS:
			case INCLUDE:
			case LANGUAGE:
			case LARGE:
			case LAST:
			case LOGGED:
			case MAIN:
			case MATCH:
			case MINVALUE:
			case NOTHING:
			case NULLS:
			case OBJECT:
			case OIDS:
			case OVER:
			case OWNED:
			case OWNER:
			case PARTIAL:
			case PLAIN:
			case PRECEDING:
			case RANGE:
			case RENAME:
			case REPLICA:
			case RESET:
			case RESTART:
			case RESTRICT:
			case ROUTINE:
			case RULE:
			case SECURITY:
			case SEQUENCE:
			case SESSION:
			case SHOW:
			case SIMPLE:
			case STATISTICS:
			case STORAGE:
			case TABLESPACE:
			case TEMP:
			case TEMPORARY:
			case UNBOUNDED:
			case UNLOGGED:
			case VALID:
			case VALIDATE:
			case WITHIN:
			case WITHOUT:
			case ZONE:
			case OF:
			case UESCAPE:
			case GROUPS:
			case RECURSIVE:
			case INT2:
			case INT4:
			case FLOAT4:
			case BYTEA:
			case ENUM:
			case POINT:
			case LSEG:
			case BOX:
			case PATH:
			case POLYGON:
			case CIRCLE:
			case INET:
			case TSQUERY:
			case XML:
			case JSON:
			case INT4RANGE:
			case INT8RANGE:
			case NUMRANGE:
			case DATERANGE:
			case ORDINALITY:
			case NFC:
			case NFD:
			case NFKC:
			case NFKD:
			case REF:
			case PASSING:
			case VERSION:
			case YES:
			case STANDALONE:
			case MATERIALIZED:
			case OPERATOR:
			case SHARE:
			case ROLLUP:
			case DOCUMENT:
			case NORMALIZED:
			case NOWAIT:
			case LOCKED:
			case COLUMNS:
			case CONTENT:
			case STRIP:
			case WHITESPACE:
			case CONFLICT:
			case OVERRIDING:
			case SYSTEM:
			case ABORT:
			case ABSOLUTE:
			case ACCESS:
			case AFTER:
			case AGGREGATE:
			case ALSO:
			case ATTACH:
			case ATTRIBUTE:
			case BACKWARD:
			case BEFORE:
			case ASSERTION:
			case ASSIGNMENT:
			case CONTINUE:
			case CONVERSION:
			case COPY:
			case COST:
			case CSV:
			case CALLED:
			case CATALOG:
			case CHAIN:
			case CHECKPOINT:
			case CLASS:
			case CONFIGURATION:
			case COMMENT:
			case DETACH:
			case DICTIONARY:
			case EXPRESSION:
			case INSENSITIVE:
			case DISCARD:
			case OFF:
			case INSTEAD:
			case EXPLAIN:
			case INPUT:
			case INLINE:
			case PARALLEL:
			case LEAKPROOF:
			case COMMITTED:
			case ENCODING:
			case IMPLICIT:
			case DELIMITER:
			case CURSOR:
			case EACH:
			case EVENT:
			case DEALLOCATE:
			case CONNECTION:
			case DECLARE:
			case FAMILY:
			case FORWARD:
			case EXCLUSIVE:
			case FUNCTIONS:
			case LOCATION:
			case LABEL:
			case DELIMITERS:
			case HANDLER:
			case HEADER:
			case IMMUTABLE:
			case GRANTED:
			case HOLD:
			case MAPPING:
			case OLD:
			case METHOD:
			case LOAD:
			case LISTEN:
			case MODE:
			case MOVE:
			case PROCEDURAL:
			case PARSER:
			case PROCEDURES:
			case ENCRYPTED:
			case PUBLICATION:
			case PROGRAM:
			case REFERENCING:
			case PLANS:
			case REINDEX:
			case PRIOR:
			case PASSWORD:
			case RELATIVE:
			case QUOTE:
			case ROUTINES:
			case REPLACE:
			case SNAPSHOT:
			case REFRESH:
			case PREPARE:
			case OPTIONS:
			case IMPORT:
			case INVOKER:
			case NEW:
			case PREPARED:
			case SCROLL:
			case SEQUENCES:
			case SYSID:
			case REASSIGN:
			case SERVER:
			case SUBSCRIPTION:
			case SEARCH:
			case SCHEMAS:
			case RECHECK:
			case POLICY:
			case NOTIFY:
			case LOCK:
			case RELEASE:
			case SERIALIZABLE:
			case RETURNS:
			case STATEMENT:
			case STDIN:
			case STDOUT:
			case TABLES:
			case SUPPORT:
			case STABLE:
			case TEMPLATE:
			case UNENCRYPTED:
			case VIEWS:
			case UNCOMMITTED:
			case TRANSFORM:
			case UNLISTEN:
			case TRUSTED:
			case VALIDATOR:
			case UNTIL:
			case VACUUM:
			case VOLATILE:
			case STORED:
			case WRITE:
			case STRICT:
			case TYPES:
			case WRAPPER:
			case WORK:
			case INT16:
			case INT1:
			case ELEM_CONTAINED_BY_RANGE:
			case IDENTIFIER_:
				enterOuterAlt(_localctx, 2);
				{
				setState(2855);
				identifier();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class IndexNameContext extends ParserRuleContext {
		public IdentifierContext identifier() {
			return getRuleContext(IdentifierContext.class,0);
		}
		public IndexNameContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_indexName; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitIndexName(this);
			else return visitor.visitChildren(this);
		}
	}

	public final IndexNameContext indexName() throws RecognitionException {
		IndexNameContext _localctx = new IndexNameContext(_ctx, getState());
		enterRule(_localctx, 264, RULE_indexName);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2858);
			identifier();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ConstraintNameContext extends ParserRuleContext {
		public IdentifierContext identifier() {
			return getRuleContext(IdentifierContext.class,0);
		}
		public ConstraintNameContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_constraintName; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitConstraintName(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ConstraintNameContext constraintName() throws RecognitionException {
		ConstraintNameContext _localctx = new ConstraintNameContext(_ctx, getState());
		enterRule(_localctx, 266, RULE_constraintName);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2860);
			identifier();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class PrimaryKeyContext extends ParserRuleContext {
		public TerminalNode KEY() { return getToken(OpenGaussStatementParser.KEY, 0); }
		public TerminalNode PRIMARY() { return getToken(OpenGaussStatementParser.PRIMARY, 0); }
		public PrimaryKeyContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_primaryKey; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitPrimaryKey(this);
			else return visitor.visitChildren(this);
		}
	}

	public final PrimaryKeyContext primaryKey() throws RecognitionException {
		PrimaryKeyContext _localctx = new PrimaryKeyContext(_ctx, getState());
		enterRule(_localctx, 268, RULE_primaryKey);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2863);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==PRIMARY) {
				{
				setState(2862);
				match(PRIMARY);
				}
			}

			setState(2865);
			match(KEY);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AndOperatorContext extends ParserRuleContext {
		public TerminalNode AND() { return getToken(OpenGaussStatementParser.AND, 0); }
		public TerminalNode AND_() { return getToken(OpenGaussStatementParser.AND_, 0); }
		public AndOperatorContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_andOperator; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitAndOperator(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AndOperatorContext andOperator() throws RecognitionException {
		AndOperatorContext _localctx = new AndOperatorContext(_ctx, getState());
		enterRule(_localctx, 270, RULE_andOperator);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2867);
			_la = _input.LA(1);
			if ( !(_la==AND_ || _la==AND) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class OrOperatorContext extends ParserRuleContext {
		public TerminalNode OR() { return getToken(OpenGaussStatementParser.OR, 0); }
		public TerminalNode OR_() { return getToken(OpenGaussStatementParser.OR_, 0); }
		public OrOperatorContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_orOperator; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitOrOperator(this);
			else return visitor.visitChildren(this);
		}
	}

	public final OrOperatorContext orOperator() throws RecognitionException {
		OrOperatorContext _localctx = new OrOperatorContext(_ctx, getState());
		enterRule(_localctx, 272, RULE_orOperator);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2869);
			_la = _input.LA(1);
			if ( !(_la==OR_ || _la==OR) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ComparisonOperatorContext extends ParserRuleContext {
		public TerminalNode EQ_() { return getToken(OpenGaussStatementParser.EQ_, 0); }
		public TerminalNode GTE_() { return getToken(OpenGaussStatementParser.GTE_, 0); }
		public TerminalNode GT_() { return getToken(OpenGaussStatementParser.GT_, 0); }
		public TerminalNode LTE_() { return getToken(OpenGaussStatementParser.LTE_, 0); }
		public TerminalNode LT_() { return getToken(OpenGaussStatementParser.LT_, 0); }
		public TerminalNode NEQ_() { return getToken(OpenGaussStatementParser.NEQ_, 0); }
		public ComparisonOperatorContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_comparisonOperator; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitComparisonOperator(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ComparisonOperatorContext comparisonOperator() throws RecognitionException {
		ComparisonOperatorContext _localctx = new ComparisonOperatorContext(_ctx, getState());
		enterRule(_localctx, 274, RULE_comparisonOperator);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2871);
			_la = _input.LA(1);
			if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << EQ_) | (1L << NEQ_) | (1L << GT_) | (1L << GTE_) | (1L << LT_) | (1L << LTE_))) != 0)) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class InetOperatorContext extends ParserRuleContext {
		public TerminalNode SIGNED_LEFT_SHIFT_() { return getToken(OpenGaussStatementParser.SIGNED_LEFT_SHIFT_, 0); }
		public TerminalNode SIGNED_LEFT_SHIFT_E_() { return getToken(OpenGaussStatementParser.SIGNED_LEFT_SHIFT_E_, 0); }
		public TerminalNode SIGNED_RIGHT_SHIFT_() { return getToken(OpenGaussStatementParser.SIGNED_RIGHT_SHIFT_, 0); }
		public TerminalNode SIGNED_RIGHT_SHIFT_E_() { return getToken(OpenGaussStatementParser.SIGNED_RIGHT_SHIFT_E_, 0); }
		public InetOperatorContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_inetOperator; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitInetOperator(this);
			else return visitor.visitChildren(this);
		}
	}

	public final InetOperatorContext inetOperator() throws RecognitionException {
		InetOperatorContext _localctx = new InetOperatorContext(_ctx, getState());
		enterRule(_localctx, 276, RULE_inetOperator);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2873);
			_la = _input.LA(1);
			if ( !(_la==SIGNED_LEFT_SHIFT_ || _la==SIGNED_RIGHT_SHIFT_ || _la==SIGNED_LEFT_SHIFT_E_ || _la==SIGNED_RIGHT_SHIFT_E_) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class PatternMatchingOperatorContext extends ParserRuleContext {
		public TerminalNode LIKE() { return getToken(OpenGaussStatementParser.LIKE, 0); }
		public TerminalNode TILDE_TILDE_() { return getToken(OpenGaussStatementParser.TILDE_TILDE_, 0); }
		public TerminalNode NOT() { return getToken(OpenGaussStatementParser.NOT, 0); }
		public TerminalNode NOT_TILDE_TILDE_() { return getToken(OpenGaussStatementParser.NOT_TILDE_TILDE_, 0); }
		public TerminalNode ILIKE() { return getToken(OpenGaussStatementParser.ILIKE, 0); }
		public TerminalNode ILIKE_() { return getToken(OpenGaussStatementParser.ILIKE_, 0); }
		public TerminalNode NOT_ILIKE_() { return getToken(OpenGaussStatementParser.NOT_ILIKE_, 0); }
		public TerminalNode SIMILAR() { return getToken(OpenGaussStatementParser.SIMILAR, 0); }
		public TerminalNode TO() { return getToken(OpenGaussStatementParser.TO, 0); }
		public TerminalNode TILDE_() { return getToken(OpenGaussStatementParser.TILDE_, 0); }
		public TerminalNode NOT_() { return getToken(OpenGaussStatementParser.NOT_, 0); }
		public TerminalNode ASTERISK_() { return getToken(OpenGaussStatementParser.ASTERISK_, 0); }
		public PatternMatchingOperatorContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_patternMatchingOperator; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitPatternMatchingOperator(this);
			else return visitor.visitChildren(this);
		}
	}

	public final PatternMatchingOperatorContext patternMatchingOperator() throws RecognitionException {
		PatternMatchingOperatorContext _localctx = new PatternMatchingOperatorContext(_ctx, getState());
		enterRule(_localctx, 278, RULE_patternMatchingOperator);
		try {
			setState(2898);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,185,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(2875);
				match(LIKE);
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(2876);
				match(TILDE_TILDE_);
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(2877);
				match(NOT);
				setState(2878);
				match(LIKE);
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(2879);
				match(NOT_TILDE_TILDE_);
				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(2880);
				match(ILIKE);
				}
				break;
			case 6:
				enterOuterAlt(_localctx, 6);
				{
				setState(2881);
				match(ILIKE_);
				}
				break;
			case 7:
				enterOuterAlt(_localctx, 7);
				{
				setState(2882);
				match(NOT);
				setState(2883);
				match(ILIKE);
				}
				break;
			case 8:
				enterOuterAlt(_localctx, 8);
				{
				setState(2884);
				match(NOT_ILIKE_);
				}
				break;
			case 9:
				enterOuterAlt(_localctx, 9);
				{
				setState(2885);
				match(SIMILAR);
				setState(2886);
				match(TO);
				}
				break;
			case 10:
				enterOuterAlt(_localctx, 10);
				{
				setState(2887);
				match(NOT);
				setState(2888);
				match(SIMILAR);
				setState(2889);
				match(TO);
				}
				break;
			case 11:
				enterOuterAlt(_localctx, 11);
				{
				setState(2890);
				match(TILDE_);
				}
				break;
			case 12:
				enterOuterAlt(_localctx, 12);
				{
				setState(2891);
				match(NOT_);
				setState(2892);
				match(TILDE_);
				}
				break;
			case 13:
				enterOuterAlt(_localctx, 13);
				{
				setState(2893);
				match(TILDE_);
				setState(2894);
				match(ASTERISK_);
				}
				break;
			case 14:
				enterOuterAlt(_localctx, 14);
				{
				setState(2895);
				match(NOT_);
				setState(2896);
				match(TILDE_);
				setState(2897);
				match(ASTERISK_);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CursorNameContext extends ParserRuleContext {
		public NameContext name() {
			return getRuleContext(NameContext.class,0);
		}
		public CursorNameContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_cursorName; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitCursorName(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CursorNameContext cursorName() throws RecognitionException {
		CursorNameContext _localctx = new CursorNameContext(_ctx, getState());
		enterRule(_localctx, 280, RULE_cursorName);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2900);
			name();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AExprContext extends ParserRuleContext {
		public CExprContext cExpr() {
			return getRuleContext(CExprContext.class,0);
		}
		public TerminalNode PLUS_() { return getToken(OpenGaussStatementParser.PLUS_, 0); }
		public List aExpr() {
			return getRuleContexts(AExprContext.class);
		}
		public AExprContext aExpr(int i) {
			return getRuleContext(AExprContext.class,i);
		}
		public TerminalNode MINUS_() { return getToken(OpenGaussStatementParser.MINUS_, 0); }
		public TerminalNode DN_() { return getToken(OpenGaussStatementParser.DN_, 0); }
		public TerminalNode TILDE_() { return getToken(OpenGaussStatementParser.TILDE_, 0); }
		public TerminalNode CUBE_ROOT_() { return getToken(OpenGaussStatementParser.CUBE_ROOT_, 0); }
		public QualOpContext qualOp() {
			return getRuleContext(QualOpContext.class,0);
		}
		public TerminalNode NOT() { return getToken(OpenGaussStatementParser.NOT, 0); }
		public List row() {
			return getRuleContexts(RowContext.class);
		}
		public RowContext row(int i) {
			return getRuleContext(RowContext.class,i);
		}
		public TerminalNode OVERLAPS() { return getToken(OpenGaussStatementParser.OVERLAPS, 0); }
		public TerminalNode UNIQUE() { return getToken(OpenGaussStatementParser.UNIQUE, 0); }
		public SelectWithParensContext selectWithParens() {
			return getRuleContext(SelectWithParensContext.class,0);
		}
		public TerminalNode DEFAULT() { return getToken(OpenGaussStatementParser.DEFAULT, 0); }
		public TerminalNode AT() { return getToken(OpenGaussStatementParser.AT, 0); }
		public TerminalNode TIME() { return getToken(OpenGaussStatementParser.TIME, 0); }
		public TerminalNode ZONE() { return getToken(OpenGaussStatementParser.ZONE, 0); }
		public TerminalNode ASTERISK_() { return getToken(OpenGaussStatementParser.ASTERISK_, 0); }
		public TerminalNode SLASH_() { return getToken(OpenGaussStatementParser.SLASH_, 0); }
		public TerminalNode MOD_() { return getToken(OpenGaussStatementParser.MOD_, 0); }
		public TerminalNode CARET_() { return getToken(OpenGaussStatementParser.CARET_, 0); }
		public TerminalNode AMPERSAND_() { return getToken(OpenGaussStatementParser.AMPERSAND_, 0); }
		public TerminalNode POUND_() { return getToken(OpenGaussStatementParser.POUND_, 0); }
		public TerminalNode VERTICAL_BAR_() { return getToken(OpenGaussStatementParser.VERTICAL_BAR_, 0); }
		public ComparisonOperatorContext comparisonOperator() {
			return getRuleContext(ComparisonOperatorContext.class,0);
		}
		public InetOperatorContext inetOperator() {
			return getRuleContext(InetOperatorContext.class,0);
		}
		public PatternMatchingOperatorContext patternMatchingOperator() {
			return getRuleContext(PatternMatchingOperatorContext.class,0);
		}
		public TerminalNode ESCAPE() { return getToken(OpenGaussStatementParser.ESCAPE, 0); }
		public TerminalNode IS() { return getToken(OpenGaussStatementParser.IS, 0); }
		public TerminalNode DISTINCT() { return getToken(OpenGaussStatementParser.DISTINCT, 0); }
		public TerminalNode FROM() { return getToken(OpenGaussStatementParser.FROM, 0); }
		public TerminalNode BETWEEN() { return getToken(OpenGaussStatementParser.BETWEEN, 0); }
		public BExprContext bExpr() {
			return getRuleContext(BExprContext.class,0);
		}
		public TerminalNode AND() { return getToken(OpenGaussStatementParser.AND, 0); }
		public TerminalNode ASYMMETRIC() { return getToken(OpenGaussStatementParser.ASYMMETRIC, 0); }
		public TerminalNode SYMMETRIC() { return getToken(OpenGaussStatementParser.SYMMETRIC, 0); }
		public AndOperatorContext andOperator() {
			return getRuleContext(AndOperatorContext.class,0);
		}
		public OrOperatorContext orOperator() {
			return getRuleContext(OrOperatorContext.class,0);
		}
		public TerminalNode TYPE_CAST_() { return getToken(OpenGaussStatementParser.TYPE_CAST_, 0); }
		public TypeNameContext typeName() {
			return getRuleContext(TypeNameContext.class,0);
		}
		public TerminalNode COLLATE() { return getToken(OpenGaussStatementParser.COLLATE, 0); }
		public AnyNameContext anyName() {
			return getRuleContext(AnyNameContext.class,0);
		}
		public TerminalNode NOT_() { return getToken(OpenGaussStatementParser.NOT_, 0); }
		public TerminalNode NULL() { return getToken(OpenGaussStatementParser.NULL, 0); }
		public TerminalNode ISNULL() { return getToken(OpenGaussStatementParser.ISNULL, 0); }
		public TerminalNode NOTNULL() { return getToken(OpenGaussStatementParser.NOTNULL, 0); }
		public TerminalNode TRUE() { return getToken(OpenGaussStatementParser.TRUE, 0); }
		public TerminalNode FALSE() { return getToken(OpenGaussStatementParser.FALSE, 0); }
		public TerminalNode UNKNOWN() { return getToken(OpenGaussStatementParser.UNKNOWN, 0); }
		public TerminalNode OF() { return getToken(OpenGaussStatementParser.OF, 0); }
		public TerminalNode LP_() { return getToken(OpenGaussStatementParser.LP_, 0); }
		public TypeListContext typeList() {
			return getRuleContext(TypeListContext.class,0);
		}
		public TerminalNode RP_() { return getToken(OpenGaussStatementParser.RP_, 0); }
		public TerminalNode IN() { return getToken(OpenGaussStatementParser.IN, 0); }
		public InExprContext inExpr() {
			return getRuleContext(InExprContext.class,0);
		}
		public SubqueryOpContext subqueryOp() {
			return getRuleContext(SubqueryOpContext.class,0);
		}
		public SubTypeContext subType() {
			return getRuleContext(SubTypeContext.class,0);
		}
		public TerminalNode DOCUMENT() { return getToken(OpenGaussStatementParser.DOCUMENT, 0); }
		public TerminalNode NORMALIZED() { return getToken(OpenGaussStatementParser.NORMALIZED, 0); }
		public UnicodeNormalFormContext unicodeNormalForm() {
			return getRuleContext(UnicodeNormalFormContext.class,0);
		}
		public AExprContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_aExpr; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitAExpr(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AExprContext aExpr() throws RecognitionException {
		return aExpr(0);
	}

	private AExprContext aExpr(int _p) throws RecognitionException {
		ParserRuleContext _parentctx = _ctx;
		int _parentState = getState();
		AExprContext _localctx = new AExprContext(_ctx, _parentState);
		AExprContext _prevctx = _localctx;
		int _startState = 282;
		enterRecursionRule(_localctx, 282, RULE_aExpr, _p);
		int _la;
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			setState(2926);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,186,_ctx) ) {
			case 1:
				{
				setState(2903);
				cExpr();
				}
				break;
			case 2:
				{
				setState(2904);
				match(PLUS_);
				setState(2905);
				aExpr(56);
				}
				break;
			case 3:
				{
				setState(2906);
				match(MINUS_);
				setState(2907);
				aExpr(55);
				}
				break;
			case 4:
				{
				setState(2908);
				match(DN_);
				setState(2909);
				aExpr(47);
				}
				break;
			case 5:
				{
				setState(2910);
				match(TILDE_);
				setState(2911);
				aExpr(44);
				}
				break;
			case 6:
				{
				setState(2912);
				match(CUBE_ROOT_);
				setState(2913);
				aExpr(43);
				}
				break;
			case 7:
				{
				setState(2914);
				qualOp();
				setState(2915);
				aExpr(40);
				}
				break;
			case 8:
				{
				setState(2917);
				match(NOT);
				setState(2918);
				aExpr(36);
				}
				break;
			case 9:
				{
				setState(2919);
				row();
				setState(2920);
				match(OVERLAPS);
				setState(2921);
				row();
				}
				break;
			case 10:
				{
				setState(2923);
				match(UNIQUE);
				setState(2924);
				selectWithParens();
				}
				break;
			case 11:
				{
				setState(2925);
				match(DEFAULT);
				}
				break;
			}
			_ctx.stop = _input.LT(-1);
			setState(3138);
			_errHandler.sync(this);
			_alt = getInterpreter().adaptivePredict(_input,190,_ctx);
			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
				if ( _alt==1 ) {
					if ( _parseListeners!=null ) triggerExitRuleEvent();
					_prevctx = _localctx;
					{
					setState(3136);
					_errHandler.sync(this);
					switch ( getInterpreter().adaptivePredict(_input,189,_ctx) ) {
					case 1:
						{
						_localctx = new AExprContext(_parentctx, _parentState);
						pushNewRecursionContext(_localctx, _startState, RULE_aExpr);
						setState(2928);
						if (!(precpred(_ctx, 57))) throw new FailedPredicateException(this, "precpred(_ctx, 57)");
						setState(2929);
						match(AT);
						setState(2930);
						match(TIME);
						setState(2931);
						match(ZONE);
						setState(2932);
						aExpr(58);
						}
						break;
					case 2:
						{
						_localctx = new AExprContext(_parentctx, _parentState);
						pushNewRecursionContext(_localctx, _startState, RULE_aExpr);
						setState(2933);
						if (!(precpred(_ctx, 54))) throw new FailedPredicateException(this, "precpred(_ctx, 54)");
						setState(2934);
						match(PLUS_);
						setState(2935);
						aExpr(55);
						}
						break;
					case 3:
						{
						_localctx = new AExprContext(_parentctx, _parentState);
						pushNewRecursionContext(_localctx, _startState, RULE_aExpr);
						setState(2936);
						if (!(precpred(_ctx, 53))) throw new FailedPredicateException(this, "precpred(_ctx, 53)");
						setState(2937);
						match(MINUS_);
						setState(2938);
						aExpr(54);
						}
						break;
					case 4:
						{
						_localctx = new AExprContext(_parentctx, _parentState);
						pushNewRecursionContext(_localctx, _startState, RULE_aExpr);
						setState(2939);
						if (!(precpred(_ctx, 52))) throw new FailedPredicateException(this, "precpred(_ctx, 52)");
						setState(2940);
						match(ASTERISK_);
						setState(2941);
						aExpr(53);
						}
						break;
					case 5:
						{
						_localctx = new AExprContext(_parentctx, _parentState);
						pushNewRecursionContext(_localctx, _startState, RULE_aExpr);
						setState(2942);
						if (!(precpred(_ctx, 51))) throw new FailedPredicateException(this, "precpred(_ctx, 51)");
						setState(2943);
						match(SLASH_);
						setState(2944);
						aExpr(52);
						}
						break;
					case 6:
						{
						_localctx = new AExprContext(_parentctx, _parentState);
						pushNewRecursionContext(_localctx, _startState, RULE_aExpr);
						setState(2945);
						if (!(precpred(_ctx, 50))) throw new FailedPredicateException(this, "precpred(_ctx, 50)");
						setState(2946);
						match(MOD_);
						setState(2947);
						aExpr(51);
						}
						break;
					case 7:
						{
						_localctx = new AExprContext(_parentctx, _parentState);
						pushNewRecursionContext(_localctx, _startState, RULE_aExpr);
						setState(2948);
						if (!(precpred(_ctx, 49))) throw new FailedPredicateException(this, "precpred(_ctx, 49)");
						setState(2949);
						match(CARET_);
						setState(2950);
						aExpr(50);
						}
						break;
					case 8:
						{
						_localctx = new AExprContext(_parentctx, _parentState);
						pushNewRecursionContext(_localctx, _startState, RULE_aExpr);
						setState(2951);
						if (!(precpred(_ctx, 48))) throw new FailedPredicateException(this, "precpred(_ctx, 48)");
						setState(2952);
						match(AMPERSAND_);
						setState(2953);
						aExpr(49);
						}
						break;
					case 9:
						{
						_localctx = new AExprContext(_parentctx, _parentState);
						pushNewRecursionContext(_localctx, _startState, RULE_aExpr);
						setState(2954);
						if (!(precpred(_ctx, 45))) throw new FailedPredicateException(this, "precpred(_ctx, 45)");
						setState(2955);
						match(POUND_);
						setState(2956);
						aExpr(46);
						}
						break;
					case 10:
						{
						_localctx = new AExprContext(_parentctx, _parentState);
						pushNewRecursionContext(_localctx, _startState, RULE_aExpr);
						setState(2957);
						if (!(precpred(_ctx, 42))) throw new FailedPredicateException(this, "precpred(_ctx, 42)");
						setState(2958);
						match(VERTICAL_BAR_);
						setState(2959);
						aExpr(43);
						}
						break;
					case 11:
						{
						_localctx = new AExprContext(_parentctx, _parentState);
						pushNewRecursionContext(_localctx, _startState, RULE_aExpr);
						setState(2960);
						if (!(precpred(_ctx, 41))) throw new FailedPredicateException(this, "precpred(_ctx, 41)");
						setState(2961);
						qualOp();
						setState(2962);
						aExpr(42);
						}
						break;
					case 12:
						{
						_localctx = new AExprContext(_parentctx, _parentState);
						pushNewRecursionContext(_localctx, _startState, RULE_aExpr);
						setState(2964);
						if (!(precpred(_ctx, 38))) throw new FailedPredicateException(this, "precpred(_ctx, 38)");
						setState(2965);
						comparisonOperator();
						setState(2966);
						aExpr(39);
						}
						break;
					case 13:
						{
						_localctx = new AExprContext(_parentctx, _parentState);
						pushNewRecursionContext(_localctx, _startState, RULE_aExpr);
						setState(2968);
						if (!(precpred(_ctx, 37))) throw new FailedPredicateException(this, "precpred(_ctx, 37)");
						setState(2969);
						inetOperator();
						setState(2970);
						aExpr(38);
						}
						break;
					case 14:
						{
						_localctx = new AExprContext(_parentctx, _parentState);
						pushNewRecursionContext(_localctx, _startState, RULE_aExpr);
						setState(2972);
						if (!(precpred(_ctx, 35))) throw new FailedPredicateException(this, "precpred(_ctx, 35)");
						setState(2973);
						patternMatchingOperator();
						setState(2974);
						aExpr(0);
						setState(2975);
						match(ESCAPE);
						setState(2976);
						aExpr(36);
						}
						break;
					case 15:
						{
						_localctx = new AExprContext(_parentctx, _parentState);
						pushNewRecursionContext(_localctx, _startState, RULE_aExpr);
						setState(2978);
						if (!(precpred(_ctx, 34))) throw new FailedPredicateException(this, "precpred(_ctx, 34)");
						setState(2979);
						patternMatchingOperator();
						setState(2980);
						aExpr(35);
						}
						break;
					case 16:
						{
						_localctx = new AExprContext(_parentctx, _parentState);
						pushNewRecursionContext(_localctx, _startState, RULE_aExpr);
						setState(2982);
						if (!(precpred(_ctx, 22))) throw new FailedPredicateException(this, "precpred(_ctx, 22)");
						setState(2983);
						match(IS);
						setState(2984);
						match(DISTINCT);
						setState(2985);
						match(FROM);
						setState(2986);
						aExpr(23);
						}
						break;
					case 17:
						{
						_localctx = new AExprContext(_parentctx, _parentState);
						pushNewRecursionContext(_localctx, _startState, RULE_aExpr);
						setState(2987);
						if (!(precpred(_ctx, 21))) throw new FailedPredicateException(this, "precpred(_ctx, 21)");
						setState(2988);
						match(IS);
						setState(2989);
						match(NOT);
						setState(2990);
						match(DISTINCT);
						setState(2991);
						match(FROM);
						setState(2992);
						aExpr(22);
						}
						break;
					case 18:
						{
						_localctx = new AExprContext(_parentctx, _parentState);
						pushNewRecursionContext(_localctx, _startState, RULE_aExpr);
						setState(2993);
						if (!(precpred(_ctx, 18))) throw new FailedPredicateException(this, "precpred(_ctx, 18)");
						setState(2994);
						match(BETWEEN);
						setState(2996);
						_errHandler.sync(this);
						_la = _input.LA(1);
						if (_la==ASYMMETRIC) {
							{
							setState(2995);
							match(ASYMMETRIC);
							}
						}

						setState(2998);
						bExpr(0);
						setState(2999);
						match(AND);
						setState(3000);
						aExpr(19);
						}
						break;
					case 19:
						{
						_localctx = new AExprContext(_parentctx, _parentState);
						pushNewRecursionContext(_localctx, _startState, RULE_aExpr);
						setState(3002);
						if (!(precpred(_ctx, 17))) throw new FailedPredicateException(this, "precpred(_ctx, 17)");
						setState(3003);
						match(NOT);
						setState(3004);
						match(BETWEEN);
						setState(3006);
						_errHandler.sync(this);
						_la = _input.LA(1);
						if (_la==ASYMMETRIC) {
							{
							setState(3005);
							match(ASYMMETRIC);
							}
						}

						setState(3008);
						bExpr(0);
						setState(3009);
						match(AND);
						setState(3010);
						aExpr(18);
						}
						break;
					case 20:
						{
						_localctx = new AExprContext(_parentctx, _parentState);
						pushNewRecursionContext(_localctx, _startState, RULE_aExpr);
						setState(3012);
						if (!(precpred(_ctx, 16))) throw new FailedPredicateException(this, "precpred(_ctx, 16)");
						setState(3013);
						match(BETWEEN);
						setState(3014);
						match(SYMMETRIC);
						setState(3015);
						bExpr(0);
						setState(3016);
						match(AND);
						setState(3017);
						aExpr(17);
						}
						break;
					case 21:
						{
						_localctx = new AExprContext(_parentctx, _parentState);
						pushNewRecursionContext(_localctx, _startState, RULE_aExpr);
						setState(3019);
						if (!(precpred(_ctx, 15))) throw new FailedPredicateException(this, "precpred(_ctx, 15)");
						setState(3020);
						match(NOT);
						setState(3021);
						match(BETWEEN);
						setState(3022);
						match(SYMMETRIC);
						setState(3023);
						bExpr(0);
						setState(3024);
						match(AND);
						setState(3025);
						aExpr(16);
						}
						break;
					case 22:
						{
						_localctx = new AExprContext(_parentctx, _parentState);
						pushNewRecursionContext(_localctx, _startState, RULE_aExpr);
						setState(3027);
						if (!(precpred(_ctx, 3))) throw new FailedPredicateException(this, "precpred(_ctx, 3)");
						setState(3028);
						andOperator();
						setState(3029);
						aExpr(4);
						}
						break;
					case 23:
						{
						_localctx = new AExprContext(_parentctx, _parentState);
						pushNewRecursionContext(_localctx, _startState, RULE_aExpr);
						setState(3031);
						if (!(precpred(_ctx, 2))) throw new FailedPredicateException(this, "precpred(_ctx, 2)");
						setState(3032);
						orOperator();
						setState(3033);
						aExpr(3);
						}
						break;
					case 24:
						{
						_localctx = new AExprContext(_parentctx, _parentState);
						pushNewRecursionContext(_localctx, _startState, RULE_aExpr);
						setState(3035);
						if (!(precpred(_ctx, 59))) throw new FailedPredicateException(this, "precpred(_ctx, 59)");
						setState(3036);
						match(TYPE_CAST_);
						setState(3037);
						typeName();
						}
						break;
					case 25:
						{
						_localctx = new AExprContext(_parentctx, _parentState);
						pushNewRecursionContext(_localctx, _startState, RULE_aExpr);
						setState(3038);
						if (!(precpred(_ctx, 58))) throw new FailedPredicateException(this, "precpred(_ctx, 58)");
						setState(3039);
						match(COLLATE);
						setState(3040);
						anyName();
						}
						break;
					case 26:
						{
						_localctx = new AExprContext(_parentctx, _parentState);
						pushNewRecursionContext(_localctx, _startState, RULE_aExpr);
						setState(3041);
						if (!(precpred(_ctx, 46))) throw new FailedPredicateException(this, "precpred(_ctx, 46)");
						setState(3042);
						match(NOT_);
						}
						break;
					case 27:
						{
						_localctx = new AExprContext(_parentctx, _parentState);
						pushNewRecursionContext(_localctx, _startState, RULE_aExpr);
						setState(3043);
						if (!(precpred(_ctx, 39))) throw new FailedPredicateException(this, "precpred(_ctx, 39)");
						setState(3044);
						qualOp();
						}
						break;
					case 28:
						{
						_localctx = new AExprContext(_parentctx, _parentState);
						pushNewRecursionContext(_localctx, _startState, RULE_aExpr);
						setState(3045);
						if (!(precpred(_ctx, 33))) throw new FailedPredicateException(this, "precpred(_ctx, 33)");
						setState(3046);
						match(IS);
						setState(3047);
						match(NULL);
						}
						break;
					case 29:
						{
						_localctx = new AExprContext(_parentctx, _parentState);
						pushNewRecursionContext(_localctx, _startState, RULE_aExpr);
						setState(3048);
						if (!(precpred(_ctx, 32))) throw new FailedPredicateException(this, "precpred(_ctx, 32)");
						setState(3049);
						match(ISNULL);
						}
						break;
					case 30:
						{
						_localctx = new AExprContext(_parentctx, _parentState);
						pushNewRecursionContext(_localctx, _startState, RULE_aExpr);
						setState(3050);
						if (!(precpred(_ctx, 31))) throw new FailedPredicateException(this, "precpred(_ctx, 31)");
						setState(3051);
						match(IS);
						setState(3052);
						match(NOT);
						setState(3053);
						match(NULL);
						}
						break;
					case 31:
						{
						_localctx = new AExprContext(_parentctx, _parentState);
						pushNewRecursionContext(_localctx, _startState, RULE_aExpr);
						setState(3054);
						if (!(precpred(_ctx, 30))) throw new FailedPredicateException(this, "precpred(_ctx, 30)");
						setState(3055);
						match(NOTNULL);
						}
						break;
					case 32:
						{
						_localctx = new AExprContext(_parentctx, _parentState);
						pushNewRecursionContext(_localctx, _startState, RULE_aExpr);
						setState(3056);
						if (!(precpred(_ctx, 28))) throw new FailedPredicateException(this, "precpred(_ctx, 28)");
						setState(3057);
						match(IS);
						setState(3058);
						match(TRUE);
						}
						break;
					case 33:
						{
						_localctx = new AExprContext(_parentctx, _parentState);
						pushNewRecursionContext(_localctx, _startState, RULE_aExpr);
						setState(3059);
						if (!(precpred(_ctx, 27))) throw new FailedPredicateException(this, "precpred(_ctx, 27)");
						setState(3060);
						match(IS);
						setState(3061);
						match(NOT);
						setState(3062);
						match(TRUE);
						}
						break;
					case 34:
						{
						_localctx = new AExprContext(_parentctx, _parentState);
						pushNewRecursionContext(_localctx, _startState, RULE_aExpr);
						setState(3063);
						if (!(precpred(_ctx, 26))) throw new FailedPredicateException(this, "precpred(_ctx, 26)");
						setState(3064);
						match(IS);
						setState(3065);
						match(FALSE);
						}
						break;
					case 35:
						{
						_localctx = new AExprContext(_parentctx, _parentState);
						pushNewRecursionContext(_localctx, _startState, RULE_aExpr);
						setState(3066);
						if (!(precpred(_ctx, 25))) throw new FailedPredicateException(this, "precpred(_ctx, 25)");
						setState(3067);
						match(IS);
						setState(3068);
						match(NOT);
						setState(3069);
						match(FALSE);
						}
						break;
					case 36:
						{
						_localctx = new AExprContext(_parentctx, _parentState);
						pushNewRecursionContext(_localctx, _startState, RULE_aExpr);
						setState(3070);
						if (!(precpred(_ctx, 24))) throw new FailedPredicateException(this, "precpred(_ctx, 24)");
						setState(3071);
						match(IS);
						setState(3072);
						match(UNKNOWN);
						}
						break;
					case 37:
						{
						_localctx = new AExprContext(_parentctx, _parentState);
						pushNewRecursionContext(_localctx, _startState, RULE_aExpr);
						setState(3073);
						if (!(precpred(_ctx, 23))) throw new FailedPredicateException(this, "precpred(_ctx, 23)");
						setState(3074);
						match(IS);
						setState(3075);
						match(NOT);
						setState(3076);
						match(UNKNOWN);
						}
						break;
					case 38:
						{
						_localctx = new AExprContext(_parentctx, _parentState);
						pushNewRecursionContext(_localctx, _startState, RULE_aExpr);
						setState(3077);
						if (!(precpred(_ctx, 20))) throw new FailedPredicateException(this, "precpred(_ctx, 20)");
						setState(3078);
						match(IS);
						setState(3079);
						match(OF);
						setState(3080);
						match(LP_);
						setState(3081);
						typeList();
						setState(3082);
						match(RP_);
						}
						break;
					case 39:
						{
						_localctx = new AExprContext(_parentctx, _parentState);
						pushNewRecursionContext(_localctx, _startState, RULE_aExpr);
						setState(3084);
						if (!(precpred(_ctx, 19))) throw new FailedPredicateException(this, "precpred(_ctx, 19)");
						setState(3085);
						match(IS);
						setState(3086);
						match(NOT);
						setState(3087);
						match(OF);
						setState(3088);
						match(LP_);
						setState(3089);
						typeList();
						setState(3090);
						match(RP_);
						}
						break;
					case 40:
						{
						_localctx = new AExprContext(_parentctx, _parentState);
						pushNewRecursionContext(_localctx, _startState, RULE_aExpr);
						setState(3092);
						if (!(precpred(_ctx, 14))) throw new FailedPredicateException(this, "precpred(_ctx, 14)");
						setState(3093);
						match(IN);
						setState(3094);
						inExpr();
						}
						break;
					case 41:
						{
						_localctx = new AExprContext(_parentctx, _parentState);
						pushNewRecursionContext(_localctx, _startState, RULE_aExpr);
						setState(3095);
						if (!(precpred(_ctx, 13))) throw new FailedPredicateException(this, "precpred(_ctx, 13)");
						setState(3096);
						match(NOT);
						setState(3097);
						match(IN);
						setState(3098);
						inExpr();
						}
						break;
					case 42:
						{
						_localctx = new AExprContext(_parentctx, _parentState);
						pushNewRecursionContext(_localctx, _startState, RULE_aExpr);
						setState(3099);
						if (!(precpred(_ctx, 12))) throw new FailedPredicateException(this, "precpred(_ctx, 12)");
						setState(3100);
						subqueryOp();
						setState(3101);
						subType();
						setState(3102);
						selectWithParens();
						}
						break;
					case 43:
						{
						_localctx = new AExprContext(_parentctx, _parentState);
						pushNewRecursionContext(_localctx, _startState, RULE_aExpr);
						setState(3104);
						if (!(precpred(_ctx, 11))) throw new FailedPredicateException(this, "precpred(_ctx, 11)");
						setState(3105);
						subqueryOp();
						setState(3106);
						subType();
						setState(3107);
						match(LP_);
						setState(3108);
						aExpr(0);
						setState(3109);
						match(RP_);
						}
						break;
					case 44:
						{
						_localctx = new AExprContext(_parentctx, _parentState);
						pushNewRecursionContext(_localctx, _startState, RULE_aExpr);
						setState(3111);
						if (!(precpred(_ctx, 9))) throw new FailedPredicateException(this, "precpred(_ctx, 9)");
						setState(3112);
						match(IS);
						setState(3113);
						match(DOCUMENT);
						}
						break;
					case 45:
						{
						_localctx = new AExprContext(_parentctx, _parentState);
						pushNewRecursionContext(_localctx, _startState, RULE_aExpr);
						setState(3114);
						if (!(precpred(_ctx, 8))) throw new FailedPredicateException(this, "precpred(_ctx, 8)");
						setState(3115);
						match(IS);
						setState(3116);
						match(NOT);
						setState(3117);
						match(DOCUMENT);
						}
						break;
					case 46:
						{
						_localctx = new AExprContext(_parentctx, _parentState);
						pushNewRecursionContext(_localctx, _startState, RULE_aExpr);
						setState(3118);
						if (!(precpred(_ctx, 7))) throw new FailedPredicateException(this, "precpred(_ctx, 7)");
						setState(3119);
						match(IS);
						setState(3120);
						match(NORMALIZED);
						}
						break;
					case 47:
						{
						_localctx = new AExprContext(_parentctx, _parentState);
						pushNewRecursionContext(_localctx, _startState, RULE_aExpr);
						setState(3121);
						if (!(precpred(_ctx, 6))) throw new FailedPredicateException(this, "precpred(_ctx, 6)");
						setState(3122);
						match(IS);
						setState(3123);
						unicodeNormalForm();
						setState(3124);
						match(NORMALIZED);
						}
						break;
					case 48:
						{
						_localctx = new AExprContext(_parentctx, _parentState);
						pushNewRecursionContext(_localctx, _startState, RULE_aExpr);
						setState(3126);
						if (!(precpred(_ctx, 5))) throw new FailedPredicateException(this, "precpred(_ctx, 5)");
						setState(3127);
						match(IS);
						setState(3128);
						match(NOT);
						setState(3129);
						match(NORMALIZED);
						}
						break;
					case 49:
						{
						_localctx = new AExprContext(_parentctx, _parentState);
						pushNewRecursionContext(_localctx, _startState, RULE_aExpr);
						setState(3130);
						if (!(precpred(_ctx, 4))) throw new FailedPredicateException(this, "precpred(_ctx, 4)");
						setState(3131);
						match(IS);
						setState(3132);
						match(NOT);
						setState(3133);
						unicodeNormalForm();
						setState(3134);
						match(NORMALIZED);
						}
						break;
					}
					} 
				}
				setState(3140);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,190,_ctx);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			unrollRecursionContexts(_parentctx);
		}
		return _localctx;
	}

	public static class BExprContext extends ParserRuleContext {
		public CExprContext cExpr() {
			return getRuleContext(CExprContext.class,0);
		}
		public TerminalNode PLUS_() { return getToken(OpenGaussStatementParser.PLUS_, 0); }
		public List bExpr() {
			return getRuleContexts(BExprContext.class);
		}
		public BExprContext bExpr(int i) {
			return getRuleContext(BExprContext.class,i);
		}
		public TerminalNode MINUS_() { return getToken(OpenGaussStatementParser.MINUS_, 0); }
		public QualOpContext qualOp() {
			return getRuleContext(QualOpContext.class,0);
		}
		public TerminalNode IS() { return getToken(OpenGaussStatementParser.IS, 0); }
		public TerminalNode DISTINCT() { return getToken(OpenGaussStatementParser.DISTINCT, 0); }
		public TerminalNode FROM() { return getToken(OpenGaussStatementParser.FROM, 0); }
		public TerminalNode NOT() { return getToken(OpenGaussStatementParser.NOT, 0); }
		public TerminalNode TYPE_CAST_() { return getToken(OpenGaussStatementParser.TYPE_CAST_, 0); }
		public TypeNameContext typeName() {
			return getRuleContext(TypeNameContext.class,0);
		}
		public TerminalNode OF() { return getToken(OpenGaussStatementParser.OF, 0); }
		public TerminalNode LP_() { return getToken(OpenGaussStatementParser.LP_, 0); }
		public TypeListContext typeList() {
			return getRuleContext(TypeListContext.class,0);
		}
		public TerminalNode RP_() { return getToken(OpenGaussStatementParser.RP_, 0); }
		public TerminalNode DOCUMENT() { return getToken(OpenGaussStatementParser.DOCUMENT, 0); }
		public BExprContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_bExpr; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitBExpr(this);
			else return visitor.visitChildren(this);
		}
	}

	public final BExprContext bExpr() throws RecognitionException {
		return bExpr(0);
	}

	private BExprContext bExpr(int _p) throws RecognitionException {
		ParserRuleContext _parentctx = _ctx;
		int _parentState = getState();
		BExprContext _localctx = new BExprContext(_ctx, _parentState);
		BExprContext _prevctx = _localctx;
		int _startState = 284;
		enterRecursionRule(_localctx, 284, RULE_bExpr, _p);
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			setState(3150);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,191,_ctx) ) {
			case 1:
				{
				setState(3142);
				cExpr();
				}
				break;
			case 2:
				{
				setState(3143);
				match(PLUS_);
				setState(3144);
				bExpr(11);
				}
				break;
			case 3:
				{
				setState(3145);
				match(MINUS_);
				setState(3146);
				bExpr(10);
				}
				break;
			case 4:
				{
				setState(3147);
				qualOp();
				setState(3148);
				bExpr(8);
				}
				break;
			}
			_ctx.stop = _input.LT(-1);
			setState(3196);
			_errHandler.sync(this);
			_alt = getInterpreter().adaptivePredict(_input,193,_ctx);
			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
				if ( _alt==1 ) {
					if ( _parseListeners!=null ) triggerExitRuleEvent();
					_prevctx = _localctx;
					{
					setState(3194);
					_errHandler.sync(this);
					switch ( getInterpreter().adaptivePredict(_input,192,_ctx) ) {
					case 1:
						{
						_localctx = new BExprContext(_parentctx, _parentState);
						pushNewRecursionContext(_localctx, _startState, RULE_bExpr);
						setState(3152);
						if (!(precpred(_ctx, 9))) throw new FailedPredicateException(this, "precpred(_ctx, 9)");
						setState(3153);
						qualOp();
						setState(3154);
						bExpr(10);
						}
						break;
					case 2:
						{
						_localctx = new BExprContext(_parentctx, _parentState);
						pushNewRecursionContext(_localctx, _startState, RULE_bExpr);
						setState(3156);
						if (!(precpred(_ctx, 6))) throw new FailedPredicateException(this, "precpred(_ctx, 6)");
						setState(3157);
						match(IS);
						setState(3158);
						match(DISTINCT);
						setState(3159);
						match(FROM);
						setState(3160);
						bExpr(7);
						}
						break;
					case 3:
						{
						_localctx = new BExprContext(_parentctx, _parentState);
						pushNewRecursionContext(_localctx, _startState, RULE_bExpr);
						setState(3161);
						if (!(precpred(_ctx, 5))) throw new FailedPredicateException(this, "precpred(_ctx, 5)");
						setState(3162);
						match(IS);
						setState(3163);
						match(NOT);
						setState(3164);
						match(DISTINCT);
						setState(3165);
						match(FROM);
						setState(3166);
						bExpr(6);
						}
						break;
					case 4:
						{
						_localctx = new BExprContext(_parentctx, _parentState);
						pushNewRecursionContext(_localctx, _startState, RULE_bExpr);
						setState(3167);
						if (!(precpred(_ctx, 12))) throw new FailedPredicateException(this, "precpred(_ctx, 12)");
						setState(3168);
						match(TYPE_CAST_);
						setState(3169);
						typeName();
						}
						break;
					case 5:
						{
						_localctx = new BExprContext(_parentctx, _parentState);
						pushNewRecursionContext(_localctx, _startState, RULE_bExpr);
						setState(3170);
						if (!(precpred(_ctx, 7))) throw new FailedPredicateException(this, "precpred(_ctx, 7)");
						setState(3171);
						qualOp();
						}
						break;
					case 6:
						{
						_localctx = new BExprContext(_parentctx, _parentState);
						pushNewRecursionContext(_localctx, _startState, RULE_bExpr);
						setState(3172);
						if (!(precpred(_ctx, 4))) throw new FailedPredicateException(this, "precpred(_ctx, 4)");
						setState(3173);
						match(IS);
						setState(3174);
						match(OF);
						setState(3175);
						match(LP_);
						setState(3176);
						typeList();
						setState(3177);
						match(RP_);
						}
						break;
					case 7:
						{
						_localctx = new BExprContext(_parentctx, _parentState);
						pushNewRecursionContext(_localctx, _startState, RULE_bExpr);
						setState(3179);
						if (!(precpred(_ctx, 3))) throw new FailedPredicateException(this, "precpred(_ctx, 3)");
						setState(3180);
						match(IS);
						setState(3181);
						match(NOT);
						setState(3182);
						match(OF);
						setState(3183);
						match(LP_);
						setState(3184);
						typeList();
						setState(3185);
						match(RP_);
						}
						break;
					case 8:
						{
						_localctx = new BExprContext(_parentctx, _parentState);
						pushNewRecursionContext(_localctx, _startState, RULE_bExpr);
						setState(3187);
						if (!(precpred(_ctx, 2))) throw new FailedPredicateException(this, "precpred(_ctx, 2)");
						setState(3188);
						match(IS);
						setState(3189);
						match(DOCUMENT);
						}
						break;
					case 9:
						{
						_localctx = new BExprContext(_parentctx, _parentState);
						pushNewRecursionContext(_localctx, _startState, RULE_bExpr);
						setState(3190);
						if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)");
						setState(3191);
						match(IS);
						setState(3192);
						match(NOT);
						setState(3193);
						match(DOCUMENT);
						}
						break;
					}
					} 
				}
				setState(3198);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,193,_ctx);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			unrollRecursionContexts(_parentctx);
		}
		return _localctx;
	}

	public static class CExprContext extends ParserRuleContext {
		public ParameterMarkerContext parameterMarker() {
			return getRuleContext(ParameterMarkerContext.class,0);
		}
		public ColumnrefContext columnref() {
			return getRuleContext(ColumnrefContext.class,0);
		}
		public AexprConstContext aexprConst() {
			return getRuleContext(AexprConstContext.class,0);
		}
		public TerminalNode PARAM() { return getToken(OpenGaussStatementParser.PARAM, 0); }
		public IndirectionElContext indirectionEl() {
			return getRuleContext(IndirectionElContext.class,0);
		}
		public TerminalNode LP_() { return getToken(OpenGaussStatementParser.LP_, 0); }
		public AExprContext aExpr() {
			return getRuleContext(AExprContext.class,0);
		}
		public TerminalNode RP_() { return getToken(OpenGaussStatementParser.RP_, 0); }
		public OptIndirectionContext optIndirection() {
			return getRuleContext(OptIndirectionContext.class,0);
		}
		public CaseExprContext caseExpr() {
			return getRuleContext(CaseExprContext.class,0);
		}
		public FuncExprContext funcExpr() {
			return getRuleContext(FuncExprContext.class,0);
		}
		public SelectWithParensContext selectWithParens() {
			return getRuleContext(SelectWithParensContext.class,0);
		}
		public IndirectionContext indirection() {
			return getRuleContext(IndirectionContext.class,0);
		}
		public TerminalNode EXISTS() { return getToken(OpenGaussStatementParser.EXISTS, 0); }
		public TerminalNode ARRAY() { return getToken(OpenGaussStatementParser.ARRAY, 0); }
		public ArrayExprContext arrayExpr() {
			return getRuleContext(ArrayExprContext.class,0);
		}
		public ExplicitRowContext explicitRow() {
			return getRuleContext(ExplicitRowContext.class,0);
		}
		public ImplicitRowContext implicitRow() {
			return getRuleContext(ImplicitRowContext.class,0);
		}
		public TerminalNode GROUPING() { return getToken(OpenGaussStatementParser.GROUPING, 0); }
		public ExprListContext exprList() {
			return getRuleContext(ExprListContext.class,0);
		}
		public CExprContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_cExpr; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitCExpr(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CExprContext cExpr() throws RecognitionException {
		CExprContext _localctx = new CExprContext(_ctx, getState());
		enterRule(_localctx, 286, RULE_cExpr);
		try {
			setState(3230);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,195,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(3199);
				parameterMarker();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(3200);
				columnref();
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(3201);
				aexprConst();
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(3202);
				match(PARAM);
				setState(3204);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,194,_ctx) ) {
				case 1:
					{
					setState(3203);
					indirectionEl();
					}
					break;
				}
				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(3206);
				match(LP_);
				setState(3207);
				aExpr(0);
				setState(3208);
				match(RP_);
				setState(3209);
				optIndirection(0);
				}
				break;
			case 6:
				enterOuterAlt(_localctx, 6);
				{
				setState(3211);
				caseExpr();
				}
				break;
			case 7:
				enterOuterAlt(_localctx, 7);
				{
				setState(3212);
				funcExpr();
				}
				break;
			case 8:
				enterOuterAlt(_localctx, 8);
				{
				setState(3213);
				selectWithParens();
				}
				break;
			case 9:
				enterOuterAlt(_localctx, 9);
				{
				setState(3214);
				selectWithParens();
				setState(3215);
				indirection(0);
				}
				break;
			case 10:
				enterOuterAlt(_localctx, 10);
				{
				setState(3217);
				match(EXISTS);
				setState(3218);
				selectWithParens();
				}
				break;
			case 11:
				enterOuterAlt(_localctx, 11);
				{
				setState(3219);
				match(ARRAY);
				setState(3220);
				selectWithParens();
				}
				break;
			case 12:
				enterOuterAlt(_localctx, 12);
				{
				setState(3221);
				match(ARRAY);
				setState(3222);
				arrayExpr();
				}
				break;
			case 13:
				enterOuterAlt(_localctx, 13);
				{
				setState(3223);
				explicitRow();
				}
				break;
			case 14:
				enterOuterAlt(_localctx, 14);
				{
				setState(3224);
				implicitRow();
				}
				break;
			case 15:
				enterOuterAlt(_localctx, 15);
				{
				setState(3225);
				match(GROUPING);
				setState(3226);
				match(LP_);
				setState(3227);
				exprList(0);
				setState(3228);
				match(RP_);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class IndirectionContext extends ParserRuleContext {
		public IndirectionElContext indirectionEl() {
			return getRuleContext(IndirectionElContext.class,0);
		}
		public IndirectionContext indirection() {
			return getRuleContext(IndirectionContext.class,0);
		}
		public IndirectionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_indirection; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitIndirection(this);
			else return visitor.visitChildren(this);
		}
	}

	public final IndirectionContext indirection() throws RecognitionException {
		return indirection(0);
	}

	private IndirectionContext indirection(int _p) throws RecognitionException {
		ParserRuleContext _parentctx = _ctx;
		int _parentState = getState();
		IndirectionContext _localctx = new IndirectionContext(_ctx, _parentState);
		IndirectionContext _prevctx = _localctx;
		int _startState = 288;
		enterRecursionRule(_localctx, 288, RULE_indirection, _p);
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			{
			setState(3233);
			indirectionEl();
			}
			_ctx.stop = _input.LT(-1);
			setState(3239);
			_errHandler.sync(this);
			_alt = getInterpreter().adaptivePredict(_input,196,_ctx);
			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
				if ( _alt==1 ) {
					if ( _parseListeners!=null ) triggerExitRuleEvent();
					_prevctx = _localctx;
					{
					{
					_localctx = new IndirectionContext(_parentctx, _parentState);
					pushNewRecursionContext(_localctx, _startState, RULE_indirection);
					setState(3235);
					if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)");
					setState(3236);
					indirectionEl();
					}
					} 
				}
				setState(3241);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,196,_ctx);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			unrollRecursionContexts(_parentctx);
		}
		return _localctx;
	}

	public static class OptIndirectionContext extends ParserRuleContext {
		public OptIndirectionContext optIndirection() {
			return getRuleContext(OptIndirectionContext.class,0);
		}
		public IndirectionElContext indirectionEl() {
			return getRuleContext(IndirectionElContext.class,0);
		}
		public OptIndirectionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_optIndirection; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitOptIndirection(this);
			else return visitor.visitChildren(this);
		}
	}

	public final OptIndirectionContext optIndirection() throws RecognitionException {
		return optIndirection(0);
	}

	private OptIndirectionContext optIndirection(int _p) throws RecognitionException {
		ParserRuleContext _parentctx = _ctx;
		int _parentState = getState();
		OptIndirectionContext _localctx = new OptIndirectionContext(_ctx, _parentState);
		OptIndirectionContext _prevctx = _localctx;
		int _startState = 290;
		enterRecursionRule(_localctx, 290, RULE_optIndirection, _p);
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			{
			}
			_ctx.stop = _input.LT(-1);
			setState(3247);
			_errHandler.sync(this);
			_alt = getInterpreter().adaptivePredict(_input,197,_ctx);
			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
				if ( _alt==1 ) {
					if ( _parseListeners!=null ) triggerExitRuleEvent();
					_prevctx = _localctx;
					{
					{
					_localctx = new OptIndirectionContext(_parentctx, _parentState);
					pushNewRecursionContext(_localctx, _startState, RULE_optIndirection);
					setState(3243);
					if (!(precpred(_ctx, 2))) throw new FailedPredicateException(this, "precpred(_ctx, 2)");
					setState(3244);
					indirectionEl();
					}
					} 
				}
				setState(3249);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,197,_ctx);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			unrollRecursionContexts(_parentctx);
		}
		return _localctx;
	}

	public static class IndirectionElContext extends ParserRuleContext {
		public TerminalNode DOT_() { return getToken(OpenGaussStatementParser.DOT_, 0); }
		public AttrNameContext attrName() {
			return getRuleContext(AttrNameContext.class,0);
		}
		public TerminalNode ASTERISK_() { return getToken(OpenGaussStatementParser.ASTERISK_, 0); }
		public TerminalNode LBT_() { return getToken(OpenGaussStatementParser.LBT_, 0); }
		public AExprContext aExpr() {
			return getRuleContext(AExprContext.class,0);
		}
		public TerminalNode RBT_() { return getToken(OpenGaussStatementParser.RBT_, 0); }
		public TerminalNode COLON_() { return getToken(OpenGaussStatementParser.COLON_, 0); }
		public List sliceBound() {
			return getRuleContexts(SliceBoundContext.class);
		}
		public SliceBoundContext sliceBound(int i) {
			return getRuleContext(SliceBoundContext.class,i);
		}
		public IndirectionElContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_indirectionEl; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitIndirectionEl(this);
			else return visitor.visitChildren(this);
		}
	}

	public final IndirectionElContext indirectionEl() throws RecognitionException {
		IndirectionElContext _localctx = new IndirectionElContext(_ctx, getState());
		enterRule(_localctx, 292, RULE_indirectionEl);
		int _la;
		try {
			setState(3267);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,200,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(3250);
				match(DOT_);
				setState(3251);
				attrName();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(3252);
				match(DOT_);
				setState(3253);
				match(ASTERISK_);
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(3254);
				match(LBT_);
				setState(3255);
				aExpr(0);
				setState(3256);
				match(RBT_);
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(3258);
				match(LBT_);
				setState(3260);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << OR_) | (1L << TILDE_) | (1L << SIGNED_LEFT_SHIFT_) | (1L << SIGNED_RIGHT_SHIFT_) | (1L << PLUS_) | (1L << MINUS_) | (1L << POUND_) | (1L << LP_) | (1L << QUESTION_) | (1L << DOLLAR_) | (1L << UNICODE_ESCAPE) | (1L << JSON_EXTRACT_) | (1L << JSON_EXTRACT_TEXT_) | (1L << JSON_PATH_EXTRACT_) | (1L << JSON_PATH_EXTRACT_TEXT_) | (1L << JSONB_CONTAIN_RIGHT_) | (1L << JSONB_CONTAIN_LEFT_) | (1L << JSONB_CONTAIN_ALL_TOP_KEY_) | (1L << JSONB_PATH_DELETE_) | (1L << JSONB_PATH_CONTAIN_ANY_VALUE_) | (1L << JSONB_PATH_PREDICATE_CHECK_) | (1L << GEOMETRIC_LENGTH_) | (1L << GEOMETRIC_DISTANCE_))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (GEOMETRIC_EXTEND_RIGHT_ - 64)) | (1L << (GEOMETRIC_EXTEND_LEFT_ - 64)) | (1L << (GEOMETRIC_STRICT_BELOW_ - 64)) | (1L << (GEOMETRIC_STRICT_ABOVE_ - 64)) | (1L << (GEOMETRIC_EXTEND_ABOVE_ - 64)) | (1L << (GEOMETRIC_EXTEND_BELOW_ - 64)) | (1L << (GEOMETRIC_BELOW_ - 64)) | (1L << (GEOMETRIC_ABOVE_ - 64)) | (1L << (GEOMETRIC_INTERSECT_ - 64)) | (1L << (GEOMETRIC_PERPENDICULAR_ - 64)) | (1L << (GEOMETRIC_SAME_AS_ - 64)) | (1L << (DN_ - 64)) | (1L << (CUBE_ROOT_ - 64)) | (1L << (INSERT - 64)) | (1L << (UPDATE - 64)) | (1L << (DELETE - 64)) | (1L << (ALTER - 64)) | (1L << (DROP - 64)) | (1L << (TRUNCATE - 64)) | (1L << (SCHEMA - 64)) | (1L << (REVOKE - 64)) | (1L << (ADD - 64)) | (1L << (SET - 64)) | (1L << (INDEX - 64)) | (1L << (UNIQUE - 64)) | (1L << (KEY - 64)) | (1L << (POSITION - 64)) | (1L << (FUNCTION - 64)) | (1L << (TRIGGER - 64)) | (1L << (PROCEDURE - 64)) | (1L << (VIEW - 64)) | (1L << (CASE - 64)) | (1L << (CAST - 64)) | (1L << (TRIM - 64)) | (1L << (SUBSTRING - 64)) | (1L << (NATURAL - 64)) | (1L << (JOIN - 64)) | (1L << (FULL - 64)) | (1L << (INNER - 64)) | (1L << (OUTER - 64)) | (1L << (LEFT - 64)) | (1L << (RIGHT - 64)) | (1L << (CROSS - 64)))) != 0) || ((((_la - 131)) & ~0x3f) == 0 && ((1L << (_la - 131)) & ((1L << (IF - 131)) | (1L << (IS - 131)) | (1L << (NOT - 131)) | (1L << (NULL - 131)) | (1L << (TRUE - 131)) | (1L << (FALSE - 131)) | (1L << (EXISTS - 131)) | (1L << (LIKE - 131)) | (1L << (BY - 131)) | (1L << (BEGIN - 131)) | (1L << (COMMIT - 131)) | (1L << (ROLLBACK - 131)) | (1L << (SAVEPOINT - 131)) | (1L << (BOOLEAN - 131)) | (1L << (DOUBLE - 131)) | (1L << (CHAR - 131)) | (1L << (CHARACTER - 131)) | (1L << (ARRAY - 131)) | (1L << (INTERVAL - 131)) | (1L << (DATE - 131)) | (1L << (TIME - 131)) | (1L << (TIMESTAMP - 131)) | (1L << (LOCALTIME - 131)) | (1L << (LOCALTIMESTAMP - 131)) | (1L << (YEAR - 131)) | (1L << (MONTH - 131)) | (1L << (DAY - 131)) | (1L << (HOUR - 131)) | (1L << (MINUTE - 131)) | (1L << (SECOND - 131)) | (1L << (DEFAULT - 131)) | (1L << (CURRENT - 131)) | (1L << (ENABLE - 131)) | (1L << (DISABLE - 131)) | (1L << (CALL - 131)) | (1L << (PRESERVE - 131)) | (1L << (DEFINER - 131)) | (1L << (CURRENT_USER - 131)) | (1L << (SQL - 131)) | (1L << (CASCADED - 131)) | (1L << (LOCAL - 131)) | (1L << (CLOSE - 131)))) != 0) || ((((_la - 196)) & ~0x3f) == 0 && ((1L << (_la - 196)) & ((1L << (NEXT - 196)) | (1L << (NAME - 196)) | (1L << (COLLATION - 196)) | (1L << (NAMES - 196)) | (1L << (INTEGER - 196)) | (1L << (REAL - 196)) | (1L << (DECIMAL - 196)) | (1L << (TYPE - 196)) | (1L << (SMALLINT - 196)) | (1L << (BIGINT - 196)) | (1L << (NUMERIC - 196)) | (1L << (TEXT - 196)) | (1L << (REPEATABLE - 196)) | (1L << (CURRENT_DATE - 196)) | (1L << (CURRENT_TIME - 196)) | (1L << (CURRENT_TIMESTAMP - 196)) | (1L << (NULLIF - 196)) | (1L << (VARYING - 196)) | (1L << (NATIONAL - 196)) | (1L << (NCHAR - 196)) | (1L << (VALUE - 196)) | (1L << (COALESCE - 196)) | (1L << (TIES - 196)) | (1L << (CUBE - 196)) | (1L << (GROUPING - 196)) | (1L << (SETS - 196)) | (1L << (OTHERS - 196)) | (1L << (OVERLAPS - 196)) | (1L << (AT - 196)) | (1L << (DEC - 196)) | (1L << (MAXVALUE - 196)) | (1L << (ADMIN - 196)) | (1L << (BINARY - 196)) | (1L << (ESCAPE - 196)) | (1L << (EXCLUDE - 196)) | (1L << (MOD - 196)) | (1L << (PARTITION - 196)) | (1L << (ROW - 196)) | (1L << (UNKNOWN - 196)) | (1L << (ALWAYS - 196)) | (1L << (CASCADE - 196)) | (1L << (GENERATED - 196)) | (1L << (ISOLATION - 196)) | (1L << (LEVEL - 196)) | (1L << (NO - 196)) | (1L << (OPTION - 196)) | (1L << (PRIVILEGES - 196)) | (1L << (READ - 196)))) != 0) || ((((_la - 260)) & ~0x3f) == 0 && ((1L << (_la - 260)) & ((1L << (ROLE - 260)) | (1L << (ROWS - 260)) | (1L << (START - 260)) | (1L << (TRANSACTION - 260)) | (1L << (USER - 260)) | (1L << (ACTION - 260)) | (1L << (CACHE - 260)) | (1L << (CHARACTERISTICS - 260)) | (1L << (CLUSTER - 260)) | (1L << (COMMENTS - 260)) | (1L << (CONCURRENTLY - 260)) | (1L << (CONSTRAINTS - 260)) | (1L << (CYCLE - 260)) | (1L << (DATA - 260)) | (1L << (DATABASE - 260)) | (1L << (DEFAULTS - 260)) | (1L << (DEFERRED - 260)) | (1L << (DEPENDS - 260)) | (1L << (DOMAIN - 260)) | (1L << (EXCLUDING - 260)) | (1L << (EXECUTE - 260)) | (1L << (EXTENDED - 260)) | (1L << (EXTENSION - 260)) | (1L << (EXTERNAL - 260)) | (1L << (EXTRACT - 260)) | (1L << (FILTER - 260)) | (1L << (FIRST - 260)) | (1L << (FOLLOWING - 260)) | (1L << (FORCE - 260)) | (1L << (GLOBAL - 260)) | (1L << (IDENTITY - 260)) | (1L << (IMMEDIATE - 260)) | (1L << (INCLUDING - 260)) | (1L << (INCREMENT - 260)) | (1L << (INDEXES - 260)) | (1L << (INHERIT - 260)) | (1L << (INHERITS - 260)) | (1L << (INCLUDE - 260)) | (1L << (LANGUAGE - 260)) | (1L << (LARGE - 260)) | (1L << (LAST - 260)) | (1L << (LOGGED - 260)) | (1L << (MAIN - 260)) | (1L << (MATCH - 260)) | (1L << (MINVALUE - 260)) | (1L << (NOTHING - 260)) | (1L << (NULLS - 260)) | (1L << (OBJECT - 260)) | (1L << (OIDS - 260)) | (1L << (OVER - 260)) | (1L << (OWNED - 260)) | (1L << (OWNER - 260)) | (1L << (PARTIAL - 260)) | (1L << (PLAIN - 260)) | (1L << (PRECEDING - 260)) | (1L << (RANGE - 260)) | (1L << (RENAME - 260)) | (1L << (REPLICA - 260)) | (1L << (RESET - 260)))) != 0) || ((((_la - 324)) & ~0x3f) == 0 && ((1L << (_la - 324)) & ((1L << (RESTART - 324)) | (1L << (RESTRICT - 324)) | (1L << (ROUTINE - 324)) | (1L << (RULE - 324)) | (1L << (SECURITY - 324)) | (1L << (SEQUENCE - 324)) | (1L << (SESSION - 324)) | (1L << (SESSION_USER - 324)) | (1L << (SHOW - 324)) | (1L << (SIMPLE - 324)) | (1L << (STATISTICS - 324)) | (1L << (STORAGE - 324)) | (1L << (TABLESPACE - 324)) | (1L << (TEMP - 324)) | (1L << (TEMPORARY - 324)) | (1L << (UNBOUNDED - 324)) | (1L << (UNLOGGED - 324)) | (1L << (VALID - 324)) | (1L << (VALIDATE - 324)) | (1L << (WITHIN - 324)) | (1L << (WITHOUT - 324)) | (1L << (ZONE - 324)) | (1L << (OF - 324)) | (1L << (UESCAPE - 324)) | (1L << (GROUPS - 324)) | (1L << (RECURSIVE - 324)) | (1L << (INT - 324)) | (1L << (INT2 - 324)) | (1L << (INT4 - 324)) | (1L << (INT8 - 324)) | (1L << (FLOAT - 324)) | (1L << (FLOAT4 - 324)) | (1L << (FLOAT8 - 324)) | (1L << (VARCHAR - 324)) | (1L << (BYTEA - 324)) | (1L << (ENUM - 324)) | (1L << (POINT - 324)) | (1L << (LSEG - 324)) | (1L << (BOX - 324)) | (1L << (PATH - 324)) | (1L << (POLYGON - 324)) | (1L << (CIRCLE - 324)) | (1L << (INET - 324)) | (1L << (BIT - 324)) | (1L << (TSQUERY - 324)) | (1L << (XML - 324)) | (1L << (JSON - 324)) | (1L << (INT4RANGE - 324)) | (1L << (INT8RANGE - 324)) | (1L << (NUMRANGE - 324)) | (1L << (DATERANGE - 324)))) != 0) || ((((_la - 388)) & ~0x3f) == 0 && ((1L << (_la - 388)) & ((1L << (TABLESAMPLE - 388)) | (1L << (ORDINALITY - 388)) | (1L << (CURRENT_ROLE - 388)) | (1L << (CURRENT_CATALOG - 388)) | (1L << (CURRENT_SCHEMA - 388)) | (1L << (NORMALIZE - 388)) | (1L << (OVERLAY - 388)) | (1L << (XMLCONCAT - 388)) | (1L << (XMLELEMENT - 388)) | (1L << (XMLEXISTS - 388)) | (1L << (XMLFOREST - 388)) | (1L << (XMLPARSE - 388)) | (1L << (XMLPI - 388)) | (1L << (XMLROOT - 388)) | (1L << (XMLSERIALIZE - 388)) | (1L << (TREAT - 388)) | (1L << (NFC - 388)) | (1L << (NFD - 388)) | (1L << (NFKC - 388)) | (1L << (NFKD - 388)) | (1L << (REF - 388)) | (1L << (PASSING - 388)) | (1L << (VERSION - 388)) | (1L << (YES - 388)) | (1L << (STANDALONE - 388)) | (1L << (GREATEST - 388)) | (1L << (LEAST - 388)) | (1L << (MATERIALIZED - 388)) | (1L << (OPERATOR - 388)) | (1L << (SHARE - 388)) | (1L << (ROLLUP - 388)) | (1L << (ILIKE - 388)) | (1L << (SIMILAR - 388)) | (1L << (ISNULL - 388)) | (1L << (NOTNULL - 388)) | (1L << (DOCUMENT - 388)) | (1L << (NORMALIZED - 388)) | (1L << (NOWAIT - 388)) | (1L << (LOCKED - 388)) | (1L << (COLUMNS - 388)) | (1L << (CONTENT - 388)) | (1L << (STRIP - 388)) | (1L << (WHITESPACE - 388)) | (1L << (CONFLICT - 388)) | (1L << (OVERRIDING - 388)) | (1L << (SYSTEM - 388)) | (1L << (ABORT - 388)) | (1L << (ABSOLUTE - 388)) | (1L << (ACCESS - 388)) | (1L << (AFTER - 388)) | (1L << (AGGREGATE - 388)))) != 0) || ((((_la - 452)) & ~0x3f) == 0 && ((1L << (_la - 452)) & ((1L << (ALSO - 452)) | (1L << (ATTACH - 452)) | (1L << (ATTRIBUTE - 452)) | (1L << (BACKWARD - 452)) | (1L << (BEFORE - 452)) | (1L << (ASSERTION - 452)) | (1L << (ASSIGNMENT - 452)) | (1L << (CONTINUE - 452)) | (1L << (CONVERSION - 452)) | (1L << (COPY - 452)) | (1L << (COST - 452)) | (1L << (CSV - 452)) | (1L << (CALLED - 452)) | (1L << (CATALOG - 452)) | (1L << (CHAIN - 452)) | (1L << (CHECKPOINT - 452)) | (1L << (CLASS - 452)) | (1L << (CONFIGURATION - 452)) | (1L << (COMMENT - 452)) | (1L << (DETACH - 452)) | (1L << (DICTIONARY - 452)) | (1L << (EXPRESSION - 452)) | (1L << (INSENSITIVE - 452)) | (1L << (DISCARD - 452)) | (1L << (OFF - 452)) | (1L << (INSTEAD - 452)) | (1L << (EXPLAIN - 452)) | (1L << (INPUT - 452)) | (1L << (INLINE - 452)) | (1L << (PARALLEL - 452)) | (1L << (LEAKPROOF - 452)) | (1L << (COMMITTED - 452)) | (1L << (ENCODING - 452)) | (1L << (IMPLICIT - 452)) | (1L << (DELIMITER - 452)) | (1L << (CURSOR - 452)) | (1L << (EACH - 452)) | (1L << (EVENT - 452)) | (1L << (DEALLOCATE - 452)) | (1L << (CONNECTION - 452)) | (1L << (DECLARE - 452)) | (1L << (FAMILY - 452)) | (1L << (FORWARD - 452)) | (1L << (EXCLUSIVE - 452)) | (1L << (FUNCTIONS - 452)) | (1L << (LOCATION - 452)) | (1L << (LABEL - 452)) | (1L << (DELIMITERS - 452)) | (1L << (HANDLER - 452)) | (1L << (HEADER - 452)) | (1L << (IMMUTABLE - 452)) | (1L << (GRANTED - 452)) | (1L << (HOLD - 452)) | (1L << (MAPPING - 452)) | (1L << (OLD - 452)) | (1L << (METHOD - 452)) | (1L << (LOAD - 452)) | (1L << (LISTEN - 452)) | (1L << (MODE - 452)) | (1L << (MOVE - 452)) | (1L << (PROCEDURAL - 452)) | (1L << (PARSER - 452)) | (1L << (PROCEDURES - 452)))) != 0) || ((((_la - 516)) & ~0x3f) == 0 && ((1L << (_la - 516)) & ((1L << (ENCRYPTED - 516)) | (1L << (PUBLICATION - 516)) | (1L << (PROGRAM - 516)) | (1L << (REFERENCING - 516)) | (1L << (PLANS - 516)) | (1L << (REINDEX - 516)) | (1L << (PRIOR - 516)) | (1L << (PASSWORD - 516)) | (1L << (RELATIVE - 516)) | (1L << (QUOTE - 516)) | (1L << (ROUTINES - 516)) | (1L << (REPLACE - 516)) | (1L << (SNAPSHOT - 516)) | (1L << (REFRESH - 516)) | (1L << (PREPARE - 516)) | (1L << (OPTIONS - 516)) | (1L << (IMPORT - 516)) | (1L << (INVOKER - 516)) | (1L << (NEW - 516)) | (1L << (PREPARED - 516)) | (1L << (SCROLL - 516)) | (1L << (SEQUENCES - 516)) | (1L << (SYSID - 516)) | (1L << (REASSIGN - 516)) | (1L << (SERVER - 516)) | (1L << (SUBSCRIPTION - 516)) | (1L << (SEARCH - 516)) | (1L << (SCHEMAS - 516)) | (1L << (RECHECK - 516)) | (1L << (POLICY - 516)) | (1L << (NOTIFY - 516)) | (1L << (LOCK - 516)) | (1L << (RELEASE - 516)) | (1L << (SERIALIZABLE - 516)) | (1L << (RETURNS - 516)) | (1L << (STATEMENT - 516)) | (1L << (STDIN - 516)) | (1L << (STDOUT - 516)) | (1L << (TABLES - 516)) | (1L << (SUPPORT - 516)) | (1L << (STABLE - 516)) | (1L << (TEMPLATE - 516)) | (1L << (UNENCRYPTED - 516)) | (1L << (VIEWS - 516)) | (1L << (UNCOMMITTED - 516)) | (1L << (TRANSFORM - 516)) | (1L << (UNLISTEN - 516)) | (1L << (TRUSTED - 516)) | (1L << (VALIDATOR - 516)) | (1L << (UNTIL - 516)) | (1L << (VACUUM - 516)) | (1L << (VOLATILE - 516)) | (1L << (STORED - 516)) | (1L << (WRITE - 516)) | (1L << (STRICT - 516)) | (1L << (TYPES - 516)) | (1L << (WRAPPER - 516)) | (1L << (WORK - 516)) | (1L << (FREEZE - 516)) | (1L << (AUTHORIZATION - 516)) | (1L << (VERBOSE - 516)) | (1L << (PARAM - 516)))) != 0) || ((((_la - 582)) & ~0x3f) == 0 && ((1L << (_la - 582)) & ((1L << (PREDICT - 582)) | (1L << (TS_REWRITE - 582)) | (1L << (INT16 - 582)) | (1L << (INT1 - 582)) | (1L << (ELEM_CONTAINED_BY_RANGE - 582)) | (1L << (LOWER_INF - 582)) | (1L << (UPPER_INF - 582)) | (1L << (ABBREV - 582)) | (1L << (SET_MASKLEN - 582)) | (1L << (TRUNC - 582)) | (1L << (IDENTIFIER_ - 582)) | (1L << (STRING_ - 582)) | (1L << (NUMBER_ - 582)))) != 0)) {
					{
					setState(3259);
					sliceBound();
					}
				}

				setState(3262);
				match(COLON_);
				setState(3264);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << OR_) | (1L << TILDE_) | (1L << SIGNED_LEFT_SHIFT_) | (1L << SIGNED_RIGHT_SHIFT_) | (1L << PLUS_) | (1L << MINUS_) | (1L << POUND_) | (1L << LP_) | (1L << QUESTION_) | (1L << DOLLAR_) | (1L << UNICODE_ESCAPE) | (1L << JSON_EXTRACT_) | (1L << JSON_EXTRACT_TEXT_) | (1L << JSON_PATH_EXTRACT_) | (1L << JSON_PATH_EXTRACT_TEXT_) | (1L << JSONB_CONTAIN_RIGHT_) | (1L << JSONB_CONTAIN_LEFT_) | (1L << JSONB_CONTAIN_ALL_TOP_KEY_) | (1L << JSONB_PATH_DELETE_) | (1L << JSONB_PATH_CONTAIN_ANY_VALUE_) | (1L << JSONB_PATH_PREDICATE_CHECK_) | (1L << GEOMETRIC_LENGTH_) | (1L << GEOMETRIC_DISTANCE_))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (GEOMETRIC_EXTEND_RIGHT_ - 64)) | (1L << (GEOMETRIC_EXTEND_LEFT_ - 64)) | (1L << (GEOMETRIC_STRICT_BELOW_ - 64)) | (1L << (GEOMETRIC_STRICT_ABOVE_ - 64)) | (1L << (GEOMETRIC_EXTEND_ABOVE_ - 64)) | (1L << (GEOMETRIC_EXTEND_BELOW_ - 64)) | (1L << (GEOMETRIC_BELOW_ - 64)) | (1L << (GEOMETRIC_ABOVE_ - 64)) | (1L << (GEOMETRIC_INTERSECT_ - 64)) | (1L << (GEOMETRIC_PERPENDICULAR_ - 64)) | (1L << (GEOMETRIC_SAME_AS_ - 64)) | (1L << (DN_ - 64)) | (1L << (CUBE_ROOT_ - 64)) | (1L << (INSERT - 64)) | (1L << (UPDATE - 64)) | (1L << (DELETE - 64)) | (1L << (ALTER - 64)) | (1L << (DROP - 64)) | (1L << (TRUNCATE - 64)) | (1L << (SCHEMA - 64)) | (1L << (REVOKE - 64)) | (1L << (ADD - 64)) | (1L << (SET - 64)) | (1L << (INDEX - 64)) | (1L << (UNIQUE - 64)) | (1L << (KEY - 64)) | (1L << (POSITION - 64)) | (1L << (FUNCTION - 64)) | (1L << (TRIGGER - 64)) | (1L << (PROCEDURE - 64)) | (1L << (VIEW - 64)) | (1L << (CASE - 64)) | (1L << (CAST - 64)) | (1L << (TRIM - 64)) | (1L << (SUBSTRING - 64)) | (1L << (NATURAL - 64)) | (1L << (JOIN - 64)) | (1L << (FULL - 64)) | (1L << (INNER - 64)) | (1L << (OUTER - 64)) | (1L << (LEFT - 64)) | (1L << (RIGHT - 64)) | (1L << (CROSS - 64)))) != 0) || ((((_la - 131)) & ~0x3f) == 0 && ((1L << (_la - 131)) & ((1L << (IF - 131)) | (1L << (IS - 131)) | (1L << (NOT - 131)) | (1L << (NULL - 131)) | (1L << (TRUE - 131)) | (1L << (FALSE - 131)) | (1L << (EXISTS - 131)) | (1L << (LIKE - 131)) | (1L << (BY - 131)) | (1L << (BEGIN - 131)) | (1L << (COMMIT - 131)) | (1L << (ROLLBACK - 131)) | (1L << (SAVEPOINT - 131)) | (1L << (BOOLEAN - 131)) | (1L << (DOUBLE - 131)) | (1L << (CHAR - 131)) | (1L << (CHARACTER - 131)) | (1L << (ARRAY - 131)) | (1L << (INTERVAL - 131)) | (1L << (DATE - 131)) | (1L << (TIME - 131)) | (1L << (TIMESTAMP - 131)) | (1L << (LOCALTIME - 131)) | (1L << (LOCALTIMESTAMP - 131)) | (1L << (YEAR - 131)) | (1L << (MONTH - 131)) | (1L << (DAY - 131)) | (1L << (HOUR - 131)) | (1L << (MINUTE - 131)) | (1L << (SECOND - 131)) | (1L << (DEFAULT - 131)) | (1L << (CURRENT - 131)) | (1L << (ENABLE - 131)) | (1L << (DISABLE - 131)) | (1L << (CALL - 131)) | (1L << (PRESERVE - 131)) | (1L << (DEFINER - 131)) | (1L << (CURRENT_USER - 131)) | (1L << (SQL - 131)) | (1L << (CASCADED - 131)) | (1L << (LOCAL - 131)) | (1L << (CLOSE - 131)))) != 0) || ((((_la - 196)) & ~0x3f) == 0 && ((1L << (_la - 196)) & ((1L << (NEXT - 196)) | (1L << (NAME - 196)) | (1L << (COLLATION - 196)) | (1L << (NAMES - 196)) | (1L << (INTEGER - 196)) | (1L << (REAL - 196)) | (1L << (DECIMAL - 196)) | (1L << (TYPE - 196)) | (1L << (SMALLINT - 196)) | (1L << (BIGINT - 196)) | (1L << (NUMERIC - 196)) | (1L << (TEXT - 196)) | (1L << (REPEATABLE - 196)) | (1L << (CURRENT_DATE - 196)) | (1L << (CURRENT_TIME - 196)) | (1L << (CURRENT_TIMESTAMP - 196)) | (1L << (NULLIF - 196)) | (1L << (VARYING - 196)) | (1L << (NATIONAL - 196)) | (1L << (NCHAR - 196)) | (1L << (VALUE - 196)) | (1L << (COALESCE - 196)) | (1L << (TIES - 196)) | (1L << (CUBE - 196)) | (1L << (GROUPING - 196)) | (1L << (SETS - 196)) | (1L << (OTHERS - 196)) | (1L << (OVERLAPS - 196)) | (1L << (AT - 196)) | (1L << (DEC - 196)) | (1L << (MAXVALUE - 196)) | (1L << (ADMIN - 196)) | (1L << (BINARY - 196)) | (1L << (ESCAPE - 196)) | (1L << (EXCLUDE - 196)) | (1L << (MOD - 196)) | (1L << (PARTITION - 196)) | (1L << (ROW - 196)) | (1L << (UNKNOWN - 196)) | (1L << (ALWAYS - 196)) | (1L << (CASCADE - 196)) | (1L << (GENERATED - 196)) | (1L << (ISOLATION - 196)) | (1L << (LEVEL - 196)) | (1L << (NO - 196)) | (1L << (OPTION - 196)) | (1L << (PRIVILEGES - 196)) | (1L << (READ - 196)))) != 0) || ((((_la - 260)) & ~0x3f) == 0 && ((1L << (_la - 260)) & ((1L << (ROLE - 260)) | (1L << (ROWS - 260)) | (1L << (START - 260)) | (1L << (TRANSACTION - 260)) | (1L << (USER - 260)) | (1L << (ACTION - 260)) | (1L << (CACHE - 260)) | (1L << (CHARACTERISTICS - 260)) | (1L << (CLUSTER - 260)) | (1L << (COMMENTS - 260)) | (1L << (CONCURRENTLY - 260)) | (1L << (CONSTRAINTS - 260)) | (1L << (CYCLE - 260)) | (1L << (DATA - 260)) | (1L << (DATABASE - 260)) | (1L << (DEFAULTS - 260)) | (1L << (DEFERRED - 260)) | (1L << (DEPENDS - 260)) | (1L << (DOMAIN - 260)) | (1L << (EXCLUDING - 260)) | (1L << (EXECUTE - 260)) | (1L << (EXTENDED - 260)) | (1L << (EXTENSION - 260)) | (1L << (EXTERNAL - 260)) | (1L << (EXTRACT - 260)) | (1L << (FILTER - 260)) | (1L << (FIRST - 260)) | (1L << (FOLLOWING - 260)) | (1L << (FORCE - 260)) | (1L << (GLOBAL - 260)) | (1L << (IDENTITY - 260)) | (1L << (IMMEDIATE - 260)) | (1L << (INCLUDING - 260)) | (1L << (INCREMENT - 260)) | (1L << (INDEXES - 260)) | (1L << (INHERIT - 260)) | (1L << (INHERITS - 260)) | (1L << (INCLUDE - 260)) | (1L << (LANGUAGE - 260)) | (1L << (LARGE - 260)) | (1L << (LAST - 260)) | (1L << (LOGGED - 260)) | (1L << (MAIN - 260)) | (1L << (MATCH - 260)) | (1L << (MINVALUE - 260)) | (1L << (NOTHING - 260)) | (1L << (NULLS - 260)) | (1L << (OBJECT - 260)) | (1L << (OIDS - 260)) | (1L << (OVER - 260)) | (1L << (OWNED - 260)) | (1L << (OWNER - 260)) | (1L << (PARTIAL - 260)) | (1L << (PLAIN - 260)) | (1L << (PRECEDING - 260)) | (1L << (RANGE - 260)) | (1L << (RENAME - 260)) | (1L << (REPLICA - 260)) | (1L << (RESET - 260)))) != 0) || ((((_la - 324)) & ~0x3f) == 0 && ((1L << (_la - 324)) & ((1L << (RESTART - 324)) | (1L << (RESTRICT - 324)) | (1L << (ROUTINE - 324)) | (1L << (RULE - 324)) | (1L << (SECURITY - 324)) | (1L << (SEQUENCE - 324)) | (1L << (SESSION - 324)) | (1L << (SESSION_USER - 324)) | (1L << (SHOW - 324)) | (1L << (SIMPLE - 324)) | (1L << (STATISTICS - 324)) | (1L << (STORAGE - 324)) | (1L << (TABLESPACE - 324)) | (1L << (TEMP - 324)) | (1L << (TEMPORARY - 324)) | (1L << (UNBOUNDED - 324)) | (1L << (UNLOGGED - 324)) | (1L << (VALID - 324)) | (1L << (VALIDATE - 324)) | (1L << (WITHIN - 324)) | (1L << (WITHOUT - 324)) | (1L << (ZONE - 324)) | (1L << (OF - 324)) | (1L << (UESCAPE - 324)) | (1L << (GROUPS - 324)) | (1L << (RECURSIVE - 324)) | (1L << (INT - 324)) | (1L << (INT2 - 324)) | (1L << (INT4 - 324)) | (1L << (INT8 - 324)) | (1L << (FLOAT - 324)) | (1L << (FLOAT4 - 324)) | (1L << (FLOAT8 - 324)) | (1L << (VARCHAR - 324)) | (1L << (BYTEA - 324)) | (1L << (ENUM - 324)) | (1L << (POINT - 324)) | (1L << (LSEG - 324)) | (1L << (BOX - 324)) | (1L << (PATH - 324)) | (1L << (POLYGON - 324)) | (1L << (CIRCLE - 324)) | (1L << (INET - 324)) | (1L << (BIT - 324)) | (1L << (TSQUERY - 324)) | (1L << (XML - 324)) | (1L << (JSON - 324)) | (1L << (INT4RANGE - 324)) | (1L << (INT8RANGE - 324)) | (1L << (NUMRANGE - 324)) | (1L << (DATERANGE - 324)))) != 0) || ((((_la - 388)) & ~0x3f) == 0 && ((1L << (_la - 388)) & ((1L << (TABLESAMPLE - 388)) | (1L << (ORDINALITY - 388)) | (1L << (CURRENT_ROLE - 388)) | (1L << (CURRENT_CATALOG - 388)) | (1L << (CURRENT_SCHEMA - 388)) | (1L << (NORMALIZE - 388)) | (1L << (OVERLAY - 388)) | (1L << (XMLCONCAT - 388)) | (1L << (XMLELEMENT - 388)) | (1L << (XMLEXISTS - 388)) | (1L << (XMLFOREST - 388)) | (1L << (XMLPARSE - 388)) | (1L << (XMLPI - 388)) | (1L << (XMLROOT - 388)) | (1L << (XMLSERIALIZE - 388)) | (1L << (TREAT - 388)) | (1L << (NFC - 388)) | (1L << (NFD - 388)) | (1L << (NFKC - 388)) | (1L << (NFKD - 388)) | (1L << (REF - 388)) | (1L << (PASSING - 388)) | (1L << (VERSION - 388)) | (1L << (YES - 388)) | (1L << (STANDALONE - 388)) | (1L << (GREATEST - 388)) | (1L << (LEAST - 388)) | (1L << (MATERIALIZED - 388)) | (1L << (OPERATOR - 388)) | (1L << (SHARE - 388)) | (1L << (ROLLUP - 388)) | (1L << (ILIKE - 388)) | (1L << (SIMILAR - 388)) | (1L << (ISNULL - 388)) | (1L << (NOTNULL - 388)) | (1L << (DOCUMENT - 388)) | (1L << (NORMALIZED - 388)) | (1L << (NOWAIT - 388)) | (1L << (LOCKED - 388)) | (1L << (COLUMNS - 388)) | (1L << (CONTENT - 388)) | (1L << (STRIP - 388)) | (1L << (WHITESPACE - 388)) | (1L << (CONFLICT - 388)) | (1L << (OVERRIDING - 388)) | (1L << (SYSTEM - 388)) | (1L << (ABORT - 388)) | (1L << (ABSOLUTE - 388)) | (1L << (ACCESS - 388)) | (1L << (AFTER - 388)) | (1L << (AGGREGATE - 388)))) != 0) || ((((_la - 452)) & ~0x3f) == 0 && ((1L << (_la - 452)) & ((1L << (ALSO - 452)) | (1L << (ATTACH - 452)) | (1L << (ATTRIBUTE - 452)) | (1L << (BACKWARD - 452)) | (1L << (BEFORE - 452)) | (1L << (ASSERTION - 452)) | (1L << (ASSIGNMENT - 452)) | (1L << (CONTINUE - 452)) | (1L << (CONVERSION - 452)) | (1L << (COPY - 452)) | (1L << (COST - 452)) | (1L << (CSV - 452)) | (1L << (CALLED - 452)) | (1L << (CATALOG - 452)) | (1L << (CHAIN - 452)) | (1L << (CHECKPOINT - 452)) | (1L << (CLASS - 452)) | (1L << (CONFIGURATION - 452)) | (1L << (COMMENT - 452)) | (1L << (DETACH - 452)) | (1L << (DICTIONARY - 452)) | (1L << (EXPRESSION - 452)) | (1L << (INSENSITIVE - 452)) | (1L << (DISCARD - 452)) | (1L << (OFF - 452)) | (1L << (INSTEAD - 452)) | (1L << (EXPLAIN - 452)) | (1L << (INPUT - 452)) | (1L << (INLINE - 452)) | (1L << (PARALLEL - 452)) | (1L << (LEAKPROOF - 452)) | (1L << (COMMITTED - 452)) | (1L << (ENCODING - 452)) | (1L << (IMPLICIT - 452)) | (1L << (DELIMITER - 452)) | (1L << (CURSOR - 452)) | (1L << (EACH - 452)) | (1L << (EVENT - 452)) | (1L << (DEALLOCATE - 452)) | (1L << (CONNECTION - 452)) | (1L << (DECLARE - 452)) | (1L << (FAMILY - 452)) | (1L << (FORWARD - 452)) | (1L << (EXCLUSIVE - 452)) | (1L << (FUNCTIONS - 452)) | (1L << (LOCATION - 452)) | (1L << (LABEL - 452)) | (1L << (DELIMITERS - 452)) | (1L << (HANDLER - 452)) | (1L << (HEADER - 452)) | (1L << (IMMUTABLE - 452)) | (1L << (GRANTED - 452)) | (1L << (HOLD - 452)) | (1L << (MAPPING - 452)) | (1L << (OLD - 452)) | (1L << (METHOD - 452)) | (1L << (LOAD - 452)) | (1L << (LISTEN - 452)) | (1L << (MODE - 452)) | (1L << (MOVE - 452)) | (1L << (PROCEDURAL - 452)) | (1L << (PARSER - 452)) | (1L << (PROCEDURES - 452)))) != 0) || ((((_la - 516)) & ~0x3f) == 0 && ((1L << (_la - 516)) & ((1L << (ENCRYPTED - 516)) | (1L << (PUBLICATION - 516)) | (1L << (PROGRAM - 516)) | (1L << (REFERENCING - 516)) | (1L << (PLANS - 516)) | (1L << (REINDEX - 516)) | (1L << (PRIOR - 516)) | (1L << (PASSWORD - 516)) | (1L << (RELATIVE - 516)) | (1L << (QUOTE - 516)) | (1L << (ROUTINES - 516)) | (1L << (REPLACE - 516)) | (1L << (SNAPSHOT - 516)) | (1L << (REFRESH - 516)) | (1L << (PREPARE - 516)) | (1L << (OPTIONS - 516)) | (1L << (IMPORT - 516)) | (1L << (INVOKER - 516)) | (1L << (NEW - 516)) | (1L << (PREPARED - 516)) | (1L << (SCROLL - 516)) | (1L << (SEQUENCES - 516)) | (1L << (SYSID - 516)) | (1L << (REASSIGN - 516)) | (1L << (SERVER - 516)) | (1L << (SUBSCRIPTION - 516)) | (1L << (SEARCH - 516)) | (1L << (SCHEMAS - 516)) | (1L << (RECHECK - 516)) | (1L << (POLICY - 516)) | (1L << (NOTIFY - 516)) | (1L << (LOCK - 516)) | (1L << (RELEASE - 516)) | (1L << (SERIALIZABLE - 516)) | (1L << (RETURNS - 516)) | (1L << (STATEMENT - 516)) | (1L << (STDIN - 516)) | (1L << (STDOUT - 516)) | (1L << (TABLES - 516)) | (1L << (SUPPORT - 516)) | (1L << (STABLE - 516)) | (1L << (TEMPLATE - 516)) | (1L << (UNENCRYPTED - 516)) | (1L << (VIEWS - 516)) | (1L << (UNCOMMITTED - 516)) | (1L << (TRANSFORM - 516)) | (1L << (UNLISTEN - 516)) | (1L << (TRUSTED - 516)) | (1L << (VALIDATOR - 516)) | (1L << (UNTIL - 516)) | (1L << (VACUUM - 516)) | (1L << (VOLATILE - 516)) | (1L << (STORED - 516)) | (1L << (WRITE - 516)) | (1L << (STRICT - 516)) | (1L << (TYPES - 516)) | (1L << (WRAPPER - 516)) | (1L << (WORK - 516)) | (1L << (FREEZE - 516)) | (1L << (AUTHORIZATION - 516)) | (1L << (VERBOSE - 516)) | (1L << (PARAM - 516)))) != 0) || ((((_la - 582)) & ~0x3f) == 0 && ((1L << (_la - 582)) & ((1L << (PREDICT - 582)) | (1L << (TS_REWRITE - 582)) | (1L << (INT16 - 582)) | (1L << (INT1 - 582)) | (1L << (ELEM_CONTAINED_BY_RANGE - 582)) | (1L << (LOWER_INF - 582)) | (1L << (UPPER_INF - 582)) | (1L << (ABBREV - 582)) | (1L << (SET_MASKLEN - 582)) | (1L << (TRUNC - 582)) | (1L << (IDENTIFIER_ - 582)) | (1L << (STRING_ - 582)) | (1L << (NUMBER_ - 582)))) != 0)) {
					{
					setState(3263);
					sliceBound();
					}
				}

				setState(3266);
				match(RBT_);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class SliceBoundContext extends ParserRuleContext {
		public AExprContext aExpr() {
			return getRuleContext(AExprContext.class,0);
		}
		public SliceBoundContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_sliceBound; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitSliceBound(this);
			else return visitor.visitChildren(this);
		}
	}

	public final SliceBoundContext sliceBound() throws RecognitionException {
		SliceBoundContext _localctx = new SliceBoundContext(_ctx, getState());
		enterRule(_localctx, 294, RULE_sliceBound);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3269);
			aExpr(0);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class InExprContext extends ParserRuleContext {
		public SelectWithParensContext selectWithParens() {
			return getRuleContext(SelectWithParensContext.class,0);
		}
		public TerminalNode LP_() { return getToken(OpenGaussStatementParser.LP_, 0); }
		public ExprListContext exprList() {
			return getRuleContext(ExprListContext.class,0);
		}
		public TerminalNode RP_() { return getToken(OpenGaussStatementParser.RP_, 0); }
		public InExprContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_inExpr; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitInExpr(this);
			else return visitor.visitChildren(this);
		}
	}

	public final InExprContext inExpr() throws RecognitionException {
		InExprContext _localctx = new InExprContext(_ctx, getState());
		enterRule(_localctx, 296, RULE_inExpr);
		try {
			setState(3276);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,201,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(3271);
				selectWithParens();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(3272);
				match(LP_);
				setState(3273);
				exprList(0);
				setState(3274);
				match(RP_);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CaseExprContext extends ParserRuleContext {
		public TerminalNode CASE() { return getToken(OpenGaussStatementParser.CASE, 0); }
		public WhenClauseListContext whenClauseList() {
			return getRuleContext(WhenClauseListContext.class,0);
		}
		public TerminalNode END() { return getToken(OpenGaussStatementParser.END, 0); }
		public CaseArgContext caseArg() {
			return getRuleContext(CaseArgContext.class,0);
		}
		public CaseDefaultContext caseDefault() {
			return getRuleContext(CaseDefaultContext.class,0);
		}
		public CaseExprContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_caseExpr; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitCaseExpr(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CaseExprContext caseExpr() throws RecognitionException {
		CaseExprContext _localctx = new CaseExprContext(_ctx, getState());
		enterRule(_localctx, 298, RULE_caseExpr);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3278);
			match(CASE);
			setState(3280);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << OR_) | (1L << TILDE_) | (1L << SIGNED_LEFT_SHIFT_) | (1L << SIGNED_RIGHT_SHIFT_) | (1L << PLUS_) | (1L << MINUS_) | (1L << POUND_) | (1L << LP_) | (1L << QUESTION_) | (1L << DOLLAR_) | (1L << UNICODE_ESCAPE) | (1L << JSON_EXTRACT_) | (1L << JSON_EXTRACT_TEXT_) | (1L << JSON_PATH_EXTRACT_) | (1L << JSON_PATH_EXTRACT_TEXT_) | (1L << JSONB_CONTAIN_RIGHT_) | (1L << JSONB_CONTAIN_LEFT_) | (1L << JSONB_CONTAIN_ALL_TOP_KEY_) | (1L << JSONB_PATH_DELETE_) | (1L << JSONB_PATH_CONTAIN_ANY_VALUE_) | (1L << JSONB_PATH_PREDICATE_CHECK_) | (1L << GEOMETRIC_LENGTH_) | (1L << GEOMETRIC_DISTANCE_))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (GEOMETRIC_EXTEND_RIGHT_ - 64)) | (1L << (GEOMETRIC_EXTEND_LEFT_ - 64)) | (1L << (GEOMETRIC_STRICT_BELOW_ - 64)) | (1L << (GEOMETRIC_STRICT_ABOVE_ - 64)) | (1L << (GEOMETRIC_EXTEND_ABOVE_ - 64)) | (1L << (GEOMETRIC_EXTEND_BELOW_ - 64)) | (1L << (GEOMETRIC_BELOW_ - 64)) | (1L << (GEOMETRIC_ABOVE_ - 64)) | (1L << (GEOMETRIC_INTERSECT_ - 64)) | (1L << (GEOMETRIC_PERPENDICULAR_ - 64)) | (1L << (GEOMETRIC_SAME_AS_ - 64)) | (1L << (DN_ - 64)) | (1L << (CUBE_ROOT_ - 64)) | (1L << (INSERT - 64)) | (1L << (UPDATE - 64)) | (1L << (DELETE - 64)) | (1L << (ALTER - 64)) | (1L << (DROP - 64)) | (1L << (TRUNCATE - 64)) | (1L << (SCHEMA - 64)) | (1L << (REVOKE - 64)) | (1L << (ADD - 64)) | (1L << (SET - 64)) | (1L << (INDEX - 64)) | (1L << (UNIQUE - 64)) | (1L << (KEY - 64)) | (1L << (POSITION - 64)) | (1L << (FUNCTION - 64)) | (1L << (TRIGGER - 64)) | (1L << (PROCEDURE - 64)) | (1L << (VIEW - 64)) | (1L << (CASE - 64)) | (1L << (CAST - 64)) | (1L << (TRIM - 64)) | (1L << (SUBSTRING - 64)) | (1L << (NATURAL - 64)) | (1L << (JOIN - 64)) | (1L << (FULL - 64)) | (1L << (INNER - 64)) | (1L << (OUTER - 64)) | (1L << (LEFT - 64)) | (1L << (RIGHT - 64)) | (1L << (CROSS - 64)))) != 0) || ((((_la - 131)) & ~0x3f) == 0 && ((1L << (_la - 131)) & ((1L << (IF - 131)) | (1L << (IS - 131)) | (1L << (NOT - 131)) | (1L << (NULL - 131)) | (1L << (TRUE - 131)) | (1L << (FALSE - 131)) | (1L << (EXISTS - 131)) | (1L << (LIKE - 131)) | (1L << (BY - 131)) | (1L << (BEGIN - 131)) | (1L << (COMMIT - 131)) | (1L << (ROLLBACK - 131)) | (1L << (SAVEPOINT - 131)) | (1L << (BOOLEAN - 131)) | (1L << (DOUBLE - 131)) | (1L << (CHAR - 131)) | (1L << (CHARACTER - 131)) | (1L << (ARRAY - 131)) | (1L << (INTERVAL - 131)) | (1L << (DATE - 131)) | (1L << (TIME - 131)) | (1L << (TIMESTAMP - 131)) | (1L << (LOCALTIME - 131)) | (1L << (LOCALTIMESTAMP - 131)) | (1L << (YEAR - 131)) | (1L << (MONTH - 131)) | (1L << (DAY - 131)) | (1L << (HOUR - 131)) | (1L << (MINUTE - 131)) | (1L << (SECOND - 131)) | (1L << (DEFAULT - 131)) | (1L << (CURRENT - 131)) | (1L << (ENABLE - 131)) | (1L << (DISABLE - 131)) | (1L << (CALL - 131)) | (1L << (PRESERVE - 131)) | (1L << (DEFINER - 131)) | (1L << (CURRENT_USER - 131)) | (1L << (SQL - 131)) | (1L << (CASCADED - 131)) | (1L << (LOCAL - 131)) | (1L << (CLOSE - 131)))) != 0) || ((((_la - 196)) & ~0x3f) == 0 && ((1L << (_la - 196)) & ((1L << (NEXT - 196)) | (1L << (NAME - 196)) | (1L << (COLLATION - 196)) | (1L << (NAMES - 196)) | (1L << (INTEGER - 196)) | (1L << (REAL - 196)) | (1L << (DECIMAL - 196)) | (1L << (TYPE - 196)) | (1L << (SMALLINT - 196)) | (1L << (BIGINT - 196)) | (1L << (NUMERIC - 196)) | (1L << (TEXT - 196)) | (1L << (REPEATABLE - 196)) | (1L << (CURRENT_DATE - 196)) | (1L << (CURRENT_TIME - 196)) | (1L << (CURRENT_TIMESTAMP - 196)) | (1L << (NULLIF - 196)) | (1L << (VARYING - 196)) | (1L << (NATIONAL - 196)) | (1L << (NCHAR - 196)) | (1L << (VALUE - 196)) | (1L << (COALESCE - 196)) | (1L << (TIES - 196)) | (1L << (CUBE - 196)) | (1L << (GROUPING - 196)) | (1L << (SETS - 196)) | (1L << (OTHERS - 196)) | (1L << (OVERLAPS - 196)) | (1L << (AT - 196)) | (1L << (DEC - 196)) | (1L << (MAXVALUE - 196)) | (1L << (ADMIN - 196)) | (1L << (BINARY - 196)) | (1L << (ESCAPE - 196)) | (1L << (EXCLUDE - 196)) | (1L << (MOD - 196)) | (1L << (PARTITION - 196)) | (1L << (ROW - 196)) | (1L << (UNKNOWN - 196)) | (1L << (ALWAYS - 196)) | (1L << (CASCADE - 196)) | (1L << (GENERATED - 196)) | (1L << (ISOLATION - 196)) | (1L << (LEVEL - 196)) | (1L << (NO - 196)) | (1L << (OPTION - 196)) | (1L << (PRIVILEGES - 196)) | (1L << (READ - 196)))) != 0) || ((((_la - 260)) & ~0x3f) == 0 && ((1L << (_la - 260)) & ((1L << (ROLE - 260)) | (1L << (ROWS - 260)) | (1L << (START - 260)) | (1L << (TRANSACTION - 260)) | (1L << (USER - 260)) | (1L << (ACTION - 260)) | (1L << (CACHE - 260)) | (1L << (CHARACTERISTICS - 260)) | (1L << (CLUSTER - 260)) | (1L << (COMMENTS - 260)) | (1L << (CONCURRENTLY - 260)) | (1L << (CONSTRAINTS - 260)) | (1L << (CYCLE - 260)) | (1L << (DATA - 260)) | (1L << (DATABASE - 260)) | (1L << (DEFAULTS - 260)) | (1L << (DEFERRED - 260)) | (1L << (DEPENDS - 260)) | (1L << (DOMAIN - 260)) | (1L << (EXCLUDING - 260)) | (1L << (EXECUTE - 260)) | (1L << (EXTENDED - 260)) | (1L << (EXTENSION - 260)) | (1L << (EXTERNAL - 260)) | (1L << (EXTRACT - 260)) | (1L << (FILTER - 260)) | (1L << (FIRST - 260)) | (1L << (FOLLOWING - 260)) | (1L << (FORCE - 260)) | (1L << (GLOBAL - 260)) | (1L << (IDENTITY - 260)) | (1L << (IMMEDIATE - 260)) | (1L << (INCLUDING - 260)) | (1L << (INCREMENT - 260)) | (1L << (INDEXES - 260)) | (1L << (INHERIT - 260)) | (1L << (INHERITS - 260)) | (1L << (INCLUDE - 260)) | (1L << (LANGUAGE - 260)) | (1L << (LARGE - 260)) | (1L << (LAST - 260)) | (1L << (LOGGED - 260)) | (1L << (MAIN - 260)) | (1L << (MATCH - 260)) | (1L << (MINVALUE - 260)) | (1L << (NOTHING - 260)) | (1L << (NULLS - 260)) | (1L << (OBJECT - 260)) | (1L << (OIDS - 260)) | (1L << (OVER - 260)) | (1L << (OWNED - 260)) | (1L << (OWNER - 260)) | (1L << (PARTIAL - 260)) | (1L << (PLAIN - 260)) | (1L << (PRECEDING - 260)) | (1L << (RANGE - 260)) | (1L << (RENAME - 260)) | (1L << (REPLICA - 260)) | (1L << (RESET - 260)))) != 0) || ((((_la - 324)) & ~0x3f) == 0 && ((1L << (_la - 324)) & ((1L << (RESTART - 324)) | (1L << (RESTRICT - 324)) | (1L << (ROUTINE - 324)) | (1L << (RULE - 324)) | (1L << (SECURITY - 324)) | (1L << (SEQUENCE - 324)) | (1L << (SESSION - 324)) | (1L << (SESSION_USER - 324)) | (1L << (SHOW - 324)) | (1L << (SIMPLE - 324)) | (1L << (STATISTICS - 324)) | (1L << (STORAGE - 324)) | (1L << (TABLESPACE - 324)) | (1L << (TEMP - 324)) | (1L << (TEMPORARY - 324)) | (1L << (UNBOUNDED - 324)) | (1L << (UNLOGGED - 324)) | (1L << (VALID - 324)) | (1L << (VALIDATE - 324)) | (1L << (WITHIN - 324)) | (1L << (WITHOUT - 324)) | (1L << (ZONE - 324)) | (1L << (OF - 324)) | (1L << (UESCAPE - 324)) | (1L << (GROUPS - 324)) | (1L << (RECURSIVE - 324)) | (1L << (INT - 324)) | (1L << (INT2 - 324)) | (1L << (INT4 - 324)) | (1L << (INT8 - 324)) | (1L << (FLOAT - 324)) | (1L << (FLOAT4 - 324)) | (1L << (FLOAT8 - 324)) | (1L << (VARCHAR - 324)) | (1L << (BYTEA - 324)) | (1L << (ENUM - 324)) | (1L << (POINT - 324)) | (1L << (LSEG - 324)) | (1L << (BOX - 324)) | (1L << (PATH - 324)) | (1L << (POLYGON - 324)) | (1L << (CIRCLE - 324)) | (1L << (INET - 324)) | (1L << (BIT - 324)) | (1L << (TSQUERY - 324)) | (1L << (XML - 324)) | (1L << (JSON - 324)) | (1L << (INT4RANGE - 324)) | (1L << (INT8RANGE - 324)) | (1L << (NUMRANGE - 324)) | (1L << (DATERANGE - 324)))) != 0) || ((((_la - 388)) & ~0x3f) == 0 && ((1L << (_la - 388)) & ((1L << (TABLESAMPLE - 388)) | (1L << (ORDINALITY - 388)) | (1L << (CURRENT_ROLE - 388)) | (1L << (CURRENT_CATALOG - 388)) | (1L << (CURRENT_SCHEMA - 388)) | (1L << (NORMALIZE - 388)) | (1L << (OVERLAY - 388)) | (1L << (XMLCONCAT - 388)) | (1L << (XMLELEMENT - 388)) | (1L << (XMLEXISTS - 388)) | (1L << (XMLFOREST - 388)) | (1L << (XMLPARSE - 388)) | (1L << (XMLPI - 388)) | (1L << (XMLROOT - 388)) | (1L << (XMLSERIALIZE - 388)) | (1L << (TREAT - 388)) | (1L << (NFC - 388)) | (1L << (NFD - 388)) | (1L << (NFKC - 388)) | (1L << (NFKD - 388)) | (1L << (REF - 388)) | (1L << (PASSING - 388)) | (1L << (VERSION - 388)) | (1L << (YES - 388)) | (1L << (STANDALONE - 388)) | (1L << (GREATEST - 388)) | (1L << (LEAST - 388)) | (1L << (MATERIALIZED - 388)) | (1L << (OPERATOR - 388)) | (1L << (SHARE - 388)) | (1L << (ROLLUP - 388)) | (1L << (ILIKE - 388)) | (1L << (SIMILAR - 388)) | (1L << (ISNULL - 388)) | (1L << (NOTNULL - 388)) | (1L << (DOCUMENT - 388)) | (1L << (NORMALIZED - 388)) | (1L << (NOWAIT - 388)) | (1L << (LOCKED - 388)) | (1L << (COLUMNS - 388)) | (1L << (CONTENT - 388)) | (1L << (STRIP - 388)) | (1L << (WHITESPACE - 388)) | (1L << (CONFLICT - 388)) | (1L << (OVERRIDING - 388)) | (1L << (SYSTEM - 388)) | (1L << (ABORT - 388)) | (1L << (ABSOLUTE - 388)) | (1L << (ACCESS - 388)) | (1L << (AFTER - 388)) | (1L << (AGGREGATE - 388)))) != 0) || ((((_la - 452)) & ~0x3f) == 0 && ((1L << (_la - 452)) & ((1L << (ALSO - 452)) | (1L << (ATTACH - 452)) | (1L << (ATTRIBUTE - 452)) | (1L << (BACKWARD - 452)) | (1L << (BEFORE - 452)) | (1L << (ASSERTION - 452)) | (1L << (ASSIGNMENT - 452)) | (1L << (CONTINUE - 452)) | (1L << (CONVERSION - 452)) | (1L << (COPY - 452)) | (1L << (COST - 452)) | (1L << (CSV - 452)) | (1L << (CALLED - 452)) | (1L << (CATALOG - 452)) | (1L << (CHAIN - 452)) | (1L << (CHECKPOINT - 452)) | (1L << (CLASS - 452)) | (1L << (CONFIGURATION - 452)) | (1L << (COMMENT - 452)) | (1L << (DETACH - 452)) | (1L << (DICTIONARY - 452)) | (1L << (EXPRESSION - 452)) | (1L << (INSENSITIVE - 452)) | (1L << (DISCARD - 452)) | (1L << (OFF - 452)) | (1L << (INSTEAD - 452)) | (1L << (EXPLAIN - 452)) | (1L << (INPUT - 452)) | (1L << (INLINE - 452)) | (1L << (PARALLEL - 452)) | (1L << (LEAKPROOF - 452)) | (1L << (COMMITTED - 452)) | (1L << (ENCODING - 452)) | (1L << (IMPLICIT - 452)) | (1L << (DELIMITER - 452)) | (1L << (CURSOR - 452)) | (1L << (EACH - 452)) | (1L << (EVENT - 452)) | (1L << (DEALLOCATE - 452)) | (1L << (CONNECTION - 452)) | (1L << (DECLARE - 452)) | (1L << (FAMILY - 452)) | (1L << (FORWARD - 452)) | (1L << (EXCLUSIVE - 452)) | (1L << (FUNCTIONS - 452)) | (1L << (LOCATION - 452)) | (1L << (LABEL - 452)) | (1L << (DELIMITERS - 452)) | (1L << (HANDLER - 452)) | (1L << (HEADER - 452)) | (1L << (IMMUTABLE - 452)) | (1L << (GRANTED - 452)) | (1L << (HOLD - 452)) | (1L << (MAPPING - 452)) | (1L << (OLD - 452)) | (1L << (METHOD - 452)) | (1L << (LOAD - 452)) | (1L << (LISTEN - 452)) | (1L << (MODE - 452)) | (1L << (MOVE - 452)) | (1L << (PROCEDURAL - 452)) | (1L << (PARSER - 452)) | (1L << (PROCEDURES - 452)))) != 0) || ((((_la - 516)) & ~0x3f) == 0 && ((1L << (_la - 516)) & ((1L << (ENCRYPTED - 516)) | (1L << (PUBLICATION - 516)) | (1L << (PROGRAM - 516)) | (1L << (REFERENCING - 516)) | (1L << (PLANS - 516)) | (1L << (REINDEX - 516)) | (1L << (PRIOR - 516)) | (1L << (PASSWORD - 516)) | (1L << (RELATIVE - 516)) | (1L << (QUOTE - 516)) | (1L << (ROUTINES - 516)) | (1L << (REPLACE - 516)) | (1L << (SNAPSHOT - 516)) | (1L << (REFRESH - 516)) | (1L << (PREPARE - 516)) | (1L << (OPTIONS - 516)) | (1L << (IMPORT - 516)) | (1L << (INVOKER - 516)) | (1L << (NEW - 516)) | (1L << (PREPARED - 516)) | (1L << (SCROLL - 516)) | (1L << (SEQUENCES - 516)) | (1L << (SYSID - 516)) | (1L << (REASSIGN - 516)) | (1L << (SERVER - 516)) | (1L << (SUBSCRIPTION - 516)) | (1L << (SEARCH - 516)) | (1L << (SCHEMAS - 516)) | (1L << (RECHECK - 516)) | (1L << (POLICY - 516)) | (1L << (NOTIFY - 516)) | (1L << (LOCK - 516)) | (1L << (RELEASE - 516)) | (1L << (SERIALIZABLE - 516)) | (1L << (RETURNS - 516)) | (1L << (STATEMENT - 516)) | (1L << (STDIN - 516)) | (1L << (STDOUT - 516)) | (1L << (TABLES - 516)) | (1L << (SUPPORT - 516)) | (1L << (STABLE - 516)) | (1L << (TEMPLATE - 516)) | (1L << (UNENCRYPTED - 516)) | (1L << (VIEWS - 516)) | (1L << (UNCOMMITTED - 516)) | (1L << (TRANSFORM - 516)) | (1L << (UNLISTEN - 516)) | (1L << (TRUSTED - 516)) | (1L << (VALIDATOR - 516)) | (1L << (UNTIL - 516)) | (1L << (VACUUM - 516)) | (1L << (VOLATILE - 516)) | (1L << (STORED - 516)) | (1L << (WRITE - 516)) | (1L << (STRICT - 516)) | (1L << (TYPES - 516)) | (1L << (WRAPPER - 516)) | (1L << (WORK - 516)) | (1L << (FREEZE - 516)) | (1L << (AUTHORIZATION - 516)) | (1L << (VERBOSE - 516)) | (1L << (PARAM - 516)))) != 0) || ((((_la - 582)) & ~0x3f) == 0 && ((1L << (_la - 582)) & ((1L << (PREDICT - 582)) | (1L << (TS_REWRITE - 582)) | (1L << (INT16 - 582)) | (1L << (INT1 - 582)) | (1L << (ELEM_CONTAINED_BY_RANGE - 582)) | (1L << (LOWER_INF - 582)) | (1L << (UPPER_INF - 582)) | (1L << (ABBREV - 582)) | (1L << (SET_MASKLEN - 582)) | (1L << (TRUNC - 582)) | (1L << (IDENTIFIER_ - 582)) | (1L << (STRING_ - 582)) | (1L << (NUMBER_ - 582)))) != 0)) {
				{
				setState(3279);
				caseArg();
				}
			}

			setState(3282);
			whenClauseList();
			setState(3284);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==ELSE) {
				{
				setState(3283);
				caseDefault();
				}
			}

			setState(3286);
			match(END);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class WhenClauseListContext extends ParserRuleContext {
		public List whenClause() {
			return getRuleContexts(WhenClauseContext.class);
		}
		public WhenClauseContext whenClause(int i) {
			return getRuleContext(WhenClauseContext.class,i);
		}
		public WhenClauseListContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_whenClauseList; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitWhenClauseList(this);
			else return visitor.visitChildren(this);
		}
	}

	public final WhenClauseListContext whenClauseList() throws RecognitionException {
		WhenClauseListContext _localctx = new WhenClauseListContext(_ctx, getState());
		enterRule(_localctx, 300, RULE_whenClauseList);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3289); 
			_errHandler.sync(this);
			_la = _input.LA(1);
			do {
				{
				{
				setState(3288);
				whenClause();
				}
				}
				setState(3291); 
				_errHandler.sync(this);
				_la = _input.LA(1);
			} while ( _la==WHEN );
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class WhenClauseContext extends ParserRuleContext {
		public TerminalNode WHEN() { return getToken(OpenGaussStatementParser.WHEN, 0); }
		public List aExpr() {
			return getRuleContexts(AExprContext.class);
		}
		public AExprContext aExpr(int i) {
			return getRuleContext(AExprContext.class,i);
		}
		public TerminalNode THEN() { return getToken(OpenGaussStatementParser.THEN, 0); }
		public WhenClauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_whenClause; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitWhenClause(this);
			else return visitor.visitChildren(this);
		}
	}

	public final WhenClauseContext whenClause() throws RecognitionException {
		WhenClauseContext _localctx = new WhenClauseContext(_ctx, getState());
		enterRule(_localctx, 302, RULE_whenClause);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3293);
			match(WHEN);
			setState(3294);
			aExpr(0);
			setState(3295);
			match(THEN);
			setState(3296);
			aExpr(0);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CaseDefaultContext extends ParserRuleContext {
		public TerminalNode ELSE() { return getToken(OpenGaussStatementParser.ELSE, 0); }
		public AExprContext aExpr() {
			return getRuleContext(AExprContext.class,0);
		}
		public CaseDefaultContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_caseDefault; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitCaseDefault(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CaseDefaultContext caseDefault() throws RecognitionException {
		CaseDefaultContext _localctx = new CaseDefaultContext(_ctx, getState());
		enterRule(_localctx, 304, RULE_caseDefault);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3298);
			match(ELSE);
			setState(3299);
			aExpr(0);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CaseArgContext extends ParserRuleContext {
		public AExprContext aExpr() {
			return getRuleContext(AExprContext.class,0);
		}
		public CaseArgContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_caseArg; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitCaseArg(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CaseArgContext caseArg() throws RecognitionException {
		CaseArgContext _localctx = new CaseArgContext(_ctx, getState());
		enterRule(_localctx, 306, RULE_caseArg);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3301);
			aExpr(0);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ColumnrefContext extends ParserRuleContext {
		public ColIdContext colId() {
			return getRuleContext(ColIdContext.class,0);
		}
		public IndirectionContext indirection() {
			return getRuleContext(IndirectionContext.class,0);
		}
		public ColumnrefContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_columnref; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitColumnref(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ColumnrefContext columnref() throws RecognitionException {
		ColumnrefContext _localctx = new ColumnrefContext(_ctx, getState());
		enterRule(_localctx, 308, RULE_columnref);
		try {
			setState(3307);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,205,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(3303);
				colId();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(3304);
				colId();
				setState(3305);
				indirection(0);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class QualOpContext extends ParserRuleContext {
		public JsonOperatorContext jsonOperator() {
			return getRuleContext(JsonOperatorContext.class,0);
		}
		public GeometricOperatorContext geometricOperator() {
			return getRuleContext(GeometricOperatorContext.class,0);
		}
		public TerminalNode OPERATOR() { return getToken(OpenGaussStatementParser.OPERATOR, 0); }
		public TerminalNode LP_() { return getToken(OpenGaussStatementParser.LP_, 0); }
		public AnyOperatorContext anyOperator() {
			return getRuleContext(AnyOperatorContext.class,0);
		}
		public TerminalNode RP_() { return getToken(OpenGaussStatementParser.RP_, 0); }
		public QualOpContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_qualOp; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitQualOp(this);
			else return visitor.visitChildren(this);
		}
	}

	public final QualOpContext qualOp() throws RecognitionException {
		QualOpContext _localctx = new QualOpContext(_ctx, getState());
		enterRule(_localctx, 310, RULE_qualOp);
		try {
			setState(3316);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,206,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(3309);
				jsonOperator();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(3310);
				geometricOperator();
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(3311);
				match(OPERATOR);
				setState(3312);
				match(LP_);
				setState(3313);
				anyOperator();
				setState(3314);
				match(RP_);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class SubqueryOpContext extends ParserRuleContext {
		public AllOpContext allOp() {
			return getRuleContext(AllOpContext.class,0);
		}
		public TerminalNode OPERATOR() { return getToken(OpenGaussStatementParser.OPERATOR, 0); }
		public TerminalNode LP_() { return getToken(OpenGaussStatementParser.LP_, 0); }
		public AnyOperatorContext anyOperator() {
			return getRuleContext(AnyOperatorContext.class,0);
		}
		public TerminalNode RP_() { return getToken(OpenGaussStatementParser.RP_, 0); }
		public TerminalNode LIKE() { return getToken(OpenGaussStatementParser.LIKE, 0); }
		public TerminalNode NOT() { return getToken(OpenGaussStatementParser.NOT, 0); }
		public TerminalNode TILDE_() { return getToken(OpenGaussStatementParser.TILDE_, 0); }
		public TerminalNode NOT_() { return getToken(OpenGaussStatementParser.NOT_, 0); }
		public SubqueryOpContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_subqueryOp; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitSubqueryOp(this);
			else return visitor.visitChildren(this);
		}
	}

	public final SubqueryOpContext subqueryOp() throws RecognitionException {
		SubqueryOpContext _localctx = new SubqueryOpContext(_ctx, getState());
		enterRule(_localctx, 312, RULE_subqueryOp);
		try {
			setState(3330);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,207,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(3318);
				allOp();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(3319);
				match(OPERATOR);
				setState(3320);
				match(LP_);
				setState(3321);
				anyOperator();
				setState(3322);
				match(RP_);
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(3324);
				match(LIKE);
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(3325);
				match(NOT);
				setState(3326);
				match(LIKE);
				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(3327);
				match(TILDE_);
				}
				break;
			case 6:
				enterOuterAlt(_localctx, 6);
				{
				setState(3328);
				match(NOT_);
				setState(3329);
				match(TILDE_);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AllOpContext extends ParserRuleContext {
		public OpContext op() {
			return getRuleContext(OpContext.class,0);
		}
		public MathOperatorContext mathOperator() {
			return getRuleContext(MathOperatorContext.class,0);
		}
		public AllOpContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_allOp; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitAllOp(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AllOpContext allOp() throws RecognitionException {
		AllOpContext _localctx = new AllOpContext(_ctx, getState());
		enterRule(_localctx, 314, RULE_allOp);
		try {
			setState(3334);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,208,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(3332);
				op();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(3333);
				mathOperator();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class OpContext extends ParserRuleContext {
		public List AND_() { return getTokens(OpenGaussStatementParser.AND_); }
		public TerminalNode AND_(int i) {
			return getToken(OpenGaussStatementParser.AND_, i);
		}
		public List OR_() { return getTokens(OpenGaussStatementParser.OR_); }
		public TerminalNode OR_(int i) {
			return getToken(OpenGaussStatementParser.OR_, i);
		}
		public List NOT_() { return getTokens(OpenGaussStatementParser.NOT_); }
		public TerminalNode NOT_(int i) {
			return getToken(OpenGaussStatementParser.NOT_, i);
		}
		public List TILDE_() { return getTokens(OpenGaussStatementParser.TILDE_); }
		public TerminalNode TILDE_(int i) {
			return getToken(OpenGaussStatementParser.TILDE_, i);
		}
		public List VERTICAL_BAR_() { return getTokens(OpenGaussStatementParser.VERTICAL_BAR_); }
		public TerminalNode VERTICAL_BAR_(int i) {
			return getToken(OpenGaussStatementParser.VERTICAL_BAR_, i);
		}
		public List AMPERSAND_() { return getTokens(OpenGaussStatementParser.AMPERSAND_); }
		public TerminalNode AMPERSAND_(int i) {
			return getToken(OpenGaussStatementParser.AMPERSAND_, i);
		}
		public List SIGNED_LEFT_SHIFT_() { return getTokens(OpenGaussStatementParser.SIGNED_LEFT_SHIFT_); }
		public TerminalNode SIGNED_LEFT_SHIFT_(int i) {
			return getToken(OpenGaussStatementParser.SIGNED_LEFT_SHIFT_, i);
		}
		public List SIGNED_RIGHT_SHIFT_() { return getTokens(OpenGaussStatementParser.SIGNED_RIGHT_SHIFT_); }
		public TerminalNode SIGNED_RIGHT_SHIFT_(int i) {
			return getToken(OpenGaussStatementParser.SIGNED_RIGHT_SHIFT_, i);
		}
		public List CARET_() { return getTokens(OpenGaussStatementParser.CARET_); }
		public TerminalNode CARET_(int i) {
			return getToken(OpenGaussStatementParser.CARET_, i);
		}
		public List MOD_() { return getTokens(OpenGaussStatementParser.MOD_); }
		public TerminalNode MOD_(int i) {
			return getToken(OpenGaussStatementParser.MOD_, i);
		}
		public List COLON_() { return getTokens(OpenGaussStatementParser.COLON_); }
		public TerminalNode COLON_(int i) {
			return getToken(OpenGaussStatementParser.COLON_, i);
		}
		public List PLUS_() { return getTokens(OpenGaussStatementParser.PLUS_); }
		public TerminalNode PLUS_(int i) {
			return getToken(OpenGaussStatementParser.PLUS_, i);
		}
		public List MINUS_() { return getTokens(OpenGaussStatementParser.MINUS_); }
		public TerminalNode MINUS_(int i) {
			return getToken(OpenGaussStatementParser.MINUS_, i);
		}
		public List ASTERISK_() { return getTokens(OpenGaussStatementParser.ASTERISK_); }
		public TerminalNode ASTERISK_(int i) {
			return getToken(OpenGaussStatementParser.ASTERISK_, i);
		}
		public List SLASH_() { return getTokens(OpenGaussStatementParser.SLASH_); }
		public TerminalNode SLASH_(int i) {
			return getToken(OpenGaussStatementParser.SLASH_, i);
		}
		public List BACKSLASH_() { return getTokens(OpenGaussStatementParser.BACKSLASH_); }
		public TerminalNode BACKSLASH_(int i) {
			return getToken(OpenGaussStatementParser.BACKSLASH_, i);
		}
		public List DOT_() { return getTokens(OpenGaussStatementParser.DOT_); }
		public TerminalNode DOT_(int i) {
			return getToken(OpenGaussStatementParser.DOT_, i);
		}
		public List DOT_ASTERISK_() { return getTokens(OpenGaussStatementParser.DOT_ASTERISK_); }
		public TerminalNode DOT_ASTERISK_(int i) {
			return getToken(OpenGaussStatementParser.DOT_ASTERISK_, i);
		}
		public List SAFE_EQ_() { return getTokens(OpenGaussStatementParser.SAFE_EQ_); }
		public TerminalNode SAFE_EQ_(int i) {
			return getToken(OpenGaussStatementParser.SAFE_EQ_, i);
		}
		public List DEQ_() { return getTokens(OpenGaussStatementParser.DEQ_); }
		public TerminalNode DEQ_(int i) {
			return getToken(OpenGaussStatementParser.DEQ_, i);
		}
		public List EQ_() { return getTokens(OpenGaussStatementParser.EQ_); }
		public TerminalNode EQ_(int i) {
			return getToken(OpenGaussStatementParser.EQ_, i);
		}
		public List CQ_() { return getTokens(OpenGaussStatementParser.CQ_); }
		public TerminalNode CQ_(int i) {
			return getToken(OpenGaussStatementParser.CQ_, i);
		}
		public List NEQ_() { return getTokens(OpenGaussStatementParser.NEQ_); }
		public TerminalNode NEQ_(int i) {
			return getToken(OpenGaussStatementParser.NEQ_, i);
		}
		public List GT_() { return getTokens(OpenGaussStatementParser.GT_); }
		public TerminalNode GT_(int i) {
			return getToken(OpenGaussStatementParser.GT_, i);
		}
		public List GTE_() { return getTokens(OpenGaussStatementParser.GTE_); }
		public TerminalNode GTE_(int i) {
			return getToken(OpenGaussStatementParser.GTE_, i);
		}
		public List LT_() { return getTokens(OpenGaussStatementParser.LT_); }
		public TerminalNode LT_(int i) {
			return getToken(OpenGaussStatementParser.LT_, i);
		}
		public List LTE_() { return getTokens(OpenGaussStatementParser.LTE_); }
		public TerminalNode LTE_(int i) {
			return getToken(OpenGaussStatementParser.LTE_, i);
		}
		public List POUND_() { return getTokens(OpenGaussStatementParser.POUND_); }
		public TerminalNode POUND_(int i) {
			return getToken(OpenGaussStatementParser.POUND_, i);
		}
		public List LP_() { return getTokens(OpenGaussStatementParser.LP_); }
		public TerminalNode LP_(int i) {
			return getToken(OpenGaussStatementParser.LP_, i);
		}
		public List RP_() { return getTokens(OpenGaussStatementParser.RP_); }
		public TerminalNode RP_(int i) {
			return getToken(OpenGaussStatementParser.RP_, i);
		}
		public List LBE_() { return getTokens(OpenGaussStatementParser.LBE_); }
		public TerminalNode LBE_(int i) {
			return getToken(OpenGaussStatementParser.LBE_, i);
		}
		public List RBE_() { return getTokens(OpenGaussStatementParser.RBE_); }
		public TerminalNode RBE_(int i) {
			return getToken(OpenGaussStatementParser.RBE_, i);
		}
		public List LBT_() { return getTokens(OpenGaussStatementParser.LBT_); }
		public TerminalNode LBT_(int i) {
			return getToken(OpenGaussStatementParser.LBT_, i);
		}
		public List RBT_() { return getTokens(OpenGaussStatementParser.RBT_); }
		public TerminalNode RBT_(int i) {
			return getToken(OpenGaussStatementParser.RBT_, i);
		}
		public List COMMA_() { return getTokens(OpenGaussStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(OpenGaussStatementParser.COMMA_, i);
		}
		public List DQ_() { return getTokens(OpenGaussStatementParser.DQ_); }
		public TerminalNode DQ_(int i) {
			return getToken(OpenGaussStatementParser.DQ_, i);
		}
		public List SQ_() { return getTokens(OpenGaussStatementParser.SQ_); }
		public TerminalNode SQ_(int i) {
			return getToken(OpenGaussStatementParser.SQ_, i);
		}
		public List BQ_() { return getTokens(OpenGaussStatementParser.BQ_); }
		public TerminalNode BQ_(int i) {
			return getToken(OpenGaussStatementParser.BQ_, i);
		}
		public List QUESTION_() { return getTokens(OpenGaussStatementParser.QUESTION_); }
		public TerminalNode QUESTION_(int i) {
			return getToken(OpenGaussStatementParser.QUESTION_, i);
		}
		public List DOLLAR_() { return getTokens(OpenGaussStatementParser.DOLLAR_); }
		public TerminalNode DOLLAR_(int i) {
			return getToken(OpenGaussStatementParser.DOLLAR_, i);
		}
		public List AT_() { return getTokens(OpenGaussStatementParser.AT_); }
		public TerminalNode AT_(int i) {
			return getToken(OpenGaussStatementParser.AT_, i);
		}
		public List SEMI_() { return getTokens(OpenGaussStatementParser.SEMI_); }
		public TerminalNode SEMI_(int i) {
			return getToken(OpenGaussStatementParser.SEMI_, i);
		}
		public List TILDE_TILDE_() { return getTokens(OpenGaussStatementParser.TILDE_TILDE_); }
		public TerminalNode TILDE_TILDE_(int i) {
			return getToken(OpenGaussStatementParser.TILDE_TILDE_, i);
		}
		public List NOT_TILDE_TILDE_() { return getTokens(OpenGaussStatementParser.NOT_TILDE_TILDE_); }
		public TerminalNode NOT_TILDE_TILDE_(int i) {
			return getToken(OpenGaussStatementParser.NOT_TILDE_TILDE_, i);
		}
		public List TYPE_CAST_() { return getTokens(OpenGaussStatementParser.TYPE_CAST_); }
		public TerminalNode TYPE_CAST_(int i) {
			return getToken(OpenGaussStatementParser.TYPE_CAST_, i);
		}
		public List ILIKE_() { return getTokens(OpenGaussStatementParser.ILIKE_); }
		public TerminalNode ILIKE_(int i) {
			return getToken(OpenGaussStatementParser.ILIKE_, i);
		}
		public List NOT_ILIKE_() { return getTokens(OpenGaussStatementParser.NOT_ILIKE_); }
		public TerminalNode NOT_ILIKE_(int i) {
			return getToken(OpenGaussStatementParser.NOT_ILIKE_, i);
		}
		public List UNICODE_ESCAPE() { return getTokens(OpenGaussStatementParser.UNICODE_ESCAPE); }
		public TerminalNode UNICODE_ESCAPE(int i) {
			return getToken(OpenGaussStatementParser.UNICODE_ESCAPE, i);
		}
		public List JSON_EXTRACT_() { return getTokens(OpenGaussStatementParser.JSON_EXTRACT_); }
		public TerminalNode JSON_EXTRACT_(int i) {
			return getToken(OpenGaussStatementParser.JSON_EXTRACT_, i);
		}
		public List JSON_EXTRACT_TEXT_() { return getTokens(OpenGaussStatementParser.JSON_EXTRACT_TEXT_); }
		public TerminalNode JSON_EXTRACT_TEXT_(int i) {
			return getToken(OpenGaussStatementParser.JSON_EXTRACT_TEXT_, i);
		}
		public List JSON_PATH_EXTRACT_() { return getTokens(OpenGaussStatementParser.JSON_PATH_EXTRACT_); }
		public TerminalNode JSON_PATH_EXTRACT_(int i) {
			return getToken(OpenGaussStatementParser.JSON_PATH_EXTRACT_, i);
		}
		public List JSON_PATH_EXTRACT_TEXT_() { return getTokens(OpenGaussStatementParser.JSON_PATH_EXTRACT_TEXT_); }
		public TerminalNode JSON_PATH_EXTRACT_TEXT_(int i) {
			return getToken(OpenGaussStatementParser.JSON_PATH_EXTRACT_TEXT_, i);
		}
		public List JSONB_CONTAIN_RIGHT_() { return getTokens(OpenGaussStatementParser.JSONB_CONTAIN_RIGHT_); }
		public TerminalNode JSONB_CONTAIN_RIGHT_(int i) {
			return getToken(OpenGaussStatementParser.JSONB_CONTAIN_RIGHT_, i);
		}
		public List JSONB_CONTAIN_LEFT_() { return getTokens(OpenGaussStatementParser.JSONB_CONTAIN_LEFT_); }
		public TerminalNode JSONB_CONTAIN_LEFT_(int i) {
			return getToken(OpenGaussStatementParser.JSONB_CONTAIN_LEFT_, i);
		}
		public List JSONB_CONTAIN_ALL_TOP_KEY_() { return getTokens(OpenGaussStatementParser.JSONB_CONTAIN_ALL_TOP_KEY_); }
		public TerminalNode JSONB_CONTAIN_ALL_TOP_KEY_(int i) {
			return getToken(OpenGaussStatementParser.JSONB_CONTAIN_ALL_TOP_KEY_, i);
		}
		public List JSONB_PATH_DELETE_() { return getTokens(OpenGaussStatementParser.JSONB_PATH_DELETE_); }
		public TerminalNode JSONB_PATH_DELETE_(int i) {
			return getToken(OpenGaussStatementParser.JSONB_PATH_DELETE_, i);
		}
		public List JSONB_PATH_CONTAIN_ANY_VALUE_() { return getTokens(OpenGaussStatementParser.JSONB_PATH_CONTAIN_ANY_VALUE_); }
		public TerminalNode JSONB_PATH_CONTAIN_ANY_VALUE_(int i) {
			return getToken(OpenGaussStatementParser.JSONB_PATH_CONTAIN_ANY_VALUE_, i);
		}
		public List JSONB_PATH_PREDICATE_CHECK_() { return getTokens(OpenGaussStatementParser.JSONB_PATH_PREDICATE_CHECK_); }
		public TerminalNode JSONB_PATH_PREDICATE_CHECK_(int i) {
			return getToken(OpenGaussStatementParser.JSONB_PATH_PREDICATE_CHECK_, i);
		}
		public List GEOMETRIC_LENGTH_() { return getTokens(OpenGaussStatementParser.GEOMETRIC_LENGTH_); }
		public TerminalNode GEOMETRIC_LENGTH_(int i) {
			return getToken(OpenGaussStatementParser.GEOMETRIC_LENGTH_, i);
		}
		public List GEOMETRIC_DISTANCE_() { return getTokens(OpenGaussStatementParser.GEOMETRIC_DISTANCE_); }
		public TerminalNode GEOMETRIC_DISTANCE_(int i) {
			return getToken(OpenGaussStatementParser.GEOMETRIC_DISTANCE_, i);
		}
		public List GEOMETRIC_EXTEND_RIGHT_() { return getTokens(OpenGaussStatementParser.GEOMETRIC_EXTEND_RIGHT_); }
		public TerminalNode GEOMETRIC_EXTEND_RIGHT_(int i) {
			return getToken(OpenGaussStatementParser.GEOMETRIC_EXTEND_RIGHT_, i);
		}
		public List GEOMETRIC_EXTEND_LEFT_() { return getTokens(OpenGaussStatementParser.GEOMETRIC_EXTEND_LEFT_); }
		public TerminalNode GEOMETRIC_EXTEND_LEFT_(int i) {
			return getToken(OpenGaussStatementParser.GEOMETRIC_EXTEND_LEFT_, i);
		}
		public List GEOMETRIC_STRICT_BELOW_() { return getTokens(OpenGaussStatementParser.GEOMETRIC_STRICT_BELOW_); }
		public TerminalNode GEOMETRIC_STRICT_BELOW_(int i) {
			return getToken(OpenGaussStatementParser.GEOMETRIC_STRICT_BELOW_, i);
		}
		public List GEOMETRIC_STRICT_ABOVE_() { return getTokens(OpenGaussStatementParser.GEOMETRIC_STRICT_ABOVE_); }
		public TerminalNode GEOMETRIC_STRICT_ABOVE_(int i) {
			return getToken(OpenGaussStatementParser.GEOMETRIC_STRICT_ABOVE_, i);
		}
		public List GEOMETRIC_EXTEND_ABOVE_() { return getTokens(OpenGaussStatementParser.GEOMETRIC_EXTEND_ABOVE_); }
		public TerminalNode GEOMETRIC_EXTEND_ABOVE_(int i) {
			return getToken(OpenGaussStatementParser.GEOMETRIC_EXTEND_ABOVE_, i);
		}
		public List GEOMETRIC_EXTEND_BELOW_() { return getTokens(OpenGaussStatementParser.GEOMETRIC_EXTEND_BELOW_); }
		public TerminalNode GEOMETRIC_EXTEND_BELOW_(int i) {
			return getToken(OpenGaussStatementParser.GEOMETRIC_EXTEND_BELOW_, i);
		}
		public List GEOMETRIC_BELOW_() { return getTokens(OpenGaussStatementParser.GEOMETRIC_BELOW_); }
		public TerminalNode GEOMETRIC_BELOW_(int i) {
			return getToken(OpenGaussStatementParser.GEOMETRIC_BELOW_, i);
		}
		public List GEOMETRIC_ABOVE_() { return getTokens(OpenGaussStatementParser.GEOMETRIC_ABOVE_); }
		public TerminalNode GEOMETRIC_ABOVE_(int i) {
			return getToken(OpenGaussStatementParser.GEOMETRIC_ABOVE_, i);
		}
		public List GEOMETRIC_INTERSECT_() { return getTokens(OpenGaussStatementParser.GEOMETRIC_INTERSECT_); }
		public TerminalNode GEOMETRIC_INTERSECT_(int i) {
			return getToken(OpenGaussStatementParser.GEOMETRIC_INTERSECT_, i);
		}
		public List GEOMETRIC_PERPENDICULAR_() { return getTokens(OpenGaussStatementParser.GEOMETRIC_PERPENDICULAR_); }
		public TerminalNode GEOMETRIC_PERPENDICULAR_(int i) {
			return getToken(OpenGaussStatementParser.GEOMETRIC_PERPENDICULAR_, i);
		}
		public List GEOMETRIC_SAME_AS_() { return getTokens(OpenGaussStatementParser.GEOMETRIC_SAME_AS_); }
		public TerminalNode GEOMETRIC_SAME_AS_(int i) {
			return getToken(OpenGaussStatementParser.GEOMETRIC_SAME_AS_, i);
		}
		public OpContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_op; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitOp(this);
			else return visitor.visitChildren(this);
		}
	}

	public final OpContext op() throws RecognitionException {
		OpContext _localctx = new OpContext(_ctx, getState());
		enterRule(_localctx, 316, RULE_op);
		int _la;
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			setState(3337); 
			_errHandler.sync(this);
			_alt = 1;
			do {
				switch (_alt) {
				case 1:
					{
					{
					setState(3336);
					_la = _input.LA(1);
					if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << AND_) | (1L << OR_) | (1L << NOT_) | (1L << TILDE_) | (1L << VERTICAL_BAR_) | (1L << AMPERSAND_) | (1L << SIGNED_LEFT_SHIFT_) | (1L << SIGNED_RIGHT_SHIFT_) | (1L << CARET_) | (1L << MOD_) | (1L << COLON_) | (1L << PLUS_) | (1L << MINUS_) | (1L << ASTERISK_) | (1L << SLASH_) | (1L << BACKSLASH_) | (1L << DOT_) | (1L << DOT_ASTERISK_) | (1L << SAFE_EQ_) | (1L << DEQ_) | (1L << EQ_) | (1L << CQ_) | (1L << NEQ_) | (1L << GT_) | (1L << GTE_) | (1L << LT_) | (1L << LTE_) | (1L << POUND_) | (1L << LP_) | (1L << RP_) | (1L << LBE_) | (1L << RBE_) | (1L << LBT_) | (1L << RBT_) | (1L << COMMA_) | (1L << DQ_) | (1L << SQ_) | (1L << BQ_) | (1L << QUESTION_) | (1L << DOLLAR_) | (1L << AT_) | (1L << SEMI_) | (1L << TILDE_TILDE_) | (1L << NOT_TILDE_TILDE_) | (1L << TYPE_CAST_) | (1L << ILIKE_) | (1L << NOT_ILIKE_) | (1L << UNICODE_ESCAPE) | (1L << JSON_EXTRACT_) | (1L << JSON_EXTRACT_TEXT_) | (1L << JSON_PATH_EXTRACT_) | (1L << JSON_PATH_EXTRACT_TEXT_) | (1L << JSONB_CONTAIN_RIGHT_) | (1L << JSONB_CONTAIN_LEFT_) | (1L << JSONB_CONTAIN_ALL_TOP_KEY_) | (1L << JSONB_PATH_DELETE_) | (1L << JSONB_PATH_CONTAIN_ANY_VALUE_) | (1L << JSONB_PATH_PREDICATE_CHECK_) | (1L << GEOMETRIC_LENGTH_) | (1L << GEOMETRIC_DISTANCE_))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (GEOMETRIC_EXTEND_RIGHT_ - 64)) | (1L << (GEOMETRIC_EXTEND_LEFT_ - 64)) | (1L << (GEOMETRIC_STRICT_BELOW_ - 64)) | (1L << (GEOMETRIC_STRICT_ABOVE_ - 64)) | (1L << (GEOMETRIC_EXTEND_ABOVE_ - 64)) | (1L << (GEOMETRIC_EXTEND_BELOW_ - 64)) | (1L << (GEOMETRIC_BELOW_ - 64)) | (1L << (GEOMETRIC_ABOVE_ - 64)) | (1L << (GEOMETRIC_INTERSECT_ - 64)) | (1L << (GEOMETRIC_PERPENDICULAR_ - 64)) | (1L << (GEOMETRIC_SAME_AS_ - 64)))) != 0)) ) {
					_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					}
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				setState(3339); 
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,209,_ctx);
			} while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER );
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class MathOperatorContext extends ParserRuleContext {
		public TerminalNode PLUS_() { return getToken(OpenGaussStatementParser.PLUS_, 0); }
		public TerminalNode MINUS_() { return getToken(OpenGaussStatementParser.MINUS_, 0); }
		public TerminalNode ASTERISK_() { return getToken(OpenGaussStatementParser.ASTERISK_, 0); }
		public TerminalNode SLASH_() { return getToken(OpenGaussStatementParser.SLASH_, 0); }
		public TerminalNode MOD_() { return getToken(OpenGaussStatementParser.MOD_, 0); }
		public TerminalNode CARET_() { return getToken(OpenGaussStatementParser.CARET_, 0); }
		public TerminalNode LT_() { return getToken(OpenGaussStatementParser.LT_, 0); }
		public TerminalNode GT_() { return getToken(OpenGaussStatementParser.GT_, 0); }
		public TerminalNode EQ_() { return getToken(OpenGaussStatementParser.EQ_, 0); }
		public TerminalNode LTE_() { return getToken(OpenGaussStatementParser.LTE_, 0); }
		public TerminalNode GTE_() { return getToken(OpenGaussStatementParser.GTE_, 0); }
		public TerminalNode NEQ_() { return getToken(OpenGaussStatementParser.NEQ_, 0); }
		public MathOperatorContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_mathOperator; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitMathOperator(this);
			else return visitor.visitChildren(this);
		}
	}

	public final MathOperatorContext mathOperator() throws RecognitionException {
		MathOperatorContext _localctx = new MathOperatorContext(_ctx, getState());
		enterRule(_localctx, 318, RULE_mathOperator);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3341);
			_la = _input.LA(1);
			if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << CARET_) | (1L << MOD_) | (1L << PLUS_) | (1L << MINUS_) | (1L << ASTERISK_) | (1L << SLASH_) | (1L << EQ_) | (1L << NEQ_) | (1L << GT_) | (1L << GTE_) | (1L << LT_) | (1L << LTE_))) != 0)) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class JsonOperatorContext extends ParserRuleContext {
		public JsonOperatorContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_jsonOperator; }
	 
		public JsonOperatorContext() { }
		public void copyFrom(JsonOperatorContext ctx) {
			super.copyFrom(ctx);
		}
	}
	public static class JsonPathExtractContext extends JsonOperatorContext {
		public TerminalNode JSON_PATH_EXTRACT_() { return getToken(OpenGaussStatementParser.JSON_PATH_EXTRACT_, 0); }
		public JsonPathExtractContext(JsonOperatorContext ctx) { copyFrom(ctx); }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitJsonPathExtract(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class JsonbPathDeleteContext extends JsonOperatorContext {
		public TerminalNode JSONB_PATH_DELETE_() { return getToken(OpenGaussStatementParser.JSONB_PATH_DELETE_, 0); }
		public JsonbPathDeleteContext(JsonOperatorContext ctx) { copyFrom(ctx); }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitJsonbPathDelete(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class JsonbContainTopKeyContext extends JsonOperatorContext {
		public TerminalNode QUESTION_() { return getToken(OpenGaussStatementParser.QUESTION_, 0); }
		public JsonbContainTopKeyContext(JsonOperatorContext ctx) { copyFrom(ctx); }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitJsonbContainTopKey(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class JsonbConcatContext extends JsonOperatorContext {
		public TerminalNode OR_() { return getToken(OpenGaussStatementParser.OR_, 0); }
		public JsonbConcatContext(JsonOperatorContext ctx) { copyFrom(ctx); }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitJsonbConcat(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class JsonbContainLeftContext extends JsonOperatorContext {
		public TerminalNode JSONB_CONTAIN_LEFT_() { return getToken(OpenGaussStatementParser.JSONB_CONTAIN_LEFT_, 0); }
		public JsonbContainLeftContext(JsonOperatorContext ctx) { copyFrom(ctx); }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitJsonbContainLeft(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class JsonbDeleteContext extends JsonOperatorContext {
		public TerminalNode MINUS_() { return getToken(OpenGaussStatementParser.MINUS_, 0); }
		public JsonbDeleteContext(JsonOperatorContext ctx) { copyFrom(ctx); }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitJsonbDelete(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class JsonExtractContext extends JsonOperatorContext {
		public TerminalNode JSON_EXTRACT_() { return getToken(OpenGaussStatementParser.JSON_EXTRACT_, 0); }
		public JsonExtractContext(JsonOperatorContext ctx) { copyFrom(ctx); }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitJsonExtract(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class JsonbContainRightContext extends JsonOperatorContext {
		public TerminalNode JSONB_CONTAIN_RIGHT_() { return getToken(OpenGaussStatementParser.JSONB_CONTAIN_RIGHT_, 0); }
		public JsonbContainRightContext(JsonOperatorContext ctx) { copyFrom(ctx); }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitJsonbContainRight(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class JsonExtractTextContext extends JsonOperatorContext {
		public TerminalNode JSON_EXTRACT_TEXT_() { return getToken(OpenGaussStatementParser.JSON_EXTRACT_TEXT_, 0); }
		public JsonExtractTextContext(JsonOperatorContext ctx) { copyFrom(ctx); }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitJsonExtractText(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class JsonbPathPredicateCheckContext extends JsonOperatorContext {
		public TerminalNode JSONB_PATH_PREDICATE_CHECK_() { return getToken(OpenGaussStatementParser.JSONB_PATH_PREDICATE_CHECK_, 0); }
		public JsonbPathPredicateCheckContext(JsonOperatorContext ctx) { copyFrom(ctx); }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitJsonbPathPredicateCheck(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class JsonbPathContainAnyValueContext extends JsonOperatorContext {
		public TerminalNode JSONB_PATH_CONTAIN_ANY_VALUE_() { return getToken(OpenGaussStatementParser.JSONB_PATH_CONTAIN_ANY_VALUE_, 0); }
		public JsonbPathContainAnyValueContext(JsonOperatorContext ctx) { copyFrom(ctx); }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitJsonbPathContainAnyValue(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class JsonbContainAnyTopKeyContext extends JsonOperatorContext {
		public TerminalNode QUESTION_() { return getToken(OpenGaussStatementParser.QUESTION_, 0); }
		public TerminalNode VERTICAL_BAR_() { return getToken(OpenGaussStatementParser.VERTICAL_BAR_, 0); }
		public JsonbContainAnyTopKeyContext(JsonOperatorContext ctx) { copyFrom(ctx); }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitJsonbContainAnyTopKey(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class JsonPathExtractTextContext extends JsonOperatorContext {
		public TerminalNode JSON_PATH_EXTRACT_TEXT_() { return getToken(OpenGaussStatementParser.JSON_PATH_EXTRACT_TEXT_, 0); }
		public JsonPathExtractTextContext(JsonOperatorContext ctx) { copyFrom(ctx); }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitJsonPathExtractText(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class JsonbContainAllTopKeyContext extends JsonOperatorContext {
		public TerminalNode JSONB_CONTAIN_ALL_TOP_KEY_() { return getToken(OpenGaussStatementParser.JSONB_CONTAIN_ALL_TOP_KEY_, 0); }
		public JsonbContainAllTopKeyContext(JsonOperatorContext ctx) { copyFrom(ctx); }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitJsonbContainAllTopKey(this);
			else return visitor.visitChildren(this);
		}
	}

	public final JsonOperatorContext jsonOperator() throws RecognitionException {
		JsonOperatorContext _localctx = new JsonOperatorContext(_ctx, getState());
		enterRule(_localctx, 320, RULE_jsonOperator);
		try {
			setState(3358);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,210,_ctx) ) {
			case 1:
				_localctx = new JsonExtractContext(_localctx);
				enterOuterAlt(_localctx, 1);
				{
				setState(3343);
				match(JSON_EXTRACT_);
				}
				break;
			case 2:
				_localctx = new JsonExtractTextContext(_localctx);
				enterOuterAlt(_localctx, 2);
				{
				setState(3344);
				match(JSON_EXTRACT_TEXT_);
				}
				break;
			case 3:
				_localctx = new JsonPathExtractContext(_localctx);
				enterOuterAlt(_localctx, 3);
				{
				setState(3345);
				match(JSON_PATH_EXTRACT_);
				}
				break;
			case 4:
				_localctx = new JsonPathExtractTextContext(_localctx);
				enterOuterAlt(_localctx, 4);
				{
				setState(3346);
				match(JSON_PATH_EXTRACT_TEXT_);
				}
				break;
			case 5:
				_localctx = new JsonbContainRightContext(_localctx);
				enterOuterAlt(_localctx, 5);
				{
				setState(3347);
				match(JSONB_CONTAIN_RIGHT_);
				}
				break;
			case 6:
				_localctx = new JsonbContainLeftContext(_localctx);
				enterOuterAlt(_localctx, 6);
				{
				setState(3348);
				match(JSONB_CONTAIN_LEFT_);
				}
				break;
			case 7:
				_localctx = new JsonbContainTopKeyContext(_localctx);
				enterOuterAlt(_localctx, 7);
				{
				setState(3349);
				match(QUESTION_);
				}
				break;
			case 8:
				_localctx = new JsonbContainAnyTopKeyContext(_localctx);
				enterOuterAlt(_localctx, 8);
				{
				setState(3350);
				match(QUESTION_);
				setState(3351);
				match(VERTICAL_BAR_);
				}
				break;
			case 9:
				_localctx = new JsonbContainAllTopKeyContext(_localctx);
				enterOuterAlt(_localctx, 9);
				{
				setState(3352);
				match(JSONB_CONTAIN_ALL_TOP_KEY_);
				}
				break;
			case 10:
				_localctx = new JsonbConcatContext(_localctx);
				enterOuterAlt(_localctx, 10);
				{
				setState(3353);
				match(OR_);
				}
				break;
			case 11:
				_localctx = new JsonbDeleteContext(_localctx);
				enterOuterAlt(_localctx, 11);
				{
				setState(3354);
				match(MINUS_);
				}
				break;
			case 12:
				_localctx = new JsonbPathDeleteContext(_localctx);
				enterOuterAlt(_localctx, 12);
				{
				setState(3355);
				match(JSONB_PATH_DELETE_);
				}
				break;
			case 13:
				_localctx = new JsonbPathContainAnyValueContext(_localctx);
				enterOuterAlt(_localctx, 13);
				{
				setState(3356);
				match(JSONB_PATH_CONTAIN_ANY_VALUE_);
				}
				break;
			case 14:
				_localctx = new JsonbPathPredicateCheckContext(_localctx);
				enterOuterAlt(_localctx, 14);
				{
				setState(3357);
				match(JSONB_PATH_PREDICATE_CHECK_);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class GeometricOperatorContext extends ParserRuleContext {
		public TerminalNode GEOMETRIC_LENGTH_() { return getToken(OpenGaussStatementParser.GEOMETRIC_LENGTH_, 0); }
		public TerminalNode GEOMETRIC_DISTANCE_() { return getToken(OpenGaussStatementParser.GEOMETRIC_DISTANCE_, 0); }
		public TerminalNode GEOMETRIC_EXTEND_RIGHT_() { return getToken(OpenGaussStatementParser.GEOMETRIC_EXTEND_RIGHT_, 0); }
		public TerminalNode GEOMETRIC_EXTEND_LEFT_() { return getToken(OpenGaussStatementParser.GEOMETRIC_EXTEND_LEFT_, 0); }
		public TerminalNode GEOMETRIC_STRICT_BELOW_() { return getToken(OpenGaussStatementParser.GEOMETRIC_STRICT_BELOW_, 0); }
		public TerminalNode GEOMETRIC_STRICT_ABOVE_() { return getToken(OpenGaussStatementParser.GEOMETRIC_STRICT_ABOVE_, 0); }
		public TerminalNode GEOMETRIC_EXTEND_ABOVE_() { return getToken(OpenGaussStatementParser.GEOMETRIC_EXTEND_ABOVE_, 0); }
		public TerminalNode GEOMETRIC_EXTEND_BELOW_() { return getToken(OpenGaussStatementParser.GEOMETRIC_EXTEND_BELOW_, 0); }
		public TerminalNode GEOMETRIC_BELOW_() { return getToken(OpenGaussStatementParser.GEOMETRIC_BELOW_, 0); }
		public TerminalNode GEOMETRIC_ABOVE_() { return getToken(OpenGaussStatementParser.GEOMETRIC_ABOVE_, 0); }
		public TerminalNode GEOMETRIC_INTERSECT_() { return getToken(OpenGaussStatementParser.GEOMETRIC_INTERSECT_, 0); }
		public TerminalNode GEOMETRIC_PERPENDICULAR_() { return getToken(OpenGaussStatementParser.GEOMETRIC_PERPENDICULAR_, 0); }
		public TerminalNode GEOMETRIC_SAME_AS_() { return getToken(OpenGaussStatementParser.GEOMETRIC_SAME_AS_, 0); }
		public TerminalNode QUESTION_() { return getToken(OpenGaussStatementParser.QUESTION_, 0); }
		public TerminalNode MINUS_() { return getToken(OpenGaussStatementParser.MINUS_, 0); }
		public TerminalNode OR_() { return getToken(OpenGaussStatementParser.OR_, 0); }
		public TerminalNode POUND_() { return getToken(OpenGaussStatementParser.POUND_, 0); }
		public TerminalNode SIGNED_LEFT_SHIFT_() { return getToken(OpenGaussStatementParser.SIGNED_LEFT_SHIFT_, 0); }
		public TerminalNode SIGNED_RIGHT_SHIFT_() { return getToken(OpenGaussStatementParser.SIGNED_RIGHT_SHIFT_, 0); }
		public GeometricOperatorContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_geometricOperator; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitGeometricOperator(this);
			else return visitor.visitChildren(this);
		}
	}

	public final GeometricOperatorContext geometricOperator() throws RecognitionException {
		GeometricOperatorContext _localctx = new GeometricOperatorContext(_ctx, getState());
		enterRule(_localctx, 322, RULE_geometricOperator);
		try {
			setState(3380);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,211,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(3360);
				match(GEOMETRIC_LENGTH_);
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(3361);
				match(GEOMETRIC_DISTANCE_);
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(3362);
				match(GEOMETRIC_EXTEND_RIGHT_);
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(3363);
				match(GEOMETRIC_EXTEND_LEFT_);
				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(3364);
				match(GEOMETRIC_STRICT_BELOW_);
				}
				break;
			case 6:
				enterOuterAlt(_localctx, 6);
				{
				setState(3365);
				match(GEOMETRIC_STRICT_ABOVE_);
				}
				break;
			case 7:
				enterOuterAlt(_localctx, 7);
				{
				setState(3366);
				match(GEOMETRIC_EXTEND_ABOVE_);
				}
				break;
			case 8:
				enterOuterAlt(_localctx, 8);
				{
				setState(3367);
				match(GEOMETRIC_EXTEND_BELOW_);
				}
				break;
			case 9:
				enterOuterAlt(_localctx, 9);
				{
				setState(3368);
				match(GEOMETRIC_BELOW_);
				}
				break;
			case 10:
				enterOuterAlt(_localctx, 10);
				{
				setState(3369);
				match(GEOMETRIC_ABOVE_);
				}
				break;
			case 11:
				enterOuterAlt(_localctx, 11);
				{
				setState(3370);
				match(GEOMETRIC_INTERSECT_);
				}
				break;
			case 12:
				enterOuterAlt(_localctx, 12);
				{
				setState(3371);
				match(GEOMETRIC_PERPENDICULAR_);
				}
				break;
			case 13:
				enterOuterAlt(_localctx, 13);
				{
				setState(3372);
				match(GEOMETRIC_SAME_AS_);
				}
				break;
			case 14:
				enterOuterAlt(_localctx, 14);
				{
				setState(3373);
				match(QUESTION_);
				setState(3374);
				match(MINUS_);
				}
				break;
			case 15:
				enterOuterAlt(_localctx, 15);
				{
				setState(3375);
				match(QUESTION_);
				setState(3376);
				match(OR_);
				}
				break;
			case 16:
				enterOuterAlt(_localctx, 16);
				{
				setState(3377);
				match(POUND_);
				}
				break;
			case 17:
				enterOuterAlt(_localctx, 17);
				{
				setState(3378);
				match(SIGNED_LEFT_SHIFT_);
				}
				break;
			case 18:
				enterOuterAlt(_localctx, 18);
				{
				setState(3379);
				match(SIGNED_RIGHT_SHIFT_);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class QualAllOpContext extends ParserRuleContext {
		public AllOpContext allOp() {
			return getRuleContext(AllOpContext.class,0);
		}
		public TerminalNode OPERATOR() { return getToken(OpenGaussStatementParser.OPERATOR, 0); }
		public TerminalNode LP_() { return getToken(OpenGaussStatementParser.LP_, 0); }
		public AnyOperatorContext anyOperator() {
			return getRuleContext(AnyOperatorContext.class,0);
		}
		public TerminalNode RP_() { return getToken(OpenGaussStatementParser.RP_, 0); }
		public QualAllOpContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_qualAllOp; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitQualAllOp(this);
			else return visitor.visitChildren(this);
		}
	}

	public final QualAllOpContext qualAllOp() throws RecognitionException {
		QualAllOpContext _localctx = new QualAllOpContext(_ctx, getState());
		enterRule(_localctx, 324, RULE_qualAllOp);
		try {
			setState(3388);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case AND_:
			case OR_:
			case NOT_:
			case TILDE_:
			case VERTICAL_BAR_:
			case AMPERSAND_:
			case SIGNED_LEFT_SHIFT_:
			case SIGNED_RIGHT_SHIFT_:
			case CARET_:
			case MOD_:
			case COLON_:
			case PLUS_:
			case MINUS_:
			case ASTERISK_:
			case SLASH_:
			case BACKSLASH_:
			case DOT_:
			case DOT_ASTERISK_:
			case SAFE_EQ_:
			case DEQ_:
			case EQ_:
			case CQ_:
			case NEQ_:
			case GT_:
			case GTE_:
			case LT_:
			case LTE_:
			case POUND_:
			case LP_:
			case RP_:
			case LBE_:
			case RBE_:
			case LBT_:
			case RBT_:
			case COMMA_:
			case DQ_:
			case SQ_:
			case BQ_:
			case QUESTION_:
			case DOLLAR_:
			case AT_:
			case SEMI_:
			case TILDE_TILDE_:
			case NOT_TILDE_TILDE_:
			case TYPE_CAST_:
			case ILIKE_:
			case NOT_ILIKE_:
			case UNICODE_ESCAPE:
			case JSON_EXTRACT_:
			case JSON_EXTRACT_TEXT_:
			case JSON_PATH_EXTRACT_:
			case JSON_PATH_EXTRACT_TEXT_:
			case JSONB_CONTAIN_RIGHT_:
			case JSONB_CONTAIN_LEFT_:
			case JSONB_CONTAIN_ALL_TOP_KEY_:
			case JSONB_PATH_DELETE_:
			case JSONB_PATH_CONTAIN_ANY_VALUE_:
			case JSONB_PATH_PREDICATE_CHECK_:
			case GEOMETRIC_LENGTH_:
			case GEOMETRIC_DISTANCE_:
			case GEOMETRIC_EXTEND_RIGHT_:
			case GEOMETRIC_EXTEND_LEFT_:
			case GEOMETRIC_STRICT_BELOW_:
			case GEOMETRIC_STRICT_ABOVE_:
			case GEOMETRIC_EXTEND_ABOVE_:
			case GEOMETRIC_EXTEND_BELOW_:
			case GEOMETRIC_BELOW_:
			case GEOMETRIC_ABOVE_:
			case GEOMETRIC_INTERSECT_:
			case GEOMETRIC_PERPENDICULAR_:
			case GEOMETRIC_SAME_AS_:
				enterOuterAlt(_localctx, 1);
				{
				setState(3382);
				allOp();
				}
				break;
			case OPERATOR:
				enterOuterAlt(_localctx, 2);
				{
				setState(3383);
				match(OPERATOR);
				setState(3384);
				match(LP_);
				setState(3385);
				anyOperator();
				setState(3386);
				match(RP_);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AscDescContext extends ParserRuleContext {
		public TerminalNode ASC() { return getToken(OpenGaussStatementParser.ASC, 0); }
		public TerminalNode DESC() { return getToken(OpenGaussStatementParser.DESC, 0); }
		public AscDescContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_ascDesc; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitAscDesc(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AscDescContext ascDesc() throws RecognitionException {
		AscDescContext _localctx = new AscDescContext(_ctx, getState());
		enterRule(_localctx, 326, RULE_ascDesc);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3390);
			_la = _input.LA(1);
			if ( !(_la==ASC || _la==DESC) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AnyOperatorContext extends ParserRuleContext {
		public AllOpContext allOp() {
			return getRuleContext(AllOpContext.class,0);
		}
		public ColIdContext colId() {
			return getRuleContext(ColIdContext.class,0);
		}
		public TerminalNode DOT_() { return getToken(OpenGaussStatementParser.DOT_, 0); }
		public AnyOperatorContext anyOperator() {
			return getRuleContext(AnyOperatorContext.class,0);
		}
		public AnyOperatorContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_anyOperator; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitAnyOperator(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AnyOperatorContext anyOperator() throws RecognitionException {
		AnyOperatorContext _localctx = new AnyOperatorContext(_ctx, getState());
		enterRule(_localctx, 328, RULE_anyOperator);
		try {
			setState(3397);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,213,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(3392);
				allOp();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(3393);
				colId();
				setState(3394);
				match(DOT_);
				setState(3395);
				anyOperator();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class WindowExclusionClauseContext extends ParserRuleContext {
		public TerminalNode EXCLUDE() { return getToken(OpenGaussStatementParser.EXCLUDE, 0); }
		public TerminalNode CURRENT() { return getToken(OpenGaussStatementParser.CURRENT, 0); }
		public TerminalNode ROW() { return getToken(OpenGaussStatementParser.ROW, 0); }
		public TerminalNode GROUP() { return getToken(OpenGaussStatementParser.GROUP, 0); }
		public TerminalNode TIES() { return getToken(OpenGaussStatementParser.TIES, 0); }
		public TerminalNode NO() { return getToken(OpenGaussStatementParser.NO, 0); }
		public TerminalNode OTHERS() { return getToken(OpenGaussStatementParser.OTHERS, 0); }
		public WindowExclusionClauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_windowExclusionClause; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitWindowExclusionClause(this);
			else return visitor.visitChildren(this);
		}
	}

	public final WindowExclusionClauseContext windowExclusionClause() throws RecognitionException {
		WindowExclusionClauseContext _localctx = new WindowExclusionClauseContext(_ctx, getState());
		enterRule(_localctx, 330, RULE_windowExclusionClause);
		try {
			setState(3409);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,214,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(3399);
				match(EXCLUDE);
				setState(3400);
				match(CURRENT);
				setState(3401);
				match(ROW);
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(3402);
				match(EXCLUDE);
				setState(3403);
				match(GROUP);
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(3404);
				match(EXCLUDE);
				setState(3405);
				match(TIES);
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(3406);
				match(EXCLUDE);
				setState(3407);
				match(NO);
				setState(3408);
				match(OTHERS);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class RowContext extends ParserRuleContext {
		public TerminalNode ROW() { return getToken(OpenGaussStatementParser.ROW, 0); }
		public TerminalNode LP_() { return getToken(OpenGaussStatementParser.LP_, 0); }
		public ExprListContext exprList() {
			return getRuleContext(ExprListContext.class,0);
		}
		public TerminalNode RP_() { return getToken(OpenGaussStatementParser.RP_, 0); }
		public TerminalNode COMMA_() { return getToken(OpenGaussStatementParser.COMMA_, 0); }
		public AExprContext aExpr() {
			return getRuleContext(AExprContext.class,0);
		}
		public RowContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_row; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitRow(this);
			else return visitor.visitChildren(this);
		}
	}

	public final RowContext row() throws RecognitionException {
		RowContext _localctx = new RowContext(_ctx, getState());
		enterRule(_localctx, 332, RULE_row);
		try {
			setState(3425);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,215,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(3411);
				match(ROW);
				setState(3412);
				match(LP_);
				setState(3413);
				exprList(0);
				setState(3414);
				match(RP_);
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(3416);
				match(ROW);
				setState(3417);
				match(LP_);
				setState(3418);
				match(RP_);
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(3419);
				match(LP_);
				setState(3420);
				exprList(0);
				setState(3421);
				match(COMMA_);
				setState(3422);
				aExpr(0);
				setState(3423);
				match(RP_);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ExplicitRowContext extends ParserRuleContext {
		public TerminalNode ROW() { return getToken(OpenGaussStatementParser.ROW, 0); }
		public TerminalNode LP_() { return getToken(OpenGaussStatementParser.LP_, 0); }
		public ExprListContext exprList() {
			return getRuleContext(ExprListContext.class,0);
		}
		public TerminalNode RP_() { return getToken(OpenGaussStatementParser.RP_, 0); }
		public ExplicitRowContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_explicitRow; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitExplicitRow(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ExplicitRowContext explicitRow() throws RecognitionException {
		ExplicitRowContext _localctx = new ExplicitRowContext(_ctx, getState());
		enterRule(_localctx, 334, RULE_explicitRow);
		try {
			setState(3435);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,216,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(3427);
				match(ROW);
				setState(3428);
				match(LP_);
				setState(3429);
				exprList(0);
				setState(3430);
				match(RP_);
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(3432);
				match(ROW);
				setState(3433);
				match(LP_);
				setState(3434);
				match(RP_);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ImplicitRowContext extends ParserRuleContext {
		public TerminalNode LP_() { return getToken(OpenGaussStatementParser.LP_, 0); }
		public ExprListContext exprList() {
			return getRuleContext(ExprListContext.class,0);
		}
		public TerminalNode COMMA_() { return getToken(OpenGaussStatementParser.COMMA_, 0); }
		public AExprContext aExpr() {
			return getRuleContext(AExprContext.class,0);
		}
		public TerminalNode RP_() { return getToken(OpenGaussStatementParser.RP_, 0); }
		public ImplicitRowContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_implicitRow; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitImplicitRow(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ImplicitRowContext implicitRow() throws RecognitionException {
		ImplicitRowContext _localctx = new ImplicitRowContext(_ctx, getState());
		enterRule(_localctx, 336, RULE_implicitRow);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3437);
			match(LP_);
			setState(3438);
			exprList(0);
			setState(3439);
			match(COMMA_);
			setState(3440);
			aExpr(0);
			setState(3441);
			match(RP_);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class SubTypeContext extends ParserRuleContext {
		public TerminalNode ANY() { return getToken(OpenGaussStatementParser.ANY, 0); }
		public TerminalNode SOME() { return getToken(OpenGaussStatementParser.SOME, 0); }
		public TerminalNode ALL() { return getToken(OpenGaussStatementParser.ALL, 0); }
		public SubTypeContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_subType; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitSubType(this);
			else return visitor.visitChildren(this);
		}
	}

	public final SubTypeContext subType() throws RecognitionException {
		SubTypeContext _localctx = new SubTypeContext(_ctx, getState());
		enterRule(_localctx, 338, RULE_subType);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3443);
			_la = _input.LA(1);
			if ( !(_la==ALL || _la==ANY || _la==SOME) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ArrayExprContext extends ParserRuleContext {
		public TerminalNode LBT_() { return getToken(OpenGaussStatementParser.LBT_, 0); }
		public ExprListContext exprList() {
			return getRuleContext(ExprListContext.class,0);
		}
		public TerminalNode RBT_() { return getToken(OpenGaussStatementParser.RBT_, 0); }
		public ArrayExprListContext arrayExprList() {
			return getRuleContext(ArrayExprListContext.class,0);
		}
		public ArrayExprContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_arrayExpr; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitArrayExpr(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ArrayExprContext arrayExpr() throws RecognitionException {
		ArrayExprContext _localctx = new ArrayExprContext(_ctx, getState());
		enterRule(_localctx, 340, RULE_arrayExpr);
		try {
			setState(3455);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,217,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(3445);
				match(LBT_);
				setState(3446);
				exprList(0);
				setState(3447);
				match(RBT_);
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(3449);
				match(LBT_);
				setState(3450);
				arrayExprList();
				setState(3451);
				match(RBT_);
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(3453);
				match(LBT_);
				setState(3454);
				match(RBT_);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ArrayExprListContext extends ParserRuleContext {
		public List arrayExpr() {
			return getRuleContexts(ArrayExprContext.class);
		}
		public ArrayExprContext arrayExpr(int i) {
			return getRuleContext(ArrayExprContext.class,i);
		}
		public List COMMA_() { return getTokens(OpenGaussStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(OpenGaussStatementParser.COMMA_, i);
		}
		public ArrayExprListContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_arrayExprList; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitArrayExprList(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ArrayExprListContext arrayExprList() throws RecognitionException {
		ArrayExprListContext _localctx = new ArrayExprListContext(_ctx, getState());
		enterRule(_localctx, 342, RULE_arrayExprList);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3457);
			arrayExpr();
			setState(3462);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA_) {
				{
				{
				setState(3458);
				match(COMMA_);
				setState(3459);
				arrayExpr();
				}
				}
				setState(3464);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class FuncArgListContext extends ParserRuleContext {
		public List funcArgExpr() {
			return getRuleContexts(FuncArgExprContext.class);
		}
		public FuncArgExprContext funcArgExpr(int i) {
			return getRuleContext(FuncArgExprContext.class,i);
		}
		public List COMMA_() { return getTokens(OpenGaussStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(OpenGaussStatementParser.COMMA_, i);
		}
		public FuncArgListContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_funcArgList; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitFuncArgList(this);
			else return visitor.visitChildren(this);
		}
	}

	public final FuncArgListContext funcArgList() throws RecognitionException {
		FuncArgListContext _localctx = new FuncArgListContext(_ctx, getState());
		enterRule(_localctx, 344, RULE_funcArgList);
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			setState(3465);
			funcArgExpr();
			setState(3470);
			_errHandler.sync(this);
			_alt = getInterpreter().adaptivePredict(_input,219,_ctx);
			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
				if ( _alt==1 ) {
					{
					{
					setState(3466);
					match(COMMA_);
					setState(3467);
					funcArgExpr();
					}
					} 
				}
				setState(3472);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,219,_ctx);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ParamNameContext extends ParserRuleContext {
		public TypeFunctionNameContext typeFunctionName() {
			return getRuleContext(TypeFunctionNameContext.class,0);
		}
		public ParamNameContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_paramName; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitParamName(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ParamNameContext paramName() throws RecognitionException {
		ParamNameContext _localctx = new ParamNameContext(_ctx, getState());
		enterRule(_localctx, 346, RULE_paramName);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3473);
			typeFunctionName();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class FuncArgExprContext extends ParserRuleContext {
		public AExprContext aExpr() {
			return getRuleContext(AExprContext.class,0);
		}
		public ParamNameContext paramName() {
			return getRuleContext(ParamNameContext.class,0);
		}
		public TerminalNode CQ_() { return getToken(OpenGaussStatementParser.CQ_, 0); }
		public TerminalNode GTE_() { return getToken(OpenGaussStatementParser.GTE_, 0); }
		public FuncArgExprContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_funcArgExpr; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitFuncArgExpr(this);
			else return visitor.visitChildren(this);
		}
	}

	public final FuncArgExprContext funcArgExpr() throws RecognitionException {
		FuncArgExprContext _localctx = new FuncArgExprContext(_ctx, getState());
		enterRule(_localctx, 348, RULE_funcArgExpr);
		try {
			setState(3484);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,220,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(3475);
				aExpr(0);
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(3476);
				paramName();
				setState(3477);
				match(CQ_);
				setState(3478);
				aExpr(0);
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(3480);
				paramName();
				setState(3481);
				match(GTE_);
				setState(3482);
				aExpr(0);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class TypeListContext extends ParserRuleContext {
		public List typeName() {
			return getRuleContexts(TypeNameContext.class);
		}
		public TypeNameContext typeName(int i) {
			return getRuleContext(TypeNameContext.class,i);
		}
		public List COMMA_() { return getTokens(OpenGaussStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(OpenGaussStatementParser.COMMA_, i);
		}
		public TypeListContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_typeList; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitTypeList(this);
			else return visitor.visitChildren(this);
		}
	}

	public final TypeListContext typeList() throws RecognitionException {
		TypeListContext _localctx = new TypeListContext(_ctx, getState());
		enterRule(_localctx, 350, RULE_typeList);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3486);
			typeName();
			setState(3491);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA_) {
				{
				{
				setState(3487);
				match(COMMA_);
				setState(3488);
				typeName();
				}
				}
				setState(3493);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class FuncApplicationContext extends ParserRuleContext {
		public FuncNameContext funcName() {
			return getRuleContext(FuncNameContext.class,0);
		}
		public TerminalNode LP_() { return getToken(OpenGaussStatementParser.LP_, 0); }
		public TerminalNode RP_() { return getToken(OpenGaussStatementParser.RP_, 0); }
		public FuncArgListContext funcArgList() {
			return getRuleContext(FuncArgListContext.class,0);
		}
		public SortClauseContext sortClause() {
			return getRuleContext(SortClauseContext.class,0);
		}
		public TerminalNode VARIADIC() { return getToken(OpenGaussStatementParser.VARIADIC, 0); }
		public FuncArgExprContext funcArgExpr() {
			return getRuleContext(FuncArgExprContext.class,0);
		}
		public TerminalNode COMMA_() { return getToken(OpenGaussStatementParser.COMMA_, 0); }
		public TerminalNode ALL() { return getToken(OpenGaussStatementParser.ALL, 0); }
		public TerminalNode DISTINCT() { return getToken(OpenGaussStatementParser.DISTINCT, 0); }
		public TerminalNode ASTERISK_() { return getToken(OpenGaussStatementParser.ASTERISK_, 0); }
		public FuncApplicationContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_funcApplication; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitFuncApplication(this);
			else return visitor.visitChildren(this);
		}
	}

	public final FuncApplicationContext funcApplication() throws RecognitionException {
		FuncApplicationContext _localctx = new FuncApplicationContext(_ctx, getState());
		enterRule(_localctx, 352, RULE_funcApplication);
		int _la;
		try {
			setState(3549);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,227,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(3494);
				funcName();
				setState(3495);
				match(LP_);
				setState(3496);
				match(RP_);
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(3498);
				funcName();
				setState(3499);
				match(LP_);
				setState(3500);
				funcArgList();
				setState(3502);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==ORDER) {
					{
					setState(3501);
					sortClause();
					}
				}

				setState(3504);
				match(RP_);
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(3506);
				funcName();
				setState(3507);
				match(LP_);
				setState(3508);
				match(VARIADIC);
				setState(3509);
				funcArgExpr();
				setState(3511);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==ORDER) {
					{
					setState(3510);
					sortClause();
					}
				}

				setState(3513);
				match(RP_);
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(3515);
				funcName();
				setState(3516);
				match(LP_);
				setState(3517);
				funcArgList();
				setState(3518);
				match(COMMA_);
				setState(3519);
				match(VARIADIC);
				setState(3520);
				funcArgExpr();
				setState(3522);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==ORDER) {
					{
					setState(3521);
					sortClause();
					}
				}

				setState(3524);
				match(RP_);
				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(3526);
				funcName();
				setState(3527);
				match(LP_);
				setState(3528);
				match(ALL);
				setState(3529);
				funcArgList();
				setState(3531);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==ORDER) {
					{
					setState(3530);
					sortClause();
					}
				}

				setState(3533);
				match(RP_);
				}
				break;
			case 6:
				enterOuterAlt(_localctx, 6);
				{
				setState(3535);
				funcName();
				setState(3536);
				match(LP_);
				setState(3537);
				match(DISTINCT);
				setState(3538);
				funcArgList();
				setState(3540);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==ORDER) {
					{
					setState(3539);
					sortClause();
					}
				}

				setState(3542);
				match(RP_);
				}
				break;
			case 7:
				enterOuterAlt(_localctx, 7);
				{
				setState(3544);
				funcName();
				setState(3545);
				match(LP_);
				setState(3546);
				match(ASTERISK_);
				setState(3547);
				match(RP_);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class FuncNameContext extends ParserRuleContext {
		public TypeFunctionNameContext typeFunctionName() {
			return getRuleContext(TypeFunctionNameContext.class,0);
		}
		public ColIdContext colId() {
			return getRuleContext(ColIdContext.class,0);
		}
		public IndirectionContext indirection() {
			return getRuleContext(IndirectionContext.class,0);
		}
		public FuncNameContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_funcName; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitFuncName(this);
			else return visitor.visitChildren(this);
		}
	}

	public final FuncNameContext funcName() throws RecognitionException {
		FuncNameContext _localctx = new FuncNameContext(_ctx, getState());
		enterRule(_localctx, 354, RULE_funcName);
		try {
			setState(3555);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,228,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(3551);
				typeFunctionName();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(3552);
				colId();
				setState(3553);
				indirection(0);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AexprConstContext extends ParserRuleContext {
		public NumberConstContext numberConst() {
			return getRuleContext(NumberConstContext.class,0);
		}
		public TerminalNode STRING_() { return getToken(OpenGaussStatementParser.STRING_, 0); }
		public FuncNameContext funcName() {
			return getRuleContext(FuncNameContext.class,0);
		}
		public TerminalNode LP_() { return getToken(OpenGaussStatementParser.LP_, 0); }
		public FuncArgListContext funcArgList() {
			return getRuleContext(FuncArgListContext.class,0);
		}
		public TerminalNode RP_() { return getToken(OpenGaussStatementParser.RP_, 0); }
		public SortClauseContext sortClause() {
			return getRuleContext(SortClauseContext.class,0);
		}
		public ConstTypeNameContext constTypeName() {
			return getRuleContext(ConstTypeNameContext.class,0);
		}
		public TerminalNode TRUE() { return getToken(OpenGaussStatementParser.TRUE, 0); }
		public TerminalNode FALSE() { return getToken(OpenGaussStatementParser.FALSE, 0); }
		public TerminalNode NULL() { return getToken(OpenGaussStatementParser.NULL, 0); }
		public AexprConstContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_aexprConst; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitAexprConst(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AexprConstContext aexprConst() throws RecognitionException {
		AexprConstContext _localctx = new AexprConstContext(_ctx, getState());
		enterRule(_localctx, 356, RULE_aexprConst);
		int _la;
		try {
			setState(3577);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,230,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(3557);
				numberConst();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(3558);
				match(STRING_);
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(3559);
				funcName();
				setState(3560);
				match(STRING_);
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(3562);
				funcName();
				setState(3563);
				match(LP_);
				setState(3564);
				funcArgList();
				setState(3566);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==ORDER) {
					{
					setState(3565);
					sortClause();
					}
				}

				setState(3568);
				match(RP_);
				setState(3569);
				match(STRING_);
				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(3571);
				constTypeName();
				setState(3572);
				match(STRING_);
				}
				break;
			case 6:
				enterOuterAlt(_localctx, 6);
				{
				setState(3574);
				match(TRUE);
				}
				break;
			case 7:
				enterOuterAlt(_localctx, 7);
				{
				setState(3575);
				match(FALSE);
				}
				break;
			case 8:
				enterOuterAlt(_localctx, 8);
				{
				setState(3576);
				match(NULL);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class NumberConstContext extends ParserRuleContext {
		public TerminalNode NUMBER_() { return getToken(OpenGaussStatementParser.NUMBER_, 0); }
		public TerminalNode PLUS_() { return getToken(OpenGaussStatementParser.PLUS_, 0); }
		public TerminalNode MINUS_() { return getToken(OpenGaussStatementParser.MINUS_, 0); }
		public NumberConstContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_numberConst; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitNumberConst(this);
			else return visitor.visitChildren(this);
		}
	}

	public final NumberConstContext numberConst() throws RecognitionException {
		NumberConstContext _localctx = new NumberConstContext(_ctx, getState());
		enterRule(_localctx, 358, RULE_numberConst);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3580);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==PLUS_ || _la==MINUS_) {
				{
				setState(3579);
				_la = _input.LA(1);
				if ( !(_la==PLUS_ || _la==MINUS_) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
			}

			setState(3582);
			match(NUMBER_);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class QualifiedNameContext extends ParserRuleContext {
		public ColIdContext colId() {
			return getRuleContext(ColIdContext.class,0);
		}
		public IndirectionContext indirection() {
			return getRuleContext(IndirectionContext.class,0);
		}
		public QualifiedNameContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_qualifiedName; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitQualifiedName(this);
			else return visitor.visitChildren(this);
		}
	}

	public final QualifiedNameContext qualifiedName() throws RecognitionException {
		QualifiedNameContext _localctx = new QualifiedNameContext(_ctx, getState());
		enterRule(_localctx, 360, RULE_qualifiedName);
		try {
			setState(3588);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,232,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(3584);
				colId();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(3585);
				colId();
				setState(3586);
				indirection(0);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ColIdContext extends ParserRuleContext {
		public IdentifierContext identifier() {
			return getRuleContext(IdentifierContext.class,0);
		}
		public ColIdContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_colId; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitColId(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ColIdContext colId() throws RecognitionException {
		ColIdContext _localctx = new ColIdContext(_ctx, getState());
		enterRule(_localctx, 362, RULE_colId);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3590);
			identifier();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class TypeFunctionNameContext extends ParserRuleContext {
		public IdentifierContext identifier() {
			return getRuleContext(IdentifierContext.class,0);
		}
		public UnreservedWordContext unreservedWord() {
			return getRuleContext(UnreservedWordContext.class,0);
		}
		public TypeFuncNameKeywordContext typeFuncNameKeyword() {
			return getRuleContext(TypeFuncNameKeywordContext.class,0);
		}
		public TypeFunctionNameContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_typeFunctionName; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitTypeFunctionName(this);
			else return visitor.visitChildren(this);
		}
	}

	public final TypeFunctionNameContext typeFunctionName() throws RecognitionException {
		TypeFunctionNameContext _localctx = new TypeFunctionNameContext(_ctx, getState());
		enterRule(_localctx, 364, RULE_typeFunctionName);
		try {
			setState(3595);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,233,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(3592);
				identifier();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(3593);
				unreservedWord();
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(3594);
				typeFuncNameKeyword();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class FunctionTableContext extends ParserRuleContext {
		public FunctionExprWindowlessContext functionExprWindowless() {
			return getRuleContext(FunctionExprWindowlessContext.class,0);
		}
		public OrdinalityContext ordinality() {
			return getRuleContext(OrdinalityContext.class,0);
		}
		public TerminalNode ROWS() { return getToken(OpenGaussStatementParser.ROWS, 0); }
		public TerminalNode FROM() { return getToken(OpenGaussStatementParser.FROM, 0); }
		public TerminalNode LP_() { return getToken(OpenGaussStatementParser.LP_, 0); }
		public RowsFromListContext rowsFromList() {
			return getRuleContext(RowsFromListContext.class,0);
		}
		public TerminalNode RP_() { return getToken(OpenGaussStatementParser.RP_, 0); }
		public FunctionTableContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_functionTable; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitFunctionTable(this);
			else return visitor.visitChildren(this);
		}
	}

	public final FunctionTableContext functionTable() throws RecognitionException {
		FunctionTableContext _localctx = new FunctionTableContext(_ctx, getState());
		enterRule(_localctx, 366, RULE_functionTable);
		try {
			setState(3609);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,236,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(3597);
				functionExprWindowless();
				setState(3599);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,234,_ctx) ) {
				case 1:
					{
					setState(3598);
					ordinality();
					}
					break;
				}
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(3601);
				match(ROWS);
				setState(3602);
				match(FROM);
				setState(3603);
				match(LP_);
				setState(3604);
				rowsFromList();
				setState(3605);
				match(RP_);
				setState(3607);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,235,_ctx) ) {
				case 1:
					{
					setState(3606);
					ordinality();
					}
					break;
				}
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class XmlTableContext extends ParserRuleContext {
		public TerminalNode XMLTABLE() { return getToken(OpenGaussStatementParser.XMLTABLE, 0); }
		public List LP_() { return getTokens(OpenGaussStatementParser.LP_); }
		public TerminalNode LP_(int i) {
			return getToken(OpenGaussStatementParser.LP_, i);
		}
		public CExprContext cExpr() {
			return getRuleContext(CExprContext.class,0);
		}
		public XmlExistsArgumentContext xmlExistsArgument() {
			return getRuleContext(XmlExistsArgumentContext.class,0);
		}
		public TerminalNode COLUMNS() { return getToken(OpenGaussStatementParser.COLUMNS, 0); }
		public XmlTableColumnListContext xmlTableColumnList() {
			return getRuleContext(XmlTableColumnListContext.class,0);
		}
		public List RP_() { return getTokens(OpenGaussStatementParser.RP_); }
		public TerminalNode RP_(int i) {
			return getToken(OpenGaussStatementParser.RP_, i);
		}
		public TerminalNode XMLNAMESPACES() { return getToken(OpenGaussStatementParser.XMLNAMESPACES, 0); }
		public XmlNamespaceListContext xmlNamespaceList() {
			return getRuleContext(XmlNamespaceListContext.class,0);
		}
		public TerminalNode COMMA_() { return getToken(OpenGaussStatementParser.COMMA_, 0); }
		public XmlTableContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_xmlTable; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitXmlTable(this);
			else return visitor.visitChildren(this);
		}
	}

	public final XmlTableContext xmlTable() throws RecognitionException {
		XmlTableContext _localctx = new XmlTableContext(_ctx, getState());
		enterRule(_localctx, 368, RULE_xmlTable);
		try {
			setState(3632);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,237,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(3611);
				match(XMLTABLE);
				setState(3612);
				match(LP_);
				setState(3613);
				cExpr();
				setState(3614);
				xmlExistsArgument();
				setState(3615);
				match(COLUMNS);
				setState(3616);
				xmlTableColumnList();
				setState(3617);
				match(RP_);
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(3619);
				match(XMLTABLE);
				setState(3620);
				match(LP_);
				setState(3621);
				match(XMLNAMESPACES);
				setState(3622);
				match(LP_);
				setState(3623);
				xmlNamespaceList();
				setState(3624);
				match(RP_);
				setState(3625);
				match(COMMA_);
				setState(3626);
				cExpr();
				setState(3627);
				xmlExistsArgument();
				setState(3628);
				match(COLUMNS);
				setState(3629);
				xmlTableColumnList();
				setState(3630);
				match(RP_);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class XmlTableColumnListContext extends ParserRuleContext {
		public List xmlTableColumnEl() {
			return getRuleContexts(XmlTableColumnElContext.class);
		}
		public XmlTableColumnElContext xmlTableColumnEl(int i) {
			return getRuleContext(XmlTableColumnElContext.class,i);
		}
		public List COMMA_() { return getTokens(OpenGaussStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(OpenGaussStatementParser.COMMA_, i);
		}
		public XmlTableColumnListContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_xmlTableColumnList; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitXmlTableColumnList(this);
			else return visitor.visitChildren(this);
		}
	}

	public final XmlTableColumnListContext xmlTableColumnList() throws RecognitionException {
		XmlTableColumnListContext _localctx = new XmlTableColumnListContext(_ctx, getState());
		enterRule(_localctx, 370, RULE_xmlTableColumnList);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3634);
			xmlTableColumnEl();
			setState(3639);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA_) {
				{
				{
				setState(3635);
				match(COMMA_);
				setState(3636);
				xmlTableColumnEl();
				}
				}
				setState(3641);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class XmlTableColumnElContext extends ParserRuleContext {
		public ColIdContext colId() {
			return getRuleContext(ColIdContext.class,0);
		}
		public TypeNameContext typeName() {
			return getRuleContext(TypeNameContext.class,0);
		}
		public XmlTableColumnOptionListContext xmlTableColumnOptionList() {
			return getRuleContext(XmlTableColumnOptionListContext.class,0);
		}
		public TerminalNode FOR() { return getToken(OpenGaussStatementParser.FOR, 0); }
		public TerminalNode ORDINALITY() { return getToken(OpenGaussStatementParser.ORDINALITY, 0); }
		public XmlTableColumnElContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_xmlTableColumnEl; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitXmlTableColumnEl(this);
			else return visitor.visitChildren(this);
		}
	}

	public final XmlTableColumnElContext xmlTableColumnEl() throws RecognitionException {
		XmlTableColumnElContext _localctx = new XmlTableColumnElContext(_ctx, getState());
		enterRule(_localctx, 372, RULE_xmlTableColumnEl);
		try {
			setState(3653);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,239,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(3642);
				colId();
				setState(3643);
				typeName();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(3645);
				colId();
				setState(3646);
				typeName();
				setState(3647);
				xmlTableColumnOptionList(0);
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(3649);
				colId();
				setState(3650);
				match(FOR);
				setState(3651);
				match(ORDINALITY);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class XmlTableColumnOptionListContext extends ParserRuleContext {
		public XmlTableColumnOptionElContext xmlTableColumnOptionEl() {
			return getRuleContext(XmlTableColumnOptionElContext.class,0);
		}
		public XmlTableColumnOptionListContext xmlTableColumnOptionList() {
			return getRuleContext(XmlTableColumnOptionListContext.class,0);
		}
		public XmlTableColumnOptionListContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_xmlTableColumnOptionList; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitXmlTableColumnOptionList(this);
			else return visitor.visitChildren(this);
		}
	}

	public final XmlTableColumnOptionListContext xmlTableColumnOptionList() throws RecognitionException {
		return xmlTableColumnOptionList(0);
	}

	private XmlTableColumnOptionListContext xmlTableColumnOptionList(int _p) throws RecognitionException {
		ParserRuleContext _parentctx = _ctx;
		int _parentState = getState();
		XmlTableColumnOptionListContext _localctx = new XmlTableColumnOptionListContext(_ctx, _parentState);
		XmlTableColumnOptionListContext _prevctx = _localctx;
		int _startState = 374;
		enterRecursionRule(_localctx, 374, RULE_xmlTableColumnOptionList, _p);
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			{
			setState(3656);
			xmlTableColumnOptionEl();
			}
			_ctx.stop = _input.LT(-1);
			setState(3662);
			_errHandler.sync(this);
			_alt = getInterpreter().adaptivePredict(_input,240,_ctx);
			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
				if ( _alt==1 ) {
					if ( _parseListeners!=null ) triggerExitRuleEvent();
					_prevctx = _localctx;
					{
					{
					_localctx = new XmlTableColumnOptionListContext(_parentctx, _parentState);
					pushNewRecursionContext(_localctx, _startState, RULE_xmlTableColumnOptionList);
					setState(3658);
					if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)");
					setState(3659);
					xmlTableColumnOptionEl();
					}
					} 
				}
				setState(3664);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,240,_ctx);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			unrollRecursionContexts(_parentctx);
		}
		return _localctx;
	}

	public static class XmlTableColumnOptionElContext extends ParserRuleContext {
		public IdentifierContext identifier() {
			return getRuleContext(IdentifierContext.class,0);
		}
		public BExprContext bExpr() {
			return getRuleContext(BExprContext.class,0);
		}
		public TerminalNode DEFAULT() { return getToken(OpenGaussStatementParser.DEFAULT, 0); }
		public TerminalNode NOT() { return getToken(OpenGaussStatementParser.NOT, 0); }
		public TerminalNode NULL() { return getToken(OpenGaussStatementParser.NULL, 0); }
		public XmlTableColumnOptionElContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_xmlTableColumnOptionEl; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitXmlTableColumnOptionEl(this);
			else return visitor.visitChildren(this);
		}
	}

	public final XmlTableColumnOptionElContext xmlTableColumnOptionEl() throws RecognitionException {
		XmlTableColumnOptionElContext _localctx = new XmlTableColumnOptionElContext(_ctx, getState());
		enterRule(_localctx, 376, RULE_xmlTableColumnOptionEl);
		try {
			setState(3673);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case UNICODE_ESCAPE:
			case INSERT:
			case UPDATE:
			case DELETE:
			case ALTER:
			case DROP:
			case TRUNCATE:
			case SCHEMA:
			case REVOKE:
			case ADD:
			case SET:
			case INDEX:
			case KEY:
			case POSITION:
			case FUNCTION:
			case TRIGGER:
			case PROCEDURE:
			case VIEW:
			case IF:
			case BY:
			case BEGIN:
			case COMMIT:
			case ROLLBACK:
			case SAVEPOINT:
			case DOUBLE:
			case INTERVAL:
			case TIME:
			case TIMESTAMP:
			case YEAR:
			case MONTH:
			case DAY:
			case HOUR:
			case MINUTE:
			case SECOND:
			case CURRENT:
			case ENABLE:
			case DISABLE:
			case CALL:
			case PRESERVE:
			case DEFINER:
			case SQL:
			case CASCADED:
			case LOCAL:
			case CLOSE:
			case NEXT:
			case NAME:
			case NAMES:
			case TYPE:
			case TEXT:
			case REPEATABLE:
			case VARYING:
			case NATIONAL:
			case VALUE:
			case TIES:
			case CUBE:
			case SETS:
			case OTHERS:
			case AT:
			case MAXVALUE:
			case ADMIN:
			case ESCAPE:
			case EXCLUDE:
			case MOD:
			case PARTITION:
			case UNKNOWN:
			case ALWAYS:
			case CASCADE:
			case GENERATED:
			case ISOLATION:
			case LEVEL:
			case NO:
			case OPTION:
			case PRIVILEGES:
			case READ:
			case ROLE:
			case ROWS:
			case START:
			case TRANSACTION:
			case ACTION:
			case CACHE:
			case CHARACTERISTICS:
			case CLUSTER:
			case COMMENTS:
			case CONSTRAINTS:
			case CYCLE:
			case DATA:
			case DATABASE:
			case DEFAULTS:
			case DEFERRED:
			case DEPENDS:
			case DOMAIN:
			case EXCLUDING:
			case EXECUTE:
			case EXTENDED:
			case EXTENSION:
			case EXTERNAL:
			case FILTER:
			case FIRST:
			case FOLLOWING:
			case FORCE:
			case GLOBAL:
			case IDENTITY:
			case IMMEDIATE:
			case INCLUDING:
			case INCREMENT:
			case INDEXES:
			case INHERIT:
			case INHERITS:
			case INCLUDE:
			case LANGUAGE:
			case LARGE:
			case LAST:
			case LOGGED:
			case MAIN:
			case MATCH:
			case MINVALUE:
			case NOTHING:
			case NULLS:
			case OBJECT:
			case OIDS:
			case OVER:
			case OWNED:
			case OWNER:
			case PARTIAL:
			case PLAIN:
			case PRECEDING:
			case RANGE:
			case RENAME:
			case REPLICA:
			case RESET:
			case RESTART:
			case RESTRICT:
			case ROUTINE:
			case RULE:
			case SECURITY:
			case SEQUENCE:
			case SESSION:
			case SHOW:
			case SIMPLE:
			case STATISTICS:
			case STORAGE:
			case TABLESPACE:
			case TEMP:
			case TEMPORARY:
			case UNBOUNDED:
			case UNLOGGED:
			case VALID:
			case VALIDATE:
			case WITHIN:
			case WITHOUT:
			case ZONE:
			case OF:
			case UESCAPE:
			case GROUPS:
			case RECURSIVE:
			case INT2:
			case INT4:
			case FLOAT4:
			case BYTEA:
			case ENUM:
			case POINT:
			case LSEG:
			case BOX:
			case PATH:
			case POLYGON:
			case CIRCLE:
			case INET:
			case TSQUERY:
			case XML:
			case JSON:
			case INT4RANGE:
			case INT8RANGE:
			case NUMRANGE:
			case DATERANGE:
			case ORDINALITY:
			case NFC:
			case NFD:
			case NFKC:
			case NFKD:
			case REF:
			case PASSING:
			case VERSION:
			case YES:
			case STANDALONE:
			case MATERIALIZED:
			case OPERATOR:
			case SHARE:
			case ROLLUP:
			case DOCUMENT:
			case NORMALIZED:
			case NOWAIT:
			case LOCKED:
			case COLUMNS:
			case CONTENT:
			case STRIP:
			case WHITESPACE:
			case CONFLICT:
			case OVERRIDING:
			case SYSTEM:
			case ABORT:
			case ABSOLUTE:
			case ACCESS:
			case AFTER:
			case AGGREGATE:
			case ALSO:
			case ATTACH:
			case ATTRIBUTE:
			case BACKWARD:
			case BEFORE:
			case ASSERTION:
			case ASSIGNMENT:
			case CONTINUE:
			case CONVERSION:
			case COPY:
			case COST:
			case CSV:
			case CALLED:
			case CATALOG:
			case CHAIN:
			case CHECKPOINT:
			case CLASS:
			case CONFIGURATION:
			case COMMENT:
			case DETACH:
			case DICTIONARY:
			case EXPRESSION:
			case INSENSITIVE:
			case DISCARD:
			case OFF:
			case INSTEAD:
			case EXPLAIN:
			case INPUT:
			case INLINE:
			case PARALLEL:
			case LEAKPROOF:
			case COMMITTED:
			case ENCODING:
			case IMPLICIT:
			case DELIMITER:
			case CURSOR:
			case EACH:
			case EVENT:
			case DEALLOCATE:
			case CONNECTION:
			case DECLARE:
			case FAMILY:
			case FORWARD:
			case EXCLUSIVE:
			case FUNCTIONS:
			case LOCATION:
			case LABEL:
			case DELIMITERS:
			case HANDLER:
			case HEADER:
			case IMMUTABLE:
			case GRANTED:
			case HOLD:
			case MAPPING:
			case OLD:
			case METHOD:
			case LOAD:
			case LISTEN:
			case MODE:
			case MOVE:
			case PROCEDURAL:
			case PARSER:
			case PROCEDURES:
			case ENCRYPTED:
			case PUBLICATION:
			case PROGRAM:
			case REFERENCING:
			case PLANS:
			case REINDEX:
			case PRIOR:
			case PASSWORD:
			case RELATIVE:
			case QUOTE:
			case ROUTINES:
			case REPLACE:
			case SNAPSHOT:
			case REFRESH:
			case PREPARE:
			case OPTIONS:
			case IMPORT:
			case INVOKER:
			case NEW:
			case PREPARED:
			case SCROLL:
			case SEQUENCES:
			case SYSID:
			case REASSIGN:
			case SERVER:
			case SUBSCRIPTION:
			case SEARCH:
			case SCHEMAS:
			case RECHECK:
			case POLICY:
			case NOTIFY:
			case LOCK:
			case RELEASE:
			case SERIALIZABLE:
			case RETURNS:
			case STATEMENT:
			case STDIN:
			case STDOUT:
			case TABLES:
			case SUPPORT:
			case STABLE:
			case TEMPLATE:
			case UNENCRYPTED:
			case VIEWS:
			case UNCOMMITTED:
			case TRANSFORM:
			case UNLISTEN:
			case TRUSTED:
			case VALIDATOR:
			case UNTIL:
			case VACUUM:
			case VOLATILE:
			case STORED:
			case WRITE:
			case STRICT:
			case TYPES:
			case WRAPPER:
			case WORK:
			case INT16:
			case INT1:
			case ELEM_CONTAINED_BY_RANGE:
			case IDENTIFIER_:
				enterOuterAlt(_localctx, 1);
				{
				setState(3665);
				identifier();
				setState(3666);
				bExpr(0);
				}
				break;
			case DEFAULT:
				enterOuterAlt(_localctx, 2);
				{
				setState(3668);
				match(DEFAULT);
				setState(3669);
				bExpr(0);
				}
				break;
			case NOT:
				enterOuterAlt(_localctx, 3);
				{
				setState(3670);
				match(NOT);
				setState(3671);
				match(NULL);
				}
				break;
			case NULL:
				enterOuterAlt(_localctx, 4);
				{
				setState(3672);
				match(NULL);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class XmlNamespaceListContext extends ParserRuleContext {
		public List xmlNamespaceEl() {
			return getRuleContexts(XmlNamespaceElContext.class);
		}
		public XmlNamespaceElContext xmlNamespaceEl(int i) {
			return getRuleContext(XmlNamespaceElContext.class,i);
		}
		public List COMMA_() { return getTokens(OpenGaussStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(OpenGaussStatementParser.COMMA_, i);
		}
		public XmlNamespaceListContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_xmlNamespaceList; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitXmlNamespaceList(this);
			else return visitor.visitChildren(this);
		}
	}

	public final XmlNamespaceListContext xmlNamespaceList() throws RecognitionException {
		XmlNamespaceListContext _localctx = new XmlNamespaceListContext(_ctx, getState());
		enterRule(_localctx, 378, RULE_xmlNamespaceList);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3675);
			xmlNamespaceEl();
			setState(3680);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA_) {
				{
				{
				setState(3676);
				match(COMMA_);
				setState(3677);
				xmlNamespaceEl();
				}
				}
				setState(3682);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class XmlNamespaceElContext extends ParserRuleContext {
		public BExprContext bExpr() {
			return getRuleContext(BExprContext.class,0);
		}
		public TerminalNode AS() { return getToken(OpenGaussStatementParser.AS, 0); }
		public IdentifierContext identifier() {
			return getRuleContext(IdentifierContext.class,0);
		}
		public TerminalNode DEFAULT() { return getToken(OpenGaussStatementParser.DEFAULT, 0); }
		public XmlNamespaceElContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_xmlNamespaceEl; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitXmlNamespaceEl(this);
			else return visitor.visitChildren(this);
		}
	}

	public final XmlNamespaceElContext xmlNamespaceEl() throws RecognitionException {
		XmlNamespaceElContext _localctx = new XmlNamespaceElContext(_ctx, getState());
		enterRule(_localctx, 380, RULE_xmlNamespaceEl);
		try {
			setState(3689);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case OR_:
			case SIGNED_LEFT_SHIFT_:
			case SIGNED_RIGHT_SHIFT_:
			case PLUS_:
			case MINUS_:
			case POUND_:
			case LP_:
			case QUESTION_:
			case DOLLAR_:
			case UNICODE_ESCAPE:
			case JSON_EXTRACT_:
			case JSON_EXTRACT_TEXT_:
			case JSON_PATH_EXTRACT_:
			case JSON_PATH_EXTRACT_TEXT_:
			case JSONB_CONTAIN_RIGHT_:
			case JSONB_CONTAIN_LEFT_:
			case JSONB_CONTAIN_ALL_TOP_KEY_:
			case JSONB_PATH_DELETE_:
			case JSONB_PATH_CONTAIN_ANY_VALUE_:
			case JSONB_PATH_PREDICATE_CHECK_:
			case GEOMETRIC_LENGTH_:
			case GEOMETRIC_DISTANCE_:
			case GEOMETRIC_EXTEND_RIGHT_:
			case GEOMETRIC_EXTEND_LEFT_:
			case GEOMETRIC_STRICT_BELOW_:
			case GEOMETRIC_STRICT_ABOVE_:
			case GEOMETRIC_EXTEND_ABOVE_:
			case GEOMETRIC_EXTEND_BELOW_:
			case GEOMETRIC_BELOW_:
			case GEOMETRIC_ABOVE_:
			case GEOMETRIC_INTERSECT_:
			case GEOMETRIC_PERPENDICULAR_:
			case GEOMETRIC_SAME_AS_:
			case INSERT:
			case UPDATE:
			case DELETE:
			case ALTER:
			case DROP:
			case TRUNCATE:
			case SCHEMA:
			case REVOKE:
			case ADD:
			case SET:
			case INDEX:
			case KEY:
			case POSITION:
			case FUNCTION:
			case TRIGGER:
			case PROCEDURE:
			case VIEW:
			case CASE:
			case CAST:
			case TRIM:
			case SUBSTRING:
			case NATURAL:
			case JOIN:
			case FULL:
			case INNER:
			case OUTER:
			case LEFT:
			case RIGHT:
			case CROSS:
			case IF:
			case IS:
			case NULL:
			case TRUE:
			case FALSE:
			case EXISTS:
			case LIKE:
			case BY:
			case BEGIN:
			case COMMIT:
			case ROLLBACK:
			case SAVEPOINT:
			case BOOLEAN:
			case DOUBLE:
			case CHAR:
			case CHARACTER:
			case ARRAY:
			case INTERVAL:
			case DATE:
			case TIME:
			case TIMESTAMP:
			case LOCALTIME:
			case LOCALTIMESTAMP:
			case YEAR:
			case MONTH:
			case DAY:
			case HOUR:
			case MINUTE:
			case SECOND:
			case CURRENT:
			case ENABLE:
			case DISABLE:
			case CALL:
			case PRESERVE:
			case DEFINER:
			case CURRENT_USER:
			case SQL:
			case CASCADED:
			case LOCAL:
			case CLOSE:
			case NEXT:
			case NAME:
			case COLLATION:
			case NAMES:
			case INTEGER:
			case REAL:
			case DECIMAL:
			case TYPE:
			case SMALLINT:
			case BIGINT:
			case NUMERIC:
			case TEXT:
			case REPEATABLE:
			case CURRENT_DATE:
			case CURRENT_TIME:
			case CURRENT_TIMESTAMP:
			case NULLIF:
			case VARYING:
			case NATIONAL:
			case NCHAR:
			case VALUE:
			case COALESCE:
			case TIES:
			case CUBE:
			case GROUPING:
			case SETS:
			case OTHERS:
			case OVERLAPS:
			case AT:
			case DEC:
			case MAXVALUE:
			case ADMIN:
			case BINARY:
			case ESCAPE:
			case EXCLUDE:
			case MOD:
			case PARTITION:
			case ROW:
			case UNKNOWN:
			case ALWAYS:
			case CASCADE:
			case GENERATED:
			case ISOLATION:
			case LEVEL:
			case NO:
			case OPTION:
			case PRIVILEGES:
			case READ:
			case ROLE:
			case ROWS:
			case START:
			case TRANSACTION:
			case USER:
			case ACTION:
			case CACHE:
			case CHARACTERISTICS:
			case CLUSTER:
			case COMMENTS:
			case CONCURRENTLY:
			case CONSTRAINTS:
			case CYCLE:
			case DATA:
			case DATABASE:
			case DEFAULTS:
			case DEFERRED:
			case DEPENDS:
			case DOMAIN:
			case EXCLUDING:
			case EXECUTE:
			case EXTENDED:
			case EXTENSION:
			case EXTERNAL:
			case EXTRACT:
			case FILTER:
			case FIRST:
			case FOLLOWING:
			case FORCE:
			case GLOBAL:
			case IDENTITY:
			case IMMEDIATE:
			case INCLUDING:
			case INCREMENT:
			case INDEXES:
			case INHERIT:
			case INHERITS:
			case INCLUDE:
			case LANGUAGE:
			case LARGE:
			case LAST:
			case LOGGED:
			case MAIN:
			case MATCH:
			case MINVALUE:
			case NOTHING:
			case NULLS:
			case OBJECT:
			case OIDS:
			case OVER:
			case OWNED:
			case OWNER:
			case PARTIAL:
			case PLAIN:
			case PRECEDING:
			case RANGE:
			case RENAME:
			case REPLICA:
			case RESET:
			case RESTART:
			case RESTRICT:
			case ROUTINE:
			case RULE:
			case SECURITY:
			case SEQUENCE:
			case SESSION:
			case SESSION_USER:
			case SHOW:
			case SIMPLE:
			case STATISTICS:
			case STORAGE:
			case TABLESPACE:
			case TEMP:
			case TEMPORARY:
			case UNBOUNDED:
			case UNLOGGED:
			case VALID:
			case VALIDATE:
			case WITHIN:
			case WITHOUT:
			case ZONE:
			case OF:
			case UESCAPE:
			case GROUPS:
			case RECURSIVE:
			case INT:
			case INT2:
			case INT4:
			case INT8:
			case FLOAT:
			case FLOAT4:
			case FLOAT8:
			case VARCHAR:
			case BYTEA:
			case ENUM:
			case POINT:
			case LSEG:
			case BOX:
			case PATH:
			case POLYGON:
			case CIRCLE:
			case INET:
			case BIT:
			case TSQUERY:
			case XML:
			case JSON:
			case INT4RANGE:
			case INT8RANGE:
			case NUMRANGE:
			case DATERANGE:
			case TABLESAMPLE:
			case ORDINALITY:
			case CURRENT_ROLE:
			case CURRENT_CATALOG:
			case CURRENT_SCHEMA:
			case NORMALIZE:
			case OVERLAY:
			case XMLCONCAT:
			case XMLELEMENT:
			case XMLEXISTS:
			case XMLFOREST:
			case XMLPARSE:
			case XMLPI:
			case XMLROOT:
			case XMLSERIALIZE:
			case TREAT:
			case NFC:
			case NFD:
			case NFKC:
			case NFKD:
			case REF:
			case PASSING:
			case VERSION:
			case YES:
			case STANDALONE:
			case GREATEST:
			case LEAST:
			case MATERIALIZED:
			case OPERATOR:
			case SHARE:
			case ROLLUP:
			case ILIKE:
			case SIMILAR:
			case ISNULL:
			case NOTNULL:
			case DOCUMENT:
			case NORMALIZED:
			case NOWAIT:
			case LOCKED:
			case COLUMNS:
			case CONTENT:
			case STRIP:
			case WHITESPACE:
			case CONFLICT:
			case OVERRIDING:
			case SYSTEM:
			case ABORT:
			case ABSOLUTE:
			case ACCESS:
			case AFTER:
			case AGGREGATE:
			case ALSO:
			case ATTACH:
			case ATTRIBUTE:
			case BACKWARD:
			case BEFORE:
			case ASSERTION:
			case ASSIGNMENT:
			case CONTINUE:
			case CONVERSION:
			case COPY:
			case COST:
			case CSV:
			case CALLED:
			case CATALOG:
			case CHAIN:
			case CHECKPOINT:
			case CLASS:
			case CONFIGURATION:
			case COMMENT:
			case DETACH:
			case DICTIONARY:
			case EXPRESSION:
			case INSENSITIVE:
			case DISCARD:
			case OFF:
			case INSTEAD:
			case EXPLAIN:
			case INPUT:
			case INLINE:
			case PARALLEL:
			case LEAKPROOF:
			case COMMITTED:
			case ENCODING:
			case IMPLICIT:
			case DELIMITER:
			case CURSOR:
			case EACH:
			case EVENT:
			case DEALLOCATE:
			case CONNECTION:
			case DECLARE:
			case FAMILY:
			case FORWARD:
			case EXCLUSIVE:
			case FUNCTIONS:
			case LOCATION:
			case LABEL:
			case DELIMITERS:
			case HANDLER:
			case HEADER:
			case IMMUTABLE:
			case GRANTED:
			case HOLD:
			case MAPPING:
			case OLD:
			case METHOD:
			case LOAD:
			case LISTEN:
			case MODE:
			case MOVE:
			case PROCEDURAL:
			case PARSER:
			case PROCEDURES:
			case ENCRYPTED:
			case PUBLICATION:
			case PROGRAM:
			case REFERENCING:
			case PLANS:
			case REINDEX:
			case PRIOR:
			case PASSWORD:
			case RELATIVE:
			case QUOTE:
			case ROUTINES:
			case REPLACE:
			case SNAPSHOT:
			case REFRESH:
			case PREPARE:
			case OPTIONS:
			case IMPORT:
			case INVOKER:
			case NEW:
			case PREPARED:
			case SCROLL:
			case SEQUENCES:
			case SYSID:
			case REASSIGN:
			case SERVER:
			case SUBSCRIPTION:
			case SEARCH:
			case SCHEMAS:
			case RECHECK:
			case POLICY:
			case NOTIFY:
			case LOCK:
			case RELEASE:
			case SERIALIZABLE:
			case RETURNS:
			case STATEMENT:
			case STDIN:
			case STDOUT:
			case TABLES:
			case SUPPORT:
			case STABLE:
			case TEMPLATE:
			case UNENCRYPTED:
			case VIEWS:
			case UNCOMMITTED:
			case TRANSFORM:
			case UNLISTEN:
			case TRUSTED:
			case VALIDATOR:
			case UNTIL:
			case VACUUM:
			case VOLATILE:
			case STORED:
			case WRITE:
			case STRICT:
			case TYPES:
			case WRAPPER:
			case WORK:
			case FREEZE:
			case AUTHORIZATION:
			case VERBOSE:
			case PARAM:
			case PREDICT:
			case TS_REWRITE:
			case INT16:
			case INT1:
			case ELEM_CONTAINED_BY_RANGE:
			case LOWER_INF:
			case UPPER_INF:
			case ABBREV:
			case SET_MASKLEN:
			case TRUNC:
			case IDENTIFIER_:
			case STRING_:
			case NUMBER_:
				enterOuterAlt(_localctx, 1);
				{
				setState(3683);
				bExpr(0);
				setState(3684);
				match(AS);
				setState(3685);
				identifier();
				}
				break;
			case DEFAULT:
				enterOuterAlt(_localctx, 2);
				{
				setState(3687);
				match(DEFAULT);
				setState(3688);
				bExpr(0);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class FuncExprContext extends ParserRuleContext {
		public FuncApplicationContext funcApplication() {
			return getRuleContext(FuncApplicationContext.class,0);
		}
		public WithinGroupClauseContext withinGroupClause() {
			return getRuleContext(WithinGroupClauseContext.class,0);
		}
		public FilterClauseContext filterClause() {
			return getRuleContext(FilterClauseContext.class,0);
		}
		public OverClauseContext overClause() {
			return getRuleContext(OverClauseContext.class,0);
		}
		public FunctionExprCommonSubexprContext functionExprCommonSubexpr() {
			return getRuleContext(FunctionExprCommonSubexprContext.class,0);
		}
		public FuncExprContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_funcExpr; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitFuncExpr(this);
			else return visitor.visitChildren(this);
		}
	}

	public final FuncExprContext funcExpr() throws RecognitionException {
		FuncExprContext _localctx = new FuncExprContext(_ctx, getState());
		enterRule(_localctx, 382, RULE_funcExpr);
		try {
			setState(3702);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,247,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(3691);
				funcApplication();
				setState(3693);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,244,_ctx) ) {
				case 1:
					{
					setState(3692);
					withinGroupClause();
					}
					break;
				}
				setState(3696);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,245,_ctx) ) {
				case 1:
					{
					setState(3695);
					filterClause();
					}
					break;
				}
				setState(3699);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,246,_ctx) ) {
				case 1:
					{
					setState(3698);
					overClause();
					}
					break;
				}
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(3701);
				functionExprCommonSubexpr();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class WithinGroupClauseContext extends ParserRuleContext {
		public TerminalNode WITHIN() { return getToken(OpenGaussStatementParser.WITHIN, 0); }
		public TerminalNode GROUP() { return getToken(OpenGaussStatementParser.GROUP, 0); }
		public TerminalNode LP_() { return getToken(OpenGaussStatementParser.LP_, 0); }
		public SortClauseContext sortClause() {
			return getRuleContext(SortClauseContext.class,0);
		}
		public TerminalNode RP_() { return getToken(OpenGaussStatementParser.RP_, 0); }
		public WithinGroupClauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_withinGroupClause; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitWithinGroupClause(this);
			else return visitor.visitChildren(this);
		}
	}

	public final WithinGroupClauseContext withinGroupClause() throws RecognitionException {
		WithinGroupClauseContext _localctx = new WithinGroupClauseContext(_ctx, getState());
		enterRule(_localctx, 384, RULE_withinGroupClause);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3704);
			match(WITHIN);
			setState(3705);
			match(GROUP);
			setState(3706);
			match(LP_);
			setState(3707);
			sortClause();
			setState(3708);
			match(RP_);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class FilterClauseContext extends ParserRuleContext {
		public TerminalNode FILTER() { return getToken(OpenGaussStatementParser.FILTER, 0); }
		public TerminalNode LP_() { return getToken(OpenGaussStatementParser.LP_, 0); }
		public TerminalNode WHERE() { return getToken(OpenGaussStatementParser.WHERE, 0); }
		public AExprContext aExpr() {
			return getRuleContext(AExprContext.class,0);
		}
		public TerminalNode RP_() { return getToken(OpenGaussStatementParser.RP_, 0); }
		public FilterClauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_filterClause; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitFilterClause(this);
			else return visitor.visitChildren(this);
		}
	}

	public final FilterClauseContext filterClause() throws RecognitionException {
		FilterClauseContext _localctx = new FilterClauseContext(_ctx, getState());
		enterRule(_localctx, 386, RULE_filterClause);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3710);
			match(FILTER);
			setState(3711);
			match(LP_);
			setState(3712);
			match(WHERE);
			setState(3713);
			aExpr(0);
			setState(3714);
			match(RP_);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class FunctionExprWindowlessContext extends ParserRuleContext {
		public FuncApplicationContext funcApplication() {
			return getRuleContext(FuncApplicationContext.class,0);
		}
		public FunctionExprCommonSubexprContext functionExprCommonSubexpr() {
			return getRuleContext(FunctionExprCommonSubexprContext.class,0);
		}
		public FunctionExprWindowlessContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_functionExprWindowless; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitFunctionExprWindowless(this);
			else return visitor.visitChildren(this);
		}
	}

	public final FunctionExprWindowlessContext functionExprWindowless() throws RecognitionException {
		FunctionExprWindowlessContext _localctx = new FunctionExprWindowlessContext(_ctx, getState());
		enterRule(_localctx, 388, RULE_functionExprWindowless);
		try {
			setState(3718);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,248,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(3716);
				funcApplication();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(3717);
				functionExprCommonSubexpr();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class OrdinalityContext extends ParserRuleContext {
		public TerminalNode WITH() { return getToken(OpenGaussStatementParser.WITH, 0); }
		public TerminalNode ORDINALITY() { return getToken(OpenGaussStatementParser.ORDINALITY, 0); }
		public OrdinalityContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_ordinality; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitOrdinality(this);
			else return visitor.visitChildren(this);
		}
	}

	public final OrdinalityContext ordinality() throws RecognitionException {
		OrdinalityContext _localctx = new OrdinalityContext(_ctx, getState());
		enterRule(_localctx, 390, RULE_ordinality);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3720);
			match(WITH);
			setState(3721);
			match(ORDINALITY);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class FunctionExprCommonSubexprContext extends ParserRuleContext {
		public TerminalNode COLLATION() { return getToken(OpenGaussStatementParser.COLLATION, 0); }
		public TerminalNode FOR() { return getToken(OpenGaussStatementParser.FOR, 0); }
		public TerminalNode LP_() { return getToken(OpenGaussStatementParser.LP_, 0); }
		public List aExpr() {
			return getRuleContexts(AExprContext.class);
		}
		public AExprContext aExpr(int i) {
			return getRuleContext(AExprContext.class,i);
		}
		public TerminalNode RP_() { return getToken(OpenGaussStatementParser.RP_, 0); }
		public TerminalNode CURRENT_DATE() { return getToken(OpenGaussStatementParser.CURRENT_DATE, 0); }
		public TerminalNode CURRENT_TIME() { return getToken(OpenGaussStatementParser.CURRENT_TIME, 0); }
		public TerminalNode NUMBER_() { return getToken(OpenGaussStatementParser.NUMBER_, 0); }
		public TerminalNode CURRENT_TIMESTAMP() { return getToken(OpenGaussStatementParser.CURRENT_TIMESTAMP, 0); }
		public TerminalNode LOCALTIME() { return getToken(OpenGaussStatementParser.LOCALTIME, 0); }
		public TerminalNode LOCALTIMESTAMP() { return getToken(OpenGaussStatementParser.LOCALTIMESTAMP, 0); }
		public TerminalNode CURRENT_ROLE() { return getToken(OpenGaussStatementParser.CURRENT_ROLE, 0); }
		public TerminalNode CURRENT_USER() { return getToken(OpenGaussStatementParser.CURRENT_USER, 0); }
		public TerminalNode SESSION_USER() { return getToken(OpenGaussStatementParser.SESSION_USER, 0); }
		public TerminalNode USER() { return getToken(OpenGaussStatementParser.USER, 0); }
		public TerminalNode CURRENT_CATALOG() { return getToken(OpenGaussStatementParser.CURRENT_CATALOG, 0); }
		public TerminalNode CURRENT_SCHEMA() { return getToken(OpenGaussStatementParser.CURRENT_SCHEMA, 0); }
		public TerminalNode CAST() { return getToken(OpenGaussStatementParser.CAST, 0); }
		public TerminalNode AS() { return getToken(OpenGaussStatementParser.AS, 0); }
		public TypeNameContext typeName() {
			return getRuleContext(TypeNameContext.class,0);
		}
		public TerminalNode EXTRACT() { return getToken(OpenGaussStatementParser.EXTRACT, 0); }
		public ExtractListContext extractList() {
			return getRuleContext(ExtractListContext.class,0);
		}
		public TerminalNode NORMALIZE() { return getToken(OpenGaussStatementParser.NORMALIZE, 0); }
		public List COMMA_() { return getTokens(OpenGaussStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(OpenGaussStatementParser.COMMA_, i);
		}
		public UnicodeNormalFormContext unicodeNormalForm() {
			return getRuleContext(UnicodeNormalFormContext.class,0);
		}
		public TerminalNode OVERLAY() { return getToken(OpenGaussStatementParser.OVERLAY, 0); }
		public OverlayListContext overlayList() {
			return getRuleContext(OverlayListContext.class,0);
		}
		public TerminalNode POSITION() { return getToken(OpenGaussStatementParser.POSITION, 0); }
		public PositionListContext positionList() {
			return getRuleContext(PositionListContext.class,0);
		}
		public TerminalNode SUBSTRING() { return getToken(OpenGaussStatementParser.SUBSTRING, 0); }
		public SubstrListContext substrList() {
			return getRuleContext(SubstrListContext.class,0);
		}
		public TerminalNode TREAT() { return getToken(OpenGaussStatementParser.TREAT, 0); }
		public TerminalNode TRIM() { return getToken(OpenGaussStatementParser.TRIM, 0); }
		public TerminalNode BOTH() { return getToken(OpenGaussStatementParser.BOTH, 0); }
		public TrimListContext trimList() {
			return getRuleContext(TrimListContext.class,0);
		}
		public TerminalNode LEADING() { return getToken(OpenGaussStatementParser.LEADING, 0); }
		public TerminalNode TRAILING() { return getToken(OpenGaussStatementParser.TRAILING, 0); }
		public TerminalNode NULLIF() { return getToken(OpenGaussStatementParser.NULLIF, 0); }
		public TerminalNode COALESCE() { return getToken(OpenGaussStatementParser.COALESCE, 0); }
		public ExprListContext exprList() {
			return getRuleContext(ExprListContext.class,0);
		}
		public TerminalNode GREATEST() { return getToken(OpenGaussStatementParser.GREATEST, 0); }
		public TerminalNode LEAST() { return getToken(OpenGaussStatementParser.LEAST, 0); }
		public TerminalNode XMLCONCAT() { return getToken(OpenGaussStatementParser.XMLCONCAT, 0); }
		public TerminalNode XMLELEMENT() { return getToken(OpenGaussStatementParser.XMLELEMENT, 0); }
		public TerminalNode NAME() { return getToken(OpenGaussStatementParser.NAME, 0); }
		public IdentifierContext identifier() {
			return getRuleContext(IdentifierContext.class,0);
		}
		public XmlAttributesContext xmlAttributes() {
			return getRuleContext(XmlAttributesContext.class,0);
		}
		public TerminalNode XMLEXISTS() { return getToken(OpenGaussStatementParser.XMLEXISTS, 0); }
		public CExprContext cExpr() {
			return getRuleContext(CExprContext.class,0);
		}
		public XmlExistsArgumentContext xmlExistsArgument() {
			return getRuleContext(XmlExistsArgumentContext.class,0);
		}
		public TerminalNode XMLFOREST() { return getToken(OpenGaussStatementParser.XMLFOREST, 0); }
		public XmlAttributeListContext xmlAttributeList() {
			return getRuleContext(XmlAttributeListContext.class,0);
		}
		public TerminalNode XMLPARSE() { return getToken(OpenGaussStatementParser.XMLPARSE, 0); }
		public DocumentOrContentContext documentOrContent() {
			return getRuleContext(DocumentOrContentContext.class,0);
		}
		public XmlWhitespaceOptionContext xmlWhitespaceOption() {
			return getRuleContext(XmlWhitespaceOptionContext.class,0);
		}
		public TerminalNode XMLPI() { return getToken(OpenGaussStatementParser.XMLPI, 0); }
		public TerminalNode XMLROOT() { return getToken(OpenGaussStatementParser.XMLROOT, 0); }
		public XmlRootVersionContext xmlRootVersion() {
			return getRuleContext(XmlRootVersionContext.class,0);
		}
		public XmlRootStandaloneContext xmlRootStandalone() {
			return getRuleContext(XmlRootStandaloneContext.class,0);
		}
		public TerminalNode XMLSERIALIZE() { return getToken(OpenGaussStatementParser.XMLSERIALIZE, 0); }
		public SimpleTypeNameContext simpleTypeName() {
			return getRuleContext(SimpleTypeNameContext.class,0);
		}
		public TerminalNode PREDICT() { return getToken(OpenGaussStatementParser.PREDICT, 0); }
		public TerminalNode BY() { return getToken(OpenGaussStatementParser.BY, 0); }
		public ModelNameContext modelName() {
			return getRuleContext(ModelNameContext.class,0);
		}
		public TerminalNode FEATURES() { return getToken(OpenGaussStatementParser.FEATURES, 0); }
		public List name() {
			return getRuleContexts(NameContext.class);
		}
		public NameContext name(int i) {
			return getRuleContext(NameContext.class,i);
		}
		public TerminalNode TS_REWRITE() { return getToken(OpenGaussStatementParser.TS_REWRITE, 0); }
		public List TYPE_CAST_() { return getTokens(OpenGaussStatementParser.TYPE_CAST_); }
		public TerminalNode TYPE_CAST_(int i) {
			return getToken(OpenGaussStatementParser.TYPE_CAST_, i);
		}
		public List TSQUERY() { return getTokens(OpenGaussStatementParser.TSQUERY); }
		public TerminalNode TSQUERY(int i) {
			return getToken(OpenGaussStatementParser.TSQUERY, i);
		}
		public TerminalNode ELEM_CONTAINED_BY_RANGE() { return getToken(OpenGaussStatementParser.ELEM_CONTAINED_BY_RANGE, 0); }
		public DataTypeContext dataType() {
			return getRuleContext(DataTypeContext.class,0);
		}
		public TerminalNode LOWER_INF() { return getToken(OpenGaussStatementParser.LOWER_INF, 0); }
		public TerminalNode UPPER_INF() { return getToken(OpenGaussStatementParser.UPPER_INF, 0); }
		public TerminalNode ABBREV() { return getToken(OpenGaussStatementParser.ABBREV, 0); }
		public TerminalNode STRING_() { return getToken(OpenGaussStatementParser.STRING_, 0); }
		public TerminalNode INET() { return getToken(OpenGaussStatementParser.INET, 0); }
		public TerminalNode CIDR() { return getToken(OpenGaussStatementParser.CIDR, 0); }
		public TerminalNode SET_MASKLEN() { return getToken(OpenGaussStatementParser.SET_MASKLEN, 0); }
		public NumberLiteralsContext numberLiterals() {
			return getRuleContext(NumberLiteralsContext.class,0);
		}
		public TerminalNode TEXT() { return getToken(OpenGaussStatementParser.TEXT, 0); }
		public TerminalNode TRUNC() { return getToken(OpenGaussStatementParser.TRUNC, 0); }
		public TerminalNode MACADDR() { return getToken(OpenGaussStatementParser.MACADDR, 0); }
		public FunctionExprCommonSubexprContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_functionExprCommonSubexpr; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitFunctionExprCommonSubexpr(this);
			else return visitor.visitChildren(this);
		}
	}

	public final FunctionExprCommonSubexprContext functionExprCommonSubexpr() throws RecognitionException {
		FunctionExprCommonSubexprContext _localctx = new FunctionExprCommonSubexprContext(_ctx, getState());
		enterRule(_localctx, 392, RULE_functionExprCommonSubexpr);
		int _la;
		try {
			setState(4010);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,256,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(3723);
				match(COLLATION);
				setState(3724);
				match(FOR);
				setState(3725);
				match(LP_);
				setState(3726);
				aExpr(0);
				setState(3727);
				match(RP_);
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(3729);
				match(CURRENT_DATE);
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(3730);
				match(CURRENT_TIME);
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(3731);
				match(CURRENT_TIME);
				setState(3732);
				match(LP_);
				setState(3733);
				match(NUMBER_);
				setState(3734);
				match(RP_);
				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(3735);
				match(CURRENT_TIMESTAMP);
				}
				break;
			case 6:
				enterOuterAlt(_localctx, 6);
				{
				setState(3736);
				match(CURRENT_TIMESTAMP);
				setState(3737);
				match(LP_);
				setState(3738);
				match(NUMBER_);
				setState(3739);
				match(RP_);
				}
				break;
			case 7:
				enterOuterAlt(_localctx, 7);
				{
				setState(3740);
				match(LOCALTIME);
				}
				break;
			case 8:
				enterOuterAlt(_localctx, 8);
				{
				setState(3741);
				match(LOCALTIME);
				setState(3742);
				match(LP_);
				setState(3743);
				match(NUMBER_);
				setState(3744);
				match(RP_);
				}
				break;
			case 9:
				enterOuterAlt(_localctx, 9);
				{
				setState(3745);
				match(LOCALTIMESTAMP);
				}
				break;
			case 10:
				enterOuterAlt(_localctx, 10);
				{
				setState(3746);
				match(LOCALTIMESTAMP);
				setState(3747);
				match(LP_);
				setState(3748);
				match(NUMBER_);
				setState(3749);
				match(RP_);
				}
				break;
			case 11:
				enterOuterAlt(_localctx, 11);
				{
				setState(3750);
				match(CURRENT_ROLE);
				}
				break;
			case 12:
				enterOuterAlt(_localctx, 12);
				{
				setState(3751);
				match(CURRENT_USER);
				}
				break;
			case 13:
				enterOuterAlt(_localctx, 13);
				{
				setState(3752);
				match(SESSION_USER);
				}
				break;
			case 14:
				enterOuterAlt(_localctx, 14);
				{
				setState(3753);
				match(USER);
				}
				break;
			case 15:
				enterOuterAlt(_localctx, 15);
				{
				setState(3754);
				match(CURRENT_CATALOG);
				}
				break;
			case 16:
				enterOuterAlt(_localctx, 16);
				{
				setState(3755);
				match(CURRENT_SCHEMA);
				}
				break;
			case 17:
				enterOuterAlt(_localctx, 17);
				{
				setState(3756);
				match(CAST);
				setState(3757);
				match(LP_);
				setState(3758);
				aExpr(0);
				setState(3759);
				match(AS);
				setState(3760);
				typeName();
				setState(3761);
				match(RP_);
				}
				break;
			case 18:
				enterOuterAlt(_localctx, 18);
				{
				setState(3763);
				match(EXTRACT);
				setState(3764);
				match(LP_);
				setState(3766);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==UNICODE_ESCAPE || ((((_la - 81)) & ~0x3f) == 0 && ((1L << (_la - 81)) & ((1L << (INSERT - 81)) | (1L << (UPDATE - 81)) | (1L << (DELETE - 81)) | (1L << (ALTER - 81)) | (1L << (DROP - 81)) | (1L << (TRUNCATE - 81)) | (1L << (SCHEMA - 81)) | (1L << (REVOKE - 81)) | (1L << (ADD - 81)) | (1L << (SET - 81)) | (1L << (INDEX - 81)) | (1L << (KEY - 81)) | (1L << (POSITION - 81)) | (1L << (FUNCTION - 81)) | (1L << (TRIGGER - 81)) | (1L << (PROCEDURE - 81)) | (1L << (VIEW - 81)) | (1L << (IF - 81)))) != 0) || ((((_la - 151)) & ~0x3f) == 0 && ((1L << (_la - 151)) & ((1L << (BY - 151)) | (1L << (BEGIN - 151)) | (1L << (COMMIT - 151)) | (1L << (ROLLBACK - 151)) | (1L << (SAVEPOINT - 151)) | (1L << (DOUBLE - 151)) | (1L << (INTERVAL - 151)) | (1L << (TIME - 151)) | (1L << (TIMESTAMP - 151)) | (1L << (YEAR - 151)) | (1L << (MONTH - 151)) | (1L << (DAY - 151)) | (1L << (HOUR - 151)) | (1L << (MINUTE - 151)) | (1L << (SECOND - 151)) | (1L << (CURRENT - 151)) | (1L << (ENABLE - 151)) | (1L << (DISABLE - 151)) | (1L << (CALL - 151)) | (1L << (PRESERVE - 151)) | (1L << (DEFINER - 151)) | (1L << (SQL - 151)) | (1L << (CASCADED - 151)) | (1L << (LOCAL - 151)) | (1L << (CLOSE - 151)) | (1L << (NEXT - 151)) | (1L << (NAME - 151)) | (1L << (NAMES - 151)) | (1L << (TYPE - 151)) | (1L << (TEXT - 151)) | (1L << (REPEATABLE - 151)) | (1L << (VARYING - 151)) | (1L << (NATIONAL - 151)))) != 0) || ((((_la - 216)) & ~0x3f) == 0 && ((1L << (_la - 216)) & ((1L << (VALUE - 216)) | (1L << (TIES - 216)) | (1L << (CUBE - 216)) | (1L << (SETS - 216)) | (1L << (OTHERS - 216)) | (1L << (AT - 216)) | (1L << (MAXVALUE - 216)) | (1L << (ADMIN - 216)) | (1L << (ESCAPE - 216)) | (1L << (EXCLUDE - 216)) | (1L << (MOD - 216)) | (1L << (PARTITION - 216)) | (1L << (UNKNOWN - 216)) | (1L << (ALWAYS - 216)) | (1L << (CASCADE - 216)) | (1L << (GENERATED - 216)) | (1L << (ISOLATION - 216)) | (1L << (LEVEL - 216)) | (1L << (NO - 216)) | (1L << (OPTION - 216)) | (1L << (PRIVILEGES - 216)) | (1L << (READ - 216)) | (1L << (ROLE - 216)) | (1L << (ROWS - 216)) | (1L << (START - 216)) | (1L << (TRANSACTION - 216)) | (1L << (ACTION - 216)) | (1L << (CACHE - 216)) | (1L << (CHARACTERISTICS - 216)) | (1L << (CLUSTER - 216)) | (1L << (COMMENTS - 216)) | (1L << (CONSTRAINTS - 216)) | (1L << (CYCLE - 216)) | (1L << (DATA - 216)) | (1L << (DATABASE - 216)) | (1L << (DEFAULTS - 216)) | (1L << (DEFERRED - 216)))) != 0) || ((((_la - 280)) & ~0x3f) == 0 && ((1L << (_la - 280)) & ((1L << (DEPENDS - 280)) | (1L << (DOMAIN - 280)) | (1L << (EXCLUDING - 280)) | (1L << (EXECUTE - 280)) | (1L << (EXTENDED - 280)) | (1L << (EXTENSION - 280)) | (1L << (EXTERNAL - 280)) | (1L << (FILTER - 280)) | (1L << (FIRST - 280)) | (1L << (FOLLOWING - 280)) | (1L << (FORCE - 280)) | (1L << (GLOBAL - 280)) | (1L << (IDENTITY - 280)) | (1L << (IMMEDIATE - 280)) | (1L << (INCLUDING - 280)) | (1L << (INCREMENT - 280)) | (1L << (INDEXES - 280)) | (1L << (INHERIT - 280)) | (1L << (INHERITS - 280)) | (1L << (INCLUDE - 280)) | (1L << (LANGUAGE - 280)) | (1L << (LARGE - 280)) | (1L << (LAST - 280)) | (1L << (LOGGED - 280)) | (1L << (MAIN - 280)) | (1L << (MATCH - 280)) | (1L << (MINVALUE - 280)) | (1L << (NOTHING - 280)) | (1L << (NULLS - 280)) | (1L << (OBJECT - 280)) | (1L << (OIDS - 280)) | (1L << (OVER - 280)) | (1L << (OWNED - 280)) | (1L << (OWNER - 280)) | (1L << (PARTIAL - 280)) | (1L << (PLAIN - 280)) | (1L << (PRECEDING - 280)) | (1L << (RANGE - 280)) | (1L << (RENAME - 280)) | (1L << (REPLICA - 280)) | (1L << (RESET - 280)) | (1L << (RESTART - 280)) | (1L << (RESTRICT - 280)) | (1L << (ROUTINE - 280)) | (1L << (RULE - 280)) | (1L << (SECURITY - 280)) | (1L << (SEQUENCE - 280)) | (1L << (SESSION - 280)) | (1L << (SHOW - 280)) | (1L << (SIMPLE - 280)) | (1L << (STATISTICS - 280)) | (1L << (STORAGE - 280)) | (1L << (TABLESPACE - 280)) | (1L << (TEMP - 280)) | (1L << (TEMPORARY - 280)) | (1L << (UNBOUNDED - 280)) | (1L << (UNLOGGED - 280)) | (1L << (VALID - 280)))) != 0) || ((((_la - 344)) & ~0x3f) == 0 && ((1L << (_la - 344)) & ((1L << (VALIDATE - 344)) | (1L << (WITHIN - 344)) | (1L << (WITHOUT - 344)) | (1L << (ZONE - 344)) | (1L << (OF - 344)) | (1L << (UESCAPE - 344)) | (1L << (GROUPS - 344)) | (1L << (RECURSIVE - 344)) | (1L << (INT2 - 344)) | (1L << (INT4 - 344)) | (1L << (FLOAT4 - 344)) | (1L << (BYTEA - 344)) | (1L << (ENUM - 344)) | (1L << (POINT - 344)) | (1L << (LSEG - 344)) | (1L << (BOX - 344)) | (1L << (PATH - 344)) | (1L << (POLYGON - 344)) | (1L << (CIRCLE - 344)) | (1L << (INET - 344)) | (1L << (TSQUERY - 344)) | (1L << (XML - 344)) | (1L << (JSON - 344)) | (1L << (INT4RANGE - 344)) | (1L << (INT8RANGE - 344)) | (1L << (NUMRANGE - 344)) | (1L << (DATERANGE - 344)) | (1L << (ORDINALITY - 344)) | (1L << (NFC - 344)) | (1L << (NFD - 344)) | (1L << (NFKC - 344)))) != 0) || ((((_la - 408)) & ~0x3f) == 0 && ((1L << (_la - 408)) & ((1L << (NFKD - 408)) | (1L << (REF - 408)) | (1L << (PASSING - 408)) | (1L << (VERSION - 408)) | (1L << (YES - 408)) | (1L << (STANDALONE - 408)) | (1L << (MATERIALIZED - 408)) | (1L << (OPERATOR - 408)) | (1L << (SHARE - 408)) | (1L << (ROLLUP - 408)) | (1L << (DOCUMENT - 408)) | (1L << (NORMALIZED - 408)) | (1L << (NOWAIT - 408)) | (1L << (LOCKED - 408)) | (1L << (COLUMNS - 408)) | (1L << (CONTENT - 408)) | (1L << (STRIP - 408)) | (1L << (WHITESPACE - 408)) | (1L << (CONFLICT - 408)) | (1L << (OVERRIDING - 408)) | (1L << (SYSTEM - 408)) | (1L << (ABORT - 408)) | (1L << (ABSOLUTE - 408)) | (1L << (ACCESS - 408)) | (1L << (AFTER - 408)) | (1L << (AGGREGATE - 408)) | (1L << (ALSO - 408)) | (1L << (ATTACH - 408)) | (1L << (ATTRIBUTE - 408)) | (1L << (BACKWARD - 408)) | (1L << (BEFORE - 408)) | (1L << (ASSERTION - 408)) | (1L << (ASSIGNMENT - 408)) | (1L << (CONTINUE - 408)) | (1L << (CONVERSION - 408)) | (1L << (COPY - 408)) | (1L << (COST - 408)) | (1L << (CSV - 408)) | (1L << (CALLED - 408)) | (1L << (CATALOG - 408)) | (1L << (CHAIN - 408)) | (1L << (CHECKPOINT - 408)) | (1L << (CLASS - 408)) | (1L << (CONFIGURATION - 408)) | (1L << (COMMENT - 408)) | (1L << (DETACH - 408)))) != 0) || ((((_la - 472)) & ~0x3f) == 0 && ((1L << (_la - 472)) & ((1L << (DICTIONARY - 472)) | (1L << (EXPRESSION - 472)) | (1L << (INSENSITIVE - 472)) | (1L << (DISCARD - 472)) | (1L << (OFF - 472)) | (1L << (INSTEAD - 472)) | (1L << (EXPLAIN - 472)) | (1L << (INPUT - 472)) | (1L << (INLINE - 472)) | (1L << (PARALLEL - 472)) | (1L << (LEAKPROOF - 472)) | (1L << (COMMITTED - 472)) | (1L << (ENCODING - 472)) | (1L << (IMPLICIT - 472)) | (1L << (DELIMITER - 472)) | (1L << (CURSOR - 472)) | (1L << (EACH - 472)) | (1L << (EVENT - 472)) | (1L << (DEALLOCATE - 472)) | (1L << (CONNECTION - 472)) | (1L << (DECLARE - 472)) | (1L << (FAMILY - 472)) | (1L << (FORWARD - 472)) | (1L << (EXCLUSIVE - 472)) | (1L << (FUNCTIONS - 472)) | (1L << (LOCATION - 472)) | (1L << (LABEL - 472)) | (1L << (DELIMITERS - 472)) | (1L << (HANDLER - 472)) | (1L << (HEADER - 472)) | (1L << (IMMUTABLE - 472)) | (1L << (GRANTED - 472)) | (1L << (HOLD - 472)) | (1L << (MAPPING - 472)) | (1L << (OLD - 472)) | (1L << (METHOD - 472)) | (1L << (LOAD - 472)) | (1L << (LISTEN - 472)) | (1L << (MODE - 472)) | (1L << (MOVE - 472)) | (1L << (PROCEDURAL - 472)) | (1L << (PARSER - 472)) | (1L << (PROCEDURES - 472)) | (1L << (ENCRYPTED - 472)) | (1L << (PUBLICATION - 472)) | (1L << (PROGRAM - 472)) | (1L << (REFERENCING - 472)) | (1L << (PLANS - 472)) | (1L << (REINDEX - 472)) | (1L << (PRIOR - 472)) | (1L << (PASSWORD - 472)) | (1L << (RELATIVE - 472)) | (1L << (QUOTE - 472)) | (1L << (ROUTINES - 472)) | (1L << (REPLACE - 472)) | (1L << (SNAPSHOT - 472)) | (1L << (REFRESH - 472)) | (1L << (PREPARE - 472)) | (1L << (OPTIONS - 472)) | (1L << (IMPORT - 472)) | (1L << (INVOKER - 472)) | (1L << (NEW - 472)) | (1L << (PREPARED - 472)))) != 0) || ((((_la - 536)) & ~0x3f) == 0 && ((1L << (_la - 536)) & ((1L << (SCROLL - 536)) | (1L << (SEQUENCES - 536)) | (1L << (SYSID - 536)) | (1L << (REASSIGN - 536)) | (1L << (SERVER - 536)) | (1L << (SUBSCRIPTION - 536)) | (1L << (SEARCH - 536)) | (1L << (SCHEMAS - 536)) | (1L << (RECHECK - 536)) | (1L << (POLICY - 536)) | (1L << (NOTIFY - 536)) | (1L << (LOCK - 536)) | (1L << (RELEASE - 536)) | (1L << (SERIALIZABLE - 536)) | (1L << (RETURNS - 536)) | (1L << (STATEMENT - 536)) | (1L << (STDIN - 536)) | (1L << (STDOUT - 536)) | (1L << (TABLES - 536)) | (1L << (SUPPORT - 536)) | (1L << (STABLE - 536)) | (1L << (TEMPLATE - 536)) | (1L << (UNENCRYPTED - 536)) | (1L << (VIEWS - 536)) | (1L << (UNCOMMITTED - 536)) | (1L << (TRANSFORM - 536)) | (1L << (UNLISTEN - 536)) | (1L << (TRUSTED - 536)) | (1L << (VALIDATOR - 536)) | (1L << (UNTIL - 536)) | (1L << (VACUUM - 536)) | (1L << (VOLATILE - 536)) | (1L << (STORED - 536)) | (1L << (WRITE - 536)) | (1L << (STRICT - 536)) | (1L << (TYPES - 536)) | (1L << (WRAPPER - 536)) | (1L << (WORK - 536)) | (1L << (INT16 - 536)) | (1L << (INT1 - 536)) | (1L << (ELEM_CONTAINED_BY_RANGE - 536)) | (1L << (IDENTIFIER_ - 536)))) != 0)) {
					{
					setState(3765);
					extractList();
					}
				}

				setState(3768);
				match(RP_);
				}
				break;
			case 19:
				enterOuterAlt(_localctx, 19);
				{
				setState(3769);
				match(NORMALIZE);
				setState(3770);
				match(LP_);
				setState(3771);
				aExpr(0);
				setState(3772);
				match(RP_);
				}
				break;
			case 20:
				enterOuterAlt(_localctx, 20);
				{
				setState(3774);
				match(NORMALIZE);
				setState(3775);
				match(LP_);
				setState(3776);
				aExpr(0);
				setState(3777);
				match(COMMA_);
				setState(3778);
				unicodeNormalForm();
				setState(3779);
				match(RP_);
				}
				break;
			case 21:
				enterOuterAlt(_localctx, 21);
				{
				setState(3781);
				match(OVERLAY);
				setState(3782);
				match(LP_);
				setState(3783);
				overlayList();
				setState(3784);
				match(RP_);
				}
				break;
			case 22:
				enterOuterAlt(_localctx, 22);
				{
				setState(3786);
				match(POSITION);
				setState(3787);
				match(LP_);
				setState(3788);
				positionList();
				setState(3789);
				match(RP_);
				}
				break;
			case 23:
				enterOuterAlt(_localctx, 23);
				{
				setState(3791);
				match(SUBSTRING);
				setState(3792);
				match(LP_);
				setState(3793);
				substrList();
				setState(3794);
				match(RP_);
				}
				break;
			case 24:
				enterOuterAlt(_localctx, 24);
				{
				setState(3796);
				match(TREAT);
				setState(3797);
				match(LP_);
				setState(3798);
				aExpr(0);
				setState(3799);
				match(AS);
				setState(3800);
				typeName();
				setState(3801);
				match(RP_);
				}
				break;
			case 25:
				enterOuterAlt(_localctx, 25);
				{
				setState(3803);
				match(TRIM);
				setState(3804);
				match(LP_);
				setState(3805);
				match(BOTH);
				setState(3806);
				trimList();
				setState(3807);
				match(RP_);
				}
				break;
			case 26:
				enterOuterAlt(_localctx, 26);
				{
				setState(3809);
				match(TRIM);
				setState(3810);
				match(LP_);
				setState(3811);
				match(LEADING);
				setState(3812);
				trimList();
				setState(3813);
				match(RP_);
				}
				break;
			case 27:
				enterOuterAlt(_localctx, 27);
				{
				setState(3815);
				match(TRIM);
				setState(3816);
				match(LP_);
				setState(3817);
				match(TRAILING);
				setState(3818);
				trimList();
				setState(3819);
				match(RP_);
				}
				break;
			case 28:
				enterOuterAlt(_localctx, 28);
				{
				setState(3821);
				match(TRIM);
				setState(3822);
				match(LP_);
				setState(3823);
				trimList();
				setState(3824);
				match(RP_);
				}
				break;
			case 29:
				enterOuterAlt(_localctx, 29);
				{
				setState(3826);
				match(NULLIF);
				setState(3827);
				match(LP_);
				setState(3828);
				aExpr(0);
				setState(3829);
				match(COMMA_);
				setState(3830);
				aExpr(0);
				setState(3831);
				match(RP_);
				}
				break;
			case 30:
				enterOuterAlt(_localctx, 30);
				{
				setState(3833);
				match(COALESCE);
				setState(3834);
				match(LP_);
				setState(3835);
				exprList(0);
				setState(3836);
				match(RP_);
				}
				break;
			case 31:
				enterOuterAlt(_localctx, 31);
				{
				setState(3838);
				match(GREATEST);
				setState(3839);
				match(LP_);
				setState(3840);
				exprList(0);
				setState(3841);
				match(RP_);
				}
				break;
			case 32:
				enterOuterAlt(_localctx, 32);
				{
				setState(3843);
				match(LEAST);
				setState(3844);
				match(LP_);
				setState(3845);
				exprList(0);
				setState(3846);
				match(RP_);
				}
				break;
			case 33:
				enterOuterAlt(_localctx, 33);
				{
				setState(3848);
				match(XMLCONCAT);
				setState(3849);
				match(LP_);
				setState(3850);
				exprList(0);
				setState(3851);
				match(RP_);
				}
				break;
			case 34:
				enterOuterAlt(_localctx, 34);
				{
				setState(3853);
				match(XMLELEMENT);
				setState(3854);
				match(LP_);
				setState(3855);
				match(NAME);
				setState(3856);
				identifier();
				setState(3857);
				match(RP_);
				}
				break;
			case 35:
				enterOuterAlt(_localctx, 35);
				{
				setState(3859);
				match(XMLELEMENT);
				setState(3860);
				match(LP_);
				setState(3861);
				match(NAME);
				setState(3862);
				identifier();
				setState(3863);
				match(COMMA_);
				setState(3864);
				xmlAttributes();
				setState(3865);
				match(RP_);
				}
				break;
			case 36:
				enterOuterAlt(_localctx, 36);
				{
				setState(3867);
				match(XMLELEMENT);
				setState(3868);
				match(LP_);
				setState(3869);
				match(NAME);
				setState(3870);
				identifier();
				setState(3871);
				match(COMMA_);
				setState(3872);
				exprList(0);
				setState(3873);
				match(RP_);
				}
				break;
			case 37:
				enterOuterAlt(_localctx, 37);
				{
				setState(3875);
				match(XMLELEMENT);
				setState(3876);
				match(LP_);
				setState(3877);
				match(NAME);
				setState(3878);
				identifier();
				setState(3879);
				match(COMMA_);
				setState(3880);
				xmlAttributes();
				setState(3881);
				match(COMMA_);
				setState(3882);
				exprList(0);
				setState(3883);
				match(RP_);
				}
				break;
			case 38:
				enterOuterAlt(_localctx, 38);
				{
				setState(3885);
				match(XMLEXISTS);
				setState(3886);
				match(LP_);
				setState(3887);
				cExpr();
				setState(3888);
				xmlExistsArgument();
				setState(3889);
				match(RP_);
				}
				break;
			case 39:
				enterOuterAlt(_localctx, 39);
				{
				setState(3891);
				match(XMLFOREST);
				setState(3892);
				match(LP_);
				setState(3893);
				xmlAttributeList();
				setState(3894);
				match(RP_);
				}
				break;
			case 40:
				enterOuterAlt(_localctx, 40);
				{
				setState(3896);
				match(XMLPARSE);
				setState(3897);
				match(LP_);
				setState(3898);
				documentOrContent();
				setState(3899);
				aExpr(0);
				setState(3900);
				xmlWhitespaceOption();
				setState(3901);
				match(RP_);
				}
				break;
			case 41:
				enterOuterAlt(_localctx, 41);
				{
				setState(3903);
				match(XMLPI);
				setState(3904);
				match(LP_);
				setState(3905);
				match(NAME);
				setState(3906);
				identifier();
				setState(3907);
				match(RP_);
				}
				break;
			case 42:
				enterOuterAlt(_localctx, 42);
				{
				setState(3909);
				match(XMLPI);
				setState(3910);
				match(LP_);
				setState(3911);
				match(NAME);
				setState(3912);
				identifier();
				setState(3913);
				match(COMMA_);
				setState(3914);
				aExpr(0);
				setState(3915);
				match(RP_);
				}
				break;
			case 43:
				enterOuterAlt(_localctx, 43);
				{
				setState(3917);
				match(XMLROOT);
				setState(3918);
				match(LP_);
				setState(3919);
				aExpr(0);
				setState(3920);
				match(COMMA_);
				setState(3921);
				xmlRootVersion();
				setState(3923);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==COMMA_) {
					{
					setState(3922);
					xmlRootStandalone();
					}
				}

				setState(3925);
				match(RP_);
				}
				break;
			case 44:
				enterOuterAlt(_localctx, 44);
				{
				setState(3927);
				match(XMLSERIALIZE);
				setState(3928);
				match(LP_);
				setState(3929);
				documentOrContent();
				setState(3930);
				aExpr(0);
				setState(3931);
				match(AS);
				setState(3932);
				simpleTypeName();
				setState(3933);
				match(RP_);
				}
				break;
			case 45:
				enterOuterAlt(_localctx, 45);
				{
				setState(3935);
				match(PREDICT);
				setState(3936);
				match(BY);
				setState(3937);
				modelName();
				setState(3938);
				match(LP_);
				setState(3939);
				match(FEATURES);
				setState(3940);
				name();
				setState(3945);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA_) {
					{
					{
					setState(3941);
					match(COMMA_);
					setState(3942);
					name();
					}
					}
					setState(3947);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				setState(3948);
				match(RP_);
				}
				break;
			case 46:
				enterOuterAlt(_localctx, 46);
				{
				setState(3950);
				match(TS_REWRITE);
				setState(3951);
				match(LP_);
				setState(3952);
				aExpr(0);
				setState(3955);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==TYPE_CAST_) {
					{
					setState(3953);
					match(TYPE_CAST_);
					setState(3954);
					match(TSQUERY);
					}
				}

				setState(3965);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA_) {
					{
					{
					setState(3957);
					match(COMMA_);
					setState(3958);
					aExpr(0);
					setState(3961);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==TYPE_CAST_) {
						{
						setState(3959);
						match(TYPE_CAST_);
						setState(3960);
						match(TSQUERY);
						}
					}

					}
					}
					setState(3967);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				setState(3968);
				match(RP_);
				}
				break;
			case 47:
				enterOuterAlt(_localctx, 47);
				{
				setState(3970);
				match(ELEM_CONTAINED_BY_RANGE);
				setState(3971);
				match(LP_);
				setState(3972);
				aExpr(0);
				setState(3973);
				match(COMMA_);
				setState(3974);
				dataType();
				setState(3975);
				match(RP_);
				}
				break;
			case 48:
				enterOuterAlt(_localctx, 48);
				{
				setState(3977);
				_la = _input.LA(1);
				if ( !(_la==LOWER_INF || _la==UPPER_INF) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(3978);
				match(LP_);
				setState(3979);
				aExpr(0);
				setState(3980);
				match(TYPE_CAST_);
				setState(3981);
				identifier();
				setState(3982);
				match(RP_);
				}
				break;
			case 49:
				enterOuterAlt(_localctx, 49);
				{
				setState(3984);
				match(ABBREV);
				setState(3985);
				match(LP_);
				setState(3986);
				_la = _input.LA(1);
				if ( !(_la==CIDR || _la==INET) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(3987);
				match(STRING_);
				setState(3988);
				match(RP_);
				}
				break;
			case 50:
				enterOuterAlt(_localctx, 50);
				{
				setState(3989);
				match(SET_MASKLEN);
				setState(3990);
				match(LP_);
				setState(3991);
				match(STRING_);
				setState(3994);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==TYPE_CAST_) {
					{
					setState(3992);
					match(TYPE_CAST_);
					setState(3993);
					match(CIDR);
					}
				}

				setState(3996);
				match(COMMA_);
				setState(3997);
				numberLiterals();
				setState(3998);
				match(RP_);
				}
				break;
			case 51:
				enterOuterAlt(_localctx, 51);
				{
				setState(4000);
				match(TEXT);
				setState(4001);
				match(LP_);
				setState(4002);
				match(INET);
				setState(4003);
				match(STRING_);
				setState(4004);
				match(RP_);
				}
				break;
			case 52:
				enterOuterAlt(_localctx, 52);
				{
				setState(4005);
				match(TRUNC);
				setState(4006);
				match(LP_);
				setState(4007);
				match(MACADDR);
				setState(4008);
				match(STRING_);
				setState(4009);
				match(RP_);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class TypeNameContext extends ParserRuleContext {
		public SimpleTypeNameContext simpleTypeName() {
			return getRuleContext(SimpleTypeNameContext.class,0);
		}
		public OptArrayBoundsContext optArrayBounds() {
			return getRuleContext(OptArrayBoundsContext.class,0);
		}
		public TerminalNode SETOF() { return getToken(OpenGaussStatementParser.SETOF, 0); }
		public TerminalNode ARRAY() { return getToken(OpenGaussStatementParser.ARRAY, 0); }
		public TerminalNode LBT_() { return getToken(OpenGaussStatementParser.LBT_, 0); }
		public TerminalNode NUMBER_() { return getToken(OpenGaussStatementParser.NUMBER_, 0); }
		public TerminalNode RBT_() { return getToken(OpenGaussStatementParser.RBT_, 0); }
		public TypeNameContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_typeName; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitTypeName(this);
			else return visitor.visitChildren(this);
		}
	}

	public final TypeNameContext typeName() throws RecognitionException {
		TypeNameContext _localctx = new TypeNameContext(_ctx, getState());
		enterRule(_localctx, 394, RULE_typeName);
		try {
			setState(4039);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,257,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(4012);
				simpleTypeName();
				setState(4013);
				optArrayBounds(0);
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(4015);
				match(SETOF);
				setState(4016);
				simpleTypeName();
				setState(4017);
				optArrayBounds(0);
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(4019);
				simpleTypeName();
				setState(4020);
				match(ARRAY);
				setState(4021);
				match(LBT_);
				setState(4022);
				match(NUMBER_);
				setState(4023);
				match(RBT_);
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(4025);
				match(SETOF);
				setState(4026);
				simpleTypeName();
				setState(4027);
				match(ARRAY);
				setState(4028);
				match(LBT_);
				setState(4029);
				match(NUMBER_);
				setState(4030);
				match(RBT_);
				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(4032);
				simpleTypeName();
				setState(4033);
				match(ARRAY);
				}
				break;
			case 6:
				enterOuterAlt(_localctx, 6);
				{
				setState(4035);
				match(SETOF);
				setState(4036);
				simpleTypeName();
				setState(4037);
				match(ARRAY);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class SimpleTypeNameContext extends ParserRuleContext {
		public GenericTypeContext genericType() {
			return getRuleContext(GenericTypeContext.class,0);
		}
		public NumericContext numeric() {
			return getRuleContext(NumericContext.class,0);
		}
		public BitContext bit() {
			return getRuleContext(BitContext.class,0);
		}
		public CharacterContext character() {
			return getRuleContext(CharacterContext.class,0);
		}
		public ConstDatetimeContext constDatetime() {
			return getRuleContext(ConstDatetimeContext.class,0);
		}
		public ConstIntervalContext constInterval() {
			return getRuleContext(ConstIntervalContext.class,0);
		}
		public OptIntervalContext optInterval() {
			return getRuleContext(OptIntervalContext.class,0);
		}
		public TerminalNode LP_() { return getToken(OpenGaussStatementParser.LP_, 0); }
		public TerminalNode NUMBER_() { return getToken(OpenGaussStatementParser.NUMBER_, 0); }
		public TerminalNode RP_() { return getToken(OpenGaussStatementParser.RP_, 0); }
		public SimpleTypeNameContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_simpleTypeName; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitSimpleTypeName(this);
			else return visitor.visitChildren(this);
		}
	}

	public final SimpleTypeNameContext simpleTypeName() throws RecognitionException {
		SimpleTypeNameContext _localctx = new SimpleTypeNameContext(_ctx, getState());
		enterRule(_localctx, 396, RULE_simpleTypeName);
		try {
			setState(4054);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,258,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(4041);
				genericType();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(4042);
				numeric();
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(4043);
				bit();
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(4044);
				character();
				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(4045);
				constDatetime();
				}
				break;
			case 6:
				enterOuterAlt(_localctx, 6);
				{
				setState(4046);
				constInterval();
				setState(4047);
				optInterval();
				}
				break;
			case 7:
				enterOuterAlt(_localctx, 7);
				{
				setState(4049);
				constInterval();
				setState(4050);
				match(LP_);
				setState(4051);
				match(NUMBER_);
				setState(4052);
				match(RP_);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ConstTypeNameContext extends ParserRuleContext {
		public NumericContext numeric() {
			return getRuleContext(NumericContext.class,0);
		}
		public BitContext bit() {
			return getRuleContext(BitContext.class,0);
		}
		public CharacterContext character() {
			return getRuleContext(CharacterContext.class,0);
		}
		public ConstDatetimeContext constDatetime() {
			return getRuleContext(ConstDatetimeContext.class,0);
		}
		public ConstTypeNameContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_constTypeName; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitConstTypeName(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ConstTypeNameContext constTypeName() throws RecognitionException {
		ConstTypeNameContext _localctx = new ConstTypeNameContext(_ctx, getState());
		enterRule(_localctx, 398, RULE_constTypeName);
		try {
			setState(4060);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case BOOLEAN:
			case DOUBLE:
			case INTEGER:
			case REAL:
			case DECIMAL:
			case SMALLINT:
			case BIGINT:
			case NUMERIC:
			case DEC:
			case INT:
			case INT2:
			case INT4:
			case INT8:
			case FLOAT:
			case FLOAT4:
			case FLOAT8:
				enterOuterAlt(_localctx, 1);
				{
				setState(4056);
				numeric();
				}
				break;
			case BIT:
				enterOuterAlt(_localctx, 2);
				{
				setState(4057);
				bit();
				}
				break;
			case CHAR:
			case CHARACTER:
			case NATIONAL:
			case NCHAR:
			case VARCHAR:
				enterOuterAlt(_localctx, 3);
				{
				setState(4058);
				character();
				}
				break;
			case DATE:
			case TIME:
			case TIMESTAMP:
				enterOuterAlt(_localctx, 4);
				{
				setState(4059);
				constDatetime();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ExprListContext extends ParserRuleContext {
		public AExprContext aExpr() {
			return getRuleContext(AExprContext.class,0);
		}
		public ExprListContext exprList() {
			return getRuleContext(ExprListContext.class,0);
		}
		public TerminalNode COMMA_() { return getToken(OpenGaussStatementParser.COMMA_, 0); }
		public ExprListContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_exprList; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitExprList(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ExprListContext exprList() throws RecognitionException {
		return exprList(0);
	}

	private ExprListContext exprList(int _p) throws RecognitionException {
		ParserRuleContext _parentctx = _ctx;
		int _parentState = getState();
		ExprListContext _localctx = new ExprListContext(_ctx, _parentState);
		ExprListContext _prevctx = _localctx;
		int _startState = 400;
		enterRecursionRule(_localctx, 400, RULE_exprList, _p);
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			{
			setState(4063);
			aExpr(0);
			}
			_ctx.stop = _input.LT(-1);
			setState(4070);
			_errHandler.sync(this);
			_alt = getInterpreter().adaptivePredict(_input,260,_ctx);
			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
				if ( _alt==1 ) {
					if ( _parseListeners!=null ) triggerExitRuleEvent();
					_prevctx = _localctx;
					{
					{
					_localctx = new ExprListContext(_parentctx, _parentState);
					pushNewRecursionContext(_localctx, _startState, RULE_exprList);
					setState(4065);
					if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)");
					setState(4066);
					match(COMMA_);
					setState(4067);
					aExpr(0);
					}
					} 
				}
				setState(4072);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,260,_ctx);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			unrollRecursionContexts(_parentctx);
		}
		return _localctx;
	}

	public static class ExtractListContext extends ParserRuleContext {
		public ExtractArgContext extractArg() {
			return getRuleContext(ExtractArgContext.class,0);
		}
		public TerminalNode FROM() { return getToken(OpenGaussStatementParser.FROM, 0); }
		public AExprContext aExpr() {
			return getRuleContext(AExprContext.class,0);
		}
		public ExtractListContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_extractList; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitExtractList(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ExtractListContext extractList() throws RecognitionException {
		ExtractListContext _localctx = new ExtractListContext(_ctx, getState());
		enterRule(_localctx, 402, RULE_extractList);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4073);
			extractArg();
			setState(4074);
			match(FROM);
			setState(4075);
			aExpr(0);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ExtractArgContext extends ParserRuleContext {
		public TerminalNode YEAR() { return getToken(OpenGaussStatementParser.YEAR, 0); }
		public TerminalNode MONTH() { return getToken(OpenGaussStatementParser.MONTH, 0); }
		public TerminalNode DAY() { return getToken(OpenGaussStatementParser.DAY, 0); }
		public TerminalNode HOUR() { return getToken(OpenGaussStatementParser.HOUR, 0); }
		public TerminalNode MINUTE() { return getToken(OpenGaussStatementParser.MINUTE, 0); }
		public TerminalNode SECOND() { return getToken(OpenGaussStatementParser.SECOND, 0); }
		public IdentifierContext identifier() {
			return getRuleContext(IdentifierContext.class,0);
		}
		public ExtractArgContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_extractArg; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitExtractArg(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ExtractArgContext extractArg() throws RecognitionException {
		ExtractArgContext _localctx = new ExtractArgContext(_ctx, getState());
		enterRule(_localctx, 404, RULE_extractArg);
		try {
			setState(4084);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,261,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(4077);
				match(YEAR);
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(4078);
				match(MONTH);
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(4079);
				match(DAY);
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(4080);
				match(HOUR);
				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(4081);
				match(MINUTE);
				}
				break;
			case 6:
				enterOuterAlt(_localctx, 6);
				{
				setState(4082);
				match(SECOND);
				}
				break;
			case 7:
				enterOuterAlt(_localctx, 7);
				{
				setState(4083);
				identifier();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class GenericTypeContext extends ParserRuleContext {
		public TypeFunctionNameContext typeFunctionName() {
			return getRuleContext(TypeFunctionNameContext.class,0);
		}
		public TypeModifiersContext typeModifiers() {
			return getRuleContext(TypeModifiersContext.class,0);
		}
		public AttrsContext attrs() {
			return getRuleContext(AttrsContext.class,0);
		}
		public GenericTypeContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_genericType; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitGenericType(this);
			else return visitor.visitChildren(this);
		}
	}

	public final GenericTypeContext genericType() throws RecognitionException {
		GenericTypeContext _localctx = new GenericTypeContext(_ctx, getState());
		enterRule(_localctx, 406, RULE_genericType);
		try {
			setState(4095);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,264,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(4086);
				typeFunctionName();
				setState(4088);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,262,_ctx) ) {
				case 1:
					{
					setState(4087);
					typeModifiers();
					}
					break;
				}
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(4090);
				typeFunctionName();
				setState(4091);
				attrs(0);
				setState(4093);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,263,_ctx) ) {
				case 1:
					{
					setState(4092);
					typeModifiers();
					}
					break;
				}
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class TypeModifiersContext extends ParserRuleContext {
		public TerminalNode LP_() { return getToken(OpenGaussStatementParser.LP_, 0); }
		public ExprListContext exprList() {
			return getRuleContext(ExprListContext.class,0);
		}
		public TerminalNode RP_() { return getToken(OpenGaussStatementParser.RP_, 0); }
		public TypeModifiersContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_typeModifiers; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitTypeModifiers(this);
			else return visitor.visitChildren(this);
		}
	}

	public final TypeModifiersContext typeModifiers() throws RecognitionException {
		TypeModifiersContext _localctx = new TypeModifiersContext(_ctx, getState());
		enterRule(_localctx, 408, RULE_typeModifiers);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4097);
			match(LP_);
			setState(4098);
			exprList(0);
			setState(4099);
			match(RP_);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class NumericContext extends ParserRuleContext {
		public TerminalNode INT() { return getToken(OpenGaussStatementParser.INT, 0); }
		public TerminalNode INTEGER() { return getToken(OpenGaussStatementParser.INTEGER, 0); }
		public TerminalNode SMALLINT() { return getToken(OpenGaussStatementParser.SMALLINT, 0); }
		public TerminalNode BIGINT() { return getToken(OpenGaussStatementParser.BIGINT, 0); }
		public TerminalNode REAL() { return getToken(OpenGaussStatementParser.REAL, 0); }
		public TerminalNode FLOAT() { return getToken(OpenGaussStatementParser.FLOAT, 0); }
		public OptFloatContext optFloat() {
			return getRuleContext(OptFloatContext.class,0);
		}
		public TerminalNode DOUBLE() { return getToken(OpenGaussStatementParser.DOUBLE, 0); }
		public TerminalNode PRECISION() { return getToken(OpenGaussStatementParser.PRECISION, 0); }
		public TerminalNode DECIMAL() { return getToken(OpenGaussStatementParser.DECIMAL, 0); }
		public TypeModifiersContext typeModifiers() {
			return getRuleContext(TypeModifiersContext.class,0);
		}
		public TerminalNode DEC() { return getToken(OpenGaussStatementParser.DEC, 0); }
		public TerminalNode NUMERIC() { return getToken(OpenGaussStatementParser.NUMERIC, 0); }
		public TerminalNode BOOLEAN() { return getToken(OpenGaussStatementParser.BOOLEAN, 0); }
		public TerminalNode FLOAT8() { return getToken(OpenGaussStatementParser.FLOAT8, 0); }
		public TerminalNode FLOAT4() { return getToken(OpenGaussStatementParser.FLOAT4, 0); }
		public TerminalNode INT2() { return getToken(OpenGaussStatementParser.INT2, 0); }
		public TerminalNode INT4() { return getToken(OpenGaussStatementParser.INT4, 0); }
		public TerminalNode INT8() { return getToken(OpenGaussStatementParser.INT8, 0); }
		public NumericContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_numeric; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitNumeric(this);
			else return visitor.visitChildren(this);
		}
	}

	public final NumericContext numeric() throws RecognitionException {
		NumericContext _localctx = new NumericContext(_ctx, getState());
		enterRule(_localctx, 410, RULE_numeric);
		try {
			setState(4128);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case INT:
				enterOuterAlt(_localctx, 1);
				{
				setState(4101);
				match(INT);
				}
				break;
			case INTEGER:
				enterOuterAlt(_localctx, 2);
				{
				setState(4102);
				match(INTEGER);
				}
				break;
			case SMALLINT:
				enterOuterAlt(_localctx, 3);
				{
				setState(4103);
				match(SMALLINT);
				}
				break;
			case BIGINT:
				enterOuterAlt(_localctx, 4);
				{
				setState(4104);
				match(BIGINT);
				}
				break;
			case REAL:
				enterOuterAlt(_localctx, 5);
				{
				setState(4105);
				match(REAL);
				}
				break;
			case FLOAT:
				enterOuterAlt(_localctx, 6);
				{
				setState(4106);
				match(FLOAT);
				setState(4107);
				optFloat();
				}
				break;
			case DOUBLE:
				enterOuterAlt(_localctx, 7);
				{
				setState(4108);
				match(DOUBLE);
				setState(4109);
				match(PRECISION);
				}
				break;
			case DECIMAL:
				enterOuterAlt(_localctx, 8);
				{
				setState(4110);
				match(DECIMAL);
				setState(4112);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,265,_ctx) ) {
				case 1:
					{
					setState(4111);
					typeModifiers();
					}
					break;
				}
				}
				break;
			case DEC:
				enterOuterAlt(_localctx, 9);
				{
				setState(4114);
				match(DEC);
				setState(4116);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,266,_ctx) ) {
				case 1:
					{
					setState(4115);
					typeModifiers();
					}
					break;
				}
				}
				break;
			case NUMERIC:
				enterOuterAlt(_localctx, 10);
				{
				setState(4118);
				match(NUMERIC);
				setState(4120);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,267,_ctx) ) {
				case 1:
					{
					setState(4119);
					typeModifiers();
					}
					break;
				}
				}
				break;
			case BOOLEAN:
				enterOuterAlt(_localctx, 11);
				{
				setState(4122);
				match(BOOLEAN);
				}
				break;
			case FLOAT8:
				enterOuterAlt(_localctx, 12);
				{
				setState(4123);
				match(FLOAT8);
				}
				break;
			case FLOAT4:
				enterOuterAlt(_localctx, 13);
				{
				setState(4124);
				match(FLOAT4);
				}
				break;
			case INT2:
				enterOuterAlt(_localctx, 14);
				{
				setState(4125);
				match(INT2);
				}
				break;
			case INT4:
				enterOuterAlt(_localctx, 15);
				{
				setState(4126);
				match(INT4);
				}
				break;
			case INT8:
				enterOuterAlt(_localctx, 16);
				{
				setState(4127);
				match(INT8);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ConstDatetimeContext extends ParserRuleContext {
		public TerminalNode TIMESTAMP() { return getToken(OpenGaussStatementParser.TIMESTAMP, 0); }
		public TerminalNode LP_() { return getToken(OpenGaussStatementParser.LP_, 0); }
		public TerminalNode NUMBER_() { return getToken(OpenGaussStatementParser.NUMBER_, 0); }
		public TerminalNode RP_() { return getToken(OpenGaussStatementParser.RP_, 0); }
		public TimezoneContext timezone() {
			return getRuleContext(TimezoneContext.class,0);
		}
		public TerminalNode TIME() { return getToken(OpenGaussStatementParser.TIME, 0); }
		public TerminalNode DATE() { return getToken(OpenGaussStatementParser.DATE, 0); }
		public ConstDatetimeContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_constDatetime; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitConstDatetime(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ConstDatetimeContext constDatetime() throws RecognitionException {
		ConstDatetimeContext _localctx = new ConstDatetimeContext(_ctx, getState());
		enterRule(_localctx, 412, RULE_constDatetime);
		try {
			setState(4153);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,273,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(4130);
				match(TIMESTAMP);
				setState(4131);
				match(LP_);
				setState(4132);
				match(NUMBER_);
				setState(4133);
				match(RP_);
				setState(4135);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,269,_ctx) ) {
				case 1:
					{
					setState(4134);
					timezone();
					}
					break;
				}
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(4137);
				match(TIMESTAMP);
				setState(4139);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,270,_ctx) ) {
				case 1:
					{
					setState(4138);
					timezone();
					}
					break;
				}
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(4141);
				match(TIME);
				setState(4142);
				match(LP_);
				setState(4143);
				match(NUMBER_);
				setState(4144);
				match(RP_);
				setState(4146);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,271,_ctx) ) {
				case 1:
					{
					setState(4145);
					timezone();
					}
					break;
				}
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(4148);
				match(TIME);
				setState(4150);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,272,_ctx) ) {
				case 1:
					{
					setState(4149);
					timezone();
					}
					break;
				}
				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(4152);
				match(DATE);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class TimezoneContext extends ParserRuleContext {
		public TerminalNode WITH() { return getToken(OpenGaussStatementParser.WITH, 0); }
		public TerminalNode TIME() { return getToken(OpenGaussStatementParser.TIME, 0); }
		public TerminalNode ZONE() { return getToken(OpenGaussStatementParser.ZONE, 0); }
		public TerminalNode WITHOUT() { return getToken(OpenGaussStatementParser.WITHOUT, 0); }
		public TimezoneContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_timezone; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitTimezone(this);
			else return visitor.visitChildren(this);
		}
	}

	public final TimezoneContext timezone() throws RecognitionException {
		TimezoneContext _localctx = new TimezoneContext(_ctx, getState());
		enterRule(_localctx, 414, RULE_timezone);
		try {
			setState(4161);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case WITH:
				enterOuterAlt(_localctx, 1);
				{
				setState(4155);
				match(WITH);
				setState(4156);
				match(TIME);
				setState(4157);
				match(ZONE);
				}
				break;
			case WITHOUT:
				enterOuterAlt(_localctx, 2);
				{
				setState(4158);
				match(WITHOUT);
				setState(4159);
				match(TIME);
				setState(4160);
				match(ZONE);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CharacterContext extends ParserRuleContext {
		public CharacterWithLengthContext characterWithLength() {
			return getRuleContext(CharacterWithLengthContext.class,0);
		}
		public CharacterWithoutLengthContext characterWithoutLength() {
			return getRuleContext(CharacterWithoutLengthContext.class,0);
		}
		public CharacterContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_character; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitCharacter(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CharacterContext character() throws RecognitionException {
		CharacterContext _localctx = new CharacterContext(_ctx, getState());
		enterRule(_localctx, 416, RULE_character);
		try {
			setState(4165);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,275,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(4163);
				characterWithLength();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(4164);
				characterWithoutLength();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CharacterWithLengthContext extends ParserRuleContext {
		public CharacterClauseContext characterClause() {
			return getRuleContext(CharacterClauseContext.class,0);
		}
		public TerminalNode LP_() { return getToken(OpenGaussStatementParser.LP_, 0); }
		public TerminalNode NUMBER_() { return getToken(OpenGaussStatementParser.NUMBER_, 0); }
		public TerminalNode RP_() { return getToken(OpenGaussStatementParser.RP_, 0); }
		public CharacterWithLengthContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_characterWithLength; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitCharacterWithLength(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CharacterWithLengthContext characterWithLength() throws RecognitionException {
		CharacterWithLengthContext _localctx = new CharacterWithLengthContext(_ctx, getState());
		enterRule(_localctx, 418, RULE_characterWithLength);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4167);
			characterClause();
			setState(4168);
			match(LP_);
			setState(4169);
			match(NUMBER_);
			setState(4170);
			match(RP_);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CharacterWithoutLengthContext extends ParserRuleContext {
		public CharacterClauseContext characterClause() {
			return getRuleContext(CharacterClauseContext.class,0);
		}
		public CharacterWithoutLengthContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_characterWithoutLength; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitCharacterWithoutLength(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CharacterWithoutLengthContext characterWithoutLength() throws RecognitionException {
		CharacterWithoutLengthContext _localctx = new CharacterWithoutLengthContext(_ctx, getState());
		enterRule(_localctx, 420, RULE_characterWithoutLength);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4172);
			characterClause();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CharacterClauseContext extends ParserRuleContext {
		public TerminalNode CHARACTER() { return getToken(OpenGaussStatementParser.CHARACTER, 0); }
		public TerminalNode VARYING() { return getToken(OpenGaussStatementParser.VARYING, 0); }
		public TerminalNode CHAR() { return getToken(OpenGaussStatementParser.CHAR, 0); }
		public TerminalNode VARCHAR() { return getToken(OpenGaussStatementParser.VARCHAR, 0); }
		public TerminalNode NATIONAL() { return getToken(OpenGaussStatementParser.NATIONAL, 0); }
		public TerminalNode NCHAR() { return getToken(OpenGaussStatementParser.NCHAR, 0); }
		public CharacterClauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_characterClause; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitCharacterClause(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CharacterClauseContext characterClause() throws RecognitionException {
		CharacterClauseContext _localctx = new CharacterClauseContext(_ctx, getState());
		enterRule(_localctx, 422, RULE_characterClause);
		try {
			setState(4197);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,281,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(4174);
				match(CHARACTER);
				setState(4176);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,276,_ctx) ) {
				case 1:
					{
					setState(4175);
					match(VARYING);
					}
					break;
				}
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(4178);
				match(CHAR);
				setState(4180);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,277,_ctx) ) {
				case 1:
					{
					setState(4179);
					match(VARYING);
					}
					break;
				}
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(4182);
				match(VARCHAR);
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(4183);
				match(NATIONAL);
				setState(4184);
				match(CHARACTER);
				setState(4186);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,278,_ctx) ) {
				case 1:
					{
					setState(4185);
					match(VARYING);
					}
					break;
				}
				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(4188);
				match(NATIONAL);
				setState(4189);
				match(CHAR);
				setState(4191);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,279,_ctx) ) {
				case 1:
					{
					setState(4190);
					match(VARYING);
					}
					break;
				}
				}
				break;
			case 6:
				enterOuterAlt(_localctx, 6);
				{
				setState(4193);
				match(NCHAR);
				setState(4195);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,280,_ctx) ) {
				case 1:
					{
					setState(4194);
					match(VARYING);
					}
					break;
				}
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class OptFloatContext extends ParserRuleContext {
		public TerminalNode LP_() { return getToken(OpenGaussStatementParser.LP_, 0); }
		public TerminalNode NUMBER_() { return getToken(OpenGaussStatementParser.NUMBER_, 0); }
		public TerminalNode RP_() { return getToken(OpenGaussStatementParser.RP_, 0); }
		public OptFloatContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_optFloat; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitOptFloat(this);
			else return visitor.visitChildren(this);
		}
	}

	public final OptFloatContext optFloat() throws RecognitionException {
		OptFloatContext _localctx = new OptFloatContext(_ctx, getState());
		enterRule(_localctx, 424, RULE_optFloat);
		try {
			setState(4203);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,282,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(4199);
				match(LP_);
				setState(4200);
				match(NUMBER_);
				setState(4201);
				match(RP_);
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AttrsContext extends ParserRuleContext {
		public TerminalNode DOT_() { return getToken(OpenGaussStatementParser.DOT_, 0); }
		public AttrNameContext attrName() {
			return getRuleContext(AttrNameContext.class,0);
		}
		public AttrsContext attrs() {
			return getRuleContext(AttrsContext.class,0);
		}
		public AttrsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_attrs; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitAttrs(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AttrsContext attrs() throws RecognitionException {
		return attrs(0);
	}

	private AttrsContext attrs(int _p) throws RecognitionException {
		ParserRuleContext _parentctx = _ctx;
		int _parentState = getState();
		AttrsContext _localctx = new AttrsContext(_ctx, _parentState);
		AttrsContext _prevctx = _localctx;
		int _startState = 426;
		enterRecursionRule(_localctx, 426, RULE_attrs, _p);
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			{
			setState(4206);
			match(DOT_);
			setState(4207);
			attrName();
			}
			_ctx.stop = _input.LT(-1);
			setState(4214);
			_errHandler.sync(this);
			_alt = getInterpreter().adaptivePredict(_input,283,_ctx);
			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
				if ( _alt==1 ) {
					if ( _parseListeners!=null ) triggerExitRuleEvent();
					_prevctx = _localctx;
					{
					{
					_localctx = new AttrsContext(_parentctx, _parentState);
					pushNewRecursionContext(_localctx, _startState, RULE_attrs);
					setState(4209);
					if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)");
					setState(4210);
					match(DOT_);
					setState(4211);
					attrName();
					}
					} 
				}
				setState(4216);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,283,_ctx);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			unrollRecursionContexts(_parentctx);
		}
		return _localctx;
	}

	public static class AttrNameContext extends ParserRuleContext {
		public ColLableContext colLable() {
			return getRuleContext(ColLableContext.class,0);
		}
		public AttrNameContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_attrName; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitAttrName(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AttrNameContext attrName() throws RecognitionException {
		AttrNameContext _localctx = new AttrNameContext(_ctx, getState());
		enterRule(_localctx, 428, RULE_attrName);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4217);
			colLable();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ColLableContext extends ParserRuleContext {
		public IdentifierContext identifier() {
			return getRuleContext(IdentifierContext.class,0);
		}
		public ColNameKeywordContext colNameKeyword() {
			return getRuleContext(ColNameKeywordContext.class,0);
		}
		public TypeFuncNameKeywordContext typeFuncNameKeyword() {
			return getRuleContext(TypeFuncNameKeywordContext.class,0);
		}
		public ReservedKeywordContext reservedKeyword() {
			return getRuleContext(ReservedKeywordContext.class,0);
		}
		public ColLableContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_colLable; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitColLable(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ColLableContext colLable() throws RecognitionException {
		ColLableContext _localctx = new ColLableContext(_ctx, getState());
		enterRule(_localctx, 430, RULE_colLable);
		try {
			setState(4223);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,284,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(4219);
				identifier();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(4220);
				colNameKeyword();
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(4221);
				typeFuncNameKeyword();
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(4222);
				reservedKeyword();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class BitContext extends ParserRuleContext {
		public BitWithLengthContext bitWithLength() {
			return getRuleContext(BitWithLengthContext.class,0);
		}
		public BitWithoutLengthContext bitWithoutLength() {
			return getRuleContext(BitWithoutLengthContext.class,0);
		}
		public BitContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_bit; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitBit(this);
			else return visitor.visitChildren(this);
		}
	}

	public final BitContext bit() throws RecognitionException {
		BitContext _localctx = new BitContext(_ctx, getState());
		enterRule(_localctx, 432, RULE_bit);
		try {
			setState(4227);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,285,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(4225);
				bitWithLength();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(4226);
				bitWithoutLength();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class BitWithLengthContext extends ParserRuleContext {
		public TerminalNode BIT() { return getToken(OpenGaussStatementParser.BIT, 0); }
		public TerminalNode LP_() { return getToken(OpenGaussStatementParser.LP_, 0); }
		public ExprListContext exprList() {
			return getRuleContext(ExprListContext.class,0);
		}
		public TerminalNode RP_() { return getToken(OpenGaussStatementParser.RP_, 0); }
		public TerminalNode VARYING() { return getToken(OpenGaussStatementParser.VARYING, 0); }
		public BitWithLengthContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_bitWithLength; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitBitWithLength(this);
			else return visitor.visitChildren(this);
		}
	}

	public final BitWithLengthContext bitWithLength() throws RecognitionException {
		BitWithLengthContext _localctx = new BitWithLengthContext(_ctx, getState());
		enterRule(_localctx, 434, RULE_bitWithLength);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4229);
			match(BIT);
			setState(4231);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==VARYING) {
				{
				setState(4230);
				match(VARYING);
				}
			}

			setState(4233);
			match(LP_);
			setState(4234);
			exprList(0);
			setState(4235);
			match(RP_);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class BitWithoutLengthContext extends ParserRuleContext {
		public TerminalNode BIT() { return getToken(OpenGaussStatementParser.BIT, 0); }
		public TerminalNode VARYING() { return getToken(OpenGaussStatementParser.VARYING, 0); }
		public BitWithoutLengthContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_bitWithoutLength; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitBitWithoutLength(this);
			else return visitor.visitChildren(this);
		}
	}

	public final BitWithoutLengthContext bitWithoutLength() throws RecognitionException {
		BitWithoutLengthContext _localctx = new BitWithoutLengthContext(_ctx, getState());
		enterRule(_localctx, 436, RULE_bitWithoutLength);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4237);
			match(BIT);
			setState(4239);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,287,_ctx) ) {
			case 1:
				{
				setState(4238);
				match(VARYING);
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ConstIntervalContext extends ParserRuleContext {
		public TerminalNode INTERVAL() { return getToken(OpenGaussStatementParser.INTERVAL, 0); }
		public ConstIntervalContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_constInterval; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitConstInterval(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ConstIntervalContext constInterval() throws RecognitionException {
		ConstIntervalContext _localctx = new ConstIntervalContext(_ctx, getState());
		enterRule(_localctx, 438, RULE_constInterval);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4241);
			match(INTERVAL);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class OptIntervalContext extends ParserRuleContext {
		public TerminalNode YEAR() { return getToken(OpenGaussStatementParser.YEAR, 0); }
		public TerminalNode MONTH() { return getToken(OpenGaussStatementParser.MONTH, 0); }
		public TerminalNode DAY() { return getToken(OpenGaussStatementParser.DAY, 0); }
		public TerminalNode HOUR() { return getToken(OpenGaussStatementParser.HOUR, 0); }
		public TerminalNode MINUTE() { return getToken(OpenGaussStatementParser.MINUTE, 0); }
		public IntervalSecondContext intervalSecond() {
			return getRuleContext(IntervalSecondContext.class,0);
		}
		public TerminalNode TO() { return getToken(OpenGaussStatementParser.TO, 0); }
		public OptIntervalContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_optInterval; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitOptInterval(this);
			else return visitor.visitChildren(this);
		}
	}

	public final OptIntervalContext optInterval() throws RecognitionException {
		OptIntervalContext _localctx = new OptIntervalContext(_ctx, getState());
		enterRule(_localctx, 440, RULE_optInterval);
		try {
			setState(4271);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,288,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(4243);
				match(YEAR);
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(4244);
				match(MONTH);
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(4245);
				match(DAY);
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(4246);
				match(HOUR);
				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(4247);
				match(MINUTE);
				}
				break;
			case 6:
				enterOuterAlt(_localctx, 6);
				{
				setState(4248);
				intervalSecond();
				}
				break;
			case 7:
				enterOuterAlt(_localctx, 7);
				{
				setState(4249);
				match(YEAR);
				setState(4250);
				match(TO);
				setState(4251);
				match(MONTH);
				}
				break;
			case 8:
				enterOuterAlt(_localctx, 8);
				{
				setState(4252);
				match(DAY);
				setState(4253);
				match(TO);
				setState(4254);
				match(HOUR);
				}
				break;
			case 9:
				enterOuterAlt(_localctx, 9);
				{
				setState(4255);
				match(DAY);
				setState(4256);
				match(TO);
				setState(4257);
				match(MINUTE);
				}
				break;
			case 10:
				enterOuterAlt(_localctx, 10);
				{
				setState(4258);
				match(DAY);
				setState(4259);
				match(TO);
				setState(4260);
				intervalSecond();
				}
				break;
			case 11:
				enterOuterAlt(_localctx, 11);
				{
				setState(4261);
				match(HOUR);
				setState(4262);
				match(TO);
				setState(4263);
				match(MINUTE);
				}
				break;
			case 12:
				enterOuterAlt(_localctx, 12);
				{
				setState(4264);
				match(HOUR);
				setState(4265);
				match(TO);
				setState(4266);
				intervalSecond();
				}
				break;
			case 13:
				enterOuterAlt(_localctx, 13);
				{
				setState(4267);
				match(MINUTE);
				setState(4268);
				match(TO);
				setState(4269);
				intervalSecond();
				}
				break;
			case 14:
				enterOuterAlt(_localctx, 14);
				{
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class OptArrayBoundsContext extends ParserRuleContext {
		public OptArrayBoundsContext optArrayBounds() {
			return getRuleContext(OptArrayBoundsContext.class,0);
		}
		public TerminalNode LBT_() { return getToken(OpenGaussStatementParser.LBT_, 0); }
		public TerminalNode RBT_() { return getToken(OpenGaussStatementParser.RBT_, 0); }
		public TerminalNode NUMBER_() { return getToken(OpenGaussStatementParser.NUMBER_, 0); }
		public OptArrayBoundsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_optArrayBounds; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitOptArrayBounds(this);
			else return visitor.visitChildren(this);
		}
	}

	public final OptArrayBoundsContext optArrayBounds() throws RecognitionException {
		return optArrayBounds(0);
	}

	private OptArrayBoundsContext optArrayBounds(int _p) throws RecognitionException {
		ParserRuleContext _parentctx = _ctx;
		int _parentState = getState();
		OptArrayBoundsContext _localctx = new OptArrayBoundsContext(_ctx, _parentState);
		OptArrayBoundsContext _prevctx = _localctx;
		int _startState = 442;
		enterRecursionRule(_localctx, 442, RULE_optArrayBounds, _p);
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			{
			}
			_ctx.stop = _input.LT(-1);
			setState(4283);
			_errHandler.sync(this);
			_alt = getInterpreter().adaptivePredict(_input,290,_ctx);
			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
				if ( _alt==1 ) {
					if ( _parseListeners!=null ) triggerExitRuleEvent();
					_prevctx = _localctx;
					{
					setState(4281);
					_errHandler.sync(this);
					switch ( getInterpreter().adaptivePredict(_input,289,_ctx) ) {
					case 1:
						{
						_localctx = new OptArrayBoundsContext(_parentctx, _parentState);
						pushNewRecursionContext(_localctx, _startState, RULE_optArrayBounds);
						setState(4274);
						if (!(precpred(_ctx, 3))) throw new FailedPredicateException(this, "precpred(_ctx, 3)");
						setState(4275);
						match(LBT_);
						setState(4276);
						match(RBT_);
						}
						break;
					case 2:
						{
						_localctx = new OptArrayBoundsContext(_parentctx, _parentState);
						pushNewRecursionContext(_localctx, _startState, RULE_optArrayBounds);
						setState(4277);
						if (!(precpred(_ctx, 2))) throw new FailedPredicateException(this, "precpred(_ctx, 2)");
						setState(4278);
						match(LBT_);
						setState(4279);
						match(NUMBER_);
						setState(4280);
						match(RBT_);
						}
						break;
					}
					} 
				}
				setState(4285);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,290,_ctx);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			unrollRecursionContexts(_parentctx);
		}
		return _localctx;
	}

	public static class IntervalSecondContext extends ParserRuleContext {
		public TerminalNode SECOND() { return getToken(OpenGaussStatementParser.SECOND, 0); }
		public TerminalNode LP_() { return getToken(OpenGaussStatementParser.LP_, 0); }
		public TerminalNode NUMBER_() { return getToken(OpenGaussStatementParser.NUMBER_, 0); }
		public TerminalNode RP_() { return getToken(OpenGaussStatementParser.RP_, 0); }
		public IntervalSecondContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_intervalSecond; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitIntervalSecond(this);
			else return visitor.visitChildren(this);
		}
	}

	public final IntervalSecondContext intervalSecond() throws RecognitionException {
		IntervalSecondContext _localctx = new IntervalSecondContext(_ctx, getState());
		enterRule(_localctx, 444, RULE_intervalSecond);
		try {
			setState(4291);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,291,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(4286);
				match(SECOND);
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(4287);
				match(SECOND);
				setState(4288);
				match(LP_);
				setState(4289);
				match(NUMBER_);
				setState(4290);
				match(RP_);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class UnicodeNormalFormContext extends ParserRuleContext {
		public TerminalNode NFC() { return getToken(OpenGaussStatementParser.NFC, 0); }
		public TerminalNode NFD() { return getToken(OpenGaussStatementParser.NFD, 0); }
		public TerminalNode NFKC() { return getToken(OpenGaussStatementParser.NFKC, 0); }
		public TerminalNode NFKD() { return getToken(OpenGaussStatementParser.NFKD, 0); }
		public UnicodeNormalFormContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_unicodeNormalForm; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitUnicodeNormalForm(this);
			else return visitor.visitChildren(this);
		}
	}

	public final UnicodeNormalFormContext unicodeNormalForm() throws RecognitionException {
		UnicodeNormalFormContext _localctx = new UnicodeNormalFormContext(_ctx, getState());
		enterRule(_localctx, 446, RULE_unicodeNormalForm);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4293);
			_la = _input.LA(1);
			if ( !(((((_la - 405)) & ~0x3f) == 0 && ((1L << (_la - 405)) & ((1L << (NFC - 405)) | (1L << (NFD - 405)) | (1L << (NFKC - 405)) | (1L << (NFKD - 405)))) != 0)) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class TrimListContext extends ParserRuleContext {
		public AExprContext aExpr() {
			return getRuleContext(AExprContext.class,0);
		}
		public TerminalNode FROM() { return getToken(OpenGaussStatementParser.FROM, 0); }
		public ExprListContext exprList() {
			return getRuleContext(ExprListContext.class,0);
		}
		public TrimListContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_trimList; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitTrimList(this);
			else return visitor.visitChildren(this);
		}
	}

	public final TrimListContext trimList() throws RecognitionException {
		TrimListContext _localctx = new TrimListContext(_ctx, getState());
		enterRule(_localctx, 448, RULE_trimList);
		try {
			setState(4302);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,292,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(4295);
				aExpr(0);
				setState(4296);
				match(FROM);
				setState(4297);
				exprList(0);
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(4299);
				match(FROM);
				setState(4300);
				exprList(0);
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(4301);
				exprList(0);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class OverlayListContext extends ParserRuleContext {
		public AExprContext aExpr() {
			return getRuleContext(AExprContext.class,0);
		}
		public OverlayPlacingContext overlayPlacing() {
			return getRuleContext(OverlayPlacingContext.class,0);
		}
		public SubstrFromContext substrFrom() {
			return getRuleContext(SubstrFromContext.class,0);
		}
		public SubstrForContext substrFor() {
			return getRuleContext(SubstrForContext.class,0);
		}
		public OverlayListContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_overlayList; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitOverlayList(this);
			else return visitor.visitChildren(this);
		}
	}

	public final OverlayListContext overlayList() throws RecognitionException {
		OverlayListContext _localctx = new OverlayListContext(_ctx, getState());
		enterRule(_localctx, 450, RULE_overlayList);
		try {
			setState(4313);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,293,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(4304);
				aExpr(0);
				setState(4305);
				overlayPlacing();
				setState(4306);
				substrFrom();
				setState(4307);
				substrFor();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(4309);
				aExpr(0);
				setState(4310);
				overlayPlacing();
				setState(4311);
				substrFrom();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class OverlayPlacingContext extends ParserRuleContext {
		public TerminalNode PLACING() { return getToken(OpenGaussStatementParser.PLACING, 0); }
		public AExprContext aExpr() {
			return getRuleContext(AExprContext.class,0);
		}
		public OverlayPlacingContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_overlayPlacing; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitOverlayPlacing(this);
			else return visitor.visitChildren(this);
		}
	}

	public final OverlayPlacingContext overlayPlacing() throws RecognitionException {
		OverlayPlacingContext _localctx = new OverlayPlacingContext(_ctx, getState());
		enterRule(_localctx, 452, RULE_overlayPlacing);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4315);
			match(PLACING);
			setState(4316);
			aExpr(0);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class SubstrFromContext extends ParserRuleContext {
		public TerminalNode FROM() { return getToken(OpenGaussStatementParser.FROM, 0); }
		public AExprContext aExpr() {
			return getRuleContext(AExprContext.class,0);
		}
		public SubstrFromContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_substrFrom; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitSubstrFrom(this);
			else return visitor.visitChildren(this);
		}
	}

	public final SubstrFromContext substrFrom() throws RecognitionException {
		SubstrFromContext _localctx = new SubstrFromContext(_ctx, getState());
		enterRule(_localctx, 454, RULE_substrFrom);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4318);
			match(FROM);
			setState(4319);
			aExpr(0);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class SubstrForContext extends ParserRuleContext {
		public TerminalNode FOR() { return getToken(OpenGaussStatementParser.FOR, 0); }
		public AExprContext aExpr() {
			return getRuleContext(AExprContext.class,0);
		}
		public SubstrForContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_substrFor; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitSubstrFor(this);
			else return visitor.visitChildren(this);
		}
	}

	public final SubstrForContext substrFor() throws RecognitionException {
		SubstrForContext _localctx = new SubstrForContext(_ctx, getState());
		enterRule(_localctx, 456, RULE_substrFor);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4321);
			match(FOR);
			setState(4322);
			aExpr(0);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class PositionListContext extends ParserRuleContext {
		public List bExpr() {
			return getRuleContexts(BExprContext.class);
		}
		public BExprContext bExpr(int i) {
			return getRuleContext(BExprContext.class,i);
		}
		public TerminalNode IN() { return getToken(OpenGaussStatementParser.IN, 0); }
		public PositionListContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_positionList; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitPositionList(this);
			else return visitor.visitChildren(this);
		}
	}

	public final PositionListContext positionList() throws RecognitionException {
		PositionListContext _localctx = new PositionListContext(_ctx, getState());
		enterRule(_localctx, 458, RULE_positionList);
		try {
			setState(4329);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case OR_:
			case SIGNED_LEFT_SHIFT_:
			case SIGNED_RIGHT_SHIFT_:
			case PLUS_:
			case MINUS_:
			case POUND_:
			case LP_:
			case QUESTION_:
			case DOLLAR_:
			case UNICODE_ESCAPE:
			case JSON_EXTRACT_:
			case JSON_EXTRACT_TEXT_:
			case JSON_PATH_EXTRACT_:
			case JSON_PATH_EXTRACT_TEXT_:
			case JSONB_CONTAIN_RIGHT_:
			case JSONB_CONTAIN_LEFT_:
			case JSONB_CONTAIN_ALL_TOP_KEY_:
			case JSONB_PATH_DELETE_:
			case JSONB_PATH_CONTAIN_ANY_VALUE_:
			case JSONB_PATH_PREDICATE_CHECK_:
			case GEOMETRIC_LENGTH_:
			case GEOMETRIC_DISTANCE_:
			case GEOMETRIC_EXTEND_RIGHT_:
			case GEOMETRIC_EXTEND_LEFT_:
			case GEOMETRIC_STRICT_BELOW_:
			case GEOMETRIC_STRICT_ABOVE_:
			case GEOMETRIC_EXTEND_ABOVE_:
			case GEOMETRIC_EXTEND_BELOW_:
			case GEOMETRIC_BELOW_:
			case GEOMETRIC_ABOVE_:
			case GEOMETRIC_INTERSECT_:
			case GEOMETRIC_PERPENDICULAR_:
			case GEOMETRIC_SAME_AS_:
			case INSERT:
			case UPDATE:
			case DELETE:
			case ALTER:
			case DROP:
			case TRUNCATE:
			case SCHEMA:
			case REVOKE:
			case ADD:
			case SET:
			case INDEX:
			case KEY:
			case POSITION:
			case FUNCTION:
			case TRIGGER:
			case PROCEDURE:
			case VIEW:
			case CASE:
			case CAST:
			case TRIM:
			case SUBSTRING:
			case NATURAL:
			case JOIN:
			case FULL:
			case INNER:
			case OUTER:
			case LEFT:
			case RIGHT:
			case CROSS:
			case IF:
			case IS:
			case NULL:
			case TRUE:
			case FALSE:
			case EXISTS:
			case LIKE:
			case BY:
			case BEGIN:
			case COMMIT:
			case ROLLBACK:
			case SAVEPOINT:
			case BOOLEAN:
			case DOUBLE:
			case CHAR:
			case CHARACTER:
			case ARRAY:
			case INTERVAL:
			case DATE:
			case TIME:
			case TIMESTAMP:
			case LOCALTIME:
			case LOCALTIMESTAMP:
			case YEAR:
			case MONTH:
			case DAY:
			case HOUR:
			case MINUTE:
			case SECOND:
			case CURRENT:
			case ENABLE:
			case DISABLE:
			case CALL:
			case PRESERVE:
			case DEFINER:
			case CURRENT_USER:
			case SQL:
			case CASCADED:
			case LOCAL:
			case CLOSE:
			case NEXT:
			case NAME:
			case COLLATION:
			case NAMES:
			case INTEGER:
			case REAL:
			case DECIMAL:
			case TYPE:
			case SMALLINT:
			case BIGINT:
			case NUMERIC:
			case TEXT:
			case REPEATABLE:
			case CURRENT_DATE:
			case CURRENT_TIME:
			case CURRENT_TIMESTAMP:
			case NULLIF:
			case VARYING:
			case NATIONAL:
			case NCHAR:
			case VALUE:
			case COALESCE:
			case TIES:
			case CUBE:
			case GROUPING:
			case SETS:
			case OTHERS:
			case OVERLAPS:
			case AT:
			case DEC:
			case MAXVALUE:
			case ADMIN:
			case BINARY:
			case ESCAPE:
			case EXCLUDE:
			case MOD:
			case PARTITION:
			case ROW:
			case UNKNOWN:
			case ALWAYS:
			case CASCADE:
			case GENERATED:
			case ISOLATION:
			case LEVEL:
			case NO:
			case OPTION:
			case PRIVILEGES:
			case READ:
			case ROLE:
			case ROWS:
			case START:
			case TRANSACTION:
			case USER:
			case ACTION:
			case CACHE:
			case CHARACTERISTICS:
			case CLUSTER:
			case COMMENTS:
			case CONCURRENTLY:
			case CONSTRAINTS:
			case CYCLE:
			case DATA:
			case DATABASE:
			case DEFAULTS:
			case DEFERRED:
			case DEPENDS:
			case DOMAIN:
			case EXCLUDING:
			case EXECUTE:
			case EXTENDED:
			case EXTENSION:
			case EXTERNAL:
			case EXTRACT:
			case FILTER:
			case FIRST:
			case FOLLOWING:
			case FORCE:
			case GLOBAL:
			case IDENTITY:
			case IMMEDIATE:
			case INCLUDING:
			case INCREMENT:
			case INDEXES:
			case INHERIT:
			case INHERITS:
			case INCLUDE:
			case LANGUAGE:
			case LARGE:
			case LAST:
			case LOGGED:
			case MAIN:
			case MATCH:
			case MINVALUE:
			case NOTHING:
			case NULLS:
			case OBJECT:
			case OIDS:
			case OVER:
			case OWNED:
			case OWNER:
			case PARTIAL:
			case PLAIN:
			case PRECEDING:
			case RANGE:
			case RENAME:
			case REPLICA:
			case RESET:
			case RESTART:
			case RESTRICT:
			case ROUTINE:
			case RULE:
			case SECURITY:
			case SEQUENCE:
			case SESSION:
			case SESSION_USER:
			case SHOW:
			case SIMPLE:
			case STATISTICS:
			case STORAGE:
			case TABLESPACE:
			case TEMP:
			case TEMPORARY:
			case UNBOUNDED:
			case UNLOGGED:
			case VALID:
			case VALIDATE:
			case WITHIN:
			case WITHOUT:
			case ZONE:
			case OF:
			case UESCAPE:
			case GROUPS:
			case RECURSIVE:
			case INT:
			case INT2:
			case INT4:
			case INT8:
			case FLOAT:
			case FLOAT4:
			case FLOAT8:
			case VARCHAR:
			case BYTEA:
			case ENUM:
			case POINT:
			case LSEG:
			case BOX:
			case PATH:
			case POLYGON:
			case CIRCLE:
			case INET:
			case BIT:
			case TSQUERY:
			case XML:
			case JSON:
			case INT4RANGE:
			case INT8RANGE:
			case NUMRANGE:
			case DATERANGE:
			case TABLESAMPLE:
			case ORDINALITY:
			case CURRENT_ROLE:
			case CURRENT_CATALOG:
			case CURRENT_SCHEMA:
			case NORMALIZE:
			case OVERLAY:
			case XMLCONCAT:
			case XMLELEMENT:
			case XMLEXISTS:
			case XMLFOREST:
			case XMLPARSE:
			case XMLPI:
			case XMLROOT:
			case XMLSERIALIZE:
			case TREAT:
			case NFC:
			case NFD:
			case NFKC:
			case NFKD:
			case REF:
			case PASSING:
			case VERSION:
			case YES:
			case STANDALONE:
			case GREATEST:
			case LEAST:
			case MATERIALIZED:
			case OPERATOR:
			case SHARE:
			case ROLLUP:
			case ILIKE:
			case SIMILAR:
			case ISNULL:
			case NOTNULL:
			case DOCUMENT:
			case NORMALIZED:
			case NOWAIT:
			case LOCKED:
			case COLUMNS:
			case CONTENT:
			case STRIP:
			case WHITESPACE:
			case CONFLICT:
			case OVERRIDING:
			case SYSTEM:
			case ABORT:
			case ABSOLUTE:
			case ACCESS:
			case AFTER:
			case AGGREGATE:
			case ALSO:
			case ATTACH:
			case ATTRIBUTE:
			case BACKWARD:
			case BEFORE:
			case ASSERTION:
			case ASSIGNMENT:
			case CONTINUE:
			case CONVERSION:
			case COPY:
			case COST:
			case CSV:
			case CALLED:
			case CATALOG:
			case CHAIN:
			case CHECKPOINT:
			case CLASS:
			case CONFIGURATION:
			case COMMENT:
			case DETACH:
			case DICTIONARY:
			case EXPRESSION:
			case INSENSITIVE:
			case DISCARD:
			case OFF:
			case INSTEAD:
			case EXPLAIN:
			case INPUT:
			case INLINE:
			case PARALLEL:
			case LEAKPROOF:
			case COMMITTED:
			case ENCODING:
			case IMPLICIT:
			case DELIMITER:
			case CURSOR:
			case EACH:
			case EVENT:
			case DEALLOCATE:
			case CONNECTION:
			case DECLARE:
			case FAMILY:
			case FORWARD:
			case EXCLUSIVE:
			case FUNCTIONS:
			case LOCATION:
			case LABEL:
			case DELIMITERS:
			case HANDLER:
			case HEADER:
			case IMMUTABLE:
			case GRANTED:
			case HOLD:
			case MAPPING:
			case OLD:
			case METHOD:
			case LOAD:
			case LISTEN:
			case MODE:
			case MOVE:
			case PROCEDURAL:
			case PARSER:
			case PROCEDURES:
			case ENCRYPTED:
			case PUBLICATION:
			case PROGRAM:
			case REFERENCING:
			case PLANS:
			case REINDEX:
			case PRIOR:
			case PASSWORD:
			case RELATIVE:
			case QUOTE:
			case ROUTINES:
			case REPLACE:
			case SNAPSHOT:
			case REFRESH:
			case PREPARE:
			case OPTIONS:
			case IMPORT:
			case INVOKER:
			case NEW:
			case PREPARED:
			case SCROLL:
			case SEQUENCES:
			case SYSID:
			case REASSIGN:
			case SERVER:
			case SUBSCRIPTION:
			case SEARCH:
			case SCHEMAS:
			case RECHECK:
			case POLICY:
			case NOTIFY:
			case LOCK:
			case RELEASE:
			case SERIALIZABLE:
			case RETURNS:
			case STATEMENT:
			case STDIN:
			case STDOUT:
			case TABLES:
			case SUPPORT:
			case STABLE:
			case TEMPLATE:
			case UNENCRYPTED:
			case VIEWS:
			case UNCOMMITTED:
			case TRANSFORM:
			case UNLISTEN:
			case TRUSTED:
			case VALIDATOR:
			case UNTIL:
			case VACUUM:
			case VOLATILE:
			case STORED:
			case WRITE:
			case STRICT:
			case TYPES:
			case WRAPPER:
			case WORK:
			case FREEZE:
			case AUTHORIZATION:
			case VERBOSE:
			case PARAM:
			case PREDICT:
			case TS_REWRITE:
			case INT16:
			case INT1:
			case ELEM_CONTAINED_BY_RANGE:
			case LOWER_INF:
			case UPPER_INF:
			case ABBREV:
			case SET_MASKLEN:
			case TRUNC:
			case IDENTIFIER_:
			case STRING_:
			case NUMBER_:
				enterOuterAlt(_localctx, 1);
				{
				setState(4324);
				bExpr(0);
				setState(4325);
				match(IN);
				setState(4326);
				bExpr(0);
				}
				break;
			case RP_:
				enterOuterAlt(_localctx, 2);
				{
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class SubstrListContext extends ParserRuleContext {
		public AExprContext aExpr() {
			return getRuleContext(AExprContext.class,0);
		}
		public SubstrFromContext substrFrom() {
			return getRuleContext(SubstrFromContext.class,0);
		}
		public SubstrForContext substrFor() {
			return getRuleContext(SubstrForContext.class,0);
		}
		public ExprListContext exprList() {
			return getRuleContext(ExprListContext.class,0);
		}
		public SubstrListContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_substrList; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitSubstrList(this);
			else return visitor.visitChildren(this);
		}
	}

	public final SubstrListContext substrList() throws RecognitionException {
		SubstrListContext _localctx = new SubstrListContext(_ctx, getState());
		enterRule(_localctx, 460, RULE_substrList);
		try {
			setState(4347);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,295,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(4331);
				aExpr(0);
				setState(4332);
				substrFrom();
				setState(4333);
				substrFor();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(4335);
				aExpr(0);
				setState(4336);
				substrFor();
				setState(4337);
				substrFrom();
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(4339);
				aExpr(0);
				setState(4340);
				substrFrom();
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(4342);
				aExpr(0);
				setState(4343);
				substrFor();
				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(4345);
				exprList(0);
				}
				break;
			case 6:
				enterOuterAlt(_localctx, 6);
				{
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class XmlAttributesContext extends ParserRuleContext {
		public TerminalNode XMLATTRIBUTES() { return getToken(OpenGaussStatementParser.XMLATTRIBUTES, 0); }
		public TerminalNode LP_() { return getToken(OpenGaussStatementParser.LP_, 0); }
		public XmlAttributeListContext xmlAttributeList() {
			return getRuleContext(XmlAttributeListContext.class,0);
		}
		public TerminalNode RP_() { return getToken(OpenGaussStatementParser.RP_, 0); }
		public XmlAttributesContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_xmlAttributes; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitXmlAttributes(this);
			else return visitor.visitChildren(this);
		}
	}

	public final XmlAttributesContext xmlAttributes() throws RecognitionException {
		XmlAttributesContext _localctx = new XmlAttributesContext(_ctx, getState());
		enterRule(_localctx, 462, RULE_xmlAttributes);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4349);
			match(XMLATTRIBUTES);
			setState(4350);
			match(LP_);
			setState(4351);
			xmlAttributeList();
			setState(4352);
			match(RP_);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class XmlAttributeListContext extends ParserRuleContext {
		public List xmlAttributeEl() {
			return getRuleContexts(XmlAttributeElContext.class);
		}
		public XmlAttributeElContext xmlAttributeEl(int i) {
			return getRuleContext(XmlAttributeElContext.class,i);
		}
		public List COMMA_() { return getTokens(OpenGaussStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(OpenGaussStatementParser.COMMA_, i);
		}
		public XmlAttributeListContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_xmlAttributeList; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitXmlAttributeList(this);
			else return visitor.visitChildren(this);
		}
	}

	public final XmlAttributeListContext xmlAttributeList() throws RecognitionException {
		XmlAttributeListContext _localctx = new XmlAttributeListContext(_ctx, getState());
		enterRule(_localctx, 464, RULE_xmlAttributeList);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4354);
			xmlAttributeEl();
			setState(4359);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA_) {
				{
				{
				setState(4355);
				match(COMMA_);
				setState(4356);
				xmlAttributeEl();
				}
				}
				setState(4361);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class XmlAttributeElContext extends ParserRuleContext {
		public AExprContext aExpr() {
			return getRuleContext(AExprContext.class,0);
		}
		public TerminalNode AS() { return getToken(OpenGaussStatementParser.AS, 0); }
		public IdentifierContext identifier() {
			return getRuleContext(IdentifierContext.class,0);
		}
		public XmlAttributeElContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_xmlAttributeEl; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitXmlAttributeEl(this);
			else return visitor.visitChildren(this);
		}
	}

	public final XmlAttributeElContext xmlAttributeEl() throws RecognitionException {
		XmlAttributeElContext _localctx = new XmlAttributeElContext(_ctx, getState());
		enterRule(_localctx, 466, RULE_xmlAttributeEl);
		try {
			setState(4367);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,297,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(4362);
				aExpr(0);
				setState(4363);
				match(AS);
				setState(4364);
				identifier();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(4366);
				aExpr(0);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class XmlExistsArgumentContext extends ParserRuleContext {
		public TerminalNode PASSING() { return getToken(OpenGaussStatementParser.PASSING, 0); }
		public CExprContext cExpr() {
			return getRuleContext(CExprContext.class,0);
		}
		public List xmlPassingMech() {
			return getRuleContexts(XmlPassingMechContext.class);
		}
		public XmlPassingMechContext xmlPassingMech(int i) {
			return getRuleContext(XmlPassingMechContext.class,i);
		}
		public XmlExistsArgumentContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_xmlExistsArgument; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitXmlExistsArgument(this);
			else return visitor.visitChildren(this);
		}
	}

	public final XmlExistsArgumentContext xmlExistsArgument() throws RecognitionException {
		XmlExistsArgumentContext _localctx = new XmlExistsArgumentContext(_ctx, getState());
		enterRule(_localctx, 468, RULE_xmlExistsArgument);
		try {
			setState(4384);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,298,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(4369);
				match(PASSING);
				setState(4370);
				cExpr();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(4371);
				match(PASSING);
				setState(4372);
				cExpr();
				setState(4373);
				xmlPassingMech();
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(4375);
				match(PASSING);
				setState(4376);
				xmlPassingMech();
				setState(4377);
				cExpr();
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(4379);
				match(PASSING);
				setState(4380);
				xmlPassingMech();
				setState(4381);
				cExpr();
				setState(4382);
				xmlPassingMech();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class XmlPassingMechContext extends ParserRuleContext {
		public TerminalNode BY() { return getToken(OpenGaussStatementParser.BY, 0); }
		public TerminalNode REF() { return getToken(OpenGaussStatementParser.REF, 0); }
		public TerminalNode VALUE() { return getToken(OpenGaussStatementParser.VALUE, 0); }
		public XmlPassingMechContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_xmlPassingMech; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitXmlPassingMech(this);
			else return visitor.visitChildren(this);
		}
	}

	public final XmlPassingMechContext xmlPassingMech() throws RecognitionException {
		XmlPassingMechContext _localctx = new XmlPassingMechContext(_ctx, getState());
		enterRule(_localctx, 470, RULE_xmlPassingMech);
		try {
			setState(4390);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,299,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(4386);
				match(BY);
				setState(4387);
				match(REF);
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(4388);
				match(BY);
				setState(4389);
				match(VALUE);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DocumentOrContentContext extends ParserRuleContext {
		public TerminalNode DOCUMENT() { return getToken(OpenGaussStatementParser.DOCUMENT, 0); }
		public TerminalNode CONTENT() { return getToken(OpenGaussStatementParser.CONTENT, 0); }
		public DocumentOrContentContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_documentOrContent; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitDocumentOrContent(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DocumentOrContentContext documentOrContent() throws RecognitionException {
		DocumentOrContentContext _localctx = new DocumentOrContentContext(_ctx, getState());
		enterRule(_localctx, 472, RULE_documentOrContent);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4392);
			_la = _input.LA(1);
			if ( !(_la==DOCUMENT || _la==CONTENT) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class XmlWhitespaceOptionContext extends ParserRuleContext {
		public TerminalNode PRESERVE() { return getToken(OpenGaussStatementParser.PRESERVE, 0); }
		public TerminalNode WHITESPACE() { return getToken(OpenGaussStatementParser.WHITESPACE, 0); }
		public TerminalNode STRIP() { return getToken(OpenGaussStatementParser.STRIP, 0); }
		public XmlWhitespaceOptionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_xmlWhitespaceOption; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitXmlWhitespaceOption(this);
			else return visitor.visitChildren(this);
		}
	}

	public final XmlWhitespaceOptionContext xmlWhitespaceOption() throws RecognitionException {
		XmlWhitespaceOptionContext _localctx = new XmlWhitespaceOptionContext(_ctx, getState());
		enterRule(_localctx, 474, RULE_xmlWhitespaceOption);
		try {
			setState(4399);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case PRESERVE:
				enterOuterAlt(_localctx, 1);
				{
				setState(4394);
				match(PRESERVE);
				setState(4395);
				match(WHITESPACE);
				}
				break;
			case STRIP:
				enterOuterAlt(_localctx, 2);
				{
				setState(4396);
				match(STRIP);
				setState(4397);
				match(WHITESPACE);
				}
				break;
			case RP_:
				enterOuterAlt(_localctx, 3);
				{
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class XmlRootVersionContext extends ParserRuleContext {
		public TerminalNode VERSION() { return getToken(OpenGaussStatementParser.VERSION, 0); }
		public AExprContext aExpr() {
			return getRuleContext(AExprContext.class,0);
		}
		public TerminalNode NO() { return getToken(OpenGaussStatementParser.NO, 0); }
		public TerminalNode VALUE() { return getToken(OpenGaussStatementParser.VALUE, 0); }
		public XmlRootVersionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_xmlRootVersion; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitXmlRootVersion(this);
			else return visitor.visitChildren(this);
		}
	}

	public final XmlRootVersionContext xmlRootVersion() throws RecognitionException {
		XmlRootVersionContext _localctx = new XmlRootVersionContext(_ctx, getState());
		enterRule(_localctx, 476, RULE_xmlRootVersion);
		try {
			setState(4406);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,301,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(4401);
				match(VERSION);
				setState(4402);
				aExpr(0);
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(4403);
				match(VERSION);
				setState(4404);
				match(NO);
				setState(4405);
				match(VALUE);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class XmlRootStandaloneContext extends ParserRuleContext {
		public TerminalNode COMMA_() { return getToken(OpenGaussStatementParser.COMMA_, 0); }
		public TerminalNode STANDALONE() { return getToken(OpenGaussStatementParser.STANDALONE, 0); }
		public TerminalNode YES() { return getToken(OpenGaussStatementParser.YES, 0); }
		public TerminalNode NO() { return getToken(OpenGaussStatementParser.NO, 0); }
		public TerminalNode VALUE() { return getToken(OpenGaussStatementParser.VALUE, 0); }
		public XmlRootStandaloneContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_xmlRootStandalone; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitXmlRootStandalone(this);
			else return visitor.visitChildren(this);
		}
	}

	public final XmlRootStandaloneContext xmlRootStandalone() throws RecognitionException {
		XmlRootStandaloneContext _localctx = new XmlRootStandaloneContext(_ctx, getState());
		enterRule(_localctx, 478, RULE_xmlRootStandalone);
		try {
			setState(4418);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,302,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(4408);
				match(COMMA_);
				setState(4409);
				match(STANDALONE);
				setState(4410);
				match(YES);
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(4411);
				match(COMMA_);
				setState(4412);
				match(STANDALONE);
				setState(4413);
				match(NO);
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(4414);
				match(COMMA_);
				setState(4415);
				match(STANDALONE);
				setState(4416);
				match(NO);
				setState(4417);
				match(VALUE);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class RowsFromItemContext extends ParserRuleContext {
		public FunctionExprWindowlessContext functionExprWindowless() {
			return getRuleContext(FunctionExprWindowlessContext.class,0);
		}
		public ColumnDefListContext columnDefList() {
			return getRuleContext(ColumnDefListContext.class,0);
		}
		public RowsFromItemContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_rowsFromItem; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitRowsFromItem(this);
			else return visitor.visitChildren(this);
		}
	}

	public final RowsFromItemContext rowsFromItem() throws RecognitionException {
		RowsFromItemContext _localctx = new RowsFromItemContext(_ctx, getState());
		enterRule(_localctx, 480, RULE_rowsFromItem);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4420);
			functionExprWindowless();
			setState(4421);
			columnDefList();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class RowsFromListContext extends ParserRuleContext {
		public List rowsFromItem() {
			return getRuleContexts(RowsFromItemContext.class);
		}
		public RowsFromItemContext rowsFromItem(int i) {
			return getRuleContext(RowsFromItemContext.class,i);
		}
		public List COMMA_() { return getTokens(OpenGaussStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(OpenGaussStatementParser.COMMA_, i);
		}
		public RowsFromListContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_rowsFromList; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitRowsFromList(this);
			else return visitor.visitChildren(this);
		}
	}

	public final RowsFromListContext rowsFromList() throws RecognitionException {
		RowsFromListContext _localctx = new RowsFromListContext(_ctx, getState());
		enterRule(_localctx, 482, RULE_rowsFromList);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4423);
			rowsFromItem();
			setState(4428);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA_) {
				{
				{
				setState(4424);
				match(COMMA_);
				setState(4425);
				rowsFromItem();
				}
				}
				setState(4430);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ColumnDefListContext extends ParserRuleContext {
		public TerminalNode AS() { return getToken(OpenGaussStatementParser.AS, 0); }
		public TerminalNode LP_() { return getToken(OpenGaussStatementParser.LP_, 0); }
		public TableFuncElementListContext tableFuncElementList() {
			return getRuleContext(TableFuncElementListContext.class,0);
		}
		public TerminalNode RP_() { return getToken(OpenGaussStatementParser.RP_, 0); }
		public ColumnDefListContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_columnDefList; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitColumnDefList(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ColumnDefListContext columnDefList() throws RecognitionException {
		ColumnDefListContext _localctx = new ColumnDefListContext(_ctx, getState());
		enterRule(_localctx, 484, RULE_columnDefList);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4431);
			match(AS);
			setState(4432);
			match(LP_);
			setState(4433);
			tableFuncElementList();
			setState(4434);
			match(RP_);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class TableFuncElementListContext extends ParserRuleContext {
		public List tableFuncElement() {
			return getRuleContexts(TableFuncElementContext.class);
		}
		public TableFuncElementContext tableFuncElement(int i) {
			return getRuleContext(TableFuncElementContext.class,i);
		}
		public List COMMA_() { return getTokens(OpenGaussStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(OpenGaussStatementParser.COMMA_, i);
		}
		public TableFuncElementListContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_tableFuncElementList; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitTableFuncElementList(this);
			else return visitor.visitChildren(this);
		}
	}

	public final TableFuncElementListContext tableFuncElementList() throws RecognitionException {
		TableFuncElementListContext _localctx = new TableFuncElementListContext(_ctx, getState());
		enterRule(_localctx, 486, RULE_tableFuncElementList);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4436);
			tableFuncElement();
			setState(4441);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA_) {
				{
				{
				setState(4437);
				match(COMMA_);
				setState(4438);
				tableFuncElement();
				}
				}
				setState(4443);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class TableFuncElementContext extends ParserRuleContext {
		public ColIdContext colId() {
			return getRuleContext(ColIdContext.class,0);
		}
		public TypeNameContext typeName() {
			return getRuleContext(TypeNameContext.class,0);
		}
		public CollateClauseContext collateClause() {
			return getRuleContext(CollateClauseContext.class,0);
		}
		public TableFuncElementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_tableFuncElement; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitTableFuncElement(this);
			else return visitor.visitChildren(this);
		}
	}

	public final TableFuncElementContext tableFuncElement() throws RecognitionException {
		TableFuncElementContext _localctx = new TableFuncElementContext(_ctx, getState());
		enterRule(_localctx, 488, RULE_tableFuncElement);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4444);
			colId();
			setState(4445);
			typeName();
			setState(4447);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==COLLATE) {
				{
				setState(4446);
				collateClause();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CollateClauseContext extends ParserRuleContext {
		public TerminalNode COLLATE() { return getToken(OpenGaussStatementParser.COLLATE, 0); }
		public AnyNameContext anyName() {
			return getRuleContext(AnyNameContext.class,0);
		}
		public TerminalNode EQ_() { return getToken(OpenGaussStatementParser.EQ_, 0); }
		public CollateClauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_collateClause; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitCollateClause(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CollateClauseContext collateClause() throws RecognitionException {
		CollateClauseContext _localctx = new CollateClauseContext(_ctx, getState());
		enterRule(_localctx, 490, RULE_collateClause);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4449);
			match(COLLATE);
			setState(4451);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==EQ_) {
				{
				setState(4450);
				match(EQ_);
				}
			}

			setState(4453);
			anyName();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AnyNameContext extends ParserRuleContext {
		public ColIdContext colId() {
			return getRuleContext(ColIdContext.class,0);
		}
		public AttrsContext attrs() {
			return getRuleContext(AttrsContext.class,0);
		}
		public AnyNameContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_anyName; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitAnyName(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AnyNameContext anyName() throws RecognitionException {
		AnyNameContext _localctx = new AnyNameContext(_ctx, getState());
		enterRule(_localctx, 492, RULE_anyName);
		try {
			setState(4459);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,307,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(4455);
				colId();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(4456);
				colId();
				setState(4457);
				attrs(0);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AliasClauseContext extends ParserRuleContext {
		public TerminalNode AS() { return getToken(OpenGaussStatementParser.AS, 0); }
		public ColIdContext colId() {
			return getRuleContext(ColIdContext.class,0);
		}
		public TerminalNode LP_() { return getToken(OpenGaussStatementParser.LP_, 0); }
		public NameListContext nameList() {
			return getRuleContext(NameListContext.class,0);
		}
		public TerminalNode RP_() { return getToken(OpenGaussStatementParser.RP_, 0); }
		public AliasClauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_aliasClause; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitAliasClause(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AliasClauseContext aliasClause() throws RecognitionException {
		AliasClauseContext _localctx = new AliasClauseContext(_ctx, getState());
		enterRule(_localctx, 494, RULE_aliasClause);
		try {
			setState(4475);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,308,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(4461);
				match(AS);
				setState(4462);
				colId();
				setState(4463);
				match(LP_);
				setState(4464);
				nameList(0);
				setState(4465);
				match(RP_);
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(4467);
				match(AS);
				setState(4468);
				colId();
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(4469);
				colId();
				setState(4470);
				match(LP_);
				setState(4471);
				nameList(0);
				setState(4472);
				match(RP_);
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(4474);
				colId();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DirectoryNameContext extends ParserRuleContext {
		public NameContext name() {
			return getRuleContext(NameContext.class,0);
		}
		public DirectoryNameContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_directoryName; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitDirectoryName(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DirectoryNameContext directoryName() throws RecognitionException {
		DirectoryNameContext _localctx = new DirectoryNameContext(_ctx, getState());
		enterRule(_localctx, 496, RULE_directoryName);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4477);
			name();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class PackageNameContext extends ParserRuleContext {
		public NameContext name() {
			return getRuleContext(NameContext.class,0);
		}
		public PackageNameContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_packageName; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitPackageName(this);
			else return visitor.visitChildren(this);
		}
	}

	public final PackageNameContext packageName() throws RecognitionException {
		PackageNameContext _localctx = new PackageNameContext(_ctx, getState());
		enterRule(_localctx, 498, RULE_packageName);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4479);
			name();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class PathStringContext extends ParserRuleContext {
		public TerminalNode STRING_() { return getToken(OpenGaussStatementParser.STRING_, 0); }
		public PathStringContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_pathString; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitPathString(this);
			else return visitor.visitChildren(this);
		}
	}

	public final PathStringContext pathString() throws RecognitionException {
		PathStringContext _localctx = new PathStringContext(_ctx, getState());
		enterRule(_localctx, 500, RULE_pathString);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4481);
			match(STRING_);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class NameListContext extends ParserRuleContext {
		public NameContext name() {
			return getRuleContext(NameContext.class,0);
		}
		public NameListContext nameList() {
			return getRuleContext(NameListContext.class,0);
		}
		public TerminalNode COMMA_() { return getToken(OpenGaussStatementParser.COMMA_, 0); }
		public NameListContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_nameList; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitNameList(this);
			else return visitor.visitChildren(this);
		}
	}

	public final NameListContext nameList() throws RecognitionException {
		return nameList(0);
	}

	private NameListContext nameList(int _p) throws RecognitionException {
		ParserRuleContext _parentctx = _ctx;
		int _parentState = getState();
		NameListContext _localctx = new NameListContext(_ctx, _parentState);
		NameListContext _prevctx = _localctx;
		int _startState = 502;
		enterRecursionRule(_localctx, 502, RULE_nameList, _p);
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			{
			setState(4484);
			name();
			}
			_ctx.stop = _input.LT(-1);
			setState(4491);
			_errHandler.sync(this);
			_alt = getInterpreter().adaptivePredict(_input,309,_ctx);
			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
				if ( _alt==1 ) {
					if ( _parseListeners!=null ) triggerExitRuleEvent();
					_prevctx = _localctx;
					{
					{
					_localctx = new NameListContext(_parentctx, _parentState);
					pushNewRecursionContext(_localctx, _startState, RULE_nameList);
					setState(4486);
					if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)");
					setState(4487);
					match(COMMA_);
					setState(4488);
					name();
					}
					} 
				}
				setState(4493);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,309,_ctx);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			unrollRecursionContexts(_parentctx);
		}
		return _localctx;
	}

	public static class FuncAliasClauseContext extends ParserRuleContext {
		public AliasClauseContext aliasClause() {
			return getRuleContext(AliasClauseContext.class,0);
		}
		public TerminalNode AS() { return getToken(OpenGaussStatementParser.AS, 0); }
		public TerminalNode LP_() { return getToken(OpenGaussStatementParser.LP_, 0); }
		public TableFuncElementListContext tableFuncElementList() {
			return getRuleContext(TableFuncElementListContext.class,0);
		}
		public TerminalNode RP_() { return getToken(OpenGaussStatementParser.RP_, 0); }
		public ColIdContext colId() {
			return getRuleContext(ColIdContext.class,0);
		}
		public FuncAliasClauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_funcAliasClause; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitFuncAliasClause(this);
			else return visitor.visitChildren(this);
		}
	}

	public final FuncAliasClauseContext funcAliasClause() throws RecognitionException {
		FuncAliasClauseContext _localctx = new FuncAliasClauseContext(_ctx, getState());
		enterRule(_localctx, 504, RULE_funcAliasClause);
		try {
			setState(4511);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,310,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(4494);
				aliasClause();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(4495);
				match(AS);
				setState(4496);
				match(LP_);
				setState(4497);
				tableFuncElementList();
				setState(4498);
				match(RP_);
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(4500);
				match(AS);
				setState(4501);
				colId();
				setState(4502);
				match(LP_);
				setState(4503);
				tableFuncElementList();
				setState(4504);
				match(RP_);
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(4506);
				colId();
				setState(4507);
				match(LP_);
				setState(4508);
				tableFuncElementList();
				setState(4509);
				match(RP_);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class TablesampleClauseContext extends ParserRuleContext {
		public TerminalNode TABLESAMPLE() { return getToken(OpenGaussStatementParser.TABLESAMPLE, 0); }
		public FuncNameContext funcName() {
			return getRuleContext(FuncNameContext.class,0);
		}
		public TerminalNode LP_() { return getToken(OpenGaussStatementParser.LP_, 0); }
		public ExprListContext exprList() {
			return getRuleContext(ExprListContext.class,0);
		}
		public TerminalNode RP_() { return getToken(OpenGaussStatementParser.RP_, 0); }
		public RepeatableClauseContext repeatableClause() {
			return getRuleContext(RepeatableClauseContext.class,0);
		}
		public TablesampleClauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_tablesampleClause; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitTablesampleClause(this);
			else return visitor.visitChildren(this);
		}
	}

	public final TablesampleClauseContext tablesampleClause() throws RecognitionException {
		TablesampleClauseContext _localctx = new TablesampleClauseContext(_ctx, getState());
		enterRule(_localctx, 506, RULE_tablesampleClause);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4513);
			match(TABLESAMPLE);
			setState(4514);
			funcName();
			setState(4515);
			match(LP_);
			setState(4516);
			exprList(0);
			setState(4517);
			match(RP_);
			setState(4519);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,311,_ctx) ) {
			case 1:
				{
				setState(4518);
				repeatableClause();
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class RepeatableClauseContext extends ParserRuleContext {
		public TerminalNode REPEATABLE() { return getToken(OpenGaussStatementParser.REPEATABLE, 0); }
		public TerminalNode LP_() { return getToken(OpenGaussStatementParser.LP_, 0); }
		public AExprContext aExpr() {
			return getRuleContext(AExprContext.class,0);
		}
		public TerminalNode RP_() { return getToken(OpenGaussStatementParser.RP_, 0); }
		public RepeatableClauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_repeatableClause; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitRepeatableClause(this);
			else return visitor.visitChildren(this);
		}
	}

	public final RepeatableClauseContext repeatableClause() throws RecognitionException {
		RepeatableClauseContext _localctx = new RepeatableClauseContext(_ctx, getState());
		enterRule(_localctx, 508, RULE_repeatableClause);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4521);
			match(REPEATABLE);
			setState(4522);
			match(LP_);
			setState(4523);
			aExpr(0);
			setState(4524);
			match(RP_);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AllOrDistinctContext extends ParserRuleContext {
		public TerminalNode ALL() { return getToken(OpenGaussStatementParser.ALL, 0); }
		public TerminalNode DISTINCT() { return getToken(OpenGaussStatementParser.DISTINCT, 0); }
		public AllOrDistinctContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_allOrDistinct; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitAllOrDistinct(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AllOrDistinctContext allOrDistinct() throws RecognitionException {
		AllOrDistinctContext _localctx = new AllOrDistinctContext(_ctx, getState());
		enterRule(_localctx, 510, RULE_allOrDistinct);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4526);
			_la = _input.LA(1);
			if ( !(_la==DISTINCT || _la==ALL) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class SortClauseContext extends ParserRuleContext {
		public TerminalNode ORDER() { return getToken(OpenGaussStatementParser.ORDER, 0); }
		public TerminalNode BY() { return getToken(OpenGaussStatementParser.BY, 0); }
		public SortbyListContext sortbyList() {
			return getRuleContext(SortbyListContext.class,0);
		}
		public SortClauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_sortClause; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitSortClause(this);
			else return visitor.visitChildren(this);
		}
	}

	public final SortClauseContext sortClause() throws RecognitionException {
		SortClauseContext _localctx = new SortClauseContext(_ctx, getState());
		enterRule(_localctx, 512, RULE_sortClause);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4528);
			match(ORDER);
			setState(4529);
			match(BY);
			setState(4530);
			sortbyList();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class SortbyListContext extends ParserRuleContext {
		public List sortby() {
			return getRuleContexts(SortbyContext.class);
		}
		public SortbyContext sortby(int i) {
			return getRuleContext(SortbyContext.class,i);
		}
		public List COMMA_() { return getTokens(OpenGaussStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(OpenGaussStatementParser.COMMA_, i);
		}
		public SortbyListContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_sortbyList; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitSortbyList(this);
			else return visitor.visitChildren(this);
		}
	}

	public final SortbyListContext sortbyList() throws RecognitionException {
		SortbyListContext _localctx = new SortbyListContext(_ctx, getState());
		enterRule(_localctx, 514, RULE_sortbyList);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4532);
			sortby();
			setState(4537);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA_) {
				{
				{
				setState(4533);
				match(COMMA_);
				setState(4534);
				sortby();
				}
				}
				setState(4539);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class SortbyContext extends ParserRuleContext {
		public AExprContext aExpr() {
			return getRuleContext(AExprContext.class,0);
		}
		public TerminalNode USING() { return getToken(OpenGaussStatementParser.USING, 0); }
		public QualAllOpContext qualAllOp() {
			return getRuleContext(QualAllOpContext.class,0);
		}
		public NullsOrderContext nullsOrder() {
			return getRuleContext(NullsOrderContext.class,0);
		}
		public AscDescContext ascDesc() {
			return getRuleContext(AscDescContext.class,0);
		}
		public SortbyContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_sortby; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitSortby(this);
			else return visitor.visitChildren(this);
		}
	}

	public final SortbyContext sortby() throws RecognitionException {
		SortbyContext _localctx = new SortbyContext(_ctx, getState());
		enterRule(_localctx, 516, RULE_sortby);
		int _la;
		try {
			setState(4553);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,316,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(4540);
				aExpr(0);
				setState(4541);
				match(USING);
				setState(4542);
				qualAllOp();
				setState(4544);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==NULLS) {
					{
					setState(4543);
					nullsOrder();
					}
				}

				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(4546);
				aExpr(0);
				setState(4548);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==ASC || _la==DESC) {
					{
					setState(4547);
					ascDesc();
					}
				}

				setState(4551);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==NULLS) {
					{
					setState(4550);
					nullsOrder();
					}
				}

				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class NullsOrderContext extends ParserRuleContext {
		public TerminalNode NULLS() { return getToken(OpenGaussStatementParser.NULLS, 0); }
		public TerminalNode FIRST() { return getToken(OpenGaussStatementParser.FIRST, 0); }
		public TerminalNode LAST() { return getToken(OpenGaussStatementParser.LAST, 0); }
		public NullsOrderContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_nullsOrder; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitNullsOrder(this);
			else return visitor.visitChildren(this);
		}
	}

	public final NullsOrderContext nullsOrder() throws RecognitionException {
		NullsOrderContext _localctx = new NullsOrderContext(_ctx, getState());
		enterRule(_localctx, 518, RULE_nullsOrder);
		try {
			setState(4559);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,317,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(4555);
				match(NULLS);
				setState(4556);
				match(FIRST);
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(4557);
				match(NULLS);
				setState(4558);
				match(LAST);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DistinctClauseContext extends ParserRuleContext {
		public TerminalNode DISTINCT() { return getToken(OpenGaussStatementParser.DISTINCT, 0); }
		public TerminalNode ON() { return getToken(OpenGaussStatementParser.ON, 0); }
		public TerminalNode LP_() { return getToken(OpenGaussStatementParser.LP_, 0); }
		public ExprListContext exprList() {
			return getRuleContext(ExprListContext.class,0);
		}
		public TerminalNode RP_() { return getToken(OpenGaussStatementParser.RP_, 0); }
		public DistinctClauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_distinctClause; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitDistinctClause(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DistinctClauseContext distinctClause() throws RecognitionException {
		DistinctClauseContext _localctx = new DistinctClauseContext(_ctx, getState());
		enterRule(_localctx, 520, RULE_distinctClause);
		try {
			setState(4568);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,318,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(4561);
				match(DISTINCT);
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(4562);
				match(DISTINCT);
				setState(4563);
				match(ON);
				setState(4564);
				match(LP_);
				setState(4565);
				exprList(0);
				setState(4566);
				match(RP_);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DistinctContext extends ParserRuleContext {
		public TerminalNode DISTINCT() { return getToken(OpenGaussStatementParser.DISTINCT, 0); }
		public DistinctContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_distinct; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitDistinct(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DistinctContext distinct() throws RecognitionException {
		DistinctContext _localctx = new DistinctContext(_ctx, getState());
		enterRule(_localctx, 522, RULE_distinct);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4570);
			match(DISTINCT);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class OverClauseContext extends ParserRuleContext {
		public TerminalNode OVER() { return getToken(OpenGaussStatementParser.OVER, 0); }
		public WindowSpecificationContext windowSpecification() {
			return getRuleContext(WindowSpecificationContext.class,0);
		}
		public ColIdContext colId() {
			return getRuleContext(ColIdContext.class,0);
		}
		public OverClauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_overClause; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitOverClause(this);
			else return visitor.visitChildren(this);
		}
	}

	public final OverClauseContext overClause() throws RecognitionException {
		OverClauseContext _localctx = new OverClauseContext(_ctx, getState());
		enterRule(_localctx, 524, RULE_overClause);
		try {
			setState(4576);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,319,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(4572);
				match(OVER);
				setState(4573);
				windowSpecification();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(4574);
				match(OVER);
				setState(4575);
				colId();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class WindowNameContext extends ParserRuleContext {
		public ColIdContext colId() {
			return getRuleContext(ColIdContext.class,0);
		}
		public WindowNameContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_windowName; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitWindowName(this);
			else return visitor.visitChildren(this);
		}
	}

	public final WindowNameContext windowName() throws RecognitionException {
		WindowNameContext _localctx = new WindowNameContext(_ctx, getState());
		enterRule(_localctx, 526, RULE_windowName);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4578);
			colId();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class IndexParamsContext extends ParserRuleContext {
		public List indexElem() {
			return getRuleContexts(IndexElemContext.class);
		}
		public IndexElemContext indexElem(int i) {
			return getRuleContext(IndexElemContext.class,i);
		}
		public List COMMA_() { return getTokens(OpenGaussStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(OpenGaussStatementParser.COMMA_, i);
		}
		public IndexParamsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_indexParams; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitIndexParams(this);
			else return visitor.visitChildren(this);
		}
	}

	public final IndexParamsContext indexParams() throws RecognitionException {
		IndexParamsContext _localctx = new IndexParamsContext(_ctx, getState());
		enterRule(_localctx, 528, RULE_indexParams);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4580);
			indexElem();
			setState(4585);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA_) {
				{
				{
				setState(4581);
				match(COMMA_);
				setState(4582);
				indexElem();
				}
				}
				setState(4587);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class IndexElemOptionsContext extends ParserRuleContext {
		public OptClassContext optClass() {
			return getRuleContext(OptClassContext.class,0);
		}
		public CollateContext collate() {
			return getRuleContext(CollateContext.class,0);
		}
		public AscDescContext ascDesc() {
			return getRuleContext(AscDescContext.class,0);
		}
		public NullsOrderContext nullsOrder() {
			return getRuleContext(NullsOrderContext.class,0);
		}
		public AnyNameContext anyName() {
			return getRuleContext(AnyNameContext.class,0);
		}
		public ReloptionsContext reloptions() {
			return getRuleContext(ReloptionsContext.class,0);
		}
		public IndexElemOptionsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_indexElemOptions; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitIndexElemOptions(this);
			else return visitor.visitChildren(this);
		}
	}

	public final IndexElemOptionsContext indexElemOptions() throws RecognitionException {
		IndexElemOptionsContext _localctx = new IndexElemOptionsContext(_ctx, getState());
		enterRule(_localctx, 530, RULE_indexElemOptions);
		int _la;
		try {
			setState(4609);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,327,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(4589);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==COLLATE) {
					{
					setState(4588);
					collate();
					}
				}

				setState(4591);
				optClass();
				setState(4593);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==ASC || _la==DESC) {
					{
					setState(4592);
					ascDesc();
					}
				}

				setState(4596);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==NULLS) {
					{
					setState(4595);
					nullsOrder();
					}
				}

				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(4599);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==COLLATE) {
					{
					setState(4598);
					collate();
					}
				}

				setState(4601);
				anyName();
				setState(4602);
				reloptions();
				setState(4604);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==ASC || _la==DESC) {
					{
					setState(4603);
					ascDesc();
					}
				}

				setState(4607);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==NULLS) {
					{
					setState(4606);
					nullsOrder();
					}
				}

				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class IndexElemContext extends ParserRuleContext {
		public ColIdContext colId() {
			return getRuleContext(ColIdContext.class,0);
		}
		public IndexElemOptionsContext indexElemOptions() {
			return getRuleContext(IndexElemOptionsContext.class,0);
		}
		public FunctionExprWindowlessContext functionExprWindowless() {
			return getRuleContext(FunctionExprWindowlessContext.class,0);
		}
		public TerminalNode LP_() { return getToken(OpenGaussStatementParser.LP_, 0); }
		public AExprContext aExpr() {
			return getRuleContext(AExprContext.class,0);
		}
		public TerminalNode RP_() { return getToken(OpenGaussStatementParser.RP_, 0); }
		public IndexElemContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_indexElem; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitIndexElem(this);
			else return visitor.visitChildren(this);
		}
	}

	public final IndexElemContext indexElem() throws RecognitionException {
		IndexElemContext _localctx = new IndexElemContext(_ctx, getState());
		enterRule(_localctx, 532, RULE_indexElem);
		try {
			setState(4622);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,328,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(4611);
				colId();
				setState(4612);
				indexElemOptions();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(4614);
				functionExprWindowless();
				setState(4615);
				indexElemOptions();
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(4617);
				match(LP_);
				setState(4618);
				aExpr(0);
				setState(4619);
				match(RP_);
				setState(4620);
				indexElemOptions();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CollateContext extends ParserRuleContext {
		public TerminalNode COLLATE() { return getToken(OpenGaussStatementParser.COLLATE, 0); }
		public AnyNameContext anyName() {
			return getRuleContext(AnyNameContext.class,0);
		}
		public CollateContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_collate; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitCollate(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CollateContext collate() throws RecognitionException {
		CollateContext _localctx = new CollateContext(_ctx, getState());
		enterRule(_localctx, 534, RULE_collate);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4624);
			match(COLLATE);
			setState(4625);
			anyName();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class OptClassContext extends ParserRuleContext {
		public AnyNameContext anyName() {
			return getRuleContext(AnyNameContext.class,0);
		}
		public OptClassContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_optClass; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitOptClass(this);
			else return visitor.visitChildren(this);
		}
	}

	public final OptClassContext optClass() throws RecognitionException {
		OptClassContext _localctx = new OptClassContext(_ctx, getState());
		enterRule(_localctx, 536, RULE_optClass);
		try {
			setState(4629);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,329,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(4627);
				anyName();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ReloptionsContext extends ParserRuleContext {
		public TerminalNode LP_() { return getToken(OpenGaussStatementParser.LP_, 0); }
		public ReloptionListContext reloptionList() {
			return getRuleContext(ReloptionListContext.class,0);
		}
		public TerminalNode RP_() { return getToken(OpenGaussStatementParser.RP_, 0); }
		public ReloptionsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_reloptions; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitReloptions(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ReloptionsContext reloptions() throws RecognitionException {
		ReloptionsContext _localctx = new ReloptionsContext(_ctx, getState());
		enterRule(_localctx, 538, RULE_reloptions);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4631);
			match(LP_);
			setState(4632);
			reloptionList();
			setState(4633);
			match(RP_);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ReloptionListContext extends ParserRuleContext {
		public List reloptionElem() {
			return getRuleContexts(ReloptionElemContext.class);
		}
		public ReloptionElemContext reloptionElem(int i) {
			return getRuleContext(ReloptionElemContext.class,i);
		}
		public List COMMA_() { return getTokens(OpenGaussStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(OpenGaussStatementParser.COMMA_, i);
		}
		public ReloptionListContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_reloptionList; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitReloptionList(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ReloptionListContext reloptionList() throws RecognitionException {
		ReloptionListContext _localctx = new ReloptionListContext(_ctx, getState());
		enterRule(_localctx, 540, RULE_reloptionList);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4635);
			reloptionElem();
			setState(4640);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA_) {
				{
				{
				setState(4636);
				match(COMMA_);
				setState(4637);
				reloptionElem();
				}
				}
				setState(4642);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ReloptionElemContext extends ParserRuleContext {
		public List alias() {
			return getRuleContexts(AliasContext.class);
		}
		public AliasContext alias(int i) {
			return getRuleContext(AliasContext.class,i);
		}
		public TerminalNode EQ_() { return getToken(OpenGaussStatementParser.EQ_, 0); }
		public DefArgContext defArg() {
			return getRuleContext(DefArgContext.class,0);
		}
		public TerminalNode DOT_() { return getToken(OpenGaussStatementParser.DOT_, 0); }
		public ReloptionElemContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_reloptionElem; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitReloptionElem(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ReloptionElemContext reloptionElem() throws RecognitionException {
		ReloptionElemContext _localctx = new ReloptionElemContext(_ctx, getState());
		enterRule(_localctx, 542, RULE_reloptionElem);
		try {
			setState(4658);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,331,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(4643);
				alias();
				setState(4644);
				match(EQ_);
				setState(4645);
				defArg();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(4647);
				alias();
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(4648);
				alias();
				setState(4649);
				match(DOT_);
				setState(4650);
				alias();
				setState(4651);
				match(EQ_);
				setState(4652);
				defArg();
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(4654);
				alias();
				setState(4655);
				match(DOT_);
				setState(4656);
				alias();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DefArgContext extends ParserRuleContext {
		public FuncTypeContext funcType() {
			return getRuleContext(FuncTypeContext.class,0);
		}
		public ReservedKeywordContext reservedKeyword() {
			return getRuleContext(ReservedKeywordContext.class,0);
		}
		public QualAllOpContext qualAllOp() {
			return getRuleContext(QualAllOpContext.class,0);
		}
		public TerminalNode NUMBER_() { return getToken(OpenGaussStatementParser.NUMBER_, 0); }
		public TerminalNode STRING_() { return getToken(OpenGaussStatementParser.STRING_, 0); }
		public TerminalNode NONE() { return getToken(OpenGaussStatementParser.NONE, 0); }
		public DefArgContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_defArg; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitDefArg(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DefArgContext defArg() throws RecognitionException {
		DefArgContext _localctx = new DefArgContext(_ctx, getState());
		enterRule(_localctx, 544, RULE_defArg);
		try {
			setState(4666);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,332,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(4660);
				funcType();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(4661);
				reservedKeyword();
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(4662);
				qualAllOp();
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(4663);
				match(NUMBER_);
				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(4664);
				match(STRING_);
				}
				break;
			case 6:
				enterOuterAlt(_localctx, 6);
				{
				setState(4665);
				match(NONE);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class FuncTypeContext extends ParserRuleContext {
		public TypeNameContext typeName() {
			return getRuleContext(TypeNameContext.class,0);
		}
		public TypeFunctionNameContext typeFunctionName() {
			return getRuleContext(TypeFunctionNameContext.class,0);
		}
		public AttrsContext attrs() {
			return getRuleContext(AttrsContext.class,0);
		}
		public TerminalNode MOD_() { return getToken(OpenGaussStatementParser.MOD_, 0); }
		public TerminalNode TYPE() { return getToken(OpenGaussStatementParser.TYPE, 0); }
		public TerminalNode SETOF() { return getToken(OpenGaussStatementParser.SETOF, 0); }
		public FuncTypeContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_funcType; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitFuncType(this);
			else return visitor.visitChildren(this);
		}
	}

	public final FuncTypeContext funcType() throws RecognitionException {
		FuncTypeContext _localctx = new FuncTypeContext(_ctx, getState());
		enterRule(_localctx, 546, RULE_funcType);
		try {
			setState(4680);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,333,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(4668);
				typeName();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(4669);
				typeFunctionName();
				setState(4670);
				attrs(0);
				setState(4671);
				match(MOD_);
				setState(4672);
				match(TYPE);
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(4674);
				match(SETOF);
				setState(4675);
				typeFunctionName();
				setState(4676);
				attrs(0);
				setState(4677);
				match(MOD_);
				setState(4678);
				match(TYPE);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DataTypeContext extends ParserRuleContext {
		public DataTypeNameContext dataTypeName() {
			return getRuleContext(DataTypeNameContext.class,0);
		}
		public DataTypeLengthContext dataTypeLength() {
			return getRuleContext(DataTypeLengthContext.class,0);
		}
		public CharacterSetContext characterSet() {
			return getRuleContext(CharacterSetContext.class,0);
		}
		public CollateClauseContext collateClause() {
			return getRuleContext(CollateClauseContext.class,0);
		}
		public TerminalNode LP_() { return getToken(OpenGaussStatementParser.LP_, 0); }
		public List STRING_() { return getTokens(OpenGaussStatementParser.STRING_); }
		public TerminalNode STRING_(int i) {
			return getToken(OpenGaussStatementParser.STRING_, i);
		}
		public TerminalNode RP_() { return getToken(OpenGaussStatementParser.RP_, 0); }
		public List COMMA_() { return getTokens(OpenGaussStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(OpenGaussStatementParser.COMMA_, i);
		}
		public DataTypeContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_dataType; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitDataType(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DataTypeContext dataType() throws RecognitionException {
		DataTypeContext _localctx = new DataTypeContext(_ctx, getState());
		enterRule(_localctx, 548, RULE_dataType);
		int _la;
		try {
			setState(4709);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,340,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(4682);
				dataTypeName();
				setState(4684);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==LP_) {
					{
					setState(4683);
					dataTypeLength();
					}
				}

				setState(4687);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==CHAR || _la==CHARACTER) {
					{
					setState(4686);
					characterSet();
					}
				}

				setState(4690);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,336,_ctx) ) {
				case 1:
					{
					setState(4689);
					collateClause();
					}
					break;
				}
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(4692);
				dataTypeName();
				setState(4693);
				match(LP_);
				setState(4694);
				match(STRING_);
				setState(4699);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA_) {
					{
					{
					setState(4695);
					match(COMMA_);
					setState(4696);
					match(STRING_);
					}
					}
					setState(4701);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				setState(4702);
				match(RP_);
				setState(4704);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==CHAR || _la==CHARACTER) {
					{
					setState(4703);
					characterSet();
					}
				}

				setState(4707);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,339,_ctx) ) {
				case 1:
					{
					setState(4706);
					collateClause();
					}
					break;
				}
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DataTypeNameContext extends ParserRuleContext {
		public TerminalNode INT() { return getToken(OpenGaussStatementParser.INT, 0); }
		public TerminalNode INT2() { return getToken(OpenGaussStatementParser.INT2, 0); }
		public TerminalNode INT4() { return getToken(OpenGaussStatementParser.INT4, 0); }
		public TerminalNode INT8() { return getToken(OpenGaussStatementParser.INT8, 0); }
		public TerminalNode SMALLINT() { return getToken(OpenGaussStatementParser.SMALLINT, 0); }
		public TerminalNode INTEGER() { return getToken(OpenGaussStatementParser.INTEGER, 0); }
		public TerminalNode BIGINT() { return getToken(OpenGaussStatementParser.BIGINT, 0); }
		public TerminalNode DECIMAL() { return getToken(OpenGaussStatementParser.DECIMAL, 0); }
		public TerminalNode NUMERIC() { return getToken(OpenGaussStatementParser.NUMERIC, 0); }
		public TerminalNode REAL() { return getToken(OpenGaussStatementParser.REAL, 0); }
		public TerminalNode FLOAT() { return getToken(OpenGaussStatementParser.FLOAT, 0); }
		public TerminalNode FLOAT4() { return getToken(OpenGaussStatementParser.FLOAT4, 0); }
		public TerminalNode FLOAT8() { return getToken(OpenGaussStatementParser.FLOAT8, 0); }
		public TerminalNode DOUBLE() { return getToken(OpenGaussStatementParser.DOUBLE, 0); }
		public TerminalNode PRECISION() { return getToken(OpenGaussStatementParser.PRECISION, 0); }
		public TerminalNode SMALLSERIAL() { return getToken(OpenGaussStatementParser.SMALLSERIAL, 0); }
		public TerminalNode SERIAL() { return getToken(OpenGaussStatementParser.SERIAL, 0); }
		public TerminalNode BIGSERIAL() { return getToken(OpenGaussStatementParser.BIGSERIAL, 0); }
		public TerminalNode VARCHAR() { return getToken(OpenGaussStatementParser.VARCHAR, 0); }
		public TerminalNode CHARACTER() { return getToken(OpenGaussStatementParser.CHARACTER, 0); }
		public TerminalNode CHAR() { return getToken(OpenGaussStatementParser.CHAR, 0); }
		public TerminalNode TEXT() { return getToken(OpenGaussStatementParser.TEXT, 0); }
		public TerminalNode NAME() { return getToken(OpenGaussStatementParser.NAME, 0); }
		public TerminalNode BYTEA() { return getToken(OpenGaussStatementParser.BYTEA, 0); }
		public TerminalNode TIMESTAMP() { return getToken(OpenGaussStatementParser.TIMESTAMP, 0); }
		public TerminalNode DATE() { return getToken(OpenGaussStatementParser.DATE, 0); }
		public TerminalNode TIME() { return getToken(OpenGaussStatementParser.TIME, 0); }
		public TerminalNode INTERVAL() { return getToken(OpenGaussStatementParser.INTERVAL, 0); }
		public TerminalNode BOOLEAN() { return getToken(OpenGaussStatementParser.BOOLEAN, 0); }
		public TerminalNode ENUM() { return getToken(OpenGaussStatementParser.ENUM, 0); }
		public TerminalNode POINT() { return getToken(OpenGaussStatementParser.POINT, 0); }
		public TerminalNode LINE() { return getToken(OpenGaussStatementParser.LINE, 0); }
		public TerminalNode LSEG() { return getToken(OpenGaussStatementParser.LSEG, 0); }
		public TerminalNode BOX() { return getToken(OpenGaussStatementParser.BOX, 0); }
		public TerminalNode PATH() { return getToken(OpenGaussStatementParser.PATH, 0); }
		public TerminalNode POLYGON() { return getToken(OpenGaussStatementParser.POLYGON, 0); }
		public TerminalNode CIRCLE() { return getToken(OpenGaussStatementParser.CIRCLE, 0); }
		public TerminalNode CIDR() { return getToken(OpenGaussStatementParser.CIDR, 0); }
		public TerminalNode INET() { return getToken(OpenGaussStatementParser.INET, 0); }
		public TerminalNode MACADDR() { return getToken(OpenGaussStatementParser.MACADDR, 0); }
		public TerminalNode MACADDR8() { return getToken(OpenGaussStatementParser.MACADDR8, 0); }
		public TerminalNode BIT() { return getToken(OpenGaussStatementParser.BIT, 0); }
		public TerminalNode VARBIT() { return getToken(OpenGaussStatementParser.VARBIT, 0); }
		public TerminalNode TSVECTOR() { return getToken(OpenGaussStatementParser.TSVECTOR, 0); }
		public TerminalNode TSQUERY() { return getToken(OpenGaussStatementParser.TSQUERY, 0); }
		public TerminalNode XML() { return getToken(OpenGaussStatementParser.XML, 0); }
		public TerminalNode JSON() { return getToken(OpenGaussStatementParser.JSON, 0); }
		public TerminalNode INT4RANGE() { return getToken(OpenGaussStatementParser.INT4RANGE, 0); }
		public TerminalNode INT8RANGE() { return getToken(OpenGaussStatementParser.INT8RANGE, 0); }
		public TerminalNode NUMRANGE() { return getToken(OpenGaussStatementParser.NUMRANGE, 0); }
		public TerminalNode TSRANGE() { return getToken(OpenGaussStatementParser.TSRANGE, 0); }
		public TerminalNode TSTZRANGE() { return getToken(OpenGaussStatementParser.TSTZRANGE, 0); }
		public TerminalNode DATERANGE() { return getToken(OpenGaussStatementParser.DATERANGE, 0); }
		public TerminalNode ARRAY() { return getToken(OpenGaussStatementParser.ARRAY, 0); }
		public IdentifierContext identifier() {
			return getRuleContext(IdentifierContext.class,0);
		}
		public ConstDatetimeContext constDatetime() {
			return getRuleContext(ConstDatetimeContext.class,0);
		}
		public TypeNameContext typeName() {
			return getRuleContext(TypeNameContext.class,0);
		}
		public DataTypeNameContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_dataTypeName; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitDataTypeName(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DataTypeNameContext dataTypeName() throws RecognitionException {
		DataTypeNameContext _localctx = new DataTypeNameContext(_ctx, getState());
		enterRule(_localctx, 550, RULE_dataTypeName);
		try {
			setState(4768);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,341,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(4711);
				match(INT);
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(4712);
				match(INT2);
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(4713);
				match(INT4);
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(4714);
				match(INT8);
				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(4715);
				match(SMALLINT);
				}
				break;
			case 6:
				enterOuterAlt(_localctx, 6);
				{
				setState(4716);
				match(INTEGER);
				}
				break;
			case 7:
				enterOuterAlt(_localctx, 7);
				{
				setState(4717);
				match(BIGINT);
				}
				break;
			case 8:
				enterOuterAlt(_localctx, 8);
				{
				setState(4718);
				match(DECIMAL);
				}
				break;
			case 9:
				enterOuterAlt(_localctx, 9);
				{
				setState(4719);
				match(NUMERIC);
				}
				break;
			case 10:
				enterOuterAlt(_localctx, 10);
				{
				setState(4720);
				match(REAL);
				}
				break;
			case 11:
				enterOuterAlt(_localctx, 11);
				{
				setState(4721);
				match(FLOAT);
				}
				break;
			case 12:
				enterOuterAlt(_localctx, 12);
				{
				setState(4722);
				match(FLOAT4);
				}
				break;
			case 13:
				enterOuterAlt(_localctx, 13);
				{
				setState(4723);
				match(FLOAT8);
				}
				break;
			case 14:
				enterOuterAlt(_localctx, 14);
				{
				setState(4724);
				match(DOUBLE);
				setState(4725);
				match(PRECISION);
				}
				break;
			case 15:
				enterOuterAlt(_localctx, 15);
				{
				setState(4726);
				match(SMALLSERIAL);
				}
				break;
			case 16:
				enterOuterAlt(_localctx, 16);
				{
				setState(4727);
				match(SERIAL);
				}
				break;
			case 17:
				enterOuterAlt(_localctx, 17);
				{
				setState(4728);
				match(BIGSERIAL);
				}
				break;
			case 18:
				enterOuterAlt(_localctx, 18);
				{
				setState(4729);
				match(VARCHAR);
				}
				break;
			case 19:
				enterOuterAlt(_localctx, 19);
				{
				setState(4730);
				match(CHARACTER);
				}
				break;
			case 20:
				enterOuterAlt(_localctx, 20);
				{
				setState(4731);
				match(CHAR);
				}
				break;
			case 21:
				enterOuterAlt(_localctx, 21);
				{
				setState(4732);
				match(TEXT);
				}
				break;
			case 22:
				enterOuterAlt(_localctx, 22);
				{
				setState(4733);
				match(NAME);
				}
				break;
			case 23:
				enterOuterAlt(_localctx, 23);
				{
				setState(4734);
				match(BYTEA);
				}
				break;
			case 24:
				enterOuterAlt(_localctx, 24);
				{
				setState(4735);
				match(TIMESTAMP);
				}
				break;
			case 25:
				enterOuterAlt(_localctx, 25);
				{
				setState(4736);
				match(DATE);
				}
				break;
			case 26:
				enterOuterAlt(_localctx, 26);
				{
				setState(4737);
				match(TIME);
				}
				break;
			case 27:
				enterOuterAlt(_localctx, 27);
				{
				setState(4738);
				match(INTERVAL);
				}
				break;
			case 28:
				enterOuterAlt(_localctx, 28);
				{
				setState(4739);
				match(BOOLEAN);
				}
				break;
			case 29:
				enterOuterAlt(_localctx, 29);
				{
				setState(4740);
				match(ENUM);
				}
				break;
			case 30:
				enterOuterAlt(_localctx, 30);
				{
				setState(4741);
				match(POINT);
				}
				break;
			case 31:
				enterOuterAlt(_localctx, 31);
				{
				setState(4742);
				match(LINE);
				}
				break;
			case 32:
				enterOuterAlt(_localctx, 32);
				{
				setState(4743);
				match(LSEG);
				}
				break;
			case 33:
				enterOuterAlt(_localctx, 33);
				{
				setState(4744);
				match(BOX);
				}
				break;
			case 34:
				enterOuterAlt(_localctx, 34);
				{
				setState(4745);
				match(PATH);
				}
				break;
			case 35:
				enterOuterAlt(_localctx, 35);
				{
				setState(4746);
				match(POLYGON);
				}
				break;
			case 36:
				enterOuterAlt(_localctx, 36);
				{
				setState(4747);
				match(CIRCLE);
				}
				break;
			case 37:
				enterOuterAlt(_localctx, 37);
				{
				setState(4748);
				match(CIDR);
				}
				break;
			case 38:
				enterOuterAlt(_localctx, 38);
				{
				setState(4749);
				match(INET);
				}
				break;
			case 39:
				enterOuterAlt(_localctx, 39);
				{
				setState(4750);
				match(MACADDR);
				}
				break;
			case 40:
				enterOuterAlt(_localctx, 40);
				{
				setState(4751);
				match(MACADDR8);
				}
				break;
			case 41:
				enterOuterAlt(_localctx, 41);
				{
				setState(4752);
				match(BIT);
				}
				break;
			case 42:
				enterOuterAlt(_localctx, 42);
				{
				setState(4753);
				match(VARBIT);
				}
				break;
			case 43:
				enterOuterAlt(_localctx, 43);
				{
				setState(4754);
				match(TSVECTOR);
				}
				break;
			case 44:
				enterOuterAlt(_localctx, 44);
				{
				setState(4755);
				match(TSQUERY);
				}
				break;
			case 45:
				enterOuterAlt(_localctx, 45);
				{
				setState(4756);
				match(XML);
				}
				break;
			case 46:
				enterOuterAlt(_localctx, 46);
				{
				setState(4757);
				match(JSON);
				}
				break;
			case 47:
				enterOuterAlt(_localctx, 47);
				{
				setState(4758);
				match(INT4RANGE);
				}
				break;
			case 48:
				enterOuterAlt(_localctx, 48);
				{
				setState(4759);
				match(INT8RANGE);
				}
				break;
			case 49:
				enterOuterAlt(_localctx, 49);
				{
				setState(4760);
				match(NUMRANGE);
				}
				break;
			case 50:
				enterOuterAlt(_localctx, 50);
				{
				setState(4761);
				match(TSRANGE);
				}
				break;
			case 51:
				enterOuterAlt(_localctx, 51);
				{
				setState(4762);
				match(TSTZRANGE);
				}
				break;
			case 52:
				enterOuterAlt(_localctx, 52);
				{
				setState(4763);
				match(DATERANGE);
				}
				break;
			case 53:
				enterOuterAlt(_localctx, 53);
				{
				setState(4764);
				match(ARRAY);
				}
				break;
			case 54:
				enterOuterAlt(_localctx, 54);
				{
				setState(4765);
				identifier();
				}
				break;
			case 55:
				enterOuterAlt(_localctx, 55);
				{
				setState(4766);
				constDatetime();
				}
				break;
			case 56:
				enterOuterAlt(_localctx, 56);
				{
				setState(4767);
				typeName();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DataTypeLengthContext extends ParserRuleContext {
		public TerminalNode LP_() { return getToken(OpenGaussStatementParser.LP_, 0); }
		public List NUMBER_() { return getTokens(OpenGaussStatementParser.NUMBER_); }
		public TerminalNode NUMBER_(int i) {
			return getToken(OpenGaussStatementParser.NUMBER_, i);
		}
		public TerminalNode RP_() { return getToken(OpenGaussStatementParser.RP_, 0); }
		public TerminalNode COMMA_() { return getToken(OpenGaussStatementParser.COMMA_, 0); }
		public DataTypeLengthContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_dataTypeLength; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitDataTypeLength(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DataTypeLengthContext dataTypeLength() throws RecognitionException {
		DataTypeLengthContext _localctx = new DataTypeLengthContext(_ctx, getState());
		enterRule(_localctx, 552, RULE_dataTypeLength);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4770);
			match(LP_);
			setState(4771);
			match(NUMBER_);
			setState(4774);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==COMMA_) {
				{
				setState(4772);
				match(COMMA_);
				setState(4773);
				match(NUMBER_);
				}
			}

			setState(4776);
			match(RP_);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CharacterSetContext extends ParserRuleContext {
		public TerminalNode SET() { return getToken(OpenGaussStatementParser.SET, 0); }
		public IgnoredIdentifierContext ignoredIdentifier() {
			return getRuleContext(IgnoredIdentifierContext.class,0);
		}
		public TerminalNode CHARACTER() { return getToken(OpenGaussStatementParser.CHARACTER, 0); }
		public TerminalNode CHAR() { return getToken(OpenGaussStatementParser.CHAR, 0); }
		public TerminalNode EQ_() { return getToken(OpenGaussStatementParser.EQ_, 0); }
		public CharacterSetContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_characterSet; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitCharacterSet(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CharacterSetContext characterSet() throws RecognitionException {
		CharacterSetContext _localctx = new CharacterSetContext(_ctx, getState());
		enterRule(_localctx, 554, RULE_characterSet);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4778);
			_la = _input.LA(1);
			if ( !(_la==CHAR || _la==CHARACTER) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			setState(4779);
			match(SET);
			setState(4781);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==EQ_) {
				{
				setState(4780);
				match(EQ_);
				}
			}

			setState(4783);
			ignoredIdentifier();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class IgnoredIdentifierContext extends ParserRuleContext {
		public List identifier() {
			return getRuleContexts(IdentifierContext.class);
		}
		public IdentifierContext identifier(int i) {
			return getRuleContext(IdentifierContext.class,i);
		}
		public TerminalNode DOT_() { return getToken(OpenGaussStatementParser.DOT_, 0); }
		public IgnoredIdentifierContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_ignoredIdentifier; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitIgnoredIdentifier(this);
			else return visitor.visitChildren(this);
		}
	}

	public final IgnoredIdentifierContext ignoredIdentifier() throws RecognitionException {
		IgnoredIdentifierContext _localctx = new IgnoredIdentifierContext(_ctx, getState());
		enterRule(_localctx, 556, RULE_ignoredIdentifier);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4785);
			identifier();
			setState(4788);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==DOT_) {
				{
				setState(4786);
				match(DOT_);
				setState(4787);
				identifier();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class IgnoredIdentifiersContext extends ParserRuleContext {
		public List ignoredIdentifier() {
			return getRuleContexts(IgnoredIdentifierContext.class);
		}
		public IgnoredIdentifierContext ignoredIdentifier(int i) {
			return getRuleContext(IgnoredIdentifierContext.class,i);
		}
		public List COMMA_() { return getTokens(OpenGaussStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(OpenGaussStatementParser.COMMA_, i);
		}
		public IgnoredIdentifiersContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_ignoredIdentifiers; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitIgnoredIdentifiers(this);
			else return visitor.visitChildren(this);
		}
	}

	public final IgnoredIdentifiersContext ignoredIdentifiers() throws RecognitionException {
		IgnoredIdentifiersContext _localctx = new IgnoredIdentifiersContext(_ctx, getState());
		enterRule(_localctx, 558, RULE_ignoredIdentifiers);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4790);
			ignoredIdentifier();
			setState(4795);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA_) {
				{
				{
				setState(4791);
				match(COMMA_);
				setState(4792);
				ignoredIdentifier();
				}
				}
				setState(4797);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class SignedIconstContext extends ParserRuleContext {
		public TerminalNode NUMBER_() { return getToken(OpenGaussStatementParser.NUMBER_, 0); }
		public TerminalNode PLUS_() { return getToken(OpenGaussStatementParser.PLUS_, 0); }
		public TerminalNode MINUS_() { return getToken(OpenGaussStatementParser.MINUS_, 0); }
		public SignedIconstContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_signedIconst; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitSignedIconst(this);
			else return visitor.visitChildren(this);
		}
	}

	public final SignedIconstContext signedIconst() throws RecognitionException {
		SignedIconstContext _localctx = new SignedIconstContext(_ctx, getState());
		enterRule(_localctx, 560, RULE_signedIconst);
		try {
			setState(4803);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case NUMBER_:
				enterOuterAlt(_localctx, 1);
				{
				setState(4798);
				match(NUMBER_);
				}
				break;
			case PLUS_:
				enterOuterAlt(_localctx, 2);
				{
				setState(4799);
				match(PLUS_);
				setState(4800);
				match(NUMBER_);
				}
				break;
			case MINUS_:
				enterOuterAlt(_localctx, 3);
				{
				setState(4801);
				match(MINUS_);
				setState(4802);
				match(NUMBER_);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class BooleanOrStringContext extends ParserRuleContext {
		public TerminalNode TRUE() { return getToken(OpenGaussStatementParser.TRUE, 0); }
		public TerminalNode FALSE() { return getToken(OpenGaussStatementParser.FALSE, 0); }
		public TerminalNode ON() { return getToken(OpenGaussStatementParser.ON, 0); }
		public NonReservedWordContext nonReservedWord() {
			return getRuleContext(NonReservedWordContext.class,0);
		}
		public TerminalNode STRING_() { return getToken(OpenGaussStatementParser.STRING_, 0); }
		public BooleanOrStringContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_booleanOrString; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitBooleanOrString(this);
			else return visitor.visitChildren(this);
		}
	}

	public final BooleanOrStringContext booleanOrString() throws RecognitionException {
		BooleanOrStringContext _localctx = new BooleanOrStringContext(_ctx, getState());
		enterRule(_localctx, 562, RULE_booleanOrString);
		try {
			setState(4810);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case TRUE:
				enterOuterAlt(_localctx, 1);
				{
				setState(4805);
				match(TRUE);
				}
				break;
			case FALSE:
				enterOuterAlt(_localctx, 2);
				{
				setState(4806);
				match(FALSE);
				}
				break;
			case ON:
				enterOuterAlt(_localctx, 3);
				{
				setState(4807);
				match(ON);
				}
				break;
			case UNICODE_ESCAPE:
			case INSERT:
			case UPDATE:
			case DELETE:
			case ALTER:
			case DROP:
			case TRUNCATE:
			case SCHEMA:
			case REVOKE:
			case ADD:
			case SET:
			case INDEX:
			case KEY:
			case POSITION:
			case PRECISION:
			case FUNCTION:
			case TRIGGER:
			case PROCEDURE:
			case VIEW:
			case VALUES:
			case TRIM:
			case SUBSTRING:
			case NATURAL:
			case JOIN:
			case FULL:
			case INNER:
			case OUTER:
			case LEFT:
			case RIGHT:
			case CROSS:
			case IF:
			case IS:
			case EXISTS:
			case BETWEEN:
			case LIKE:
			case BY:
			case BEGIN:
			case COMMIT:
			case ROLLBACK:
			case SAVEPOINT:
			case BOOLEAN:
			case DOUBLE:
			case CHAR:
			case CHARACTER:
			case INTERVAL:
			case TIME:
			case TIMESTAMP:
			case YEAR:
			case MONTH:
			case DAY:
			case HOUR:
			case MINUTE:
			case SECOND:
			case CURRENT:
			case ENABLE:
			case DISABLE:
			case CALL:
			case PRESERVE:
			case DEFINER:
			case SQL:
			case CASCADED:
			case LOCAL:
			case CLOSE:
			case NEXT:
			case NAME:
			case COLLATION:
			case NAMES:
			case INTEGER:
			case REAL:
			case DECIMAL:
			case TYPE:
			case SMALLINT:
			case BIGINT:
			case NUMERIC:
			case TEXT:
			case REPEATABLE:
			case NULLIF:
			case VARYING:
			case NATIONAL:
			case NCHAR:
			case VALUE:
			case COALESCE:
			case TIES:
			case CUBE:
			case GROUPING:
			case SETS:
			case OTHERS:
			case OVERLAPS:
			case AT:
			case DEC:
			case MAXVALUE:
			case ADMIN:
			case BINARY:
			case ESCAPE:
			case EXCLUDE:
			case MOD:
			case PARTITION:
			case ROW:
			case UNKNOWN:
			case ALWAYS:
			case CASCADE:
			case GENERATED:
			case ISOLATION:
			case LEVEL:
			case NO:
			case OPTION:
			case PRIVILEGES:
			case READ:
			case ROLE:
			case ROWS:
			case START:
			case TRANSACTION:
			case ACTION:
			case CACHE:
			case CHARACTERISTICS:
			case CLUSTER:
			case COMMENTS:
			case CONCURRENTLY:
			case CONSTRAINTS:
			case CYCLE:
			case DATA:
			case DATABASE:
			case DEFAULTS:
			case DEFERRED:
			case DEPENDS:
			case DOMAIN:
			case EXCLUDING:
			case EXECUTE:
			case EXTENDED:
			case EXTENSION:
			case EXTERNAL:
			case EXTRACT:
			case FILTER:
			case FIRST:
			case FOLLOWING:
			case FORCE:
			case GLOBAL:
			case IDENTITY:
			case IMMEDIATE:
			case INCLUDING:
			case INCREMENT:
			case INDEXES:
			case INHERIT:
			case INHERITS:
			case INCLUDE:
			case LANGUAGE:
			case LARGE:
			case LAST:
			case LOGGED:
			case MAIN:
			case MATCH:
			case MINVALUE:
			case NOTHING:
			case NULLS:
			case OBJECT:
			case OIDS:
			case OVER:
			case OWNED:
			case OWNER:
			case PARTIAL:
			case PLAIN:
			case PRECEDING:
			case RANGE:
			case RENAME:
			case REPLICA:
			case RESET:
			case RESTART:
			case RESTRICT:
			case ROUTINE:
			case RULE:
			case SECURITY:
			case SEQUENCE:
			case SESSION:
			case SHOW:
			case SIMPLE:
			case STATISTICS:
			case STORAGE:
			case TABLESPACE:
			case TEMP:
			case TEMPORARY:
			case UNBOUNDED:
			case UNLOGGED:
			case VALID:
			case VALIDATE:
			case WITHIN:
			case WITHOUT:
			case ZONE:
			case OF:
			case UESCAPE:
			case GROUPS:
			case RECURSIVE:
			case INT:
			case INT2:
			case INT4:
			case FLOAT:
			case FLOAT4:
			case VARCHAR:
			case BYTEA:
			case ENUM:
			case POINT:
			case LSEG:
			case BOX:
			case PATH:
			case POLYGON:
			case CIRCLE:
			case INET:
			case BIT:
			case TSQUERY:
			case XML:
			case JSON:
			case INT4RANGE:
			case INT8RANGE:
			case NUMRANGE:
			case DATERANGE:
			case TABLESAMPLE:
			case ORDINALITY:
			case CURRENT_SCHEMA:
			case OVERLAY:
			case XMLCONCAT:
			case XMLELEMENT:
			case XMLEXISTS:
			case XMLFOREST:
			case XMLPARSE:
			case XMLPI:
			case XMLROOT:
			case XMLSERIALIZE:
			case TREAT:
			case SETOF:
			case NFC:
			case NFD:
			case NFKC:
			case NFKD:
			case XMLATTRIBUTES:
			case REF:
			case PASSING:
			case VERSION:
			case YES:
			case STANDALONE:
			case GREATEST:
			case LEAST:
			case MATERIALIZED:
			case OPERATOR:
			case SHARE:
			case ROLLUP:
			case ILIKE:
			case SIMILAR:
			case ISNULL:
			case NOTNULL:
			case DOCUMENT:
			case NORMALIZED:
			case NOWAIT:
			case LOCKED:
			case XMLTABLE:
			case COLUMNS:
			case CONTENT:
			case STRIP:
			case WHITESPACE:
			case XMLNAMESPACES:
			case NONE:
			case CONFLICT:
			case OVERRIDING:
			case SYSTEM:
			case ABORT:
			case ABSOLUTE:
			case ACCESS:
			case AFTER:
			case AGGREGATE:
			case ALSO:
			case ATTACH:
			case ATTRIBUTE:
			case BACKWARD:
			case BEFORE:
			case ASSERTION:
			case ASSIGNMENT:
			case CONTINUE:
			case CONVERSION:
			case COPY:
			case COST:
			case CSV:
			case CALLED:
			case CATALOG:
			case CHAIN:
			case CHECKPOINT:
			case CLASS:
			case CONFIGURATION:
			case COMMENT:
			case DETACH:
			case DICTIONARY:
			case EXPRESSION:
			case INSENSITIVE:
			case DISCARD:
			case OFF:
			case INSTEAD:
			case EXPLAIN:
			case INPUT:
			case INLINE:
			case PARALLEL:
			case LEAKPROOF:
			case COMMITTED:
			case ENCODING:
			case IMPLICIT:
			case DELIMITER:
			case CURSOR:
			case EACH:
			case EVENT:
			case DEALLOCATE:
			case CONNECTION:
			case DECLARE:
			case FAMILY:
			case FORWARD:
			case EXCLUSIVE:
			case FUNCTIONS:
			case LOCATION:
			case LABEL:
			case DELIMITERS:
			case HANDLER:
			case HEADER:
			case IMMUTABLE:
			case GRANTED:
			case HOLD:
			case MAPPING:
			case OLD:
			case METHOD:
			case LOAD:
			case LISTEN:
			case MODE:
			case MOVE:
			case PROCEDURAL:
			case PARSER:
			case PROCEDURES:
			case ENCRYPTED:
			case PUBLICATION:
			case PROGRAM:
			case REFERENCING:
			case PLANS:
			case REINDEX:
			case PRIOR:
			case PASSWORD:
			case RELATIVE:
			case QUOTE:
			case ROUTINES:
			case REPLACE:
			case SNAPSHOT:
			case REFRESH:
			case PREPARE:
			case OPTIONS:
			case IMPORT:
			case INVOKER:
			case NEW:
			case PREPARED:
			case SCROLL:
			case SEQUENCES:
			case SYSID:
			case REASSIGN:
			case SERVER:
			case SUBSCRIPTION:
			case SEARCH:
			case SCHEMAS:
			case RECHECK:
			case POLICY:
			case NOTIFY:
			case LOCK:
			case RELEASE:
			case SERIALIZABLE:
			case RETURNS:
			case STATEMENT:
			case STDIN:
			case STDOUT:
			case TABLES:
			case SUPPORT:
			case STABLE:
			case TEMPLATE:
			case UNENCRYPTED:
			case VIEWS:
			case UNCOMMITTED:
			case TRANSFORM:
			case UNLISTEN:
			case TRUSTED:
			case VALIDATOR:
			case UNTIL:
			case VACUUM:
			case VOLATILE:
			case STORED:
			case WRITE:
			case STRICT:
			case TYPES:
			case WRAPPER:
			case WORK:
			case FREEZE:
			case AUTHORIZATION:
			case VERBOSE:
			case OUT:
			case INOUT:
			case INT16:
			case INT1:
			case ELEM_CONTAINED_BY_RANGE:
			case IDENTIFIER_:
				enterOuterAlt(_localctx, 4);
				{
				setState(4808);
				nonReservedWord();
				}
				break;
			case STRING_:
				enterOuterAlt(_localctx, 5);
				{
				setState(4809);
				match(STRING_);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class NonReservedWordContext extends ParserRuleContext {
		public IdentifierContext identifier() {
			return getRuleContext(IdentifierContext.class,0);
		}
		public UnreservedWordContext unreservedWord() {
			return getRuleContext(UnreservedWordContext.class,0);
		}
		public ColNameKeywordContext colNameKeyword() {
			return getRuleContext(ColNameKeywordContext.class,0);
		}
		public TypeFuncNameKeywordContext typeFuncNameKeyword() {
			return getRuleContext(TypeFuncNameKeywordContext.class,0);
		}
		public NonReservedWordContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_nonReservedWord; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitNonReservedWord(this);
			else return visitor.visitChildren(this);
		}
	}

	public final NonReservedWordContext nonReservedWord() throws RecognitionException {
		NonReservedWordContext _localctx = new NonReservedWordContext(_ctx, getState());
		enterRule(_localctx, 564, RULE_nonReservedWord);
		try {
			setState(4816);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,348,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(4812);
				identifier();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(4813);
				unreservedWord();
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(4814);
				colNameKeyword();
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(4815);
				typeFuncNameKeyword();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ColNameKeywordContext extends ParserRuleContext {
		public TerminalNode BETWEEN() { return getToken(OpenGaussStatementParser.BETWEEN, 0); }
		public TerminalNode BIGINT() { return getToken(OpenGaussStatementParser.BIGINT, 0); }
		public TerminalNode BIT() { return getToken(OpenGaussStatementParser.BIT, 0); }
		public TerminalNode BOOLEAN() { return getToken(OpenGaussStatementParser.BOOLEAN, 0); }
		public TerminalNode CHAR() { return getToken(OpenGaussStatementParser.CHAR, 0); }
		public TerminalNode CHARACTER() { return getToken(OpenGaussStatementParser.CHARACTER, 0); }
		public TerminalNode COALESCE() { return getToken(OpenGaussStatementParser.COALESCE, 0); }
		public TerminalNode DEC() { return getToken(OpenGaussStatementParser.DEC, 0); }
		public TerminalNode DECIMAL() { return getToken(OpenGaussStatementParser.DECIMAL, 0); }
		public TerminalNode EXISTS() { return getToken(OpenGaussStatementParser.EXISTS, 0); }
		public TerminalNode EXTRACT() { return getToken(OpenGaussStatementParser.EXTRACT, 0); }
		public TerminalNode FLOAT() { return getToken(OpenGaussStatementParser.FLOAT, 0); }
		public TerminalNode GREATEST() { return getToken(OpenGaussStatementParser.GREATEST, 0); }
		public TerminalNode GROUPING() { return getToken(OpenGaussStatementParser.GROUPING, 0); }
		public TerminalNode INOUT() { return getToken(OpenGaussStatementParser.INOUT, 0); }
		public TerminalNode INT() { return getToken(OpenGaussStatementParser.INT, 0); }
		public TerminalNode INTEGER() { return getToken(OpenGaussStatementParser.INTEGER, 0); }
		public TerminalNode INTERVAL() { return getToken(OpenGaussStatementParser.INTERVAL, 0); }
		public TerminalNode LEAST() { return getToken(OpenGaussStatementParser.LEAST, 0); }
		public TerminalNode NATIONAL() { return getToken(OpenGaussStatementParser.NATIONAL, 0); }
		public TerminalNode NCHAR() { return getToken(OpenGaussStatementParser.NCHAR, 0); }
		public TerminalNode NONE() { return getToken(OpenGaussStatementParser.NONE, 0); }
		public TerminalNode NULLIF() { return getToken(OpenGaussStatementParser.NULLIF, 0); }
		public TerminalNode NUMERIC() { return getToken(OpenGaussStatementParser.NUMERIC, 0); }
		public TerminalNode OUT() { return getToken(OpenGaussStatementParser.OUT, 0); }
		public TerminalNode OVERLAY() { return getToken(OpenGaussStatementParser.OVERLAY, 0); }
		public TerminalNode POSITION() { return getToken(OpenGaussStatementParser.POSITION, 0); }
		public TerminalNode PRECISION() { return getToken(OpenGaussStatementParser.PRECISION, 0); }
		public TerminalNode REAL() { return getToken(OpenGaussStatementParser.REAL, 0); }
		public TerminalNode ROW() { return getToken(OpenGaussStatementParser.ROW, 0); }
		public TerminalNode SETOF() { return getToken(OpenGaussStatementParser.SETOF, 0); }
		public TerminalNode SMALLINT() { return getToken(OpenGaussStatementParser.SMALLINT, 0); }
		public TerminalNode SUBSTRING() { return getToken(OpenGaussStatementParser.SUBSTRING, 0); }
		public TerminalNode TIME() { return getToken(OpenGaussStatementParser.TIME, 0); }
		public TerminalNode TIMESTAMP() { return getToken(OpenGaussStatementParser.TIMESTAMP, 0); }
		public TerminalNode TREAT() { return getToken(OpenGaussStatementParser.TREAT, 0); }
		public TerminalNode TRIM() { return getToken(OpenGaussStatementParser.TRIM, 0); }
		public TerminalNode VALUES() { return getToken(OpenGaussStatementParser.VALUES, 0); }
		public TerminalNode VARCHAR() { return getToken(OpenGaussStatementParser.VARCHAR, 0); }
		public TerminalNode XMLATTRIBUTES() { return getToken(OpenGaussStatementParser.XMLATTRIBUTES, 0); }
		public TerminalNode XMLCONCAT() { return getToken(OpenGaussStatementParser.XMLCONCAT, 0); }
		public TerminalNode XMLELEMENT() { return getToken(OpenGaussStatementParser.XMLELEMENT, 0); }
		public TerminalNode XMLEXISTS() { return getToken(OpenGaussStatementParser.XMLEXISTS, 0); }
		public TerminalNode XMLFOREST() { return getToken(OpenGaussStatementParser.XMLFOREST, 0); }
		public TerminalNode XMLNAMESPACES() { return getToken(OpenGaussStatementParser.XMLNAMESPACES, 0); }
		public TerminalNode XMLPARSE() { return getToken(OpenGaussStatementParser.XMLPARSE, 0); }
		public TerminalNode XMLPI() { return getToken(OpenGaussStatementParser.XMLPI, 0); }
		public TerminalNode XMLROOT() { return getToken(OpenGaussStatementParser.XMLROOT, 0); }
		public TerminalNode XMLSERIALIZE() { return getToken(OpenGaussStatementParser.XMLSERIALIZE, 0); }
		public TerminalNode XMLTABLE() { return getToken(OpenGaussStatementParser.XMLTABLE, 0); }
		public ColNameKeywordContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_colNameKeyword; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitColNameKeyword(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ColNameKeywordContext colNameKeyword() throws RecognitionException {
		ColNameKeywordContext _localctx = new ColNameKeywordContext(_ctx, getState());
		enterRule(_localctx, 566, RULE_colNameKeyword);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4818);
			_la = _input.LA(1);
			if ( !(((((_la - 101)) & ~0x3f) == 0 && ((1L << (_la - 101)) & ((1L << (POSITION - 101)) | (1L << (PRECISION - 101)) | (1L << (VALUES - 101)) | (1L << (TRIM - 101)) | (1L << (SUBSTRING - 101)) | (1L << (EXISTS - 101)) | (1L << (BETWEEN - 101)) | (1L << (BOOLEAN - 101)) | (1L << (CHAR - 101)) | (1L << (CHARACTER - 101)))) != 0) || ((((_la - 166)) & ~0x3f) == 0 && ((1L << (_la - 166)) & ((1L << (INTERVAL - 166)) | (1L << (TIME - 166)) | (1L << (TIMESTAMP - 166)) | (1L << (INTEGER - 166)) | (1L << (REAL - 166)) | (1L << (DECIMAL - 166)) | (1L << (SMALLINT - 166)) | (1L << (BIGINT - 166)) | (1L << (NUMERIC - 166)) | (1L << (NULLIF - 166)) | (1L << (NATIONAL - 166)) | (1L << (NCHAR - 166)) | (1L << (COALESCE - 166)) | (1L << (GROUPING - 166)))) != 0) || ((((_la - 235)) & ~0x3f) == 0 && ((1L << (_la - 235)) & ((1L << (DEC - 235)) | (1L << (ROW - 235)) | (1L << (EXTRACT - 235)))) != 0) || ((((_la - 352)) & ~0x3f) == 0 && ((1L << (_la - 352)) & ((1L << (INT - 352)) | (1L << (FLOAT - 352)) | (1L << (VARCHAR - 352)) | (1L << (BIT - 352)) | (1L << (OVERLAY - 352)) | (1L << (XMLCONCAT - 352)) | (1L << (XMLELEMENT - 352)) | (1L << (XMLEXISTS - 352)) | (1L << (XMLFOREST - 352)) | (1L << (XMLPARSE - 352)) | (1L << (XMLPI - 352)) | (1L << (XMLROOT - 352)) | (1L << (XMLSERIALIZE - 352)) | (1L << (TREAT - 352)) | (1L << (SETOF - 352)) | (1L << (XMLATTRIBUTES - 352)) | (1L << (GREATEST - 352)))) != 0) || ((((_la - 416)) & ~0x3f) == 0 && ((1L << (_la - 416)) & ((1L << (LEAST - 416)) | (1L << (XMLTABLE - 416)) | (1L << (XMLNAMESPACES - 416)) | (1L << (NONE - 416)))) != 0) || _la==OUT || _la==INOUT) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DatabaseNameContext extends ParserRuleContext {
		public ColIdContext colId() {
			return getRuleContext(ColIdContext.class,0);
		}
		public DatabaseNameContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_databaseName; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitDatabaseName(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DatabaseNameContext databaseName() throws RecognitionException {
		DatabaseNameContext _localctx = new DatabaseNameContext(_ctx, getState());
		enterRule(_localctx, 568, RULE_databaseName);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4820);
			colId();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class RoleSpecContext extends ParserRuleContext {
		public IdentifierContext identifier() {
			return getRuleContext(IdentifierContext.class,0);
		}
		public NonReservedWordContext nonReservedWord() {
			return getRuleContext(NonReservedWordContext.class,0);
		}
		public TerminalNode CURRENT_USER() { return getToken(OpenGaussStatementParser.CURRENT_USER, 0); }
		public TerminalNode SESSION_USER() { return getToken(OpenGaussStatementParser.SESSION_USER, 0); }
		public RoleSpecContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_roleSpec; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitRoleSpec(this);
			else return visitor.visitChildren(this);
		}
	}

	public final RoleSpecContext roleSpec() throws RecognitionException {
		RoleSpecContext _localctx = new RoleSpecContext(_ctx, getState());
		enterRule(_localctx, 570, RULE_roleSpec);
		try {
			setState(4826);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,349,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(4822);
				identifier();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(4823);
				nonReservedWord();
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(4824);
				match(CURRENT_USER);
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(4825);
				match(SESSION_USER);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class VarNameContext extends ParserRuleContext {
		public ColIdContext colId() {
			return getRuleContext(ColIdContext.class,0);
		}
		public VarNameContext varName() {
			return getRuleContext(VarNameContext.class,0);
		}
		public TerminalNode DOT_() { return getToken(OpenGaussStatementParser.DOT_, 0); }
		public VarNameContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_varName; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitVarName(this);
			else return visitor.visitChildren(this);
		}
	}

	public final VarNameContext varName() throws RecognitionException {
		return varName(0);
	}

	private VarNameContext varName(int _p) throws RecognitionException {
		ParserRuleContext _parentctx = _ctx;
		int _parentState = getState();
		VarNameContext _localctx = new VarNameContext(_ctx, _parentState);
		VarNameContext _prevctx = _localctx;
		int _startState = 572;
		enterRecursionRule(_localctx, 572, RULE_varName, _p);
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			{
			setState(4829);
			colId();
			}
			_ctx.stop = _input.LT(-1);
			setState(4836);
			_errHandler.sync(this);
			_alt = getInterpreter().adaptivePredict(_input,350,_ctx);
			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
				if ( _alt==1 ) {
					if ( _parseListeners!=null ) triggerExitRuleEvent();
					_prevctx = _localctx;
					{
					{
					_localctx = new VarNameContext(_parentctx, _parentState);
					pushNewRecursionContext(_localctx, _startState, RULE_varName);
					setState(4831);
					if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)");
					setState(4832);
					match(DOT_);
					setState(4833);
					colId();
					}
					} 
				}
				setState(4838);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,350,_ctx);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			unrollRecursionContexts(_parentctx);
		}
		return _localctx;
	}

	public static class VarListContext extends ParserRuleContext {
		public List varValue() {
			return getRuleContexts(VarValueContext.class);
		}
		public VarValueContext varValue(int i) {
			return getRuleContext(VarValueContext.class,i);
		}
		public List COMMA_() { return getTokens(OpenGaussStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(OpenGaussStatementParser.COMMA_, i);
		}
		public VarListContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_varList; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitVarList(this);
			else return visitor.visitChildren(this);
		}
	}

	public final VarListContext varList() throws RecognitionException {
		VarListContext _localctx = new VarListContext(_ctx, getState());
		enterRule(_localctx, 574, RULE_varList);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4839);
			varValue();
			setState(4844);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA_) {
				{
				{
				setState(4840);
				match(COMMA_);
				setState(4841);
				varValue();
				}
				}
				setState(4846);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class VarValueContext extends ParserRuleContext {
		public BooleanOrStringContext booleanOrString() {
			return getRuleContext(BooleanOrStringContext.class,0);
		}
		public NumericOnlyContext numericOnly() {
			return getRuleContext(NumericOnlyContext.class,0);
		}
		public VarValueContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_varValue; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitVarValue(this);
			else return visitor.visitChildren(this);
		}
	}

	public final VarValueContext varValue() throws RecognitionException {
		VarValueContext _localctx = new VarValueContext(_ctx, getState());
		enterRule(_localctx, 576, RULE_varValue);
		try {
			setState(4849);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case UNICODE_ESCAPE:
			case INSERT:
			case UPDATE:
			case DELETE:
			case ALTER:
			case DROP:
			case TRUNCATE:
			case SCHEMA:
			case REVOKE:
			case ADD:
			case SET:
			case INDEX:
			case KEY:
			case POSITION:
			case PRECISION:
			case FUNCTION:
			case TRIGGER:
			case PROCEDURE:
			case VIEW:
			case VALUES:
			case TRIM:
			case SUBSTRING:
			case NATURAL:
			case JOIN:
			case FULL:
			case INNER:
			case OUTER:
			case LEFT:
			case RIGHT:
			case CROSS:
			case ON:
			case IF:
			case IS:
			case TRUE:
			case FALSE:
			case EXISTS:
			case BETWEEN:
			case LIKE:
			case BY:
			case BEGIN:
			case COMMIT:
			case ROLLBACK:
			case SAVEPOINT:
			case BOOLEAN:
			case DOUBLE:
			case CHAR:
			case CHARACTER:
			case INTERVAL:
			case TIME:
			case TIMESTAMP:
			case YEAR:
			case MONTH:
			case DAY:
			case HOUR:
			case MINUTE:
			case SECOND:
			case CURRENT:
			case ENABLE:
			case DISABLE:
			case CALL:
			case PRESERVE:
			case DEFINER:
			case SQL:
			case CASCADED:
			case LOCAL:
			case CLOSE:
			case NEXT:
			case NAME:
			case COLLATION:
			case NAMES:
			case INTEGER:
			case REAL:
			case DECIMAL:
			case TYPE:
			case SMALLINT:
			case BIGINT:
			case NUMERIC:
			case TEXT:
			case REPEATABLE:
			case NULLIF:
			case VARYING:
			case NATIONAL:
			case NCHAR:
			case VALUE:
			case COALESCE:
			case TIES:
			case CUBE:
			case GROUPING:
			case SETS:
			case OTHERS:
			case OVERLAPS:
			case AT:
			case DEC:
			case MAXVALUE:
			case ADMIN:
			case BINARY:
			case ESCAPE:
			case EXCLUDE:
			case MOD:
			case PARTITION:
			case ROW:
			case UNKNOWN:
			case ALWAYS:
			case CASCADE:
			case GENERATED:
			case ISOLATION:
			case LEVEL:
			case NO:
			case OPTION:
			case PRIVILEGES:
			case READ:
			case ROLE:
			case ROWS:
			case START:
			case TRANSACTION:
			case ACTION:
			case CACHE:
			case CHARACTERISTICS:
			case CLUSTER:
			case COMMENTS:
			case CONCURRENTLY:
			case CONSTRAINTS:
			case CYCLE:
			case DATA:
			case DATABASE:
			case DEFAULTS:
			case DEFERRED:
			case DEPENDS:
			case DOMAIN:
			case EXCLUDING:
			case EXECUTE:
			case EXTENDED:
			case EXTENSION:
			case EXTERNAL:
			case EXTRACT:
			case FILTER:
			case FIRST:
			case FOLLOWING:
			case FORCE:
			case GLOBAL:
			case IDENTITY:
			case IMMEDIATE:
			case INCLUDING:
			case INCREMENT:
			case INDEXES:
			case INHERIT:
			case INHERITS:
			case INCLUDE:
			case LANGUAGE:
			case LARGE:
			case LAST:
			case LOGGED:
			case MAIN:
			case MATCH:
			case MINVALUE:
			case NOTHING:
			case NULLS:
			case OBJECT:
			case OIDS:
			case OVER:
			case OWNED:
			case OWNER:
			case PARTIAL:
			case PLAIN:
			case PRECEDING:
			case RANGE:
			case RENAME:
			case REPLICA:
			case RESET:
			case RESTART:
			case RESTRICT:
			case ROUTINE:
			case RULE:
			case SECURITY:
			case SEQUENCE:
			case SESSION:
			case SHOW:
			case SIMPLE:
			case STATISTICS:
			case STORAGE:
			case TABLESPACE:
			case TEMP:
			case TEMPORARY:
			case UNBOUNDED:
			case UNLOGGED:
			case VALID:
			case VALIDATE:
			case WITHIN:
			case WITHOUT:
			case ZONE:
			case OF:
			case UESCAPE:
			case GROUPS:
			case RECURSIVE:
			case INT:
			case INT2:
			case INT4:
			case FLOAT:
			case FLOAT4:
			case VARCHAR:
			case BYTEA:
			case ENUM:
			case POINT:
			case LSEG:
			case BOX:
			case PATH:
			case POLYGON:
			case CIRCLE:
			case INET:
			case BIT:
			case TSQUERY:
			case XML:
			case JSON:
			case INT4RANGE:
			case INT8RANGE:
			case NUMRANGE:
			case DATERANGE:
			case TABLESAMPLE:
			case ORDINALITY:
			case CURRENT_SCHEMA:
			case OVERLAY:
			case XMLCONCAT:
			case XMLELEMENT:
			case XMLEXISTS:
			case XMLFOREST:
			case XMLPARSE:
			case XMLPI:
			case XMLROOT:
			case XMLSERIALIZE:
			case TREAT:
			case SETOF:
			case NFC:
			case NFD:
			case NFKC:
			case NFKD:
			case XMLATTRIBUTES:
			case REF:
			case PASSING:
			case VERSION:
			case YES:
			case STANDALONE:
			case GREATEST:
			case LEAST:
			case MATERIALIZED:
			case OPERATOR:
			case SHARE:
			case ROLLUP:
			case ILIKE:
			case SIMILAR:
			case ISNULL:
			case NOTNULL:
			case DOCUMENT:
			case NORMALIZED:
			case NOWAIT:
			case LOCKED:
			case XMLTABLE:
			case COLUMNS:
			case CONTENT:
			case STRIP:
			case WHITESPACE:
			case XMLNAMESPACES:
			case NONE:
			case CONFLICT:
			case OVERRIDING:
			case SYSTEM:
			case ABORT:
			case ABSOLUTE:
			case ACCESS:
			case AFTER:
			case AGGREGATE:
			case ALSO:
			case ATTACH:
			case ATTRIBUTE:
			case BACKWARD:
			case BEFORE:
			case ASSERTION:
			case ASSIGNMENT:
			case CONTINUE:
			case CONVERSION:
			case COPY:
			case COST:
			case CSV:
			case CALLED:
			case CATALOG:
			case CHAIN:
			case CHECKPOINT:
			case CLASS:
			case CONFIGURATION:
			case COMMENT:
			case DETACH:
			case DICTIONARY:
			case EXPRESSION:
			case INSENSITIVE:
			case DISCARD:
			case OFF:
			case INSTEAD:
			case EXPLAIN:
			case INPUT:
			case INLINE:
			case PARALLEL:
			case LEAKPROOF:
			case COMMITTED:
			case ENCODING:
			case IMPLICIT:
			case DELIMITER:
			case CURSOR:
			case EACH:
			case EVENT:
			case DEALLOCATE:
			case CONNECTION:
			case DECLARE:
			case FAMILY:
			case FORWARD:
			case EXCLUSIVE:
			case FUNCTIONS:
			case LOCATION:
			case LABEL:
			case DELIMITERS:
			case HANDLER:
			case HEADER:
			case IMMUTABLE:
			case GRANTED:
			case HOLD:
			case MAPPING:
			case OLD:
			case METHOD:
			case LOAD:
			case LISTEN:
			case MODE:
			case MOVE:
			case PROCEDURAL:
			case PARSER:
			case PROCEDURES:
			case ENCRYPTED:
			case PUBLICATION:
			case PROGRAM:
			case REFERENCING:
			case PLANS:
			case REINDEX:
			case PRIOR:
			case PASSWORD:
			case RELATIVE:
			case QUOTE:
			case ROUTINES:
			case REPLACE:
			case SNAPSHOT:
			case REFRESH:
			case PREPARE:
			case OPTIONS:
			case IMPORT:
			case INVOKER:
			case NEW:
			case PREPARED:
			case SCROLL:
			case SEQUENCES:
			case SYSID:
			case REASSIGN:
			case SERVER:
			case SUBSCRIPTION:
			case SEARCH:
			case SCHEMAS:
			case RECHECK:
			case POLICY:
			case NOTIFY:
			case LOCK:
			case RELEASE:
			case SERIALIZABLE:
			case RETURNS:
			case STATEMENT:
			case STDIN:
			case STDOUT:
			case TABLES:
			case SUPPORT:
			case STABLE:
			case TEMPLATE:
			case UNENCRYPTED:
			case VIEWS:
			case UNCOMMITTED:
			case TRANSFORM:
			case UNLISTEN:
			case TRUSTED:
			case VALIDATOR:
			case UNTIL:
			case VACUUM:
			case VOLATILE:
			case STORED:
			case WRITE:
			case STRICT:
			case TYPES:
			case WRAPPER:
			case WORK:
			case FREEZE:
			case AUTHORIZATION:
			case VERBOSE:
			case OUT:
			case INOUT:
			case INT16:
			case INT1:
			case ELEM_CONTAINED_BY_RANGE:
			case IDENTIFIER_:
			case STRING_:
				enterOuterAlt(_localctx, 1);
				{
				setState(4847);
				booleanOrString();
				}
				break;
			case PLUS_:
			case MINUS_:
			case NUMBER_:
				enterOuterAlt(_localctx, 2);
				{
				setState(4848);
				numericOnly();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ZoneValueContext extends ParserRuleContext {
		public TerminalNode STRING_() { return getToken(OpenGaussStatementParser.STRING_, 0); }
		public IdentifierContext identifier() {
			return getRuleContext(IdentifierContext.class,0);
		}
		public TerminalNode INTERVAL() { return getToken(OpenGaussStatementParser.INTERVAL, 0); }
		public OptIntervalContext optInterval() {
			return getRuleContext(OptIntervalContext.class,0);
		}
		public TerminalNode LP_() { return getToken(OpenGaussStatementParser.LP_, 0); }
		public TerminalNode NUMBER_() { return getToken(OpenGaussStatementParser.NUMBER_, 0); }
		public TerminalNode RP_() { return getToken(OpenGaussStatementParser.RP_, 0); }
		public NumericOnlyContext numericOnly() {
			return getRuleContext(NumericOnlyContext.class,0);
		}
		public TerminalNode DEFAULT() { return getToken(OpenGaussStatementParser.DEFAULT, 0); }
		public TerminalNode LOCAL() { return getToken(OpenGaussStatementParser.LOCAL, 0); }
		public ZoneValueContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_zoneValue; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitZoneValue(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ZoneValueContext zoneValue() throws RecognitionException {
		ZoneValueContext _localctx = new ZoneValueContext(_ctx, getState());
		enterRule(_localctx, 578, RULE_zoneValue);
		try {
			setState(4864);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,353,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(4851);
				match(STRING_);
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(4852);
				identifier();
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(4853);
				match(INTERVAL);
				setState(4854);
				match(STRING_);
				setState(4855);
				optInterval();
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(4856);
				match(INTERVAL);
				setState(4857);
				match(LP_);
				setState(4858);
				match(NUMBER_);
				setState(4859);
				match(RP_);
				setState(4860);
				match(STRING_);
				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(4861);
				numericOnly();
				}
				break;
			case 6:
				enterOuterAlt(_localctx, 6);
				{
				setState(4862);
				match(DEFAULT);
				}
				break;
			case 7:
				enterOuterAlt(_localctx, 7);
				{
				setState(4863);
				match(LOCAL);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class NumericOnlyContext extends ParserRuleContext {
		public TerminalNode NUMBER_() { return getToken(OpenGaussStatementParser.NUMBER_, 0); }
		public TerminalNode PLUS_() { return getToken(OpenGaussStatementParser.PLUS_, 0); }
		public TerminalNode MINUS_() { return getToken(OpenGaussStatementParser.MINUS_, 0); }
		public NumericOnlyContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_numericOnly; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitNumericOnly(this);
			else return visitor.visitChildren(this);
		}
	}

	public final NumericOnlyContext numericOnly() throws RecognitionException {
		NumericOnlyContext _localctx = new NumericOnlyContext(_ctx, getState());
		enterRule(_localctx, 580, RULE_numericOnly);
		try {
			setState(4871);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case NUMBER_:
				enterOuterAlt(_localctx, 1);
				{
				setState(4866);
				match(NUMBER_);
				}
				break;
			case PLUS_:
				enterOuterAlt(_localctx, 2);
				{
				setState(4867);
				match(PLUS_);
				setState(4868);
				match(NUMBER_);
				}
				break;
			case MINUS_:
				enterOuterAlt(_localctx, 3);
				{
				setState(4869);
				match(MINUS_);
				setState(4870);
				match(NUMBER_);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class IsoLevelContext extends ParserRuleContext {
		public TerminalNode READ() { return getToken(OpenGaussStatementParser.READ, 0); }
		public TerminalNode UNCOMMITTED() { return getToken(OpenGaussStatementParser.UNCOMMITTED, 0); }
		public TerminalNode COMMITTED() { return getToken(OpenGaussStatementParser.COMMITTED, 0); }
		public TerminalNode REPEATABLE() { return getToken(OpenGaussStatementParser.REPEATABLE, 0); }
		public TerminalNode SERIALIZABLE() { return getToken(OpenGaussStatementParser.SERIALIZABLE, 0); }
		public IsoLevelContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_isoLevel; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitIsoLevel(this);
			else return visitor.visitChildren(this);
		}
	}

	public final IsoLevelContext isoLevel() throws RecognitionException {
		IsoLevelContext _localctx = new IsoLevelContext(_ctx, getState());
		enterRule(_localctx, 582, RULE_isoLevel);
		try {
			setState(4880);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,355,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(4873);
				match(READ);
				setState(4874);
				match(UNCOMMITTED);
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(4875);
				match(READ);
				setState(4876);
				match(COMMITTED);
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(4877);
				match(REPEATABLE);
				setState(4878);
				match(READ);
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(4879);
				match(SERIALIZABLE);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ColumnDefContext extends ParserRuleContext {
		public ColIdContext colId() {
			return getRuleContext(ColIdContext.class,0);
		}
		public TypeNameContext typeName() {
			return getRuleContext(TypeNameContext.class,0);
		}
		public ColQualListContext colQualList() {
			return getRuleContext(ColQualListContext.class,0);
		}
		public CreateGenericOptionsContext createGenericOptions() {
			return getRuleContext(CreateGenericOptionsContext.class,0);
		}
		public ColumnDefContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_columnDef; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitColumnDef(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ColumnDefContext columnDef() throws RecognitionException {
		ColumnDefContext _localctx = new ColumnDefContext(_ctx, getState());
		enterRule(_localctx, 584, RULE_columnDef);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4882);
			colId();
			setState(4883);
			typeName();
			setState(4885);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==OPTIONS) {
				{
				setState(4884);
				createGenericOptions();
				}
			}

			setState(4887);
			colQualList();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ColQualListContext extends ParserRuleContext {
		public List colConstraint() {
			return getRuleContexts(ColConstraintContext.class);
		}
		public ColConstraintContext colConstraint(int i) {
			return getRuleContext(ColConstraintContext.class,i);
		}
		public ColQualListContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_colQualList; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitColQualList(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ColQualListContext colQualList() throws RecognitionException {
		ColQualListContext _localctx = new ColQualListContext(_ctx, getState());
		enterRule(_localctx, 586, RULE_colQualList);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4892);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (((((_la - 96)) & ~0x3f) == 0 && ((1L << (_la - 96)) & ((1L << (CONSTRAINT - 96)) | (1L << (PRIMARY - 96)) | (1L << (UNIQUE - 96)) | (1L << (NOT - 96)) | (1L << (NULL - 96)))) != 0) || _la==DEFAULT || ((((_la - 251)) & ~0x3f) == 0 && ((1L << (_la - 251)) & ((1L << (CHECK - 251)) | (1L << (GENERATED - 251)) | (1L << (REFERENCES - 251)) | (1L << (COLLATE - 251)) | (1L << (DEFERRABLE - 251)) | (1L << (INITIALLY - 251)))) != 0)) {
				{
				{
				setState(4889);
				colConstraint();
				}
				}
				setState(4894);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ColConstraintContext extends ParserRuleContext {
		public TerminalNode CONSTRAINT() { return getToken(OpenGaussStatementParser.CONSTRAINT, 0); }
		public NameContext name() {
			return getRuleContext(NameContext.class,0);
		}
		public ColConstraintElemContext colConstraintElem() {
			return getRuleContext(ColConstraintElemContext.class,0);
		}
		public ConstraintAttrContext constraintAttr() {
			return getRuleContext(ConstraintAttrContext.class,0);
		}
		public TerminalNode COLLATE() { return getToken(OpenGaussStatementParser.COLLATE, 0); }
		public AnyNameContext anyName() {
			return getRuleContext(AnyNameContext.class,0);
		}
		public ColConstraintContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_colConstraint; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitColConstraint(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ColConstraintContext colConstraint() throws RecognitionException {
		ColConstraintContext _localctx = new ColConstraintContext(_ctx, getState());
		enterRule(_localctx, 588, RULE_colConstraint);
		try {
			setState(4903);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,358,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(4895);
				match(CONSTRAINT);
				setState(4896);
				name();
				setState(4897);
				colConstraintElem();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(4899);
				colConstraintElem();
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(4900);
				constraintAttr();
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(4901);
				match(COLLATE);
				setState(4902);
				anyName();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ConstraintAttrContext extends ParserRuleContext {
		public TerminalNode DEFERRABLE() { return getToken(OpenGaussStatementParser.DEFERRABLE, 0); }
		public TerminalNode NOT() { return getToken(OpenGaussStatementParser.NOT, 0); }
		public TerminalNode INITIALLY() { return getToken(OpenGaussStatementParser.INITIALLY, 0); }
		public TerminalNode DEFERRED() { return getToken(OpenGaussStatementParser.DEFERRED, 0); }
		public TerminalNode IMMEDIATE() { return getToken(OpenGaussStatementParser.IMMEDIATE, 0); }
		public ConstraintAttrContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_constraintAttr; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitConstraintAttr(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ConstraintAttrContext constraintAttr() throws RecognitionException {
		ConstraintAttrContext _localctx = new ConstraintAttrContext(_ctx, getState());
		enterRule(_localctx, 590, RULE_constraintAttr);
		try {
			setState(4912);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,359,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(4905);
				match(DEFERRABLE);
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(4906);
				match(NOT);
				setState(4907);
				match(DEFERRABLE);
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(4908);
				match(INITIALLY);
				setState(4909);
				match(DEFERRED);
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(4910);
				match(INITIALLY);
				setState(4911);
				match(IMMEDIATE);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ColConstraintElemContext extends ParserRuleContext {
		public TerminalNode NOT() { return getToken(OpenGaussStatementParser.NOT, 0); }
		public TerminalNode NULL() { return getToken(OpenGaussStatementParser.NULL, 0); }
		public TerminalNode UNIQUE() { return getToken(OpenGaussStatementParser.UNIQUE, 0); }
		public ConsTableSpaceContext consTableSpace() {
			return getRuleContext(ConsTableSpaceContext.class,0);
		}
		public TerminalNode WITH() { return getToken(OpenGaussStatementParser.WITH, 0); }
		public DefinitionContext definition() {
			return getRuleContext(DefinitionContext.class,0);
		}
		public TerminalNode PRIMARY() { return getToken(OpenGaussStatementParser.PRIMARY, 0); }
		public TerminalNode KEY() { return getToken(OpenGaussStatementParser.KEY, 0); }
		public TerminalNode CHECK() { return getToken(OpenGaussStatementParser.CHECK, 0); }
		public TerminalNode LP_() { return getToken(OpenGaussStatementParser.LP_, 0); }
		public AExprContext aExpr() {
			return getRuleContext(AExprContext.class,0);
		}
		public TerminalNode RP_() { return getToken(OpenGaussStatementParser.RP_, 0); }
		public NoInheritContext noInherit() {
			return getRuleContext(NoInheritContext.class,0);
		}
		public TerminalNode DEFAULT() { return getToken(OpenGaussStatementParser.DEFAULT, 0); }
		public BExprContext bExpr() {
			return getRuleContext(BExprContext.class,0);
		}
		public TerminalNode GENERATED() { return getToken(OpenGaussStatementParser.GENERATED, 0); }
		public GeneratedWhenContext generatedWhen() {
			return getRuleContext(GeneratedWhenContext.class,0);
		}
		public TerminalNode AS() { return getToken(OpenGaussStatementParser.AS, 0); }
		public TerminalNode IDENTITY() { return getToken(OpenGaussStatementParser.IDENTITY, 0); }
		public ParenthesizedSeqOptListContext parenthesizedSeqOptList() {
			return getRuleContext(ParenthesizedSeqOptListContext.class,0);
		}
		public TerminalNode STORED() { return getToken(OpenGaussStatementParser.STORED, 0); }
		public TerminalNode REFERENCES() { return getToken(OpenGaussStatementParser.REFERENCES, 0); }
		public QualifiedNameContext qualifiedName() {
			return getRuleContext(QualifiedNameContext.class,0);
		}
		public OptColumnListContext optColumnList() {
			return getRuleContext(OptColumnListContext.class,0);
		}
		public KeyMatchContext keyMatch() {
			return getRuleContext(KeyMatchContext.class,0);
		}
		public KeyActionsContext keyActions() {
			return getRuleContext(KeyActionsContext.class,0);
		}
		public ColConstraintElemContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_colConstraintElem; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitColConstraintElem(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ColConstraintElemContext colConstraintElem() throws RecognitionException {
		ColConstraintElemContext _localctx = new ColConstraintElemContext(_ctx, getState());
		enterRule(_localctx, 592, RULE_colConstraintElem);
		int _la;
		try {
			setState(4965);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,367,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(4914);
				match(NOT);
				setState(4915);
				match(NULL);
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(4916);
				match(NULL);
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(4917);
				match(UNIQUE);
				setState(4920);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==WITH) {
					{
					setState(4918);
					match(WITH);
					setState(4919);
					definition();
					}
				}

				setState(4922);
				consTableSpace();
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(4923);
				match(PRIMARY);
				setState(4924);
				match(KEY);
				setState(4927);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==WITH) {
					{
					setState(4925);
					match(WITH);
					setState(4926);
					definition();
					}
				}

				setState(4929);
				consTableSpace();
				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(4930);
				match(CHECK);
				setState(4931);
				match(LP_);
				setState(4932);
				aExpr(0);
				setState(4933);
				match(RP_);
				setState(4935);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==NO) {
					{
					setState(4934);
					noInherit();
					}
				}

				}
				break;
			case 6:
				enterOuterAlt(_localctx, 6);
				{
				setState(4937);
				match(DEFAULT);
				setState(4938);
				bExpr(0);
				}
				break;
			case 7:
				enterOuterAlt(_localctx, 7);
				{
				setState(4939);
				match(GENERATED);
				setState(4940);
				generatedWhen();
				setState(4941);
				match(AS);
				setState(4942);
				match(IDENTITY);
				setState(4944);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==LP_) {
					{
					setState(4943);
					parenthesizedSeqOptList();
					}
				}

				}
				break;
			case 8:
				enterOuterAlt(_localctx, 8);
				{
				setState(4946);
				match(GENERATED);
				setState(4947);
				generatedWhen();
				setState(4948);
				match(AS);
				setState(4949);
				match(LP_);
				setState(4950);
				aExpr(0);
				setState(4951);
				match(RP_);
				setState(4952);
				match(STORED);
				}
				break;
			case 9:
				enterOuterAlt(_localctx, 9);
				{
				setState(4954);
				match(REFERENCES);
				setState(4955);
				qualifiedName();
				setState(4957);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==LP_) {
					{
					setState(4956);
					optColumnList();
					}
				}

				setState(4960);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==MATCH) {
					{
					setState(4959);
					keyMatch();
					}
				}

				setState(4963);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==ON) {
					{
					setState(4962);
					keyActions();
					}
				}

				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ParenthesizedSeqOptListContext extends ParserRuleContext {
		public TerminalNode LP_() { return getToken(OpenGaussStatementParser.LP_, 0); }
		public SeqOptListContext seqOptList() {
			return getRuleContext(SeqOptListContext.class,0);
		}
		public TerminalNode RP_() { return getToken(OpenGaussStatementParser.RP_, 0); }
		public ParenthesizedSeqOptListContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_parenthesizedSeqOptList; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitParenthesizedSeqOptList(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ParenthesizedSeqOptListContext parenthesizedSeqOptList() throws RecognitionException {
		ParenthesizedSeqOptListContext _localctx = new ParenthesizedSeqOptListContext(_ctx, getState());
		enterRule(_localctx, 594, RULE_parenthesizedSeqOptList);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4967);
			match(LP_);
			setState(4968);
			seqOptList();
			setState(4969);
			match(RP_);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class SeqOptListContext extends ParserRuleContext {
		public List seqOptElem() {
			return getRuleContexts(SeqOptElemContext.class);
		}
		public SeqOptElemContext seqOptElem(int i) {
			return getRuleContext(SeqOptElemContext.class,i);
		}
		public SeqOptListContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_seqOptList; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitSeqOptList(this);
			else return visitor.visitChildren(this);
		}
	}

	public final SeqOptListContext seqOptList() throws RecognitionException {
		SeqOptListContext _localctx = new SeqOptListContext(_ctx, getState());
		enterRule(_localctx, 596, RULE_seqOptList);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4972); 
			_errHandler.sync(this);
			_la = _input.LA(1);
			do {
				{
				{
				setState(4971);
				seqOptElem();
				}
				}
				setState(4974); 
				_errHandler.sync(this);
				_la = _input.LA(1);
			} while ( _la==AS || ((((_la - 239)) & ~0x3f) == 0 && ((1L << (_la - 239)) & ((1L << (MAXVALUE - 239)) | (1L << (NO - 239)) | (1L << (START - 239)) | (1L << (CACHE - 239)) | (1L << (CYCLE - 239)) | (1L << (INCREMENT - 239)))) != 0) || ((((_la - 308)) & ~0x3f) == 0 && ((1L << (_la - 308)) & ((1L << (MINVALUE - 308)) | (1L << (OWNED - 308)) | (1L << (RESTART - 308)) | (1L << (SEQUENCE - 308)))) != 0) );
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class SeqOptElemContext extends ParserRuleContext {
		public TerminalNode AS() { return getToken(OpenGaussStatementParser.AS, 0); }
		public SimpleTypeNameContext simpleTypeName() {
			return getRuleContext(SimpleTypeNameContext.class,0);
		}
		public TerminalNode CACHE() { return getToken(OpenGaussStatementParser.CACHE, 0); }
		public NumericOnlyContext numericOnly() {
			return getRuleContext(NumericOnlyContext.class,0);
		}
		public TerminalNode CYCLE() { return getToken(OpenGaussStatementParser.CYCLE, 0); }
		public TerminalNode NO() { return getToken(OpenGaussStatementParser.NO, 0); }
		public TerminalNode INCREMENT() { return getToken(OpenGaussStatementParser.INCREMENT, 0); }
		public TerminalNode BY() { return getToken(OpenGaussStatementParser.BY, 0); }
		public TerminalNode MAXVALUE() { return getToken(OpenGaussStatementParser.MAXVALUE, 0); }
		public TerminalNode MINVALUE() { return getToken(OpenGaussStatementParser.MINVALUE, 0); }
		public TerminalNode OWNED() { return getToken(OpenGaussStatementParser.OWNED, 0); }
		public AnyNameContext anyName() {
			return getRuleContext(AnyNameContext.class,0);
		}
		public TerminalNode SEQUENCE() { return getToken(OpenGaussStatementParser.SEQUENCE, 0); }
		public TerminalNode NAME() { return getToken(OpenGaussStatementParser.NAME, 0); }
		public TerminalNode START() { return getToken(OpenGaussStatementParser.START, 0); }
		public TerminalNode WITH() { return getToken(OpenGaussStatementParser.WITH, 0); }
		public TerminalNode RESTART() { return getToken(OpenGaussStatementParser.RESTART, 0); }
		public SeqOptElemContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_seqOptElem; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitSeqOptElem(this);
			else return visitor.visitChildren(this);
		}
	}

	public final SeqOptElemContext seqOptElem() throws RecognitionException {
		SeqOptElemContext _localctx = new SeqOptElemContext(_ctx, getState());
		enterRule(_localctx, 598, RULE_seqOptElem);
		int _la;
		try {
			setState(5013);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,372,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(4976);
				match(AS);
				setState(4977);
				simpleTypeName();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(4978);
				match(CACHE);
				setState(4979);
				numericOnly();
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(4980);
				match(CYCLE);
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(4981);
				match(NO);
				setState(4982);
				match(CYCLE);
				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(4983);
				match(INCREMENT);
				setState(4985);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==BY) {
					{
					setState(4984);
					match(BY);
					}
				}

				setState(4987);
				numericOnly();
				}
				break;
			case 6:
				enterOuterAlt(_localctx, 6);
				{
				setState(4988);
				match(MAXVALUE);
				setState(4989);
				numericOnly();
				}
				break;
			case 7:
				enterOuterAlt(_localctx, 7);
				{
				setState(4990);
				match(MINVALUE);
				setState(4991);
				numericOnly();
				}
				break;
			case 8:
				enterOuterAlt(_localctx, 8);
				{
				setState(4992);
				match(NO);
				setState(4993);
				match(MAXVALUE);
				}
				break;
			case 9:
				enterOuterAlt(_localctx, 9);
				{
				setState(4994);
				match(NO);
				setState(4995);
				match(MINVALUE);
				}
				break;
			case 10:
				enterOuterAlt(_localctx, 10);
				{
				setState(4996);
				match(OWNED);
				setState(4997);
				match(BY);
				setState(4998);
				anyName();
				}
				break;
			case 11:
				enterOuterAlt(_localctx, 11);
				{
				setState(4999);
				match(SEQUENCE);
				setState(5000);
				match(NAME);
				setState(5001);
				anyName();
				}
				break;
			case 12:
				enterOuterAlt(_localctx, 12);
				{
				setState(5002);
				match(START);
				setState(5004);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==WITH) {
					{
					setState(5003);
					match(WITH);
					}
				}

				setState(5006);
				numericOnly();
				}
				break;
			case 13:
				enterOuterAlt(_localctx, 13);
				{
				setState(5007);
				match(RESTART);
				}
				break;
			case 14:
				enterOuterAlt(_localctx, 14);
				{
				setState(5008);
				match(RESTART);
				setState(5010);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==WITH) {
					{
					setState(5009);
					match(WITH);
					}
				}

				setState(5012);
				numericOnly();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class OptColumnListContext extends ParserRuleContext {
		public TerminalNode LP_() { return getToken(OpenGaussStatementParser.LP_, 0); }
		public ColumnListContext columnList() {
			return getRuleContext(ColumnListContext.class,0);
		}
		public TerminalNode RP_() { return getToken(OpenGaussStatementParser.RP_, 0); }
		public OptColumnListContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_optColumnList; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitOptColumnList(this);
			else return visitor.visitChildren(this);
		}
	}

	public final OptColumnListContext optColumnList() throws RecognitionException {
		OptColumnListContext _localctx = new OptColumnListContext(_ctx, getState());
		enterRule(_localctx, 600, RULE_optColumnList);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5015);
			match(LP_);
			setState(5016);
			columnList();
			setState(5017);
			match(RP_);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ColumnElemContext extends ParserRuleContext {
		public ColIdContext colId() {
			return getRuleContext(ColIdContext.class,0);
		}
		public ColumnElemContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_columnElem; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitColumnElem(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ColumnElemContext columnElem() throws RecognitionException {
		ColumnElemContext _localctx = new ColumnElemContext(_ctx, getState());
		enterRule(_localctx, 602, RULE_columnElem);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5019);
			colId();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ColumnListContext extends ParserRuleContext {
		public List columnElem() {
			return getRuleContexts(ColumnElemContext.class);
		}
		public ColumnElemContext columnElem(int i) {
			return getRuleContext(ColumnElemContext.class,i);
		}
		public List COMMA_() { return getTokens(OpenGaussStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(OpenGaussStatementParser.COMMA_, i);
		}
		public ColumnListContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_columnList; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitColumnList(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ColumnListContext columnList() throws RecognitionException {
		ColumnListContext _localctx = new ColumnListContext(_ctx, getState());
		enterRule(_localctx, 604, RULE_columnList);
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			setState(5021);
			columnElem();
			setState(5026);
			_errHandler.sync(this);
			_alt = getInterpreter().adaptivePredict(_input,373,_ctx);
			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
				if ( _alt==1 ) {
					{
					{
					setState(5022);
					match(COMMA_);
					setState(5023);
					columnElem();
					}
					} 
				}
				setState(5028);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,373,_ctx);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class GeneratedWhenContext extends ParserRuleContext {
		public TerminalNode ALWAYS() { return getToken(OpenGaussStatementParser.ALWAYS, 0); }
		public TerminalNode BY() { return getToken(OpenGaussStatementParser.BY, 0); }
		public TerminalNode DEFAULT() { return getToken(OpenGaussStatementParser.DEFAULT, 0); }
		public GeneratedWhenContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_generatedWhen; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitGeneratedWhen(this);
			else return visitor.visitChildren(this);
		}
	}

	public final GeneratedWhenContext generatedWhen() throws RecognitionException {
		GeneratedWhenContext _localctx = new GeneratedWhenContext(_ctx, getState());
		enterRule(_localctx, 606, RULE_generatedWhen);
		try {
			setState(5032);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case ALWAYS:
				enterOuterAlt(_localctx, 1);
				{
				setState(5029);
				match(ALWAYS);
				}
				break;
			case BY:
				enterOuterAlt(_localctx, 2);
				{
				setState(5030);
				match(BY);
				setState(5031);
				match(DEFAULT);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class NoInheritContext extends ParserRuleContext {
		public TerminalNode NO() { return getToken(OpenGaussStatementParser.NO, 0); }
		public TerminalNode INHERIT() { return getToken(OpenGaussStatementParser.INHERIT, 0); }
		public NoInheritContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_noInherit; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitNoInherit(this);
			else return visitor.visitChildren(this);
		}
	}

	public final NoInheritContext noInherit() throws RecognitionException {
		NoInheritContext _localctx = new NoInheritContext(_ctx, getState());
		enterRule(_localctx, 608, RULE_noInherit);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5034);
			match(NO);
			setState(5035);
			match(INHERIT);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ConsTableSpaceContext extends ParserRuleContext {
		public TerminalNode USING() { return getToken(OpenGaussStatementParser.USING, 0); }
		public TerminalNode INDEX() { return getToken(OpenGaussStatementParser.INDEX, 0); }
		public TerminalNode TABLESPACE() { return getToken(OpenGaussStatementParser.TABLESPACE, 0); }
		public NameContext name() {
			return getRuleContext(NameContext.class,0);
		}
		public ConsTableSpaceContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_consTableSpace; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitConsTableSpace(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ConsTableSpaceContext consTableSpace() throws RecognitionException {
		ConsTableSpaceContext _localctx = new ConsTableSpaceContext(_ctx, getState());
		enterRule(_localctx, 610, RULE_consTableSpace);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5037);
			match(USING);
			setState(5038);
			match(INDEX);
			setState(5039);
			match(TABLESPACE);
			setState(5040);
			name();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DefinitionContext extends ParserRuleContext {
		public TerminalNode LP_() { return getToken(OpenGaussStatementParser.LP_, 0); }
		public DefListContext defList() {
			return getRuleContext(DefListContext.class,0);
		}
		public TerminalNode RP_() { return getToken(OpenGaussStatementParser.RP_, 0); }
		public DefinitionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_definition; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitDefinition(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DefinitionContext definition() throws RecognitionException {
		DefinitionContext _localctx = new DefinitionContext(_ctx, getState());
		enterRule(_localctx, 612, RULE_definition);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5042);
			match(LP_);
			setState(5043);
			defList();
			setState(5044);
			match(RP_);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DefListContext extends ParserRuleContext {
		public List defElem() {
			return getRuleContexts(DefElemContext.class);
		}
		public DefElemContext defElem(int i) {
			return getRuleContext(DefElemContext.class,i);
		}
		public List COMMA_() { return getTokens(OpenGaussStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(OpenGaussStatementParser.COMMA_, i);
		}
		public DefListContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_defList; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitDefList(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DefListContext defList() throws RecognitionException {
		DefListContext _localctx = new DefListContext(_ctx, getState());
		enterRule(_localctx, 614, RULE_defList);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5046);
			defElem();
			setState(5051);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA_) {
				{
				{
				setState(5047);
				match(COMMA_);
				setState(5048);
				defElem();
				}
				}
				setState(5053);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DefElemContext extends ParserRuleContext {
		public ColLabelContext colLabel() {
			return getRuleContext(ColLabelContext.class,0);
		}
		public TerminalNode EQ_() { return getToken(OpenGaussStatementParser.EQ_, 0); }
		public DefArgContext defArg() {
			return getRuleContext(DefArgContext.class,0);
		}
		public DefElemContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_defElem; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitDefElem(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DefElemContext defElem() throws RecognitionException {
		DefElemContext _localctx = new DefElemContext(_ctx, getState());
		enterRule(_localctx, 616, RULE_defElem);
		try {
			setState(5059);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,376,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				{
				setState(5054);
				colLabel();
				setState(5055);
				match(EQ_);
				setState(5056);
				defArg();
				}
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(5058);
				colLabel();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ColLabelContext extends ParserRuleContext {
		public IdentifierContext identifier() {
			return getRuleContext(IdentifierContext.class,0);
		}
		public UnreservedWordContext unreservedWord() {
			return getRuleContext(UnreservedWordContext.class,0);
		}
		public ColNameKeywordContext colNameKeyword() {
			return getRuleContext(ColNameKeywordContext.class,0);
		}
		public TypeFuncNameKeywordContext typeFuncNameKeyword() {
			return getRuleContext(TypeFuncNameKeywordContext.class,0);
		}
		public ReservedKeywordContext reservedKeyword() {
			return getRuleContext(ReservedKeywordContext.class,0);
		}
		public ColLabelContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_colLabel; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitColLabel(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ColLabelContext colLabel() throws RecognitionException {
		ColLabelContext _localctx = new ColLabelContext(_ctx, getState());
		enterRule(_localctx, 618, RULE_colLabel);
		try {
			setState(5066);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,377,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(5061);
				identifier();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(5062);
				unreservedWord();
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(5063);
				colNameKeyword();
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(5064);
				typeFuncNameKeyword();
				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(5065);
				reservedKeyword();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class KeyActionsContext extends ParserRuleContext {
		public KeyUpdateContext keyUpdate() {
			return getRuleContext(KeyUpdateContext.class,0);
		}
		public KeyDeleteContext keyDelete() {
			return getRuleContext(KeyDeleteContext.class,0);
		}
		public KeyActionsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_keyActions; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitKeyActions(this);
			else return visitor.visitChildren(this);
		}
	}

	public final KeyActionsContext keyActions() throws RecognitionException {
		KeyActionsContext _localctx = new KeyActionsContext(_ctx, getState());
		enterRule(_localctx, 620, RULE_keyActions);
		try {
			setState(5076);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,378,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(5068);
				keyUpdate();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(5069);
				keyDelete();
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(5070);
				keyUpdate();
				setState(5071);
				keyDelete();
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(5073);
				keyDelete();
				setState(5074);
				keyUpdate();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class KeyDeleteContext extends ParserRuleContext {
		public TerminalNode ON() { return getToken(OpenGaussStatementParser.ON, 0); }
		public TerminalNode DELETE() { return getToken(OpenGaussStatementParser.DELETE, 0); }
		public KeyActionContext keyAction() {
			return getRuleContext(KeyActionContext.class,0);
		}
		public KeyDeleteContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_keyDelete; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitKeyDelete(this);
			else return visitor.visitChildren(this);
		}
	}

	public final KeyDeleteContext keyDelete() throws RecognitionException {
		KeyDeleteContext _localctx = new KeyDeleteContext(_ctx, getState());
		enterRule(_localctx, 622, RULE_keyDelete);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5078);
			match(ON);
			setState(5079);
			match(DELETE);
			setState(5080);
			keyAction();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class KeyUpdateContext extends ParserRuleContext {
		public TerminalNode ON() { return getToken(OpenGaussStatementParser.ON, 0); }
		public TerminalNode UPDATE() { return getToken(OpenGaussStatementParser.UPDATE, 0); }
		public KeyActionContext keyAction() {
			return getRuleContext(KeyActionContext.class,0);
		}
		public KeyUpdateContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_keyUpdate; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitKeyUpdate(this);
			else return visitor.visitChildren(this);
		}
	}

	public final KeyUpdateContext keyUpdate() throws RecognitionException {
		KeyUpdateContext _localctx = new KeyUpdateContext(_ctx, getState());
		enterRule(_localctx, 624, RULE_keyUpdate);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5082);
			match(ON);
			setState(5083);
			match(UPDATE);
			setState(5084);
			keyAction();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class KeyActionContext extends ParserRuleContext {
		public TerminalNode NO() { return getToken(OpenGaussStatementParser.NO, 0); }
		public TerminalNode ACTION() { return getToken(OpenGaussStatementParser.ACTION, 0); }
		public TerminalNode RESTRICT() { return getToken(OpenGaussStatementParser.RESTRICT, 0); }
		public TerminalNode CASCADE() { return getToken(OpenGaussStatementParser.CASCADE, 0); }
		public TerminalNode SET() { return getToken(OpenGaussStatementParser.SET, 0); }
		public TerminalNode NULL() { return getToken(OpenGaussStatementParser.NULL, 0); }
		public TerminalNode DEFAULT() { return getToken(OpenGaussStatementParser.DEFAULT, 0); }
		public KeyActionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_keyAction; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitKeyAction(this);
			else return visitor.visitChildren(this);
		}
	}

	public final KeyActionContext keyAction() throws RecognitionException {
		KeyActionContext _localctx = new KeyActionContext(_ctx, getState());
		enterRule(_localctx, 626, RULE_keyAction);
		try {
			setState(5094);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,379,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(5086);
				match(NO);
				setState(5087);
				match(ACTION);
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(5088);
				match(RESTRICT);
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(5089);
				match(CASCADE);
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(5090);
				match(SET);
				setState(5091);
				match(NULL);
				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(5092);
				match(SET);
				setState(5093);
				match(DEFAULT);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class KeyMatchContext extends ParserRuleContext {
		public TerminalNode MATCH() { return getToken(OpenGaussStatementParser.MATCH, 0); }
		public TerminalNode FULL() { return getToken(OpenGaussStatementParser.FULL, 0); }
		public TerminalNode PARTIAL() { return getToken(OpenGaussStatementParser.PARTIAL, 0); }
		public TerminalNode SIMPLE() { return getToken(OpenGaussStatementParser.SIMPLE, 0); }
		public KeyMatchContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_keyMatch; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitKeyMatch(this);
			else return visitor.visitChildren(this);
		}
	}

	public final KeyMatchContext keyMatch() throws RecognitionException {
		KeyMatchContext _localctx = new KeyMatchContext(_ctx, getState());
		enterRule(_localctx, 628, RULE_keyMatch);
		try {
			setState(5102);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,380,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(5096);
				match(MATCH);
				setState(5097);
				match(FULL);
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(5098);
				match(MATCH);
				setState(5099);
				match(PARTIAL);
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(5100);
				match(MATCH);
				setState(5101);
				match(SIMPLE);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CreateGenericOptionsContext extends ParserRuleContext {
		public TerminalNode OPTIONS() { return getToken(OpenGaussStatementParser.OPTIONS, 0); }
		public TerminalNode LP_() { return getToken(OpenGaussStatementParser.LP_, 0); }
		public GenericOptionListContext genericOptionList() {
			return getRuleContext(GenericOptionListContext.class,0);
		}
		public TerminalNode RP_() { return getToken(OpenGaussStatementParser.RP_, 0); }
		public CreateGenericOptionsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_createGenericOptions; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitCreateGenericOptions(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CreateGenericOptionsContext createGenericOptions() throws RecognitionException {
		CreateGenericOptionsContext _localctx = new CreateGenericOptionsContext(_ctx, getState());
		enterRule(_localctx, 630, RULE_createGenericOptions);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5104);
			match(OPTIONS);
			setState(5105);
			match(LP_);
			setState(5106);
			genericOptionList();
			setState(5107);
			match(RP_);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class GenericOptionListContext extends ParserRuleContext {
		public List genericOptionElem() {
			return getRuleContexts(GenericOptionElemContext.class);
		}
		public GenericOptionElemContext genericOptionElem(int i) {
			return getRuleContext(GenericOptionElemContext.class,i);
		}
		public List COMMA_() { return getTokens(OpenGaussStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(OpenGaussStatementParser.COMMA_, i);
		}
		public GenericOptionListContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_genericOptionList; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitGenericOptionList(this);
			else return visitor.visitChildren(this);
		}
	}

	public final GenericOptionListContext genericOptionList() throws RecognitionException {
		GenericOptionListContext _localctx = new GenericOptionListContext(_ctx, getState());
		enterRule(_localctx, 632, RULE_genericOptionList);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5109);
			genericOptionElem();
			setState(5114);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA_) {
				{
				{
				setState(5110);
				match(COMMA_);
				setState(5111);
				genericOptionElem();
				}
				}
				setState(5116);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class GenericOptionElemContext extends ParserRuleContext {
		public GenericOptionNameContext genericOptionName() {
			return getRuleContext(GenericOptionNameContext.class,0);
		}
		public GenericOptionArgContext genericOptionArg() {
			return getRuleContext(GenericOptionArgContext.class,0);
		}
		public GenericOptionElemContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_genericOptionElem; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitGenericOptionElem(this);
			else return visitor.visitChildren(this);
		}
	}

	public final GenericOptionElemContext genericOptionElem() throws RecognitionException {
		GenericOptionElemContext _localctx = new GenericOptionElemContext(_ctx, getState());
		enterRule(_localctx, 634, RULE_genericOptionElem);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5117);
			genericOptionName();
			setState(5118);
			genericOptionArg();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class GenericOptionArgContext extends ParserRuleContext {
		public TerminalNode STRING_() { return getToken(OpenGaussStatementParser.STRING_, 0); }
		public GenericOptionArgContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_genericOptionArg; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitGenericOptionArg(this);
			else return visitor.visitChildren(this);
		}
	}

	public final GenericOptionArgContext genericOptionArg() throws RecognitionException {
		GenericOptionArgContext _localctx = new GenericOptionArgContext(_ctx, getState());
		enterRule(_localctx, 636, RULE_genericOptionArg);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5120);
			match(STRING_);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class GenericOptionNameContext extends ParserRuleContext {
		public ColLableContext colLable() {
			return getRuleContext(ColLableContext.class,0);
		}
		public GenericOptionNameContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_genericOptionName; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitGenericOptionName(this);
			else return visitor.visitChildren(this);
		}
	}

	public final GenericOptionNameContext genericOptionName() throws RecognitionException {
		GenericOptionNameContext _localctx = new GenericOptionNameContext(_ctx, getState());
		enterRule(_localctx, 638, RULE_genericOptionName);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5122);
			colLable();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ReplicaIdentityContext extends ParserRuleContext {
		public TerminalNode NOTHING() { return getToken(OpenGaussStatementParser.NOTHING, 0); }
		public TerminalNode FULL() { return getToken(OpenGaussStatementParser.FULL, 0); }
		public TerminalNode DEFAULT() { return getToken(OpenGaussStatementParser.DEFAULT, 0); }
		public TerminalNode USING() { return getToken(OpenGaussStatementParser.USING, 0); }
		public TerminalNode INDEX() { return getToken(OpenGaussStatementParser.INDEX, 0); }
		public NameContext name() {
			return getRuleContext(NameContext.class,0);
		}
		public ReplicaIdentityContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_replicaIdentity; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitReplicaIdentity(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ReplicaIdentityContext replicaIdentity() throws RecognitionException {
		ReplicaIdentityContext _localctx = new ReplicaIdentityContext(_ctx, getState());
		enterRule(_localctx, 640, RULE_replicaIdentity);
		try {
			setState(5130);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case NOTHING:
				enterOuterAlt(_localctx, 1);
				{
				setState(5124);
				match(NOTHING);
				}
				break;
			case FULL:
				enterOuterAlt(_localctx, 2);
				{
				setState(5125);
				match(FULL);
				}
				break;
			case DEFAULT:
				enterOuterAlt(_localctx, 3);
				{
				setState(5126);
				match(DEFAULT);
				}
				break;
			case USING:
				enterOuterAlt(_localctx, 4);
				{
				setState(5127);
				match(USING);
				setState(5128);
				match(INDEX);
				setState(5129);
				name();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class OperArgtypesContext extends ParserRuleContext {
		public TerminalNode LP_() { return getToken(OpenGaussStatementParser.LP_, 0); }
		public List typeName() {
			return getRuleContexts(TypeNameContext.class);
		}
		public TypeNameContext typeName(int i) {
			return getRuleContext(TypeNameContext.class,i);
		}
		public TerminalNode RP_() { return getToken(OpenGaussStatementParser.RP_, 0); }
		public TerminalNode COMMA_() { return getToken(OpenGaussStatementParser.COMMA_, 0); }
		public TerminalNode NONE() { return getToken(OpenGaussStatementParser.NONE, 0); }
		public OperArgtypesContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_operArgtypes; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitOperArgtypes(this);
			else return visitor.visitChildren(this);
		}
	}

	public final OperArgtypesContext operArgtypes() throws RecognitionException {
		OperArgtypesContext _localctx = new OperArgtypesContext(_ctx, getState());
		enterRule(_localctx, 642, RULE_operArgtypes);
		try {
			setState(5154);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,383,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(5132);
				match(LP_);
				setState(5133);
				typeName();
				setState(5134);
				match(RP_);
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(5136);
				match(LP_);
				setState(5137);
				typeName();
				setState(5138);
				match(COMMA_);
				setState(5139);
				typeName();
				setState(5140);
				match(RP_);
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(5142);
				match(LP_);
				setState(5143);
				match(NONE);
				setState(5144);
				match(COMMA_);
				setState(5145);
				typeName();
				setState(5146);
				match(RP_);
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(5148);
				match(LP_);
				setState(5149);
				typeName();
				setState(5150);
				match(COMMA_);
				setState(5151);
				match(NONE);
				setState(5152);
				match(RP_);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class FuncArgContext extends ParserRuleContext {
		public ArgClassContext argClass() {
			return getRuleContext(ArgClassContext.class,0);
		}
		public ParamNameContext paramName() {
			return getRuleContext(ParamNameContext.class,0);
		}
		public FuncTypeContext funcType() {
			return getRuleContext(FuncTypeContext.class,0);
		}
		public FuncArgContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_funcArg; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitFuncArg(this);
			else return visitor.visitChildren(this);
		}
	}

	public final FuncArgContext funcArg() throws RecognitionException {
		FuncArgContext _localctx = new FuncArgContext(_ctx, getState());
		enterRule(_localctx, 644, RULE_funcArg);
		try {
			setState(5171);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,384,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(5156);
				argClass();
				setState(5157);
				paramName();
				setState(5158);
				funcType();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(5160);
				paramName();
				setState(5161);
				argClass();
				setState(5162);
				funcType();
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(5164);
				paramName();
				setState(5165);
				funcType();
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(5167);
				argClass();
				setState(5168);
				funcType();
				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(5170);
				funcType();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ArgClassContext extends ParserRuleContext {
		public TerminalNode IN() { return getToken(OpenGaussStatementParser.IN, 0); }
		public TerminalNode OUT() { return getToken(OpenGaussStatementParser.OUT, 0); }
		public TerminalNode INOUT() { return getToken(OpenGaussStatementParser.INOUT, 0); }
		public TerminalNode VARIADIC() { return getToken(OpenGaussStatementParser.VARIADIC, 0); }
		public ArgClassContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_argClass; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitArgClass(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ArgClassContext argClass() throws RecognitionException {
		ArgClassContext _localctx = new ArgClassContext(_ctx, getState());
		enterRule(_localctx, 646, RULE_argClass);
		try {
			setState(5179);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,385,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(5173);
				match(IN);
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(5174);
				match(OUT);
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(5175);
				match(INOUT);
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(5176);
				match(IN);
				setState(5177);
				match(OUT);
				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(5178);
				match(VARIADIC);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class FuncArgsListContext extends ParserRuleContext {
		public List funcArg() {
			return getRuleContexts(FuncArgContext.class);
		}
		public FuncArgContext funcArg(int i) {
			return getRuleContext(FuncArgContext.class,i);
		}
		public List COMMA_() { return getTokens(OpenGaussStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(OpenGaussStatementParser.COMMA_, i);
		}
		public FuncArgsListContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_funcArgsList; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitFuncArgsList(this);
			else return visitor.visitChildren(this);
		}
	}

	public final FuncArgsListContext funcArgsList() throws RecognitionException {
		FuncArgsListContext _localctx = new FuncArgsListContext(_ctx, getState());
		enterRule(_localctx, 648, RULE_funcArgsList);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5181);
			funcArg();
			setState(5186);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA_) {
				{
				{
				setState(5182);
				match(COMMA_);
				setState(5183);
				funcArg();
				}
				}
				setState(5188);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class NonReservedWordOrSconstContext extends ParserRuleContext {
		public NonReservedWordContext nonReservedWord() {
			return getRuleContext(NonReservedWordContext.class,0);
		}
		public TerminalNode STRING_() { return getToken(OpenGaussStatementParser.STRING_, 0); }
		public NonReservedWordOrSconstContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_nonReservedWordOrSconst; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitNonReservedWordOrSconst(this);
			else return visitor.visitChildren(this);
		}
	}

	public final NonReservedWordOrSconstContext nonReservedWordOrSconst() throws RecognitionException {
		NonReservedWordOrSconstContext _localctx = new NonReservedWordOrSconstContext(_ctx, getState());
		enterRule(_localctx, 650, RULE_nonReservedWordOrSconst);
		try {
			setState(5191);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case UNICODE_ESCAPE:
			case INSERT:
			case UPDATE:
			case DELETE:
			case ALTER:
			case DROP:
			case TRUNCATE:
			case SCHEMA:
			case REVOKE:
			case ADD:
			case SET:
			case INDEX:
			case KEY:
			case POSITION:
			case PRECISION:
			case FUNCTION:
			case TRIGGER:
			case PROCEDURE:
			case VIEW:
			case VALUES:
			case TRIM:
			case SUBSTRING:
			case NATURAL:
			case JOIN:
			case FULL:
			case INNER:
			case OUTER:
			case LEFT:
			case RIGHT:
			case CROSS:
			case IF:
			case IS:
			case EXISTS:
			case BETWEEN:
			case LIKE:
			case BY:
			case BEGIN:
			case COMMIT:
			case ROLLBACK:
			case SAVEPOINT:
			case BOOLEAN:
			case DOUBLE:
			case CHAR:
			case CHARACTER:
			case INTERVAL:
			case TIME:
			case TIMESTAMP:
			case YEAR:
			case MONTH:
			case DAY:
			case HOUR:
			case MINUTE:
			case SECOND:
			case CURRENT:
			case ENABLE:
			case DISABLE:
			case CALL:
			case PRESERVE:
			case DEFINER:
			case SQL:
			case CASCADED:
			case LOCAL:
			case CLOSE:
			case NEXT:
			case NAME:
			case COLLATION:
			case NAMES:
			case INTEGER:
			case REAL:
			case DECIMAL:
			case TYPE:
			case SMALLINT:
			case BIGINT:
			case NUMERIC:
			case TEXT:
			case REPEATABLE:
			case NULLIF:
			case VARYING:
			case NATIONAL:
			case NCHAR:
			case VALUE:
			case COALESCE:
			case TIES:
			case CUBE:
			case GROUPING:
			case SETS:
			case OTHERS:
			case OVERLAPS:
			case AT:
			case DEC:
			case MAXVALUE:
			case ADMIN:
			case BINARY:
			case ESCAPE:
			case EXCLUDE:
			case MOD:
			case PARTITION:
			case ROW:
			case UNKNOWN:
			case ALWAYS:
			case CASCADE:
			case GENERATED:
			case ISOLATION:
			case LEVEL:
			case NO:
			case OPTION:
			case PRIVILEGES:
			case READ:
			case ROLE:
			case ROWS:
			case START:
			case TRANSACTION:
			case ACTION:
			case CACHE:
			case CHARACTERISTICS:
			case CLUSTER:
			case COMMENTS:
			case CONCURRENTLY:
			case CONSTRAINTS:
			case CYCLE:
			case DATA:
			case DATABASE:
			case DEFAULTS:
			case DEFERRED:
			case DEPENDS:
			case DOMAIN:
			case EXCLUDING:
			case EXECUTE:
			case EXTENDED:
			case EXTENSION:
			case EXTERNAL:
			case EXTRACT:
			case FILTER:
			case FIRST:
			case FOLLOWING:
			case FORCE:
			case GLOBAL:
			case IDENTITY:
			case IMMEDIATE:
			case INCLUDING:
			case INCREMENT:
			case INDEXES:
			case INHERIT:
			case INHERITS:
			case INCLUDE:
			case LANGUAGE:
			case LARGE:
			case LAST:
			case LOGGED:
			case MAIN:
			case MATCH:
			case MINVALUE:
			case NOTHING:
			case NULLS:
			case OBJECT:
			case OIDS:
			case OVER:
			case OWNED:
			case OWNER:
			case PARTIAL:
			case PLAIN:
			case PRECEDING:
			case RANGE:
			case RENAME:
			case REPLICA:
			case RESET:
			case RESTART:
			case RESTRICT:
			case ROUTINE:
			case RULE:
			case SECURITY:
			case SEQUENCE:
			case SESSION:
			case SHOW:
			case SIMPLE:
			case STATISTICS:
			case STORAGE:
			case TABLESPACE:
			case TEMP:
			case TEMPORARY:
			case UNBOUNDED:
			case UNLOGGED:
			case VALID:
			case VALIDATE:
			case WITHIN:
			case WITHOUT:
			case ZONE:
			case OF:
			case UESCAPE:
			case GROUPS:
			case RECURSIVE:
			case INT:
			case INT2:
			case INT4:
			case FLOAT:
			case FLOAT4:
			case VARCHAR:
			case BYTEA:
			case ENUM:
			case POINT:
			case LSEG:
			case BOX:
			case PATH:
			case POLYGON:
			case CIRCLE:
			case INET:
			case BIT:
			case TSQUERY:
			case XML:
			case JSON:
			case INT4RANGE:
			case INT8RANGE:
			case NUMRANGE:
			case DATERANGE:
			case TABLESAMPLE:
			case ORDINALITY:
			case CURRENT_SCHEMA:
			case OVERLAY:
			case XMLCONCAT:
			case XMLELEMENT:
			case XMLEXISTS:
			case XMLFOREST:
			case XMLPARSE:
			case XMLPI:
			case XMLROOT:
			case XMLSERIALIZE:
			case TREAT:
			case SETOF:
			case NFC:
			case NFD:
			case NFKC:
			case NFKD:
			case XMLATTRIBUTES:
			case REF:
			case PASSING:
			case VERSION:
			case YES:
			case STANDALONE:
			case GREATEST:
			case LEAST:
			case MATERIALIZED:
			case OPERATOR:
			case SHARE:
			case ROLLUP:
			case ILIKE:
			case SIMILAR:
			case ISNULL:
			case NOTNULL:
			case DOCUMENT:
			case NORMALIZED:
			case NOWAIT:
			case LOCKED:
			case XMLTABLE:
			case COLUMNS:
			case CONTENT:
			case STRIP:
			case WHITESPACE:
			case XMLNAMESPACES:
			case NONE:
			case CONFLICT:
			case OVERRIDING:
			case SYSTEM:
			case ABORT:
			case ABSOLUTE:
			case ACCESS:
			case AFTER:
			case AGGREGATE:
			case ALSO:
			case ATTACH:
			case ATTRIBUTE:
			case BACKWARD:
			case BEFORE:
			case ASSERTION:
			case ASSIGNMENT:
			case CONTINUE:
			case CONVERSION:
			case COPY:
			case COST:
			case CSV:
			case CALLED:
			case CATALOG:
			case CHAIN:
			case CHECKPOINT:
			case CLASS:
			case CONFIGURATION:
			case COMMENT:
			case DETACH:
			case DICTIONARY:
			case EXPRESSION:
			case INSENSITIVE:
			case DISCARD:
			case OFF:
			case INSTEAD:
			case EXPLAIN:
			case INPUT:
			case INLINE:
			case PARALLEL:
			case LEAKPROOF:
			case COMMITTED:
			case ENCODING:
			case IMPLICIT:
			case DELIMITER:
			case CURSOR:
			case EACH:
			case EVENT:
			case DEALLOCATE:
			case CONNECTION:
			case DECLARE:
			case FAMILY:
			case FORWARD:
			case EXCLUSIVE:
			case FUNCTIONS:
			case LOCATION:
			case LABEL:
			case DELIMITERS:
			case HANDLER:
			case HEADER:
			case IMMUTABLE:
			case GRANTED:
			case HOLD:
			case MAPPING:
			case OLD:
			case METHOD:
			case LOAD:
			case LISTEN:
			case MODE:
			case MOVE:
			case PROCEDURAL:
			case PARSER:
			case PROCEDURES:
			case ENCRYPTED:
			case PUBLICATION:
			case PROGRAM:
			case REFERENCING:
			case PLANS:
			case REINDEX:
			case PRIOR:
			case PASSWORD:
			case RELATIVE:
			case QUOTE:
			case ROUTINES:
			case REPLACE:
			case SNAPSHOT:
			case REFRESH:
			case PREPARE:
			case OPTIONS:
			case IMPORT:
			case INVOKER:
			case NEW:
			case PREPARED:
			case SCROLL:
			case SEQUENCES:
			case SYSID:
			case REASSIGN:
			case SERVER:
			case SUBSCRIPTION:
			case SEARCH:
			case SCHEMAS:
			case RECHECK:
			case POLICY:
			case NOTIFY:
			case LOCK:
			case RELEASE:
			case SERIALIZABLE:
			case RETURNS:
			case STATEMENT:
			case STDIN:
			case STDOUT:
			case TABLES:
			case SUPPORT:
			case STABLE:
			case TEMPLATE:
			case UNENCRYPTED:
			case VIEWS:
			case UNCOMMITTED:
			case TRANSFORM:
			case UNLISTEN:
			case TRUSTED:
			case VALIDATOR:
			case UNTIL:
			case VACUUM:
			case VOLATILE:
			case STORED:
			case WRITE:
			case STRICT:
			case TYPES:
			case WRAPPER:
			case WORK:
			case FREEZE:
			case AUTHORIZATION:
			case VERBOSE:
			case OUT:
			case INOUT:
			case INT16:
			case INT1:
			case ELEM_CONTAINED_BY_RANGE:
			case IDENTIFIER_:
				enterOuterAlt(_localctx, 1);
				{
				setState(5189);
				nonReservedWord();
				}
				break;
			case STRING_:
				enterOuterAlt(_localctx, 2);
				{
				setState(5190);
				match(STRING_);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class FileNameContext extends ParserRuleContext {
		public TerminalNode STRING_() { return getToken(OpenGaussStatementParser.STRING_, 0); }
		public FileNameContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_fileName; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitFileName(this);
			else return visitor.visitChildren(this);
		}
	}

	public final FileNameContext fileName() throws RecognitionException {
		FileNameContext _localctx = new FileNameContext(_ctx, getState());
		enterRule(_localctx, 652, RULE_fileName);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5193);
			match(STRING_);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class RoleListContext extends ParserRuleContext {
		public List roleSpec() {
			return getRuleContexts(RoleSpecContext.class);
		}
		public RoleSpecContext roleSpec(int i) {
			return getRuleContext(RoleSpecContext.class,i);
		}
		public List COMMA_() { return getTokens(OpenGaussStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(OpenGaussStatementParser.COMMA_, i);
		}
		public RoleListContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_roleList; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitRoleList(this);
			else return visitor.visitChildren(this);
		}
	}

	public final RoleListContext roleList() throws RecognitionException {
		RoleListContext _localctx = new RoleListContext(_ctx, getState());
		enterRule(_localctx, 654, RULE_roleList);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5195);
			roleSpec();
			setState(5200);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA_) {
				{
				{
				setState(5196);
				match(COMMA_);
				setState(5197);
				roleSpec();
				}
				}
				setState(5202);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class SetResetClauseContext extends ParserRuleContext {
		public TerminalNode SET() { return getToken(OpenGaussStatementParser.SET, 0); }
		public SetRestContext setRest() {
			return getRuleContext(SetRestContext.class,0);
		}
		public VariableResetStmtContext variableResetStmt() {
			return getRuleContext(VariableResetStmtContext.class,0);
		}
		public SetResetClauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_setResetClause; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitSetResetClause(this);
			else return visitor.visitChildren(this);
		}
	}

	public final SetResetClauseContext setResetClause() throws RecognitionException {
		SetResetClauseContext _localctx = new SetResetClauseContext(_ctx, getState());
		enterRule(_localctx, 656, RULE_setResetClause);
		try {
			setState(5206);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case SET:
				enterOuterAlt(_localctx, 1);
				{
				setState(5203);
				match(SET);
				setState(5204);
				setRest();
				}
				break;
			case RESET:
				enterOuterAlt(_localctx, 2);
				{
				setState(5205);
				variableResetStmt();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class SetRestContext extends ParserRuleContext {
		public TerminalNode TRANSACTION() { return getToken(OpenGaussStatementParser.TRANSACTION, 0); }
		public TransactionModeListContext transactionModeList() {
			return getRuleContext(TransactionModeListContext.class,0);
		}
		public TerminalNode SESSION() { return getToken(OpenGaussStatementParser.SESSION, 0); }
		public TerminalNode CHARACTERISTICS() { return getToken(OpenGaussStatementParser.CHARACTERISTICS, 0); }
		public TerminalNode AS() { return getToken(OpenGaussStatementParser.AS, 0); }
		public SetRestMoreContext setRestMore() {
			return getRuleContext(SetRestMoreContext.class,0);
		}
		public SetRestContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_setRest; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitSetRest(this);
			else return visitor.visitChildren(this);
		}
	}

	public final SetRestContext setRest() throws RecognitionException {
		SetRestContext _localctx = new SetRestContext(_ctx, getState());
		enterRule(_localctx, 658, RULE_setRest);
		try {
			setState(5216);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,390,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(5208);
				match(TRANSACTION);
				setState(5209);
				transactionModeList();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(5210);
				match(SESSION);
				setState(5211);
				match(CHARACTERISTICS);
				setState(5212);
				match(AS);
				setState(5213);
				match(TRANSACTION);
				setState(5214);
				transactionModeList();
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(5215);
				setRestMore();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class TransactionModeListContext extends ParserRuleContext {
		public List transactionModeItem() {
			return getRuleContexts(TransactionModeItemContext.class);
		}
		public TransactionModeItemContext transactionModeItem(int i) {
			return getRuleContext(TransactionModeItemContext.class,i);
		}
		public List COMMA_() { return getTokens(OpenGaussStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(OpenGaussStatementParser.COMMA_, i);
		}
		public TransactionModeListContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_transactionModeList; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitTransactionModeList(this);
			else return visitor.visitChildren(this);
		}
	}

	public final TransactionModeListContext transactionModeList() throws RecognitionException {
		TransactionModeListContext _localctx = new TransactionModeListContext(_ctx, getState());
		enterRule(_localctx, 660, RULE_transactionModeList);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5218);
			transactionModeItem();
			setState(5225);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA_ || _la==NOT || ((((_la - 253)) & ~0x3f) == 0 && ((1L << (_la - 253)) & ((1L << (ISOLATION - 253)) | (1L << (READ - 253)) | (1L << (DEFERRABLE - 253)))) != 0)) {
				{
				{
				setState(5220);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==COMMA_) {
					{
					setState(5219);
					match(COMMA_);
					}
				}

				setState(5222);
				transactionModeItem();
				}
				}
				setState(5227);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class TransactionModeItemContext extends ParserRuleContext {
		public TerminalNode ISOLATION() { return getToken(OpenGaussStatementParser.ISOLATION, 0); }
		public TerminalNode LEVEL() { return getToken(OpenGaussStatementParser.LEVEL, 0); }
		public IsoLevelContext isoLevel() {
			return getRuleContext(IsoLevelContext.class,0);
		}
		public TerminalNode READ() { return getToken(OpenGaussStatementParser.READ, 0); }
		public TerminalNode ONLY() { return getToken(OpenGaussStatementParser.ONLY, 0); }
		public TerminalNode WRITE() { return getToken(OpenGaussStatementParser.WRITE, 0); }
		public TerminalNode DEFERRABLE() { return getToken(OpenGaussStatementParser.DEFERRABLE, 0); }
		public TerminalNode NOT() { return getToken(OpenGaussStatementParser.NOT, 0); }
		public TransactionModeItemContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_transactionModeItem; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitTransactionModeItem(this);
			else return visitor.visitChildren(this);
		}
	}

	public final TransactionModeItemContext transactionModeItem() throws RecognitionException {
		TransactionModeItemContext _localctx = new TransactionModeItemContext(_ctx, getState());
		enterRule(_localctx, 662, RULE_transactionModeItem);
		try {
			setState(5238);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,393,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(5228);
				match(ISOLATION);
				setState(5229);
				match(LEVEL);
				setState(5230);
				isoLevel();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(5231);
				match(READ);
				setState(5232);
				match(ONLY);
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(5233);
				match(READ);
				setState(5234);
				match(WRITE);
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(5235);
				match(DEFERRABLE);
				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(5236);
				match(NOT);
				setState(5237);
				match(DEFERRABLE);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class SetRestMoreContext extends ParserRuleContext {
		public GenericSetContext genericSet() {
			return getRuleContext(GenericSetContext.class,0);
		}
		public VarNameContext varName() {
			return getRuleContext(VarNameContext.class,0);
		}
		public TerminalNode FROM() { return getToken(OpenGaussStatementParser.FROM, 0); }
		public TerminalNode CURRENT() { return getToken(OpenGaussStatementParser.CURRENT, 0); }
		public TerminalNode TIME() { return getToken(OpenGaussStatementParser.TIME, 0); }
		public TerminalNode ZONE() { return getToken(OpenGaussStatementParser.ZONE, 0); }
		public ZoneValueContext zoneValue() {
			return getRuleContext(ZoneValueContext.class,0);
		}
		public TerminalNode CATALOG() { return getToken(OpenGaussStatementParser.CATALOG, 0); }
		public TerminalNode STRING_() { return getToken(OpenGaussStatementParser.STRING_, 0); }
		public TerminalNode SCHEMA() { return getToken(OpenGaussStatementParser.SCHEMA, 0); }
		public TerminalNode NAMES() { return getToken(OpenGaussStatementParser.NAMES, 0); }
		public EncodingContext encoding() {
			return getRuleContext(EncodingContext.class,0);
		}
		public TerminalNode ROLE() { return getToken(OpenGaussStatementParser.ROLE, 0); }
		public NonReservedWordContext nonReservedWord() {
			return getRuleContext(NonReservedWordContext.class,0);
		}
		public TerminalNode SESSION() { return getToken(OpenGaussStatementParser.SESSION, 0); }
		public TerminalNode AUTHORIZATION() { return getToken(OpenGaussStatementParser.AUTHORIZATION, 0); }
		public TerminalNode DEFAULT() { return getToken(OpenGaussStatementParser.DEFAULT, 0); }
		public TerminalNode XML() { return getToken(OpenGaussStatementParser.XML, 0); }
		public TerminalNode OPTION() { return getToken(OpenGaussStatementParser.OPTION, 0); }
		public DocumentOrContentContext documentOrContent() {
			return getRuleContext(DocumentOrContentContext.class,0);
		}
		public TerminalNode TRANSACTION() { return getToken(OpenGaussStatementParser.TRANSACTION, 0); }
		public TerminalNode SNAPSHOT() { return getToken(OpenGaussStatementParser.SNAPSHOT, 0); }
		public SetRestMoreContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_setRestMore; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitSetRestMore(this);
			else return visitor.visitChildren(this);
		}
	}

	public final SetRestMoreContext setRestMore() throws RecognitionException {
		SetRestMoreContext _localctx = new SetRestMoreContext(_ctx, getState());
		enterRule(_localctx, 664, RULE_setRestMore);
		int _la;
		try {
			setState(5272);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,395,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(5240);
				genericSet();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(5241);
				varName(0);
				setState(5242);
				match(FROM);
				setState(5243);
				match(CURRENT);
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(5245);
				match(TIME);
				setState(5246);
				match(ZONE);
				setState(5247);
				zoneValue();
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(5248);
				match(CATALOG);
				setState(5249);
				match(STRING_);
				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(5250);
				match(SCHEMA);
				setState(5251);
				match(STRING_);
				}
				break;
			case 6:
				enterOuterAlt(_localctx, 6);
				{
				setState(5252);
				match(NAMES);
				setState(5254);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==DEFAULT || _la==STRING_) {
					{
					setState(5253);
					encoding();
					}
				}

				}
				break;
			case 7:
				enterOuterAlt(_localctx, 7);
				{
				setState(5256);
				match(ROLE);
				setState(5257);
				nonReservedWord();
				}
				break;
			case 8:
				enterOuterAlt(_localctx, 8);
				{
				setState(5258);
				match(STRING_);
				}
				break;
			case 9:
				enterOuterAlt(_localctx, 9);
				{
				setState(5259);
				match(SESSION);
				setState(5260);
				match(AUTHORIZATION);
				setState(5261);
				nonReservedWord();
				}
				break;
			case 10:
				enterOuterAlt(_localctx, 10);
				{
				setState(5262);
				match(STRING_);
				}
				break;
			case 11:
				enterOuterAlt(_localctx, 11);
				{
				setState(5263);
				match(SESSION);
				setState(5264);
				match(AUTHORIZATION);
				setState(5265);
				match(DEFAULT);
				}
				break;
			case 12:
				enterOuterAlt(_localctx, 12);
				{
				setState(5266);
				match(XML);
				setState(5267);
				match(OPTION);
				setState(5268);
				documentOrContent();
				}
				break;
			case 13:
				enterOuterAlt(_localctx, 13);
				{
				setState(5269);
				match(TRANSACTION);
				setState(5270);
				match(SNAPSHOT);
				setState(5271);
				match(STRING_);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class EncodingContext extends ParserRuleContext {
		public TerminalNode STRING_() { return getToken(OpenGaussStatementParser.STRING_, 0); }
		public TerminalNode DEFAULT() { return getToken(OpenGaussStatementParser.DEFAULT, 0); }
		public EncodingContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_encoding; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitEncoding(this);
			else return visitor.visitChildren(this);
		}
	}

	public final EncodingContext encoding() throws RecognitionException {
		EncodingContext _localctx = new EncodingContext(_ctx, getState());
		enterRule(_localctx, 666, RULE_encoding);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5274);
			_la = _input.LA(1);
			if ( !(_la==DEFAULT || _la==STRING_) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class GenericSetContext extends ParserRuleContext {
		public VarNameContext varName() {
			return getRuleContext(VarNameContext.class,0);
		}
		public TerminalNode EQ_() { return getToken(OpenGaussStatementParser.EQ_, 0); }
		public TerminalNode TO() { return getToken(OpenGaussStatementParser.TO, 0); }
		public VarListContext varList() {
			return getRuleContext(VarListContext.class,0);
		}
		public TerminalNode DEFAULT() { return getToken(OpenGaussStatementParser.DEFAULT, 0); }
		public GenericSetContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_genericSet; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitGenericSet(this);
			else return visitor.visitChildren(this);
		}
	}

	public final GenericSetContext genericSet() throws RecognitionException {
		GenericSetContext _localctx = new GenericSetContext(_ctx, getState());
		enterRule(_localctx, 668, RULE_genericSet);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5276);
			varName(0);
			setState(5277);
			_la = _input.LA(1);
			if ( !(_la==EQ_ || _la==TO) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			setState(5280);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case PLUS_:
			case MINUS_:
			case UNICODE_ESCAPE:
			case INSERT:
			case UPDATE:
			case DELETE:
			case ALTER:
			case DROP:
			case TRUNCATE:
			case SCHEMA:
			case REVOKE:
			case ADD:
			case SET:
			case INDEX:
			case KEY:
			case POSITION:
			case PRECISION:
			case FUNCTION:
			case TRIGGER:
			case PROCEDURE:
			case VIEW:
			case VALUES:
			case TRIM:
			case SUBSTRING:
			case NATURAL:
			case JOIN:
			case FULL:
			case INNER:
			case OUTER:
			case LEFT:
			case RIGHT:
			case CROSS:
			case ON:
			case IF:
			case IS:
			case TRUE:
			case FALSE:
			case EXISTS:
			case BETWEEN:
			case LIKE:
			case BY:
			case BEGIN:
			case COMMIT:
			case ROLLBACK:
			case SAVEPOINT:
			case BOOLEAN:
			case DOUBLE:
			case CHAR:
			case CHARACTER:
			case INTERVAL:
			case TIME:
			case TIMESTAMP:
			case YEAR:
			case MONTH:
			case DAY:
			case HOUR:
			case MINUTE:
			case SECOND:
			case CURRENT:
			case ENABLE:
			case DISABLE:
			case CALL:
			case PRESERVE:
			case DEFINER:
			case SQL:
			case CASCADED:
			case LOCAL:
			case CLOSE:
			case NEXT:
			case NAME:
			case COLLATION:
			case NAMES:
			case INTEGER:
			case REAL:
			case DECIMAL:
			case TYPE:
			case SMALLINT:
			case BIGINT:
			case NUMERIC:
			case TEXT:
			case REPEATABLE:
			case NULLIF:
			case VARYING:
			case NATIONAL:
			case NCHAR:
			case VALUE:
			case COALESCE:
			case TIES:
			case CUBE:
			case GROUPING:
			case SETS:
			case OTHERS:
			case OVERLAPS:
			case AT:
			case DEC:
			case MAXVALUE:
			case ADMIN:
			case BINARY:
			case ESCAPE:
			case EXCLUDE:
			case MOD:
			case PARTITION:
			case ROW:
			case UNKNOWN:
			case ALWAYS:
			case CASCADE:
			case GENERATED:
			case ISOLATION:
			case LEVEL:
			case NO:
			case OPTION:
			case PRIVILEGES:
			case READ:
			case ROLE:
			case ROWS:
			case START:
			case TRANSACTION:
			case ACTION:
			case CACHE:
			case CHARACTERISTICS:
			case CLUSTER:
			case COMMENTS:
			case CONCURRENTLY:
			case CONSTRAINTS:
			case CYCLE:
			case DATA:
			case DATABASE:
			case DEFAULTS:
			case DEFERRED:
			case DEPENDS:
			case DOMAIN:
			case EXCLUDING:
			case EXECUTE:
			case EXTENDED:
			case EXTENSION:
			case EXTERNAL:
			case EXTRACT:
			case FILTER:
			case FIRST:
			case FOLLOWING:
			case FORCE:
			case GLOBAL:
			case IDENTITY:
			case IMMEDIATE:
			case INCLUDING:
			case INCREMENT:
			case INDEXES:
			case INHERIT:
			case INHERITS:
			case INCLUDE:
			case LANGUAGE:
			case LARGE:
			case LAST:
			case LOGGED:
			case MAIN:
			case MATCH:
			case MINVALUE:
			case NOTHING:
			case NULLS:
			case OBJECT:
			case OIDS:
			case OVER:
			case OWNED:
			case OWNER:
			case PARTIAL:
			case PLAIN:
			case PRECEDING:
			case RANGE:
			case RENAME:
			case REPLICA:
			case RESET:
			case RESTART:
			case RESTRICT:
			case ROUTINE:
			case RULE:
			case SECURITY:
			case SEQUENCE:
			case SESSION:
			case SHOW:
			case SIMPLE:
			case STATISTICS:
			case STORAGE:
			case TABLESPACE:
			case TEMP:
			case TEMPORARY:
			case UNBOUNDED:
			case UNLOGGED:
			case VALID:
			case VALIDATE:
			case WITHIN:
			case WITHOUT:
			case ZONE:
			case OF:
			case UESCAPE:
			case GROUPS:
			case RECURSIVE:
			case INT:
			case INT2:
			case INT4:
			case FLOAT:
			case FLOAT4:
			case VARCHAR:
			case BYTEA:
			case ENUM:
			case POINT:
			case LSEG:
			case BOX:
			case PATH:
			case POLYGON:
			case CIRCLE:
			case INET:
			case BIT:
			case TSQUERY:
			case XML:
			case JSON:
			case INT4RANGE:
			case INT8RANGE:
			case NUMRANGE:
			case DATERANGE:
			case TABLESAMPLE:
			case ORDINALITY:
			case CURRENT_SCHEMA:
			case OVERLAY:
			case XMLCONCAT:
			case XMLELEMENT:
			case XMLEXISTS:
			case XMLFOREST:
			case XMLPARSE:
			case XMLPI:
			case XMLROOT:
			case XMLSERIALIZE:
			case TREAT:
			case SETOF:
			case NFC:
			case NFD:
			case NFKC:
			case NFKD:
			case XMLATTRIBUTES:
			case REF:
			case PASSING:
			case VERSION:
			case YES:
			case STANDALONE:
			case GREATEST:
			case LEAST:
			case MATERIALIZED:
			case OPERATOR:
			case SHARE:
			case ROLLUP:
			case ILIKE:
			case SIMILAR:
			case ISNULL:
			case NOTNULL:
			case DOCUMENT:
			case NORMALIZED:
			case NOWAIT:
			case LOCKED:
			case XMLTABLE:
			case COLUMNS:
			case CONTENT:
			case STRIP:
			case WHITESPACE:
			case XMLNAMESPACES:
			case NONE:
			case CONFLICT:
			case OVERRIDING:
			case SYSTEM:
			case ABORT:
			case ABSOLUTE:
			case ACCESS:
			case AFTER:
			case AGGREGATE:
			case ALSO:
			case ATTACH:
			case ATTRIBUTE:
			case BACKWARD:
			case BEFORE:
			case ASSERTION:
			case ASSIGNMENT:
			case CONTINUE:
			case CONVERSION:
			case COPY:
			case COST:
			case CSV:
			case CALLED:
			case CATALOG:
			case CHAIN:
			case CHECKPOINT:
			case CLASS:
			case CONFIGURATION:
			case COMMENT:
			case DETACH:
			case DICTIONARY:
			case EXPRESSION:
			case INSENSITIVE:
			case DISCARD:
			case OFF:
			case INSTEAD:
			case EXPLAIN:
			case INPUT:
			case INLINE:
			case PARALLEL:
			case LEAKPROOF:
			case COMMITTED:
			case ENCODING:
			case IMPLICIT:
			case DELIMITER:
			case CURSOR:
			case EACH:
			case EVENT:
			case DEALLOCATE:
			case CONNECTION:
			case DECLARE:
			case FAMILY:
			case FORWARD:
			case EXCLUSIVE:
			case FUNCTIONS:
			case LOCATION:
			case LABEL:
			case DELIMITERS:
			case HANDLER:
			case HEADER:
			case IMMUTABLE:
			case GRANTED:
			case HOLD:
			case MAPPING:
			case OLD:
			case METHOD:
			case LOAD:
			case LISTEN:
			case MODE:
			case MOVE:
			case PROCEDURAL:
			case PARSER:
			case PROCEDURES:
			case ENCRYPTED:
			case PUBLICATION:
			case PROGRAM:
			case REFERENCING:
			case PLANS:
			case REINDEX:
			case PRIOR:
			case PASSWORD:
			case RELATIVE:
			case QUOTE:
			case ROUTINES:
			case REPLACE:
			case SNAPSHOT:
			case REFRESH:
			case PREPARE:
			case OPTIONS:
			case IMPORT:
			case INVOKER:
			case NEW:
			case PREPARED:
			case SCROLL:
			case SEQUENCES:
			case SYSID:
			case REASSIGN:
			case SERVER:
			case SUBSCRIPTION:
			case SEARCH:
			case SCHEMAS:
			case RECHECK:
			case POLICY:
			case NOTIFY:
			case LOCK:
			case RELEASE:
			case SERIALIZABLE:
			case RETURNS:
			case STATEMENT:
			case STDIN:
			case STDOUT:
			case TABLES:
			case SUPPORT:
			case STABLE:
			case TEMPLATE:
			case UNENCRYPTED:
			case VIEWS:
			case UNCOMMITTED:
			case TRANSFORM:
			case UNLISTEN:
			case TRUSTED:
			case VALIDATOR:
			case UNTIL:
			case VACUUM:
			case VOLATILE:
			case STORED:
			case WRITE:
			case STRICT:
			case TYPES:
			case WRAPPER:
			case WORK:
			case FREEZE:
			case AUTHORIZATION:
			case VERBOSE:
			case OUT:
			case INOUT:
			case INT16:
			case INT1:
			case ELEM_CONTAINED_BY_RANGE:
			case IDENTIFIER_:
			case STRING_:
			case NUMBER_:
				{
				setState(5278);
				varList();
				}
				break;
			case DEFAULT:
				{
				setState(5279);
				match(DEFAULT);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class VariableResetStmtContext extends ParserRuleContext {
		public TerminalNode RESET() { return getToken(OpenGaussStatementParser.RESET, 0); }
		public ResetRestContext resetRest() {
			return getRuleContext(ResetRestContext.class,0);
		}
		public VariableResetStmtContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_variableResetStmt; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitVariableResetStmt(this);
			else return visitor.visitChildren(this);
		}
	}

	public final VariableResetStmtContext variableResetStmt() throws RecognitionException {
		VariableResetStmtContext _localctx = new VariableResetStmtContext(_ctx, getState());
		enterRule(_localctx, 670, RULE_variableResetStmt);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5282);
			match(RESET);
			setState(5283);
			resetRest();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ResetRestContext extends ParserRuleContext {
		public GenericResetContext genericReset() {
			return getRuleContext(GenericResetContext.class,0);
		}
		public TerminalNode TIME() { return getToken(OpenGaussStatementParser.TIME, 0); }
		public TerminalNode ZONE() { return getToken(OpenGaussStatementParser.ZONE, 0); }
		public TerminalNode TRANSACTION() { return getToken(OpenGaussStatementParser.TRANSACTION, 0); }
		public TerminalNode ISOLATION() { return getToken(OpenGaussStatementParser.ISOLATION, 0); }
		public TerminalNode LEVEL() { return getToken(OpenGaussStatementParser.LEVEL, 0); }
		public TerminalNode SESSION() { return getToken(OpenGaussStatementParser.SESSION, 0); }
		public TerminalNode AUTHORIZATION() { return getToken(OpenGaussStatementParser.AUTHORIZATION, 0); }
		public ResetRestContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_resetRest; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitResetRest(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ResetRestContext resetRest() throws RecognitionException {
		ResetRestContext _localctx = new ResetRestContext(_ctx, getState());
		enterRule(_localctx, 672, RULE_resetRest);
		try {
			setState(5293);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,397,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(5285);
				genericReset();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(5286);
				match(TIME);
				setState(5287);
				match(ZONE);
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(5288);
				match(TRANSACTION);
				setState(5289);
				match(ISOLATION);
				setState(5290);
				match(LEVEL);
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(5291);
				match(SESSION);
				setState(5292);
				match(AUTHORIZATION);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class GenericResetContext extends ParserRuleContext {
		public VarNameContext varName() {
			return getRuleContext(VarNameContext.class,0);
		}
		public TerminalNode ALL() { return getToken(OpenGaussStatementParser.ALL, 0); }
		public GenericResetContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_genericReset; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitGenericReset(this);
			else return visitor.visitChildren(this);
		}
	}

	public final GenericResetContext genericReset() throws RecognitionException {
		GenericResetContext _localctx = new GenericResetContext(_ctx, getState());
		enterRule(_localctx, 674, RULE_genericReset);
		try {
			setState(5297);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case UNICODE_ESCAPE:
			case INSERT:
			case UPDATE:
			case DELETE:
			case ALTER:
			case DROP:
			case TRUNCATE:
			case SCHEMA:
			case REVOKE:
			case ADD:
			case SET:
			case INDEX:
			case KEY:
			case POSITION:
			case FUNCTION:
			case TRIGGER:
			case PROCEDURE:
			case VIEW:
			case IF:
			case BY:
			case BEGIN:
			case COMMIT:
			case ROLLBACK:
			case SAVEPOINT:
			case DOUBLE:
			case INTERVAL:
			case TIME:
			case TIMESTAMP:
			case YEAR:
			case MONTH:
			case DAY:
			case HOUR:
			case MINUTE:
			case SECOND:
			case CURRENT:
			case ENABLE:
			case DISABLE:
			case CALL:
			case PRESERVE:
			case DEFINER:
			case SQL:
			case CASCADED:
			case LOCAL:
			case CLOSE:
			case NEXT:
			case NAME:
			case NAMES:
			case TYPE:
			case TEXT:
			case REPEATABLE:
			case VARYING:
			case NATIONAL:
			case VALUE:
			case TIES:
			case CUBE:
			case SETS:
			case OTHERS:
			case AT:
			case MAXVALUE:
			case ADMIN:
			case ESCAPE:
			case EXCLUDE:
			case MOD:
			case PARTITION:
			case UNKNOWN:
			case ALWAYS:
			case CASCADE:
			case GENERATED:
			case ISOLATION:
			case LEVEL:
			case NO:
			case OPTION:
			case PRIVILEGES:
			case READ:
			case ROLE:
			case ROWS:
			case START:
			case TRANSACTION:
			case ACTION:
			case CACHE:
			case CHARACTERISTICS:
			case CLUSTER:
			case COMMENTS:
			case CONSTRAINTS:
			case CYCLE:
			case DATA:
			case DATABASE:
			case DEFAULTS:
			case DEFERRED:
			case DEPENDS:
			case DOMAIN:
			case EXCLUDING:
			case EXECUTE:
			case EXTENDED:
			case EXTENSION:
			case EXTERNAL:
			case FILTER:
			case FIRST:
			case FOLLOWING:
			case FORCE:
			case GLOBAL:
			case IDENTITY:
			case IMMEDIATE:
			case INCLUDING:
			case INCREMENT:
			case INDEXES:
			case INHERIT:
			case INHERITS:
			case INCLUDE:
			case LANGUAGE:
			case LARGE:
			case LAST:
			case LOGGED:
			case MAIN:
			case MATCH:
			case MINVALUE:
			case NOTHING:
			case NULLS:
			case OBJECT:
			case OIDS:
			case OVER:
			case OWNED:
			case OWNER:
			case PARTIAL:
			case PLAIN:
			case PRECEDING:
			case RANGE:
			case RENAME:
			case REPLICA:
			case RESET:
			case RESTART:
			case RESTRICT:
			case ROUTINE:
			case RULE:
			case SECURITY:
			case SEQUENCE:
			case SESSION:
			case SHOW:
			case SIMPLE:
			case STATISTICS:
			case STORAGE:
			case TABLESPACE:
			case TEMP:
			case TEMPORARY:
			case UNBOUNDED:
			case UNLOGGED:
			case VALID:
			case VALIDATE:
			case WITHIN:
			case WITHOUT:
			case ZONE:
			case OF:
			case UESCAPE:
			case GROUPS:
			case RECURSIVE:
			case INT2:
			case INT4:
			case FLOAT4:
			case BYTEA:
			case ENUM:
			case POINT:
			case LSEG:
			case BOX:
			case PATH:
			case POLYGON:
			case CIRCLE:
			case INET:
			case TSQUERY:
			case XML:
			case JSON:
			case INT4RANGE:
			case INT8RANGE:
			case NUMRANGE:
			case DATERANGE:
			case ORDINALITY:
			case NFC:
			case NFD:
			case NFKC:
			case NFKD:
			case REF:
			case PASSING:
			case VERSION:
			case YES:
			case STANDALONE:
			case MATERIALIZED:
			case OPERATOR:
			case SHARE:
			case ROLLUP:
			case DOCUMENT:
			case NORMALIZED:
			case NOWAIT:
			case LOCKED:
			case COLUMNS:
			case CONTENT:
			case STRIP:
			case WHITESPACE:
			case CONFLICT:
			case OVERRIDING:
			case SYSTEM:
			case ABORT:
			case ABSOLUTE:
			case ACCESS:
			case AFTER:
			case AGGREGATE:
			case ALSO:
			case ATTACH:
			case ATTRIBUTE:
			case BACKWARD:
			case BEFORE:
			case ASSERTION:
			case ASSIGNMENT:
			case CONTINUE:
			case CONVERSION:
			case COPY:
			case COST:
			case CSV:
			case CALLED:
			case CATALOG:
			case CHAIN:
			case CHECKPOINT:
			case CLASS:
			case CONFIGURATION:
			case COMMENT:
			case DETACH:
			case DICTIONARY:
			case EXPRESSION:
			case INSENSITIVE:
			case DISCARD:
			case OFF:
			case INSTEAD:
			case EXPLAIN:
			case INPUT:
			case INLINE:
			case PARALLEL:
			case LEAKPROOF:
			case COMMITTED:
			case ENCODING:
			case IMPLICIT:
			case DELIMITER:
			case CURSOR:
			case EACH:
			case EVENT:
			case DEALLOCATE:
			case CONNECTION:
			case DECLARE:
			case FAMILY:
			case FORWARD:
			case EXCLUSIVE:
			case FUNCTIONS:
			case LOCATION:
			case LABEL:
			case DELIMITERS:
			case HANDLER:
			case HEADER:
			case IMMUTABLE:
			case GRANTED:
			case HOLD:
			case MAPPING:
			case OLD:
			case METHOD:
			case LOAD:
			case LISTEN:
			case MODE:
			case MOVE:
			case PROCEDURAL:
			case PARSER:
			case PROCEDURES:
			case ENCRYPTED:
			case PUBLICATION:
			case PROGRAM:
			case REFERENCING:
			case PLANS:
			case REINDEX:
			case PRIOR:
			case PASSWORD:
			case RELATIVE:
			case QUOTE:
			case ROUTINES:
			case REPLACE:
			case SNAPSHOT:
			case REFRESH:
			case PREPARE:
			case OPTIONS:
			case IMPORT:
			case INVOKER:
			case NEW:
			case PREPARED:
			case SCROLL:
			case SEQUENCES:
			case SYSID:
			case REASSIGN:
			case SERVER:
			case SUBSCRIPTION:
			case SEARCH:
			case SCHEMAS:
			case RECHECK:
			case POLICY:
			case NOTIFY:
			case LOCK:
			case RELEASE:
			case SERIALIZABLE:
			case RETURNS:
			case STATEMENT:
			case STDIN:
			case STDOUT:
			case TABLES:
			case SUPPORT:
			case STABLE:
			case TEMPLATE:
			case UNENCRYPTED:
			case VIEWS:
			case UNCOMMITTED:
			case TRANSFORM:
			case UNLISTEN:
			case TRUSTED:
			case VALIDATOR:
			case UNTIL:
			case VACUUM:
			case VOLATILE:
			case STORED:
			case WRITE:
			case STRICT:
			case TYPES:
			case WRAPPER:
			case WORK:
			case INT16:
			case INT1:
			case ELEM_CONTAINED_BY_RANGE:
			case IDENTIFIER_:
				enterOuterAlt(_localctx, 1);
				{
				setState(5295);
				varName(0);
				}
				break;
			case ALL:
				enterOuterAlt(_localctx, 2);
				{
				setState(5296);
				match(ALL);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class RelationExprListContext extends ParserRuleContext {
		public List relationExpr() {
			return getRuleContexts(RelationExprContext.class);
		}
		public RelationExprContext relationExpr(int i) {
			return getRuleContext(RelationExprContext.class,i);
		}
		public List COMMA_() { return getTokens(OpenGaussStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(OpenGaussStatementParser.COMMA_, i);
		}
		public RelationExprListContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_relationExprList; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitRelationExprList(this);
			else return visitor.visitChildren(this);
		}
	}

	public final RelationExprListContext relationExprList() throws RecognitionException {
		RelationExprListContext _localctx = new RelationExprListContext(_ctx, getState());
		enterRule(_localctx, 676, RULE_relationExprList);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5299);
			relationExpr();
			setState(5304);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA_) {
				{
				{
				setState(5300);
				match(COMMA_);
				setState(5301);
				relationExpr();
				}
				}
				setState(5306);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CommonFuncOptItemContext extends ParserRuleContext {
		public TerminalNode CALLED() { return getToken(OpenGaussStatementParser.CALLED, 0); }
		public TerminalNode ON() { return getToken(OpenGaussStatementParser.ON, 0); }
		public List NULL() { return getTokens(OpenGaussStatementParser.NULL); }
		public TerminalNode NULL(int i) {
			return getToken(OpenGaussStatementParser.NULL, i);
		}
		public TerminalNode INPUT() { return getToken(OpenGaussStatementParser.INPUT, 0); }
		public TerminalNode RETURNS() { return getToken(OpenGaussStatementParser.RETURNS, 0); }
		public TerminalNode STRICT() { return getToken(OpenGaussStatementParser.STRICT, 0); }
		public TerminalNode IMMUTABLE() { return getToken(OpenGaussStatementParser.IMMUTABLE, 0); }
		public TerminalNode STABLE() { return getToken(OpenGaussStatementParser.STABLE, 0); }
		public TerminalNode VOLATILE() { return getToken(OpenGaussStatementParser.VOLATILE, 0); }
		public TerminalNode EXTERNAL() { return getToken(OpenGaussStatementParser.EXTERNAL, 0); }
		public TerminalNode SECURITY() { return getToken(OpenGaussStatementParser.SECURITY, 0); }
		public TerminalNode DEFINER() { return getToken(OpenGaussStatementParser.DEFINER, 0); }
		public TerminalNode INVOKER() { return getToken(OpenGaussStatementParser.INVOKER, 0); }
		public TerminalNode LEAKPROOF() { return getToken(OpenGaussStatementParser.LEAKPROOF, 0); }
		public TerminalNode NOT() { return getToken(OpenGaussStatementParser.NOT, 0); }
		public TerminalNode COST() { return getToken(OpenGaussStatementParser.COST, 0); }
		public NumericOnlyContext numericOnly() {
			return getRuleContext(NumericOnlyContext.class,0);
		}
		public TerminalNode ROWS() { return getToken(OpenGaussStatementParser.ROWS, 0); }
		public TerminalNode SUPPORT() { return getToken(OpenGaussStatementParser.SUPPORT, 0); }
		public AnyNameContext anyName() {
			return getRuleContext(AnyNameContext.class,0);
		}
		public FunctionSetResetClauseContext functionSetResetClause() {
			return getRuleContext(FunctionSetResetClauseContext.class,0);
		}
		public TerminalNode PARALLEL() { return getToken(OpenGaussStatementParser.PARALLEL, 0); }
		public ColIdContext colId() {
			return getRuleContext(ColIdContext.class,0);
		}
		public CommonFuncOptItemContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_commonFuncOptItem; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitCommonFuncOptItem(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CommonFuncOptItemContext commonFuncOptItem() throws RecognitionException {
		CommonFuncOptItemContext _localctx = new CommonFuncOptItemContext(_ctx, getState());
		enterRule(_localctx, 678, RULE_commonFuncOptItem);
		try {
			setState(5342);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,400,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(5307);
				match(CALLED);
				setState(5308);
				match(ON);
				setState(5309);
				match(NULL);
				setState(5310);
				match(INPUT);
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(5311);
				match(RETURNS);
				setState(5312);
				match(NULL);
				setState(5313);
				match(ON);
				setState(5314);
				match(NULL);
				setState(5315);
				match(INPUT);
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(5316);
				match(STRICT);
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(5317);
				match(IMMUTABLE);
				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(5318);
				match(STABLE);
				}
				break;
			case 6:
				enterOuterAlt(_localctx, 6);
				{
				setState(5319);
				match(VOLATILE);
				}
				break;
			case 7:
				enterOuterAlt(_localctx, 7);
				{
				setState(5320);
				match(EXTERNAL);
				setState(5321);
				match(SECURITY);
				setState(5322);
				match(DEFINER);
				}
				break;
			case 8:
				enterOuterAlt(_localctx, 8);
				{
				setState(5323);
				match(EXTERNAL);
				setState(5324);
				match(SECURITY);
				setState(5325);
				match(INVOKER);
				}
				break;
			case 9:
				enterOuterAlt(_localctx, 9);
				{
				setState(5326);
				match(SECURITY);
				setState(5327);
				match(DEFINER);
				}
				break;
			case 10:
				enterOuterAlt(_localctx, 10);
				{
				setState(5328);
				match(SECURITY);
				setState(5329);
				match(INVOKER);
				}
				break;
			case 11:
				enterOuterAlt(_localctx, 11);
				{
				setState(5330);
				match(LEAKPROOF);
				}
				break;
			case 12:
				enterOuterAlt(_localctx, 12);
				{
				setState(5331);
				match(NOT);
				setState(5332);
				match(LEAKPROOF);
				}
				break;
			case 13:
				enterOuterAlt(_localctx, 13);
				{
				setState(5333);
				match(COST);
				setState(5334);
				numericOnly();
				}
				break;
			case 14:
				enterOuterAlt(_localctx, 14);
				{
				setState(5335);
				match(ROWS);
				setState(5336);
				numericOnly();
				}
				break;
			case 15:
				enterOuterAlt(_localctx, 15);
				{
				setState(5337);
				match(SUPPORT);
				setState(5338);
				anyName();
				}
				break;
			case 16:
				enterOuterAlt(_localctx, 16);
				{
				setState(5339);
				functionSetResetClause();
				}
				break;
			case 17:
				enterOuterAlt(_localctx, 17);
				{
				setState(5340);
				match(PARALLEL);
				setState(5341);
				colId();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class FunctionSetResetClauseContext extends ParserRuleContext {
		public TerminalNode SET() { return getToken(OpenGaussStatementParser.SET, 0); }
		public SetRestMoreContext setRestMore() {
			return getRuleContext(SetRestMoreContext.class,0);
		}
		public VariableResetStmtContext variableResetStmt() {
			return getRuleContext(VariableResetStmtContext.class,0);
		}
		public FunctionSetResetClauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_functionSetResetClause; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitFunctionSetResetClause(this);
			else return visitor.visitChildren(this);
		}
	}

	public final FunctionSetResetClauseContext functionSetResetClause() throws RecognitionException {
		FunctionSetResetClauseContext _localctx = new FunctionSetResetClauseContext(_ctx, getState());
		enterRule(_localctx, 680, RULE_functionSetResetClause);
		try {
			setState(5347);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case SET:
				enterOuterAlt(_localctx, 1);
				{
				setState(5344);
				match(SET);
				setState(5345);
				setRestMore();
				}
				break;
			case RESET:
				enterOuterAlt(_localctx, 2);
				{
				setState(5346);
				variableResetStmt();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class RowSecurityCmdContext extends ParserRuleContext {
		public TerminalNode ALL() { return getToken(OpenGaussStatementParser.ALL, 0); }
		public TerminalNode SELECT() { return getToken(OpenGaussStatementParser.SELECT, 0); }
		public TerminalNode INSERT() { return getToken(OpenGaussStatementParser.INSERT, 0); }
		public TerminalNode UPDATE() { return getToken(OpenGaussStatementParser.UPDATE, 0); }
		public TerminalNode DELETE() { return getToken(OpenGaussStatementParser.DELETE, 0); }
		public RowSecurityCmdContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_rowSecurityCmd; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitRowSecurityCmd(this);
			else return visitor.visitChildren(this);
		}
	}

	public final RowSecurityCmdContext rowSecurityCmd() throws RecognitionException {
		RowSecurityCmdContext _localctx = new RowSecurityCmdContext(_ctx, getState());
		enterRule(_localctx, 682, RULE_rowSecurityCmd);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5349);
			_la = _input.LA(1);
			if ( !(((((_la - 80)) & ~0x3f) == 0 && ((1L << (_la - 80)) & ((1L << (SELECT - 80)) | (1L << (INSERT - 80)) | (1L << (UPDATE - 80)) | (1L << (DELETE - 80)))) != 0) || _la==ALL) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class EventContext extends ParserRuleContext {
		public TerminalNode SELECT() { return getToken(OpenGaussStatementParser.SELECT, 0); }
		public TerminalNode UPDATE() { return getToken(OpenGaussStatementParser.UPDATE, 0); }
		public TerminalNode DELETE() { return getToken(OpenGaussStatementParser.DELETE, 0); }
		public TerminalNode INSERT() { return getToken(OpenGaussStatementParser.INSERT, 0); }
		public EventContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_event; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitEvent(this);
			else return visitor.visitChildren(this);
		}
	}

	public final EventContext event() throws RecognitionException {
		EventContext _localctx = new EventContext(_ctx, getState());
		enterRule(_localctx, 684, RULE_event);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5351);
			_la = _input.LA(1);
			if ( !(((((_la - 80)) & ~0x3f) == 0 && ((1L << (_la - 80)) & ((1L << (SELECT - 80)) | (1L << (INSERT - 80)) | (1L << (UPDATE - 80)) | (1L << (DELETE - 80)))) != 0)) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class TypeNameListContext extends ParserRuleContext {
		public List typeName() {
			return getRuleContexts(TypeNameContext.class);
		}
		public TypeNameContext typeName(int i) {
			return getRuleContext(TypeNameContext.class,i);
		}
		public List COMMA_() { return getTokens(OpenGaussStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(OpenGaussStatementParser.COMMA_, i);
		}
		public TypeNameListContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_typeNameList; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitTypeNameList(this);
			else return visitor.visitChildren(this);
		}
	}

	public final TypeNameListContext typeNameList() throws RecognitionException {
		TypeNameListContext _localctx = new TypeNameListContext(_ctx, getState());
		enterRule(_localctx, 686, RULE_typeNameList);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5353);
			typeName();
			setState(5358);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA_) {
				{
				{
				setState(5354);
				match(COMMA_);
				setState(5355);
				typeName();
				}
				}
				setState(5360);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class IfNotExistsContext extends ParserRuleContext {
		public TerminalNode IF() { return getToken(OpenGaussStatementParser.IF, 0); }
		public TerminalNode NOT() { return getToken(OpenGaussStatementParser.NOT, 0); }
		public TerminalNode EXISTS() { return getToken(OpenGaussStatementParser.EXISTS, 0); }
		public IfNotExistsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_ifNotExists; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitIfNotExists(this);
			else return visitor.visitChildren(this);
		}
	}

	public final IfNotExistsContext ifNotExists() throws RecognitionException {
		IfNotExistsContext _localctx = new IfNotExistsContext(_ctx, getState());
		enterRule(_localctx, 688, RULE_ifNotExists);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5361);
			match(IF);
			setState(5362);
			match(NOT);
			setState(5363);
			match(EXISTS);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class IfExistsContext extends ParserRuleContext {
		public TerminalNode IF() { return getToken(OpenGaussStatementParser.IF, 0); }
		public TerminalNode EXISTS() { return getToken(OpenGaussStatementParser.EXISTS, 0); }
		public IfExistsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_ifExists; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitIfExists(this);
			else return visitor.visitChildren(this);
		}
	}

	public final IfExistsContext ifExists() throws RecognitionException {
		IfExistsContext _localctx = new IfExistsContext(_ctx, getState());
		enterRule(_localctx, 690, RULE_ifExists);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5365);
			match(IF);
			setState(5366);
			match(EXISTS);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class GrantContext extends ParserRuleContext {
		public TerminalNode GRANT() { return getToken(OpenGaussStatementParser.GRANT, 0); }
		public PrivilegeClauseContext privilegeClause() {
			return getRuleContext(PrivilegeClauseContext.class,0);
		}
		public RoleClauseContext roleClause() {
			return getRuleContext(RoleClauseContext.class,0);
		}
		public GrantContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_grant; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitGrant(this);
			else return visitor.visitChildren(this);
		}
	}

	public final GrantContext grant() throws RecognitionException {
		GrantContext _localctx = new GrantContext(_ctx, getState());
		enterRule(_localctx, 692, RULE_grant);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5368);
			match(GRANT);
			setState(5371);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,403,_ctx) ) {
			case 1:
				{
				setState(5369);
				privilegeClause();
				}
				break;
			case 2:
				{
				setState(5370);
				roleClause();
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class RevokeContext extends ParserRuleContext {
		public TerminalNode REVOKE() { return getToken(OpenGaussStatementParser.REVOKE, 0); }
		public PrivilegeClauseContext privilegeClause() {
			return getRuleContext(PrivilegeClauseContext.class,0);
		}
		public RoleClauseContext roleClause() {
			return getRuleContext(RoleClauseContext.class,0);
		}
		public OptionForClauseContext optionForClause() {
			return getRuleContext(OptionForClauseContext.class,0);
		}
		public TerminalNode CASCADE() { return getToken(OpenGaussStatementParser.CASCADE, 0); }
		public TerminalNode RESTRICT() { return getToken(OpenGaussStatementParser.RESTRICT, 0); }
		public RevokeContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_revoke; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitRevoke(this);
			else return visitor.visitChildren(this);
		}
	}

	public final RevokeContext revoke() throws RecognitionException {
		RevokeContext _localctx = new RevokeContext(_ctx, getState());
		enterRule(_localctx, 694, RULE_revoke);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5373);
			match(REVOKE);
			setState(5375);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,404,_ctx) ) {
			case 1:
				{
				setState(5374);
				optionForClause();
				}
				break;
			}
			setState(5379);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,405,_ctx) ) {
			case 1:
				{
				setState(5377);
				privilegeClause();
				}
				break;
			case 2:
				{
				setState(5378);
				roleClause();
				}
				break;
			}
			setState(5382);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==CASCADE || _la==RESTRICT) {
				{
				setState(5381);
				_la = _input.LA(1);
				if ( !(_la==CASCADE || _la==RESTRICT) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class OptionForClauseContext extends ParserRuleContext {
		public TerminalNode OPTION() { return getToken(OpenGaussStatementParser.OPTION, 0); }
		public TerminalNode FOR() { return getToken(OpenGaussStatementParser.FOR, 0); }
		public TerminalNode GRANT() { return getToken(OpenGaussStatementParser.GRANT, 0); }
		public TerminalNode ADMIN() { return getToken(OpenGaussStatementParser.ADMIN, 0); }
		public OptionForClauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_optionForClause; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitOptionForClause(this);
			else return visitor.visitChildren(this);
		}
	}

	public final OptionForClauseContext optionForClause() throws RecognitionException {
		OptionForClauseContext _localctx = new OptionForClauseContext(_ctx, getState());
		enterRule(_localctx, 696, RULE_optionForClause);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5384);
			_la = _input.LA(1);
			if ( !(_la==GRANT || _la==ADMIN) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			setState(5385);
			match(OPTION);
			setState(5386);
			match(FOR);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CreateUserContext extends ParserRuleContext {
		public TerminalNode CREATE() { return getToken(OpenGaussStatementParser.CREATE, 0); }
		public TerminalNode USER() { return getToken(OpenGaussStatementParser.USER, 0); }
		public RoleSpecContext roleSpec() {
			return getRuleContext(RoleSpecContext.class,0);
		}
		public TerminalNode WITH() { return getToken(OpenGaussStatementParser.WITH, 0); }
		public List createOptRoleElem() {
			return getRuleContexts(CreateOptRoleElemContext.class);
		}
		public CreateOptRoleElemContext createOptRoleElem(int i) {
			return getRuleContext(CreateOptRoleElemContext.class,i);
		}
		public CreateUserContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_createUser; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitCreateUser(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CreateUserContext createUser() throws RecognitionException {
		CreateUserContext _localctx = new CreateUserContext(_ctx, getState());
		enterRule(_localctx, 698, RULE_createUser);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5388);
			match(CREATE);
			setState(5389);
			match(USER);
			setState(5390);
			roleSpec();
			setState(5392);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==WITH) {
				{
				setState(5391);
				match(WITH);
				}
			}

			setState(5397);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==UNICODE_ESCAPE || ((((_la - 81)) & ~0x3f) == 0 && ((1L << (_la - 81)) & ((1L << (INSERT - 81)) | (1L << (UPDATE - 81)) | (1L << (DELETE - 81)) | (1L << (ALTER - 81)) | (1L << (DROP - 81)) | (1L << (TRUNCATE - 81)) | (1L << (SCHEMA - 81)) | (1L << (REVOKE - 81)) | (1L << (ADD - 81)) | (1L << (SET - 81)) | (1L << (INDEX - 81)) | (1L << (KEY - 81)) | (1L << (POSITION - 81)) | (1L << (FUNCTION - 81)) | (1L << (TRIGGER - 81)) | (1L << (PROCEDURE - 81)) | (1L << (VIEW - 81)) | (1L << (IF - 81)))) != 0) || ((((_la - 145)) & ~0x3f) == 0 && ((1L << (_la - 145)) & ((1L << (IN - 145)) | (1L << (BY - 145)) | (1L << (BEGIN - 145)) | (1L << (COMMIT - 145)) | (1L << (ROLLBACK - 145)) | (1L << (SAVEPOINT - 145)) | (1L << (DOUBLE - 145)) | (1L << (INTERVAL - 145)) | (1L << (TIME - 145)) | (1L << (TIMESTAMP - 145)) | (1L << (YEAR - 145)) | (1L << (MONTH - 145)) | (1L << (DAY - 145)) | (1L << (HOUR - 145)) | (1L << (MINUTE - 145)) | (1L << (SECOND - 145)) | (1L << (CURRENT - 145)) | (1L << (ENABLE - 145)) | (1L << (DISABLE - 145)) | (1L << (CALL - 145)) | (1L << (PRESERVE - 145)) | (1L << (DEFINER - 145)) | (1L << (SQL - 145)) | (1L << (CASCADED - 145)) | (1L << (LOCAL - 145)) | (1L << (CLOSE - 145)) | (1L << (NEXT - 145)) | (1L << (NAME - 145)) | (1L << (NAMES - 145)) | (1L << (TYPE - 145)) | (1L << (TEXT - 145)) | (1L << (REPEATABLE - 145)))) != 0) || ((((_la - 213)) & ~0x3f) == 0 && ((1L << (_la - 213)) & ((1L << (VARYING - 213)) | (1L << (NATIONAL - 213)) | (1L << (VALUE - 213)) | (1L << (TIES - 213)) | (1L << (CUBE - 213)) | (1L << (SETS - 213)) | (1L << (OTHERS - 213)) | (1L << (AT - 213)) | (1L << (MAXVALUE - 213)) | (1L << (ADMIN - 213)) | (1L << (ESCAPE - 213)) | (1L << (EXCLUDE - 213)) | (1L << (MOD - 213)) | (1L << (PARTITION - 213)) | (1L << (UNKNOWN - 213)) | (1L << (ALWAYS - 213)) | (1L << (CASCADE - 213)) | (1L << (GENERATED - 213)) | (1L << (ISOLATION - 213)) | (1L << (LEVEL - 213)) | (1L << (NO - 213)) | (1L << (OPTION - 213)) | (1L << (PRIVILEGES - 213)) | (1L << (READ - 213)) | (1L << (ROLE - 213)) | (1L << (ROWS - 213)) | (1L << (START - 213)) | (1L << (TRANSACTION - 213)) | (1L << (USER - 213)) | (1L << (ACTION - 213)) | (1L << (CACHE - 213)) | (1L << (CHARACTERISTICS - 213)) | (1L << (CLUSTER - 213)) | (1L << (COMMENTS - 213)) | (1L << (CONSTRAINTS - 213)) | (1L << (CYCLE - 213)) | (1L << (DATA - 213)) | (1L << (DATABASE - 213)))) != 0) || ((((_la - 277)) & ~0x3f) == 0 && ((1L << (_la - 277)) & ((1L << (DEFAULTS - 277)) | (1L << (DEFERRED - 277)) | (1L << (DEPENDS - 277)) | (1L << (DOMAIN - 277)) | (1L << (EXCLUDING - 277)) | (1L << (EXECUTE - 277)) | (1L << (EXTENDED - 277)) | (1L << (EXTENSION - 277)) | (1L << (EXTERNAL - 277)) | (1L << (FILTER - 277)) | (1L << (FIRST - 277)) | (1L << (FOLLOWING - 277)) | (1L << (FORCE - 277)) | (1L << (GLOBAL - 277)) | (1L << (IDENTITY - 277)) | (1L << (IMMEDIATE - 277)) | (1L << (INCLUDING - 277)) | (1L << (INCREMENT - 277)) | (1L << (INDEXES - 277)) | (1L << (INHERIT - 277)) | (1L << (INHERITS - 277)) | (1L << (INCLUDE - 277)) | (1L << (LANGUAGE - 277)) | (1L << (LARGE - 277)) | (1L << (LAST - 277)) | (1L << (LOGGED - 277)) | (1L << (MAIN - 277)) | (1L << (MATCH - 277)) | (1L << (MINVALUE - 277)) | (1L << (NOTHING - 277)) | (1L << (NULLS - 277)) | (1L << (OBJECT - 277)) | (1L << (OIDS - 277)) | (1L << (OVER - 277)) | (1L << (OWNED - 277)) | (1L << (OWNER - 277)) | (1L << (PARTIAL - 277)) | (1L << (PLAIN - 277)) | (1L << (PRECEDING - 277)) | (1L << (RANGE - 277)) | (1L << (RENAME - 277)) | (1L << (REPLICA - 277)) | (1L << (RESET - 277)) | (1L << (RESTART - 277)) | (1L << (RESTRICT - 277)) | (1L << (ROUTINE - 277)) | (1L << (RULE - 277)) | (1L << (SECURITY - 277)) | (1L << (SEQUENCE - 277)) | (1L << (SESSION - 277)) | (1L << (SHOW - 277)) | (1L << (SIMPLE - 277)) | (1L << (STATISTICS - 277)) | (1L << (STORAGE - 277)) | (1L << (TABLESPACE - 277)) | (1L << (TEMP - 277)) | (1L << (TEMPORARY - 277)) | (1L << (UNBOUNDED - 277)))) != 0) || ((((_la - 341)) & ~0x3f) == 0 && ((1L << (_la - 341)) & ((1L << (UNLOGGED - 341)) | (1L << (VALID - 341)) | (1L << (VALIDATE - 341)) | (1L << (WITHIN - 341)) | (1L << (WITHOUT - 341)) | (1L << (ZONE - 341)) | (1L << (OF - 341)) | (1L << (UESCAPE - 341)) | (1L << (GROUPS - 341)) | (1L << (RECURSIVE - 341)) | (1L << (INT2 - 341)) | (1L << (INT4 - 341)) | (1L << (FLOAT4 - 341)) | (1L << (BYTEA - 341)) | (1L << (ENUM - 341)) | (1L << (POINT - 341)) | (1L << (LSEG - 341)) | (1L << (BOX - 341)) | (1L << (PATH - 341)) | (1L << (POLYGON - 341)) | (1L << (CIRCLE - 341)) | (1L << (INET - 341)) | (1L << (TSQUERY - 341)) | (1L << (XML - 341)) | (1L << (JSON - 341)) | (1L << (INT4RANGE - 341)) | (1L << (INT8RANGE - 341)) | (1L << (NUMRANGE - 341)) | (1L << (DATERANGE - 341)) | (1L << (ORDINALITY - 341)))) != 0) || ((((_la - 405)) & ~0x3f) == 0 && ((1L << (_la - 405)) & ((1L << (NFC - 405)) | (1L << (NFD - 405)) | (1L << (NFKC - 405)) | (1L << (NFKD - 405)) | (1L << (REF - 405)) | (1L << (PASSING - 405)) | (1L << (VERSION - 405)) | (1L << (YES - 405)) | (1L << (STANDALONE - 405)) | (1L << (MATERIALIZED - 405)) | (1L << (OPERATOR - 405)) | (1L << (SHARE - 405)) | (1L << (ROLLUP - 405)) | (1L << (DOCUMENT - 405)) | (1L << (NORMALIZED - 405)) | (1L << (NOWAIT - 405)) | (1L << (LOCKED - 405)) | (1L << (COLUMNS - 405)) | (1L << (CONTENT - 405)) | (1L << (STRIP - 405)) | (1L << (WHITESPACE - 405)) | (1L << (CONFLICT - 405)) | (1L << (OVERRIDING - 405)) | (1L << (SYSTEM - 405)) | (1L << (ABORT - 405)) | (1L << (ABSOLUTE - 405)) | (1L << (ACCESS - 405)) | (1L << (AFTER - 405)) | (1L << (AGGREGATE - 405)) | (1L << (ALSO - 405)) | (1L << (ATTACH - 405)) | (1L << (ATTRIBUTE - 405)) | (1L << (BACKWARD - 405)) | (1L << (BEFORE - 405)) | (1L << (ASSERTION - 405)) | (1L << (ASSIGNMENT - 405)) | (1L << (CONTINUE - 405)) | (1L << (CONVERSION - 405)) | (1L << (COPY - 405)) | (1L << (COST - 405)) | (1L << (CSV - 405)) | (1L << (CALLED - 405)) | (1L << (CATALOG - 405)) | (1L << (CHAIN - 405)) | (1L << (CHECKPOINT - 405)) | (1L << (CLASS - 405)))) != 0) || ((((_la - 469)) & ~0x3f) == 0 && ((1L << (_la - 469)) & ((1L << (CONFIGURATION - 469)) | (1L << (COMMENT - 469)) | (1L << (DETACH - 469)) | (1L << (DICTIONARY - 469)) | (1L << (EXPRESSION - 469)) | (1L << (INSENSITIVE - 469)) | (1L << (DISCARD - 469)) | (1L << (OFF - 469)) | (1L << (INSTEAD - 469)) | (1L << (EXPLAIN - 469)) | (1L << (INPUT - 469)) | (1L << (INLINE - 469)) | (1L << (PARALLEL - 469)) | (1L << (LEAKPROOF - 469)) | (1L << (COMMITTED - 469)) | (1L << (ENCODING - 469)) | (1L << (IMPLICIT - 469)) | (1L << (DELIMITER - 469)) | (1L << (CURSOR - 469)) | (1L << (EACH - 469)) | (1L << (EVENT - 469)) | (1L << (DEALLOCATE - 469)) | (1L << (CONNECTION - 469)) | (1L << (DECLARE - 469)) | (1L << (FAMILY - 469)) | (1L << (FORWARD - 469)) | (1L << (EXCLUSIVE - 469)) | (1L << (FUNCTIONS - 469)) | (1L << (LOCATION - 469)) | (1L << (LABEL - 469)) | (1L << (DELIMITERS - 469)) | (1L << (HANDLER - 469)) | (1L << (HEADER - 469)) | (1L << (IMMUTABLE - 469)) | (1L << (GRANTED - 469)) | (1L << (HOLD - 469)) | (1L << (MAPPING - 469)) | (1L << (OLD - 469)) | (1L << (METHOD - 469)) | (1L << (LOAD - 469)) | (1L << (LISTEN - 469)) | (1L << (MODE - 469)) | (1L << (MOVE - 469)) | (1L << (PROCEDURAL - 469)) | (1L << (PARSER - 469)) | (1L << (PROCEDURES - 469)) | (1L << (ENCRYPTED - 469)) | (1L << (PUBLICATION - 469)) | (1L << (PROGRAM - 469)) | (1L << (REFERENCING - 469)) | (1L << (PLANS - 469)) | (1L << (REINDEX - 469)) | (1L << (PRIOR - 469)) | (1L << (PASSWORD - 469)) | (1L << (RELATIVE - 469)) | (1L << (QUOTE - 469)) | (1L << (ROUTINES - 469)) | (1L << (REPLACE - 469)) | (1L << (SNAPSHOT - 469)) | (1L << (REFRESH - 469)) | (1L << (PREPARE - 469)) | (1L << (OPTIONS - 469)) | (1L << (IMPORT - 469)))) != 0) || ((((_la - 533)) & ~0x3f) == 0 && ((1L << (_la - 533)) & ((1L << (INVOKER - 533)) | (1L << (NEW - 533)) | (1L << (PREPARED - 533)) | (1L << (SCROLL - 533)) | (1L << (SEQUENCES - 533)) | (1L << (SYSID - 533)) | (1L << (REASSIGN - 533)) | (1L << (SERVER - 533)) | (1L << (SUBSCRIPTION - 533)) | (1L << (SEARCH - 533)) | (1L << (SCHEMAS - 533)) | (1L << (RECHECK - 533)) | (1L << (POLICY - 533)) | (1L << (NOTIFY - 533)) | (1L << (LOCK - 533)) | (1L << (RELEASE - 533)) | (1L << (SERIALIZABLE - 533)) | (1L << (RETURNS - 533)) | (1L << (STATEMENT - 533)) | (1L << (STDIN - 533)) | (1L << (STDOUT - 533)) | (1L << (TABLES - 533)) | (1L << (SUPPORT - 533)) | (1L << (STABLE - 533)) | (1L << (TEMPLATE - 533)) | (1L << (UNENCRYPTED - 533)) | (1L << (VIEWS - 533)) | (1L << (UNCOMMITTED - 533)) | (1L << (TRANSFORM - 533)) | (1L << (UNLISTEN - 533)) | (1L << (TRUSTED - 533)) | (1L << (VALIDATOR - 533)) | (1L << (UNTIL - 533)) | (1L << (VACUUM - 533)) | (1L << (VOLATILE - 533)) | (1L << (STORED - 533)) | (1L << (WRITE - 533)) | (1L << (STRICT - 533)) | (1L << (TYPES - 533)) | (1L << (WRAPPER - 533)) | (1L << (WORK - 533)) | (1L << (INT16 - 533)) | (1L << (INT1 - 533)) | (1L << (ELEM_CONTAINED_BY_RANGE - 533)) | (1L << (IDENTIFIER_ - 533)))) != 0)) {
				{
				{
				setState(5394);
				createOptRoleElem();
				}
				}
				setState(5399);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CreateOptRoleElemContext extends ParserRuleContext {
		public AlterOptRoleElemContext alterOptRoleElem() {
			return getRuleContext(AlterOptRoleElemContext.class,0);
		}
		public TerminalNode SYSID() { return getToken(OpenGaussStatementParser.SYSID, 0); }
		public TerminalNode NUMBER_() { return getToken(OpenGaussStatementParser.NUMBER_, 0); }
		public TerminalNode ADMIN() { return getToken(OpenGaussStatementParser.ADMIN, 0); }
		public RoleListContext roleList() {
			return getRuleContext(RoleListContext.class,0);
		}
		public TerminalNode ROLE() { return getToken(OpenGaussStatementParser.ROLE, 0); }
		public TerminalNode IN() { return getToken(OpenGaussStatementParser.IN, 0); }
		public TerminalNode GROUP() { return getToken(OpenGaussStatementParser.GROUP, 0); }
		public CreateOptRoleElemContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_createOptRoleElem; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitCreateOptRoleElem(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CreateOptRoleElemContext createOptRoleElem() throws RecognitionException {
		CreateOptRoleElemContext _localctx = new CreateOptRoleElemContext(_ctx, getState());
		enterRule(_localctx, 700, RULE_createOptRoleElem);
		try {
			setState(5413);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,409,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(5400);
				alterOptRoleElem();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(5401);
				match(SYSID);
				setState(5402);
				match(NUMBER_);
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(5403);
				match(ADMIN);
				setState(5404);
				roleList();
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(5405);
				match(ROLE);
				setState(5406);
				roleList();
				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(5407);
				match(IN);
				setState(5408);
				match(ROLE);
				setState(5409);
				roleList();
				}
				break;
			case 6:
				enterOuterAlt(_localctx, 6);
				{
				setState(5410);
				match(IN);
				setState(5411);
				match(GROUP);
				setState(5412);
				roleList();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterOptRoleElemContext extends ParserRuleContext {
		public TerminalNode PASSWORD() { return getToken(OpenGaussStatementParser.PASSWORD, 0); }
		public TerminalNode STRING_() { return getToken(OpenGaussStatementParser.STRING_, 0); }
		public TerminalNode NULL() { return getToken(OpenGaussStatementParser.NULL, 0); }
		public TerminalNode ENCRYPTED() { return getToken(OpenGaussStatementParser.ENCRYPTED, 0); }
		public TerminalNode UNENCRYPTED() { return getToken(OpenGaussStatementParser.UNENCRYPTED, 0); }
		public TerminalNode INHERIT() { return getToken(OpenGaussStatementParser.INHERIT, 0); }
		public TerminalNode CONNECTION() { return getToken(OpenGaussStatementParser.CONNECTION, 0); }
		public TerminalNode LIMIT() { return getToken(OpenGaussStatementParser.LIMIT, 0); }
		public SignedIconstContext signedIconst() {
			return getRuleContext(SignedIconstContext.class,0);
		}
		public TerminalNode VALID() { return getToken(OpenGaussStatementParser.VALID, 0); }
		public TerminalNode UNTIL() { return getToken(OpenGaussStatementParser.UNTIL, 0); }
		public TerminalNode USER() { return getToken(OpenGaussStatementParser.USER, 0); }
		public RoleListContext roleList() {
			return getRuleContext(RoleListContext.class,0);
		}
		public IdentifierContext identifier() {
			return getRuleContext(IdentifierContext.class,0);
		}
		public AlterOptRoleElemContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterOptRoleElem; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitAlterOptRoleElem(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AlterOptRoleElemContext alterOptRoleElem() throws RecognitionException {
		AlterOptRoleElemContext _localctx = new AlterOptRoleElemContext(_ctx, getState());
		enterRule(_localctx, 702, RULE_alterOptRoleElem);
		try {
			setState(5435);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,410,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(5415);
				match(PASSWORD);
				setState(5416);
				match(STRING_);
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(5417);
				match(PASSWORD);
				setState(5418);
				match(NULL);
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(5419);
				match(ENCRYPTED);
				setState(5420);
				match(PASSWORD);
				setState(5421);
				match(STRING_);
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(5422);
				match(UNENCRYPTED);
				setState(5423);
				match(PASSWORD);
				setState(5424);
				match(STRING_);
				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(5425);
				match(INHERIT);
				}
				break;
			case 6:
				enterOuterAlt(_localctx, 6);
				{
				setState(5426);
				match(CONNECTION);
				setState(5427);
				match(LIMIT);
				setState(5428);
				signedIconst();
				}
				break;
			case 7:
				enterOuterAlt(_localctx, 7);
				{
				setState(5429);
				match(VALID);
				setState(5430);
				match(UNTIL);
				setState(5431);
				match(STRING_);
				}
				break;
			case 8:
				enterOuterAlt(_localctx, 8);
				{
				setState(5432);
				match(USER);
				setState(5433);
				roleList();
				}
				break;
			case 9:
				enterOuterAlt(_localctx, 9);
				{
				setState(5434);
				identifier();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DropBehaviorContext extends ParserRuleContext {
		public TerminalNode CASCADE() { return getToken(OpenGaussStatementParser.CASCADE, 0); }
		public TerminalNode RESTRICT() { return getToken(OpenGaussStatementParser.RESTRICT, 0); }
		public DropBehaviorContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_dropBehavior; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitDropBehavior(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DropBehaviorContext dropBehavior() throws RecognitionException {
		DropBehaviorContext _localctx = new DropBehaviorContext(_ctx, getState());
		enterRule(_localctx, 704, RULE_dropBehavior);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5437);
			_la = _input.LA(1);
			if ( !(_la==CASCADE || _la==RESTRICT) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DropUserContext extends ParserRuleContext {
		public TerminalNode DROP() { return getToken(OpenGaussStatementParser.DROP, 0); }
		public TerminalNode USER() { return getToken(OpenGaussStatementParser.USER, 0); }
		public NameListContext nameList() {
			return getRuleContext(NameListContext.class,0);
		}
		public IfExistsContext ifExists() {
			return getRuleContext(IfExistsContext.class,0);
		}
		public DropBehaviorContext dropBehavior() {
			return getRuleContext(DropBehaviorContext.class,0);
		}
		public DropUserContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_dropUser; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitDropUser(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DropUserContext dropUser() throws RecognitionException {
		DropUserContext _localctx = new DropUserContext(_ctx, getState());
		enterRule(_localctx, 706, RULE_dropUser);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5439);
			match(DROP);
			setState(5440);
			match(USER);
			setState(5442);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,411,_ctx) ) {
			case 1:
				{
				setState(5441);
				ifExists();
				}
				break;
			}
			setState(5444);
			nameList(0);
			setState(5446);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==CASCADE || _la==RESTRICT) {
				{
				setState(5445);
				dropBehavior();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterUserContext extends ParserRuleContext {
		public TerminalNode ALTER() { return getToken(OpenGaussStatementParser.ALTER, 0); }
		public TerminalNode USER() { return getToken(OpenGaussStatementParser.USER, 0); }
		public AlterUserClausesContext alterUserClauses() {
			return getRuleContext(AlterUserClausesContext.class,0);
		}
		public AlterUserContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterUser; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitAlterUser(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AlterUserContext alterUser() throws RecognitionException {
		AlterUserContext _localctx = new AlterUserContext(_ctx, getState());
		enterRule(_localctx, 708, RULE_alterUser);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5448);
			match(ALTER);
			setState(5449);
			match(USER);
			setState(5450);
			alterUserClauses();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterUserClausesContext extends ParserRuleContext {
		public List roleSpec() {
			return getRuleContexts(RoleSpecContext.class);
		}
		public RoleSpecContext roleSpec(int i) {
			return getRuleContext(RoleSpecContext.class,i);
		}
		public AlterOptRoleListContext alterOptRoleList() {
			return getRuleContext(AlterOptRoleListContext.class,0);
		}
		public TerminalNode WITH() { return getToken(OpenGaussStatementParser.WITH, 0); }
		public SetResetClauseContext setResetClause() {
			return getRuleContext(SetResetClauseContext.class,0);
		}
		public TerminalNode IN() { return getToken(OpenGaussStatementParser.IN, 0); }
		public TerminalNode DATABASE() { return getToken(OpenGaussStatementParser.DATABASE, 0); }
		public NameContext name() {
			return getRuleContext(NameContext.class,0);
		}
		public TerminalNode ALL() { return getToken(OpenGaussStatementParser.ALL, 0); }
		public TerminalNode RENAME() { return getToken(OpenGaussStatementParser.RENAME, 0); }
		public TerminalNode TO() { return getToken(OpenGaussStatementParser.TO, 0); }
		public AlterUserClausesContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterUserClauses; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitAlterUserClauses(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AlterUserClausesContext alterUserClauses() throws RecognitionException {
		AlterUserClausesContext _localctx = new AlterUserClausesContext(_ctx, getState());
		enterRule(_localctx, 710, RULE_alterUserClauses);
		int _la;
		try {
			setState(5478);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,416,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(5452);
				roleSpec();
				setState(5454);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==WITH) {
					{
					setState(5453);
					match(WITH);
					}
				}

				setState(5456);
				alterOptRoleList();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(5458);
				roleSpec();
				setState(5462);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==IN) {
					{
					setState(5459);
					match(IN);
					setState(5460);
					match(DATABASE);
					setState(5461);
					name();
					}
				}

				setState(5464);
				setResetClause();
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(5466);
				match(ALL);
				setState(5470);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==IN) {
					{
					setState(5467);
					match(IN);
					setState(5468);
					match(DATABASE);
					setState(5469);
					name();
					}
				}

				setState(5472);
				setResetClause();
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(5473);
				roleSpec();
				setState(5474);
				match(RENAME);
				setState(5475);
				match(TO);
				setState(5476);
				roleSpec();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterOptRoleListContext extends ParserRuleContext {
		public List alterOptRoleElem() {
			return getRuleContexts(AlterOptRoleElemContext.class);
		}
		public AlterOptRoleElemContext alterOptRoleElem(int i) {
			return getRuleContext(AlterOptRoleElemContext.class,i);
		}
		public AlterOptRoleListContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterOptRoleList; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitAlterOptRoleList(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AlterOptRoleListContext alterOptRoleList() throws RecognitionException {
		AlterOptRoleListContext _localctx = new AlterOptRoleListContext(_ctx, getState());
		enterRule(_localctx, 712, RULE_alterOptRoleList);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5483);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==UNICODE_ESCAPE || ((((_la - 81)) & ~0x3f) == 0 && ((1L << (_la - 81)) & ((1L << (INSERT - 81)) | (1L << (UPDATE - 81)) | (1L << (DELETE - 81)) | (1L << (ALTER - 81)) | (1L << (DROP - 81)) | (1L << (TRUNCATE - 81)) | (1L << (SCHEMA - 81)) | (1L << (REVOKE - 81)) | (1L << (ADD - 81)) | (1L << (SET - 81)) | (1L << (INDEX - 81)) | (1L << (KEY - 81)) | (1L << (POSITION - 81)) | (1L << (FUNCTION - 81)) | (1L << (TRIGGER - 81)) | (1L << (PROCEDURE - 81)) | (1L << (VIEW - 81)) | (1L << (IF - 81)))) != 0) || ((((_la - 151)) & ~0x3f) == 0 && ((1L << (_la - 151)) & ((1L << (BY - 151)) | (1L << (BEGIN - 151)) | (1L << (COMMIT - 151)) | (1L << (ROLLBACK - 151)) | (1L << (SAVEPOINT - 151)) | (1L << (DOUBLE - 151)) | (1L << (INTERVAL - 151)) | (1L << (TIME - 151)) | (1L << (TIMESTAMP - 151)) | (1L << (YEAR - 151)) | (1L << (MONTH - 151)) | (1L << (DAY - 151)) | (1L << (HOUR - 151)) | (1L << (MINUTE - 151)) | (1L << (SECOND - 151)) | (1L << (CURRENT - 151)) | (1L << (ENABLE - 151)) | (1L << (DISABLE - 151)) | (1L << (CALL - 151)) | (1L << (PRESERVE - 151)) | (1L << (DEFINER - 151)) | (1L << (SQL - 151)) | (1L << (CASCADED - 151)) | (1L << (LOCAL - 151)) | (1L << (CLOSE - 151)) | (1L << (NEXT - 151)) | (1L << (NAME - 151)) | (1L << (NAMES - 151)) | (1L << (TYPE - 151)) | (1L << (TEXT - 151)) | (1L << (REPEATABLE - 151)) | (1L << (VARYING - 151)) | (1L << (NATIONAL - 151)))) != 0) || ((((_la - 216)) & ~0x3f) == 0 && ((1L << (_la - 216)) & ((1L << (VALUE - 216)) | (1L << (TIES - 216)) | (1L << (CUBE - 216)) | (1L << (SETS - 216)) | (1L << (OTHERS - 216)) | (1L << (AT - 216)) | (1L << (MAXVALUE - 216)) | (1L << (ADMIN - 216)) | (1L << (ESCAPE - 216)) | (1L << (EXCLUDE - 216)) | (1L << (MOD - 216)) | (1L << (PARTITION - 216)) | (1L << (UNKNOWN - 216)) | (1L << (ALWAYS - 216)) | (1L << (CASCADE - 216)) | (1L << (GENERATED - 216)) | (1L << (ISOLATION - 216)) | (1L << (LEVEL - 216)) | (1L << (NO - 216)) | (1L << (OPTION - 216)) | (1L << (PRIVILEGES - 216)) | (1L << (READ - 216)) | (1L << (ROLE - 216)) | (1L << (ROWS - 216)) | (1L << (START - 216)) | (1L << (TRANSACTION - 216)) | (1L << (USER - 216)) | (1L << (ACTION - 216)) | (1L << (CACHE - 216)) | (1L << (CHARACTERISTICS - 216)) | (1L << (CLUSTER - 216)) | (1L << (COMMENTS - 216)) | (1L << (CONSTRAINTS - 216)) | (1L << (CYCLE - 216)) | (1L << (DATA - 216)) | (1L << (DATABASE - 216)) | (1L << (DEFAULTS - 216)) | (1L << (DEFERRED - 216)))) != 0) || ((((_la - 280)) & ~0x3f) == 0 && ((1L << (_la - 280)) & ((1L << (DEPENDS - 280)) | (1L << (DOMAIN - 280)) | (1L << (EXCLUDING - 280)) | (1L << (EXECUTE - 280)) | (1L << (EXTENDED - 280)) | (1L << (EXTENSION - 280)) | (1L << (EXTERNAL - 280)) | (1L << (FILTER - 280)) | (1L << (FIRST - 280)) | (1L << (FOLLOWING - 280)) | (1L << (FORCE - 280)) | (1L << (GLOBAL - 280)) | (1L << (IDENTITY - 280)) | (1L << (IMMEDIATE - 280)) | (1L << (INCLUDING - 280)) | (1L << (INCREMENT - 280)) | (1L << (INDEXES - 280)) | (1L << (INHERIT - 280)) | (1L << (INHERITS - 280)) | (1L << (INCLUDE - 280)) | (1L << (LANGUAGE - 280)) | (1L << (LARGE - 280)) | (1L << (LAST - 280)) | (1L << (LOGGED - 280)) | (1L << (MAIN - 280)) | (1L << (MATCH - 280)) | (1L << (MINVALUE - 280)) | (1L << (NOTHING - 280)) | (1L << (NULLS - 280)) | (1L << (OBJECT - 280)) | (1L << (OIDS - 280)) | (1L << (OVER - 280)) | (1L << (OWNED - 280)) | (1L << (OWNER - 280)) | (1L << (PARTIAL - 280)) | (1L << (PLAIN - 280)) | (1L << (PRECEDING - 280)) | (1L << (RANGE - 280)) | (1L << (RENAME - 280)) | (1L << (REPLICA - 280)) | (1L << (RESET - 280)) | (1L << (RESTART - 280)) | (1L << (RESTRICT - 280)) | (1L << (ROUTINE - 280)) | (1L << (RULE - 280)) | (1L << (SECURITY - 280)) | (1L << (SEQUENCE - 280)) | (1L << (SESSION - 280)) | (1L << (SHOW - 280)) | (1L << (SIMPLE - 280)) | (1L << (STATISTICS - 280)) | (1L << (STORAGE - 280)) | (1L << (TABLESPACE - 280)) | (1L << (TEMP - 280)) | (1L << (TEMPORARY - 280)) | (1L << (UNBOUNDED - 280)) | (1L << (UNLOGGED - 280)) | (1L << (VALID - 280)))) != 0) || ((((_la - 344)) & ~0x3f) == 0 && ((1L << (_la - 344)) & ((1L << (VALIDATE - 344)) | (1L << (WITHIN - 344)) | (1L << (WITHOUT - 344)) | (1L << (ZONE - 344)) | (1L << (OF - 344)) | (1L << (UESCAPE - 344)) | (1L << (GROUPS - 344)) | (1L << (RECURSIVE - 344)) | (1L << (INT2 - 344)) | (1L << (INT4 - 344)) | (1L << (FLOAT4 - 344)) | (1L << (BYTEA - 344)) | (1L << (ENUM - 344)) | (1L << (POINT - 344)) | (1L << (LSEG - 344)) | (1L << (BOX - 344)) | (1L << (PATH - 344)) | (1L << (POLYGON - 344)) | (1L << (CIRCLE - 344)) | (1L << (INET - 344)) | (1L << (TSQUERY - 344)) | (1L << (XML - 344)) | (1L << (JSON - 344)) | (1L << (INT4RANGE - 344)) | (1L << (INT8RANGE - 344)) | (1L << (NUMRANGE - 344)) | (1L << (DATERANGE - 344)) | (1L << (ORDINALITY - 344)) | (1L << (NFC - 344)) | (1L << (NFD - 344)) | (1L << (NFKC - 344)))) != 0) || ((((_la - 408)) & ~0x3f) == 0 && ((1L << (_la - 408)) & ((1L << (NFKD - 408)) | (1L << (REF - 408)) | (1L << (PASSING - 408)) | (1L << (VERSION - 408)) | (1L << (YES - 408)) | (1L << (STANDALONE - 408)) | (1L << (MATERIALIZED - 408)) | (1L << (OPERATOR - 408)) | (1L << (SHARE - 408)) | (1L << (ROLLUP - 408)) | (1L << (DOCUMENT - 408)) | (1L << (NORMALIZED - 408)) | (1L << (NOWAIT - 408)) | (1L << (LOCKED - 408)) | (1L << (COLUMNS - 408)) | (1L << (CONTENT - 408)) | (1L << (STRIP - 408)) | (1L << (WHITESPACE - 408)) | (1L << (CONFLICT - 408)) | (1L << (OVERRIDING - 408)) | (1L << (SYSTEM - 408)) | (1L << (ABORT - 408)) | (1L << (ABSOLUTE - 408)) | (1L << (ACCESS - 408)) | (1L << (AFTER - 408)) | (1L << (AGGREGATE - 408)) | (1L << (ALSO - 408)) | (1L << (ATTACH - 408)) | (1L << (ATTRIBUTE - 408)) | (1L << (BACKWARD - 408)) | (1L << (BEFORE - 408)) | (1L << (ASSERTION - 408)) | (1L << (ASSIGNMENT - 408)) | (1L << (CONTINUE - 408)) | (1L << (CONVERSION - 408)) | (1L << (COPY - 408)) | (1L << (COST - 408)) | (1L << (CSV - 408)) | (1L << (CALLED - 408)) | (1L << (CATALOG - 408)) | (1L << (CHAIN - 408)) | (1L << (CHECKPOINT - 408)) | (1L << (CLASS - 408)) | (1L << (CONFIGURATION - 408)) | (1L << (COMMENT - 408)) | (1L << (DETACH - 408)))) != 0) || ((((_la - 472)) & ~0x3f) == 0 && ((1L << (_la - 472)) & ((1L << (DICTIONARY - 472)) | (1L << (EXPRESSION - 472)) | (1L << (INSENSITIVE - 472)) | (1L << (DISCARD - 472)) | (1L << (OFF - 472)) | (1L << (INSTEAD - 472)) | (1L << (EXPLAIN - 472)) | (1L << (INPUT - 472)) | (1L << (INLINE - 472)) | (1L << (PARALLEL - 472)) | (1L << (LEAKPROOF - 472)) | (1L << (COMMITTED - 472)) | (1L << (ENCODING - 472)) | (1L << (IMPLICIT - 472)) | (1L << (DELIMITER - 472)) | (1L << (CURSOR - 472)) | (1L << (EACH - 472)) | (1L << (EVENT - 472)) | (1L << (DEALLOCATE - 472)) | (1L << (CONNECTION - 472)) | (1L << (DECLARE - 472)) | (1L << (FAMILY - 472)) | (1L << (FORWARD - 472)) | (1L << (EXCLUSIVE - 472)) | (1L << (FUNCTIONS - 472)) | (1L << (LOCATION - 472)) | (1L << (LABEL - 472)) | (1L << (DELIMITERS - 472)) | (1L << (HANDLER - 472)) | (1L << (HEADER - 472)) | (1L << (IMMUTABLE - 472)) | (1L << (GRANTED - 472)) | (1L << (HOLD - 472)) | (1L << (MAPPING - 472)) | (1L << (OLD - 472)) | (1L << (METHOD - 472)) | (1L << (LOAD - 472)) | (1L << (LISTEN - 472)) | (1L << (MODE - 472)) | (1L << (MOVE - 472)) | (1L << (PROCEDURAL - 472)) | (1L << (PARSER - 472)) | (1L << (PROCEDURES - 472)) | (1L << (ENCRYPTED - 472)) | (1L << (PUBLICATION - 472)) | (1L << (PROGRAM - 472)) | (1L << (REFERENCING - 472)) | (1L << (PLANS - 472)) | (1L << (REINDEX - 472)) | (1L << (PRIOR - 472)) | (1L << (PASSWORD - 472)) | (1L << (RELATIVE - 472)) | (1L << (QUOTE - 472)) | (1L << (ROUTINES - 472)) | (1L << (REPLACE - 472)) | (1L << (SNAPSHOT - 472)) | (1L << (REFRESH - 472)) | (1L << (PREPARE - 472)) | (1L << (OPTIONS - 472)) | (1L << (IMPORT - 472)) | (1L << (INVOKER - 472)) | (1L << (NEW - 472)) | (1L << (PREPARED - 472)))) != 0) || ((((_la - 536)) & ~0x3f) == 0 && ((1L << (_la - 536)) & ((1L << (SCROLL - 536)) | (1L << (SEQUENCES - 536)) | (1L << (SYSID - 536)) | (1L << (REASSIGN - 536)) | (1L << (SERVER - 536)) | (1L << (SUBSCRIPTION - 536)) | (1L << (SEARCH - 536)) | (1L << (SCHEMAS - 536)) | (1L << (RECHECK - 536)) | (1L << (POLICY - 536)) | (1L << (NOTIFY - 536)) | (1L << (LOCK - 536)) | (1L << (RELEASE - 536)) | (1L << (SERIALIZABLE - 536)) | (1L << (RETURNS - 536)) | (1L << (STATEMENT - 536)) | (1L << (STDIN - 536)) | (1L << (STDOUT - 536)) | (1L << (TABLES - 536)) | (1L << (SUPPORT - 536)) | (1L << (STABLE - 536)) | (1L << (TEMPLATE - 536)) | (1L << (UNENCRYPTED - 536)) | (1L << (VIEWS - 536)) | (1L << (UNCOMMITTED - 536)) | (1L << (TRANSFORM - 536)) | (1L << (UNLISTEN - 536)) | (1L << (TRUSTED - 536)) | (1L << (VALIDATOR - 536)) | (1L << (UNTIL - 536)) | (1L << (VACUUM - 536)) | (1L << (VOLATILE - 536)) | (1L << (STORED - 536)) | (1L << (WRITE - 536)) | (1L << (STRICT - 536)) | (1L << (TYPES - 536)) | (1L << (WRAPPER - 536)) | (1L << (WORK - 536)) | (1L << (INT16 - 536)) | (1L << (INT1 - 536)) | (1L << (ELEM_CONTAINED_BY_RANGE - 536)) | (1L << (IDENTIFIER_ - 536)))) != 0)) {
				{
				{
				setState(5480);
				alterOptRoleElem();
				}
				}
				setState(5485);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CreateRoleContext extends ParserRuleContext {
		public TerminalNode CREATE() { return getToken(OpenGaussStatementParser.CREATE, 0); }
		public TerminalNode ROLE() { return getToken(OpenGaussStatementParser.ROLE, 0); }
		public RoleSpecContext roleSpec() {
			return getRuleContext(RoleSpecContext.class,0);
		}
		public TerminalNode WITH() { return getToken(OpenGaussStatementParser.WITH, 0); }
		public List createOptRoleElem() {
			return getRuleContexts(CreateOptRoleElemContext.class);
		}
		public CreateOptRoleElemContext createOptRoleElem(int i) {
			return getRuleContext(CreateOptRoleElemContext.class,i);
		}
		public CreateRoleContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_createRole; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitCreateRole(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CreateRoleContext createRole() throws RecognitionException {
		CreateRoleContext _localctx = new CreateRoleContext(_ctx, getState());
		enterRule(_localctx, 714, RULE_createRole);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5486);
			match(CREATE);
			setState(5487);
			match(ROLE);
			setState(5488);
			roleSpec();
			setState(5490);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==WITH) {
				{
				setState(5489);
				match(WITH);
				}
			}

			setState(5495);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==UNICODE_ESCAPE || ((((_la - 81)) & ~0x3f) == 0 && ((1L << (_la - 81)) & ((1L << (INSERT - 81)) | (1L << (UPDATE - 81)) | (1L << (DELETE - 81)) | (1L << (ALTER - 81)) | (1L << (DROP - 81)) | (1L << (TRUNCATE - 81)) | (1L << (SCHEMA - 81)) | (1L << (REVOKE - 81)) | (1L << (ADD - 81)) | (1L << (SET - 81)) | (1L << (INDEX - 81)) | (1L << (KEY - 81)) | (1L << (POSITION - 81)) | (1L << (FUNCTION - 81)) | (1L << (TRIGGER - 81)) | (1L << (PROCEDURE - 81)) | (1L << (VIEW - 81)) | (1L << (IF - 81)))) != 0) || ((((_la - 145)) & ~0x3f) == 0 && ((1L << (_la - 145)) & ((1L << (IN - 145)) | (1L << (BY - 145)) | (1L << (BEGIN - 145)) | (1L << (COMMIT - 145)) | (1L << (ROLLBACK - 145)) | (1L << (SAVEPOINT - 145)) | (1L << (DOUBLE - 145)) | (1L << (INTERVAL - 145)) | (1L << (TIME - 145)) | (1L << (TIMESTAMP - 145)) | (1L << (YEAR - 145)) | (1L << (MONTH - 145)) | (1L << (DAY - 145)) | (1L << (HOUR - 145)) | (1L << (MINUTE - 145)) | (1L << (SECOND - 145)) | (1L << (CURRENT - 145)) | (1L << (ENABLE - 145)) | (1L << (DISABLE - 145)) | (1L << (CALL - 145)) | (1L << (PRESERVE - 145)) | (1L << (DEFINER - 145)) | (1L << (SQL - 145)) | (1L << (CASCADED - 145)) | (1L << (LOCAL - 145)) | (1L << (CLOSE - 145)) | (1L << (NEXT - 145)) | (1L << (NAME - 145)) | (1L << (NAMES - 145)) | (1L << (TYPE - 145)) | (1L << (TEXT - 145)) | (1L << (REPEATABLE - 145)))) != 0) || ((((_la - 213)) & ~0x3f) == 0 && ((1L << (_la - 213)) & ((1L << (VARYING - 213)) | (1L << (NATIONAL - 213)) | (1L << (VALUE - 213)) | (1L << (TIES - 213)) | (1L << (CUBE - 213)) | (1L << (SETS - 213)) | (1L << (OTHERS - 213)) | (1L << (AT - 213)) | (1L << (MAXVALUE - 213)) | (1L << (ADMIN - 213)) | (1L << (ESCAPE - 213)) | (1L << (EXCLUDE - 213)) | (1L << (MOD - 213)) | (1L << (PARTITION - 213)) | (1L << (UNKNOWN - 213)) | (1L << (ALWAYS - 213)) | (1L << (CASCADE - 213)) | (1L << (GENERATED - 213)) | (1L << (ISOLATION - 213)) | (1L << (LEVEL - 213)) | (1L << (NO - 213)) | (1L << (OPTION - 213)) | (1L << (PRIVILEGES - 213)) | (1L << (READ - 213)) | (1L << (ROLE - 213)) | (1L << (ROWS - 213)) | (1L << (START - 213)) | (1L << (TRANSACTION - 213)) | (1L << (USER - 213)) | (1L << (ACTION - 213)) | (1L << (CACHE - 213)) | (1L << (CHARACTERISTICS - 213)) | (1L << (CLUSTER - 213)) | (1L << (COMMENTS - 213)) | (1L << (CONSTRAINTS - 213)) | (1L << (CYCLE - 213)) | (1L << (DATA - 213)) | (1L << (DATABASE - 213)))) != 0) || ((((_la - 277)) & ~0x3f) == 0 && ((1L << (_la - 277)) & ((1L << (DEFAULTS - 277)) | (1L << (DEFERRED - 277)) | (1L << (DEPENDS - 277)) | (1L << (DOMAIN - 277)) | (1L << (EXCLUDING - 277)) | (1L << (EXECUTE - 277)) | (1L << (EXTENDED - 277)) | (1L << (EXTENSION - 277)) | (1L << (EXTERNAL - 277)) | (1L << (FILTER - 277)) | (1L << (FIRST - 277)) | (1L << (FOLLOWING - 277)) | (1L << (FORCE - 277)) | (1L << (GLOBAL - 277)) | (1L << (IDENTITY - 277)) | (1L << (IMMEDIATE - 277)) | (1L << (INCLUDING - 277)) | (1L << (INCREMENT - 277)) | (1L << (INDEXES - 277)) | (1L << (INHERIT - 277)) | (1L << (INHERITS - 277)) | (1L << (INCLUDE - 277)) | (1L << (LANGUAGE - 277)) | (1L << (LARGE - 277)) | (1L << (LAST - 277)) | (1L << (LOGGED - 277)) | (1L << (MAIN - 277)) | (1L << (MATCH - 277)) | (1L << (MINVALUE - 277)) | (1L << (NOTHING - 277)) | (1L << (NULLS - 277)) | (1L << (OBJECT - 277)) | (1L << (OIDS - 277)) | (1L << (OVER - 277)) | (1L << (OWNED - 277)) | (1L << (OWNER - 277)) | (1L << (PARTIAL - 277)) | (1L << (PLAIN - 277)) | (1L << (PRECEDING - 277)) | (1L << (RANGE - 277)) | (1L << (RENAME - 277)) | (1L << (REPLICA - 277)) | (1L << (RESET - 277)) | (1L << (RESTART - 277)) | (1L << (RESTRICT - 277)) | (1L << (ROUTINE - 277)) | (1L << (RULE - 277)) | (1L << (SECURITY - 277)) | (1L << (SEQUENCE - 277)) | (1L << (SESSION - 277)) | (1L << (SHOW - 277)) | (1L << (SIMPLE - 277)) | (1L << (STATISTICS - 277)) | (1L << (STORAGE - 277)) | (1L << (TABLESPACE - 277)) | (1L << (TEMP - 277)) | (1L << (TEMPORARY - 277)) | (1L << (UNBOUNDED - 277)))) != 0) || ((((_la - 341)) & ~0x3f) == 0 && ((1L << (_la - 341)) & ((1L << (UNLOGGED - 341)) | (1L << (VALID - 341)) | (1L << (VALIDATE - 341)) | (1L << (WITHIN - 341)) | (1L << (WITHOUT - 341)) | (1L << (ZONE - 341)) | (1L << (OF - 341)) | (1L << (UESCAPE - 341)) | (1L << (GROUPS - 341)) | (1L << (RECURSIVE - 341)) | (1L << (INT2 - 341)) | (1L << (INT4 - 341)) | (1L << (FLOAT4 - 341)) | (1L << (BYTEA - 341)) | (1L << (ENUM - 341)) | (1L << (POINT - 341)) | (1L << (LSEG - 341)) | (1L << (BOX - 341)) | (1L << (PATH - 341)) | (1L << (POLYGON - 341)) | (1L << (CIRCLE - 341)) | (1L << (INET - 341)) | (1L << (TSQUERY - 341)) | (1L << (XML - 341)) | (1L << (JSON - 341)) | (1L << (INT4RANGE - 341)) | (1L << (INT8RANGE - 341)) | (1L << (NUMRANGE - 341)) | (1L << (DATERANGE - 341)) | (1L << (ORDINALITY - 341)))) != 0) || ((((_la - 405)) & ~0x3f) == 0 && ((1L << (_la - 405)) & ((1L << (NFC - 405)) | (1L << (NFD - 405)) | (1L << (NFKC - 405)) | (1L << (NFKD - 405)) | (1L << (REF - 405)) | (1L << (PASSING - 405)) | (1L << (VERSION - 405)) | (1L << (YES - 405)) | (1L << (STANDALONE - 405)) | (1L << (MATERIALIZED - 405)) | (1L << (OPERATOR - 405)) | (1L << (SHARE - 405)) | (1L << (ROLLUP - 405)) | (1L << (DOCUMENT - 405)) | (1L << (NORMALIZED - 405)) | (1L << (NOWAIT - 405)) | (1L << (LOCKED - 405)) | (1L << (COLUMNS - 405)) | (1L << (CONTENT - 405)) | (1L << (STRIP - 405)) | (1L << (WHITESPACE - 405)) | (1L << (CONFLICT - 405)) | (1L << (OVERRIDING - 405)) | (1L << (SYSTEM - 405)) | (1L << (ABORT - 405)) | (1L << (ABSOLUTE - 405)) | (1L << (ACCESS - 405)) | (1L << (AFTER - 405)) | (1L << (AGGREGATE - 405)) | (1L << (ALSO - 405)) | (1L << (ATTACH - 405)) | (1L << (ATTRIBUTE - 405)) | (1L << (BACKWARD - 405)) | (1L << (BEFORE - 405)) | (1L << (ASSERTION - 405)) | (1L << (ASSIGNMENT - 405)) | (1L << (CONTINUE - 405)) | (1L << (CONVERSION - 405)) | (1L << (COPY - 405)) | (1L << (COST - 405)) | (1L << (CSV - 405)) | (1L << (CALLED - 405)) | (1L << (CATALOG - 405)) | (1L << (CHAIN - 405)) | (1L << (CHECKPOINT - 405)) | (1L << (CLASS - 405)))) != 0) || ((((_la - 469)) & ~0x3f) == 0 && ((1L << (_la - 469)) & ((1L << (CONFIGURATION - 469)) | (1L << (COMMENT - 469)) | (1L << (DETACH - 469)) | (1L << (DICTIONARY - 469)) | (1L << (EXPRESSION - 469)) | (1L << (INSENSITIVE - 469)) | (1L << (DISCARD - 469)) | (1L << (OFF - 469)) | (1L << (INSTEAD - 469)) | (1L << (EXPLAIN - 469)) | (1L << (INPUT - 469)) | (1L << (INLINE - 469)) | (1L << (PARALLEL - 469)) | (1L << (LEAKPROOF - 469)) | (1L << (COMMITTED - 469)) | (1L << (ENCODING - 469)) | (1L << (IMPLICIT - 469)) | (1L << (DELIMITER - 469)) | (1L << (CURSOR - 469)) | (1L << (EACH - 469)) | (1L << (EVENT - 469)) | (1L << (DEALLOCATE - 469)) | (1L << (CONNECTION - 469)) | (1L << (DECLARE - 469)) | (1L << (FAMILY - 469)) | (1L << (FORWARD - 469)) | (1L << (EXCLUSIVE - 469)) | (1L << (FUNCTIONS - 469)) | (1L << (LOCATION - 469)) | (1L << (LABEL - 469)) | (1L << (DELIMITERS - 469)) | (1L << (HANDLER - 469)) | (1L << (HEADER - 469)) | (1L << (IMMUTABLE - 469)) | (1L << (GRANTED - 469)) | (1L << (HOLD - 469)) | (1L << (MAPPING - 469)) | (1L << (OLD - 469)) | (1L << (METHOD - 469)) | (1L << (LOAD - 469)) | (1L << (LISTEN - 469)) | (1L << (MODE - 469)) | (1L << (MOVE - 469)) | (1L << (PROCEDURAL - 469)) | (1L << (PARSER - 469)) | (1L << (PROCEDURES - 469)) | (1L << (ENCRYPTED - 469)) | (1L << (PUBLICATION - 469)) | (1L << (PROGRAM - 469)) | (1L << (REFERENCING - 469)) | (1L << (PLANS - 469)) | (1L << (REINDEX - 469)) | (1L << (PRIOR - 469)) | (1L << (PASSWORD - 469)) | (1L << (RELATIVE - 469)) | (1L << (QUOTE - 469)) | (1L << (ROUTINES - 469)) | (1L << (REPLACE - 469)) | (1L << (SNAPSHOT - 469)) | (1L << (REFRESH - 469)) | (1L << (PREPARE - 469)) | (1L << (OPTIONS - 469)) | (1L << (IMPORT - 469)))) != 0) || ((((_la - 533)) & ~0x3f) == 0 && ((1L << (_la - 533)) & ((1L << (INVOKER - 533)) | (1L << (NEW - 533)) | (1L << (PREPARED - 533)) | (1L << (SCROLL - 533)) | (1L << (SEQUENCES - 533)) | (1L << (SYSID - 533)) | (1L << (REASSIGN - 533)) | (1L << (SERVER - 533)) | (1L << (SUBSCRIPTION - 533)) | (1L << (SEARCH - 533)) | (1L << (SCHEMAS - 533)) | (1L << (RECHECK - 533)) | (1L << (POLICY - 533)) | (1L << (NOTIFY - 533)) | (1L << (LOCK - 533)) | (1L << (RELEASE - 533)) | (1L << (SERIALIZABLE - 533)) | (1L << (RETURNS - 533)) | (1L << (STATEMENT - 533)) | (1L << (STDIN - 533)) | (1L << (STDOUT - 533)) | (1L << (TABLES - 533)) | (1L << (SUPPORT - 533)) | (1L << (STABLE - 533)) | (1L << (TEMPLATE - 533)) | (1L << (UNENCRYPTED - 533)) | (1L << (VIEWS - 533)) | (1L << (UNCOMMITTED - 533)) | (1L << (TRANSFORM - 533)) | (1L << (UNLISTEN - 533)) | (1L << (TRUSTED - 533)) | (1L << (VALIDATOR - 533)) | (1L << (UNTIL - 533)) | (1L << (VACUUM - 533)) | (1L << (VOLATILE - 533)) | (1L << (STORED - 533)) | (1L << (WRITE - 533)) | (1L << (STRICT - 533)) | (1L << (TYPES - 533)) | (1L << (WRAPPER - 533)) | (1L << (WORK - 533)) | (1L << (INT16 - 533)) | (1L << (INT1 - 533)) | (1L << (ELEM_CONTAINED_BY_RANGE - 533)) | (1L << (IDENTIFIER_ - 533)))) != 0)) {
				{
				{
				setState(5492);
				createOptRoleElem();
				}
				}
				setState(5497);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DropRoleContext extends ParserRuleContext {
		public TerminalNode DROP() { return getToken(OpenGaussStatementParser.DROP, 0); }
		public TerminalNode ROLE() { return getToken(OpenGaussStatementParser.ROLE, 0); }
		public RoleListContext roleList() {
			return getRuleContext(RoleListContext.class,0);
		}
		public IfExistsContext ifExists() {
			return getRuleContext(IfExistsContext.class,0);
		}
		public DropRoleContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_dropRole; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitDropRole(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DropRoleContext dropRole() throws RecognitionException {
		DropRoleContext _localctx = new DropRoleContext(_ctx, getState());
		enterRule(_localctx, 716, RULE_dropRole);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5498);
			match(DROP);
			setState(5499);
			match(ROLE);
			setState(5501);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,420,_ctx) ) {
			case 1:
				{
				setState(5500);
				ifExists();
				}
				break;
			}
			setState(5503);
			roleList();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterRoleContext extends ParserRuleContext {
		public TerminalNode ALTER() { return getToken(OpenGaussStatementParser.ALTER, 0); }
		public TerminalNode ROLE() { return getToken(OpenGaussStatementParser.ROLE, 0); }
		public AlterUserClausesContext alterUserClauses() {
			return getRuleContext(AlterUserClausesContext.class,0);
		}
		public AlterRoleContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterRole; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitAlterRole(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AlterRoleContext alterRole() throws RecognitionException {
		AlterRoleContext _localctx = new AlterRoleContext(_ctx, getState());
		enterRule(_localctx, 718, RULE_alterRole);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5505);
			match(ALTER);
			setState(5506);
			match(ROLE);
			setState(5507);
			alterUserClauses();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CreateGroupContext extends ParserRuleContext {
		public TerminalNode CREATE() { return getToken(OpenGaussStatementParser.CREATE, 0); }
		public TerminalNode GROUP() { return getToken(OpenGaussStatementParser.GROUP, 0); }
		public RoleSpecContext roleSpec() {
			return getRuleContext(RoleSpecContext.class,0);
		}
		public TerminalNode WITH() { return getToken(OpenGaussStatementParser.WITH, 0); }
		public List createOptRoleElem() {
			return getRuleContexts(CreateOptRoleElemContext.class);
		}
		public CreateOptRoleElemContext createOptRoleElem(int i) {
			return getRuleContext(CreateOptRoleElemContext.class,i);
		}
		public CreateGroupContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_createGroup; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitCreateGroup(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CreateGroupContext createGroup() throws RecognitionException {
		CreateGroupContext _localctx = new CreateGroupContext(_ctx, getState());
		enterRule(_localctx, 720, RULE_createGroup);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5509);
			match(CREATE);
			setState(5510);
			match(GROUP);
			setState(5511);
			roleSpec();
			setState(5513);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==WITH) {
				{
				setState(5512);
				match(WITH);
				}
			}

			setState(5518);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==UNICODE_ESCAPE || ((((_la - 81)) & ~0x3f) == 0 && ((1L << (_la - 81)) & ((1L << (INSERT - 81)) | (1L << (UPDATE - 81)) | (1L << (DELETE - 81)) | (1L << (ALTER - 81)) | (1L << (DROP - 81)) | (1L << (TRUNCATE - 81)) | (1L << (SCHEMA - 81)) | (1L << (REVOKE - 81)) | (1L << (ADD - 81)) | (1L << (SET - 81)) | (1L << (INDEX - 81)) | (1L << (KEY - 81)) | (1L << (POSITION - 81)) | (1L << (FUNCTION - 81)) | (1L << (TRIGGER - 81)) | (1L << (PROCEDURE - 81)) | (1L << (VIEW - 81)) | (1L << (IF - 81)))) != 0) || ((((_la - 145)) & ~0x3f) == 0 && ((1L << (_la - 145)) & ((1L << (IN - 145)) | (1L << (BY - 145)) | (1L << (BEGIN - 145)) | (1L << (COMMIT - 145)) | (1L << (ROLLBACK - 145)) | (1L << (SAVEPOINT - 145)) | (1L << (DOUBLE - 145)) | (1L << (INTERVAL - 145)) | (1L << (TIME - 145)) | (1L << (TIMESTAMP - 145)) | (1L << (YEAR - 145)) | (1L << (MONTH - 145)) | (1L << (DAY - 145)) | (1L << (HOUR - 145)) | (1L << (MINUTE - 145)) | (1L << (SECOND - 145)) | (1L << (CURRENT - 145)) | (1L << (ENABLE - 145)) | (1L << (DISABLE - 145)) | (1L << (CALL - 145)) | (1L << (PRESERVE - 145)) | (1L << (DEFINER - 145)) | (1L << (SQL - 145)) | (1L << (CASCADED - 145)) | (1L << (LOCAL - 145)) | (1L << (CLOSE - 145)) | (1L << (NEXT - 145)) | (1L << (NAME - 145)) | (1L << (NAMES - 145)) | (1L << (TYPE - 145)) | (1L << (TEXT - 145)) | (1L << (REPEATABLE - 145)))) != 0) || ((((_la - 213)) & ~0x3f) == 0 && ((1L << (_la - 213)) & ((1L << (VARYING - 213)) | (1L << (NATIONAL - 213)) | (1L << (VALUE - 213)) | (1L << (TIES - 213)) | (1L << (CUBE - 213)) | (1L << (SETS - 213)) | (1L << (OTHERS - 213)) | (1L << (AT - 213)) | (1L << (MAXVALUE - 213)) | (1L << (ADMIN - 213)) | (1L << (ESCAPE - 213)) | (1L << (EXCLUDE - 213)) | (1L << (MOD - 213)) | (1L << (PARTITION - 213)) | (1L << (UNKNOWN - 213)) | (1L << (ALWAYS - 213)) | (1L << (CASCADE - 213)) | (1L << (GENERATED - 213)) | (1L << (ISOLATION - 213)) | (1L << (LEVEL - 213)) | (1L << (NO - 213)) | (1L << (OPTION - 213)) | (1L << (PRIVILEGES - 213)) | (1L << (READ - 213)) | (1L << (ROLE - 213)) | (1L << (ROWS - 213)) | (1L << (START - 213)) | (1L << (TRANSACTION - 213)) | (1L << (USER - 213)) | (1L << (ACTION - 213)) | (1L << (CACHE - 213)) | (1L << (CHARACTERISTICS - 213)) | (1L << (CLUSTER - 213)) | (1L << (COMMENTS - 213)) | (1L << (CONSTRAINTS - 213)) | (1L << (CYCLE - 213)) | (1L << (DATA - 213)) | (1L << (DATABASE - 213)))) != 0) || ((((_la - 277)) & ~0x3f) == 0 && ((1L << (_la - 277)) & ((1L << (DEFAULTS - 277)) | (1L << (DEFERRED - 277)) | (1L << (DEPENDS - 277)) | (1L << (DOMAIN - 277)) | (1L << (EXCLUDING - 277)) | (1L << (EXECUTE - 277)) | (1L << (EXTENDED - 277)) | (1L << (EXTENSION - 277)) | (1L << (EXTERNAL - 277)) | (1L << (FILTER - 277)) | (1L << (FIRST - 277)) | (1L << (FOLLOWING - 277)) | (1L << (FORCE - 277)) | (1L << (GLOBAL - 277)) | (1L << (IDENTITY - 277)) | (1L << (IMMEDIATE - 277)) | (1L << (INCLUDING - 277)) | (1L << (INCREMENT - 277)) | (1L << (INDEXES - 277)) | (1L << (INHERIT - 277)) | (1L << (INHERITS - 277)) | (1L << (INCLUDE - 277)) | (1L << (LANGUAGE - 277)) | (1L << (LARGE - 277)) | (1L << (LAST - 277)) | (1L << (LOGGED - 277)) | (1L << (MAIN - 277)) | (1L << (MATCH - 277)) | (1L << (MINVALUE - 277)) | (1L << (NOTHING - 277)) | (1L << (NULLS - 277)) | (1L << (OBJECT - 277)) | (1L << (OIDS - 277)) | (1L << (OVER - 277)) | (1L << (OWNED - 277)) | (1L << (OWNER - 277)) | (1L << (PARTIAL - 277)) | (1L << (PLAIN - 277)) | (1L << (PRECEDING - 277)) | (1L << (RANGE - 277)) | (1L << (RENAME - 277)) | (1L << (REPLICA - 277)) | (1L << (RESET - 277)) | (1L << (RESTART - 277)) | (1L << (RESTRICT - 277)) | (1L << (ROUTINE - 277)) | (1L << (RULE - 277)) | (1L << (SECURITY - 277)) | (1L << (SEQUENCE - 277)) | (1L << (SESSION - 277)) | (1L << (SHOW - 277)) | (1L << (SIMPLE - 277)) | (1L << (STATISTICS - 277)) | (1L << (STORAGE - 277)) | (1L << (TABLESPACE - 277)) | (1L << (TEMP - 277)) | (1L << (TEMPORARY - 277)) | (1L << (UNBOUNDED - 277)))) != 0) || ((((_la - 341)) & ~0x3f) == 0 && ((1L << (_la - 341)) & ((1L << (UNLOGGED - 341)) | (1L << (VALID - 341)) | (1L << (VALIDATE - 341)) | (1L << (WITHIN - 341)) | (1L << (WITHOUT - 341)) | (1L << (ZONE - 341)) | (1L << (OF - 341)) | (1L << (UESCAPE - 341)) | (1L << (GROUPS - 341)) | (1L << (RECURSIVE - 341)) | (1L << (INT2 - 341)) | (1L << (INT4 - 341)) | (1L << (FLOAT4 - 341)) | (1L << (BYTEA - 341)) | (1L << (ENUM - 341)) | (1L << (POINT - 341)) | (1L << (LSEG - 341)) | (1L << (BOX - 341)) | (1L << (PATH - 341)) | (1L << (POLYGON - 341)) | (1L << (CIRCLE - 341)) | (1L << (INET - 341)) | (1L << (TSQUERY - 341)) | (1L << (XML - 341)) | (1L << (JSON - 341)) | (1L << (INT4RANGE - 341)) | (1L << (INT8RANGE - 341)) | (1L << (NUMRANGE - 341)) | (1L << (DATERANGE - 341)) | (1L << (ORDINALITY - 341)))) != 0) || ((((_la - 405)) & ~0x3f) == 0 && ((1L << (_la - 405)) & ((1L << (NFC - 405)) | (1L << (NFD - 405)) | (1L << (NFKC - 405)) | (1L << (NFKD - 405)) | (1L << (REF - 405)) | (1L << (PASSING - 405)) | (1L << (VERSION - 405)) | (1L << (YES - 405)) | (1L << (STANDALONE - 405)) | (1L << (MATERIALIZED - 405)) | (1L << (OPERATOR - 405)) | (1L << (SHARE - 405)) | (1L << (ROLLUP - 405)) | (1L << (DOCUMENT - 405)) | (1L << (NORMALIZED - 405)) | (1L << (NOWAIT - 405)) | (1L << (LOCKED - 405)) | (1L << (COLUMNS - 405)) | (1L << (CONTENT - 405)) | (1L << (STRIP - 405)) | (1L << (WHITESPACE - 405)) | (1L << (CONFLICT - 405)) | (1L << (OVERRIDING - 405)) | (1L << (SYSTEM - 405)) | (1L << (ABORT - 405)) | (1L << (ABSOLUTE - 405)) | (1L << (ACCESS - 405)) | (1L << (AFTER - 405)) | (1L << (AGGREGATE - 405)) | (1L << (ALSO - 405)) | (1L << (ATTACH - 405)) | (1L << (ATTRIBUTE - 405)) | (1L << (BACKWARD - 405)) | (1L << (BEFORE - 405)) | (1L << (ASSERTION - 405)) | (1L << (ASSIGNMENT - 405)) | (1L << (CONTINUE - 405)) | (1L << (CONVERSION - 405)) | (1L << (COPY - 405)) | (1L << (COST - 405)) | (1L << (CSV - 405)) | (1L << (CALLED - 405)) | (1L << (CATALOG - 405)) | (1L << (CHAIN - 405)) | (1L << (CHECKPOINT - 405)) | (1L << (CLASS - 405)))) != 0) || ((((_la - 469)) & ~0x3f) == 0 && ((1L << (_la - 469)) & ((1L << (CONFIGURATION - 469)) | (1L << (COMMENT - 469)) | (1L << (DETACH - 469)) | (1L << (DICTIONARY - 469)) | (1L << (EXPRESSION - 469)) | (1L << (INSENSITIVE - 469)) | (1L << (DISCARD - 469)) | (1L << (OFF - 469)) | (1L << (INSTEAD - 469)) | (1L << (EXPLAIN - 469)) | (1L << (INPUT - 469)) | (1L << (INLINE - 469)) | (1L << (PARALLEL - 469)) | (1L << (LEAKPROOF - 469)) | (1L << (COMMITTED - 469)) | (1L << (ENCODING - 469)) | (1L << (IMPLICIT - 469)) | (1L << (DELIMITER - 469)) | (1L << (CURSOR - 469)) | (1L << (EACH - 469)) | (1L << (EVENT - 469)) | (1L << (DEALLOCATE - 469)) | (1L << (CONNECTION - 469)) | (1L << (DECLARE - 469)) | (1L << (FAMILY - 469)) | (1L << (FORWARD - 469)) | (1L << (EXCLUSIVE - 469)) | (1L << (FUNCTIONS - 469)) | (1L << (LOCATION - 469)) | (1L << (LABEL - 469)) | (1L << (DELIMITERS - 469)) | (1L << (HANDLER - 469)) | (1L << (HEADER - 469)) | (1L << (IMMUTABLE - 469)) | (1L << (GRANTED - 469)) | (1L << (HOLD - 469)) | (1L << (MAPPING - 469)) | (1L << (OLD - 469)) | (1L << (METHOD - 469)) | (1L << (LOAD - 469)) | (1L << (LISTEN - 469)) | (1L << (MODE - 469)) | (1L << (MOVE - 469)) | (1L << (PROCEDURAL - 469)) | (1L << (PARSER - 469)) | (1L << (PROCEDURES - 469)) | (1L << (ENCRYPTED - 469)) | (1L << (PUBLICATION - 469)) | (1L << (PROGRAM - 469)) | (1L << (REFERENCING - 469)) | (1L << (PLANS - 469)) | (1L << (REINDEX - 469)) | (1L << (PRIOR - 469)) | (1L << (PASSWORD - 469)) | (1L << (RELATIVE - 469)) | (1L << (QUOTE - 469)) | (1L << (ROUTINES - 469)) | (1L << (REPLACE - 469)) | (1L << (SNAPSHOT - 469)) | (1L << (REFRESH - 469)) | (1L << (PREPARE - 469)) | (1L << (OPTIONS - 469)) | (1L << (IMPORT - 469)))) != 0) || ((((_la - 533)) & ~0x3f) == 0 && ((1L << (_la - 533)) & ((1L << (INVOKER - 533)) | (1L << (NEW - 533)) | (1L << (PREPARED - 533)) | (1L << (SCROLL - 533)) | (1L << (SEQUENCES - 533)) | (1L << (SYSID - 533)) | (1L << (REASSIGN - 533)) | (1L << (SERVER - 533)) | (1L << (SUBSCRIPTION - 533)) | (1L << (SEARCH - 533)) | (1L << (SCHEMAS - 533)) | (1L << (RECHECK - 533)) | (1L << (POLICY - 533)) | (1L << (NOTIFY - 533)) | (1L << (LOCK - 533)) | (1L << (RELEASE - 533)) | (1L << (SERIALIZABLE - 533)) | (1L << (RETURNS - 533)) | (1L << (STATEMENT - 533)) | (1L << (STDIN - 533)) | (1L << (STDOUT - 533)) | (1L << (TABLES - 533)) | (1L << (SUPPORT - 533)) | (1L << (STABLE - 533)) | (1L << (TEMPLATE - 533)) | (1L << (UNENCRYPTED - 533)) | (1L << (VIEWS - 533)) | (1L << (UNCOMMITTED - 533)) | (1L << (TRANSFORM - 533)) | (1L << (UNLISTEN - 533)) | (1L << (TRUSTED - 533)) | (1L << (VALIDATOR - 533)) | (1L << (UNTIL - 533)) | (1L << (VACUUM - 533)) | (1L << (VOLATILE - 533)) | (1L << (STORED - 533)) | (1L << (WRITE - 533)) | (1L << (STRICT - 533)) | (1L << (TYPES - 533)) | (1L << (WRAPPER - 533)) | (1L << (WORK - 533)) | (1L << (INT16 - 533)) | (1L << (INT1 - 533)) | (1L << (ELEM_CONTAINED_BY_RANGE - 533)) | (1L << (IDENTIFIER_ - 533)))) != 0)) {
				{
				{
				setState(5515);
				createOptRoleElem();
				}
				}
				setState(5520);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DropDroupContext extends ParserRuleContext {
		public TerminalNode DROP() { return getToken(OpenGaussStatementParser.DROP, 0); }
		public TerminalNode GROUP() { return getToken(OpenGaussStatementParser.GROUP, 0); }
		public RoleListContext roleList() {
			return getRuleContext(RoleListContext.class,0);
		}
		public IfExistsContext ifExists() {
			return getRuleContext(IfExistsContext.class,0);
		}
		public DropDroupContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_dropDroup; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitDropDroup(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DropDroupContext dropDroup() throws RecognitionException {
		DropDroupContext _localctx = new DropDroupContext(_ctx, getState());
		enterRule(_localctx, 722, RULE_dropDroup);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5521);
			match(DROP);
			setState(5522);
			match(GROUP);
			setState(5524);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,423,_ctx) ) {
			case 1:
				{
				setState(5523);
				ifExists();
				}
				break;
			}
			setState(5526);
			roleList();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ReassignOwnedContext extends ParserRuleContext {
		public TerminalNode REASSIGN() { return getToken(OpenGaussStatementParser.REASSIGN, 0); }
		public TerminalNode OWNED() { return getToken(OpenGaussStatementParser.OWNED, 0); }
		public TerminalNode BY() { return getToken(OpenGaussStatementParser.BY, 0); }
		public RoleListContext roleList() {
			return getRuleContext(RoleListContext.class,0);
		}
		public TerminalNode TO() { return getToken(OpenGaussStatementParser.TO, 0); }
		public RoleSpecContext roleSpec() {
			return getRuleContext(RoleSpecContext.class,0);
		}
		public ReassignOwnedContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_reassignOwned; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitReassignOwned(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ReassignOwnedContext reassignOwned() throws RecognitionException {
		ReassignOwnedContext _localctx = new ReassignOwnedContext(_ctx, getState());
		enterRule(_localctx, 724, RULE_reassignOwned);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5528);
			match(REASSIGN);
			setState(5529);
			match(OWNED);
			setState(5530);
			match(BY);
			setState(5531);
			roleList();
			setState(5532);
			match(TO);
			setState(5533);
			roleSpec();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CreateTableContext extends ParserRuleContext {
		public TerminalNode CREATE() { return getToken(OpenGaussStatementParser.CREATE, 0); }
		public CreateTableSpecificationContext createTableSpecification() {
			return getRuleContext(CreateTableSpecificationContext.class,0);
		}
		public TerminalNode TABLE() { return getToken(OpenGaussStatementParser.TABLE, 0); }
		public TableNameContext tableName() {
			return getRuleContext(TableNameContext.class,0);
		}
		public InheritClauseContext inheritClause() {
			return getRuleContext(InheritClauseContext.class,0);
		}
		public CreateDefinitionClauseContext createDefinitionClause() {
			return getRuleContext(CreateDefinitionClauseContext.class,0);
		}
		public IfNotExistsContext ifNotExists() {
			return getRuleContext(IfNotExistsContext.class,0);
		}
		public PartitionSpecContext partitionSpec() {
			return getRuleContext(PartitionSpecContext.class,0);
		}
		public TableAccessMethodClauseContext tableAccessMethodClause() {
			return getRuleContext(TableAccessMethodClauseContext.class,0);
		}
		public WithOptionContext withOption() {
			return getRuleContext(WithOptionContext.class,0);
		}
		public OnCommitOptionContext onCommitOption() {
			return getRuleContext(OnCommitOptionContext.class,0);
		}
		public TableSpaceContext tableSpace() {
			return getRuleContext(TableSpaceContext.class,0);
		}
		public TerminalNode AS() { return getToken(OpenGaussStatementParser.AS, 0); }
		public SelectContext select() {
			return getRuleContext(SelectContext.class,0);
		}
		public TerminalNode EXECUTE() { return getToken(OpenGaussStatementParser.EXECUTE, 0); }
		public NameContext name() {
			return getRuleContext(NameContext.class,0);
		}
		public ExecuteParamClauseContext executeParamClause() {
			return getRuleContext(ExecuteParamClauseContext.class,0);
		}
		public TerminalNode OF() { return getToken(OpenGaussStatementParser.OF, 0); }
		public AnyNameContext anyName() {
			return getRuleContext(AnyNameContext.class,0);
		}
		public TerminalNode PARTITION() { return getToken(OpenGaussStatementParser.PARTITION, 0); }
		public QualifiedNameContext qualifiedName() {
			return getRuleContext(QualifiedNameContext.class,0);
		}
		public PartitionBoundSpecContext partitionBoundSpec() {
			return getRuleContext(PartitionBoundSpecContext.class,0);
		}
		public List withData() {
			return getRuleContexts(WithDataContext.class);
		}
		public WithDataContext withData(int i) {
			return getRuleContext(WithDataContext.class,i);
		}
		public TerminalNode LP_() { return getToken(OpenGaussStatementParser.LP_, 0); }
		public TypedTableElementListContext typedTableElementList() {
			return getRuleContext(TypedTableElementListContext.class,0);
		}
		public TerminalNode RP_() { return getToken(OpenGaussStatementParser.RP_, 0); }
		public CreateTableContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_createTable; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitCreateTable(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CreateTableContext createTable() throws RecognitionException {
		CreateTableContext _localctx = new CreateTableContext(_ctx, getState());
		enterRule(_localctx, 726, RULE_createTable);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5535);
			match(CREATE);
			setState(5536);
			createTableSpecification();
			setState(5537);
			match(TABLE);
			setState(5539);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,424,_ctx) ) {
			case 1:
				{
				setState(5538);
				ifNotExists();
				}
				break;
			}
			setState(5541);
			tableName();
			setState(5562);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case LP_:
				{
				setState(5542);
				createDefinitionClause();
				}
				break;
			case OF:
				{
				{
				setState(5543);
				match(OF);
				setState(5544);
				anyName();
				setState(5549);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==LP_) {
					{
					setState(5545);
					match(LP_);
					setState(5546);
					typedTableElementList();
					setState(5547);
					match(RP_);
					}
				}

				}
				}
				break;
			case PARTITION:
				{
				{
				setState(5551);
				match(PARTITION);
				setState(5552);
				match(OF);
				setState(5553);
				qualifiedName();
				setState(5558);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==LP_) {
					{
					setState(5554);
					match(LP_);
					setState(5555);
					typedTableElementList();
					setState(5556);
					match(RP_);
					}
				}

				setState(5560);
				partitionBoundSpec();
				}
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			setState(5564);
			inheritClause();
			setState(5566);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==PARTITION) {
				{
				setState(5565);
				partitionSpec();
				}
			}

			setState(5569);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==USING) {
				{
				setState(5568);
				tableAccessMethodClause();
				}
			}

			setState(5572);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==WITH || _la==WITHOUT) {
				{
				setState(5571);
				withOption();
				}
			}

			setState(5575);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==ON) {
				{
				setState(5574);
				onCommitOption();
				}
			}

			setState(5578);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==TABLESPACE) {
				{
				setState(5577);
				tableSpace();
				}
			}

			setState(5585);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==AS) {
				{
				setState(5580);
				match(AS);
				setState(5581);
				select();
				setState(5583);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==WITH) {
					{
					setState(5582);
					withData();
					}
				}

				}
			}

			setState(5593);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==EXECUTE) {
				{
				setState(5587);
				match(EXECUTE);
				setState(5588);
				name();
				setState(5589);
				executeParamClause();
				setState(5591);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==WITH) {
					{
					setState(5590);
					withData();
					}
				}

				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ExecuteParamClauseContext extends ParserRuleContext {
		public TerminalNode LP_() { return getToken(OpenGaussStatementParser.LP_, 0); }
		public ExprListContext exprList() {
			return getRuleContext(ExprListContext.class,0);
		}
		public TerminalNode RP_() { return getToken(OpenGaussStatementParser.RP_, 0); }
		public ExecuteParamClauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_executeParamClause; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitExecuteParamClause(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ExecuteParamClauseContext executeParamClause() throws RecognitionException {
		ExecuteParamClauseContext _localctx = new ExecuteParamClauseContext(_ctx, getState());
		enterRule(_localctx, 728, RULE_executeParamClause);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5595);
			match(LP_);
			setState(5596);
			exprList(0);
			setState(5597);
			match(RP_);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class PartitionBoundSpecContext extends ParserRuleContext {
		public TerminalNode FOR() { return getToken(OpenGaussStatementParser.FOR, 0); }
		public TerminalNode VALUES() { return getToken(OpenGaussStatementParser.VALUES, 0); }
		public TerminalNode WITH() { return getToken(OpenGaussStatementParser.WITH, 0); }
		public List LP_() { return getTokens(OpenGaussStatementParser.LP_); }
		public TerminalNode LP_(int i) {
			return getToken(OpenGaussStatementParser.LP_, i);
		}
		public HashPartboundContext hashPartbound() {
			return getRuleContext(HashPartboundContext.class,0);
		}
		public List RP_() { return getTokens(OpenGaussStatementParser.RP_); }
		public TerminalNode RP_(int i) {
			return getToken(OpenGaussStatementParser.RP_, i);
		}
		public TerminalNode IN() { return getToken(OpenGaussStatementParser.IN, 0); }
		public List exprList() {
			return getRuleContexts(ExprListContext.class);
		}
		public ExprListContext exprList(int i) {
			return getRuleContext(ExprListContext.class,i);
		}
		public TerminalNode FROM() { return getToken(OpenGaussStatementParser.FROM, 0); }
		public TerminalNode TO() { return getToken(OpenGaussStatementParser.TO, 0); }
		public TerminalNode DEFAULT() { return getToken(OpenGaussStatementParser.DEFAULT, 0); }
		public PartitionBoundSpecContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_partitionBoundSpec; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitPartitionBoundSpec(this);
			else return visitor.visitChildren(this);
		}
	}

	public final PartitionBoundSpecContext partitionBoundSpec() throws RecognitionException {
		PartitionBoundSpecContext _localctx = new PartitionBoundSpecContext(_ctx, getState());
		enterRule(_localctx, 730, RULE_partitionBoundSpec);
		try {
			setState(5625);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,437,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(5599);
				match(FOR);
				setState(5600);
				match(VALUES);
				setState(5601);
				match(WITH);
				setState(5602);
				match(LP_);
				setState(5603);
				hashPartbound();
				setState(5604);
				match(RP_);
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(5606);
				match(FOR);
				setState(5607);
				match(VALUES);
				setState(5608);
				match(IN);
				setState(5609);
				match(LP_);
				setState(5610);
				exprList(0);
				setState(5611);
				match(RP_);
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(5613);
				match(FOR);
				setState(5614);
				match(VALUES);
				setState(5615);
				match(FROM);
				setState(5616);
				match(LP_);
				setState(5617);
				exprList(0);
				setState(5618);
				match(RP_);
				setState(5619);
				match(TO);
				setState(5620);
				match(LP_);
				setState(5621);
				exprList(0);
				setState(5622);
				match(RP_);
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(5624);
				match(DEFAULT);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class HashPartboundContext extends ParserRuleContext {
		public List hashPartboundElem() {
			return getRuleContexts(HashPartboundElemContext.class);
		}
		public HashPartboundElemContext hashPartboundElem(int i) {
			return getRuleContext(HashPartboundElemContext.class,i);
		}
		public List COMMA_() { return getTokens(OpenGaussStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(OpenGaussStatementParser.COMMA_, i);
		}
		public HashPartboundContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_hashPartbound; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitHashPartbound(this);
			else return visitor.visitChildren(this);
		}
	}

	public final HashPartboundContext hashPartbound() throws RecognitionException {
		HashPartboundContext _localctx = new HashPartboundContext(_ctx, getState());
		enterRule(_localctx, 732, RULE_hashPartbound);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5627);
			hashPartboundElem();
			setState(5632);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA_) {
				{
				{
				setState(5628);
				match(COMMA_);
				setState(5629);
				hashPartboundElem();
				}
				}
				setState(5634);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class HashPartboundElemContext extends ParserRuleContext {
		public NonReservedWordContext nonReservedWord() {
			return getRuleContext(NonReservedWordContext.class,0);
		}
		public TerminalNode NUMBER_() { return getToken(OpenGaussStatementParser.NUMBER_, 0); }
		public HashPartboundElemContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_hashPartboundElem; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitHashPartboundElem(this);
			else return visitor.visitChildren(this);
		}
	}

	public final HashPartboundElemContext hashPartboundElem() throws RecognitionException {
		HashPartboundElemContext _localctx = new HashPartboundElemContext(_ctx, getState());
		enterRule(_localctx, 734, RULE_hashPartboundElem);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5635);
			nonReservedWord();
			setState(5636);
			match(NUMBER_);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class TypedTableElementListContext extends ParserRuleContext {
		public List typedTableElement() {
			return getRuleContexts(TypedTableElementContext.class);
		}
		public TypedTableElementContext typedTableElement(int i) {
			return getRuleContext(TypedTableElementContext.class,i);
		}
		public List COMMA_() { return getTokens(OpenGaussStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(OpenGaussStatementParser.COMMA_, i);
		}
		public TypedTableElementListContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_typedTableElementList; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitTypedTableElementList(this);
			else return visitor.visitChildren(this);
		}
	}

	public final TypedTableElementListContext typedTableElementList() throws RecognitionException {
		TypedTableElementListContext _localctx = new TypedTableElementListContext(_ctx, getState());
		enterRule(_localctx, 736, RULE_typedTableElementList);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5638);
			typedTableElement();
			setState(5643);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA_) {
				{
				{
				setState(5639);
				match(COMMA_);
				setState(5640);
				typedTableElement();
				}
				}
				setState(5645);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class TypedTableElementContext extends ParserRuleContext {
		public ColumnOptionsContext columnOptions() {
			return getRuleContext(ColumnOptionsContext.class,0);
		}
		public TableConstraintContext tableConstraint() {
			return getRuleContext(TableConstraintContext.class,0);
		}
		public TypedTableElementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_typedTableElement; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitTypedTableElement(this);
			else return visitor.visitChildren(this);
		}
	}

	public final TypedTableElementContext typedTableElement() throws RecognitionException {
		TypedTableElementContext _localctx = new TypedTableElementContext(_ctx, getState());
		enterRule(_localctx, 738, RULE_typedTableElement);
		try {
			setState(5648);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,440,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(5646);
				columnOptions();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(5647);
				tableConstraint();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ColumnOptionsContext extends ParserRuleContext {
		public ColIdContext colId() {
			return getRuleContext(ColIdContext.class,0);
		}
		public ColQualListContext colQualList() {
			return getRuleContext(ColQualListContext.class,0);
		}
		public TerminalNode WITH() { return getToken(OpenGaussStatementParser.WITH, 0); }
		public TerminalNode OPTIONS() { return getToken(OpenGaussStatementParser.OPTIONS, 0); }
		public ColumnOptionsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_columnOptions; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitColumnOptions(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ColumnOptionsContext columnOptions() throws RecognitionException {
		ColumnOptionsContext _localctx = new ColumnOptionsContext(_ctx, getState());
		enterRule(_localctx, 740, RULE_columnOptions);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5650);
			colId();
			setState(5653);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==WITH) {
				{
				setState(5651);
				match(WITH);
				setState(5652);
				match(OPTIONS);
				}
			}

			setState(5655);
			colQualList();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class WithDataContext extends ParserRuleContext {
		public TerminalNode WITH() { return getToken(OpenGaussStatementParser.WITH, 0); }
		public TerminalNode DATA() { return getToken(OpenGaussStatementParser.DATA, 0); }
		public TerminalNode NO() { return getToken(OpenGaussStatementParser.NO, 0); }
		public WithDataContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_withData; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitWithData(this);
			else return visitor.visitChildren(this);
		}
	}

	public final WithDataContext withData() throws RecognitionException {
		WithDataContext _localctx = new WithDataContext(_ctx, getState());
		enterRule(_localctx, 742, RULE_withData);
		try {
			setState(5662);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,442,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(5657);
				match(WITH);
				setState(5658);
				match(DATA);
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(5659);
				match(WITH);
				setState(5660);
				match(NO);
				setState(5661);
				match(DATA);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class TableSpaceContext extends ParserRuleContext {
		public TerminalNode TABLESPACE() { return getToken(OpenGaussStatementParser.TABLESPACE, 0); }
		public NameContext name() {
			return getRuleContext(NameContext.class,0);
		}
		public TableSpaceContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_tableSpace; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitTableSpace(this);
			else return visitor.visitChildren(this);
		}
	}

	public final TableSpaceContext tableSpace() throws RecognitionException {
		TableSpaceContext _localctx = new TableSpaceContext(_ctx, getState());
		enterRule(_localctx, 744, RULE_tableSpace);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5664);
			match(TABLESPACE);
			setState(5665);
			name();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class OnCommitOptionContext extends ParserRuleContext {
		public TerminalNode ON() { return getToken(OpenGaussStatementParser.ON, 0); }
		public TerminalNode COMMIT() { return getToken(OpenGaussStatementParser.COMMIT, 0); }
		public TerminalNode DROP() { return getToken(OpenGaussStatementParser.DROP, 0); }
		public TerminalNode DELETE() { return getToken(OpenGaussStatementParser.DELETE, 0); }
		public TerminalNode ROWS() { return getToken(OpenGaussStatementParser.ROWS, 0); }
		public TerminalNode PRESERVE() { return getToken(OpenGaussStatementParser.PRESERVE, 0); }
		public OnCommitOptionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_onCommitOption; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitOnCommitOption(this);
			else return visitor.visitChildren(this);
		}
	}

	public final OnCommitOptionContext onCommitOption() throws RecognitionException {
		OnCommitOptionContext _localctx = new OnCommitOptionContext(_ctx, getState());
		enterRule(_localctx, 746, RULE_onCommitOption);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5667);
			match(ON);
			setState(5668);
			match(COMMIT);
			setState(5674);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case DROP:
				{
				setState(5669);
				match(DROP);
				}
				break;
			case DELETE:
				{
				setState(5670);
				match(DELETE);
				setState(5671);
				match(ROWS);
				}
				break;
			case PRESERVE:
				{
				setState(5672);
				match(PRESERVE);
				setState(5673);
				match(ROWS);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class WithOptionContext extends ParserRuleContext {
		public TerminalNode WITH() { return getToken(OpenGaussStatementParser.WITH, 0); }
		public ReloptionsContext reloptions() {
			return getRuleContext(ReloptionsContext.class,0);
		}
		public TerminalNode WITHOUT() { return getToken(OpenGaussStatementParser.WITHOUT, 0); }
		public TerminalNode OIDS() { return getToken(OpenGaussStatementParser.OIDS, 0); }
		public WithOptionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_withOption; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitWithOption(this);
			else return visitor.visitChildren(this);
		}
	}

	public final WithOptionContext withOption() throws RecognitionException {
		WithOptionContext _localctx = new WithOptionContext(_ctx, getState());
		enterRule(_localctx, 748, RULE_withOption);
		try {
			setState(5680);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case WITH:
				enterOuterAlt(_localctx, 1);
				{
				setState(5676);
				match(WITH);
				setState(5677);
				reloptions();
				}
				break;
			case WITHOUT:
				enterOuterAlt(_localctx, 2);
				{
				setState(5678);
				match(WITHOUT);
				setState(5679);
				match(OIDS);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class TableAccessMethodClauseContext extends ParserRuleContext {
		public TerminalNode USING() { return getToken(OpenGaussStatementParser.USING, 0); }
		public AccessMethodContext accessMethod() {
			return getRuleContext(AccessMethodContext.class,0);
		}
		public TableAccessMethodClauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_tableAccessMethodClause; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitTableAccessMethodClause(this);
			else return visitor.visitChildren(this);
		}
	}

	public final TableAccessMethodClauseContext tableAccessMethodClause() throws RecognitionException {
		TableAccessMethodClauseContext _localctx = new TableAccessMethodClauseContext(_ctx, getState());
		enterRule(_localctx, 750, RULE_tableAccessMethodClause);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5682);
			match(USING);
			setState(5683);
			accessMethod();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AccessMethodContext extends ParserRuleContext {
		public IdentifierContext identifier() {
			return getRuleContext(IdentifierContext.class,0);
		}
		public UnreservedWordContext unreservedWord() {
			return getRuleContext(UnreservedWordContext.class,0);
		}
		public ColNameKeywordContext colNameKeyword() {
			return getRuleContext(ColNameKeywordContext.class,0);
		}
		public AccessMethodContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_accessMethod; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitAccessMethod(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AccessMethodContext accessMethod() throws RecognitionException {
		AccessMethodContext _localctx = new AccessMethodContext(_ctx, getState());
		enterRule(_localctx, 752, RULE_accessMethod);
		try {
			setState(5688);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,445,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(5685);
				identifier();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(5686);
				unreservedWord();
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(5687);
				colNameKeyword();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CreateIndexContext extends ParserRuleContext {
		public TerminalNode CREATE() { return getToken(OpenGaussStatementParser.CREATE, 0); }
		public CreateIndexSpecificationContext createIndexSpecification() {
			return getRuleContext(CreateIndexSpecificationContext.class,0);
		}
		public TerminalNode INDEX() { return getToken(OpenGaussStatementParser.INDEX, 0); }
		public ConcurrentlyClauseContext concurrentlyClause() {
			return getRuleContext(ConcurrentlyClauseContext.class,0);
		}
		public TerminalNode ON() { return getToken(OpenGaussStatementParser.ON, 0); }
		public OnlyClauseContext onlyClause() {
			return getRuleContext(OnlyClauseContext.class,0);
		}
		public TableNameContext tableName() {
			return getRuleContext(TableNameContext.class,0);
		}
		public TerminalNode LP_() { return getToken(OpenGaussStatementParser.LP_, 0); }
		public IndexParamsContext indexParams() {
			return getRuleContext(IndexParamsContext.class,0);
		}
		public TerminalNode RP_() { return getToken(OpenGaussStatementParser.RP_, 0); }
		public IndexNameContext indexName() {
			return getRuleContext(IndexNameContext.class,0);
		}
		public AccessMethodClauseContext accessMethodClause() {
			return getRuleContext(AccessMethodClauseContext.class,0);
		}
		public IncludeContext include() {
			return getRuleContext(IncludeContext.class,0);
		}
		public TerminalNode WITH() { return getToken(OpenGaussStatementParser.WITH, 0); }
		public ReloptionsContext reloptions() {
			return getRuleContext(ReloptionsContext.class,0);
		}
		public TableSpaceContext tableSpace() {
			return getRuleContext(TableSpaceContext.class,0);
		}
		public WhereClauseContext whereClause() {
			return getRuleContext(WhereClauseContext.class,0);
		}
		public IfNotExistsContext ifNotExists() {
			return getRuleContext(IfNotExistsContext.class,0);
		}
		public CreateIndexContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_createIndex; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitCreateIndex(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CreateIndexContext createIndex() throws RecognitionException {
		CreateIndexContext _localctx = new CreateIndexContext(_ctx, getState());
		enterRule(_localctx, 754, RULE_createIndex);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5690);
			match(CREATE);
			setState(5691);
			createIndexSpecification();
			setState(5692);
			match(INDEX);
			setState(5693);
			concurrentlyClause();
			setState(5698);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==UNICODE_ESCAPE || ((((_la - 81)) & ~0x3f) == 0 && ((1L << (_la - 81)) & ((1L << (INSERT - 81)) | (1L << (UPDATE - 81)) | (1L << (DELETE - 81)) | (1L << (ALTER - 81)) | (1L << (DROP - 81)) | (1L << (TRUNCATE - 81)) | (1L << (SCHEMA - 81)) | (1L << (REVOKE - 81)) | (1L << (ADD - 81)) | (1L << (SET - 81)) | (1L << (INDEX - 81)) | (1L << (KEY - 81)) | (1L << (POSITION - 81)) | (1L << (FUNCTION - 81)) | (1L << (TRIGGER - 81)) | (1L << (PROCEDURE - 81)) | (1L << (VIEW - 81)) | (1L << (IF - 81)))) != 0) || ((((_la - 151)) & ~0x3f) == 0 && ((1L << (_la - 151)) & ((1L << (BY - 151)) | (1L << (BEGIN - 151)) | (1L << (COMMIT - 151)) | (1L << (ROLLBACK - 151)) | (1L << (SAVEPOINT - 151)) | (1L << (DOUBLE - 151)) | (1L << (INTERVAL - 151)) | (1L << (TIME - 151)) | (1L << (TIMESTAMP - 151)) | (1L << (YEAR - 151)) | (1L << (MONTH - 151)) | (1L << (DAY - 151)) | (1L << (HOUR - 151)) | (1L << (MINUTE - 151)) | (1L << (SECOND - 151)) | (1L << (CURRENT - 151)) | (1L << (ENABLE - 151)) | (1L << (DISABLE - 151)) | (1L << (CALL - 151)) | (1L << (PRESERVE - 151)) | (1L << (DEFINER - 151)) | (1L << (SQL - 151)) | (1L << (CASCADED - 151)) | (1L << (LOCAL - 151)) | (1L << (CLOSE - 151)) | (1L << (NEXT - 151)) | (1L << (NAME - 151)) | (1L << (NAMES - 151)) | (1L << (TYPE - 151)) | (1L << (TEXT - 151)) | (1L << (REPEATABLE - 151)) | (1L << (VARYING - 151)) | (1L << (NATIONAL - 151)))) != 0) || ((((_la - 216)) & ~0x3f) == 0 && ((1L << (_la - 216)) & ((1L << (VALUE - 216)) | (1L << (TIES - 216)) | (1L << (CUBE - 216)) | (1L << (SETS - 216)) | (1L << (OTHERS - 216)) | (1L << (AT - 216)) | (1L << (MAXVALUE - 216)) | (1L << (ADMIN - 216)) | (1L << (ESCAPE - 216)) | (1L << (EXCLUDE - 216)) | (1L << (MOD - 216)) | (1L << (PARTITION - 216)) | (1L << (UNKNOWN - 216)) | (1L << (ALWAYS - 216)) | (1L << (CASCADE - 216)) | (1L << (GENERATED - 216)) | (1L << (ISOLATION - 216)) | (1L << (LEVEL - 216)) | (1L << (NO - 216)) | (1L << (OPTION - 216)) | (1L << (PRIVILEGES - 216)) | (1L << (READ - 216)) | (1L << (ROLE - 216)) | (1L << (ROWS - 216)) | (1L << (START - 216)) | (1L << (TRANSACTION - 216)) | (1L << (ACTION - 216)) | (1L << (CACHE - 216)) | (1L << (CHARACTERISTICS - 216)) | (1L << (CLUSTER - 216)) | (1L << (COMMENTS - 216)) | (1L << (CONSTRAINTS - 216)) | (1L << (CYCLE - 216)) | (1L << (DATA - 216)) | (1L << (DATABASE - 216)) | (1L << (DEFAULTS - 216)) | (1L << (DEFERRED - 216)))) != 0) || ((((_la - 280)) & ~0x3f) == 0 && ((1L << (_la - 280)) & ((1L << (DEPENDS - 280)) | (1L << (DOMAIN - 280)) | (1L << (EXCLUDING - 280)) | (1L << (EXECUTE - 280)) | (1L << (EXTENDED - 280)) | (1L << (EXTENSION - 280)) | (1L << (EXTERNAL - 280)) | (1L << (FILTER - 280)) | (1L << (FIRST - 280)) | (1L << (FOLLOWING - 280)) | (1L << (FORCE - 280)) | (1L << (GLOBAL - 280)) | (1L << (IDENTITY - 280)) | (1L << (IMMEDIATE - 280)) | (1L << (INCLUDING - 280)) | (1L << (INCREMENT - 280)) | (1L << (INDEXES - 280)) | (1L << (INHERIT - 280)) | (1L << (INHERITS - 280)) | (1L << (INCLUDE - 280)) | (1L << (LANGUAGE - 280)) | (1L << (LARGE - 280)) | (1L << (LAST - 280)) | (1L << (LOGGED - 280)) | (1L << (MAIN - 280)) | (1L << (MATCH - 280)) | (1L << (MINVALUE - 280)) | (1L << (NOTHING - 280)) | (1L << (NULLS - 280)) | (1L << (OBJECT - 280)) | (1L << (OIDS - 280)) | (1L << (OVER - 280)) | (1L << (OWNED - 280)) | (1L << (OWNER - 280)) | (1L << (PARTIAL - 280)) | (1L << (PLAIN - 280)) | (1L << (PRECEDING - 280)) | (1L << (RANGE - 280)) | (1L << (RENAME - 280)) | (1L << (REPLICA - 280)) | (1L << (RESET - 280)) | (1L << (RESTART - 280)) | (1L << (RESTRICT - 280)) | (1L << (ROUTINE - 280)) | (1L << (RULE - 280)) | (1L << (SECURITY - 280)) | (1L << (SEQUENCE - 280)) | (1L << (SESSION - 280)) | (1L << (SHOW - 280)) | (1L << (SIMPLE - 280)) | (1L << (STATISTICS - 280)) | (1L << (STORAGE - 280)) | (1L << (TABLESPACE - 280)) | (1L << (TEMP - 280)) | (1L << (TEMPORARY - 280)) | (1L << (UNBOUNDED - 280)) | (1L << (UNLOGGED - 280)) | (1L << (VALID - 280)))) != 0) || ((((_la - 344)) & ~0x3f) == 0 && ((1L << (_la - 344)) & ((1L << (VALIDATE - 344)) | (1L << (WITHIN - 344)) | (1L << (WITHOUT - 344)) | (1L << (ZONE - 344)) | (1L << (OF - 344)) | (1L << (UESCAPE - 344)) | (1L << (GROUPS - 344)) | (1L << (RECURSIVE - 344)) | (1L << (INT2 - 344)) | (1L << (INT4 - 344)) | (1L << (FLOAT4 - 344)) | (1L << (BYTEA - 344)) | (1L << (ENUM - 344)) | (1L << (POINT - 344)) | (1L << (LSEG - 344)) | (1L << (BOX - 344)) | (1L << (PATH - 344)) | (1L << (POLYGON - 344)) | (1L << (CIRCLE - 344)) | (1L << (INET - 344)) | (1L << (TSQUERY - 344)) | (1L << (XML - 344)) | (1L << (JSON - 344)) | (1L << (INT4RANGE - 344)) | (1L << (INT8RANGE - 344)) | (1L << (NUMRANGE - 344)) | (1L << (DATERANGE - 344)) | (1L << (ORDINALITY - 344)) | (1L << (NFC - 344)) | (1L << (NFD - 344)) | (1L << (NFKC - 344)))) != 0) || ((((_la - 408)) & ~0x3f) == 0 && ((1L << (_la - 408)) & ((1L << (NFKD - 408)) | (1L << (REF - 408)) | (1L << (PASSING - 408)) | (1L << (VERSION - 408)) | (1L << (YES - 408)) | (1L << (STANDALONE - 408)) | (1L << (MATERIALIZED - 408)) | (1L << (OPERATOR - 408)) | (1L << (SHARE - 408)) | (1L << (ROLLUP - 408)) | (1L << (DOCUMENT - 408)) | (1L << (NORMALIZED - 408)) | (1L << (NOWAIT - 408)) | (1L << (LOCKED - 408)) | (1L << (COLUMNS - 408)) | (1L << (CONTENT - 408)) | (1L << (STRIP - 408)) | (1L << (WHITESPACE - 408)) | (1L << (CONFLICT - 408)) | (1L << (OVERRIDING - 408)) | (1L << (SYSTEM - 408)) | (1L << (ABORT - 408)) | (1L << (ABSOLUTE - 408)) | (1L << (ACCESS - 408)) | (1L << (AFTER - 408)) | (1L << (AGGREGATE - 408)) | (1L << (ALSO - 408)) | (1L << (ATTACH - 408)) | (1L << (ATTRIBUTE - 408)) | (1L << (BACKWARD - 408)) | (1L << (BEFORE - 408)) | (1L << (ASSERTION - 408)) | (1L << (ASSIGNMENT - 408)) | (1L << (CONTINUE - 408)) | (1L << (CONVERSION - 408)) | (1L << (COPY - 408)) | (1L << (COST - 408)) | (1L << (CSV - 408)) | (1L << (CALLED - 408)) | (1L << (CATALOG - 408)) | (1L << (CHAIN - 408)) | (1L << (CHECKPOINT - 408)) | (1L << (CLASS - 408)) | (1L << (CONFIGURATION - 408)) | (1L << (COMMENT - 408)) | (1L << (DETACH - 408)))) != 0) || ((((_la - 472)) & ~0x3f) == 0 && ((1L << (_la - 472)) & ((1L << (DICTIONARY - 472)) | (1L << (EXPRESSION - 472)) | (1L << (INSENSITIVE - 472)) | (1L << (DISCARD - 472)) | (1L << (OFF - 472)) | (1L << (INSTEAD - 472)) | (1L << (EXPLAIN - 472)) | (1L << (INPUT - 472)) | (1L << (INLINE - 472)) | (1L << (PARALLEL - 472)) | (1L << (LEAKPROOF - 472)) | (1L << (COMMITTED - 472)) | (1L << (ENCODING - 472)) | (1L << (IMPLICIT - 472)) | (1L << (DELIMITER - 472)) | (1L << (CURSOR - 472)) | (1L << (EACH - 472)) | (1L << (EVENT - 472)) | (1L << (DEALLOCATE - 472)) | (1L << (CONNECTION - 472)) | (1L << (DECLARE - 472)) | (1L << (FAMILY - 472)) | (1L << (FORWARD - 472)) | (1L << (EXCLUSIVE - 472)) | (1L << (FUNCTIONS - 472)) | (1L << (LOCATION - 472)) | (1L << (LABEL - 472)) | (1L << (DELIMITERS - 472)) | (1L << (HANDLER - 472)) | (1L << (HEADER - 472)) | (1L << (IMMUTABLE - 472)) | (1L << (GRANTED - 472)) | (1L << (HOLD - 472)) | (1L << (MAPPING - 472)) | (1L << (OLD - 472)) | (1L << (METHOD - 472)) | (1L << (LOAD - 472)) | (1L << (LISTEN - 472)) | (1L << (MODE - 472)) | (1L << (MOVE - 472)) | (1L << (PROCEDURAL - 472)) | (1L << (PARSER - 472)) | (1L << (PROCEDURES - 472)) | (1L << (ENCRYPTED - 472)) | (1L << (PUBLICATION - 472)) | (1L << (PROGRAM - 472)) | (1L << (REFERENCING - 472)) | (1L << (PLANS - 472)) | (1L << (REINDEX - 472)) | (1L << (PRIOR - 472)) | (1L << (PASSWORD - 472)) | (1L << (RELATIVE - 472)) | (1L << (QUOTE - 472)) | (1L << (ROUTINES - 472)) | (1L << (REPLACE - 472)) | (1L << (SNAPSHOT - 472)) | (1L << (REFRESH - 472)) | (1L << (PREPARE - 472)) | (1L << (OPTIONS - 472)) | (1L << (IMPORT - 472)) | (1L << (INVOKER - 472)) | (1L << (NEW - 472)) | (1L << (PREPARED - 472)))) != 0) || ((((_la - 536)) & ~0x3f) == 0 && ((1L << (_la - 536)) & ((1L << (SCROLL - 536)) | (1L << (SEQUENCES - 536)) | (1L << (SYSID - 536)) | (1L << (REASSIGN - 536)) | (1L << (SERVER - 536)) | (1L << (SUBSCRIPTION - 536)) | (1L << (SEARCH - 536)) | (1L << (SCHEMAS - 536)) | (1L << (RECHECK - 536)) | (1L << (POLICY - 536)) | (1L << (NOTIFY - 536)) | (1L << (LOCK - 536)) | (1L << (RELEASE - 536)) | (1L << (SERIALIZABLE - 536)) | (1L << (RETURNS - 536)) | (1L << (STATEMENT - 536)) | (1L << (STDIN - 536)) | (1L << (STDOUT - 536)) | (1L << (TABLES - 536)) | (1L << (SUPPORT - 536)) | (1L << (STABLE - 536)) | (1L << (TEMPLATE - 536)) | (1L << (UNENCRYPTED - 536)) | (1L << (VIEWS - 536)) | (1L << (UNCOMMITTED - 536)) | (1L << (TRANSFORM - 536)) | (1L << (UNLISTEN - 536)) | (1L << (TRUSTED - 536)) | (1L << (VALIDATOR - 536)) | (1L << (UNTIL - 536)) | (1L << (VACUUM - 536)) | (1L << (VOLATILE - 536)) | (1L << (STORED - 536)) | (1L << (WRITE - 536)) | (1L << (STRICT - 536)) | (1L << (TYPES - 536)) | (1L << (WRAPPER - 536)) | (1L << (WORK - 536)) | (1L << (INT16 - 536)) | (1L << (INT1 - 536)) | (1L << (ELEM_CONTAINED_BY_RANGE - 536)) | (1L << (IDENTIFIER_ - 536)))) != 0)) {
				{
				setState(5695);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,446,_ctx) ) {
				case 1:
					{
					setState(5694);
					ifNotExists();
					}
					break;
				}
				setState(5697);
				indexName();
				}
			}

			setState(5700);
			match(ON);
			setState(5701);
			onlyClause();
			setState(5702);
			tableName();
			setState(5704);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==USING) {
				{
				setState(5703);
				accessMethodClause();
				}
			}

			setState(5706);
			match(LP_);
			setState(5707);
			indexParams();
			setState(5708);
			match(RP_);
			setState(5710);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==INCLUDE) {
				{
				setState(5709);
				include();
				}
			}

			setState(5714);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==WITH) {
				{
				setState(5712);
				match(WITH);
				setState(5713);
				reloptions();
				}
			}

			setState(5717);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==TABLESPACE) {
				{
				setState(5716);
				tableSpace();
				}
			}

			setState(5720);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==WHERE) {
				{
				setState(5719);
				whereClause();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class IncludeContext extends ParserRuleContext {
		public TerminalNode INCLUDE() { return getToken(OpenGaussStatementParser.INCLUDE, 0); }
		public TerminalNode LP_() { return getToken(OpenGaussStatementParser.LP_, 0); }
		public IndexIncludingParamsContext indexIncludingParams() {
			return getRuleContext(IndexIncludingParamsContext.class,0);
		}
		public TerminalNode RP_() { return getToken(OpenGaussStatementParser.RP_, 0); }
		public IncludeContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_include; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitInclude(this);
			else return visitor.visitChildren(this);
		}
	}

	public final IncludeContext include() throws RecognitionException {
		IncludeContext _localctx = new IncludeContext(_ctx, getState());
		enterRule(_localctx, 756, RULE_include);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5722);
			match(INCLUDE);
			setState(5723);
			match(LP_);
			setState(5724);
			indexIncludingParams();
			setState(5725);
			match(RP_);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class IndexIncludingParamsContext extends ParserRuleContext {
		public List indexElem() {
			return getRuleContexts(IndexElemContext.class);
		}
		public IndexElemContext indexElem(int i) {
			return getRuleContext(IndexElemContext.class,i);
		}
		public List COMMA_() { return getTokens(OpenGaussStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(OpenGaussStatementParser.COMMA_, i);
		}
		public IndexIncludingParamsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_indexIncludingParams; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitIndexIncludingParams(this);
			else return visitor.visitChildren(this);
		}
	}

	public final IndexIncludingParamsContext indexIncludingParams() throws RecognitionException {
		IndexIncludingParamsContext _localctx = new IndexIncludingParamsContext(_ctx, getState());
		enterRule(_localctx, 758, RULE_indexIncludingParams);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5727);
			indexElem();
			setState(5732);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA_) {
				{
				{
				setState(5728);
				match(COMMA_);
				setState(5729);
				indexElem();
				}
				}
				setState(5734);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AccessMethodClauseContext extends ParserRuleContext {
		public TerminalNode USING() { return getToken(OpenGaussStatementParser.USING, 0); }
		public AccessMethodContext accessMethod() {
			return getRuleContext(AccessMethodContext.class,0);
		}
		public AccessMethodClauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_accessMethodClause; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitAccessMethodClause(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AccessMethodClauseContext accessMethodClause() throws RecognitionException {
		AccessMethodClauseContext _localctx = new AccessMethodClauseContext(_ctx, getState());
		enterRule(_localctx, 760, RULE_accessMethodClause);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5735);
			match(USING);
			setState(5736);
			accessMethod();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CreateDatabaseContext extends ParserRuleContext {
		public TerminalNode CREATE() { return getToken(OpenGaussStatementParser.CREATE, 0); }
		public TerminalNode DATABASE() { return getToken(OpenGaussStatementParser.DATABASE, 0); }
		public NameContext name() {
			return getRuleContext(NameContext.class,0);
		}
		public TerminalNode WITH() { return getToken(OpenGaussStatementParser.WITH, 0); }
		public List createDatabaseSpecification() {
			return getRuleContexts(CreateDatabaseSpecificationContext.class);
		}
		public CreateDatabaseSpecificationContext createDatabaseSpecification(int i) {
			return getRuleContext(CreateDatabaseSpecificationContext.class,i);
		}
		public CreateDatabaseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_createDatabase; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitCreateDatabase(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CreateDatabaseContext createDatabase() throws RecognitionException {
		CreateDatabaseContext _localctx = new CreateDatabaseContext(_ctx, getState());
		enterRule(_localctx, 762, RULE_createDatabase);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5738);
			match(CREATE);
			setState(5739);
			match(DATABASE);
			setState(5740);
			name();
			setState(5742);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==WITH) {
				{
				setState(5741);
				match(WITH);
				}
			}

			setState(5747);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==UNICODE_ESCAPE || ((((_la - 81)) & ~0x3f) == 0 && ((1L << (_la - 81)) & ((1L << (INSERT - 81)) | (1L << (UPDATE - 81)) | (1L << (DELETE - 81)) | (1L << (ALTER - 81)) | (1L << (DROP - 81)) | (1L << (TRUNCATE - 81)) | (1L << (SCHEMA - 81)) | (1L << (REVOKE - 81)) | (1L << (ADD - 81)) | (1L << (SET - 81)) | (1L << (INDEX - 81)) | (1L << (KEY - 81)) | (1L << (POSITION - 81)) | (1L << (FUNCTION - 81)) | (1L << (TRIGGER - 81)) | (1L << (PROCEDURE - 81)) | (1L << (VIEW - 81)) | (1L << (IF - 81)))) != 0) || ((((_la - 151)) & ~0x3f) == 0 && ((1L << (_la - 151)) & ((1L << (BY - 151)) | (1L << (BEGIN - 151)) | (1L << (COMMIT - 151)) | (1L << (ROLLBACK - 151)) | (1L << (SAVEPOINT - 151)) | (1L << (DOUBLE - 151)) | (1L << (INTERVAL - 151)) | (1L << (TIME - 151)) | (1L << (TIMESTAMP - 151)) | (1L << (YEAR - 151)) | (1L << (MONTH - 151)) | (1L << (DAY - 151)) | (1L << (HOUR - 151)) | (1L << (MINUTE - 151)) | (1L << (SECOND - 151)) | (1L << (CURRENT - 151)) | (1L << (ENABLE - 151)) | (1L << (DISABLE - 151)) | (1L << (CALL - 151)) | (1L << (PRESERVE - 151)) | (1L << (DEFINER - 151)) | (1L << (SQL - 151)) | (1L << (CASCADED - 151)) | (1L << (LOCAL - 151)) | (1L << (CLOSE - 151)) | (1L << (NEXT - 151)) | (1L << (NAME - 151)) | (1L << (NAMES - 151)) | (1L << (TYPE - 151)) | (1L << (TEXT - 151)) | (1L << (REPEATABLE - 151)) | (1L << (VARYING - 151)) | (1L << (NATIONAL - 151)))) != 0) || ((((_la - 216)) & ~0x3f) == 0 && ((1L << (_la - 216)) & ((1L << (VALUE - 216)) | (1L << (TIES - 216)) | (1L << (CUBE - 216)) | (1L << (SETS - 216)) | (1L << (OTHERS - 216)) | (1L << (AT - 216)) | (1L << (MAXVALUE - 216)) | (1L << (ADMIN - 216)) | (1L << (ESCAPE - 216)) | (1L << (EXCLUDE - 216)) | (1L << (MOD - 216)) | (1L << (PARTITION - 216)) | (1L << (UNKNOWN - 216)) | (1L << (ALWAYS - 216)) | (1L << (CASCADE - 216)) | (1L << (GENERATED - 216)) | (1L << (ISOLATION - 216)) | (1L << (LEVEL - 216)) | (1L << (NO - 216)) | (1L << (OPTION - 216)) | (1L << (PRIVILEGES - 216)) | (1L << (READ - 216)) | (1L << (ROLE - 216)) | (1L << (ROWS - 216)) | (1L << (START - 216)) | (1L << (TRANSACTION - 216)) | (1L << (ACTION - 216)) | (1L << (CACHE - 216)) | (1L << (CHARACTERISTICS - 216)) | (1L << (CLUSTER - 216)) | (1L << (COMMENTS - 216)) | (1L << (CONSTRAINTS - 216)) | (1L << (CYCLE - 216)) | (1L << (DATA - 216)) | (1L << (DATABASE - 216)) | (1L << (DEFAULTS - 216)) | (1L << (DEFERRED - 216)))) != 0) || ((((_la - 280)) & ~0x3f) == 0 && ((1L << (_la - 280)) & ((1L << (DEPENDS - 280)) | (1L << (DOMAIN - 280)) | (1L << (EXCLUDING - 280)) | (1L << (EXECUTE - 280)) | (1L << (EXTENDED - 280)) | (1L << (EXTENSION - 280)) | (1L << (EXTERNAL - 280)) | (1L << (FILTER - 280)) | (1L << (FIRST - 280)) | (1L << (FOLLOWING - 280)) | (1L << (FORCE - 280)) | (1L << (GLOBAL - 280)) | (1L << (IDENTITY - 280)) | (1L << (IMMEDIATE - 280)) | (1L << (INCLUDING - 280)) | (1L << (INCREMENT - 280)) | (1L << (INDEXES - 280)) | (1L << (INHERIT - 280)) | (1L << (INHERITS - 280)) | (1L << (INCLUDE - 280)) | (1L << (LANGUAGE - 280)) | (1L << (LARGE - 280)) | (1L << (LAST - 280)) | (1L << (LOGGED - 280)) | (1L << (MAIN - 280)) | (1L << (MATCH - 280)) | (1L << (MINVALUE - 280)) | (1L << (NOTHING - 280)) | (1L << (NULLS - 280)) | (1L << (OBJECT - 280)) | (1L << (OIDS - 280)) | (1L << (OVER - 280)) | (1L << (OWNED - 280)) | (1L << (OWNER - 280)) | (1L << (PARTIAL - 280)) | (1L << (PLAIN - 280)) | (1L << (PRECEDING - 280)) | (1L << (RANGE - 280)) | (1L << (RENAME - 280)) | (1L << (REPLICA - 280)) | (1L << (RESET - 280)) | (1L << (RESTART - 280)) | (1L << (RESTRICT - 280)) | (1L << (ROUTINE - 280)) | (1L << (RULE - 280)) | (1L << (SECURITY - 280)) | (1L << (SEQUENCE - 280)) | (1L << (SESSION - 280)) | (1L << (SHOW - 280)) | (1L << (SIMPLE - 280)) | (1L << (STATISTICS - 280)) | (1L << (STORAGE - 280)) | (1L << (TABLESPACE - 280)) | (1L << (TEMP - 280)) | (1L << (TEMPORARY - 280)) | (1L << (UNBOUNDED - 280)) | (1L << (UNLOGGED - 280)) | (1L << (VALID - 280)))) != 0) || ((((_la - 344)) & ~0x3f) == 0 && ((1L << (_la - 344)) & ((1L << (VALIDATE - 344)) | (1L << (WITHIN - 344)) | (1L << (WITHOUT - 344)) | (1L << (ZONE - 344)) | (1L << (OF - 344)) | (1L << (UESCAPE - 344)) | (1L << (GROUPS - 344)) | (1L << (RECURSIVE - 344)) | (1L << (INT2 - 344)) | (1L << (INT4 - 344)) | (1L << (FLOAT4 - 344)) | (1L << (BYTEA - 344)) | (1L << (ENUM - 344)) | (1L << (POINT - 344)) | (1L << (LSEG - 344)) | (1L << (BOX - 344)) | (1L << (PATH - 344)) | (1L << (POLYGON - 344)) | (1L << (CIRCLE - 344)) | (1L << (INET - 344)) | (1L << (TSQUERY - 344)) | (1L << (XML - 344)) | (1L << (JSON - 344)) | (1L << (INT4RANGE - 344)) | (1L << (INT8RANGE - 344)) | (1L << (NUMRANGE - 344)) | (1L << (DATERANGE - 344)) | (1L << (ORDINALITY - 344)) | (1L << (NFC - 344)) | (1L << (NFD - 344)) | (1L << (NFKC - 344)))) != 0) || ((((_la - 408)) & ~0x3f) == 0 && ((1L << (_la - 408)) & ((1L << (NFKD - 408)) | (1L << (REF - 408)) | (1L << (PASSING - 408)) | (1L << (VERSION - 408)) | (1L << (YES - 408)) | (1L << (STANDALONE - 408)) | (1L << (MATERIALIZED - 408)) | (1L << (OPERATOR - 408)) | (1L << (SHARE - 408)) | (1L << (ROLLUP - 408)) | (1L << (DOCUMENT - 408)) | (1L << (NORMALIZED - 408)) | (1L << (NOWAIT - 408)) | (1L << (LOCKED - 408)) | (1L << (COLUMNS - 408)) | (1L << (CONTENT - 408)) | (1L << (STRIP - 408)) | (1L << (WHITESPACE - 408)) | (1L << (CONFLICT - 408)) | (1L << (OVERRIDING - 408)) | (1L << (SYSTEM - 408)) | (1L << (ABORT - 408)) | (1L << (ABSOLUTE - 408)) | (1L << (ACCESS - 408)) | (1L << (AFTER - 408)) | (1L << (AGGREGATE - 408)) | (1L << (ALSO - 408)) | (1L << (ATTACH - 408)) | (1L << (ATTRIBUTE - 408)) | (1L << (BACKWARD - 408)) | (1L << (BEFORE - 408)) | (1L << (ASSERTION - 408)) | (1L << (ASSIGNMENT - 408)) | (1L << (CONTINUE - 408)) | (1L << (CONVERSION - 408)) | (1L << (COPY - 408)) | (1L << (COST - 408)) | (1L << (CSV - 408)) | (1L << (CALLED - 408)) | (1L << (CATALOG - 408)) | (1L << (CHAIN - 408)) | (1L << (CHECKPOINT - 408)) | (1L << (CLASS - 408)) | (1L << (CONFIGURATION - 408)) | (1L << (COMMENT - 408)) | (1L << (DETACH - 408)))) != 0) || ((((_la - 472)) & ~0x3f) == 0 && ((1L << (_la - 472)) & ((1L << (DICTIONARY - 472)) | (1L << (EXPRESSION - 472)) | (1L << (INSENSITIVE - 472)) | (1L << (DISCARD - 472)) | (1L << (OFF - 472)) | (1L << (INSTEAD - 472)) | (1L << (EXPLAIN - 472)) | (1L << (INPUT - 472)) | (1L << (INLINE - 472)) | (1L << (PARALLEL - 472)) | (1L << (LEAKPROOF - 472)) | (1L << (COMMITTED - 472)) | (1L << (ENCODING - 472)) | (1L << (IMPLICIT - 472)) | (1L << (DELIMITER - 472)) | (1L << (CURSOR - 472)) | (1L << (EACH - 472)) | (1L << (EVENT - 472)) | (1L << (DEALLOCATE - 472)) | (1L << (CONNECTION - 472)) | (1L << (DECLARE - 472)) | (1L << (FAMILY - 472)) | (1L << (FORWARD - 472)) | (1L << (EXCLUSIVE - 472)) | (1L << (FUNCTIONS - 472)) | (1L << (LOCATION - 472)) | (1L << (LABEL - 472)) | (1L << (DELIMITERS - 472)) | (1L << (HANDLER - 472)) | (1L << (HEADER - 472)) | (1L << (IMMUTABLE - 472)) | (1L << (GRANTED - 472)) | (1L << (HOLD - 472)) | (1L << (MAPPING - 472)) | (1L << (OLD - 472)) | (1L << (METHOD - 472)) | (1L << (LOAD - 472)) | (1L << (LISTEN - 472)) | (1L << (MODE - 472)) | (1L << (MOVE - 472)) | (1L << (PROCEDURAL - 472)) | (1L << (PARSER - 472)) | (1L << (PROCEDURES - 472)) | (1L << (ENCRYPTED - 472)) | (1L << (PUBLICATION - 472)) | (1L << (PROGRAM - 472)) | (1L << (REFERENCING - 472)) | (1L << (PLANS - 472)) | (1L << (REINDEX - 472)) | (1L << (PRIOR - 472)) | (1L << (PASSWORD - 472)) | (1L << (RELATIVE - 472)) | (1L << (QUOTE - 472)) | (1L << (ROUTINES - 472)) | (1L << (REPLACE - 472)) | (1L << (SNAPSHOT - 472)) | (1L << (REFRESH - 472)) | (1L << (PREPARE - 472)) | (1L << (OPTIONS - 472)) | (1L << (IMPORT - 472)) | (1L << (INVOKER - 472)) | (1L << (NEW - 472)) | (1L << (PREPARED - 472)))) != 0) || ((((_la - 536)) & ~0x3f) == 0 && ((1L << (_la - 536)) & ((1L << (SCROLL - 536)) | (1L << (SEQUENCES - 536)) | (1L << (SYSID - 536)) | (1L << (REASSIGN - 536)) | (1L << (SERVER - 536)) | (1L << (SUBSCRIPTION - 536)) | (1L << (SEARCH - 536)) | (1L << (SCHEMAS - 536)) | (1L << (RECHECK - 536)) | (1L << (POLICY - 536)) | (1L << (NOTIFY - 536)) | (1L << (LOCK - 536)) | (1L << (RELEASE - 536)) | (1L << (SERIALIZABLE - 536)) | (1L << (RETURNS - 536)) | (1L << (STATEMENT - 536)) | (1L << (STDIN - 536)) | (1L << (STDOUT - 536)) | (1L << (TABLES - 536)) | (1L << (SUPPORT - 536)) | (1L << (STABLE - 536)) | (1L << (TEMPLATE - 536)) | (1L << (UNENCRYPTED - 536)) | (1L << (VIEWS - 536)) | (1L << (UNCOMMITTED - 536)) | (1L << (TRANSFORM - 536)) | (1L << (UNLISTEN - 536)) | (1L << (TRUSTED - 536)) | (1L << (VALIDATOR - 536)) | (1L << (UNTIL - 536)) | (1L << (VACUUM - 536)) | (1L << (VOLATILE - 536)) | (1L << (STORED - 536)) | (1L << (WRITE - 536)) | (1L << (STRICT - 536)) | (1L << (TYPES - 536)) | (1L << (WRAPPER - 536)) | (1L << (WORK - 536)) | (1L << (INT16 - 536)) | (1L << (INT1 - 536)) | (1L << (ELEM_CONTAINED_BY_RANGE - 536)) | (1L << (IDENTIFIER_ - 536)))) != 0)) {
				{
				{
				setState(5744);
				createDatabaseSpecification();
				}
				}
				setState(5749);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CreateViewContext extends ParserRuleContext {
		public TerminalNode CREATE() { return getToken(OpenGaussStatementParser.CREATE, 0); }
		public TerminalNode VIEW() { return getToken(OpenGaussStatementParser.VIEW, 0); }
		public QualifiedNameContext qualifiedName() {
			return getRuleContext(QualifiedNameContext.class,0);
		}
		public TerminalNode AS() { return getToken(OpenGaussStatementParser.AS, 0); }
		public SelectContext select() {
			return getRuleContext(SelectContext.class,0);
		}
		public TerminalNode OR() { return getToken(OpenGaussStatementParser.OR, 0); }
		public TerminalNode REPLACE() { return getToken(OpenGaussStatementParser.REPLACE, 0); }
		public TerminalNode RECURSIVE() { return getToken(OpenGaussStatementParser.RECURSIVE, 0); }
		public TerminalNode LP_() { return getToken(OpenGaussStatementParser.LP_, 0); }
		public TerminalNode RP_() { return getToken(OpenGaussStatementParser.RP_, 0); }
		public List WITH() { return getTokens(OpenGaussStatementParser.WITH); }
		public TerminalNode WITH(int i) {
			return getToken(OpenGaussStatementParser.WITH, i);
		}
		public ReloptionsContext reloptions() {
			return getRuleContext(ReloptionsContext.class,0);
		}
		public TerminalNode CHECK() { return getToken(OpenGaussStatementParser.CHECK, 0); }
		public TerminalNode OPTION() { return getToken(OpenGaussStatementParser.OPTION, 0); }
		public TerminalNode TEMP() { return getToken(OpenGaussStatementParser.TEMP, 0); }
		public TerminalNode TEMPORARY() { return getToken(OpenGaussStatementParser.TEMPORARY, 0); }
		public List columnList() {
			return getRuleContexts(ColumnListContext.class);
		}
		public ColumnListContext columnList(int i) {
			return getRuleContext(ColumnListContext.class,i);
		}
		public TerminalNode CASCADE() { return getToken(OpenGaussStatementParser.CASCADE, 0); }
		public TerminalNode LOCAL() { return getToken(OpenGaussStatementParser.LOCAL, 0); }
		public List COMMA_() { return getTokens(OpenGaussStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(OpenGaussStatementParser.COMMA_, i);
		}
		public CreateViewContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_createView; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitCreateView(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CreateViewContext createView() throws RecognitionException {
		CreateViewContext _localctx = new CreateViewContext(_ctx, getState());
		enterRule(_localctx, 764, RULE_createView);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5750);
			match(CREATE);
			setState(5753);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==OR) {
				{
				setState(5751);
				match(OR);
				setState(5752);
				match(REPLACE);
				}
			}

			setState(5756);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==TEMP || _la==TEMPORARY) {
				{
				setState(5755);
				_la = _input.LA(1);
				if ( !(_la==TEMP || _la==TEMPORARY) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
			}

			setState(5759);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==RECURSIVE) {
				{
				setState(5758);
				match(RECURSIVE);
				}
			}

			setState(5761);
			match(VIEW);
			setState(5762);
			qualifiedName();
			setState(5775);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==LP_) {
				{
				setState(5763);
				match(LP_);
				setState(5772);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==UNICODE_ESCAPE || ((((_la - 81)) & ~0x3f) == 0 && ((1L << (_la - 81)) & ((1L << (INSERT - 81)) | (1L << (UPDATE - 81)) | (1L << (DELETE - 81)) | (1L << (ALTER - 81)) | (1L << (DROP - 81)) | (1L << (TRUNCATE - 81)) | (1L << (SCHEMA - 81)) | (1L << (REVOKE - 81)) | (1L << (ADD - 81)) | (1L << (SET - 81)) | (1L << (INDEX - 81)) | (1L << (KEY - 81)) | (1L << (POSITION - 81)) | (1L << (FUNCTION - 81)) | (1L << (TRIGGER - 81)) | (1L << (PROCEDURE - 81)) | (1L << (VIEW - 81)) | (1L << (IF - 81)))) != 0) || ((((_la - 151)) & ~0x3f) == 0 && ((1L << (_la - 151)) & ((1L << (BY - 151)) | (1L << (BEGIN - 151)) | (1L << (COMMIT - 151)) | (1L << (ROLLBACK - 151)) | (1L << (SAVEPOINT - 151)) | (1L << (DOUBLE - 151)) | (1L << (INTERVAL - 151)) | (1L << (TIME - 151)) | (1L << (TIMESTAMP - 151)) | (1L << (YEAR - 151)) | (1L << (MONTH - 151)) | (1L << (DAY - 151)) | (1L << (HOUR - 151)) | (1L << (MINUTE - 151)) | (1L << (SECOND - 151)) | (1L << (CURRENT - 151)) | (1L << (ENABLE - 151)) | (1L << (DISABLE - 151)) | (1L << (CALL - 151)) | (1L << (PRESERVE - 151)) | (1L << (DEFINER - 151)) | (1L << (SQL - 151)) | (1L << (CASCADED - 151)) | (1L << (LOCAL - 151)) | (1L << (CLOSE - 151)) | (1L << (NEXT - 151)) | (1L << (NAME - 151)) | (1L << (NAMES - 151)) | (1L << (TYPE - 151)) | (1L << (TEXT - 151)) | (1L << (REPEATABLE - 151)) | (1L << (VARYING - 151)) | (1L << (NATIONAL - 151)))) != 0) || ((((_la - 216)) & ~0x3f) == 0 && ((1L << (_la - 216)) & ((1L << (VALUE - 216)) | (1L << (TIES - 216)) | (1L << (CUBE - 216)) | (1L << (SETS - 216)) | (1L << (OTHERS - 216)) | (1L << (AT - 216)) | (1L << (MAXVALUE - 216)) | (1L << (ADMIN - 216)) | (1L << (ESCAPE - 216)) | (1L << (EXCLUDE - 216)) | (1L << (MOD - 216)) | (1L << (PARTITION - 216)) | (1L << (UNKNOWN - 216)) | (1L << (ALWAYS - 216)) | (1L << (CASCADE - 216)) | (1L << (GENERATED - 216)) | (1L << (ISOLATION - 216)) | (1L << (LEVEL - 216)) | (1L << (NO - 216)) | (1L << (OPTION - 216)) | (1L << (PRIVILEGES - 216)) | (1L << (READ - 216)) | (1L << (ROLE - 216)) | (1L << (ROWS - 216)) | (1L << (START - 216)) | (1L << (TRANSACTION - 216)) | (1L << (ACTION - 216)) | (1L << (CACHE - 216)) | (1L << (CHARACTERISTICS - 216)) | (1L << (CLUSTER - 216)) | (1L << (COMMENTS - 216)) | (1L << (CONSTRAINTS - 216)) | (1L << (CYCLE - 216)) | (1L << (DATA - 216)) | (1L << (DATABASE - 216)) | (1L << (DEFAULTS - 216)) | (1L << (DEFERRED - 216)))) != 0) || ((((_la - 280)) & ~0x3f) == 0 && ((1L << (_la - 280)) & ((1L << (DEPENDS - 280)) | (1L << (DOMAIN - 280)) | (1L << (EXCLUDING - 280)) | (1L << (EXECUTE - 280)) | (1L << (EXTENDED - 280)) | (1L << (EXTENSION - 280)) | (1L << (EXTERNAL - 280)) | (1L << (FILTER - 280)) | (1L << (FIRST - 280)) | (1L << (FOLLOWING - 280)) | (1L << (FORCE - 280)) | (1L << (GLOBAL - 280)) | (1L << (IDENTITY - 280)) | (1L << (IMMEDIATE - 280)) | (1L << (INCLUDING - 280)) | (1L << (INCREMENT - 280)) | (1L << (INDEXES - 280)) | (1L << (INHERIT - 280)) | (1L << (INHERITS - 280)) | (1L << (INCLUDE - 280)) | (1L << (LANGUAGE - 280)) | (1L << (LARGE - 280)) | (1L << (LAST - 280)) | (1L << (LOGGED - 280)) | (1L << (MAIN - 280)) | (1L << (MATCH - 280)) | (1L << (MINVALUE - 280)) | (1L << (NOTHING - 280)) | (1L << (NULLS - 280)) | (1L << (OBJECT - 280)) | (1L << (OIDS - 280)) | (1L << (OVER - 280)) | (1L << (OWNED - 280)) | (1L << (OWNER - 280)) | (1L << (PARTIAL - 280)) | (1L << (PLAIN - 280)) | (1L << (PRECEDING - 280)) | (1L << (RANGE - 280)) | (1L << (RENAME - 280)) | (1L << (REPLICA - 280)) | (1L << (RESET - 280)) | (1L << (RESTART - 280)) | (1L << (RESTRICT - 280)) | (1L << (ROUTINE - 280)) | (1L << (RULE - 280)) | (1L << (SECURITY - 280)) | (1L << (SEQUENCE - 280)) | (1L << (SESSION - 280)) | (1L << (SHOW - 280)) | (1L << (SIMPLE - 280)) | (1L << (STATISTICS - 280)) | (1L << (STORAGE - 280)) | (1L << (TABLESPACE - 280)) | (1L << (TEMP - 280)) | (1L << (TEMPORARY - 280)) | (1L << (UNBOUNDED - 280)) | (1L << (UNLOGGED - 280)) | (1L << (VALID - 280)))) != 0) || ((((_la - 344)) & ~0x3f) == 0 && ((1L << (_la - 344)) & ((1L << (VALIDATE - 344)) | (1L << (WITHIN - 344)) | (1L << (WITHOUT - 344)) | (1L << (ZONE - 344)) | (1L << (OF - 344)) | (1L << (UESCAPE - 344)) | (1L << (GROUPS - 344)) | (1L << (RECURSIVE - 344)) | (1L << (INT2 - 344)) | (1L << (INT4 - 344)) | (1L << (FLOAT4 - 344)) | (1L << (BYTEA - 344)) | (1L << (ENUM - 344)) | (1L << (POINT - 344)) | (1L << (LSEG - 344)) | (1L << (BOX - 344)) | (1L << (PATH - 344)) | (1L << (POLYGON - 344)) | (1L << (CIRCLE - 344)) | (1L << (INET - 344)) | (1L << (TSQUERY - 344)) | (1L << (XML - 344)) | (1L << (JSON - 344)) | (1L << (INT4RANGE - 344)) | (1L << (INT8RANGE - 344)) | (1L << (NUMRANGE - 344)) | (1L << (DATERANGE - 344)) | (1L << (ORDINALITY - 344)) | (1L << (NFC - 344)) | (1L << (NFD - 344)) | (1L << (NFKC - 344)))) != 0) || ((((_la - 408)) & ~0x3f) == 0 && ((1L << (_la - 408)) & ((1L << (NFKD - 408)) | (1L << (REF - 408)) | (1L << (PASSING - 408)) | (1L << (VERSION - 408)) | (1L << (YES - 408)) | (1L << (STANDALONE - 408)) | (1L << (MATERIALIZED - 408)) | (1L << (OPERATOR - 408)) | (1L << (SHARE - 408)) | (1L << (ROLLUP - 408)) | (1L << (DOCUMENT - 408)) | (1L << (NORMALIZED - 408)) | (1L << (NOWAIT - 408)) | (1L << (LOCKED - 408)) | (1L << (COLUMNS - 408)) | (1L << (CONTENT - 408)) | (1L << (STRIP - 408)) | (1L << (WHITESPACE - 408)) | (1L << (CONFLICT - 408)) | (1L << (OVERRIDING - 408)) | (1L << (SYSTEM - 408)) | (1L << (ABORT - 408)) | (1L << (ABSOLUTE - 408)) | (1L << (ACCESS - 408)) | (1L << (AFTER - 408)) | (1L << (AGGREGATE - 408)) | (1L << (ALSO - 408)) | (1L << (ATTACH - 408)) | (1L << (ATTRIBUTE - 408)) | (1L << (BACKWARD - 408)) | (1L << (BEFORE - 408)) | (1L << (ASSERTION - 408)) | (1L << (ASSIGNMENT - 408)) | (1L << (CONTINUE - 408)) | (1L << (CONVERSION - 408)) | (1L << (COPY - 408)) | (1L << (COST - 408)) | (1L << (CSV - 408)) | (1L << (CALLED - 408)) | (1L << (CATALOG - 408)) | (1L << (CHAIN - 408)) | (1L << (CHECKPOINT - 408)) | (1L << (CLASS - 408)) | (1L << (CONFIGURATION - 408)) | (1L << (COMMENT - 408)) | (1L << (DETACH - 408)))) != 0) || ((((_la - 472)) & ~0x3f) == 0 && ((1L << (_la - 472)) & ((1L << (DICTIONARY - 472)) | (1L << (EXPRESSION - 472)) | (1L << (INSENSITIVE - 472)) | (1L << (DISCARD - 472)) | (1L << (OFF - 472)) | (1L << (INSTEAD - 472)) | (1L << (EXPLAIN - 472)) | (1L << (INPUT - 472)) | (1L << (INLINE - 472)) | (1L << (PARALLEL - 472)) | (1L << (LEAKPROOF - 472)) | (1L << (COMMITTED - 472)) | (1L << (ENCODING - 472)) | (1L << (IMPLICIT - 472)) | (1L << (DELIMITER - 472)) | (1L << (CURSOR - 472)) | (1L << (EACH - 472)) | (1L << (EVENT - 472)) | (1L << (DEALLOCATE - 472)) | (1L << (CONNECTION - 472)) | (1L << (DECLARE - 472)) | (1L << (FAMILY - 472)) | (1L << (FORWARD - 472)) | (1L << (EXCLUSIVE - 472)) | (1L << (FUNCTIONS - 472)) | (1L << (LOCATION - 472)) | (1L << (LABEL - 472)) | (1L << (DELIMITERS - 472)) | (1L << (HANDLER - 472)) | (1L << (HEADER - 472)) | (1L << (IMMUTABLE - 472)) | (1L << (GRANTED - 472)) | (1L << (HOLD - 472)) | (1L << (MAPPING - 472)) | (1L << (OLD - 472)) | (1L << (METHOD - 472)) | (1L << (LOAD - 472)) | (1L << (LISTEN - 472)) | (1L << (MODE - 472)) | (1L << (MOVE - 472)) | (1L << (PROCEDURAL - 472)) | (1L << (PARSER - 472)) | (1L << (PROCEDURES - 472)) | (1L << (ENCRYPTED - 472)) | (1L << (PUBLICATION - 472)) | (1L << (PROGRAM - 472)) | (1L << (REFERENCING - 472)) | (1L << (PLANS - 472)) | (1L << (REINDEX - 472)) | (1L << (PRIOR - 472)) | (1L << (PASSWORD - 472)) | (1L << (RELATIVE - 472)) | (1L << (QUOTE - 472)) | (1L << (ROUTINES - 472)) | (1L << (REPLACE - 472)) | (1L << (SNAPSHOT - 472)) | (1L << (REFRESH - 472)) | (1L << (PREPARE - 472)) | (1L << (OPTIONS - 472)) | (1L << (IMPORT - 472)) | (1L << (INVOKER - 472)) | (1L << (NEW - 472)) | (1L << (PREPARED - 472)))) != 0) || ((((_la - 536)) & ~0x3f) == 0 && ((1L << (_la - 536)) & ((1L << (SCROLL - 536)) | (1L << (SEQUENCES - 536)) | (1L << (SYSID - 536)) | (1L << (REASSIGN - 536)) | (1L << (SERVER - 536)) | (1L << (SUBSCRIPTION - 536)) | (1L << (SEARCH - 536)) | (1L << (SCHEMAS - 536)) | (1L << (RECHECK - 536)) | (1L << (POLICY - 536)) | (1L << (NOTIFY - 536)) | (1L << (LOCK - 536)) | (1L << (RELEASE - 536)) | (1L << (SERIALIZABLE - 536)) | (1L << (RETURNS - 536)) | (1L << (STATEMENT - 536)) | (1L << (STDIN - 536)) | (1L << (STDOUT - 536)) | (1L << (TABLES - 536)) | (1L << (SUPPORT - 536)) | (1L << (STABLE - 536)) | (1L << (TEMPLATE - 536)) | (1L << (UNENCRYPTED - 536)) | (1L << (VIEWS - 536)) | (1L << (UNCOMMITTED - 536)) | (1L << (TRANSFORM - 536)) | (1L << (UNLISTEN - 536)) | (1L << (TRUSTED - 536)) | (1L << (VALIDATOR - 536)) | (1L << (UNTIL - 536)) | (1L << (VACUUM - 536)) | (1L << (VOLATILE - 536)) | (1L << (STORED - 536)) | (1L << (WRITE - 536)) | (1L << (STRICT - 536)) | (1L << (TYPES - 536)) | (1L << (WRAPPER - 536)) | (1L << (WORK - 536)) | (1L << (INT16 - 536)) | (1L << (INT1 - 536)) | (1L << (ELEM_CONTAINED_BY_RANGE - 536)) | (1L << (IDENTIFIER_ - 536)))) != 0)) {
					{
					setState(5764);
					columnList();
					setState(5769);
					_errHandler.sync(this);
					_la = _input.LA(1);
					while (_la==COMMA_) {
						{
						{
						setState(5765);
						match(COMMA_);
						setState(5766);
						columnList();
						}
						}
						setState(5771);
						_errHandler.sync(this);
						_la = _input.LA(1);
					}
					}
				}

				setState(5774);
				match(RP_);
				}
			}

			setState(5779);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==WITH) {
				{
				setState(5777);
				match(WITH);
				setState(5778);
				reloptions();
				}
			}

			setState(5781);
			match(AS);
			setState(5782);
			select();
			setState(5789);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==WITH) {
				{
				setState(5783);
				match(WITH);
				setState(5785);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==LOCAL || _la==CASCADE) {
					{
					setState(5784);
					_la = _input.LA(1);
					if ( !(_la==LOCAL || _la==CASCADE) ) {
					_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					}
				}

				setState(5787);
				match(CHECK);
				setState(5788);
				match(OPTION);
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DropDatabaseContext extends ParserRuleContext {
		public TerminalNode DROP() { return getToken(OpenGaussStatementParser.DROP, 0); }
		public TerminalNode DATABASE() { return getToken(OpenGaussStatementParser.DATABASE, 0); }
		public NameContext name() {
			return getRuleContext(NameContext.class,0);
		}
		public IfExistsContext ifExists() {
			return getRuleContext(IfExistsContext.class,0);
		}
		public DropDatabaseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_dropDatabase; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitDropDatabase(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DropDatabaseContext dropDatabase() throws RecognitionException {
		DropDatabaseContext _localctx = new DropDatabaseContext(_ctx, getState());
		enterRule(_localctx, 766, RULE_dropDatabase);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5791);
			match(DROP);
			setState(5792);
			match(DATABASE);
			setState(5794);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,465,_ctx) ) {
			case 1:
				{
				setState(5793);
				ifExists();
				}
				break;
			}
			setState(5796);
			name();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DropDirectoryContext extends ParserRuleContext {
		public TerminalNode DROP() { return getToken(OpenGaussStatementParser.DROP, 0); }
		public TerminalNode DIRECTORY() { return getToken(OpenGaussStatementParser.DIRECTORY, 0); }
		public DirectoryNameContext directoryName() {
			return getRuleContext(DirectoryNameContext.class,0);
		}
		public IfExistsContext ifExists() {
			return getRuleContext(IfExistsContext.class,0);
		}
		public DropDirectoryContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_dropDirectory; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitDropDirectory(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DropDirectoryContext dropDirectory() throws RecognitionException {
		DropDirectoryContext _localctx = new DropDirectoryContext(_ctx, getState());
		enterRule(_localctx, 768, RULE_dropDirectory);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5798);
			match(DROP);
			setState(5799);
			match(DIRECTORY);
			setState(5801);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,466,_ctx) ) {
			case 1:
				{
				setState(5800);
				ifExists();
				}
				break;
			}
			setState(5803);
			directoryName();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CreateDatabaseSpecificationContext extends ParserRuleContext {
		public CreatedbOptNameContext createdbOptName() {
			return getRuleContext(CreatedbOptNameContext.class,0);
		}
		public SignedIconstContext signedIconst() {
			return getRuleContext(SignedIconstContext.class,0);
		}
		public BooleanOrStringContext booleanOrString() {
			return getRuleContext(BooleanOrStringContext.class,0);
		}
		public TerminalNode DEFAULT() { return getToken(OpenGaussStatementParser.DEFAULT, 0); }
		public TerminalNode EQ_() { return getToken(OpenGaussStatementParser.EQ_, 0); }
		public CreateDatabaseSpecificationContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_createDatabaseSpecification; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitCreateDatabaseSpecification(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CreateDatabaseSpecificationContext createDatabaseSpecification() throws RecognitionException {
		CreateDatabaseSpecificationContext _localctx = new CreateDatabaseSpecificationContext(_ctx, getState());
		enterRule(_localctx, 770, RULE_createDatabaseSpecification);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5805);
			createdbOptName();
			setState(5807);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==EQ_) {
				{
				setState(5806);
				match(EQ_);
				}
			}

			setState(5812);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case PLUS_:
			case MINUS_:
			case NUMBER_:
				{
				setState(5809);
				signedIconst();
				}
				break;
			case UNICODE_ESCAPE:
			case INSERT:
			case UPDATE:
			case DELETE:
			case ALTER:
			case DROP:
			case TRUNCATE:
			case SCHEMA:
			case REVOKE:
			case ADD:
			case SET:
			case INDEX:
			case KEY:
			case POSITION:
			case PRECISION:
			case FUNCTION:
			case TRIGGER:
			case PROCEDURE:
			case VIEW:
			case VALUES:
			case TRIM:
			case SUBSTRING:
			case NATURAL:
			case JOIN:
			case FULL:
			case INNER:
			case OUTER:
			case LEFT:
			case RIGHT:
			case CROSS:
			case ON:
			case IF:
			case IS:
			case TRUE:
			case FALSE:
			case EXISTS:
			case BETWEEN:
			case LIKE:
			case BY:
			case BEGIN:
			case COMMIT:
			case ROLLBACK:
			case SAVEPOINT:
			case BOOLEAN:
			case DOUBLE:
			case CHAR:
			case CHARACTER:
			case INTERVAL:
			case TIME:
			case TIMESTAMP:
			case YEAR:
			case MONTH:
			case DAY:
			case HOUR:
			case MINUTE:
			case SECOND:
			case CURRENT:
			case ENABLE:
			case DISABLE:
			case CALL:
			case PRESERVE:
			case DEFINER:
			case SQL:
			case CASCADED:
			case LOCAL:
			case CLOSE:
			case NEXT:
			case NAME:
			case COLLATION:
			case NAMES:
			case INTEGER:
			case REAL:
			case DECIMAL:
			case TYPE:
			case SMALLINT:
			case BIGINT:
			case NUMERIC:
			case TEXT:
			case REPEATABLE:
			case NULLIF:
			case VARYING:
			case NATIONAL:
			case NCHAR:
			case VALUE:
			case COALESCE:
			case TIES:
			case CUBE:
			case GROUPING:
			case SETS:
			case OTHERS:
			case OVERLAPS:
			case AT:
			case DEC:
			case MAXVALUE:
			case ADMIN:
			case BINARY:
			case ESCAPE:
			case EXCLUDE:
			case MOD:
			case PARTITION:
			case ROW:
			case UNKNOWN:
			case ALWAYS:
			case CASCADE:
			case GENERATED:
			case ISOLATION:
			case LEVEL:
			case NO:
			case OPTION:
			case PRIVILEGES:
			case READ:
			case ROLE:
			case ROWS:
			case START:
			case TRANSACTION:
			case ACTION:
			case CACHE:
			case CHARACTERISTICS:
			case CLUSTER:
			case COMMENTS:
			case CONCURRENTLY:
			case CONSTRAINTS:
			case CYCLE:
			case DATA:
			case DATABASE:
			case DEFAULTS:
			case DEFERRED:
			case DEPENDS:
			case DOMAIN:
			case EXCLUDING:
			case EXECUTE:
			case EXTENDED:
			case EXTENSION:
			case EXTERNAL:
			case EXTRACT:
			case FILTER:
			case FIRST:
			case FOLLOWING:
			case FORCE:
			case GLOBAL:
			case IDENTITY:
			case IMMEDIATE:
			case INCLUDING:
			case INCREMENT:
			case INDEXES:
			case INHERIT:
			case INHERITS:
			case INCLUDE:
			case LANGUAGE:
			case LARGE:
			case LAST:
			case LOGGED:
			case MAIN:
			case MATCH:
			case MINVALUE:
			case NOTHING:
			case NULLS:
			case OBJECT:
			case OIDS:
			case OVER:
			case OWNED:
			case OWNER:
			case PARTIAL:
			case PLAIN:
			case PRECEDING:
			case RANGE:
			case RENAME:
			case REPLICA:
			case RESET:
			case RESTART:
			case RESTRICT:
			case ROUTINE:
			case RULE:
			case SECURITY:
			case SEQUENCE:
			case SESSION:
			case SHOW:
			case SIMPLE:
			case STATISTICS:
			case STORAGE:
			case TABLESPACE:
			case TEMP:
			case TEMPORARY:
			case UNBOUNDED:
			case UNLOGGED:
			case VALID:
			case VALIDATE:
			case WITHIN:
			case WITHOUT:
			case ZONE:
			case OF:
			case UESCAPE:
			case GROUPS:
			case RECURSIVE:
			case INT:
			case INT2:
			case INT4:
			case FLOAT:
			case FLOAT4:
			case VARCHAR:
			case BYTEA:
			case ENUM:
			case POINT:
			case LSEG:
			case BOX:
			case PATH:
			case POLYGON:
			case CIRCLE:
			case INET:
			case BIT:
			case TSQUERY:
			case XML:
			case JSON:
			case INT4RANGE:
			case INT8RANGE:
			case NUMRANGE:
			case DATERANGE:
			case TABLESAMPLE:
			case ORDINALITY:
			case CURRENT_SCHEMA:
			case OVERLAY:
			case XMLCONCAT:
			case XMLELEMENT:
			case XMLEXISTS:
			case XMLFOREST:
			case XMLPARSE:
			case XMLPI:
			case XMLROOT:
			case XMLSERIALIZE:
			case TREAT:
			case SETOF:
			case NFC:
			case NFD:
			case NFKC:
			case NFKD:
			case XMLATTRIBUTES:
			case REF:
			case PASSING:
			case VERSION:
			case YES:
			case STANDALONE:
			case GREATEST:
			case LEAST:
			case MATERIALIZED:
			case OPERATOR:
			case SHARE:
			case ROLLUP:
			case ILIKE:
			case SIMILAR:
			case ISNULL:
			case NOTNULL:
			case DOCUMENT:
			case NORMALIZED:
			case NOWAIT:
			case LOCKED:
			case XMLTABLE:
			case COLUMNS:
			case CONTENT:
			case STRIP:
			case WHITESPACE:
			case XMLNAMESPACES:
			case NONE:
			case CONFLICT:
			case OVERRIDING:
			case SYSTEM:
			case ABORT:
			case ABSOLUTE:
			case ACCESS:
			case AFTER:
			case AGGREGATE:
			case ALSO:
			case ATTACH:
			case ATTRIBUTE:
			case BACKWARD:
			case BEFORE:
			case ASSERTION:
			case ASSIGNMENT:
			case CONTINUE:
			case CONVERSION:
			case COPY:
			case COST:
			case CSV:
			case CALLED:
			case CATALOG:
			case CHAIN:
			case CHECKPOINT:
			case CLASS:
			case CONFIGURATION:
			case COMMENT:
			case DETACH:
			case DICTIONARY:
			case EXPRESSION:
			case INSENSITIVE:
			case DISCARD:
			case OFF:
			case INSTEAD:
			case EXPLAIN:
			case INPUT:
			case INLINE:
			case PARALLEL:
			case LEAKPROOF:
			case COMMITTED:
			case ENCODING:
			case IMPLICIT:
			case DELIMITER:
			case CURSOR:
			case EACH:
			case EVENT:
			case DEALLOCATE:
			case CONNECTION:
			case DECLARE:
			case FAMILY:
			case FORWARD:
			case EXCLUSIVE:
			case FUNCTIONS:
			case LOCATION:
			case LABEL:
			case DELIMITERS:
			case HANDLER:
			case HEADER:
			case IMMUTABLE:
			case GRANTED:
			case HOLD:
			case MAPPING:
			case OLD:
			case METHOD:
			case LOAD:
			case LISTEN:
			case MODE:
			case MOVE:
			case PROCEDURAL:
			case PARSER:
			case PROCEDURES:
			case ENCRYPTED:
			case PUBLICATION:
			case PROGRAM:
			case REFERENCING:
			case PLANS:
			case REINDEX:
			case PRIOR:
			case PASSWORD:
			case RELATIVE:
			case QUOTE:
			case ROUTINES:
			case REPLACE:
			case SNAPSHOT:
			case REFRESH:
			case PREPARE:
			case OPTIONS:
			case IMPORT:
			case INVOKER:
			case NEW:
			case PREPARED:
			case SCROLL:
			case SEQUENCES:
			case SYSID:
			case REASSIGN:
			case SERVER:
			case SUBSCRIPTION:
			case SEARCH:
			case SCHEMAS:
			case RECHECK:
			case POLICY:
			case NOTIFY:
			case LOCK:
			case RELEASE:
			case SERIALIZABLE:
			case RETURNS:
			case STATEMENT:
			case STDIN:
			case STDOUT:
			case TABLES:
			case SUPPORT:
			case STABLE:
			case TEMPLATE:
			case UNENCRYPTED:
			case VIEWS:
			case UNCOMMITTED:
			case TRANSFORM:
			case UNLISTEN:
			case TRUSTED:
			case VALIDATOR:
			case UNTIL:
			case VACUUM:
			case VOLATILE:
			case STORED:
			case WRITE:
			case STRICT:
			case TYPES:
			case WRAPPER:
			case WORK:
			case FREEZE:
			case AUTHORIZATION:
			case VERBOSE:
			case OUT:
			case INOUT:
			case INT16:
			case INT1:
			case ELEM_CONTAINED_BY_RANGE:
			case IDENTIFIER_:
			case STRING_:
				{
				setState(5810);
				booleanOrString();
				}
				break;
			case DEFAULT:
				{
				setState(5811);
				match(DEFAULT);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CreatedbOptNameContext extends ParserRuleContext {
		public IdentifierContext identifier() {
			return getRuleContext(IdentifierContext.class,0);
		}
		public TerminalNode CONNECTION() { return getToken(OpenGaussStatementParser.CONNECTION, 0); }
		public TerminalNode LIMIT() { return getToken(OpenGaussStatementParser.LIMIT, 0); }
		public TerminalNode ENCODING() { return getToken(OpenGaussStatementParser.ENCODING, 0); }
		public TerminalNode LOCATION() { return getToken(OpenGaussStatementParser.LOCATION, 0); }
		public TerminalNode OWNER() { return getToken(OpenGaussStatementParser.OWNER, 0); }
		public TerminalNode TABLESPACE() { return getToken(OpenGaussStatementParser.TABLESPACE, 0); }
		public TerminalNode TEMPLATE() { return getToken(OpenGaussStatementParser.TEMPLATE, 0); }
		public CreatedbOptNameContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_createdbOptName; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitCreatedbOptName(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CreatedbOptNameContext createdbOptName() throws RecognitionException {
		CreatedbOptNameContext _localctx = new CreatedbOptNameContext(_ctx, getState());
		enterRule(_localctx, 772, RULE_createdbOptName);
		try {
			setState(5822);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,469,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(5814);
				identifier();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(5815);
				match(CONNECTION);
				setState(5816);
				match(LIMIT);
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(5817);
				match(ENCODING);
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(5818);
				match(LOCATION);
				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(5819);
				match(OWNER);
				}
				break;
			case 6:
				enterOuterAlt(_localctx, 6);
				{
				setState(5820);
				match(TABLESPACE);
				}
				break;
			case 7:
				enterOuterAlt(_localctx, 7);
				{
				setState(5821);
				match(TEMPLATE);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterTableContext extends ParserRuleContext {
		public TerminalNode ALTER() { return getToken(OpenGaussStatementParser.ALTER, 0); }
		public TerminalNode TABLE() { return getToken(OpenGaussStatementParser.TABLE, 0); }
		public OnlyClauseContext onlyClause() {
			return getRuleContext(OnlyClauseContext.class,0);
		}
		public TableNameClauseContext tableNameClause() {
			return getRuleContext(TableNameClauseContext.class,0);
		}
		public AlterDefinitionClauseContext alterDefinitionClause() {
			return getRuleContext(AlterDefinitionClauseContext.class,0);
		}
		public TerminalNode ALL() { return getToken(OpenGaussStatementParser.ALL, 0); }
		public TerminalNode IN() { return getToken(OpenGaussStatementParser.IN, 0); }
		public List TABLESPACE() { return getTokens(OpenGaussStatementParser.TABLESPACE); }
		public TerminalNode TABLESPACE(int i) {
			return getToken(OpenGaussStatementParser.TABLESPACE, i);
		}
		public TerminalNode SET() { return getToken(OpenGaussStatementParser.SET, 0); }
		public NameContext name() {
			return getRuleContext(NameContext.class,0);
		}
		public IfExistsContext ifExists() {
			return getRuleContext(IfExistsContext.class,0);
		}
		public TerminalNode OWNED() { return getToken(OpenGaussStatementParser.OWNED, 0); }
		public TerminalNode BY() { return getToken(OpenGaussStatementParser.BY, 0); }
		public RoleListContext roleList() {
			return getRuleContext(RoleListContext.class,0);
		}
		public TerminalNode NOWAIT() { return getToken(OpenGaussStatementParser.NOWAIT, 0); }
		public AlterTableContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterTable; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitAlterTable(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AlterTableContext alterTable() throws RecognitionException {
		AlterTableContext _localctx = new AlterTableContext(_ctx, getState());
		enterRule(_localctx, 774, RULE_alterTable);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5824);
			match(ALTER);
			setState(5825);
			match(TABLE);
			setState(5848);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case UNICODE_ESCAPE:
			case INSERT:
			case UPDATE:
			case DELETE:
			case ALTER:
			case DROP:
			case TRUNCATE:
			case SCHEMA:
			case REVOKE:
			case ADD:
			case SET:
			case INDEX:
			case KEY:
			case POSITION:
			case FUNCTION:
			case TRIGGER:
			case PROCEDURE:
			case VIEW:
			case IF:
			case BY:
			case BEGIN:
			case COMMIT:
			case ROLLBACK:
			case SAVEPOINT:
			case DOUBLE:
			case INTERVAL:
			case TIME:
			case TIMESTAMP:
			case YEAR:
			case MONTH:
			case DAY:
			case HOUR:
			case MINUTE:
			case SECOND:
			case CURRENT:
			case ENABLE:
			case DISABLE:
			case CALL:
			case PRESERVE:
			case DEFINER:
			case SQL:
			case CASCADED:
			case LOCAL:
			case CLOSE:
			case NEXT:
			case NAME:
			case NAMES:
			case TYPE:
			case TEXT:
			case REPEATABLE:
			case VARYING:
			case NATIONAL:
			case VALUE:
			case TIES:
			case CUBE:
			case SETS:
			case OTHERS:
			case AT:
			case MAXVALUE:
			case ADMIN:
			case ESCAPE:
			case EXCLUDE:
			case MOD:
			case PARTITION:
			case UNKNOWN:
			case ALWAYS:
			case CASCADE:
			case GENERATED:
			case ISOLATION:
			case LEVEL:
			case NO:
			case OPTION:
			case PRIVILEGES:
			case READ:
			case ROLE:
			case ROWS:
			case START:
			case TRANSACTION:
			case ACTION:
			case CACHE:
			case CHARACTERISTICS:
			case CLUSTER:
			case COMMENTS:
			case CONSTRAINTS:
			case CYCLE:
			case DATA:
			case DATABASE:
			case DEFAULTS:
			case DEFERRED:
			case DEPENDS:
			case DOMAIN:
			case EXCLUDING:
			case EXECUTE:
			case EXTENDED:
			case EXTENSION:
			case EXTERNAL:
			case FILTER:
			case FIRST:
			case FOLLOWING:
			case FORCE:
			case GLOBAL:
			case IDENTITY:
			case IMMEDIATE:
			case INCLUDING:
			case INCREMENT:
			case INDEXES:
			case INHERIT:
			case INHERITS:
			case INCLUDE:
			case LANGUAGE:
			case LARGE:
			case LAST:
			case LOGGED:
			case MAIN:
			case MATCH:
			case MINVALUE:
			case NOTHING:
			case NULLS:
			case OBJECT:
			case OIDS:
			case ONLY:
			case OVER:
			case OWNED:
			case OWNER:
			case PARTIAL:
			case PLAIN:
			case PRECEDING:
			case RANGE:
			case RENAME:
			case REPLICA:
			case RESET:
			case RESTART:
			case RESTRICT:
			case ROUTINE:
			case RULE:
			case SECURITY:
			case SEQUENCE:
			case SESSION:
			case SHOW:
			case SIMPLE:
			case STATISTICS:
			case STORAGE:
			case TABLESPACE:
			case TEMP:
			case TEMPORARY:
			case UNBOUNDED:
			case UNLOGGED:
			case VALID:
			case VALIDATE:
			case WITHIN:
			case WITHOUT:
			case ZONE:
			case OF:
			case UESCAPE:
			case GROUPS:
			case RECURSIVE:
			case INT2:
			case INT4:
			case FLOAT4:
			case BYTEA:
			case ENUM:
			case POINT:
			case LSEG:
			case BOX:
			case PATH:
			case POLYGON:
			case CIRCLE:
			case INET:
			case TSQUERY:
			case XML:
			case JSON:
			case INT4RANGE:
			case INT8RANGE:
			case NUMRANGE:
			case DATERANGE:
			case ORDINALITY:
			case NFC:
			case NFD:
			case NFKC:
			case NFKD:
			case REF:
			case PASSING:
			case VERSION:
			case YES:
			case STANDALONE:
			case MATERIALIZED:
			case OPERATOR:
			case SHARE:
			case ROLLUP:
			case DOCUMENT:
			case NORMALIZED:
			case NOWAIT:
			case LOCKED:
			case COLUMNS:
			case CONTENT:
			case STRIP:
			case WHITESPACE:
			case CONFLICT:
			case OVERRIDING:
			case SYSTEM:
			case ABORT:
			case ABSOLUTE:
			case ACCESS:
			case AFTER:
			case AGGREGATE:
			case ALSO:
			case ATTACH:
			case ATTRIBUTE:
			case BACKWARD:
			case BEFORE:
			case ASSERTION:
			case ASSIGNMENT:
			case CONTINUE:
			case CONVERSION:
			case COPY:
			case COST:
			case CSV:
			case CALLED:
			case CATALOG:
			case CHAIN:
			case CHECKPOINT:
			case CLASS:
			case CONFIGURATION:
			case COMMENT:
			case DETACH:
			case DICTIONARY:
			case EXPRESSION:
			case INSENSITIVE:
			case DISCARD:
			case OFF:
			case INSTEAD:
			case EXPLAIN:
			case INPUT:
			case INLINE:
			case PARALLEL:
			case LEAKPROOF:
			case COMMITTED:
			case ENCODING:
			case IMPLICIT:
			case DELIMITER:
			case CURSOR:
			case EACH:
			case EVENT:
			case DEALLOCATE:
			case CONNECTION:
			case DECLARE:
			case FAMILY:
			case FORWARD:
			case EXCLUSIVE:
			case FUNCTIONS:
			case LOCATION:
			case LABEL:
			case DELIMITERS:
			case HANDLER:
			case HEADER:
			case IMMUTABLE:
			case GRANTED:
			case HOLD:
			case MAPPING:
			case OLD:
			case METHOD:
			case LOAD:
			case LISTEN:
			case MODE:
			case MOVE:
			case PROCEDURAL:
			case PARSER:
			case PROCEDURES:
			case ENCRYPTED:
			case PUBLICATION:
			case PROGRAM:
			case REFERENCING:
			case PLANS:
			case REINDEX:
			case PRIOR:
			case PASSWORD:
			case RELATIVE:
			case QUOTE:
			case ROUTINES:
			case REPLACE:
			case SNAPSHOT:
			case REFRESH:
			case PREPARE:
			case OPTIONS:
			case IMPORT:
			case INVOKER:
			case NEW:
			case PREPARED:
			case SCROLL:
			case SEQUENCES:
			case SYSID:
			case REASSIGN:
			case SERVER:
			case SUBSCRIPTION:
			case SEARCH:
			case SCHEMAS:
			case RECHECK:
			case POLICY:
			case NOTIFY:
			case LOCK:
			case RELEASE:
			case SERIALIZABLE:
			case RETURNS:
			case STATEMENT:
			case STDIN:
			case STDOUT:
			case TABLES:
			case SUPPORT:
			case STABLE:
			case TEMPLATE:
			case UNENCRYPTED:
			case VIEWS:
			case UNCOMMITTED:
			case TRANSFORM:
			case UNLISTEN:
			case TRUSTED:
			case VALIDATOR:
			case UNTIL:
			case VACUUM:
			case VOLATILE:
			case STORED:
			case WRITE:
			case STRICT:
			case TYPES:
			case WRAPPER:
			case WORK:
			case INT16:
			case INT1:
			case ELEM_CONTAINED_BY_RANGE:
			case IDENTIFIER_:
				{
				setState(5827);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,470,_ctx) ) {
				case 1:
					{
					setState(5826);
					ifExists();
					}
					break;
				}
				setState(5829);
				onlyClause();
				setState(5830);
				tableNameClause();
				setState(5831);
				alterDefinitionClause();
				}
				break;
			case ALL:
				{
				setState(5833);
				match(ALL);
				setState(5834);
				match(IN);
				setState(5835);
				match(TABLESPACE);
				setState(5836);
				tableNameClause();
				setState(5840);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==OWNED) {
					{
					setState(5837);
					match(OWNED);
					setState(5838);
					match(BY);
					setState(5839);
					roleList();
					}
				}

				setState(5842);
				match(SET);
				setState(5843);
				match(TABLESPACE);
				setState(5844);
				name();
				setState(5846);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==NOWAIT) {
					{
					setState(5845);
					match(NOWAIT);
					}
				}

				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterIndexContext extends ParserRuleContext {
		public TerminalNode ALTER() { return getToken(OpenGaussStatementParser.ALTER, 0); }
		public TerminalNode INDEX() { return getToken(OpenGaussStatementParser.INDEX, 0); }
		public QualifiedNameContext qualifiedName() {
			return getRuleContext(QualifiedNameContext.class,0);
		}
		public AlterIndexDefinitionClauseContext alterIndexDefinitionClause() {
			return getRuleContext(AlterIndexDefinitionClauseContext.class,0);
		}
		public TerminalNode ALL() { return getToken(OpenGaussStatementParser.ALL, 0); }
		public TerminalNode IN() { return getToken(OpenGaussStatementParser.IN, 0); }
		public TerminalNode TABLESPACE() { return getToken(OpenGaussStatementParser.TABLESPACE, 0); }
		public IfExistsContext ifExists() {
			return getRuleContext(IfExistsContext.class,0);
		}
		public AlterIndexContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterIndex; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitAlterIndex(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AlterIndexContext alterIndex() throws RecognitionException {
		AlterIndexContext _localctx = new AlterIndexContext(_ctx, getState());
		enterRule(_localctx, 776, RULE_alterIndex);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5850);
			match(ALTER);
			setState(5851);
			match(INDEX);
			setState(5858);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case UNICODE_ESCAPE:
			case INSERT:
			case UPDATE:
			case DELETE:
			case ALTER:
			case DROP:
			case TRUNCATE:
			case SCHEMA:
			case REVOKE:
			case ADD:
			case SET:
			case INDEX:
			case KEY:
			case POSITION:
			case FUNCTION:
			case TRIGGER:
			case PROCEDURE:
			case VIEW:
			case IF:
			case BY:
			case BEGIN:
			case COMMIT:
			case ROLLBACK:
			case SAVEPOINT:
			case DOUBLE:
			case INTERVAL:
			case TIME:
			case TIMESTAMP:
			case YEAR:
			case MONTH:
			case DAY:
			case HOUR:
			case MINUTE:
			case SECOND:
			case CURRENT:
			case ENABLE:
			case DISABLE:
			case CALL:
			case PRESERVE:
			case DEFINER:
			case SQL:
			case CASCADED:
			case LOCAL:
			case CLOSE:
			case NEXT:
			case NAME:
			case NAMES:
			case TYPE:
			case TEXT:
			case REPEATABLE:
			case VARYING:
			case NATIONAL:
			case VALUE:
			case TIES:
			case CUBE:
			case SETS:
			case OTHERS:
			case AT:
			case MAXVALUE:
			case ADMIN:
			case ESCAPE:
			case EXCLUDE:
			case MOD:
			case PARTITION:
			case UNKNOWN:
			case ALWAYS:
			case CASCADE:
			case GENERATED:
			case ISOLATION:
			case LEVEL:
			case NO:
			case OPTION:
			case PRIVILEGES:
			case READ:
			case ROLE:
			case ROWS:
			case START:
			case TRANSACTION:
			case ACTION:
			case CACHE:
			case CHARACTERISTICS:
			case CLUSTER:
			case COMMENTS:
			case CONSTRAINTS:
			case CYCLE:
			case DATA:
			case DATABASE:
			case DEFAULTS:
			case DEFERRED:
			case DEPENDS:
			case DOMAIN:
			case EXCLUDING:
			case EXECUTE:
			case EXTENDED:
			case EXTENSION:
			case EXTERNAL:
			case FILTER:
			case FIRST:
			case FOLLOWING:
			case FORCE:
			case GLOBAL:
			case IDENTITY:
			case IMMEDIATE:
			case INCLUDING:
			case INCREMENT:
			case INDEXES:
			case INHERIT:
			case INHERITS:
			case INCLUDE:
			case LANGUAGE:
			case LARGE:
			case LAST:
			case LOGGED:
			case MAIN:
			case MATCH:
			case MINVALUE:
			case NOTHING:
			case NULLS:
			case OBJECT:
			case OIDS:
			case OVER:
			case OWNED:
			case OWNER:
			case PARTIAL:
			case PLAIN:
			case PRECEDING:
			case RANGE:
			case RENAME:
			case REPLICA:
			case RESET:
			case RESTART:
			case RESTRICT:
			case ROUTINE:
			case RULE:
			case SECURITY:
			case SEQUENCE:
			case SESSION:
			case SHOW:
			case SIMPLE:
			case STATISTICS:
			case STORAGE:
			case TABLESPACE:
			case TEMP:
			case TEMPORARY:
			case UNBOUNDED:
			case UNLOGGED:
			case VALID:
			case VALIDATE:
			case WITHIN:
			case WITHOUT:
			case ZONE:
			case OF:
			case UESCAPE:
			case GROUPS:
			case RECURSIVE:
			case INT2:
			case INT4:
			case FLOAT4:
			case BYTEA:
			case ENUM:
			case POINT:
			case LSEG:
			case BOX:
			case PATH:
			case POLYGON:
			case CIRCLE:
			case INET:
			case TSQUERY:
			case XML:
			case JSON:
			case INT4RANGE:
			case INT8RANGE:
			case NUMRANGE:
			case DATERANGE:
			case ORDINALITY:
			case NFC:
			case NFD:
			case NFKC:
			case NFKD:
			case REF:
			case PASSING:
			case VERSION:
			case YES:
			case STANDALONE:
			case MATERIALIZED:
			case OPERATOR:
			case SHARE:
			case ROLLUP:
			case DOCUMENT:
			case NORMALIZED:
			case NOWAIT:
			case LOCKED:
			case COLUMNS:
			case CONTENT:
			case STRIP:
			case WHITESPACE:
			case CONFLICT:
			case OVERRIDING:
			case SYSTEM:
			case ABORT:
			case ABSOLUTE:
			case ACCESS:
			case AFTER:
			case AGGREGATE:
			case ALSO:
			case ATTACH:
			case ATTRIBUTE:
			case BACKWARD:
			case BEFORE:
			case ASSERTION:
			case ASSIGNMENT:
			case CONTINUE:
			case CONVERSION:
			case COPY:
			case COST:
			case CSV:
			case CALLED:
			case CATALOG:
			case CHAIN:
			case CHECKPOINT:
			case CLASS:
			case CONFIGURATION:
			case COMMENT:
			case DETACH:
			case DICTIONARY:
			case EXPRESSION:
			case INSENSITIVE:
			case DISCARD:
			case OFF:
			case INSTEAD:
			case EXPLAIN:
			case INPUT:
			case INLINE:
			case PARALLEL:
			case LEAKPROOF:
			case COMMITTED:
			case ENCODING:
			case IMPLICIT:
			case DELIMITER:
			case CURSOR:
			case EACH:
			case EVENT:
			case DEALLOCATE:
			case CONNECTION:
			case DECLARE:
			case FAMILY:
			case FORWARD:
			case EXCLUSIVE:
			case FUNCTIONS:
			case LOCATION:
			case LABEL:
			case DELIMITERS:
			case HANDLER:
			case HEADER:
			case IMMUTABLE:
			case GRANTED:
			case HOLD:
			case MAPPING:
			case OLD:
			case METHOD:
			case LOAD:
			case LISTEN:
			case MODE:
			case MOVE:
			case PROCEDURAL:
			case PARSER:
			case PROCEDURES:
			case ENCRYPTED:
			case PUBLICATION:
			case PROGRAM:
			case REFERENCING:
			case PLANS:
			case REINDEX:
			case PRIOR:
			case PASSWORD:
			case RELATIVE:
			case QUOTE:
			case ROUTINES:
			case REPLACE:
			case SNAPSHOT:
			case REFRESH:
			case PREPARE:
			case OPTIONS:
			case IMPORT:
			case INVOKER:
			case NEW:
			case PREPARED:
			case SCROLL:
			case SEQUENCES:
			case SYSID:
			case REASSIGN:
			case SERVER:
			case SUBSCRIPTION:
			case SEARCH:
			case SCHEMAS:
			case RECHECK:
			case POLICY:
			case NOTIFY:
			case LOCK:
			case RELEASE:
			case SERIALIZABLE:
			case RETURNS:
			case STATEMENT:
			case STDIN:
			case STDOUT:
			case TABLES:
			case SUPPORT:
			case STABLE:
			case TEMPLATE:
			case UNENCRYPTED:
			case VIEWS:
			case UNCOMMITTED:
			case TRANSFORM:
			case UNLISTEN:
			case TRUSTED:
			case VALIDATOR:
			case UNTIL:
			case VACUUM:
			case VOLATILE:
			case STORED:
			case WRITE:
			case STRICT:
			case TYPES:
			case WRAPPER:
			case WORK:
			case INT16:
			case INT1:
			case ELEM_CONTAINED_BY_RANGE:
			case IDENTIFIER_:
				{
				setState(5853);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,474,_ctx) ) {
				case 1:
					{
					setState(5852);
					ifExists();
					}
					break;
				}
				}
				break;
			case ALL:
				{
				setState(5855);
				match(ALL);
				setState(5856);
				match(IN);
				setState(5857);
				match(TABLESPACE);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			setState(5860);
			qualifiedName();
			setState(5861);
			alterIndexDefinitionClause();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DropTableContext extends ParserRuleContext {
		public TerminalNode DROP() { return getToken(OpenGaussStatementParser.DROP, 0); }
		public TerminalNode TABLE() { return getToken(OpenGaussStatementParser.TABLE, 0); }
		public TableNamesContext tableNames() {
			return getRuleContext(TableNamesContext.class,0);
		}
		public IfExistsContext ifExists() {
			return getRuleContext(IfExistsContext.class,0);
		}
		public DropTableOptContext dropTableOpt() {
			return getRuleContext(DropTableOptContext.class,0);
		}
		public DropTableContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_dropTable; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitDropTable(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DropTableContext dropTable() throws RecognitionException {
		DropTableContext _localctx = new DropTableContext(_ctx, getState());
		enterRule(_localctx, 778, RULE_dropTable);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5863);
			match(DROP);
			setState(5864);
			match(TABLE);
			setState(5866);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,476,_ctx) ) {
			case 1:
				{
				setState(5865);
				ifExists();
				}
				break;
			}
			setState(5868);
			tableNames();
			setState(5870);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==CASCADE || _la==RESTRICT) {
				{
				setState(5869);
				dropTableOpt();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DropTableOptContext extends ParserRuleContext {
		public TerminalNode CASCADE() { return getToken(OpenGaussStatementParser.CASCADE, 0); }
		public TerminalNode RESTRICT() { return getToken(OpenGaussStatementParser.RESTRICT, 0); }
		public DropTableOptContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_dropTableOpt; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitDropTableOpt(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DropTableOptContext dropTableOpt() throws RecognitionException {
		DropTableOptContext _localctx = new DropTableOptContext(_ctx, getState());
		enterRule(_localctx, 780, RULE_dropTableOpt);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5872);
			_la = _input.LA(1);
			if ( !(_la==CASCADE || _la==RESTRICT) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DropIndexContext extends ParserRuleContext {
		public TerminalNode DROP() { return getToken(OpenGaussStatementParser.DROP, 0); }
		public TerminalNode INDEX() { return getToken(OpenGaussStatementParser.INDEX, 0); }
		public ConcurrentlyClauseContext concurrentlyClause() {
			return getRuleContext(ConcurrentlyClauseContext.class,0);
		}
		public QualifiedNameListContext qualifiedNameList() {
			return getRuleContext(QualifiedNameListContext.class,0);
		}
		public IfExistsContext ifExists() {
			return getRuleContext(IfExistsContext.class,0);
		}
		public DropIndexOptContext dropIndexOpt() {
			return getRuleContext(DropIndexOptContext.class,0);
		}
		public DropIndexContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_dropIndex; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitDropIndex(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DropIndexContext dropIndex() throws RecognitionException {
		DropIndexContext _localctx = new DropIndexContext(_ctx, getState());
		enterRule(_localctx, 782, RULE_dropIndex);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5874);
			match(DROP);
			setState(5875);
			match(INDEX);
			setState(5876);
			concurrentlyClause();
			setState(5878);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,478,_ctx) ) {
			case 1:
				{
				setState(5877);
				ifExists();
				}
				break;
			}
			setState(5880);
			qualifiedNameList(0);
			setState(5882);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==CASCADE || _la==RESTRICT) {
				{
				setState(5881);
				dropIndexOpt();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DropIndexOptContext extends ParserRuleContext {
		public TerminalNode CASCADE() { return getToken(OpenGaussStatementParser.CASCADE, 0); }
		public TerminalNode RESTRICT() { return getToken(OpenGaussStatementParser.RESTRICT, 0); }
		public DropIndexOptContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_dropIndexOpt; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitDropIndexOpt(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DropIndexOptContext dropIndexOpt() throws RecognitionException {
		DropIndexOptContext _localctx = new DropIndexOptContext(_ctx, getState());
		enterRule(_localctx, 784, RULE_dropIndexOpt);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5884);
			_la = _input.LA(1);
			if ( !(_la==CASCADE || _la==RESTRICT) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class TruncateTableContext extends ParserRuleContext {
		public TerminalNode TRUNCATE() { return getToken(OpenGaussStatementParser.TRUNCATE, 0); }
		public OnlyClauseContext onlyClause() {
			return getRuleContext(OnlyClauseContext.class,0);
		}
		public TableNamesClauseContext tableNamesClause() {
			return getRuleContext(TableNamesClauseContext.class,0);
		}
		public TerminalNode TABLE() { return getToken(OpenGaussStatementParser.TABLE, 0); }
		public RestartSeqsContext restartSeqs() {
			return getRuleContext(RestartSeqsContext.class,0);
		}
		public DropTableOptContext dropTableOpt() {
			return getRuleContext(DropTableOptContext.class,0);
		}
		public TruncateTableContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_truncateTable; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitTruncateTable(this);
			else return visitor.visitChildren(this);
		}
	}

	public final TruncateTableContext truncateTable() throws RecognitionException {
		TruncateTableContext _localctx = new TruncateTableContext(_ctx, getState());
		enterRule(_localctx, 786, RULE_truncateTable);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5886);
			match(TRUNCATE);
			setState(5888);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==TABLE) {
				{
				setState(5887);
				match(TABLE);
				}
			}

			setState(5890);
			onlyClause();
			setState(5891);
			tableNamesClause();
			setState(5893);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==RESTART || _la==CONTINUE) {
				{
				setState(5892);
				restartSeqs();
				}
			}

			setState(5896);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==CASCADE || _la==RESTRICT) {
				{
				setState(5895);
				dropTableOpt();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class RestartSeqsContext extends ParserRuleContext {
		public TerminalNode CONTINUE() { return getToken(OpenGaussStatementParser.CONTINUE, 0); }
		public TerminalNode IDENTITY() { return getToken(OpenGaussStatementParser.IDENTITY, 0); }
		public TerminalNode RESTART() { return getToken(OpenGaussStatementParser.RESTART, 0); }
		public RestartSeqsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_restartSeqs; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitRestartSeqs(this);
			else return visitor.visitChildren(this);
		}
	}

	public final RestartSeqsContext restartSeqs() throws RecognitionException {
		RestartSeqsContext _localctx = new RestartSeqsContext(_ctx, getState());
		enterRule(_localctx, 788, RULE_restartSeqs);
		try {
			setState(5902);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case CONTINUE:
				enterOuterAlt(_localctx, 1);
				{
				setState(5898);
				match(CONTINUE);
				setState(5899);
				match(IDENTITY);
				}
				break;
			case RESTART:
				enterOuterAlt(_localctx, 2);
				{
				setState(5900);
				match(RESTART);
				setState(5901);
				match(IDENTITY);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CreateTableSpecificationContext extends ParserRuleContext {
		public TerminalNode UNLOGGED() { return getToken(OpenGaussStatementParser.UNLOGGED, 0); }
		public TerminalNode TEMPORARY() { return getToken(OpenGaussStatementParser.TEMPORARY, 0); }
		public TerminalNode TEMP() { return getToken(OpenGaussStatementParser.TEMP, 0); }
		public TerminalNode GLOBAL() { return getToken(OpenGaussStatementParser.GLOBAL, 0); }
		public TerminalNode LOCAL() { return getToken(OpenGaussStatementParser.LOCAL, 0); }
		public CreateTableSpecificationContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_createTableSpecification; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitCreateTableSpecification(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CreateTableSpecificationContext createTableSpecification() throws RecognitionException {
		CreateTableSpecificationContext _localctx = new CreateTableSpecificationContext(_ctx, getState());
		enterRule(_localctx, 790, RULE_createTableSpecification);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5909);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case LOCAL:
			case GLOBAL:
			case TEMP:
			case TEMPORARY:
				{
				setState(5905);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==LOCAL || _la==GLOBAL) {
					{
					setState(5904);
					_la = _input.LA(1);
					if ( !(_la==LOCAL || _la==GLOBAL) ) {
					_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					}
				}

				setState(5907);
				_la = _input.LA(1);
				if ( !(_la==TEMP || _la==TEMPORARY) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
				break;
			case UNLOGGED:
				{
				setState(5908);
				match(UNLOGGED);
				}
				break;
			case TABLE:
				break;
			default:
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CreateDefinitionClauseContext extends ParserRuleContext {
		public TerminalNode LP_() { return getToken(OpenGaussStatementParser.LP_, 0); }
		public TerminalNode RP_() { return getToken(OpenGaussStatementParser.RP_, 0); }
		public List createDefinition() {
			return getRuleContexts(CreateDefinitionContext.class);
		}
		public CreateDefinitionContext createDefinition(int i) {
			return getRuleContext(CreateDefinitionContext.class,i);
		}
		public List COMMA_() { return getTokens(OpenGaussStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(OpenGaussStatementParser.COMMA_, i);
		}
		public CreateDefinitionClauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_createDefinitionClause; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitCreateDefinitionClause(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CreateDefinitionClauseContext createDefinitionClause() throws RecognitionException {
		CreateDefinitionClauseContext _localctx = new CreateDefinitionClauseContext(_ctx, getState());
		enterRule(_localctx, 792, RULE_createDefinitionClause);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5911);
			match(LP_);
			setState(5920);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==UNICODE_ESCAPE || ((((_la - 81)) & ~0x3f) == 0 && ((1L << (_la - 81)) & ((1L << (INSERT - 81)) | (1L << (UPDATE - 81)) | (1L << (DELETE - 81)) | (1L << (ALTER - 81)) | (1L << (DROP - 81)) | (1L << (TRUNCATE - 81)) | (1L << (SCHEMA - 81)) | (1L << (REVOKE - 81)) | (1L << (ADD - 81)) | (1L << (SET - 81)) | (1L << (INDEX - 81)) | (1L << (CONSTRAINT - 81)) | (1L << (PRIMARY - 81)) | (1L << (UNIQUE - 81)) | (1L << (FOREIGN - 81)) | (1L << (KEY - 81)) | (1L << (POSITION - 81)) | (1L << (FUNCTION - 81)) | (1L << (TRIGGER - 81)) | (1L << (PROCEDURE - 81)) | (1L << (VIEW - 81)) | (1L << (IF - 81)))) != 0) || ((((_la - 148)) & ~0x3f) == 0 && ((1L << (_la - 148)) & ((1L << (LIKE - 148)) | (1L << (BY - 148)) | (1L << (BEGIN - 148)) | (1L << (COMMIT - 148)) | (1L << (ROLLBACK - 148)) | (1L << (SAVEPOINT - 148)) | (1L << (DOUBLE - 148)) | (1L << (INTERVAL - 148)) | (1L << (TIME - 148)) | (1L << (TIMESTAMP - 148)) | (1L << (YEAR - 148)) | (1L << (MONTH - 148)) | (1L << (DAY - 148)) | (1L << (HOUR - 148)) | (1L << (MINUTE - 148)) | (1L << (SECOND - 148)) | (1L << (CURRENT - 148)) | (1L << (ENABLE - 148)) | (1L << (DISABLE - 148)) | (1L << (CALL - 148)) | (1L << (PRESERVE - 148)) | (1L << (DEFINER - 148)) | (1L << (SQL - 148)) | (1L << (CASCADED - 148)) | (1L << (LOCAL - 148)) | (1L << (CLOSE - 148)) | (1L << (NEXT - 148)) | (1L << (NAME - 148)) | (1L << (NAMES - 148)) | (1L << (TYPE - 148)) | (1L << (TEXT - 148)) | (1L << (REPEATABLE - 148)))) != 0) || ((((_la - 213)) & ~0x3f) == 0 && ((1L << (_la - 213)) & ((1L << (VARYING - 213)) | (1L << (NATIONAL - 213)) | (1L << (VALUE - 213)) | (1L << (TIES - 213)) | (1L << (CUBE - 213)) | (1L << (SETS - 213)) | (1L << (OTHERS - 213)) | (1L << (AT - 213)) | (1L << (MAXVALUE - 213)) | (1L << (ADMIN - 213)) | (1L << (ESCAPE - 213)) | (1L << (EXCLUDE - 213)) | (1L << (MOD - 213)) | (1L << (PARTITION - 213)) | (1L << (UNKNOWN - 213)) | (1L << (ALWAYS - 213)) | (1L << (CASCADE - 213)) | (1L << (CHECK - 213)) | (1L << (GENERATED - 213)) | (1L << (ISOLATION - 213)) | (1L << (LEVEL - 213)) | (1L << (NO - 213)) | (1L << (OPTION - 213)) | (1L << (PRIVILEGES - 213)) | (1L << (READ - 213)) | (1L << (ROLE - 213)) | (1L << (ROWS - 213)) | (1L << (START - 213)) | (1L << (TRANSACTION - 213)) | (1L << (ACTION - 213)) | (1L << (CACHE - 213)) | (1L << (CHARACTERISTICS - 213)) | (1L << (CLUSTER - 213)) | (1L << (COMMENTS - 213)) | (1L << (CONSTRAINTS - 213)) | (1L << (CYCLE - 213)) | (1L << (DATA - 213)) | (1L << (DATABASE - 213)))) != 0) || ((((_la - 277)) & ~0x3f) == 0 && ((1L << (_la - 277)) & ((1L << (DEFAULTS - 277)) | (1L << (DEFERRED - 277)) | (1L << (DEPENDS - 277)) | (1L << (DOMAIN - 277)) | (1L << (EXCLUDING - 277)) | (1L << (EXECUTE - 277)) | (1L << (EXTENDED - 277)) | (1L << (EXTENSION - 277)) | (1L << (EXTERNAL - 277)) | (1L << (FILTER - 277)) | (1L << (FIRST - 277)) | (1L << (FOLLOWING - 277)) | (1L << (FORCE - 277)) | (1L << (GLOBAL - 277)) | (1L << (IDENTITY - 277)) | (1L << (IMMEDIATE - 277)) | (1L << (INCLUDING - 277)) | (1L << (INCREMENT - 277)) | (1L << (INDEXES - 277)) | (1L << (INHERIT - 277)) | (1L << (INHERITS - 277)) | (1L << (INCLUDE - 277)) | (1L << (LANGUAGE - 277)) | (1L << (LARGE - 277)) | (1L << (LAST - 277)) | (1L << (LOGGED - 277)) | (1L << (MAIN - 277)) | (1L << (MATCH - 277)) | (1L << (MINVALUE - 277)) | (1L << (NOTHING - 277)) | (1L << (NULLS - 277)) | (1L << (OBJECT - 277)) | (1L << (OIDS - 277)) | (1L << (OVER - 277)) | (1L << (OWNED - 277)) | (1L << (OWNER - 277)) | (1L << (PARTIAL - 277)) | (1L << (PLAIN - 277)) | (1L << (PRECEDING - 277)) | (1L << (RANGE - 277)) | (1L << (RENAME - 277)) | (1L << (REPLICA - 277)) | (1L << (RESET - 277)) | (1L << (RESTART - 277)) | (1L << (RESTRICT - 277)) | (1L << (ROUTINE - 277)) | (1L << (RULE - 277)) | (1L << (SECURITY - 277)) | (1L << (SEQUENCE - 277)) | (1L << (SESSION - 277)) | (1L << (SHOW - 277)) | (1L << (SIMPLE - 277)) | (1L << (STATISTICS - 277)) | (1L << (STORAGE - 277)) | (1L << (TABLESPACE - 277)) | (1L << (TEMP - 277)) | (1L << (TEMPORARY - 277)) | (1L << (UNBOUNDED - 277)))) != 0) || ((((_la - 341)) & ~0x3f) == 0 && ((1L << (_la - 341)) & ((1L << (UNLOGGED - 341)) | (1L << (VALID - 341)) | (1L << (VALIDATE - 341)) | (1L << (WITHIN - 341)) | (1L << (WITHOUT - 341)) | (1L << (ZONE - 341)) | (1L << (OF - 341)) | (1L << (UESCAPE - 341)) | (1L << (GROUPS - 341)) | (1L << (RECURSIVE - 341)) | (1L << (INT2 - 341)) | (1L << (INT4 - 341)) | (1L << (FLOAT4 - 341)) | (1L << (BYTEA - 341)) | (1L << (ENUM - 341)) | (1L << (POINT - 341)) | (1L << (LSEG - 341)) | (1L << (BOX - 341)) | (1L << (PATH - 341)) | (1L << (POLYGON - 341)) | (1L << (CIRCLE - 341)) | (1L << (INET - 341)) | (1L << (TSQUERY - 341)) | (1L << (XML - 341)) | (1L << (JSON - 341)) | (1L << (INT4RANGE - 341)) | (1L << (INT8RANGE - 341)) | (1L << (NUMRANGE - 341)) | (1L << (DATERANGE - 341)) | (1L << (ORDINALITY - 341)))) != 0) || ((((_la - 405)) & ~0x3f) == 0 && ((1L << (_la - 405)) & ((1L << (NFC - 405)) | (1L << (NFD - 405)) | (1L << (NFKC - 405)) | (1L << (NFKD - 405)) | (1L << (REF - 405)) | (1L << (PASSING - 405)) | (1L << (VERSION - 405)) | (1L << (YES - 405)) | (1L << (STANDALONE - 405)) | (1L << (MATERIALIZED - 405)) | (1L << (OPERATOR - 405)) | (1L << (SHARE - 405)) | (1L << (ROLLUP - 405)) | (1L << (DOCUMENT - 405)) | (1L << (NORMALIZED - 405)) | (1L << (NOWAIT - 405)) | (1L << (LOCKED - 405)) | (1L << (COLUMNS - 405)) | (1L << (CONTENT - 405)) | (1L << (STRIP - 405)) | (1L << (WHITESPACE - 405)) | (1L << (CONFLICT - 405)) | (1L << (OVERRIDING - 405)) | (1L << (SYSTEM - 405)) | (1L << (ABORT - 405)) | (1L << (ABSOLUTE - 405)) | (1L << (ACCESS - 405)) | (1L << (AFTER - 405)) | (1L << (AGGREGATE - 405)) | (1L << (ALSO - 405)) | (1L << (ATTACH - 405)) | (1L << (ATTRIBUTE - 405)) | (1L << (BACKWARD - 405)) | (1L << (BEFORE - 405)) | (1L << (ASSERTION - 405)) | (1L << (ASSIGNMENT - 405)) | (1L << (CONTINUE - 405)) | (1L << (CONVERSION - 405)) | (1L << (COPY - 405)) | (1L << (COST - 405)) | (1L << (CSV - 405)) | (1L << (CALLED - 405)) | (1L << (CATALOG - 405)) | (1L << (CHAIN - 405)) | (1L << (CHECKPOINT - 405)) | (1L << (CLASS - 405)))) != 0) || ((((_la - 469)) & ~0x3f) == 0 && ((1L << (_la - 469)) & ((1L << (CONFIGURATION - 469)) | (1L << (COMMENT - 469)) | (1L << (DETACH - 469)) | (1L << (DICTIONARY - 469)) | (1L << (EXPRESSION - 469)) | (1L << (INSENSITIVE - 469)) | (1L << (DISCARD - 469)) | (1L << (OFF - 469)) | (1L << (INSTEAD - 469)) | (1L << (EXPLAIN - 469)) | (1L << (INPUT - 469)) | (1L << (INLINE - 469)) | (1L << (PARALLEL - 469)) | (1L << (LEAKPROOF - 469)) | (1L << (COMMITTED - 469)) | (1L << (ENCODING - 469)) | (1L << (IMPLICIT - 469)) | (1L << (DELIMITER - 469)) | (1L << (CURSOR - 469)) | (1L << (EACH - 469)) | (1L << (EVENT - 469)) | (1L << (DEALLOCATE - 469)) | (1L << (CONNECTION - 469)) | (1L << (DECLARE - 469)) | (1L << (FAMILY - 469)) | (1L << (FORWARD - 469)) | (1L << (EXCLUSIVE - 469)) | (1L << (FUNCTIONS - 469)) | (1L << (LOCATION - 469)) | (1L << (LABEL - 469)) | (1L << (DELIMITERS - 469)) | (1L << (HANDLER - 469)) | (1L << (HEADER - 469)) | (1L << (IMMUTABLE - 469)) | (1L << (GRANTED - 469)) | (1L << (HOLD - 469)) | (1L << (MAPPING - 469)) | (1L << (OLD - 469)) | (1L << (METHOD - 469)) | (1L << (LOAD - 469)) | (1L << (LISTEN - 469)) | (1L << (MODE - 469)) | (1L << (MOVE - 469)) | (1L << (PROCEDURAL - 469)) | (1L << (PARSER - 469)) | (1L << (PROCEDURES - 469)) | (1L << (ENCRYPTED - 469)) | (1L << (PUBLICATION - 469)) | (1L << (PROGRAM - 469)) | (1L << (REFERENCING - 469)) | (1L << (PLANS - 469)) | (1L << (REINDEX - 469)) | (1L << (PRIOR - 469)) | (1L << (PASSWORD - 469)) | (1L << (RELATIVE - 469)) | (1L << (QUOTE - 469)) | (1L << (ROUTINES - 469)) | (1L << (REPLACE - 469)) | (1L << (SNAPSHOT - 469)) | (1L << (REFRESH - 469)) | (1L << (PREPARE - 469)) | (1L << (OPTIONS - 469)) | (1L << (IMPORT - 469)))) != 0) || ((((_la - 533)) & ~0x3f) == 0 && ((1L << (_la - 533)) & ((1L << (INVOKER - 533)) | (1L << (NEW - 533)) | (1L << (PREPARED - 533)) | (1L << (SCROLL - 533)) | (1L << (SEQUENCES - 533)) | (1L << (SYSID - 533)) | (1L << (REASSIGN - 533)) | (1L << (SERVER - 533)) | (1L << (SUBSCRIPTION - 533)) | (1L << (SEARCH - 533)) | (1L << (SCHEMAS - 533)) | (1L << (RECHECK - 533)) | (1L << (POLICY - 533)) | (1L << (NOTIFY - 533)) | (1L << (LOCK - 533)) | (1L << (RELEASE - 533)) | (1L << (SERIALIZABLE - 533)) | (1L << (RETURNS - 533)) | (1L << (STATEMENT - 533)) | (1L << (STDIN - 533)) | (1L << (STDOUT - 533)) | (1L << (TABLES - 533)) | (1L << (SUPPORT - 533)) | (1L << (STABLE - 533)) | (1L << (TEMPLATE - 533)) | (1L << (UNENCRYPTED - 533)) | (1L << (VIEWS - 533)) | (1L << (UNCOMMITTED - 533)) | (1L << (TRANSFORM - 533)) | (1L << (UNLISTEN - 533)) | (1L << (TRUSTED - 533)) | (1L << (VALIDATOR - 533)) | (1L << (UNTIL - 533)) | (1L << (VACUUM - 533)) | (1L << (VOLATILE - 533)) | (1L << (STORED - 533)) | (1L << (WRITE - 533)) | (1L << (STRICT - 533)) | (1L << (TYPES - 533)) | (1L << (WRAPPER - 533)) | (1L << (WORK - 533)) | (1L << (INT16 - 533)) | (1L << (INT1 - 533)) | (1L << (ELEM_CONTAINED_BY_RANGE - 533)) | (1L << (IDENTIFIER_ - 533)))) != 0)) {
				{
				setState(5912);
				createDefinition();
				setState(5917);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA_) {
					{
					{
					setState(5913);
					match(COMMA_);
					setState(5914);
					createDefinition();
					}
					}
					setState(5919);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				}
			}

			setState(5922);
			match(RP_);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CreateDefinitionContext extends ParserRuleContext {
		public ColumnDefinitionContext columnDefinition() {
			return getRuleContext(ColumnDefinitionContext.class,0);
		}
		public TableConstraintContext tableConstraint() {
			return getRuleContext(TableConstraintContext.class,0);
		}
		public TerminalNode LIKE() { return getToken(OpenGaussStatementParser.LIKE, 0); }
		public TableNameContext tableName() {
			return getRuleContext(TableNameContext.class,0);
		}
		public List likeOption() {
			return getRuleContexts(LikeOptionContext.class);
		}
		public LikeOptionContext likeOption(int i) {
			return getRuleContext(LikeOptionContext.class,i);
		}
		public CreateDefinitionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_createDefinition; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitCreateDefinition(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CreateDefinitionContext createDefinition() throws RecognitionException {
		CreateDefinitionContext _localctx = new CreateDefinitionContext(_ctx, getState());
		enterRule(_localctx, 794, RULE_createDefinition);
		int _la;
		try {
			setState(5934);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,489,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(5924);
				columnDefinition();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(5925);
				tableConstraint();
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(5926);
				match(LIKE);
				setState(5927);
				tableName();
				setState(5931);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==EXCLUDING || _la==INCLUDING) {
					{
					{
					setState(5928);
					likeOption();
					}
					}
					setState(5933);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ColumnDefinitionContext extends ParserRuleContext {
		public ColumnNameContext columnName() {
			return getRuleContext(ColumnNameContext.class,0);
		}
		public DataTypeContext dataType() {
			return getRuleContext(DataTypeContext.class,0);
		}
		public CollateClauseContext collateClause() {
			return getRuleContext(CollateClauseContext.class,0);
		}
		public List columnConstraint() {
			return getRuleContexts(ColumnConstraintContext.class);
		}
		public ColumnConstraintContext columnConstraint(int i) {
			return getRuleContext(ColumnConstraintContext.class,i);
		}
		public ColumnDefinitionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_columnDefinition; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitColumnDefinition(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ColumnDefinitionContext columnDefinition() throws RecognitionException {
		ColumnDefinitionContext _localctx = new ColumnDefinitionContext(_ctx, getState());
		enterRule(_localctx, 796, RULE_columnDefinition);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5936);
			columnName();
			setState(5937);
			dataType();
			setState(5939);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==COLLATE) {
				{
				setState(5938);
				collateClause();
				}
			}

			setState(5944);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (((((_la - 96)) & ~0x3f) == 0 && ((1L << (_la - 96)) & ((1L << (CONSTRAINT - 96)) | (1L << (PRIMARY - 96)) | (1L << (UNIQUE - 96)) | (1L << (KEY - 96)) | (1L << (NOT - 96)) | (1L << (NULL - 96)))) != 0) || _la==DEFAULT || ((((_la - 251)) & ~0x3f) == 0 && ((1L << (_la - 251)) & ((1L << (CHECK - 251)) | (1L << (GENERATED - 251)) | (1L << (REFERENCES - 251)))) != 0)) {
				{
				{
				setState(5941);
				columnConstraint();
				}
				}
				setState(5946);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ColumnConstraintContext extends ParserRuleContext {
		public ColumnConstraintOptionContext columnConstraintOption() {
			return getRuleContext(ColumnConstraintOptionContext.class,0);
		}
		public ConstraintOptionalParamContext constraintOptionalParam() {
			return getRuleContext(ConstraintOptionalParamContext.class,0);
		}
		public ConstraintClauseContext constraintClause() {
			return getRuleContext(ConstraintClauseContext.class,0);
		}
		public ColumnConstraintContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_columnConstraint; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitColumnConstraint(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ColumnConstraintContext columnConstraint() throws RecognitionException {
		ColumnConstraintContext _localctx = new ColumnConstraintContext(_ctx, getState());
		enterRule(_localctx, 798, RULE_columnConstraint);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5948);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==CONSTRAINT) {
				{
				setState(5947);
				constraintClause();
				}
			}

			setState(5950);
			columnConstraintOption();
			setState(5951);
			constraintOptionalParam();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ConstraintClauseContext extends ParserRuleContext {
		public TerminalNode CONSTRAINT() { return getToken(OpenGaussStatementParser.CONSTRAINT, 0); }
		public ConstraintNameContext constraintName() {
			return getRuleContext(ConstraintNameContext.class,0);
		}
		public ConstraintClauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_constraintClause; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitConstraintClause(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ConstraintClauseContext constraintClause() throws RecognitionException {
		ConstraintClauseContext _localctx = new ConstraintClauseContext(_ctx, getState());
		enterRule(_localctx, 800, RULE_constraintClause);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5953);
			match(CONSTRAINT);
			setState(5954);
			constraintName();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ColumnConstraintOptionContext extends ParserRuleContext {
		public TerminalNode NULL() { return getToken(OpenGaussStatementParser.NULL, 0); }
		public TerminalNode NOT() { return getToken(OpenGaussStatementParser.NOT, 0); }
		public CheckOptionContext checkOption() {
			return getRuleContext(CheckOptionContext.class,0);
		}
		public TerminalNode DEFAULT() { return getToken(OpenGaussStatementParser.DEFAULT, 0); }
		public DefaultExprContext defaultExpr() {
			return getRuleContext(DefaultExprContext.class,0);
		}
		public TerminalNode GENERATED() { return getToken(OpenGaussStatementParser.GENERATED, 0); }
		public TerminalNode ALWAYS() { return getToken(OpenGaussStatementParser.ALWAYS, 0); }
		public TerminalNode AS() { return getToken(OpenGaussStatementParser.AS, 0); }
		public TerminalNode LP_() { return getToken(OpenGaussStatementParser.LP_, 0); }
		public AExprContext aExpr() {
			return getRuleContext(AExprContext.class,0);
		}
		public TerminalNode RP_() { return getToken(OpenGaussStatementParser.RP_, 0); }
		public TerminalNode STORED() { return getToken(OpenGaussStatementParser.STORED, 0); }
		public TerminalNode IDENTITY() { return getToken(OpenGaussStatementParser.IDENTITY, 0); }
		public TerminalNode BY() { return getToken(OpenGaussStatementParser.BY, 0); }
		public SequenceOptionsContext sequenceOptions() {
			return getRuleContext(SequenceOptionsContext.class,0);
		}
		public TerminalNode UNIQUE() { return getToken(OpenGaussStatementParser.UNIQUE, 0); }
		public IndexParametersContext indexParameters() {
			return getRuleContext(IndexParametersContext.class,0);
		}
		public PrimaryKeyContext primaryKey() {
			return getRuleContext(PrimaryKeyContext.class,0);
		}
		public TerminalNode REFERENCES() { return getToken(OpenGaussStatementParser.REFERENCES, 0); }
		public TableNameContext tableName() {
			return getRuleContext(TableNameContext.class,0);
		}
		public ColumnNamesContext columnNames() {
			return getRuleContext(ColumnNamesContext.class,0);
		}
		public TerminalNode MATCH() { return getToken(OpenGaussStatementParser.MATCH, 0); }
		public TerminalNode FULL() { return getToken(OpenGaussStatementParser.FULL, 0); }
		public TerminalNode PARTIAL() { return getToken(OpenGaussStatementParser.PARTIAL, 0); }
		public TerminalNode SIMPLE() { return getToken(OpenGaussStatementParser.SIMPLE, 0); }
		public List ON() { return getTokens(OpenGaussStatementParser.ON); }
		public TerminalNode ON(int i) {
			return getToken(OpenGaussStatementParser.ON, i);
		}
		public List action() {
			return getRuleContexts(ActionContext.class);
		}
		public ActionContext action(int i) {
			return getRuleContext(ActionContext.class,i);
		}
		public List DELETE() { return getTokens(OpenGaussStatementParser.DELETE); }
		public TerminalNode DELETE(int i) {
			return getToken(OpenGaussStatementParser.DELETE, i);
		}
		public List UPDATE() { return getTokens(OpenGaussStatementParser.UPDATE); }
		public TerminalNode UPDATE(int i) {
			return getToken(OpenGaussStatementParser.UPDATE, i);
		}
		public ColumnConstraintOptionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_columnConstraintOption; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitColumnConstraintOption(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ColumnConstraintOptionContext columnConstraintOption() throws RecognitionException {
		ColumnConstraintOptionContext _localctx = new ColumnConstraintOptionContext(_ctx, getState());
		enterRule(_localctx, 802, RULE_columnConstraintOption);
		int _la;
		try {
			setState(6011);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,499,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(5957);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==NOT) {
					{
					setState(5956);
					match(NOT);
					}
				}

				setState(5959);
				match(NULL);
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(5960);
				checkOption();
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(5961);
				match(DEFAULT);
				setState(5962);
				defaultExpr();
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(5963);
				match(GENERATED);
				setState(5964);
				match(ALWAYS);
				setState(5965);
				match(AS);
				setState(5966);
				match(LP_);
				setState(5967);
				aExpr(0);
				setState(5968);
				match(RP_);
				setState(5969);
				match(STORED);
				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(5971);
				match(GENERATED);
				setState(5975);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case ALWAYS:
					{
					setState(5972);
					match(ALWAYS);
					}
					break;
				case BY:
					{
					setState(5973);
					match(BY);
					setState(5974);
					match(DEFAULT);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				setState(5977);
				match(AS);
				setState(5978);
				match(IDENTITY);
				setState(5983);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==LP_) {
					{
					setState(5979);
					match(LP_);
					setState(5980);
					sequenceOptions();
					setState(5981);
					match(RP_);
					}
				}

				}
				break;
			case 6:
				enterOuterAlt(_localctx, 6);
				{
				setState(5985);
				match(UNIQUE);
				setState(5986);
				indexParameters();
				}
				break;
			case 7:
				enterOuterAlt(_localctx, 7);
				{
				setState(5987);
				primaryKey();
				setState(5988);
				indexParameters();
				}
				break;
			case 8:
				enterOuterAlt(_localctx, 8);
				{
				setState(5990);
				match(REFERENCES);
				setState(5991);
				tableName();
				setState(5993);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==LP_) {
					{
					setState(5992);
					columnNames();
					}
				}

				setState(6001);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,497,_ctx) ) {
				case 1:
					{
					setState(5995);
					match(MATCH);
					setState(5996);
					match(FULL);
					}
					break;
				case 2:
					{
					setState(5997);
					match(MATCH);
					setState(5998);
					match(PARTIAL);
					}
					break;
				case 3:
					{
					setState(5999);
					match(MATCH);
					setState(6000);
					match(SIMPLE);
					}
					break;
				}
				setState(6008);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==ON) {
					{
					{
					setState(6003);
					match(ON);
					setState(6004);
					_la = _input.LA(1);
					if ( !(_la==UPDATE || _la==DELETE) ) {
					_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					setState(6005);
					action();
					}
					}
					setState(6010);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CheckOptionContext extends ParserRuleContext {
		public TerminalNode CHECK() { return getToken(OpenGaussStatementParser.CHECK, 0); }
		public AExprContext aExpr() {
			return getRuleContext(AExprContext.class,0);
		}
		public TerminalNode NO() { return getToken(OpenGaussStatementParser.NO, 0); }
		public TerminalNode INHERIT() { return getToken(OpenGaussStatementParser.INHERIT, 0); }
		public CheckOptionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_checkOption; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitCheckOption(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CheckOptionContext checkOption() throws RecognitionException {
		CheckOptionContext _localctx = new CheckOptionContext(_ctx, getState());
		enterRule(_localctx, 804, RULE_checkOption);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6013);
			match(CHECK);
			setState(6014);
			aExpr(0);
			setState(6017);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==NO) {
				{
				setState(6015);
				match(NO);
				setState(6016);
				match(INHERIT);
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DefaultExprContext extends ParserRuleContext {
		public TerminalNode CURRENT_TIMESTAMP() { return getToken(OpenGaussStatementParser.CURRENT_TIMESTAMP, 0); }
		public AExprContext aExpr() {
			return getRuleContext(AExprContext.class,0);
		}
		public DefaultExprContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_defaultExpr; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitDefaultExpr(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DefaultExprContext defaultExpr() throws RecognitionException {
		DefaultExprContext _localctx = new DefaultExprContext(_ctx, getState());
		enterRule(_localctx, 806, RULE_defaultExpr);
		try {
			setState(6021);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,501,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(6019);
				match(CURRENT_TIMESTAMP);
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(6020);
				aExpr(0);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class SequenceOptionsContext extends ParserRuleContext {
		public List sequenceOption() {
			return getRuleContexts(SequenceOptionContext.class);
		}
		public SequenceOptionContext sequenceOption(int i) {
			return getRuleContext(SequenceOptionContext.class,i);
		}
		public SequenceOptionsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_sequenceOptions; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitSequenceOptions(this);
			else return visitor.visitChildren(this);
		}
	}

	public final SequenceOptionsContext sequenceOptions() throws RecognitionException {
		SequenceOptionsContext _localctx = new SequenceOptionsContext(_ctx, getState());
		enterRule(_localctx, 808, RULE_sequenceOptions);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6024); 
			_errHandler.sync(this);
			_la = _input.LA(1);
			do {
				{
				{
				setState(6023);
				sequenceOption();
				}
				}
				setState(6026); 
				_errHandler.sync(this);
				_la = _input.LA(1);
			} while ( ((((_la - 239)) & ~0x3f) == 0 && ((1L << (_la - 239)) & ((1L << (MAXVALUE - 239)) | (1L << (NO - 239)) | (1L << (START - 239)) | (1L << (CACHE - 239)) | (1L << (CYCLE - 239)) | (1L << (INCREMENT - 239)))) != 0) || _la==MINVALUE || _la==OWNED );
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class SequenceOptionContext extends ParserRuleContext {
		public TerminalNode START() { return getToken(OpenGaussStatementParser.START, 0); }
		public TerminalNode NUMBER_() { return getToken(OpenGaussStatementParser.NUMBER_, 0); }
		public TerminalNode WITH() { return getToken(OpenGaussStatementParser.WITH, 0); }
		public TerminalNode INCREMENT() { return getToken(OpenGaussStatementParser.INCREMENT, 0); }
		public TerminalNode BY() { return getToken(OpenGaussStatementParser.BY, 0); }
		public TerminalNode MAXVALUE() { return getToken(OpenGaussStatementParser.MAXVALUE, 0); }
		public TerminalNode NO() { return getToken(OpenGaussStatementParser.NO, 0); }
		public TerminalNode MINVALUE() { return getToken(OpenGaussStatementParser.MINVALUE, 0); }
		public TerminalNode CYCLE() { return getToken(OpenGaussStatementParser.CYCLE, 0); }
		public TerminalNode CACHE() { return getToken(OpenGaussStatementParser.CACHE, 0); }
		public TerminalNode OWNED() { return getToken(OpenGaussStatementParser.OWNED, 0); }
		public SequenceOptionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_sequenceOption; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitSequenceOption(this);
			else return visitor.visitChildren(this);
		}
	}

	public final SequenceOptionContext sequenceOption() throws RecognitionException {
		SequenceOptionContext _localctx = new SequenceOptionContext(_ctx, getState());
		enterRule(_localctx, 810, RULE_sequenceOption);
		int _la;
		try {
			setState(6053);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,505,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(6028);
				match(START);
				setState(6030);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==WITH) {
					{
					setState(6029);
					match(WITH);
					}
				}

				setState(6032);
				match(NUMBER_);
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(6033);
				match(INCREMENT);
				setState(6035);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==BY) {
					{
					setState(6034);
					match(BY);
					}
				}

				setState(6037);
				match(NUMBER_);
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(6038);
				match(MAXVALUE);
				setState(6039);
				match(NUMBER_);
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(6040);
				match(NO);
				setState(6041);
				match(MAXVALUE);
				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(6042);
				match(MINVALUE);
				setState(6043);
				match(NUMBER_);
				}
				break;
			case 6:
				enterOuterAlt(_localctx, 6);
				{
				setState(6044);
				match(NO);
				setState(6045);
				match(MINVALUE);
				}
				break;
			case 7:
				enterOuterAlt(_localctx, 7);
				{
				setState(6046);
				match(CYCLE);
				}
				break;
			case 8:
				enterOuterAlt(_localctx, 8);
				{
				setState(6047);
				match(NO);
				setState(6048);
				match(CYCLE);
				}
				break;
			case 9:
				enterOuterAlt(_localctx, 9);
				{
				setState(6049);
				match(CACHE);
				setState(6050);
				match(NUMBER_);
				}
				break;
			case 10:
				enterOuterAlt(_localctx, 10);
				{
				setState(6051);
				match(OWNED);
				setState(6052);
				match(BY);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class IndexParametersContext extends ParserRuleContext {
		public TerminalNode USING() { return getToken(OpenGaussStatementParser.USING, 0); }
		public TerminalNode INDEX() { return getToken(OpenGaussStatementParser.INDEX, 0); }
		public TerminalNode TABLESPACE() { return getToken(OpenGaussStatementParser.TABLESPACE, 0); }
		public IgnoredIdentifierContext ignoredIdentifier() {
			return getRuleContext(IgnoredIdentifierContext.class,0);
		}
		public TerminalNode INCLUDE() { return getToken(OpenGaussStatementParser.INCLUDE, 0); }
		public ColumnNamesContext columnNames() {
			return getRuleContext(ColumnNamesContext.class,0);
		}
		public TerminalNode WITH() { return getToken(OpenGaussStatementParser.WITH, 0); }
		public DefinitionContext definition() {
			return getRuleContext(DefinitionContext.class,0);
		}
		public IndexParametersContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_indexParameters; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitIndexParameters(this);
			else return visitor.visitChildren(this);
		}
	}

	public final IndexParametersContext indexParameters() throws RecognitionException {
		IndexParametersContext _localctx = new IndexParametersContext(_ctx, getState());
		enterRule(_localctx, 812, RULE_indexParameters);
		int _la;
		try {
			setState(6065);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case EOF:
			case RP_:
			case COMMA_:
			case SEMI_:
			case CONSTRAINT:
			case PRIMARY:
			case UNIQUE:
			case KEY:
			case USING:
			case WHERE:
			case NOT:
			case NULL:
			case DEFAULT:
			case CHECK:
			case GENERATED:
			case REFERENCES:
			case DEFERRABLE:
			case INITIALLY:
				enterOuterAlt(_localctx, 1);
				{
				setState(6059);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==USING) {
					{
					setState(6055);
					match(USING);
					setState(6056);
					match(INDEX);
					setState(6057);
					match(TABLESPACE);
					setState(6058);
					ignoredIdentifier();
					}
				}

				}
				break;
			case INCLUDE:
				enterOuterAlt(_localctx, 2);
				{
				setState(6061);
				match(INCLUDE);
				setState(6062);
				columnNames();
				}
				break;
			case WITH:
				enterOuterAlt(_localctx, 3);
				{
				setState(6063);
				match(WITH);
				setState(6064);
				definition();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ActionContext extends ParserRuleContext {
		public TerminalNode NO() { return getToken(OpenGaussStatementParser.NO, 0); }
		public TerminalNode ACTION() { return getToken(OpenGaussStatementParser.ACTION, 0); }
		public TerminalNode RESTRICT() { return getToken(OpenGaussStatementParser.RESTRICT, 0); }
		public TerminalNode CASCADE() { return getToken(OpenGaussStatementParser.CASCADE, 0); }
		public TerminalNode SET() { return getToken(OpenGaussStatementParser.SET, 0); }
		public TerminalNode NULL() { return getToken(OpenGaussStatementParser.NULL, 0); }
		public TerminalNode DEFAULT() { return getToken(OpenGaussStatementParser.DEFAULT, 0); }
		public ActionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_action; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitAction(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ActionContext action() throws RecognitionException {
		ActionContext _localctx = new ActionContext(_ctx, getState());
		enterRule(_localctx, 814, RULE_action);
		int _la;
		try {
			setState(6073);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case NO:
				enterOuterAlt(_localctx, 1);
				{
				setState(6067);
				match(NO);
				setState(6068);
				match(ACTION);
				}
				break;
			case RESTRICT:
				enterOuterAlt(_localctx, 2);
				{
				setState(6069);
				match(RESTRICT);
				}
				break;
			case CASCADE:
				enterOuterAlt(_localctx, 3);
				{
				setState(6070);
				match(CASCADE);
				}
				break;
			case SET:
				enterOuterAlt(_localctx, 4);
				{
				setState(6071);
				match(SET);
				setState(6072);
				_la = _input.LA(1);
				if ( !(_la==NULL || _la==DEFAULT) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ConstraintOptionalParamContext extends ParserRuleContext {
		public TerminalNode DEFERRABLE() { return getToken(OpenGaussStatementParser.DEFERRABLE, 0); }
		public TerminalNode INITIALLY() { return getToken(OpenGaussStatementParser.INITIALLY, 0); }
		public TerminalNode DEFERRED() { return getToken(OpenGaussStatementParser.DEFERRED, 0); }
		public TerminalNode IMMEDIATE() { return getToken(OpenGaussStatementParser.IMMEDIATE, 0); }
		public TerminalNode NOT() { return getToken(OpenGaussStatementParser.NOT, 0); }
		public ConstraintOptionalParamContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_constraintOptionalParam; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitConstraintOptionalParam(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ConstraintOptionalParamContext constraintOptionalParam() throws RecognitionException {
		ConstraintOptionalParamContext _localctx = new ConstraintOptionalParamContext(_ctx, getState());
		enterRule(_localctx, 816, RULE_constraintOptionalParam);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6079);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,510,_ctx) ) {
			case 1:
				{
				setState(6076);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==NOT) {
					{
					setState(6075);
					match(NOT);
					}
				}

				setState(6078);
				match(DEFERRABLE);
				}
				break;
			}
			setState(6083);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==INITIALLY) {
				{
				setState(6081);
				match(INITIALLY);
				setState(6082);
				_la = _input.LA(1);
				if ( !(_la==DEFERRED || _la==IMMEDIATE) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class LikeOptionContext extends ParserRuleContext {
		public TerminalNode INCLUDING() { return getToken(OpenGaussStatementParser.INCLUDING, 0); }
		public TerminalNode EXCLUDING() { return getToken(OpenGaussStatementParser.EXCLUDING, 0); }
		public TerminalNode COMMENTS() { return getToken(OpenGaussStatementParser.COMMENTS, 0); }
		public TerminalNode CONSTRAINTS() { return getToken(OpenGaussStatementParser.CONSTRAINTS, 0); }
		public TerminalNode DEFAULTS() { return getToken(OpenGaussStatementParser.DEFAULTS, 0); }
		public TerminalNode IDENTITY() { return getToken(OpenGaussStatementParser.IDENTITY, 0); }
		public TerminalNode INDEXES() { return getToken(OpenGaussStatementParser.INDEXES, 0); }
		public TerminalNode STATISTICS() { return getToken(OpenGaussStatementParser.STATISTICS, 0); }
		public TerminalNode STORAGE() { return getToken(OpenGaussStatementParser.STORAGE, 0); }
		public TerminalNode ALL() { return getToken(OpenGaussStatementParser.ALL, 0); }
		public LikeOptionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_likeOption; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitLikeOption(this);
			else return visitor.visitChildren(this);
		}
	}

	public final LikeOptionContext likeOption() throws RecognitionException {
		LikeOptionContext _localctx = new LikeOptionContext(_ctx, getState());
		enterRule(_localctx, 818, RULE_likeOption);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6085);
			_la = _input.LA(1);
			if ( !(_la==EXCLUDING || _la==INCLUDING) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			setState(6086);
			_la = _input.LA(1);
			if ( !(_la==ALL || ((((_la - 270)) & ~0x3f) == 0 && ((1L << (_la - 270)) & ((1L << (COMMENTS - 270)) | (1L << (CONSTRAINTS - 270)) | (1L << (DEFAULTS - 270)) | (1L << (IDENTITY - 270)) | (1L << (INDEXES - 270)))) != 0) || _la==STATISTICS || _la==STORAGE) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class TableConstraintContext extends ParserRuleContext {
		public TableConstraintOptionContext tableConstraintOption() {
			return getRuleContext(TableConstraintOptionContext.class,0);
		}
		public ConstraintOptionalParamContext constraintOptionalParam() {
			return getRuleContext(ConstraintOptionalParamContext.class,0);
		}
		public ConstraintClauseContext constraintClause() {
			return getRuleContext(ConstraintClauseContext.class,0);
		}
		public TableConstraintContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_tableConstraint; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitTableConstraint(this);
			else return visitor.visitChildren(this);
		}
	}

	public final TableConstraintContext tableConstraint() throws RecognitionException {
		TableConstraintContext _localctx = new TableConstraintContext(_ctx, getState());
		enterRule(_localctx, 820, RULE_tableConstraint);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6089);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==CONSTRAINT) {
				{
				setState(6088);
				constraintClause();
				}
			}

			setState(6091);
			tableConstraintOption();
			setState(6092);
			constraintOptionalParam();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class TableConstraintOptionContext extends ParserRuleContext {
		public CheckOptionContext checkOption() {
			return getRuleContext(CheckOptionContext.class,0);
		}
		public TerminalNode UNIQUE() { return getToken(OpenGaussStatementParser.UNIQUE, 0); }
		public List columnNames() {
			return getRuleContexts(ColumnNamesContext.class);
		}
		public ColumnNamesContext columnNames(int i) {
			return getRuleContext(ColumnNamesContext.class,i);
		}
		public IndexParametersContext indexParameters() {
			return getRuleContext(IndexParametersContext.class,0);
		}
		public PrimaryKeyContext primaryKey() {
			return getRuleContext(PrimaryKeyContext.class,0);
		}
		public TerminalNode EXCLUDE() { return getToken(OpenGaussStatementParser.EXCLUDE, 0); }
		public TerminalNode LP_() { return getToken(OpenGaussStatementParser.LP_, 0); }
		public ExclusionConstraintListContext exclusionConstraintList() {
			return getRuleContext(ExclusionConstraintListContext.class,0);
		}
		public TerminalNode RP_() { return getToken(OpenGaussStatementParser.RP_, 0); }
		public TerminalNode USING() { return getToken(OpenGaussStatementParser.USING, 0); }
		public IgnoredIdentifierContext ignoredIdentifier() {
			return getRuleContext(IgnoredIdentifierContext.class,0);
		}
		public ExclusionWhereClauseContext exclusionWhereClause() {
			return getRuleContext(ExclusionWhereClauseContext.class,0);
		}
		public TerminalNode FOREIGN() { return getToken(OpenGaussStatementParser.FOREIGN, 0); }
		public TerminalNode KEY() { return getToken(OpenGaussStatementParser.KEY, 0); }
		public TerminalNode REFERENCES() { return getToken(OpenGaussStatementParser.REFERENCES, 0); }
		public TableNameContext tableName() {
			return getRuleContext(TableNameContext.class,0);
		}
		public TerminalNode MATCH() { return getToken(OpenGaussStatementParser.MATCH, 0); }
		public TerminalNode FULL() { return getToken(OpenGaussStatementParser.FULL, 0); }
		public TerminalNode PARTIAL() { return getToken(OpenGaussStatementParser.PARTIAL, 0); }
		public TerminalNode SIMPLE() { return getToken(OpenGaussStatementParser.SIMPLE, 0); }
		public List ON() { return getTokens(OpenGaussStatementParser.ON); }
		public TerminalNode ON(int i) {
			return getToken(OpenGaussStatementParser.ON, i);
		}
		public List action() {
			return getRuleContexts(ActionContext.class);
		}
		public ActionContext action(int i) {
			return getRuleContext(ActionContext.class,i);
		}
		public List DELETE() { return getTokens(OpenGaussStatementParser.DELETE); }
		public TerminalNode DELETE(int i) {
			return getToken(OpenGaussStatementParser.DELETE, i);
		}
		public List UPDATE() { return getTokens(OpenGaussStatementParser.UPDATE); }
		public TerminalNode UPDATE(int i) {
			return getToken(OpenGaussStatementParser.UPDATE, i);
		}
		public TableConstraintOptionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_tableConstraintOption; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitTableConstraintOption(this);
			else return visitor.visitChildren(this);
		}
	}

	public final TableConstraintOptionContext tableConstraintOption() throws RecognitionException {
		TableConstraintOptionContext _localctx = new TableConstraintOptionContext(_ctx, getState());
		enterRule(_localctx, 822, RULE_tableConstraintOption);
		int _la;
		try {
			setState(6139);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case CHECK:
				enterOuterAlt(_localctx, 1);
				{
				setState(6094);
				checkOption();
				}
				break;
			case UNIQUE:
				enterOuterAlt(_localctx, 2);
				{
				setState(6095);
				match(UNIQUE);
				setState(6096);
				columnNames();
				setState(6097);
				indexParameters();
				}
				break;
			case PRIMARY:
			case KEY:
				enterOuterAlt(_localctx, 3);
				{
				setState(6099);
				primaryKey();
				setState(6100);
				columnNames();
				setState(6101);
				indexParameters();
				}
				break;
			case EXCLUDE:
				enterOuterAlt(_localctx, 4);
				{
				setState(6103);
				match(EXCLUDE);
				setState(6106);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==USING) {
					{
					setState(6104);
					match(USING);
					setState(6105);
					ignoredIdentifier();
					}
				}

				setState(6108);
				match(LP_);
				setState(6109);
				exclusionConstraintList();
				setState(6110);
				match(RP_);
				setState(6111);
				indexParameters();
				setState(6113);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==WHERE) {
					{
					setState(6112);
					exclusionWhereClause();
					}
				}

				}
				break;
			case FOREIGN:
				enterOuterAlt(_localctx, 5);
				{
				setState(6115);
				match(FOREIGN);
				setState(6116);
				match(KEY);
				setState(6117);
				columnNames();
				setState(6118);
				match(REFERENCES);
				setState(6119);
				tableName();
				setState(6121);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==LP_) {
					{
					setState(6120);
					columnNames();
					}
				}

				setState(6129);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,516,_ctx) ) {
				case 1:
					{
					setState(6123);
					match(MATCH);
					setState(6124);
					match(FULL);
					}
					break;
				case 2:
					{
					setState(6125);
					match(MATCH);
					setState(6126);
					match(PARTIAL);
					}
					break;
				case 3:
					{
					setState(6127);
					match(MATCH);
					setState(6128);
					match(SIMPLE);
					}
					break;
				}
				setState(6136);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==ON) {
					{
					{
					setState(6131);
					match(ON);
					setState(6132);
					_la = _input.LA(1);
					if ( !(_la==UPDATE || _la==DELETE) ) {
					_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					setState(6133);
					action();
					}
					}
					setState(6138);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ExclusionWhereClauseContext extends ParserRuleContext {
		public TerminalNode WHERE() { return getToken(OpenGaussStatementParser.WHERE, 0); }
		public TerminalNode LP_() { return getToken(OpenGaussStatementParser.LP_, 0); }
		public AExprContext aExpr() {
			return getRuleContext(AExprContext.class,0);
		}
		public TerminalNode RP_() { return getToken(OpenGaussStatementParser.RP_, 0); }
		public ExclusionWhereClauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_exclusionWhereClause; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitExclusionWhereClause(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ExclusionWhereClauseContext exclusionWhereClause() throws RecognitionException {
		ExclusionWhereClauseContext _localctx = new ExclusionWhereClauseContext(_ctx, getState());
		enterRule(_localctx, 824, RULE_exclusionWhereClause);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6141);
			match(WHERE);
			setState(6142);
			match(LP_);
			setState(6143);
			aExpr(0);
			setState(6144);
			match(RP_);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ExclusionConstraintListContext extends ParserRuleContext {
		public List exclusionConstraintElem() {
			return getRuleContexts(ExclusionConstraintElemContext.class);
		}
		public ExclusionConstraintElemContext exclusionConstraintElem(int i) {
			return getRuleContext(ExclusionConstraintElemContext.class,i);
		}
		public List COMMA_() { return getTokens(OpenGaussStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(OpenGaussStatementParser.COMMA_, i);
		}
		public ExclusionConstraintListContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_exclusionConstraintList; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitExclusionConstraintList(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ExclusionConstraintListContext exclusionConstraintList() throws RecognitionException {
		ExclusionConstraintListContext _localctx = new ExclusionConstraintListContext(_ctx, getState());
		enterRule(_localctx, 826, RULE_exclusionConstraintList);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6146);
			exclusionConstraintElem();
			setState(6151);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA_) {
				{
				{
				setState(6147);
				match(COMMA_);
				setState(6148);
				exclusionConstraintElem();
				}
				}
				setState(6153);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ExclusionConstraintElemContext extends ParserRuleContext {
		public IndexElemContext indexElem() {
			return getRuleContext(IndexElemContext.class,0);
		}
		public TerminalNode WITH() { return getToken(OpenGaussStatementParser.WITH, 0); }
		public AnyOperatorContext anyOperator() {
			return getRuleContext(AnyOperatorContext.class,0);
		}
		public TerminalNode OPERATOR() { return getToken(OpenGaussStatementParser.OPERATOR, 0); }
		public TerminalNode LP_() { return getToken(OpenGaussStatementParser.LP_, 0); }
		public TerminalNode RP_() { return getToken(OpenGaussStatementParser.RP_, 0); }
		public ExclusionConstraintElemContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_exclusionConstraintElem; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitExclusionConstraintElem(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ExclusionConstraintElemContext exclusionConstraintElem() throws RecognitionException {
		ExclusionConstraintElemContext _localctx = new ExclusionConstraintElemContext(_ctx, getState());
		enterRule(_localctx, 828, RULE_exclusionConstraintElem);
		try {
			setState(6165);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,520,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(6154);
				indexElem();
				setState(6155);
				match(WITH);
				setState(6156);
				anyOperator();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(6158);
				indexElem();
				setState(6159);
				match(WITH);
				setState(6160);
				match(OPERATOR);
				setState(6161);
				match(LP_);
				setState(6162);
				anyOperator();
				setState(6163);
				match(RP_);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class InheritClauseContext extends ParserRuleContext {
		public TerminalNode INHERITS() { return getToken(OpenGaussStatementParser.INHERITS, 0); }
		public TableNamesContext tableNames() {
			return getRuleContext(TableNamesContext.class,0);
		}
		public InheritClauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_inheritClause; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitInheritClause(this);
			else return visitor.visitChildren(this);
		}
	}

	public final InheritClauseContext inheritClause() throws RecognitionException {
		InheritClauseContext _localctx = new InheritClauseContext(_ctx, getState());
		enterRule(_localctx, 830, RULE_inheritClause);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6169);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==INHERITS) {
				{
				setState(6167);
				match(INHERITS);
				setState(6168);
				tableNames();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class PartitionSpecContext extends ParserRuleContext {
		public TerminalNode PARTITION() { return getToken(OpenGaussStatementParser.PARTITION, 0); }
		public TerminalNode BY() { return getToken(OpenGaussStatementParser.BY, 0); }
		public PartStrategyContext partStrategy() {
			return getRuleContext(PartStrategyContext.class,0);
		}
		public List LP_() { return getTokens(OpenGaussStatementParser.LP_); }
		public TerminalNode LP_(int i) {
			return getToken(OpenGaussStatementParser.LP_, i);
		}
		public List partParams() {
			return getRuleContexts(PartParamsContext.class);
		}
		public PartParamsContext partParams(int i) {
			return getRuleContext(PartParamsContext.class,i);
		}
		public List RP_() { return getTokens(OpenGaussStatementParser.RP_); }
		public TerminalNode RP_(int i) {
			return getToken(OpenGaussStatementParser.RP_, i);
		}
		public PartitionSpecContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_partitionSpec; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitPartitionSpec(this);
			else return visitor.visitChildren(this);
		}
	}

	public final PartitionSpecContext partitionSpec() throws RecognitionException {
		PartitionSpecContext _localctx = new PartitionSpecContext(_ctx, getState());
		enterRule(_localctx, 832, RULE_partitionSpec);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6171);
			match(PARTITION);
			setState(6172);
			match(BY);
			setState(6173);
			partStrategy();
			setState(6174);
			match(LP_);
			setState(6175);
			partParams();
			setState(6176);
			match(RP_);
			setState(6184);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==LP_) {
				{
				{
				setState(6177);
				match(LP_);
				setState(6179);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==LP_ || _la==UNICODE_ESCAPE || ((((_la - 81)) & ~0x3f) == 0 && ((1L << (_la - 81)) & ((1L << (INSERT - 81)) | (1L << (UPDATE - 81)) | (1L << (DELETE - 81)) | (1L << (ALTER - 81)) | (1L << (DROP - 81)) | (1L << (TRUNCATE - 81)) | (1L << (SCHEMA - 81)) | (1L << (REVOKE - 81)) | (1L << (ADD - 81)) | (1L << (SET - 81)) | (1L << (INDEX - 81)) | (1L << (KEY - 81)) | (1L << (POSITION - 81)) | (1L << (FUNCTION - 81)) | (1L << (TRIGGER - 81)) | (1L << (PROCEDURE - 81)) | (1L << (VIEW - 81)) | (1L << (CAST - 81)) | (1L << (TRIM - 81)) | (1L << (SUBSTRING - 81)) | (1L << (NATURAL - 81)) | (1L << (JOIN - 81)) | (1L << (FULL - 81)) | (1L << (INNER - 81)) | (1L << (OUTER - 81)) | (1L << (LEFT - 81)) | (1L << (RIGHT - 81)) | (1L << (CROSS - 81)) | (1L << (IF - 81)) | (1L << (IS - 81)))) != 0) || ((((_la - 148)) & ~0x3f) == 0 && ((1L << (_la - 148)) & ((1L << (LIKE - 148)) | (1L << (BY - 148)) | (1L << (BEGIN - 148)) | (1L << (COMMIT - 148)) | (1L << (ROLLBACK - 148)) | (1L << (SAVEPOINT - 148)) | (1L << (DOUBLE - 148)) | (1L << (INTERVAL - 148)) | (1L << (TIME - 148)) | (1L << (TIMESTAMP - 148)) | (1L << (LOCALTIME - 148)) | (1L << (LOCALTIMESTAMP - 148)) | (1L << (YEAR - 148)) | (1L << (MONTH - 148)) | (1L << (DAY - 148)) | (1L << (HOUR - 148)) | (1L << (MINUTE - 148)) | (1L << (SECOND - 148)) | (1L << (CURRENT - 148)) | (1L << (ENABLE - 148)) | (1L << (DISABLE - 148)) | (1L << (CALL - 148)) | (1L << (PRESERVE - 148)) | (1L << (DEFINER - 148)) | (1L << (CURRENT_USER - 148)) | (1L << (SQL - 148)) | (1L << (CASCADED - 148)) | (1L << (LOCAL - 148)) | (1L << (CLOSE - 148)) | (1L << (NEXT - 148)) | (1L << (NAME - 148)) | (1L << (COLLATION - 148)) | (1L << (NAMES - 148)) | (1L << (TYPE - 148)) | (1L << (TEXT - 148)) | (1L << (REPEATABLE - 148)) | (1L << (CURRENT_DATE - 148)) | (1L << (CURRENT_TIME - 148)) | (1L << (CURRENT_TIMESTAMP - 148)))) != 0) || ((((_la - 212)) & ~0x3f) == 0 && ((1L << (_la - 212)) & ((1L << (NULLIF - 212)) | (1L << (VARYING - 212)) | (1L << (NATIONAL - 212)) | (1L << (VALUE - 212)) | (1L << (COALESCE - 212)) | (1L << (TIES - 212)) | (1L << (CUBE - 212)) | (1L << (SETS - 212)) | (1L << (OTHERS - 212)) | (1L << (OVERLAPS - 212)) | (1L << (AT - 212)) | (1L << (MAXVALUE - 212)) | (1L << (ADMIN - 212)) | (1L << (BINARY - 212)) | (1L << (ESCAPE - 212)) | (1L << (EXCLUDE - 212)) | (1L << (MOD - 212)) | (1L << (PARTITION - 212)) | (1L << (UNKNOWN - 212)) | (1L << (ALWAYS - 212)) | (1L << (CASCADE - 212)) | (1L << (GENERATED - 212)) | (1L << (ISOLATION - 212)) | (1L << (LEVEL - 212)) | (1L << (NO - 212)) | (1L << (OPTION - 212)) | (1L << (PRIVILEGES - 212)) | (1L << (READ - 212)) | (1L << (ROLE - 212)) | (1L << (ROWS - 212)) | (1L << (START - 212)) | (1L << (TRANSACTION - 212)) | (1L << (USER - 212)) | (1L << (ACTION - 212)) | (1L << (CACHE - 212)) | (1L << (CHARACTERISTICS - 212)) | (1L << (CLUSTER - 212)) | (1L << (COMMENTS - 212)) | (1L << (CONCURRENTLY - 212)) | (1L << (CONSTRAINTS - 212)) | (1L << (CYCLE - 212)) | (1L << (DATA - 212)))) != 0) || ((((_la - 276)) & ~0x3f) == 0 && ((1L << (_la - 276)) & ((1L << (DATABASE - 276)) | (1L << (DEFAULTS - 276)) | (1L << (DEFERRED - 276)) | (1L << (DEPENDS - 276)) | (1L << (DOMAIN - 276)) | (1L << (EXCLUDING - 276)) | (1L << (EXECUTE - 276)) | (1L << (EXTENDED - 276)) | (1L << (EXTENSION - 276)) | (1L << (EXTERNAL - 276)) | (1L << (EXTRACT - 276)) | (1L << (FILTER - 276)) | (1L << (FIRST - 276)) | (1L << (FOLLOWING - 276)) | (1L << (FORCE - 276)) | (1L << (GLOBAL - 276)) | (1L << (IDENTITY - 276)) | (1L << (IMMEDIATE - 276)) | (1L << (INCLUDING - 276)) | (1L << (INCREMENT - 276)) | (1L << (INDEXES - 276)) | (1L << (INHERIT - 276)) | (1L << (INHERITS - 276)) | (1L << (INCLUDE - 276)) | (1L << (LANGUAGE - 276)) | (1L << (LARGE - 276)) | (1L << (LAST - 276)) | (1L << (LOGGED - 276)) | (1L << (MAIN - 276)) | (1L << (MATCH - 276)) | (1L << (MINVALUE - 276)) | (1L << (NOTHING - 276)) | (1L << (NULLS - 276)) | (1L << (OBJECT - 276)) | (1L << (OIDS - 276)) | (1L << (OVER - 276)) | (1L << (OWNED - 276)) | (1L << (OWNER - 276)) | (1L << (PARTIAL - 276)) | (1L << (PLAIN - 276)) | (1L << (PRECEDING - 276)) | (1L << (RANGE - 276)) | (1L << (RENAME - 276)) | (1L << (REPLICA - 276)) | (1L << (RESET - 276)) | (1L << (RESTART - 276)) | (1L << (RESTRICT - 276)) | (1L << (ROUTINE - 276)) | (1L << (RULE - 276)) | (1L << (SECURITY - 276)) | (1L << (SEQUENCE - 276)) | (1L << (SESSION - 276)) | (1L << (SESSION_USER - 276)) | (1L << (SHOW - 276)) | (1L << (SIMPLE - 276)) | (1L << (STATISTICS - 276)) | (1L << (STORAGE - 276)) | (1L << (TABLESPACE - 276)) | (1L << (TEMP - 276)) | (1L << (TEMPORARY - 276)))) != 0) || ((((_la - 340)) & ~0x3f) == 0 && ((1L << (_la - 340)) & ((1L << (UNBOUNDED - 340)) | (1L << (UNLOGGED - 340)) | (1L << (VALID - 340)) | (1L << (VALIDATE - 340)) | (1L << (WITHIN - 340)) | (1L << (WITHOUT - 340)) | (1L << (ZONE - 340)) | (1L << (OF - 340)) | (1L << (UESCAPE - 340)) | (1L << (GROUPS - 340)) | (1L << (RECURSIVE - 340)) | (1L << (INT2 - 340)) | (1L << (INT4 - 340)) | (1L << (FLOAT4 - 340)) | (1L << (BYTEA - 340)) | (1L << (ENUM - 340)) | (1L << (POINT - 340)) | (1L << (LSEG - 340)) | (1L << (BOX - 340)) | (1L << (PATH - 340)) | (1L << (POLYGON - 340)) | (1L << (CIRCLE - 340)) | (1L << (INET - 340)) | (1L << (TSQUERY - 340)) | (1L << (XML - 340)) | (1L << (JSON - 340)) | (1L << (INT4RANGE - 340)) | (1L << (INT8RANGE - 340)) | (1L << (NUMRANGE - 340)) | (1L << (DATERANGE - 340)) | (1L << (TABLESAMPLE - 340)) | (1L << (ORDINALITY - 340)) | (1L << (CURRENT_ROLE - 340)) | (1L << (CURRENT_CATALOG - 340)) | (1L << (CURRENT_SCHEMA - 340)) | (1L << (NORMALIZE - 340)) | (1L << (OVERLAY - 340)) | (1L << (XMLCONCAT - 340)) | (1L << (XMLELEMENT - 340)) | (1L << (XMLEXISTS - 340)) | (1L << (XMLFOREST - 340)) | (1L << (XMLPARSE - 340)) | (1L << (XMLPI - 340)) | (1L << (XMLROOT - 340)) | (1L << (XMLSERIALIZE - 340)) | (1L << (TREAT - 340)))) != 0) || ((((_la - 405)) & ~0x3f) == 0 && ((1L << (_la - 405)) & ((1L << (NFC - 405)) | (1L << (NFD - 405)) | (1L << (NFKC - 405)) | (1L << (NFKD - 405)) | (1L << (REF - 405)) | (1L << (PASSING - 405)) | (1L << (VERSION - 405)) | (1L << (YES - 405)) | (1L << (STANDALONE - 405)) | (1L << (GREATEST - 405)) | (1L << (LEAST - 405)) | (1L << (MATERIALIZED - 405)) | (1L << (OPERATOR - 405)) | (1L << (SHARE - 405)) | (1L << (ROLLUP - 405)) | (1L << (ILIKE - 405)) | (1L << (SIMILAR - 405)) | (1L << (ISNULL - 405)) | (1L << (NOTNULL - 405)) | (1L << (DOCUMENT - 405)) | (1L << (NORMALIZED - 405)) | (1L << (NOWAIT - 405)) | (1L << (LOCKED - 405)) | (1L << (COLUMNS - 405)) | (1L << (CONTENT - 405)) | (1L << (STRIP - 405)) | (1L << (WHITESPACE - 405)) | (1L << (CONFLICT - 405)) | (1L << (OVERRIDING - 405)) | (1L << (SYSTEM - 405)) | (1L << (ABORT - 405)) | (1L << (ABSOLUTE - 405)) | (1L << (ACCESS - 405)) | (1L << (AFTER - 405)) | (1L << (AGGREGATE - 405)) | (1L << (ALSO - 405)) | (1L << (ATTACH - 405)) | (1L << (ATTRIBUTE - 405)) | (1L << (BACKWARD - 405)) | (1L << (BEFORE - 405)) | (1L << (ASSERTION - 405)) | (1L << (ASSIGNMENT - 405)) | (1L << (CONTINUE - 405)) | (1L << (CONVERSION - 405)) | (1L << (COPY - 405)) | (1L << (COST - 405)) | (1L << (CSV - 405)) | (1L << (CALLED - 405)) | (1L << (CATALOG - 405)) | (1L << (CHAIN - 405)) | (1L << (CHECKPOINT - 405)) | (1L << (CLASS - 405)))) != 0) || ((((_la - 469)) & ~0x3f) == 0 && ((1L << (_la - 469)) & ((1L << (CONFIGURATION - 469)) | (1L << (COMMENT - 469)) | (1L << (DETACH - 469)) | (1L << (DICTIONARY - 469)) | (1L << (EXPRESSION - 469)) | (1L << (INSENSITIVE - 469)) | (1L << (DISCARD - 469)) | (1L << (OFF - 469)) | (1L << (INSTEAD - 469)) | (1L << (EXPLAIN - 469)) | (1L << (INPUT - 469)) | (1L << (INLINE - 469)) | (1L << (PARALLEL - 469)) | (1L << (LEAKPROOF - 469)) | (1L << (COMMITTED - 469)) | (1L << (ENCODING - 469)) | (1L << (IMPLICIT - 469)) | (1L << (DELIMITER - 469)) | (1L << (CURSOR - 469)) | (1L << (EACH - 469)) | (1L << (EVENT - 469)) | (1L << (DEALLOCATE - 469)) | (1L << (CONNECTION - 469)) | (1L << (DECLARE - 469)) | (1L << (FAMILY - 469)) | (1L << (FORWARD - 469)) | (1L << (EXCLUSIVE - 469)) | (1L << (FUNCTIONS - 469)) | (1L << (LOCATION - 469)) | (1L << (LABEL - 469)) | (1L << (DELIMITERS - 469)) | (1L << (HANDLER - 469)) | (1L << (HEADER - 469)) | (1L << (IMMUTABLE - 469)) | (1L << (GRANTED - 469)) | (1L << (HOLD - 469)) | (1L << (MAPPING - 469)) | (1L << (OLD - 469)) | (1L << (METHOD - 469)) | (1L << (LOAD - 469)) | (1L << (LISTEN - 469)) | (1L << (MODE - 469)) | (1L << (MOVE - 469)) | (1L << (PROCEDURAL - 469)) | (1L << (PARSER - 469)) | (1L << (PROCEDURES - 469)) | (1L << (ENCRYPTED - 469)) | (1L << (PUBLICATION - 469)) | (1L << (PROGRAM - 469)) | (1L << (REFERENCING - 469)) | (1L << (PLANS - 469)) | (1L << (REINDEX - 469)) | (1L << (PRIOR - 469)) | (1L << (PASSWORD - 469)) | (1L << (RELATIVE - 469)) | (1L << (QUOTE - 469)) | (1L << (ROUTINES - 469)) | (1L << (REPLACE - 469)) | (1L << (SNAPSHOT - 469)) | (1L << (REFRESH - 469)) | (1L << (PREPARE - 469)) | (1L << (OPTIONS - 469)) | (1L << (IMPORT - 469)))) != 0) || ((((_la - 533)) & ~0x3f) == 0 && ((1L << (_la - 533)) & ((1L << (INVOKER - 533)) | (1L << (NEW - 533)) | (1L << (PREPARED - 533)) | (1L << (SCROLL - 533)) | (1L << (SEQUENCES - 533)) | (1L << (SYSID - 533)) | (1L << (REASSIGN - 533)) | (1L << (SERVER - 533)) | (1L << (SUBSCRIPTION - 533)) | (1L << (SEARCH - 533)) | (1L << (SCHEMAS - 533)) | (1L << (RECHECK - 533)) | (1L << (POLICY - 533)) | (1L << (NOTIFY - 533)) | (1L << (LOCK - 533)) | (1L << (RELEASE - 533)) | (1L << (SERIALIZABLE - 533)) | (1L << (RETURNS - 533)) | (1L << (STATEMENT - 533)) | (1L << (STDIN - 533)) | (1L << (STDOUT - 533)) | (1L << (TABLES - 533)) | (1L << (SUPPORT - 533)) | (1L << (STABLE - 533)) | (1L << (TEMPLATE - 533)) | (1L << (UNENCRYPTED - 533)) | (1L << (VIEWS - 533)) | (1L << (UNCOMMITTED - 533)) | (1L << (TRANSFORM - 533)) | (1L << (UNLISTEN - 533)) | (1L << (TRUSTED - 533)) | (1L << (VALIDATOR - 533)) | (1L << (UNTIL - 533)) | (1L << (VACUUM - 533)) | (1L << (VOLATILE - 533)) | (1L << (STORED - 533)) | (1L << (WRITE - 533)) | (1L << (STRICT - 533)) | (1L << (TYPES - 533)) | (1L << (WRAPPER - 533)) | (1L << (WORK - 533)) | (1L << (FREEZE - 533)) | (1L << (AUTHORIZATION - 533)) | (1L << (VERBOSE - 533)) | (1L << (PREDICT - 533)) | (1L << (TS_REWRITE - 533)) | (1L << (INT16 - 533)) | (1L << (INT1 - 533)) | (1L << (ELEM_CONTAINED_BY_RANGE - 533)) | (1L << (LOWER_INF - 533)) | (1L << (UPPER_INF - 533)) | (1L << (ABBREV - 533)) | (1L << (SET_MASKLEN - 533)) | (1L << (TRUNC - 533)) | (1L << (IDENTIFIER_ - 533)))) != 0)) {
					{
					setState(6178);
					partParams();
					}
				}

				setState(6181);
				match(RP_);
				}
				}
				setState(6186);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class PartParamsContext extends ParserRuleContext {
		public List partElem() {
			return getRuleContexts(PartElemContext.class);
		}
		public PartElemContext partElem(int i) {
			return getRuleContext(PartElemContext.class,i);
		}
		public List COMMA_() { return getTokens(OpenGaussStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(OpenGaussStatementParser.COMMA_, i);
		}
		public PartParamsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_partParams; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitPartParams(this);
			else return visitor.visitChildren(this);
		}
	}

	public final PartParamsContext partParams() throws RecognitionException {
		PartParamsContext _localctx = new PartParamsContext(_ctx, getState());
		enterRule(_localctx, 834, RULE_partParams);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6187);
			partElem();
			setState(6192);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA_) {
				{
				{
				setState(6188);
				match(COMMA_);
				setState(6189);
				partElem();
				}
				}
				setState(6194);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class PartElemContext extends ParserRuleContext {
		public ColIdContext colId() {
			return getRuleContext(ColIdContext.class,0);
		}
		public TerminalNode COLLATE() { return getToken(OpenGaussStatementParser.COLLATE, 0); }
		public List anyName() {
			return getRuleContexts(AnyNameContext.class);
		}
		public AnyNameContext anyName(int i) {
			return getRuleContext(AnyNameContext.class,i);
		}
		public TerminalNode LP_() { return getToken(OpenGaussStatementParser.LP_, 0); }
		public AExprContext aExpr() {
			return getRuleContext(AExprContext.class,0);
		}
		public TerminalNode RP_() { return getToken(OpenGaussStatementParser.RP_, 0); }
		public TerminalNode PARTITION() { return getToken(OpenGaussStatementParser.PARTITION, 0); }
		public TerminalNode VALUES() { return getToken(OpenGaussStatementParser.VALUES, 0); }
		public TerminalNode LESS() { return getToken(OpenGaussStatementParser.LESS, 0); }
		public TerminalNode THAN() { return getToken(OpenGaussStatementParser.THAN, 0); }
		public FuncExprWindowlessContext funcExprWindowless() {
			return getRuleContext(FuncExprWindowlessContext.class,0);
		}
		public PartElemContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_partElem; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitPartElem(this);
			else return visitor.visitChildren(this);
		}
	}

	public final PartElemContext partElem() throws RecognitionException {
		PartElemContext _localctx = new PartElemContext(_ctx, getState());
		enterRule(_localctx, 836, RULE_partElem);
		int _la;
		try {
			setState(6228);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,531,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(6195);
				colId();
				setState(6198);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==COLLATE) {
					{
					setState(6196);
					match(COLLATE);
					setState(6197);
					anyName();
					}
				}

				setState(6201);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==UNICODE_ESCAPE || ((((_la - 81)) & ~0x3f) == 0 && ((1L << (_la - 81)) & ((1L << (INSERT - 81)) | (1L << (UPDATE - 81)) | (1L << (DELETE - 81)) | (1L << (ALTER - 81)) | (1L << (DROP - 81)) | (1L << (TRUNCATE - 81)) | (1L << (SCHEMA - 81)) | (1L << (REVOKE - 81)) | (1L << (ADD - 81)) | (1L << (SET - 81)) | (1L << (INDEX - 81)) | (1L << (KEY - 81)) | (1L << (POSITION - 81)) | (1L << (FUNCTION - 81)) | (1L << (TRIGGER - 81)) | (1L << (PROCEDURE - 81)) | (1L << (VIEW - 81)) | (1L << (IF - 81)))) != 0) || ((((_la - 151)) & ~0x3f) == 0 && ((1L << (_la - 151)) & ((1L << (BY - 151)) | (1L << (BEGIN - 151)) | (1L << (COMMIT - 151)) | (1L << (ROLLBACK - 151)) | (1L << (SAVEPOINT - 151)) | (1L << (DOUBLE - 151)) | (1L << (INTERVAL - 151)) | (1L << (TIME - 151)) | (1L << (TIMESTAMP - 151)) | (1L << (YEAR - 151)) | (1L << (MONTH - 151)) | (1L << (DAY - 151)) | (1L << (HOUR - 151)) | (1L << (MINUTE - 151)) | (1L << (SECOND - 151)) | (1L << (CURRENT - 151)) | (1L << (ENABLE - 151)) | (1L << (DISABLE - 151)) | (1L << (CALL - 151)) | (1L << (PRESERVE - 151)) | (1L << (DEFINER - 151)) | (1L << (SQL - 151)) | (1L << (CASCADED - 151)) | (1L << (LOCAL - 151)) | (1L << (CLOSE - 151)) | (1L << (NEXT - 151)) | (1L << (NAME - 151)) | (1L << (NAMES - 151)) | (1L << (TYPE - 151)) | (1L << (TEXT - 151)) | (1L << (REPEATABLE - 151)) | (1L << (VARYING - 151)) | (1L << (NATIONAL - 151)))) != 0) || ((((_la - 216)) & ~0x3f) == 0 && ((1L << (_la - 216)) & ((1L << (VALUE - 216)) | (1L << (TIES - 216)) | (1L << (CUBE - 216)) | (1L << (SETS - 216)) | (1L << (OTHERS - 216)) | (1L << (AT - 216)) | (1L << (MAXVALUE - 216)) | (1L << (ADMIN - 216)) | (1L << (ESCAPE - 216)) | (1L << (EXCLUDE - 216)) | (1L << (MOD - 216)) | (1L << (PARTITION - 216)) | (1L << (UNKNOWN - 216)) | (1L << (ALWAYS - 216)) | (1L << (CASCADE - 216)) | (1L << (GENERATED - 216)) | (1L << (ISOLATION - 216)) | (1L << (LEVEL - 216)) | (1L << (NO - 216)) | (1L << (OPTION - 216)) | (1L << (PRIVILEGES - 216)) | (1L << (READ - 216)) | (1L << (ROLE - 216)) | (1L << (ROWS - 216)) | (1L << (START - 216)) | (1L << (TRANSACTION - 216)) | (1L << (ACTION - 216)) | (1L << (CACHE - 216)) | (1L << (CHARACTERISTICS - 216)) | (1L << (CLUSTER - 216)) | (1L << (COMMENTS - 216)) | (1L << (CONSTRAINTS - 216)) | (1L << (CYCLE - 216)) | (1L << (DATA - 216)) | (1L << (DATABASE - 216)) | (1L << (DEFAULTS - 216)) | (1L << (DEFERRED - 216)))) != 0) || ((((_la - 280)) & ~0x3f) == 0 && ((1L << (_la - 280)) & ((1L << (DEPENDS - 280)) | (1L << (DOMAIN - 280)) | (1L << (EXCLUDING - 280)) | (1L << (EXECUTE - 280)) | (1L << (EXTENDED - 280)) | (1L << (EXTENSION - 280)) | (1L << (EXTERNAL - 280)) | (1L << (FILTER - 280)) | (1L << (FIRST - 280)) | (1L << (FOLLOWING - 280)) | (1L << (FORCE - 280)) | (1L << (GLOBAL - 280)) | (1L << (IDENTITY - 280)) | (1L << (IMMEDIATE - 280)) | (1L << (INCLUDING - 280)) | (1L << (INCREMENT - 280)) | (1L << (INDEXES - 280)) | (1L << (INHERIT - 280)) | (1L << (INHERITS - 280)) | (1L << (INCLUDE - 280)) | (1L << (LANGUAGE - 280)) | (1L << (LARGE - 280)) | (1L << (LAST - 280)) | (1L << (LOGGED - 280)) | (1L << (MAIN - 280)) | (1L << (MATCH - 280)) | (1L << (MINVALUE - 280)) | (1L << (NOTHING - 280)) | (1L << (NULLS - 280)) | (1L << (OBJECT - 280)) | (1L << (OIDS - 280)) | (1L << (OVER - 280)) | (1L << (OWNED - 280)) | (1L << (OWNER - 280)) | (1L << (PARTIAL - 280)) | (1L << (PLAIN - 280)) | (1L << (PRECEDING - 280)) | (1L << (RANGE - 280)) | (1L << (RENAME - 280)) | (1L << (REPLICA - 280)) | (1L << (RESET - 280)) | (1L << (RESTART - 280)) | (1L << (RESTRICT - 280)) | (1L << (ROUTINE - 280)) | (1L << (RULE - 280)) | (1L << (SECURITY - 280)) | (1L << (SEQUENCE - 280)) | (1L << (SESSION - 280)) | (1L << (SHOW - 280)) | (1L << (SIMPLE - 280)) | (1L << (STATISTICS - 280)) | (1L << (STORAGE - 280)) | (1L << (TABLESPACE - 280)) | (1L << (TEMP - 280)) | (1L << (TEMPORARY - 280)) | (1L << (UNBOUNDED - 280)) | (1L << (UNLOGGED - 280)) | (1L << (VALID - 280)))) != 0) || ((((_la - 344)) & ~0x3f) == 0 && ((1L << (_la - 344)) & ((1L << (VALIDATE - 344)) | (1L << (WITHIN - 344)) | (1L << (WITHOUT - 344)) | (1L << (ZONE - 344)) | (1L << (OF - 344)) | (1L << (UESCAPE - 344)) | (1L << (GROUPS - 344)) | (1L << (RECURSIVE - 344)) | (1L << (INT2 - 344)) | (1L << (INT4 - 344)) | (1L << (FLOAT4 - 344)) | (1L << (BYTEA - 344)) | (1L << (ENUM - 344)) | (1L << (POINT - 344)) | (1L << (LSEG - 344)) | (1L << (BOX - 344)) | (1L << (PATH - 344)) | (1L << (POLYGON - 344)) | (1L << (CIRCLE - 344)) | (1L << (INET - 344)) | (1L << (TSQUERY - 344)) | (1L << (XML - 344)) | (1L << (JSON - 344)) | (1L << (INT4RANGE - 344)) | (1L << (INT8RANGE - 344)) | (1L << (NUMRANGE - 344)) | (1L << (DATERANGE - 344)) | (1L << (ORDINALITY - 344)) | (1L << (NFC - 344)) | (1L << (NFD - 344)) | (1L << (NFKC - 344)))) != 0) || ((((_la - 408)) & ~0x3f) == 0 && ((1L << (_la - 408)) & ((1L << (NFKD - 408)) | (1L << (REF - 408)) | (1L << (PASSING - 408)) | (1L << (VERSION - 408)) | (1L << (YES - 408)) | (1L << (STANDALONE - 408)) | (1L << (MATERIALIZED - 408)) | (1L << (OPERATOR - 408)) | (1L << (SHARE - 408)) | (1L << (ROLLUP - 408)) | (1L << (DOCUMENT - 408)) | (1L << (NORMALIZED - 408)) | (1L << (NOWAIT - 408)) | (1L << (LOCKED - 408)) | (1L << (COLUMNS - 408)) | (1L << (CONTENT - 408)) | (1L << (STRIP - 408)) | (1L << (WHITESPACE - 408)) | (1L << (CONFLICT - 408)) | (1L << (OVERRIDING - 408)) | (1L << (SYSTEM - 408)) | (1L << (ABORT - 408)) | (1L << (ABSOLUTE - 408)) | (1L << (ACCESS - 408)) | (1L << (AFTER - 408)) | (1L << (AGGREGATE - 408)) | (1L << (ALSO - 408)) | (1L << (ATTACH - 408)) | (1L << (ATTRIBUTE - 408)) | (1L << (BACKWARD - 408)) | (1L << (BEFORE - 408)) | (1L << (ASSERTION - 408)) | (1L << (ASSIGNMENT - 408)) | (1L << (CONTINUE - 408)) | (1L << (CONVERSION - 408)) | (1L << (COPY - 408)) | (1L << (COST - 408)) | (1L << (CSV - 408)) | (1L << (CALLED - 408)) | (1L << (CATALOG - 408)) | (1L << (CHAIN - 408)) | (1L << (CHECKPOINT - 408)) | (1L << (CLASS - 408)) | (1L << (CONFIGURATION - 408)) | (1L << (COMMENT - 408)) | (1L << (DETACH - 408)))) != 0) || ((((_la - 472)) & ~0x3f) == 0 && ((1L << (_la - 472)) & ((1L << (DICTIONARY - 472)) | (1L << (EXPRESSION - 472)) | (1L << (INSENSITIVE - 472)) | (1L << (DISCARD - 472)) | (1L << (OFF - 472)) | (1L << (INSTEAD - 472)) | (1L << (EXPLAIN - 472)) | (1L << (INPUT - 472)) | (1L << (INLINE - 472)) | (1L << (PARALLEL - 472)) | (1L << (LEAKPROOF - 472)) | (1L << (COMMITTED - 472)) | (1L << (ENCODING - 472)) | (1L << (IMPLICIT - 472)) | (1L << (DELIMITER - 472)) | (1L << (CURSOR - 472)) | (1L << (EACH - 472)) | (1L << (EVENT - 472)) | (1L << (DEALLOCATE - 472)) | (1L << (CONNECTION - 472)) | (1L << (DECLARE - 472)) | (1L << (FAMILY - 472)) | (1L << (FORWARD - 472)) | (1L << (EXCLUSIVE - 472)) | (1L << (FUNCTIONS - 472)) | (1L << (LOCATION - 472)) | (1L << (LABEL - 472)) | (1L << (DELIMITERS - 472)) | (1L << (HANDLER - 472)) | (1L << (HEADER - 472)) | (1L << (IMMUTABLE - 472)) | (1L << (GRANTED - 472)) | (1L << (HOLD - 472)) | (1L << (MAPPING - 472)) | (1L << (OLD - 472)) | (1L << (METHOD - 472)) | (1L << (LOAD - 472)) | (1L << (LISTEN - 472)) | (1L << (MODE - 472)) | (1L << (MOVE - 472)) | (1L << (PROCEDURAL - 472)) | (1L << (PARSER - 472)) | (1L << (PROCEDURES - 472)) | (1L << (ENCRYPTED - 472)) | (1L << (PUBLICATION - 472)) | (1L << (PROGRAM - 472)) | (1L << (REFERENCING - 472)) | (1L << (PLANS - 472)) | (1L << (REINDEX - 472)) | (1L << (PRIOR - 472)) | (1L << (PASSWORD - 472)) | (1L << (RELATIVE - 472)) | (1L << (QUOTE - 472)) | (1L << (ROUTINES - 472)) | (1L << (REPLACE - 472)) | (1L << (SNAPSHOT - 472)) | (1L << (REFRESH - 472)) | (1L << (PREPARE - 472)) | (1L << (OPTIONS - 472)) | (1L << (IMPORT - 472)) | (1L << (INVOKER - 472)) | (1L << (NEW - 472)) | (1L << (PREPARED - 472)))) != 0) || ((((_la - 536)) & ~0x3f) == 0 && ((1L << (_la - 536)) & ((1L << (SCROLL - 536)) | (1L << (SEQUENCES - 536)) | (1L << (SYSID - 536)) | (1L << (REASSIGN - 536)) | (1L << (SERVER - 536)) | (1L << (SUBSCRIPTION - 536)) | (1L << (SEARCH - 536)) | (1L << (SCHEMAS - 536)) | (1L << (RECHECK - 536)) | (1L << (POLICY - 536)) | (1L << (NOTIFY - 536)) | (1L << (LOCK - 536)) | (1L << (RELEASE - 536)) | (1L << (SERIALIZABLE - 536)) | (1L << (RETURNS - 536)) | (1L << (STATEMENT - 536)) | (1L << (STDIN - 536)) | (1L << (STDOUT - 536)) | (1L << (TABLES - 536)) | (1L << (SUPPORT - 536)) | (1L << (STABLE - 536)) | (1L << (TEMPLATE - 536)) | (1L << (UNENCRYPTED - 536)) | (1L << (VIEWS - 536)) | (1L << (UNCOMMITTED - 536)) | (1L << (TRANSFORM - 536)) | (1L << (UNLISTEN - 536)) | (1L << (TRUSTED - 536)) | (1L << (VALIDATOR - 536)) | (1L << (UNTIL - 536)) | (1L << (VACUUM - 536)) | (1L << (VOLATILE - 536)) | (1L << (STORED - 536)) | (1L << (WRITE - 536)) | (1L << (STRICT - 536)) | (1L << (TYPES - 536)) | (1L << (WRAPPER - 536)) | (1L << (WORK - 536)) | (1L << (INT16 - 536)) | (1L << (INT1 - 536)) | (1L << (ELEM_CONTAINED_BY_RANGE - 536)) | (1L << (IDENTIFIER_ - 536)))) != 0)) {
					{
					setState(6200);
					anyName();
					}
				}

				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(6203);
				match(LP_);
				setState(6204);
				aExpr(0);
				setState(6205);
				match(RP_);
				setState(6208);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==COLLATE) {
					{
					setState(6206);
					match(COLLATE);
					setState(6207);
					anyName();
					}
				}

				setState(6211);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==UNICODE_ESCAPE || ((((_la - 81)) & ~0x3f) == 0 && ((1L << (_la - 81)) & ((1L << (INSERT - 81)) | (1L << (UPDATE - 81)) | (1L << (DELETE - 81)) | (1L << (ALTER - 81)) | (1L << (DROP - 81)) | (1L << (TRUNCATE - 81)) | (1L << (SCHEMA - 81)) | (1L << (REVOKE - 81)) | (1L << (ADD - 81)) | (1L << (SET - 81)) | (1L << (INDEX - 81)) | (1L << (KEY - 81)) | (1L << (POSITION - 81)) | (1L << (FUNCTION - 81)) | (1L << (TRIGGER - 81)) | (1L << (PROCEDURE - 81)) | (1L << (VIEW - 81)) | (1L << (IF - 81)))) != 0) || ((((_la - 151)) & ~0x3f) == 0 && ((1L << (_la - 151)) & ((1L << (BY - 151)) | (1L << (BEGIN - 151)) | (1L << (COMMIT - 151)) | (1L << (ROLLBACK - 151)) | (1L << (SAVEPOINT - 151)) | (1L << (DOUBLE - 151)) | (1L << (INTERVAL - 151)) | (1L << (TIME - 151)) | (1L << (TIMESTAMP - 151)) | (1L << (YEAR - 151)) | (1L << (MONTH - 151)) | (1L << (DAY - 151)) | (1L << (HOUR - 151)) | (1L << (MINUTE - 151)) | (1L << (SECOND - 151)) | (1L << (CURRENT - 151)) | (1L << (ENABLE - 151)) | (1L << (DISABLE - 151)) | (1L << (CALL - 151)) | (1L << (PRESERVE - 151)) | (1L << (DEFINER - 151)) | (1L << (SQL - 151)) | (1L << (CASCADED - 151)) | (1L << (LOCAL - 151)) | (1L << (CLOSE - 151)) | (1L << (NEXT - 151)) | (1L << (NAME - 151)) | (1L << (NAMES - 151)) | (1L << (TYPE - 151)) | (1L << (TEXT - 151)) | (1L << (REPEATABLE - 151)) | (1L << (VARYING - 151)) | (1L << (NATIONAL - 151)))) != 0) || ((((_la - 216)) & ~0x3f) == 0 && ((1L << (_la - 216)) & ((1L << (VALUE - 216)) | (1L << (TIES - 216)) | (1L << (CUBE - 216)) | (1L << (SETS - 216)) | (1L << (OTHERS - 216)) | (1L << (AT - 216)) | (1L << (MAXVALUE - 216)) | (1L << (ADMIN - 216)) | (1L << (ESCAPE - 216)) | (1L << (EXCLUDE - 216)) | (1L << (MOD - 216)) | (1L << (PARTITION - 216)) | (1L << (UNKNOWN - 216)) | (1L << (ALWAYS - 216)) | (1L << (CASCADE - 216)) | (1L << (GENERATED - 216)) | (1L << (ISOLATION - 216)) | (1L << (LEVEL - 216)) | (1L << (NO - 216)) | (1L << (OPTION - 216)) | (1L << (PRIVILEGES - 216)) | (1L << (READ - 216)) | (1L << (ROLE - 216)) | (1L << (ROWS - 216)) | (1L << (START - 216)) | (1L << (TRANSACTION - 216)) | (1L << (ACTION - 216)) | (1L << (CACHE - 216)) | (1L << (CHARACTERISTICS - 216)) | (1L << (CLUSTER - 216)) | (1L << (COMMENTS - 216)) | (1L << (CONSTRAINTS - 216)) | (1L << (CYCLE - 216)) | (1L << (DATA - 216)) | (1L << (DATABASE - 216)) | (1L << (DEFAULTS - 216)) | (1L << (DEFERRED - 216)))) != 0) || ((((_la - 280)) & ~0x3f) == 0 && ((1L << (_la - 280)) & ((1L << (DEPENDS - 280)) | (1L << (DOMAIN - 280)) | (1L << (EXCLUDING - 280)) | (1L << (EXECUTE - 280)) | (1L << (EXTENDED - 280)) | (1L << (EXTENSION - 280)) | (1L << (EXTERNAL - 280)) | (1L << (FILTER - 280)) | (1L << (FIRST - 280)) | (1L << (FOLLOWING - 280)) | (1L << (FORCE - 280)) | (1L << (GLOBAL - 280)) | (1L << (IDENTITY - 280)) | (1L << (IMMEDIATE - 280)) | (1L << (INCLUDING - 280)) | (1L << (INCREMENT - 280)) | (1L << (INDEXES - 280)) | (1L << (INHERIT - 280)) | (1L << (INHERITS - 280)) | (1L << (INCLUDE - 280)) | (1L << (LANGUAGE - 280)) | (1L << (LARGE - 280)) | (1L << (LAST - 280)) | (1L << (LOGGED - 280)) | (1L << (MAIN - 280)) | (1L << (MATCH - 280)) | (1L << (MINVALUE - 280)) | (1L << (NOTHING - 280)) | (1L << (NULLS - 280)) | (1L << (OBJECT - 280)) | (1L << (OIDS - 280)) | (1L << (OVER - 280)) | (1L << (OWNED - 280)) | (1L << (OWNER - 280)) | (1L << (PARTIAL - 280)) | (1L << (PLAIN - 280)) | (1L << (PRECEDING - 280)) | (1L << (RANGE - 280)) | (1L << (RENAME - 280)) | (1L << (REPLICA - 280)) | (1L << (RESET - 280)) | (1L << (RESTART - 280)) | (1L << (RESTRICT - 280)) | (1L << (ROUTINE - 280)) | (1L << (RULE - 280)) | (1L << (SECURITY - 280)) | (1L << (SEQUENCE - 280)) | (1L << (SESSION - 280)) | (1L << (SHOW - 280)) | (1L << (SIMPLE - 280)) | (1L << (STATISTICS - 280)) | (1L << (STORAGE - 280)) | (1L << (TABLESPACE - 280)) | (1L << (TEMP - 280)) | (1L << (TEMPORARY - 280)) | (1L << (UNBOUNDED - 280)) | (1L << (UNLOGGED - 280)) | (1L << (VALID - 280)))) != 0) || ((((_la - 344)) & ~0x3f) == 0 && ((1L << (_la - 344)) & ((1L << (VALIDATE - 344)) | (1L << (WITHIN - 344)) | (1L << (WITHOUT - 344)) | (1L << (ZONE - 344)) | (1L << (OF - 344)) | (1L << (UESCAPE - 344)) | (1L << (GROUPS - 344)) | (1L << (RECURSIVE - 344)) | (1L << (INT2 - 344)) | (1L << (INT4 - 344)) | (1L << (FLOAT4 - 344)) | (1L << (BYTEA - 344)) | (1L << (ENUM - 344)) | (1L << (POINT - 344)) | (1L << (LSEG - 344)) | (1L << (BOX - 344)) | (1L << (PATH - 344)) | (1L << (POLYGON - 344)) | (1L << (CIRCLE - 344)) | (1L << (INET - 344)) | (1L << (TSQUERY - 344)) | (1L << (XML - 344)) | (1L << (JSON - 344)) | (1L << (INT4RANGE - 344)) | (1L << (INT8RANGE - 344)) | (1L << (NUMRANGE - 344)) | (1L << (DATERANGE - 344)) | (1L << (ORDINALITY - 344)) | (1L << (NFC - 344)) | (1L << (NFD - 344)) | (1L << (NFKC - 344)))) != 0) || ((((_la - 408)) & ~0x3f) == 0 && ((1L << (_la - 408)) & ((1L << (NFKD - 408)) | (1L << (REF - 408)) | (1L << (PASSING - 408)) | (1L << (VERSION - 408)) | (1L << (YES - 408)) | (1L << (STANDALONE - 408)) | (1L << (MATERIALIZED - 408)) | (1L << (OPERATOR - 408)) | (1L << (SHARE - 408)) | (1L << (ROLLUP - 408)) | (1L << (DOCUMENT - 408)) | (1L << (NORMALIZED - 408)) | (1L << (NOWAIT - 408)) | (1L << (LOCKED - 408)) | (1L << (COLUMNS - 408)) | (1L << (CONTENT - 408)) | (1L << (STRIP - 408)) | (1L << (WHITESPACE - 408)) | (1L << (CONFLICT - 408)) | (1L << (OVERRIDING - 408)) | (1L << (SYSTEM - 408)) | (1L << (ABORT - 408)) | (1L << (ABSOLUTE - 408)) | (1L << (ACCESS - 408)) | (1L << (AFTER - 408)) | (1L << (AGGREGATE - 408)) | (1L << (ALSO - 408)) | (1L << (ATTACH - 408)) | (1L << (ATTRIBUTE - 408)) | (1L << (BACKWARD - 408)) | (1L << (BEFORE - 408)) | (1L << (ASSERTION - 408)) | (1L << (ASSIGNMENT - 408)) | (1L << (CONTINUE - 408)) | (1L << (CONVERSION - 408)) | (1L << (COPY - 408)) | (1L << (COST - 408)) | (1L << (CSV - 408)) | (1L << (CALLED - 408)) | (1L << (CATALOG - 408)) | (1L << (CHAIN - 408)) | (1L << (CHECKPOINT - 408)) | (1L << (CLASS - 408)) | (1L << (CONFIGURATION - 408)) | (1L << (COMMENT - 408)) | (1L << (DETACH - 408)))) != 0) || ((((_la - 472)) & ~0x3f) == 0 && ((1L << (_la - 472)) & ((1L << (DICTIONARY - 472)) | (1L << (EXPRESSION - 472)) | (1L << (INSENSITIVE - 472)) | (1L << (DISCARD - 472)) | (1L << (OFF - 472)) | (1L << (INSTEAD - 472)) | (1L << (EXPLAIN - 472)) | (1L << (INPUT - 472)) | (1L << (INLINE - 472)) | (1L << (PARALLEL - 472)) | (1L << (LEAKPROOF - 472)) | (1L << (COMMITTED - 472)) | (1L << (ENCODING - 472)) | (1L << (IMPLICIT - 472)) | (1L << (DELIMITER - 472)) | (1L << (CURSOR - 472)) | (1L << (EACH - 472)) | (1L << (EVENT - 472)) | (1L << (DEALLOCATE - 472)) | (1L << (CONNECTION - 472)) | (1L << (DECLARE - 472)) | (1L << (FAMILY - 472)) | (1L << (FORWARD - 472)) | (1L << (EXCLUSIVE - 472)) | (1L << (FUNCTIONS - 472)) | (1L << (LOCATION - 472)) | (1L << (LABEL - 472)) | (1L << (DELIMITERS - 472)) | (1L << (HANDLER - 472)) | (1L << (HEADER - 472)) | (1L << (IMMUTABLE - 472)) | (1L << (GRANTED - 472)) | (1L << (HOLD - 472)) | (1L << (MAPPING - 472)) | (1L << (OLD - 472)) | (1L << (METHOD - 472)) | (1L << (LOAD - 472)) | (1L << (LISTEN - 472)) | (1L << (MODE - 472)) | (1L << (MOVE - 472)) | (1L << (PROCEDURAL - 472)) | (1L << (PARSER - 472)) | (1L << (PROCEDURES - 472)) | (1L << (ENCRYPTED - 472)) | (1L << (PUBLICATION - 472)) | (1L << (PROGRAM - 472)) | (1L << (REFERENCING - 472)) | (1L << (PLANS - 472)) | (1L << (REINDEX - 472)) | (1L << (PRIOR - 472)) | (1L << (PASSWORD - 472)) | (1L << (RELATIVE - 472)) | (1L << (QUOTE - 472)) | (1L << (ROUTINES - 472)) | (1L << (REPLACE - 472)) | (1L << (SNAPSHOT - 472)) | (1L << (REFRESH - 472)) | (1L << (PREPARE - 472)) | (1L << (OPTIONS - 472)) | (1L << (IMPORT - 472)) | (1L << (INVOKER - 472)) | (1L << (NEW - 472)) | (1L << (PREPARED - 472)))) != 0) || ((((_la - 536)) & ~0x3f) == 0 && ((1L << (_la - 536)) & ((1L << (SCROLL - 536)) | (1L << (SEQUENCES - 536)) | (1L << (SYSID - 536)) | (1L << (REASSIGN - 536)) | (1L << (SERVER - 536)) | (1L << (SUBSCRIPTION - 536)) | (1L << (SEARCH - 536)) | (1L << (SCHEMAS - 536)) | (1L << (RECHECK - 536)) | (1L << (POLICY - 536)) | (1L << (NOTIFY - 536)) | (1L << (LOCK - 536)) | (1L << (RELEASE - 536)) | (1L << (SERIALIZABLE - 536)) | (1L << (RETURNS - 536)) | (1L << (STATEMENT - 536)) | (1L << (STDIN - 536)) | (1L << (STDOUT - 536)) | (1L << (TABLES - 536)) | (1L << (SUPPORT - 536)) | (1L << (STABLE - 536)) | (1L << (TEMPLATE - 536)) | (1L << (UNENCRYPTED - 536)) | (1L << (VIEWS - 536)) | (1L << (UNCOMMITTED - 536)) | (1L << (TRANSFORM - 536)) | (1L << (UNLISTEN - 536)) | (1L << (TRUSTED - 536)) | (1L << (VALIDATOR - 536)) | (1L << (UNTIL - 536)) | (1L << (VACUUM - 536)) | (1L << (VOLATILE - 536)) | (1L << (STORED - 536)) | (1L << (WRITE - 536)) | (1L << (STRICT - 536)) | (1L << (TYPES - 536)) | (1L << (WRAPPER - 536)) | (1L << (WORK - 536)) | (1L << (INT16 - 536)) | (1L << (INT1 - 536)) | (1L << (ELEM_CONTAINED_BY_RANGE - 536)) | (1L << (IDENTIFIER_ - 536)))) != 0)) {
					{
					setState(6210);
					anyName();
					}
				}

				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(6213);
				match(PARTITION);
				setState(6214);
				anyName();
				setState(6215);
				match(VALUES);
				setState(6216);
				match(LESS);
				setState(6217);
				match(THAN);
				setState(6218);
				aExpr(0);
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(6220);
				funcExprWindowless();
				setState(6223);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==COLLATE) {
					{
					setState(6221);
					match(COLLATE);
					setState(6222);
					anyName();
					}
				}

				setState(6226);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==UNICODE_ESCAPE || ((((_la - 81)) & ~0x3f) == 0 && ((1L << (_la - 81)) & ((1L << (INSERT - 81)) | (1L << (UPDATE - 81)) | (1L << (DELETE - 81)) | (1L << (ALTER - 81)) | (1L << (DROP - 81)) | (1L << (TRUNCATE - 81)) | (1L << (SCHEMA - 81)) | (1L << (REVOKE - 81)) | (1L << (ADD - 81)) | (1L << (SET - 81)) | (1L << (INDEX - 81)) | (1L << (KEY - 81)) | (1L << (POSITION - 81)) | (1L << (FUNCTION - 81)) | (1L << (TRIGGER - 81)) | (1L << (PROCEDURE - 81)) | (1L << (VIEW - 81)) | (1L << (IF - 81)))) != 0) || ((((_la - 151)) & ~0x3f) == 0 && ((1L << (_la - 151)) & ((1L << (BY - 151)) | (1L << (BEGIN - 151)) | (1L << (COMMIT - 151)) | (1L << (ROLLBACK - 151)) | (1L << (SAVEPOINT - 151)) | (1L << (DOUBLE - 151)) | (1L << (INTERVAL - 151)) | (1L << (TIME - 151)) | (1L << (TIMESTAMP - 151)) | (1L << (YEAR - 151)) | (1L << (MONTH - 151)) | (1L << (DAY - 151)) | (1L << (HOUR - 151)) | (1L << (MINUTE - 151)) | (1L << (SECOND - 151)) | (1L << (CURRENT - 151)) | (1L << (ENABLE - 151)) | (1L << (DISABLE - 151)) | (1L << (CALL - 151)) | (1L << (PRESERVE - 151)) | (1L << (DEFINER - 151)) | (1L << (SQL - 151)) | (1L << (CASCADED - 151)) | (1L << (LOCAL - 151)) | (1L << (CLOSE - 151)) | (1L << (NEXT - 151)) | (1L << (NAME - 151)) | (1L << (NAMES - 151)) | (1L << (TYPE - 151)) | (1L << (TEXT - 151)) | (1L << (REPEATABLE - 151)) | (1L << (VARYING - 151)) | (1L << (NATIONAL - 151)))) != 0) || ((((_la - 216)) & ~0x3f) == 0 && ((1L << (_la - 216)) & ((1L << (VALUE - 216)) | (1L << (TIES - 216)) | (1L << (CUBE - 216)) | (1L << (SETS - 216)) | (1L << (OTHERS - 216)) | (1L << (AT - 216)) | (1L << (MAXVALUE - 216)) | (1L << (ADMIN - 216)) | (1L << (ESCAPE - 216)) | (1L << (EXCLUDE - 216)) | (1L << (MOD - 216)) | (1L << (PARTITION - 216)) | (1L << (UNKNOWN - 216)) | (1L << (ALWAYS - 216)) | (1L << (CASCADE - 216)) | (1L << (GENERATED - 216)) | (1L << (ISOLATION - 216)) | (1L << (LEVEL - 216)) | (1L << (NO - 216)) | (1L << (OPTION - 216)) | (1L << (PRIVILEGES - 216)) | (1L << (READ - 216)) | (1L << (ROLE - 216)) | (1L << (ROWS - 216)) | (1L << (START - 216)) | (1L << (TRANSACTION - 216)) | (1L << (ACTION - 216)) | (1L << (CACHE - 216)) | (1L << (CHARACTERISTICS - 216)) | (1L << (CLUSTER - 216)) | (1L << (COMMENTS - 216)) | (1L << (CONSTRAINTS - 216)) | (1L << (CYCLE - 216)) | (1L << (DATA - 216)) | (1L << (DATABASE - 216)) | (1L << (DEFAULTS - 216)) | (1L << (DEFERRED - 216)))) != 0) || ((((_la - 280)) & ~0x3f) == 0 && ((1L << (_la - 280)) & ((1L << (DEPENDS - 280)) | (1L << (DOMAIN - 280)) | (1L << (EXCLUDING - 280)) | (1L << (EXECUTE - 280)) | (1L << (EXTENDED - 280)) | (1L << (EXTENSION - 280)) | (1L << (EXTERNAL - 280)) | (1L << (FILTER - 280)) | (1L << (FIRST - 280)) | (1L << (FOLLOWING - 280)) | (1L << (FORCE - 280)) | (1L << (GLOBAL - 280)) | (1L << (IDENTITY - 280)) | (1L << (IMMEDIATE - 280)) | (1L << (INCLUDING - 280)) | (1L << (INCREMENT - 280)) | (1L << (INDEXES - 280)) | (1L << (INHERIT - 280)) | (1L << (INHERITS - 280)) | (1L << (INCLUDE - 280)) | (1L << (LANGUAGE - 280)) | (1L << (LARGE - 280)) | (1L << (LAST - 280)) | (1L << (LOGGED - 280)) | (1L << (MAIN - 280)) | (1L << (MATCH - 280)) | (1L << (MINVALUE - 280)) | (1L << (NOTHING - 280)) | (1L << (NULLS - 280)) | (1L << (OBJECT - 280)) | (1L << (OIDS - 280)) | (1L << (OVER - 280)) | (1L << (OWNED - 280)) | (1L << (OWNER - 280)) | (1L << (PARTIAL - 280)) | (1L << (PLAIN - 280)) | (1L << (PRECEDING - 280)) | (1L << (RANGE - 280)) | (1L << (RENAME - 280)) | (1L << (REPLICA - 280)) | (1L << (RESET - 280)) | (1L << (RESTART - 280)) | (1L << (RESTRICT - 280)) | (1L << (ROUTINE - 280)) | (1L << (RULE - 280)) | (1L << (SECURITY - 280)) | (1L << (SEQUENCE - 280)) | (1L << (SESSION - 280)) | (1L << (SHOW - 280)) | (1L << (SIMPLE - 280)) | (1L << (STATISTICS - 280)) | (1L << (STORAGE - 280)) | (1L << (TABLESPACE - 280)) | (1L << (TEMP - 280)) | (1L << (TEMPORARY - 280)) | (1L << (UNBOUNDED - 280)) | (1L << (UNLOGGED - 280)) | (1L << (VALID - 280)))) != 0) || ((((_la - 344)) & ~0x3f) == 0 && ((1L << (_la - 344)) & ((1L << (VALIDATE - 344)) | (1L << (WITHIN - 344)) | (1L << (WITHOUT - 344)) | (1L << (ZONE - 344)) | (1L << (OF - 344)) | (1L << (UESCAPE - 344)) | (1L << (GROUPS - 344)) | (1L << (RECURSIVE - 344)) | (1L << (INT2 - 344)) | (1L << (INT4 - 344)) | (1L << (FLOAT4 - 344)) | (1L << (BYTEA - 344)) | (1L << (ENUM - 344)) | (1L << (POINT - 344)) | (1L << (LSEG - 344)) | (1L << (BOX - 344)) | (1L << (PATH - 344)) | (1L << (POLYGON - 344)) | (1L << (CIRCLE - 344)) | (1L << (INET - 344)) | (1L << (TSQUERY - 344)) | (1L << (XML - 344)) | (1L << (JSON - 344)) | (1L << (INT4RANGE - 344)) | (1L << (INT8RANGE - 344)) | (1L << (NUMRANGE - 344)) | (1L << (DATERANGE - 344)) | (1L << (ORDINALITY - 344)) | (1L << (NFC - 344)) | (1L << (NFD - 344)) | (1L << (NFKC - 344)))) != 0) || ((((_la - 408)) & ~0x3f) == 0 && ((1L << (_la - 408)) & ((1L << (NFKD - 408)) | (1L << (REF - 408)) | (1L << (PASSING - 408)) | (1L << (VERSION - 408)) | (1L << (YES - 408)) | (1L << (STANDALONE - 408)) | (1L << (MATERIALIZED - 408)) | (1L << (OPERATOR - 408)) | (1L << (SHARE - 408)) | (1L << (ROLLUP - 408)) | (1L << (DOCUMENT - 408)) | (1L << (NORMALIZED - 408)) | (1L << (NOWAIT - 408)) | (1L << (LOCKED - 408)) | (1L << (COLUMNS - 408)) | (1L << (CONTENT - 408)) | (1L << (STRIP - 408)) | (1L << (WHITESPACE - 408)) | (1L << (CONFLICT - 408)) | (1L << (OVERRIDING - 408)) | (1L << (SYSTEM - 408)) | (1L << (ABORT - 408)) | (1L << (ABSOLUTE - 408)) | (1L << (ACCESS - 408)) | (1L << (AFTER - 408)) | (1L << (AGGREGATE - 408)) | (1L << (ALSO - 408)) | (1L << (ATTACH - 408)) | (1L << (ATTRIBUTE - 408)) | (1L << (BACKWARD - 408)) | (1L << (BEFORE - 408)) | (1L << (ASSERTION - 408)) | (1L << (ASSIGNMENT - 408)) | (1L << (CONTINUE - 408)) | (1L << (CONVERSION - 408)) | (1L << (COPY - 408)) | (1L << (COST - 408)) | (1L << (CSV - 408)) | (1L << (CALLED - 408)) | (1L << (CATALOG - 408)) | (1L << (CHAIN - 408)) | (1L << (CHECKPOINT - 408)) | (1L << (CLASS - 408)) | (1L << (CONFIGURATION - 408)) | (1L << (COMMENT - 408)) | (1L << (DETACH - 408)))) != 0) || ((((_la - 472)) & ~0x3f) == 0 && ((1L << (_la - 472)) & ((1L << (DICTIONARY - 472)) | (1L << (EXPRESSION - 472)) | (1L << (INSENSITIVE - 472)) | (1L << (DISCARD - 472)) | (1L << (OFF - 472)) | (1L << (INSTEAD - 472)) | (1L << (EXPLAIN - 472)) | (1L << (INPUT - 472)) | (1L << (INLINE - 472)) | (1L << (PARALLEL - 472)) | (1L << (LEAKPROOF - 472)) | (1L << (COMMITTED - 472)) | (1L << (ENCODING - 472)) | (1L << (IMPLICIT - 472)) | (1L << (DELIMITER - 472)) | (1L << (CURSOR - 472)) | (1L << (EACH - 472)) | (1L << (EVENT - 472)) | (1L << (DEALLOCATE - 472)) | (1L << (CONNECTION - 472)) | (1L << (DECLARE - 472)) | (1L << (FAMILY - 472)) | (1L << (FORWARD - 472)) | (1L << (EXCLUSIVE - 472)) | (1L << (FUNCTIONS - 472)) | (1L << (LOCATION - 472)) | (1L << (LABEL - 472)) | (1L << (DELIMITERS - 472)) | (1L << (HANDLER - 472)) | (1L << (HEADER - 472)) | (1L << (IMMUTABLE - 472)) | (1L << (GRANTED - 472)) | (1L << (HOLD - 472)) | (1L << (MAPPING - 472)) | (1L << (OLD - 472)) | (1L << (METHOD - 472)) | (1L << (LOAD - 472)) | (1L << (LISTEN - 472)) | (1L << (MODE - 472)) | (1L << (MOVE - 472)) | (1L << (PROCEDURAL - 472)) | (1L << (PARSER - 472)) | (1L << (PROCEDURES - 472)) | (1L << (ENCRYPTED - 472)) | (1L << (PUBLICATION - 472)) | (1L << (PROGRAM - 472)) | (1L << (REFERENCING - 472)) | (1L << (PLANS - 472)) | (1L << (REINDEX - 472)) | (1L << (PRIOR - 472)) | (1L << (PASSWORD - 472)) | (1L << (RELATIVE - 472)) | (1L << (QUOTE - 472)) | (1L << (ROUTINES - 472)) | (1L << (REPLACE - 472)) | (1L << (SNAPSHOT - 472)) | (1L << (REFRESH - 472)) | (1L << (PREPARE - 472)) | (1L << (OPTIONS - 472)) | (1L << (IMPORT - 472)) | (1L << (INVOKER - 472)) | (1L << (NEW - 472)) | (1L << (PREPARED - 472)))) != 0) || ((((_la - 536)) & ~0x3f) == 0 && ((1L << (_la - 536)) & ((1L << (SCROLL - 536)) | (1L << (SEQUENCES - 536)) | (1L << (SYSID - 536)) | (1L << (REASSIGN - 536)) | (1L << (SERVER - 536)) | (1L << (SUBSCRIPTION - 536)) | (1L << (SEARCH - 536)) | (1L << (SCHEMAS - 536)) | (1L << (RECHECK - 536)) | (1L << (POLICY - 536)) | (1L << (NOTIFY - 536)) | (1L << (LOCK - 536)) | (1L << (RELEASE - 536)) | (1L << (SERIALIZABLE - 536)) | (1L << (RETURNS - 536)) | (1L << (STATEMENT - 536)) | (1L << (STDIN - 536)) | (1L << (STDOUT - 536)) | (1L << (TABLES - 536)) | (1L << (SUPPORT - 536)) | (1L << (STABLE - 536)) | (1L << (TEMPLATE - 536)) | (1L << (UNENCRYPTED - 536)) | (1L << (VIEWS - 536)) | (1L << (UNCOMMITTED - 536)) | (1L << (TRANSFORM - 536)) | (1L << (UNLISTEN - 536)) | (1L << (TRUSTED - 536)) | (1L << (VALIDATOR - 536)) | (1L << (UNTIL - 536)) | (1L << (VACUUM - 536)) | (1L << (VOLATILE - 536)) | (1L << (STORED - 536)) | (1L << (WRITE - 536)) | (1L << (STRICT - 536)) | (1L << (TYPES - 536)) | (1L << (WRAPPER - 536)) | (1L << (WORK - 536)) | (1L << (INT16 - 536)) | (1L << (INT1 - 536)) | (1L << (ELEM_CONTAINED_BY_RANGE - 536)) | (1L << (IDENTIFIER_ - 536)))) != 0)) {
					{
					setState(6225);
					anyName();
					}
				}

				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class FuncExprWindowlessContext extends ParserRuleContext {
		public FuncApplicationContext funcApplication() {
			return getRuleContext(FuncApplicationContext.class,0);
		}
		public FunctionExprCommonSubexprContext functionExprCommonSubexpr() {
			return getRuleContext(FunctionExprCommonSubexprContext.class,0);
		}
		public FuncExprWindowlessContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_funcExprWindowless; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitFuncExprWindowless(this);
			else return visitor.visitChildren(this);
		}
	}

	public final FuncExprWindowlessContext funcExprWindowless() throws RecognitionException {
		FuncExprWindowlessContext _localctx = new FuncExprWindowlessContext(_ctx, getState());
		enterRule(_localctx, 838, RULE_funcExprWindowless);
		try {
			setState(6232);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,532,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(6230);
				funcApplication();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(6231);
				functionExprCommonSubexpr();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class PartStrategyContext extends ParserRuleContext {
		public IdentifierContext identifier() {
			return getRuleContext(IdentifierContext.class,0);
		}
		public UnreservedWordContext unreservedWord() {
			return getRuleContext(UnreservedWordContext.class,0);
		}
		public PartStrategyContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_partStrategy; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitPartStrategy(this);
			else return visitor.visitChildren(this);
		}
	}

	public final PartStrategyContext partStrategy() throws RecognitionException {
		PartStrategyContext _localctx = new PartStrategyContext(_ctx, getState());
		enterRule(_localctx, 840, RULE_partStrategy);
		try {
			setState(6236);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,533,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(6234);
				identifier();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(6235);
				unreservedWord();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CreateIndexSpecificationContext extends ParserRuleContext {
		public TerminalNode UNIQUE() { return getToken(OpenGaussStatementParser.UNIQUE, 0); }
		public CreateIndexSpecificationContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_createIndexSpecification; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitCreateIndexSpecification(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CreateIndexSpecificationContext createIndexSpecification() throws RecognitionException {
		CreateIndexSpecificationContext _localctx = new CreateIndexSpecificationContext(_ctx, getState());
		enterRule(_localctx, 842, RULE_createIndexSpecification);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6239);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==UNIQUE) {
				{
				setState(6238);
				match(UNIQUE);
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ConcurrentlyClauseContext extends ParserRuleContext {
		public TerminalNode CONCURRENTLY() { return getToken(OpenGaussStatementParser.CONCURRENTLY, 0); }
		public ConcurrentlyClauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_concurrentlyClause; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitConcurrentlyClause(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ConcurrentlyClauseContext concurrentlyClause() throws RecognitionException {
		ConcurrentlyClauseContext _localctx = new ConcurrentlyClauseContext(_ctx, getState());
		enterRule(_localctx, 844, RULE_concurrentlyClause);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6242);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==CONCURRENTLY) {
				{
				setState(6241);
				match(CONCURRENTLY);
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class OnlyClauseContext extends ParserRuleContext {
		public TerminalNode ONLY() { return getToken(OpenGaussStatementParser.ONLY, 0); }
		public OnlyClauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_onlyClause; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitOnlyClause(this);
			else return visitor.visitChildren(this);
		}
	}

	public final OnlyClauseContext onlyClause() throws RecognitionException {
		OnlyClauseContext _localctx = new OnlyClauseContext(_ctx, getState());
		enterRule(_localctx, 846, RULE_onlyClause);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6245);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==ONLY) {
				{
				setState(6244);
				match(ONLY);
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class FileSizeLiteralContext extends ParserRuleContext {
		public TerminalNode FILESIZE_LITERAL() { return getToken(OpenGaussStatementParser.FILESIZE_LITERAL, 0); }
		public NumberLiteralsContext numberLiterals() {
			return getRuleContext(NumberLiteralsContext.class,0);
		}
		public FileSizeLiteralContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_fileSizeLiteral; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitFileSizeLiteral(this);
			else return visitor.visitChildren(this);
		}
	}

	public final FileSizeLiteralContext fileSizeLiteral() throws RecognitionException {
		FileSizeLiteralContext _localctx = new FileSizeLiteralContext(_ctx, getState());
		enterRule(_localctx, 848, RULE_fileSizeLiteral);
		try {
			setState(6249);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case FILESIZE_LITERAL:
				enterOuterAlt(_localctx, 1);
				{
				setState(6247);
				match(FILESIZE_LITERAL);
				}
				break;
			case MINUS_:
			case NUMBER_:
				enterOuterAlt(_localctx, 2);
				{
				setState(6248);
				numberLiterals();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AsteriskClauseContext extends ParserRuleContext {
		public TerminalNode ASTERISK_() { return getToken(OpenGaussStatementParser.ASTERISK_, 0); }
		public AsteriskClauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_asteriskClause; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitAsteriskClause(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AsteriskClauseContext asteriskClause() throws RecognitionException {
		AsteriskClauseContext _localctx = new AsteriskClauseContext(_ctx, getState());
		enterRule(_localctx, 850, RULE_asteriskClause);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6252);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==ASTERISK_) {
				{
				setState(6251);
				match(ASTERISK_);
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterDefinitionClauseContext extends ParserRuleContext {
		public AlterTableActionsContext alterTableActions() {
			return getRuleContext(AlterTableActionsContext.class,0);
		}
		public RenameColumnSpecificationContext renameColumnSpecification() {
			return getRuleContext(RenameColumnSpecificationContext.class,0);
		}
		public RenameConstraintContext renameConstraint() {
			return getRuleContext(RenameConstraintContext.class,0);
		}
		public RenameTableSpecificationContext renameTableSpecification() {
			return getRuleContext(RenameTableSpecificationContext.class,0);
		}
		public TerminalNode SET() { return getToken(OpenGaussStatementParser.SET, 0); }
		public TerminalNode SCHEMA() { return getToken(OpenGaussStatementParser.SCHEMA, 0); }
		public NameContext name() {
			return getRuleContext(NameContext.class,0);
		}
		public PartitionCmdContext partitionCmd() {
			return getRuleContext(PartitionCmdContext.class,0);
		}
		public AlterDefinitionClauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterDefinitionClause; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitAlterDefinitionClause(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AlterDefinitionClauseContext alterDefinitionClause() throws RecognitionException {
		AlterDefinitionClauseContext _localctx = new AlterDefinitionClauseContext(_ctx, getState());
		enterRule(_localctx, 852, RULE_alterDefinitionClause);
		try {
			setState(6262);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,539,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(6254);
				alterTableActions();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(6255);
				renameColumnSpecification();
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(6256);
				renameConstraint();
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(6257);
				renameTableSpecification();
				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(6258);
				match(SET);
				setState(6259);
				match(SCHEMA);
				setState(6260);
				name();
				}
				break;
			case 6:
				enterOuterAlt(_localctx, 6);
				{
				setState(6261);
				partitionCmd();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class PartitionCmdContext extends ParserRuleContext {
		public TerminalNode ATTACH() { return getToken(OpenGaussStatementParser.ATTACH, 0); }
		public TerminalNode PARTITION() { return getToken(OpenGaussStatementParser.PARTITION, 0); }
		public QualifiedNameContext qualifiedName() {
			return getRuleContext(QualifiedNameContext.class,0);
		}
		public PartitionBoundSpecContext partitionBoundSpec() {
			return getRuleContext(PartitionBoundSpecContext.class,0);
		}
		public TerminalNode DETACH() { return getToken(OpenGaussStatementParser.DETACH, 0); }
		public PartitionCmdContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_partitionCmd; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitPartitionCmd(this);
			else return visitor.visitChildren(this);
		}
	}

	public final PartitionCmdContext partitionCmd() throws RecognitionException {
		PartitionCmdContext _localctx = new PartitionCmdContext(_ctx, getState());
		enterRule(_localctx, 854, RULE_partitionCmd);
		try {
			setState(6272);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case ATTACH:
				enterOuterAlt(_localctx, 1);
				{
				setState(6264);
				match(ATTACH);
				setState(6265);
				match(PARTITION);
				setState(6266);
				qualifiedName();
				setState(6267);
				partitionBoundSpec();
				}
				break;
			case DETACH:
				enterOuterAlt(_localctx, 2);
				{
				setState(6269);
				match(DETACH);
				setState(6270);
				match(PARTITION);
				setState(6271);
				qualifiedName();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterIndexDefinitionClauseContext extends ParserRuleContext {
		public RenameIndexSpecificationContext renameIndexSpecification() {
			return getRuleContext(RenameIndexSpecificationContext.class,0);
		}
		public AlterIndexDependsOnExtensionContext alterIndexDependsOnExtension() {
			return getRuleContext(AlterIndexDependsOnExtensionContext.class,0);
		}
		public AlterIndexSetTableSpaceContext alterIndexSetTableSpace() {
			return getRuleContext(AlterIndexSetTableSpaceContext.class,0);
		}
		public AlterTableCmdsContext alterTableCmds() {
			return getRuleContext(AlterTableCmdsContext.class,0);
		}
		public IndexPartitionCmdContext indexPartitionCmd() {
			return getRuleContext(IndexPartitionCmdContext.class,0);
		}
		public AlterIndexDefinitionClauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterIndexDefinitionClause; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitAlterIndexDefinitionClause(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AlterIndexDefinitionClauseContext alterIndexDefinitionClause() throws RecognitionException {
		AlterIndexDefinitionClauseContext _localctx = new AlterIndexDefinitionClauseContext(_ctx, getState());
		enterRule(_localctx, 856, RULE_alterIndexDefinitionClause);
		try {
			setState(6279);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,541,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(6274);
				renameIndexSpecification();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(6275);
				alterIndexDependsOnExtension();
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(6276);
				alterIndexSetTableSpace();
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(6277);
				alterTableCmds();
				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(6278);
				indexPartitionCmd();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class IndexPartitionCmdContext extends ParserRuleContext {
		public TerminalNode ATTACH() { return getToken(OpenGaussStatementParser.ATTACH, 0); }
		public TerminalNode PARTITION() { return getToken(OpenGaussStatementParser.PARTITION, 0); }
		public QualifiedNameContext qualifiedName() {
			return getRuleContext(QualifiedNameContext.class,0);
		}
		public IndexPartitionCmdContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_indexPartitionCmd; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitIndexPartitionCmd(this);
			else return visitor.visitChildren(this);
		}
	}

	public final IndexPartitionCmdContext indexPartitionCmd() throws RecognitionException {
		IndexPartitionCmdContext _localctx = new IndexPartitionCmdContext(_ctx, getState());
		enterRule(_localctx, 858, RULE_indexPartitionCmd);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6281);
			match(ATTACH);
			setState(6282);
			match(PARTITION);
			setState(6283);
			qualifiedName();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class RenameIndexSpecificationContext extends ParserRuleContext {
		public TerminalNode RENAME() { return getToken(OpenGaussStatementParser.RENAME, 0); }
		public TerminalNode TO() { return getToken(OpenGaussStatementParser.TO, 0); }
		public IndexNameContext indexName() {
			return getRuleContext(IndexNameContext.class,0);
		}
		public RenameIndexSpecificationContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_renameIndexSpecification; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitRenameIndexSpecification(this);
			else return visitor.visitChildren(this);
		}
	}

	public final RenameIndexSpecificationContext renameIndexSpecification() throws RecognitionException {
		RenameIndexSpecificationContext _localctx = new RenameIndexSpecificationContext(_ctx, getState());
		enterRule(_localctx, 860, RULE_renameIndexSpecification);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6285);
			match(RENAME);
			setState(6286);
			match(TO);
			setState(6287);
			indexName();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterIndexDependsOnExtensionContext extends ParserRuleContext {
		public TerminalNode DEPENDS() { return getToken(OpenGaussStatementParser.DEPENDS, 0); }
		public TerminalNode ON() { return getToken(OpenGaussStatementParser.ON, 0); }
		public TerminalNode EXTENSION() { return getToken(OpenGaussStatementParser.EXTENSION, 0); }
		public IgnoredIdentifierContext ignoredIdentifier() {
			return getRuleContext(IgnoredIdentifierContext.class,0);
		}
		public AlterIndexDependsOnExtensionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterIndexDependsOnExtension; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitAlterIndexDependsOnExtension(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AlterIndexDependsOnExtensionContext alterIndexDependsOnExtension() throws RecognitionException {
		AlterIndexDependsOnExtensionContext _localctx = new AlterIndexDependsOnExtensionContext(_ctx, getState());
		enterRule(_localctx, 862, RULE_alterIndexDependsOnExtension);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6289);
			match(DEPENDS);
			setState(6290);
			match(ON);
			setState(6291);
			match(EXTENSION);
			setState(6292);
			ignoredIdentifier();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterIndexSetTableSpaceContext extends ParserRuleContext {
		public TerminalNode SET() { return getToken(OpenGaussStatementParser.SET, 0); }
		public TerminalNode TABLESPACE() { return getToken(OpenGaussStatementParser.TABLESPACE, 0); }
		public NameContext name() {
			return getRuleContext(NameContext.class,0);
		}
		public TerminalNode OWNED() { return getToken(OpenGaussStatementParser.OWNED, 0); }
		public TerminalNode BY() { return getToken(OpenGaussStatementParser.BY, 0); }
		public IgnoredIdentifiersContext ignoredIdentifiers() {
			return getRuleContext(IgnoredIdentifiersContext.class,0);
		}
		public TerminalNode NOWAIT() { return getToken(OpenGaussStatementParser.NOWAIT, 0); }
		public AlterIndexSetTableSpaceContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterIndexSetTableSpace; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitAlterIndexSetTableSpace(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AlterIndexSetTableSpaceContext alterIndexSetTableSpace() throws RecognitionException {
		AlterIndexSetTableSpaceContext _localctx = new AlterIndexSetTableSpaceContext(_ctx, getState());
		enterRule(_localctx, 864, RULE_alterIndexSetTableSpace);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6297);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==OWNED) {
				{
				setState(6294);
				match(OWNED);
				setState(6295);
				match(BY);
				setState(6296);
				ignoredIdentifiers();
				}
			}

			setState(6299);
			match(SET);
			setState(6300);
			match(TABLESPACE);
			setState(6301);
			name();
			setState(6303);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==NOWAIT) {
				{
				setState(6302);
				match(NOWAIT);
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class TableNamesClauseContext extends ParserRuleContext {
		public List tableNameClause() {
			return getRuleContexts(TableNameClauseContext.class);
		}
		public TableNameClauseContext tableNameClause(int i) {
			return getRuleContext(TableNameClauseContext.class,i);
		}
		public List COMMA_() { return getTokens(OpenGaussStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(OpenGaussStatementParser.COMMA_, i);
		}
		public TableNamesClauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_tableNamesClause; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitTableNamesClause(this);
			else return visitor.visitChildren(this);
		}
	}

	public final TableNamesClauseContext tableNamesClause() throws RecognitionException {
		TableNamesClauseContext _localctx = new TableNamesClauseContext(_ctx, getState());
		enterRule(_localctx, 866, RULE_tableNamesClause);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6305);
			tableNameClause();
			setState(6310);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA_) {
				{
				{
				setState(6306);
				match(COMMA_);
				setState(6307);
				tableNameClause();
				}
				}
				setState(6312);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class TableNameClauseContext extends ParserRuleContext {
		public TableNameContext tableName() {
			return getRuleContext(TableNameContext.class,0);
		}
		public TerminalNode ASTERISK_() { return getToken(OpenGaussStatementParser.ASTERISK_, 0); }
		public TableNameClauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_tableNameClause; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitTableNameClause(this);
			else return visitor.visitChildren(this);
		}
	}

	public final TableNameClauseContext tableNameClause() throws RecognitionException {
		TableNameClauseContext _localctx = new TableNameClauseContext(_ctx, getState());
		enterRule(_localctx, 868, RULE_tableNameClause);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6313);
			tableName();
			setState(6315);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==ASTERISK_) {
				{
				setState(6314);
				match(ASTERISK_);
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterTableActionsContext extends ParserRuleContext {
		public List alterTableAction() {
			return getRuleContexts(AlterTableActionContext.class);
		}
		public AlterTableActionContext alterTableAction(int i) {
			return getRuleContext(AlterTableActionContext.class,i);
		}
		public List COMMA_() { return getTokens(OpenGaussStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(OpenGaussStatementParser.COMMA_, i);
		}
		public AlterTableActionsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterTableActions; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitAlterTableActions(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AlterTableActionsContext alterTableActions() throws RecognitionException {
		AlterTableActionsContext _localctx = new AlterTableActionsContext(_ctx, getState());
		enterRule(_localctx, 870, RULE_alterTableActions);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6317);
			alterTableAction();
			setState(6322);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA_) {
				{
				{
				setState(6318);
				match(COMMA_);
				setState(6319);
				alterTableAction();
				}
				}
				setState(6324);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterTableActionContext extends ParserRuleContext {
		public AddColumnSpecificationContext addColumnSpecification() {
			return getRuleContext(AddColumnSpecificationContext.class,0);
		}
		public DropColumnSpecificationContext dropColumnSpecification() {
			return getRuleContext(DropColumnSpecificationContext.class,0);
		}
		public ModifyColumnSpecificationContext modifyColumnSpecification() {
			return getRuleContext(ModifyColumnSpecificationContext.class,0);
		}
		public AddConstraintSpecificationContext addConstraintSpecification() {
			return getRuleContext(AddConstraintSpecificationContext.class,0);
		}
		public ModifyConstraintSpecificationContext modifyConstraintSpecification() {
			return getRuleContext(ModifyConstraintSpecificationContext.class,0);
		}
		public ValidateConstraintSpecificationContext validateConstraintSpecification() {
			return getRuleContext(ValidateConstraintSpecificationContext.class,0);
		}
		public DropConstraintSpecificationContext dropConstraintSpecification() {
			return getRuleContext(DropConstraintSpecificationContext.class,0);
		}
		public TerminalNode TRIGGER() { return getToken(OpenGaussStatementParser.TRIGGER, 0); }
		public TerminalNode DISABLE() { return getToken(OpenGaussStatementParser.DISABLE, 0); }
		public TerminalNode ENABLE() { return getToken(OpenGaussStatementParser.ENABLE, 0); }
		public IgnoredIdentifierContext ignoredIdentifier() {
			return getRuleContext(IgnoredIdentifierContext.class,0);
		}
		public TerminalNode ALL() { return getToken(OpenGaussStatementParser.ALL, 0); }
		public TerminalNode USER() { return getToken(OpenGaussStatementParser.USER, 0); }
		public TerminalNode REPLICA() { return getToken(OpenGaussStatementParser.REPLICA, 0); }
		public TerminalNode ALWAYS() { return getToken(OpenGaussStatementParser.ALWAYS, 0); }
		public TerminalNode RULE() { return getToken(OpenGaussStatementParser.RULE, 0); }
		public TerminalNode ROW() { return getToken(OpenGaussStatementParser.ROW, 0); }
		public TerminalNode LEVEL() { return getToken(OpenGaussStatementParser.LEVEL, 0); }
		public TerminalNode SECURITY() { return getToken(OpenGaussStatementParser.SECURITY, 0); }
		public TerminalNode FORCE() { return getToken(OpenGaussStatementParser.FORCE, 0); }
		public TerminalNode NO() { return getToken(OpenGaussStatementParser.NO, 0); }
		public TerminalNode CLUSTER() { return getToken(OpenGaussStatementParser.CLUSTER, 0); }
		public TerminalNode ON() { return getToken(OpenGaussStatementParser.ON, 0); }
		public IndexNameContext indexName() {
			return getRuleContext(IndexNameContext.class,0);
		}
		public TerminalNode SET() { return getToken(OpenGaussStatementParser.SET, 0); }
		public TerminalNode WITHOUT() { return getToken(OpenGaussStatementParser.WITHOUT, 0); }
		public TerminalNode OIDS() { return getToken(OpenGaussStatementParser.OIDS, 0); }
		public TerminalNode WITH() { return getToken(OpenGaussStatementParser.WITH, 0); }
		public TerminalNode TABLESPACE() { return getToken(OpenGaussStatementParser.TABLESPACE, 0); }
		public TerminalNode LOGGED() { return getToken(OpenGaussStatementParser.LOGGED, 0); }
		public TerminalNode UNLOGGED() { return getToken(OpenGaussStatementParser.UNLOGGED, 0); }
		public TerminalNode LP_() { return getToken(OpenGaussStatementParser.LP_, 0); }
		public List storageParameterWithValue() {
			return getRuleContexts(StorageParameterWithValueContext.class);
		}
		public StorageParameterWithValueContext storageParameterWithValue(int i) {
			return getRuleContext(StorageParameterWithValueContext.class,i);
		}
		public TerminalNode RP_() { return getToken(OpenGaussStatementParser.RP_, 0); }
		public List COMMA_() { return getTokens(OpenGaussStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(OpenGaussStatementParser.COMMA_, i);
		}
		public TerminalNode RESET() { return getToken(OpenGaussStatementParser.RESET, 0); }
		public List storageParameter() {
			return getRuleContexts(StorageParameterContext.class);
		}
		public StorageParameterContext storageParameter(int i) {
			return getRuleContext(StorageParameterContext.class,i);
		}
		public TerminalNode INHERIT() { return getToken(OpenGaussStatementParser.INHERIT, 0); }
		public TableNameContext tableName() {
			return getRuleContext(TableNameContext.class,0);
		}
		public TerminalNode OF() { return getToken(OpenGaussStatementParser.OF, 0); }
		public DataTypeNameContext dataTypeName() {
			return getRuleContext(DataTypeNameContext.class,0);
		}
		public TerminalNode NOT() { return getToken(OpenGaussStatementParser.NOT, 0); }
		public TerminalNode OWNER() { return getToken(OpenGaussStatementParser.OWNER, 0); }
		public TerminalNode TO() { return getToken(OpenGaussStatementParser.TO, 0); }
		public TerminalNode CURRENT_USER() { return getToken(OpenGaussStatementParser.CURRENT_USER, 0); }
		public TerminalNode SESSION_USER() { return getToken(OpenGaussStatementParser.SESSION_USER, 0); }
		public TerminalNode IDENTITY() { return getToken(OpenGaussStatementParser.IDENTITY, 0); }
		public TerminalNode DEFAULT() { return getToken(OpenGaussStatementParser.DEFAULT, 0); }
		public TerminalNode FULL() { return getToken(OpenGaussStatementParser.FULL, 0); }
		public TerminalNode NOTHING() { return getToken(OpenGaussStatementParser.NOTHING, 0); }
		public TerminalNode USING() { return getToken(OpenGaussStatementParser.USING, 0); }
		public TerminalNode INDEX() { return getToken(OpenGaussStatementParser.INDEX, 0); }
		public AlterTableActionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterTableAction; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitAlterTableAction(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AlterTableActionContext alterTableAction() throws RecognitionException {
		AlterTableActionContext _localctx = new AlterTableActionContext(_ctx, getState());
		enterRule(_localctx, 872, RULE_alterTableAction);
		int _la;
		try {
			setState(6425);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,554,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(6325);
				addColumnSpecification();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(6326);
				dropColumnSpecification();
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(6327);
				modifyColumnSpecification();
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(6328);
				addConstraintSpecification();
				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(6329);
				modifyConstraintSpecification();
				}
				break;
			case 6:
				enterOuterAlt(_localctx, 6);
				{
				setState(6330);
				validateConstraintSpecification();
				}
				break;
			case 7:
				enterOuterAlt(_localctx, 7);
				{
				setState(6331);
				dropConstraintSpecification();
				}
				break;
			case 8:
				enterOuterAlt(_localctx, 8);
				{
				setState(6332);
				_la = _input.LA(1);
				if ( !(_la==ENABLE || _la==DISABLE) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(6333);
				match(TRIGGER);
				setState(6337);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case UNICODE_ESCAPE:
				case INSERT:
				case UPDATE:
				case DELETE:
				case ALTER:
				case DROP:
				case TRUNCATE:
				case SCHEMA:
				case REVOKE:
				case ADD:
				case SET:
				case INDEX:
				case KEY:
				case POSITION:
				case FUNCTION:
				case TRIGGER:
				case PROCEDURE:
				case VIEW:
				case IF:
				case BY:
				case BEGIN:
				case COMMIT:
				case ROLLBACK:
				case SAVEPOINT:
				case DOUBLE:
				case INTERVAL:
				case TIME:
				case TIMESTAMP:
				case YEAR:
				case MONTH:
				case DAY:
				case HOUR:
				case MINUTE:
				case SECOND:
				case CURRENT:
				case ENABLE:
				case DISABLE:
				case CALL:
				case PRESERVE:
				case DEFINER:
				case SQL:
				case CASCADED:
				case LOCAL:
				case CLOSE:
				case NEXT:
				case NAME:
				case NAMES:
				case TYPE:
				case TEXT:
				case REPEATABLE:
				case VARYING:
				case NATIONAL:
				case VALUE:
				case TIES:
				case CUBE:
				case SETS:
				case OTHERS:
				case AT:
				case MAXVALUE:
				case ADMIN:
				case ESCAPE:
				case EXCLUDE:
				case MOD:
				case PARTITION:
				case UNKNOWN:
				case ALWAYS:
				case CASCADE:
				case GENERATED:
				case ISOLATION:
				case LEVEL:
				case NO:
				case OPTION:
				case PRIVILEGES:
				case READ:
				case ROLE:
				case ROWS:
				case START:
				case TRANSACTION:
				case ACTION:
				case CACHE:
				case CHARACTERISTICS:
				case CLUSTER:
				case COMMENTS:
				case CONSTRAINTS:
				case CYCLE:
				case DATA:
				case DATABASE:
				case DEFAULTS:
				case DEFERRED:
				case DEPENDS:
				case DOMAIN:
				case EXCLUDING:
				case EXECUTE:
				case EXTENDED:
				case EXTENSION:
				case EXTERNAL:
				case FILTER:
				case FIRST:
				case FOLLOWING:
				case FORCE:
				case GLOBAL:
				case IDENTITY:
				case IMMEDIATE:
				case INCLUDING:
				case INCREMENT:
				case INDEXES:
				case INHERIT:
				case INHERITS:
				case INCLUDE:
				case LANGUAGE:
				case LARGE:
				case LAST:
				case LOGGED:
				case MAIN:
				case MATCH:
				case MINVALUE:
				case NOTHING:
				case NULLS:
				case OBJECT:
				case OIDS:
				case OVER:
				case OWNED:
				case OWNER:
				case PARTIAL:
				case PLAIN:
				case PRECEDING:
				case RANGE:
				case RENAME:
				case REPLICA:
				case RESET:
				case RESTART:
				case RESTRICT:
				case ROUTINE:
				case RULE:
				case SECURITY:
				case SEQUENCE:
				case SESSION:
				case SHOW:
				case SIMPLE:
				case STATISTICS:
				case STORAGE:
				case TABLESPACE:
				case TEMP:
				case TEMPORARY:
				case UNBOUNDED:
				case UNLOGGED:
				case VALID:
				case VALIDATE:
				case WITHIN:
				case WITHOUT:
				case ZONE:
				case OF:
				case UESCAPE:
				case GROUPS:
				case RECURSIVE:
				case INT2:
				case INT4:
				case FLOAT4:
				case BYTEA:
				case ENUM:
				case POINT:
				case LSEG:
				case BOX:
				case PATH:
				case POLYGON:
				case CIRCLE:
				case INET:
				case TSQUERY:
				case XML:
				case JSON:
				case INT4RANGE:
				case INT8RANGE:
				case NUMRANGE:
				case DATERANGE:
				case ORDINALITY:
				case NFC:
				case NFD:
				case NFKC:
				case NFKD:
				case REF:
				case PASSING:
				case VERSION:
				case YES:
				case STANDALONE:
				case MATERIALIZED:
				case OPERATOR:
				case SHARE:
				case ROLLUP:
				case DOCUMENT:
				case NORMALIZED:
				case NOWAIT:
				case LOCKED:
				case COLUMNS:
				case CONTENT:
				case STRIP:
				case WHITESPACE:
				case CONFLICT:
				case OVERRIDING:
				case SYSTEM:
				case ABORT:
				case ABSOLUTE:
				case ACCESS:
				case AFTER:
				case AGGREGATE:
				case ALSO:
				case ATTACH:
				case ATTRIBUTE:
				case BACKWARD:
				case BEFORE:
				case ASSERTION:
				case ASSIGNMENT:
				case CONTINUE:
				case CONVERSION:
				case COPY:
				case COST:
				case CSV:
				case CALLED:
				case CATALOG:
				case CHAIN:
				case CHECKPOINT:
				case CLASS:
				case CONFIGURATION:
				case COMMENT:
				case DETACH:
				case DICTIONARY:
				case EXPRESSION:
				case INSENSITIVE:
				case DISCARD:
				case OFF:
				case INSTEAD:
				case EXPLAIN:
				case INPUT:
				case INLINE:
				case PARALLEL:
				case LEAKPROOF:
				case COMMITTED:
				case ENCODING:
				case IMPLICIT:
				case DELIMITER:
				case CURSOR:
				case EACH:
				case EVENT:
				case DEALLOCATE:
				case CONNECTION:
				case DECLARE:
				case FAMILY:
				case FORWARD:
				case EXCLUSIVE:
				case FUNCTIONS:
				case LOCATION:
				case LABEL:
				case DELIMITERS:
				case HANDLER:
				case HEADER:
				case IMMUTABLE:
				case GRANTED:
				case HOLD:
				case MAPPING:
				case OLD:
				case METHOD:
				case LOAD:
				case LISTEN:
				case MODE:
				case MOVE:
				case PROCEDURAL:
				case PARSER:
				case PROCEDURES:
				case ENCRYPTED:
				case PUBLICATION:
				case PROGRAM:
				case REFERENCING:
				case PLANS:
				case REINDEX:
				case PRIOR:
				case PASSWORD:
				case RELATIVE:
				case QUOTE:
				case ROUTINES:
				case REPLACE:
				case SNAPSHOT:
				case REFRESH:
				case PREPARE:
				case OPTIONS:
				case IMPORT:
				case INVOKER:
				case NEW:
				case PREPARED:
				case SCROLL:
				case SEQUENCES:
				case SYSID:
				case REASSIGN:
				case SERVER:
				case SUBSCRIPTION:
				case SEARCH:
				case SCHEMAS:
				case RECHECK:
				case POLICY:
				case NOTIFY:
				case LOCK:
				case RELEASE:
				case SERIALIZABLE:
				case RETURNS:
				case STATEMENT:
				case STDIN:
				case STDOUT:
				case TABLES:
				case SUPPORT:
				case STABLE:
				case TEMPLATE:
				case UNENCRYPTED:
				case VIEWS:
				case UNCOMMITTED:
				case TRANSFORM:
				case UNLISTEN:
				case TRUSTED:
				case VALIDATOR:
				case UNTIL:
				case VACUUM:
				case VOLATILE:
				case STORED:
				case WRITE:
				case STRICT:
				case TYPES:
				case WRAPPER:
				case WORK:
				case INT16:
				case INT1:
				case ELEM_CONTAINED_BY_RANGE:
				case IDENTIFIER_:
					{
					setState(6334);
					ignoredIdentifier();
					}
					break;
				case ALL:
					{
					setState(6335);
					match(ALL);
					}
					break;
				case USER:
					{
					setState(6336);
					match(USER);
					}
					break;
				case EOF:
				case COMMA_:
				case SEMI_:
					break;
				default:
					break;
				}
				}
				break;
			case 9:
				enterOuterAlt(_localctx, 9);
				{
				setState(6339);
				match(ENABLE);
				setState(6340);
				_la = _input.LA(1);
				if ( !(_la==ALWAYS || _la==REPLICA) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(6341);
				match(TRIGGER);
				setState(6342);
				ignoredIdentifier();
				}
				break;
			case 10:
				enterOuterAlt(_localctx, 10);
				{
				setState(6343);
				_la = _input.LA(1);
				if ( !(_la==ENABLE || _la==DISABLE) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(6344);
				match(RULE);
				setState(6345);
				ignoredIdentifier();
				}
				break;
			case 11:
				enterOuterAlt(_localctx, 11);
				{
				setState(6346);
				match(ENABLE);
				setState(6347);
				_la = _input.LA(1);
				if ( !(_la==ALWAYS || _la==REPLICA) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(6348);
				match(RULE);
				setState(6349);
				ignoredIdentifier();
				}
				break;
			case 12:
				enterOuterAlt(_localctx, 12);
				{
				setState(6356);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case DISABLE:
					{
					setState(6350);
					match(DISABLE);
					}
					break;
				case ENABLE:
					{
					setState(6351);
					match(ENABLE);
					}
					break;
				case NO:
				case FORCE:
					{
					{
					setState(6353);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==NO) {
						{
						setState(6352);
						match(NO);
						}
					}

					setState(6355);
					match(FORCE);
					}
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				setState(6358);
				match(ROW);
				setState(6359);
				match(LEVEL);
				setState(6360);
				match(SECURITY);
				}
				break;
			case 13:
				enterOuterAlt(_localctx, 13);
				{
				setState(6361);
				match(CLUSTER);
				setState(6362);
				match(ON);
				setState(6363);
				indexName();
				}
				break;
			case 14:
				enterOuterAlt(_localctx, 14);
				{
				setState(6364);
				match(SET);
				setState(6365);
				match(WITHOUT);
				setState(6366);
				match(CLUSTER);
				}
				break;
			case 15:
				enterOuterAlt(_localctx, 15);
				{
				setState(6367);
				match(SET);
				setState(6368);
				_la = _input.LA(1);
				if ( !(_la==WITH || _la==WITHOUT) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(6369);
				match(OIDS);
				}
				break;
			case 16:
				enterOuterAlt(_localctx, 16);
				{
				setState(6370);
				match(SET);
				setState(6371);
				match(TABLESPACE);
				setState(6372);
				ignoredIdentifier();
				}
				break;
			case 17:
				enterOuterAlt(_localctx, 17);
				{
				setState(6373);
				match(SET);
				setState(6374);
				_la = _input.LA(1);
				if ( !(_la==LOGGED || _la==UNLOGGED) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
				break;
			case 18:
				enterOuterAlt(_localctx, 18);
				{
				setState(6375);
				match(SET);
				setState(6376);
				match(LP_);
				setState(6377);
				storageParameterWithValue();
				setState(6382);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA_) {
					{
					{
					setState(6378);
					match(COMMA_);
					setState(6379);
					storageParameterWithValue();
					}
					}
					setState(6384);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				setState(6385);
				match(RP_);
				}
				break;
			case 19:
				enterOuterAlt(_localctx, 19);
				{
				setState(6387);
				match(RESET);
				setState(6388);
				match(LP_);
				setState(6389);
				storageParameter();
				setState(6394);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA_) {
					{
					{
					setState(6390);
					match(COMMA_);
					setState(6391);
					storageParameter();
					}
					}
					setState(6396);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				setState(6397);
				match(RP_);
				}
				break;
			case 20:
				enterOuterAlt(_localctx, 20);
				{
				setState(6399);
				match(INHERIT);
				setState(6400);
				tableName();
				}
				break;
			case 21:
				enterOuterAlt(_localctx, 21);
				{
				setState(6401);
				match(NO);
				setState(6402);
				match(INHERIT);
				setState(6403);
				tableName();
				}
				break;
			case 22:
				enterOuterAlt(_localctx, 22);
				{
				setState(6404);
				match(OF);
				setState(6405);
				dataTypeName();
				}
				break;
			case 23:
				enterOuterAlt(_localctx, 23);
				{
				setState(6406);
				match(NOT);
				setState(6407);
				match(OF);
				}
				break;
			case 24:
				enterOuterAlt(_localctx, 24);
				{
				setState(6408);
				match(OWNER);
				setState(6409);
				match(TO);
				setState(6413);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case UNICODE_ESCAPE:
				case INSERT:
				case UPDATE:
				case DELETE:
				case ALTER:
				case DROP:
				case TRUNCATE:
				case SCHEMA:
				case REVOKE:
				case ADD:
				case SET:
				case INDEX:
				case KEY:
				case POSITION:
				case FUNCTION:
				case TRIGGER:
				case PROCEDURE:
				case VIEW:
				case IF:
				case BY:
				case BEGIN:
				case COMMIT:
				case ROLLBACK:
				case SAVEPOINT:
				case DOUBLE:
				case INTERVAL:
				case TIME:
				case TIMESTAMP:
				case YEAR:
				case MONTH:
				case DAY:
				case HOUR:
				case MINUTE:
				case SECOND:
				case CURRENT:
				case ENABLE:
				case DISABLE:
				case CALL:
				case PRESERVE:
				case DEFINER:
				case SQL:
				case CASCADED:
				case LOCAL:
				case CLOSE:
				case NEXT:
				case NAME:
				case NAMES:
				case TYPE:
				case TEXT:
				case REPEATABLE:
				case VARYING:
				case NATIONAL:
				case VALUE:
				case TIES:
				case CUBE:
				case SETS:
				case OTHERS:
				case AT:
				case MAXVALUE:
				case ADMIN:
				case ESCAPE:
				case EXCLUDE:
				case MOD:
				case PARTITION:
				case UNKNOWN:
				case ALWAYS:
				case CASCADE:
				case GENERATED:
				case ISOLATION:
				case LEVEL:
				case NO:
				case OPTION:
				case PRIVILEGES:
				case READ:
				case ROLE:
				case ROWS:
				case START:
				case TRANSACTION:
				case ACTION:
				case CACHE:
				case CHARACTERISTICS:
				case CLUSTER:
				case COMMENTS:
				case CONSTRAINTS:
				case CYCLE:
				case DATA:
				case DATABASE:
				case DEFAULTS:
				case DEFERRED:
				case DEPENDS:
				case DOMAIN:
				case EXCLUDING:
				case EXECUTE:
				case EXTENDED:
				case EXTENSION:
				case EXTERNAL:
				case FILTER:
				case FIRST:
				case FOLLOWING:
				case FORCE:
				case GLOBAL:
				case IDENTITY:
				case IMMEDIATE:
				case INCLUDING:
				case INCREMENT:
				case INDEXES:
				case INHERIT:
				case INHERITS:
				case INCLUDE:
				case LANGUAGE:
				case LARGE:
				case LAST:
				case LOGGED:
				case MAIN:
				case MATCH:
				case MINVALUE:
				case NOTHING:
				case NULLS:
				case OBJECT:
				case OIDS:
				case OVER:
				case OWNED:
				case OWNER:
				case PARTIAL:
				case PLAIN:
				case PRECEDING:
				case RANGE:
				case RENAME:
				case REPLICA:
				case RESET:
				case RESTART:
				case RESTRICT:
				case ROUTINE:
				case RULE:
				case SECURITY:
				case SEQUENCE:
				case SESSION:
				case SHOW:
				case SIMPLE:
				case STATISTICS:
				case STORAGE:
				case TABLESPACE:
				case TEMP:
				case TEMPORARY:
				case UNBOUNDED:
				case UNLOGGED:
				case VALID:
				case VALIDATE:
				case WITHIN:
				case WITHOUT:
				case ZONE:
				case OF:
				case UESCAPE:
				case GROUPS:
				case RECURSIVE:
				case INT2:
				case INT4:
				case FLOAT4:
				case BYTEA:
				case ENUM:
				case POINT:
				case LSEG:
				case BOX:
				case PATH:
				case POLYGON:
				case CIRCLE:
				case INET:
				case TSQUERY:
				case XML:
				case JSON:
				case INT4RANGE:
				case INT8RANGE:
				case NUMRANGE:
				case DATERANGE:
				case ORDINALITY:
				case NFC:
				case NFD:
				case NFKC:
				case NFKD:
				case REF:
				case PASSING:
				case VERSION:
				case YES:
				case STANDALONE:
				case MATERIALIZED:
				case OPERATOR:
				case SHARE:
				case ROLLUP:
				case DOCUMENT:
				case NORMALIZED:
				case NOWAIT:
				case LOCKED:
				case COLUMNS:
				case CONTENT:
				case STRIP:
				case WHITESPACE:
				case CONFLICT:
				case OVERRIDING:
				case SYSTEM:
				case ABORT:
				case ABSOLUTE:
				case ACCESS:
				case AFTER:
				case AGGREGATE:
				case ALSO:
				case ATTACH:
				case ATTRIBUTE:
				case BACKWARD:
				case BEFORE:
				case ASSERTION:
				case ASSIGNMENT:
				case CONTINUE:
				case CONVERSION:
				case COPY:
				case COST:
				case CSV:
				case CALLED:
				case CATALOG:
				case CHAIN:
				case CHECKPOINT:
				case CLASS:
				case CONFIGURATION:
				case COMMENT:
				case DETACH:
				case DICTIONARY:
				case EXPRESSION:
				case INSENSITIVE:
				case DISCARD:
				case OFF:
				case INSTEAD:
				case EXPLAIN:
				case INPUT:
				case INLINE:
				case PARALLEL:
				case LEAKPROOF:
				case COMMITTED:
				case ENCODING:
				case IMPLICIT:
				case DELIMITER:
				case CURSOR:
				case EACH:
				case EVENT:
				case DEALLOCATE:
				case CONNECTION:
				case DECLARE:
				case FAMILY:
				case FORWARD:
				case EXCLUSIVE:
				case FUNCTIONS:
				case LOCATION:
				case LABEL:
				case DELIMITERS:
				case HANDLER:
				case HEADER:
				case IMMUTABLE:
				case GRANTED:
				case HOLD:
				case MAPPING:
				case OLD:
				case METHOD:
				case LOAD:
				case LISTEN:
				case MODE:
				case MOVE:
				case PROCEDURAL:
				case PARSER:
				case PROCEDURES:
				case ENCRYPTED:
				case PUBLICATION:
				case PROGRAM:
				case REFERENCING:
				case PLANS:
				case REINDEX:
				case PRIOR:
				case PASSWORD:
				case RELATIVE:
				case QUOTE:
				case ROUTINES:
				case REPLACE:
				case SNAPSHOT:
				case REFRESH:
				case PREPARE:
				case OPTIONS:
				case IMPORT:
				case INVOKER:
				case NEW:
				case PREPARED:
				case SCROLL:
				case SEQUENCES:
				case SYSID:
				case REASSIGN:
				case SERVER:
				case SUBSCRIPTION:
				case SEARCH:
				case SCHEMAS:
				case RECHECK:
				case POLICY:
				case NOTIFY:
				case LOCK:
				case RELEASE:
				case SERIALIZABLE:
				case RETURNS:
				case STATEMENT:
				case STDIN:
				case STDOUT:
				case TABLES:
				case SUPPORT:
				case STABLE:
				case TEMPLATE:
				case UNENCRYPTED:
				case VIEWS:
				case UNCOMMITTED:
				case TRANSFORM:
				case UNLISTEN:
				case TRUSTED:
				case VALIDATOR:
				case UNTIL:
				case VACUUM:
				case VOLATILE:
				case STORED:
				case WRITE:
				case STRICT:
				case TYPES:
				case WRAPPER:
				case WORK:
				case INT16:
				case INT1:
				case ELEM_CONTAINED_BY_RANGE:
				case IDENTIFIER_:
					{
					setState(6410);
					ignoredIdentifier();
					}
					break;
				case CURRENT_USER:
					{
					setState(6411);
					match(CURRENT_USER);
					}
					break;
				case SESSION_USER:
					{
					setState(6412);
					match(SESSION_USER);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;
			case 25:
				enterOuterAlt(_localctx, 25);
				{
				setState(6415);
				match(REPLICA);
				setState(6416);
				match(IDENTITY);
				setState(6423);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case DEFAULT:
					{
					setState(6417);
					match(DEFAULT);
					}
					break;
				case USING:
					{
					{
					setState(6418);
					match(USING);
					setState(6419);
					match(INDEX);
					setState(6420);
					indexName();
					}
					}
					break;
				case FULL:
					{
					setState(6421);
					match(FULL);
					}
					break;
				case NOTHING:
					{
					setState(6422);
					match(NOTHING);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AddColumnSpecificationContext extends ParserRuleContext {
		public TerminalNode ADD() { return getToken(OpenGaussStatementParser.ADD, 0); }
		public ColumnDefinitionContext columnDefinition() {
			return getRuleContext(ColumnDefinitionContext.class,0);
		}
		public TerminalNode COLUMN() { return getToken(OpenGaussStatementParser.COLUMN, 0); }
		public IfNotExistsContext ifNotExists() {
			return getRuleContext(IfNotExistsContext.class,0);
		}
		public AddColumnSpecificationContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_addColumnSpecification; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitAddColumnSpecification(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AddColumnSpecificationContext addColumnSpecification() throws RecognitionException {
		AddColumnSpecificationContext _localctx = new AddColumnSpecificationContext(_ctx, getState());
		enterRule(_localctx, 874, RULE_addColumnSpecification);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6427);
			match(ADD);
			setState(6429);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==COLUMN) {
				{
				setState(6428);
				match(COLUMN);
				}
			}

			setState(6432);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,556,_ctx) ) {
			case 1:
				{
				setState(6431);
				ifNotExists();
				}
				break;
			}
			setState(6434);
			columnDefinition();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DropColumnSpecificationContext extends ParserRuleContext {
		public TerminalNode DROP() { return getToken(OpenGaussStatementParser.DROP, 0); }
		public ColumnNameContext columnName() {
			return getRuleContext(ColumnNameContext.class,0);
		}
		public TerminalNode COLUMN() { return getToken(OpenGaussStatementParser.COLUMN, 0); }
		public IfExistsContext ifExists() {
			return getRuleContext(IfExistsContext.class,0);
		}
		public TerminalNode RESTRICT() { return getToken(OpenGaussStatementParser.RESTRICT, 0); }
		public TerminalNode CASCADE() { return getToken(OpenGaussStatementParser.CASCADE, 0); }
		public DropColumnSpecificationContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_dropColumnSpecification; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitDropColumnSpecification(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DropColumnSpecificationContext dropColumnSpecification() throws RecognitionException {
		DropColumnSpecificationContext _localctx = new DropColumnSpecificationContext(_ctx, getState());
		enterRule(_localctx, 876, RULE_dropColumnSpecification);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6436);
			match(DROP);
			setState(6438);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==COLUMN) {
				{
				setState(6437);
				match(COLUMN);
				}
			}

			setState(6441);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,558,_ctx) ) {
			case 1:
				{
				setState(6440);
				ifExists();
				}
				break;
			}
			setState(6443);
			columnName();
			setState(6445);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==CASCADE || _la==RESTRICT) {
				{
				setState(6444);
				_la = _input.LA(1);
				if ( !(_la==CASCADE || _la==RESTRICT) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ModifyColumnSpecificationContext extends ParserRuleContext {
		public ModifyColumnContext modifyColumn() {
			return getRuleContext(ModifyColumnContext.class,0);
		}
		public TerminalNode TYPE() { return getToken(OpenGaussStatementParser.TYPE, 0); }
		public DataTypeContext dataType() {
			return getRuleContext(DataTypeContext.class,0);
		}
		public TerminalNode SET() { return getToken(OpenGaussStatementParser.SET, 0); }
		public TerminalNode DATA() { return getToken(OpenGaussStatementParser.DATA, 0); }
		public CollateClauseContext collateClause() {
			return getRuleContext(CollateClauseContext.class,0);
		}
		public TerminalNode USING() { return getToken(OpenGaussStatementParser.USING, 0); }
		public AExprContext aExpr() {
			return getRuleContext(AExprContext.class,0);
		}
		public TerminalNode DEFAULT() { return getToken(OpenGaussStatementParser.DEFAULT, 0); }
		public TerminalNode DROP() { return getToken(OpenGaussStatementParser.DROP, 0); }
		public TerminalNode NOT() { return getToken(OpenGaussStatementParser.NOT, 0); }
		public TerminalNode NULL() { return getToken(OpenGaussStatementParser.NULL, 0); }
		public TerminalNode ADD() { return getToken(OpenGaussStatementParser.ADD, 0); }
		public TerminalNode GENERATED() { return getToken(OpenGaussStatementParser.GENERATED, 0); }
		public TerminalNode AS() { return getToken(OpenGaussStatementParser.AS, 0); }
		public TerminalNode IDENTITY() { return getToken(OpenGaussStatementParser.IDENTITY, 0); }
		public TerminalNode ALWAYS() { return getToken(OpenGaussStatementParser.ALWAYS, 0); }
		public TerminalNode LP_() { return getToken(OpenGaussStatementParser.LP_, 0); }
		public SequenceOptionsContext sequenceOptions() {
			return getRuleContext(SequenceOptionsContext.class,0);
		}
		public TerminalNode RP_() { return getToken(OpenGaussStatementParser.RP_, 0); }
		public TerminalNode BY() { return getToken(OpenGaussStatementParser.BY, 0); }
		public List alterColumnSetOption() {
			return getRuleContexts(AlterColumnSetOptionContext.class);
		}
		public AlterColumnSetOptionContext alterColumnSetOption(int i) {
			return getRuleContext(AlterColumnSetOptionContext.class,i);
		}
		public IfExistsContext ifExists() {
			return getRuleContext(IfExistsContext.class,0);
		}
		public TerminalNode STATISTICS() { return getToken(OpenGaussStatementParser.STATISTICS, 0); }
		public TerminalNode NUMBER_() { return getToken(OpenGaussStatementParser.NUMBER_, 0); }
		public AttributeOptionsContext attributeOptions() {
			return getRuleContext(AttributeOptionsContext.class,0);
		}
		public TerminalNode RESET() { return getToken(OpenGaussStatementParser.RESET, 0); }
		public TerminalNode STORAGE() { return getToken(OpenGaussStatementParser.STORAGE, 0); }
		public TerminalNode PLAIN() { return getToken(OpenGaussStatementParser.PLAIN, 0); }
		public TerminalNode EXTERNAL() { return getToken(OpenGaussStatementParser.EXTERNAL, 0); }
		public TerminalNode EXTENDED() { return getToken(OpenGaussStatementParser.EXTENDED, 0); }
		public TerminalNode MAIN() { return getToken(OpenGaussStatementParser.MAIN, 0); }
		public ModifyColumnSpecificationContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_modifyColumnSpecification; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitModifyColumnSpecification(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ModifyColumnSpecificationContext modifyColumnSpecification() throws RecognitionException {
		ModifyColumnSpecificationContext _localctx = new ModifyColumnSpecificationContext(_ctx, getState());
		enterRule(_localctx, 878, RULE_modifyColumnSpecification);
		int _la;
		try {
			setState(6527);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,567,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(6447);
				modifyColumn();
				setState(6450);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==SET) {
					{
					setState(6448);
					match(SET);
					setState(6449);
					match(DATA);
					}
				}

				setState(6452);
				match(TYPE);
				setState(6453);
				dataType();
				setState(6455);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==COLLATE) {
					{
					setState(6454);
					collateClause();
					}
				}

				setState(6459);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==USING) {
					{
					setState(6457);
					match(USING);
					setState(6458);
					aExpr(0);
					}
				}

				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(6461);
				modifyColumn();
				setState(6462);
				match(SET);
				setState(6463);
				match(DEFAULT);
				setState(6464);
				aExpr(0);
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(6466);
				modifyColumn();
				setState(6467);
				match(DROP);
				setState(6468);
				match(DEFAULT);
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(6470);
				modifyColumn();
				setState(6471);
				_la = _input.LA(1);
				if ( !(_la==DROP || _la==SET) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(6472);
				match(NOT);
				setState(6473);
				match(NULL);
				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(6475);
				modifyColumn();
				setState(6476);
				match(ADD);
				setState(6477);
				match(GENERATED);
				setState(6481);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case ALWAYS:
					{
					setState(6478);
					match(ALWAYS);
					}
					break;
				case BY:
					{
					{
					setState(6479);
					match(BY);
					setState(6480);
					match(DEFAULT);
					}
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				setState(6483);
				match(AS);
				setState(6484);
				match(IDENTITY);
				setState(6489);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==LP_) {
					{
					setState(6485);
					match(LP_);
					setState(6486);
					sequenceOptions();
					setState(6487);
					match(RP_);
					}
				}

				}
				break;
			case 6:
				enterOuterAlt(_localctx, 6);
				{
				setState(6491);
				modifyColumn();
				setState(6492);
				alterColumnSetOption();
				setState(6496);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==SET || _la==RESTART) {
					{
					{
					setState(6493);
					alterColumnSetOption();
					}
					}
					setState(6498);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				}
				break;
			case 7:
				enterOuterAlt(_localctx, 7);
				{
				setState(6499);
				modifyColumn();
				setState(6500);
				match(DROP);
				setState(6501);
				match(IDENTITY);
				setState(6503);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==IF) {
					{
					setState(6502);
					ifExists();
					}
				}

				}
				break;
			case 8:
				enterOuterAlt(_localctx, 8);
				{
				setState(6505);
				modifyColumn();
				setState(6506);
				match(SET);
				setState(6507);
				match(STATISTICS);
				setState(6508);
				match(NUMBER_);
				}
				break;
			case 9:
				enterOuterAlt(_localctx, 9);
				{
				setState(6510);
				modifyColumn();
				setState(6511);
				match(SET);
				setState(6512);
				match(LP_);
				setState(6513);
				attributeOptions();
				setState(6514);
				match(RP_);
				}
				break;
			case 10:
				enterOuterAlt(_localctx, 10);
				{
				setState(6516);
				modifyColumn();
				setState(6517);
				match(RESET);
				setState(6518);
				match(LP_);
				setState(6519);
				attributeOptions();
				setState(6520);
				match(RP_);
				}
				break;
			case 11:
				enterOuterAlt(_localctx, 11);
				{
				setState(6522);
				modifyColumn();
				setState(6523);
				match(SET);
				setState(6524);
				match(STORAGE);
				setState(6525);
				_la = _input.LA(1);
				if ( !(((((_la - 284)) & ~0x3f) == 0 && ((1L << (_la - 284)) & ((1L << (EXTENDED - 284)) | (1L << (EXTERNAL - 284)) | (1L << (MAIN - 284)) | (1L << (PLAIN - 284)))) != 0)) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ModifyColumnContext extends ParserRuleContext {
		public TerminalNode ALTER() { return getToken(OpenGaussStatementParser.ALTER, 0); }
		public ColumnNameContext columnName() {
			return getRuleContext(ColumnNameContext.class,0);
		}
		public TerminalNode COLUMN() { return getToken(OpenGaussStatementParser.COLUMN, 0); }
		public ModifyColumnContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_modifyColumn; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitModifyColumn(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ModifyColumnContext modifyColumn() throws RecognitionException {
		ModifyColumnContext _localctx = new ModifyColumnContext(_ctx, getState());
		enterRule(_localctx, 880, RULE_modifyColumn);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6529);
			match(ALTER);
			setState(6531);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==COLUMN) {
				{
				setState(6530);
				match(COLUMN);
				}
			}

			setState(6533);
			columnName();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterColumnSetOptionContext extends ParserRuleContext {
		public TerminalNode SET() { return getToken(OpenGaussStatementParser.SET, 0); }
		public TerminalNode GENERATED() { return getToken(OpenGaussStatementParser.GENERATED, 0); }
		public SequenceOptionContext sequenceOption() {
			return getRuleContext(SequenceOptionContext.class,0);
		}
		public TerminalNode ALWAYS() { return getToken(OpenGaussStatementParser.ALWAYS, 0); }
		public TerminalNode BY() { return getToken(OpenGaussStatementParser.BY, 0); }
		public TerminalNode DEFAULT() { return getToken(OpenGaussStatementParser.DEFAULT, 0); }
		public TerminalNode RESTART() { return getToken(OpenGaussStatementParser.RESTART, 0); }
		public TerminalNode NUMBER_() { return getToken(OpenGaussStatementParser.NUMBER_, 0); }
		public TerminalNode WITH() { return getToken(OpenGaussStatementParser.WITH, 0); }
		public AlterColumnSetOptionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterColumnSetOption; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitAlterColumnSetOption(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AlterColumnSetOptionContext alterColumnSetOption() throws RecognitionException {
		AlterColumnSetOptionContext _localctx = new AlterColumnSetOptionContext(_ctx, getState());
		enterRule(_localctx, 882, RULE_alterColumnSetOption);
		int _la;
		try {
			setState(6552);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case SET:
				enterOuterAlt(_localctx, 1);
				{
				setState(6535);
				match(SET);
				setState(6543);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case GENERATED:
					{
					setState(6536);
					match(GENERATED);
					setState(6540);
					_errHandler.sync(this);
					switch (_input.LA(1)) {
					case ALWAYS:
						{
						setState(6537);
						match(ALWAYS);
						}
						break;
					case BY:
						{
						setState(6538);
						match(BY);
						setState(6539);
						match(DEFAULT);
						}
						break;
					default:
						throw new NoViableAltException(this);
					}
					}
					break;
				case MAXVALUE:
				case NO:
				case START:
				case CACHE:
				case CYCLE:
				case INCREMENT:
				case MINVALUE:
				case OWNED:
					{
					setState(6542);
					sequenceOption();
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;
			case RESTART:
				enterOuterAlt(_localctx, 2);
				{
				setState(6545);
				match(RESTART);
				setState(6550);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==WITH || _la==NUMBER_) {
					{
					setState(6547);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==WITH) {
						{
						setState(6546);
						match(WITH);
						}
					}

					setState(6549);
					match(NUMBER_);
					}
				}

				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AttributeOptionsContext extends ParserRuleContext {
		public List attributeOption() {
			return getRuleContexts(AttributeOptionContext.class);
		}
		public AttributeOptionContext attributeOption(int i) {
			return getRuleContext(AttributeOptionContext.class,i);
		}
		public List COMMA_() { return getTokens(OpenGaussStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(OpenGaussStatementParser.COMMA_, i);
		}
		public AttributeOptionsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_attributeOptions; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitAttributeOptions(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AttributeOptionsContext attributeOptions() throws RecognitionException {
		AttributeOptionsContext _localctx = new AttributeOptionsContext(_ctx, getState());
		enterRule(_localctx, 884, RULE_attributeOptions);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6554);
			attributeOption();
			setState(6559);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA_) {
				{
				{
				setState(6555);
				match(COMMA_);
				setState(6556);
				attributeOption();
				}
				}
				setState(6561);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AttributeOptionContext extends ParserRuleContext {
		public TerminalNode IDENTIFIER_() { return getToken(OpenGaussStatementParser.IDENTIFIER_, 0); }
		public TerminalNode EQ_() { return getToken(OpenGaussStatementParser.EQ_, 0); }
		public AExprContext aExpr() {
			return getRuleContext(AExprContext.class,0);
		}
		public AttributeOptionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_attributeOption; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitAttributeOption(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AttributeOptionContext attributeOption() throws RecognitionException {
		AttributeOptionContext _localctx = new AttributeOptionContext(_ctx, getState());
		enterRule(_localctx, 886, RULE_attributeOption);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6562);
			match(IDENTIFIER_);
			setState(6563);
			match(EQ_);
			setState(6564);
			aExpr(0);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AddConstraintSpecificationContext extends ParserRuleContext {
		public TerminalNode ADD() { return getToken(OpenGaussStatementParser.ADD, 0); }
		public TableConstraintContext tableConstraint() {
			return getRuleContext(TableConstraintContext.class,0);
		}
		public TableConstraintUsingIndexContext tableConstraintUsingIndex() {
			return getRuleContext(TableConstraintUsingIndexContext.class,0);
		}
		public TerminalNode NOT() { return getToken(OpenGaussStatementParser.NOT, 0); }
		public TerminalNode VALID() { return getToken(OpenGaussStatementParser.VALID, 0); }
		public AddConstraintSpecificationContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_addConstraintSpecification; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitAddConstraintSpecification(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AddConstraintSpecificationContext addConstraintSpecification() throws RecognitionException {
		AddConstraintSpecificationContext _localctx = new AddConstraintSpecificationContext(_ctx, getState());
		enterRule(_localctx, 888, RULE_addConstraintSpecification);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6566);
			match(ADD);
			setState(6573);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,576,_ctx) ) {
			case 1:
				{
				setState(6567);
				tableConstraint();
				setState(6570);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==NOT) {
					{
					setState(6568);
					match(NOT);
					setState(6569);
					match(VALID);
					}
				}

				}
				break;
			case 2:
				{
				setState(6572);
				tableConstraintUsingIndex();
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class TableConstraintUsingIndexContext extends ParserRuleContext {
		public TerminalNode USING() { return getToken(OpenGaussStatementParser.USING, 0); }
		public TerminalNode INDEX() { return getToken(OpenGaussStatementParser.INDEX, 0); }
		public IndexNameContext indexName() {
			return getRuleContext(IndexNameContext.class,0);
		}
		public ConstraintOptionalParamContext constraintOptionalParam() {
			return getRuleContext(ConstraintOptionalParamContext.class,0);
		}
		public TerminalNode UNIQUE() { return getToken(OpenGaussStatementParser.UNIQUE, 0); }
		public PrimaryKeyContext primaryKey() {
			return getRuleContext(PrimaryKeyContext.class,0);
		}
		public TerminalNode CONSTRAINT() { return getToken(OpenGaussStatementParser.CONSTRAINT, 0); }
		public ConstraintNameContext constraintName() {
			return getRuleContext(ConstraintNameContext.class,0);
		}
		public TableConstraintUsingIndexContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_tableConstraintUsingIndex; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitTableConstraintUsingIndex(this);
			else return visitor.visitChildren(this);
		}
	}

	public final TableConstraintUsingIndexContext tableConstraintUsingIndex() throws RecognitionException {
		TableConstraintUsingIndexContext _localctx = new TableConstraintUsingIndexContext(_ctx, getState());
		enterRule(_localctx, 890, RULE_tableConstraintUsingIndex);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6577);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==CONSTRAINT) {
				{
				setState(6575);
				match(CONSTRAINT);
				setState(6576);
				constraintName();
				}
			}

			setState(6581);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case UNIQUE:
				{
				setState(6579);
				match(UNIQUE);
				}
				break;
			case PRIMARY:
			case KEY:
				{
				setState(6580);
				primaryKey();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			setState(6583);
			match(USING);
			setState(6584);
			match(INDEX);
			setState(6585);
			indexName();
			setState(6586);
			constraintOptionalParam();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ModifyConstraintSpecificationContext extends ParserRuleContext {
		public TerminalNode ALTER() { return getToken(OpenGaussStatementParser.ALTER, 0); }
		public TerminalNode CONSTRAINT() { return getToken(OpenGaussStatementParser.CONSTRAINT, 0); }
		public ConstraintNameContext constraintName() {
			return getRuleContext(ConstraintNameContext.class,0);
		}
		public ConstraintOptionalParamContext constraintOptionalParam() {
			return getRuleContext(ConstraintOptionalParamContext.class,0);
		}
		public ModifyConstraintSpecificationContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_modifyConstraintSpecification; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitModifyConstraintSpecification(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ModifyConstraintSpecificationContext modifyConstraintSpecification() throws RecognitionException {
		ModifyConstraintSpecificationContext _localctx = new ModifyConstraintSpecificationContext(_ctx, getState());
		enterRule(_localctx, 892, RULE_modifyConstraintSpecification);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6588);
			match(ALTER);
			setState(6589);
			match(CONSTRAINT);
			setState(6590);
			constraintName();
			setState(6591);
			constraintOptionalParam();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ValidateConstraintSpecificationContext extends ParserRuleContext {
		public TerminalNode VALIDATE() { return getToken(OpenGaussStatementParser.VALIDATE, 0); }
		public TerminalNode CONSTRAINT() { return getToken(OpenGaussStatementParser.CONSTRAINT, 0); }
		public ConstraintNameContext constraintName() {
			return getRuleContext(ConstraintNameContext.class,0);
		}
		public ValidateConstraintSpecificationContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_validateConstraintSpecification; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitValidateConstraintSpecification(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ValidateConstraintSpecificationContext validateConstraintSpecification() throws RecognitionException {
		ValidateConstraintSpecificationContext _localctx = new ValidateConstraintSpecificationContext(_ctx, getState());
		enterRule(_localctx, 894, RULE_validateConstraintSpecification);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6593);
			match(VALIDATE);
			setState(6594);
			match(CONSTRAINT);
			setState(6595);
			constraintName();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DropConstraintSpecificationContext extends ParserRuleContext {
		public TerminalNode DROP() { return getToken(OpenGaussStatementParser.DROP, 0); }
		public TerminalNode CONSTRAINT() { return getToken(OpenGaussStatementParser.CONSTRAINT, 0); }
		public ConstraintNameContext constraintName() {
			return getRuleContext(ConstraintNameContext.class,0);
		}
		public IfExistsContext ifExists() {
			return getRuleContext(IfExistsContext.class,0);
		}
		public TerminalNode RESTRICT() { return getToken(OpenGaussStatementParser.RESTRICT, 0); }
		public TerminalNode CASCADE() { return getToken(OpenGaussStatementParser.CASCADE, 0); }
		public DropConstraintSpecificationContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_dropConstraintSpecification; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitDropConstraintSpecification(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DropConstraintSpecificationContext dropConstraintSpecification() throws RecognitionException {
		DropConstraintSpecificationContext _localctx = new DropConstraintSpecificationContext(_ctx, getState());
		enterRule(_localctx, 896, RULE_dropConstraintSpecification);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6597);
			match(DROP);
			setState(6598);
			match(CONSTRAINT);
			setState(6600);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,579,_ctx) ) {
			case 1:
				{
				setState(6599);
				ifExists();
				}
				break;
			}
			setState(6602);
			constraintName();
			setState(6604);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==CASCADE || _la==RESTRICT) {
				{
				setState(6603);
				_la = _input.LA(1);
				if ( !(_la==CASCADE || _la==RESTRICT) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class StorageParameterWithValueContext extends ParserRuleContext {
		public StorageParameterContext storageParameter() {
			return getRuleContext(StorageParameterContext.class,0);
		}
		public TerminalNode EQ_() { return getToken(OpenGaussStatementParser.EQ_, 0); }
		public AExprContext aExpr() {
			return getRuleContext(AExprContext.class,0);
		}
		public StorageParameterWithValueContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_storageParameterWithValue; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitStorageParameterWithValue(this);
			else return visitor.visitChildren(this);
		}
	}

	public final StorageParameterWithValueContext storageParameterWithValue() throws RecognitionException {
		StorageParameterWithValueContext _localctx = new StorageParameterWithValueContext(_ctx, getState());
		enterRule(_localctx, 898, RULE_storageParameterWithValue);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6606);
			storageParameter();
			setState(6607);
			match(EQ_);
			setState(6608);
			aExpr(0);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class StorageParameterContext extends ParserRuleContext {
		public TerminalNode IDENTIFIER_() { return getToken(OpenGaussStatementParser.IDENTIFIER_, 0); }
		public StorageParameterContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_storageParameter; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitStorageParameter(this);
			else return visitor.visitChildren(this);
		}
	}

	public final StorageParameterContext storageParameter() throws RecognitionException {
		StorageParameterContext _localctx = new StorageParameterContext(_ctx, getState());
		enterRule(_localctx, 900, RULE_storageParameter);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6610);
			match(IDENTIFIER_);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class RenameColumnSpecificationContext extends ParserRuleContext {
		public TerminalNode RENAME() { return getToken(OpenGaussStatementParser.RENAME, 0); }
		public List columnName() {
			return getRuleContexts(ColumnNameContext.class);
		}
		public ColumnNameContext columnName(int i) {
			return getRuleContext(ColumnNameContext.class,i);
		}
		public TerminalNode TO() { return getToken(OpenGaussStatementParser.TO, 0); }
		public TerminalNode COLUMN() { return getToken(OpenGaussStatementParser.COLUMN, 0); }
		public RenameColumnSpecificationContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_renameColumnSpecification; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitRenameColumnSpecification(this);
			else return visitor.visitChildren(this);
		}
	}

	public final RenameColumnSpecificationContext renameColumnSpecification() throws RecognitionException {
		RenameColumnSpecificationContext _localctx = new RenameColumnSpecificationContext(_ctx, getState());
		enterRule(_localctx, 902, RULE_renameColumnSpecification);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6612);
			match(RENAME);
			setState(6614);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==COLUMN) {
				{
				setState(6613);
				match(COLUMN);
				}
			}

			setState(6616);
			columnName();
			setState(6617);
			match(TO);
			setState(6618);
			columnName();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class RenameConstraintContext extends ParserRuleContext {
		public TerminalNode RENAME() { return getToken(OpenGaussStatementParser.RENAME, 0); }
		public TerminalNode CONSTRAINT() { return getToken(OpenGaussStatementParser.CONSTRAINT, 0); }
		public List ignoredIdentifier() {
			return getRuleContexts(IgnoredIdentifierContext.class);
		}
		public IgnoredIdentifierContext ignoredIdentifier(int i) {
			return getRuleContext(IgnoredIdentifierContext.class,i);
		}
		public TerminalNode TO() { return getToken(OpenGaussStatementParser.TO, 0); }
		public RenameConstraintContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_renameConstraint; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitRenameConstraint(this);
			else return visitor.visitChildren(this);
		}
	}

	public final RenameConstraintContext renameConstraint() throws RecognitionException {
		RenameConstraintContext _localctx = new RenameConstraintContext(_ctx, getState());
		enterRule(_localctx, 904, RULE_renameConstraint);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6620);
			match(RENAME);
			setState(6621);
			match(CONSTRAINT);
			setState(6622);
			ignoredIdentifier();
			setState(6623);
			match(TO);
			setState(6624);
			ignoredIdentifier();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class RenameTableSpecificationContext extends ParserRuleContext {
		public TerminalNode RENAME() { return getToken(OpenGaussStatementParser.RENAME, 0); }
		public TerminalNode TO() { return getToken(OpenGaussStatementParser.TO, 0); }
		public IdentifierContext identifier() {
			return getRuleContext(IdentifierContext.class,0);
		}
		public RenameTableSpecificationContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_renameTableSpecification; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitRenameTableSpecification(this);
			else return visitor.visitChildren(this);
		}
	}

	public final RenameTableSpecificationContext renameTableSpecification() throws RecognitionException {
		RenameTableSpecificationContext _localctx = new RenameTableSpecificationContext(_ctx, getState());
		enterRule(_localctx, 906, RULE_renameTableSpecification);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6626);
			match(RENAME);
			setState(6627);
			match(TO);
			setState(6628);
			identifier();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class IndexNamesContext extends ParserRuleContext {
		public List indexName() {
			return getRuleContexts(IndexNameContext.class);
		}
		public IndexNameContext indexName(int i) {
			return getRuleContext(IndexNameContext.class,i);
		}
		public List COMMA_() { return getTokens(OpenGaussStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(OpenGaussStatementParser.COMMA_, i);
		}
		public IndexNamesContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_indexNames; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitIndexNames(this);
			else return visitor.visitChildren(this);
		}
	}

	public final IndexNamesContext indexNames() throws RecognitionException {
		IndexNamesContext _localctx = new IndexNamesContext(_ctx, getState());
		enterRule(_localctx, 908, RULE_indexNames);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6630);
			indexName();
			setState(6635);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA_) {
				{
				{
				setState(6631);
				match(COMMA_);
				setState(6632);
				indexName();
				}
				}
				setState(6637);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterDatabaseContext extends ParserRuleContext {
		public TerminalNode ALTER() { return getToken(OpenGaussStatementParser.ALTER, 0); }
		public TerminalNode DATABASE() { return getToken(OpenGaussStatementParser.DATABASE, 0); }
		public DatabaseNameContext databaseName() {
			return getRuleContext(DatabaseNameContext.class,0);
		}
		public AlterDatabaseClauseContext alterDatabaseClause() {
			return getRuleContext(AlterDatabaseClauseContext.class,0);
		}
		public AlterDatabaseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterDatabase; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitAlterDatabase(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AlterDatabaseContext alterDatabase() throws RecognitionException {
		AlterDatabaseContext _localctx = new AlterDatabaseContext(_ctx, getState());
		enterRule(_localctx, 910, RULE_alterDatabase);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6638);
			match(ALTER);
			setState(6639);
			match(DATABASE);
			setState(6640);
			databaseName();
			setState(6641);
			alterDatabaseClause();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterDatabaseClauseContext extends ParserRuleContext {
		public TerminalNode WITH() { return getToken(OpenGaussStatementParser.WITH, 0); }
		public CreatedbOptItemsContext createdbOptItems() {
			return getRuleContext(CreatedbOptItemsContext.class,0);
		}
		public TerminalNode RENAME() { return getToken(OpenGaussStatementParser.RENAME, 0); }
		public TerminalNode TO() { return getToken(OpenGaussStatementParser.TO, 0); }
		public DatabaseNameContext databaseName() {
			return getRuleContext(DatabaseNameContext.class,0);
		}
		public TerminalNode OWNER() { return getToken(OpenGaussStatementParser.OWNER, 0); }
		public RoleSpecContext roleSpec() {
			return getRuleContext(RoleSpecContext.class,0);
		}
		public TerminalNode SET() { return getToken(OpenGaussStatementParser.SET, 0); }
		public TerminalNode TABLESPACE() { return getToken(OpenGaussStatementParser.TABLESPACE, 0); }
		public NameContext name() {
			return getRuleContext(NameContext.class,0);
		}
		public SetResetClauseContext setResetClause() {
			return getRuleContext(SetResetClauseContext.class,0);
		}
		public AlterDatabaseClauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterDatabaseClause; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitAlterDatabaseClause(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AlterDatabaseClauseContext alterDatabaseClause() throws RecognitionException {
		AlterDatabaseClauseContext _localctx = new AlterDatabaseClauseContext(_ctx, getState());
		enterRule(_localctx, 912, RULE_alterDatabaseClause);
		int _la;
		try {
			setState(6659);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,585,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(6644);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==WITH) {
					{
					setState(6643);
					match(WITH);
					}
				}

				setState(6647);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==UNICODE_ESCAPE || ((((_la - 81)) & ~0x3f) == 0 && ((1L << (_la - 81)) & ((1L << (INSERT - 81)) | (1L << (UPDATE - 81)) | (1L << (DELETE - 81)) | (1L << (ALTER - 81)) | (1L << (DROP - 81)) | (1L << (TRUNCATE - 81)) | (1L << (SCHEMA - 81)) | (1L << (REVOKE - 81)) | (1L << (ADD - 81)) | (1L << (SET - 81)) | (1L << (INDEX - 81)) | (1L << (KEY - 81)) | (1L << (POSITION - 81)) | (1L << (FUNCTION - 81)) | (1L << (TRIGGER - 81)) | (1L << (PROCEDURE - 81)) | (1L << (VIEW - 81)) | (1L << (IF - 81)))) != 0) || ((((_la - 151)) & ~0x3f) == 0 && ((1L << (_la - 151)) & ((1L << (BY - 151)) | (1L << (BEGIN - 151)) | (1L << (COMMIT - 151)) | (1L << (ROLLBACK - 151)) | (1L << (SAVEPOINT - 151)) | (1L << (DOUBLE - 151)) | (1L << (INTERVAL - 151)) | (1L << (TIME - 151)) | (1L << (TIMESTAMP - 151)) | (1L << (YEAR - 151)) | (1L << (MONTH - 151)) | (1L << (DAY - 151)) | (1L << (HOUR - 151)) | (1L << (MINUTE - 151)) | (1L << (SECOND - 151)) | (1L << (CURRENT - 151)) | (1L << (ENABLE - 151)) | (1L << (DISABLE - 151)) | (1L << (CALL - 151)) | (1L << (PRESERVE - 151)) | (1L << (DEFINER - 151)) | (1L << (SQL - 151)) | (1L << (CASCADED - 151)) | (1L << (LOCAL - 151)) | (1L << (CLOSE - 151)) | (1L << (NEXT - 151)) | (1L << (NAME - 151)) | (1L << (NAMES - 151)) | (1L << (TYPE - 151)) | (1L << (TEXT - 151)) | (1L << (REPEATABLE - 151)) | (1L << (VARYING - 151)) | (1L << (NATIONAL - 151)))) != 0) || ((((_la - 216)) & ~0x3f) == 0 && ((1L << (_la - 216)) & ((1L << (VALUE - 216)) | (1L << (TIES - 216)) | (1L << (CUBE - 216)) | (1L << (SETS - 216)) | (1L << (OTHERS - 216)) | (1L << (AT - 216)) | (1L << (MAXVALUE - 216)) | (1L << (ADMIN - 216)) | (1L << (ESCAPE - 216)) | (1L << (EXCLUDE - 216)) | (1L << (MOD - 216)) | (1L << (PARTITION - 216)) | (1L << (UNKNOWN - 216)) | (1L << (ALWAYS - 216)) | (1L << (CASCADE - 216)) | (1L << (GENERATED - 216)) | (1L << (ISOLATION - 216)) | (1L << (LEVEL - 216)) | (1L << (NO - 216)) | (1L << (OPTION - 216)) | (1L << (PRIVILEGES - 216)) | (1L << (READ - 216)) | (1L << (ROLE - 216)) | (1L << (ROWS - 216)) | (1L << (START - 216)) | (1L << (TRANSACTION - 216)) | (1L << (ACTION - 216)) | (1L << (CACHE - 216)) | (1L << (CHARACTERISTICS - 216)) | (1L << (CLUSTER - 216)) | (1L << (COMMENTS - 216)) | (1L << (CONSTRAINTS - 216)) | (1L << (CYCLE - 216)) | (1L << (DATA - 216)) | (1L << (DATABASE - 216)) | (1L << (DEFAULTS - 216)) | (1L << (DEFERRED - 216)))) != 0) || ((((_la - 280)) & ~0x3f) == 0 && ((1L << (_la - 280)) & ((1L << (DEPENDS - 280)) | (1L << (DOMAIN - 280)) | (1L << (EXCLUDING - 280)) | (1L << (EXECUTE - 280)) | (1L << (EXTENDED - 280)) | (1L << (EXTENSION - 280)) | (1L << (EXTERNAL - 280)) | (1L << (FILTER - 280)) | (1L << (FIRST - 280)) | (1L << (FOLLOWING - 280)) | (1L << (FORCE - 280)) | (1L << (GLOBAL - 280)) | (1L << (IDENTITY - 280)) | (1L << (IMMEDIATE - 280)) | (1L << (INCLUDING - 280)) | (1L << (INCREMENT - 280)) | (1L << (INDEXES - 280)) | (1L << (INHERIT - 280)) | (1L << (INHERITS - 280)) | (1L << (INCLUDE - 280)) | (1L << (LANGUAGE - 280)) | (1L << (LARGE - 280)) | (1L << (LAST - 280)) | (1L << (LOGGED - 280)) | (1L << (MAIN - 280)) | (1L << (MATCH - 280)) | (1L << (MINVALUE - 280)) | (1L << (NOTHING - 280)) | (1L << (NULLS - 280)) | (1L << (OBJECT - 280)) | (1L << (OIDS - 280)) | (1L << (OVER - 280)) | (1L << (OWNED - 280)) | (1L << (OWNER - 280)) | (1L << (PARTIAL - 280)) | (1L << (PLAIN - 280)) | (1L << (PRECEDING - 280)) | (1L << (RANGE - 280)) | (1L << (RENAME - 280)) | (1L << (REPLICA - 280)) | (1L << (RESET - 280)) | (1L << (RESTART - 280)) | (1L << (RESTRICT - 280)) | (1L << (ROUTINE - 280)) | (1L << (RULE - 280)) | (1L << (SECURITY - 280)) | (1L << (SEQUENCE - 280)) | (1L << (SESSION - 280)) | (1L << (SHOW - 280)) | (1L << (SIMPLE - 280)) | (1L << (STATISTICS - 280)) | (1L << (STORAGE - 280)) | (1L << (TABLESPACE - 280)) | (1L << (TEMP - 280)) | (1L << (TEMPORARY - 280)) | (1L << (UNBOUNDED - 280)) | (1L << (UNLOGGED - 280)) | (1L << (VALID - 280)))) != 0) || ((((_la - 344)) & ~0x3f) == 0 && ((1L << (_la - 344)) & ((1L << (VALIDATE - 344)) | (1L << (WITHIN - 344)) | (1L << (WITHOUT - 344)) | (1L << (ZONE - 344)) | (1L << (OF - 344)) | (1L << (UESCAPE - 344)) | (1L << (GROUPS - 344)) | (1L << (RECURSIVE - 344)) | (1L << (INT2 - 344)) | (1L << (INT4 - 344)) | (1L << (FLOAT4 - 344)) | (1L << (BYTEA - 344)) | (1L << (ENUM - 344)) | (1L << (POINT - 344)) | (1L << (LSEG - 344)) | (1L << (BOX - 344)) | (1L << (PATH - 344)) | (1L << (POLYGON - 344)) | (1L << (CIRCLE - 344)) | (1L << (INET - 344)) | (1L << (TSQUERY - 344)) | (1L << (XML - 344)) | (1L << (JSON - 344)) | (1L << (INT4RANGE - 344)) | (1L << (INT8RANGE - 344)) | (1L << (NUMRANGE - 344)) | (1L << (DATERANGE - 344)) | (1L << (ORDINALITY - 344)) | (1L << (NFC - 344)) | (1L << (NFD - 344)) | (1L << (NFKC - 344)))) != 0) || ((((_la - 408)) & ~0x3f) == 0 && ((1L << (_la - 408)) & ((1L << (NFKD - 408)) | (1L << (REF - 408)) | (1L << (PASSING - 408)) | (1L << (VERSION - 408)) | (1L << (YES - 408)) | (1L << (STANDALONE - 408)) | (1L << (MATERIALIZED - 408)) | (1L << (OPERATOR - 408)) | (1L << (SHARE - 408)) | (1L << (ROLLUP - 408)) | (1L << (DOCUMENT - 408)) | (1L << (NORMALIZED - 408)) | (1L << (NOWAIT - 408)) | (1L << (LOCKED - 408)) | (1L << (COLUMNS - 408)) | (1L << (CONTENT - 408)) | (1L << (STRIP - 408)) | (1L << (WHITESPACE - 408)) | (1L << (CONFLICT - 408)) | (1L << (OVERRIDING - 408)) | (1L << (SYSTEM - 408)) | (1L << (ABORT - 408)) | (1L << (ABSOLUTE - 408)) | (1L << (ACCESS - 408)) | (1L << (AFTER - 408)) | (1L << (AGGREGATE - 408)) | (1L << (ALSO - 408)) | (1L << (ATTACH - 408)) | (1L << (ATTRIBUTE - 408)) | (1L << (BACKWARD - 408)) | (1L << (BEFORE - 408)) | (1L << (ASSERTION - 408)) | (1L << (ASSIGNMENT - 408)) | (1L << (CONTINUE - 408)) | (1L << (CONVERSION - 408)) | (1L << (COPY - 408)) | (1L << (COST - 408)) | (1L << (CSV - 408)) | (1L << (CALLED - 408)) | (1L << (CATALOG - 408)) | (1L << (CHAIN - 408)) | (1L << (CHECKPOINT - 408)) | (1L << (CLASS - 408)) | (1L << (CONFIGURATION - 408)) | (1L << (COMMENT - 408)) | (1L << (DETACH - 408)))) != 0) || ((((_la - 472)) & ~0x3f) == 0 && ((1L << (_la - 472)) & ((1L << (DICTIONARY - 472)) | (1L << (EXPRESSION - 472)) | (1L << (INSENSITIVE - 472)) | (1L << (DISCARD - 472)) | (1L << (OFF - 472)) | (1L << (INSTEAD - 472)) | (1L << (EXPLAIN - 472)) | (1L << (INPUT - 472)) | (1L << (INLINE - 472)) | (1L << (PARALLEL - 472)) | (1L << (LEAKPROOF - 472)) | (1L << (COMMITTED - 472)) | (1L << (ENCODING - 472)) | (1L << (IMPLICIT - 472)) | (1L << (DELIMITER - 472)) | (1L << (CURSOR - 472)) | (1L << (EACH - 472)) | (1L << (EVENT - 472)) | (1L << (DEALLOCATE - 472)) | (1L << (CONNECTION - 472)) | (1L << (DECLARE - 472)) | (1L << (FAMILY - 472)) | (1L << (FORWARD - 472)) | (1L << (EXCLUSIVE - 472)) | (1L << (FUNCTIONS - 472)) | (1L << (LOCATION - 472)) | (1L << (LABEL - 472)) | (1L << (DELIMITERS - 472)) | (1L << (HANDLER - 472)) | (1L << (HEADER - 472)) | (1L << (IMMUTABLE - 472)) | (1L << (GRANTED - 472)) | (1L << (HOLD - 472)) | (1L << (MAPPING - 472)) | (1L << (OLD - 472)) | (1L << (METHOD - 472)) | (1L << (LOAD - 472)) | (1L << (LISTEN - 472)) | (1L << (MODE - 472)) | (1L << (MOVE - 472)) | (1L << (PROCEDURAL - 472)) | (1L << (PARSER - 472)) | (1L << (PROCEDURES - 472)) | (1L << (ENCRYPTED - 472)) | (1L << (PUBLICATION - 472)) | (1L << (PROGRAM - 472)) | (1L << (REFERENCING - 472)) | (1L << (PLANS - 472)) | (1L << (REINDEX - 472)) | (1L << (PRIOR - 472)) | (1L << (PASSWORD - 472)) | (1L << (RELATIVE - 472)) | (1L << (QUOTE - 472)) | (1L << (ROUTINES - 472)) | (1L << (REPLACE - 472)) | (1L << (SNAPSHOT - 472)) | (1L << (REFRESH - 472)) | (1L << (PREPARE - 472)) | (1L << (OPTIONS - 472)) | (1L << (IMPORT - 472)) | (1L << (INVOKER - 472)) | (1L << (NEW - 472)) | (1L << (PREPARED - 472)))) != 0) || ((((_la - 536)) & ~0x3f) == 0 && ((1L << (_la - 536)) & ((1L << (SCROLL - 536)) | (1L << (SEQUENCES - 536)) | (1L << (SYSID - 536)) | (1L << (REASSIGN - 536)) | (1L << (SERVER - 536)) | (1L << (SUBSCRIPTION - 536)) | (1L << (SEARCH - 536)) | (1L << (SCHEMAS - 536)) | (1L << (RECHECK - 536)) | (1L << (POLICY - 536)) | (1L << (NOTIFY - 536)) | (1L << (LOCK - 536)) | (1L << (RELEASE - 536)) | (1L << (SERIALIZABLE - 536)) | (1L << (RETURNS - 536)) | (1L << (STATEMENT - 536)) | (1L << (STDIN - 536)) | (1L << (STDOUT - 536)) | (1L << (TABLES - 536)) | (1L << (SUPPORT - 536)) | (1L << (STABLE - 536)) | (1L << (TEMPLATE - 536)) | (1L << (UNENCRYPTED - 536)) | (1L << (VIEWS - 536)) | (1L << (UNCOMMITTED - 536)) | (1L << (TRANSFORM - 536)) | (1L << (UNLISTEN - 536)) | (1L << (TRUSTED - 536)) | (1L << (VALIDATOR - 536)) | (1L << (UNTIL - 536)) | (1L << (VACUUM - 536)) | (1L << (VOLATILE - 536)) | (1L << (STORED - 536)) | (1L << (WRITE - 536)) | (1L << (STRICT - 536)) | (1L << (TYPES - 536)) | (1L << (WRAPPER - 536)) | (1L << (WORK - 536)) | (1L << (INT16 - 536)) | (1L << (INT1 - 536)) | (1L << (ELEM_CONTAINED_BY_RANGE - 536)) | (1L << (IDENTIFIER_ - 536)))) != 0)) {
					{
					setState(6646);
					createdbOptItems();
					}
				}

				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(6649);
				match(RENAME);
				setState(6650);
				match(TO);
				setState(6651);
				databaseName();
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(6652);
				match(OWNER);
				setState(6653);
				match(TO);
				setState(6654);
				roleSpec();
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(6655);
				match(SET);
				setState(6656);
				match(TABLESPACE);
				setState(6657);
				name();
				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(6658);
				setResetClause();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CreatedbOptItemsContext extends ParserRuleContext {
		public List createdbOptItem() {
			return getRuleContexts(CreatedbOptItemContext.class);
		}
		public CreatedbOptItemContext createdbOptItem(int i) {
			return getRuleContext(CreatedbOptItemContext.class,i);
		}
		public CreatedbOptItemsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_createdbOptItems; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitCreatedbOptItems(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CreatedbOptItemsContext createdbOptItems() throws RecognitionException {
		CreatedbOptItemsContext _localctx = new CreatedbOptItemsContext(_ctx, getState());
		enterRule(_localctx, 914, RULE_createdbOptItems);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6662); 
			_errHandler.sync(this);
			_la = _input.LA(1);
			do {
				{
				{
				setState(6661);
				createdbOptItem();
				}
				}
				setState(6664); 
				_errHandler.sync(this);
				_la = _input.LA(1);
			} while ( _la==UNICODE_ESCAPE || ((((_la - 81)) & ~0x3f) == 0 && ((1L << (_la - 81)) & ((1L << (INSERT - 81)) | (1L << (UPDATE - 81)) | (1L << (DELETE - 81)) | (1L << (ALTER - 81)) | (1L << (DROP - 81)) | (1L << (TRUNCATE - 81)) | (1L << (SCHEMA - 81)) | (1L << (REVOKE - 81)) | (1L << (ADD - 81)) | (1L << (SET - 81)) | (1L << (INDEX - 81)) | (1L << (KEY - 81)) | (1L << (POSITION - 81)) | (1L << (FUNCTION - 81)) | (1L << (TRIGGER - 81)) | (1L << (PROCEDURE - 81)) | (1L << (VIEW - 81)) | (1L << (IF - 81)))) != 0) || ((((_la - 151)) & ~0x3f) == 0 && ((1L << (_la - 151)) & ((1L << (BY - 151)) | (1L << (BEGIN - 151)) | (1L << (COMMIT - 151)) | (1L << (ROLLBACK - 151)) | (1L << (SAVEPOINT - 151)) | (1L << (DOUBLE - 151)) | (1L << (INTERVAL - 151)) | (1L << (TIME - 151)) | (1L << (TIMESTAMP - 151)) | (1L << (YEAR - 151)) | (1L << (MONTH - 151)) | (1L << (DAY - 151)) | (1L << (HOUR - 151)) | (1L << (MINUTE - 151)) | (1L << (SECOND - 151)) | (1L << (CURRENT - 151)) | (1L << (ENABLE - 151)) | (1L << (DISABLE - 151)) | (1L << (CALL - 151)) | (1L << (PRESERVE - 151)) | (1L << (DEFINER - 151)) | (1L << (SQL - 151)) | (1L << (CASCADED - 151)) | (1L << (LOCAL - 151)) | (1L << (CLOSE - 151)) | (1L << (NEXT - 151)) | (1L << (NAME - 151)) | (1L << (NAMES - 151)) | (1L << (TYPE - 151)) | (1L << (TEXT - 151)) | (1L << (REPEATABLE - 151)) | (1L << (VARYING - 151)) | (1L << (NATIONAL - 151)))) != 0) || ((((_la - 216)) & ~0x3f) == 0 && ((1L << (_la - 216)) & ((1L << (VALUE - 216)) | (1L << (TIES - 216)) | (1L << (CUBE - 216)) | (1L << (SETS - 216)) | (1L << (OTHERS - 216)) | (1L << (AT - 216)) | (1L << (MAXVALUE - 216)) | (1L << (ADMIN - 216)) | (1L << (ESCAPE - 216)) | (1L << (EXCLUDE - 216)) | (1L << (MOD - 216)) | (1L << (PARTITION - 216)) | (1L << (UNKNOWN - 216)) | (1L << (ALWAYS - 216)) | (1L << (CASCADE - 216)) | (1L << (GENERATED - 216)) | (1L << (ISOLATION - 216)) | (1L << (LEVEL - 216)) | (1L << (NO - 216)) | (1L << (OPTION - 216)) | (1L << (PRIVILEGES - 216)) | (1L << (READ - 216)) | (1L << (ROLE - 216)) | (1L << (ROWS - 216)) | (1L << (START - 216)) | (1L << (TRANSACTION - 216)) | (1L << (ACTION - 216)) | (1L << (CACHE - 216)) | (1L << (CHARACTERISTICS - 216)) | (1L << (CLUSTER - 216)) | (1L << (COMMENTS - 216)) | (1L << (CONSTRAINTS - 216)) | (1L << (CYCLE - 216)) | (1L << (DATA - 216)) | (1L << (DATABASE - 216)) | (1L << (DEFAULTS - 216)) | (1L << (DEFERRED - 216)))) != 0) || ((((_la - 280)) & ~0x3f) == 0 && ((1L << (_la - 280)) & ((1L << (DEPENDS - 280)) | (1L << (DOMAIN - 280)) | (1L << (EXCLUDING - 280)) | (1L << (EXECUTE - 280)) | (1L << (EXTENDED - 280)) | (1L << (EXTENSION - 280)) | (1L << (EXTERNAL - 280)) | (1L << (FILTER - 280)) | (1L << (FIRST - 280)) | (1L << (FOLLOWING - 280)) | (1L << (FORCE - 280)) | (1L << (GLOBAL - 280)) | (1L << (IDENTITY - 280)) | (1L << (IMMEDIATE - 280)) | (1L << (INCLUDING - 280)) | (1L << (INCREMENT - 280)) | (1L << (INDEXES - 280)) | (1L << (INHERIT - 280)) | (1L << (INHERITS - 280)) | (1L << (INCLUDE - 280)) | (1L << (LANGUAGE - 280)) | (1L << (LARGE - 280)) | (1L << (LAST - 280)) | (1L << (LOGGED - 280)) | (1L << (MAIN - 280)) | (1L << (MATCH - 280)) | (1L << (MINVALUE - 280)) | (1L << (NOTHING - 280)) | (1L << (NULLS - 280)) | (1L << (OBJECT - 280)) | (1L << (OIDS - 280)) | (1L << (OVER - 280)) | (1L << (OWNED - 280)) | (1L << (OWNER - 280)) | (1L << (PARTIAL - 280)) | (1L << (PLAIN - 280)) | (1L << (PRECEDING - 280)) | (1L << (RANGE - 280)) | (1L << (RENAME - 280)) | (1L << (REPLICA - 280)) | (1L << (RESET - 280)) | (1L << (RESTART - 280)) | (1L << (RESTRICT - 280)) | (1L << (ROUTINE - 280)) | (1L << (RULE - 280)) | (1L << (SECURITY - 280)) | (1L << (SEQUENCE - 280)) | (1L << (SESSION - 280)) | (1L << (SHOW - 280)) | (1L << (SIMPLE - 280)) | (1L << (STATISTICS - 280)) | (1L << (STORAGE - 280)) | (1L << (TABLESPACE - 280)) | (1L << (TEMP - 280)) | (1L << (TEMPORARY - 280)) | (1L << (UNBOUNDED - 280)) | (1L << (UNLOGGED - 280)) | (1L << (VALID - 280)))) != 0) || ((((_la - 344)) & ~0x3f) == 0 && ((1L << (_la - 344)) & ((1L << (VALIDATE - 344)) | (1L << (WITHIN - 344)) | (1L << (WITHOUT - 344)) | (1L << (ZONE - 344)) | (1L << (OF - 344)) | (1L << (UESCAPE - 344)) | (1L << (GROUPS - 344)) | (1L << (RECURSIVE - 344)) | (1L << (INT2 - 344)) | (1L << (INT4 - 344)) | (1L << (FLOAT4 - 344)) | (1L << (BYTEA - 344)) | (1L << (ENUM - 344)) | (1L << (POINT - 344)) | (1L << (LSEG - 344)) | (1L << (BOX - 344)) | (1L << (PATH - 344)) | (1L << (POLYGON - 344)) | (1L << (CIRCLE - 344)) | (1L << (INET - 344)) | (1L << (TSQUERY - 344)) | (1L << (XML - 344)) | (1L << (JSON - 344)) | (1L << (INT4RANGE - 344)) | (1L << (INT8RANGE - 344)) | (1L << (NUMRANGE - 344)) | (1L << (DATERANGE - 344)) | (1L << (ORDINALITY - 344)) | (1L << (NFC - 344)) | (1L << (NFD - 344)) | (1L << (NFKC - 344)))) != 0) || ((((_la - 408)) & ~0x3f) == 0 && ((1L << (_la - 408)) & ((1L << (NFKD - 408)) | (1L << (REF - 408)) | (1L << (PASSING - 408)) | (1L << (VERSION - 408)) | (1L << (YES - 408)) | (1L << (STANDALONE - 408)) | (1L << (MATERIALIZED - 408)) | (1L << (OPERATOR - 408)) | (1L << (SHARE - 408)) | (1L << (ROLLUP - 408)) | (1L << (DOCUMENT - 408)) | (1L << (NORMALIZED - 408)) | (1L << (NOWAIT - 408)) | (1L << (LOCKED - 408)) | (1L << (COLUMNS - 408)) | (1L << (CONTENT - 408)) | (1L << (STRIP - 408)) | (1L << (WHITESPACE - 408)) | (1L << (CONFLICT - 408)) | (1L << (OVERRIDING - 408)) | (1L << (SYSTEM - 408)) | (1L << (ABORT - 408)) | (1L << (ABSOLUTE - 408)) | (1L << (ACCESS - 408)) | (1L << (AFTER - 408)) | (1L << (AGGREGATE - 408)) | (1L << (ALSO - 408)) | (1L << (ATTACH - 408)) | (1L << (ATTRIBUTE - 408)) | (1L << (BACKWARD - 408)) | (1L << (BEFORE - 408)) | (1L << (ASSERTION - 408)) | (1L << (ASSIGNMENT - 408)) | (1L << (CONTINUE - 408)) | (1L << (CONVERSION - 408)) | (1L << (COPY - 408)) | (1L << (COST - 408)) | (1L << (CSV - 408)) | (1L << (CALLED - 408)) | (1L << (CATALOG - 408)) | (1L << (CHAIN - 408)) | (1L << (CHECKPOINT - 408)) | (1L << (CLASS - 408)) | (1L << (CONFIGURATION - 408)) | (1L << (COMMENT - 408)) | (1L << (DETACH - 408)))) != 0) || ((((_la - 472)) & ~0x3f) == 0 && ((1L << (_la - 472)) & ((1L << (DICTIONARY - 472)) | (1L << (EXPRESSION - 472)) | (1L << (INSENSITIVE - 472)) | (1L << (DISCARD - 472)) | (1L << (OFF - 472)) | (1L << (INSTEAD - 472)) | (1L << (EXPLAIN - 472)) | (1L << (INPUT - 472)) | (1L << (INLINE - 472)) | (1L << (PARALLEL - 472)) | (1L << (LEAKPROOF - 472)) | (1L << (COMMITTED - 472)) | (1L << (ENCODING - 472)) | (1L << (IMPLICIT - 472)) | (1L << (DELIMITER - 472)) | (1L << (CURSOR - 472)) | (1L << (EACH - 472)) | (1L << (EVENT - 472)) | (1L << (DEALLOCATE - 472)) | (1L << (CONNECTION - 472)) | (1L << (DECLARE - 472)) | (1L << (FAMILY - 472)) | (1L << (FORWARD - 472)) | (1L << (EXCLUSIVE - 472)) | (1L << (FUNCTIONS - 472)) | (1L << (LOCATION - 472)) | (1L << (LABEL - 472)) | (1L << (DELIMITERS - 472)) | (1L << (HANDLER - 472)) | (1L << (HEADER - 472)) | (1L << (IMMUTABLE - 472)) | (1L << (GRANTED - 472)) | (1L << (HOLD - 472)) | (1L << (MAPPING - 472)) | (1L << (OLD - 472)) | (1L << (METHOD - 472)) | (1L << (LOAD - 472)) | (1L << (LISTEN - 472)) | (1L << (MODE - 472)) | (1L << (MOVE - 472)) | (1L << (PROCEDURAL - 472)) | (1L << (PARSER - 472)) | (1L << (PROCEDURES - 472)) | (1L << (ENCRYPTED - 472)) | (1L << (PUBLICATION - 472)) | (1L << (PROGRAM - 472)) | (1L << (REFERENCING - 472)) | (1L << (PLANS - 472)) | (1L << (REINDEX - 472)) | (1L << (PRIOR - 472)) | (1L << (PASSWORD - 472)) | (1L << (RELATIVE - 472)) | (1L << (QUOTE - 472)) | (1L << (ROUTINES - 472)) | (1L << (REPLACE - 472)) | (1L << (SNAPSHOT - 472)) | (1L << (REFRESH - 472)) | (1L << (PREPARE - 472)) | (1L << (OPTIONS - 472)) | (1L << (IMPORT - 472)) | (1L << (INVOKER - 472)) | (1L << (NEW - 472)) | (1L << (PREPARED - 472)))) != 0) || ((((_la - 536)) & ~0x3f) == 0 && ((1L << (_la - 536)) & ((1L << (SCROLL - 536)) | (1L << (SEQUENCES - 536)) | (1L << (SYSID - 536)) | (1L << (REASSIGN - 536)) | (1L << (SERVER - 536)) | (1L << (SUBSCRIPTION - 536)) | (1L << (SEARCH - 536)) | (1L << (SCHEMAS - 536)) | (1L << (RECHECK - 536)) | (1L << (POLICY - 536)) | (1L << (NOTIFY - 536)) | (1L << (LOCK - 536)) | (1L << (RELEASE - 536)) | (1L << (SERIALIZABLE - 536)) | (1L << (RETURNS - 536)) | (1L << (STATEMENT - 536)) | (1L << (STDIN - 536)) | (1L << (STDOUT - 536)) | (1L << (TABLES - 536)) | (1L << (SUPPORT - 536)) | (1L << (STABLE - 536)) | (1L << (TEMPLATE - 536)) | (1L << (UNENCRYPTED - 536)) | (1L << (VIEWS - 536)) | (1L << (UNCOMMITTED - 536)) | (1L << (TRANSFORM - 536)) | (1L << (UNLISTEN - 536)) | (1L << (TRUSTED - 536)) | (1L << (VALIDATOR - 536)) | (1L << (UNTIL - 536)) | (1L << (VACUUM - 536)) | (1L << (VOLATILE - 536)) | (1L << (STORED - 536)) | (1L << (WRITE - 536)) | (1L << (STRICT - 536)) | (1L << (TYPES - 536)) | (1L << (WRAPPER - 536)) | (1L << (WORK - 536)) | (1L << (INT16 - 536)) | (1L << (INT1 - 536)) | (1L << (ELEM_CONTAINED_BY_RANGE - 536)) | (1L << (IDENTIFIER_ - 536)))) != 0) );
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CreatedbOptItemContext extends ParserRuleContext {
		public CreatedbOptNameContext createdbOptName() {
			return getRuleContext(CreatedbOptNameContext.class,0);
		}
		public SignedIconstContext signedIconst() {
			return getRuleContext(SignedIconstContext.class,0);
		}
		public TerminalNode EQ_() { return getToken(OpenGaussStatementParser.EQ_, 0); }
		public BooleanOrStringContext booleanOrString() {
			return getRuleContext(BooleanOrStringContext.class,0);
		}
		public TerminalNode DEFAULT() { return getToken(OpenGaussStatementParser.DEFAULT, 0); }
		public CreatedbOptItemContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_createdbOptItem; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitCreatedbOptItem(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CreatedbOptItemContext createdbOptItem() throws RecognitionException {
		CreatedbOptItemContext _localctx = new CreatedbOptItemContext(_ctx, getState());
		enterRule(_localctx, 916, RULE_createdbOptItem);
		int _la;
		try {
			setState(6684);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,590,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(6666);
				createdbOptName();
				setState(6668);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQ_) {
					{
					setState(6667);
					match(EQ_);
					}
				}

				setState(6670);
				signedIconst();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(6672);
				createdbOptName();
				setState(6674);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQ_) {
					{
					setState(6673);
					match(EQ_);
					}
				}

				setState(6676);
				booleanOrString();
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(6678);
				createdbOptName();
				setState(6680);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQ_) {
					{
					setState(6679);
					match(EQ_);
					}
				}

				setState(6682);
				match(DEFAULT);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterTableCmdsContext extends ParserRuleContext {
		public List alterTableCmd() {
			return getRuleContexts(AlterTableCmdContext.class);
		}
		public AlterTableCmdContext alterTableCmd(int i) {
			return getRuleContext(AlterTableCmdContext.class,i);
		}
		public List COMMA_() { return getTokens(OpenGaussStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(OpenGaussStatementParser.COMMA_, i);
		}
		public AlterTableCmdsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterTableCmds; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitAlterTableCmds(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AlterTableCmdsContext alterTableCmds() throws RecognitionException {
		AlterTableCmdsContext _localctx = new AlterTableCmdsContext(_ctx, getState());
		enterRule(_localctx, 918, RULE_alterTableCmds);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6686);
			alterTableCmd();
			setState(6691);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA_) {
				{
				{
				setState(6687);
				match(COMMA_);
				setState(6688);
				alterTableCmd();
				}
				}
				setState(6693);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterTableCmdContext extends ParserRuleContext {
		public TerminalNode ADD() { return getToken(OpenGaussStatementParser.ADD, 0); }
		public ColumnDefContext columnDef() {
			return getRuleContext(ColumnDefContext.class,0);
		}
		public TerminalNode COLUMN() { return getToken(OpenGaussStatementParser.COLUMN, 0); }
		public IfNotExistsContext ifNotExists() {
			return getRuleContext(IfNotExistsContext.class,0);
		}
		public TerminalNode ALTER() { return getToken(OpenGaussStatementParser.ALTER, 0); }
		public List colId() {
			return getRuleContexts(ColIdContext.class);
		}
		public ColIdContext colId(int i) {
			return getRuleContext(ColIdContext.class,i);
		}
		public AlterColumnDefaultContext alterColumnDefault() {
			return getRuleContext(AlterColumnDefaultContext.class,0);
		}
		public TerminalNode DROP() { return getToken(OpenGaussStatementParser.DROP, 0); }
		public TerminalNode NOT() { return getToken(OpenGaussStatementParser.NOT, 0); }
		public TerminalNode NULL() { return getToken(OpenGaussStatementParser.NULL, 0); }
		public TerminalNode SET() { return getToken(OpenGaussStatementParser.SET, 0); }
		public TerminalNode STATISTICS() { return getToken(OpenGaussStatementParser.STATISTICS, 0); }
		public SignedIconstContext signedIconst() {
			return getRuleContext(SignedIconstContext.class,0);
		}
		public TerminalNode NUMBER_() { return getToken(OpenGaussStatementParser.NUMBER_, 0); }
		public ReloptionsContext reloptions() {
			return getRuleContext(ReloptionsContext.class,0);
		}
		public TerminalNode RESET() { return getToken(OpenGaussStatementParser.RESET, 0); }
		public TerminalNode STORAGE() { return getToken(OpenGaussStatementParser.STORAGE, 0); }
		public TerminalNode GENERATED() { return getToken(OpenGaussStatementParser.GENERATED, 0); }
		public GeneratedWhenContext generatedWhen() {
			return getRuleContext(GeneratedWhenContext.class,0);
		}
		public TerminalNode AS() { return getToken(OpenGaussStatementParser.AS, 0); }
		public TerminalNode IDENTITY() { return getToken(OpenGaussStatementParser.IDENTITY, 0); }
		public ParenthesizedSeqOptListContext parenthesizedSeqOptList() {
			return getRuleContext(ParenthesizedSeqOptListContext.class,0);
		}
		public AlterIdentityColumnOptionListContext alterIdentityColumnOptionList() {
			return getRuleContext(AlterIdentityColumnOptionListContext.class,0);
		}
		public IfExistsContext ifExists() {
			return getRuleContext(IfExistsContext.class,0);
		}
		public DropBehaviorContext dropBehavior() {
			return getRuleContext(DropBehaviorContext.class,0);
		}
		public TerminalNode TYPE() { return getToken(OpenGaussStatementParser.TYPE, 0); }
		public TypeNameContext typeName() {
			return getRuleContext(TypeNameContext.class,0);
		}
		public SetDataContext setData() {
			return getRuleContext(SetDataContext.class,0);
		}
		public CollateClauseContext collateClause() {
			return getRuleContext(CollateClauseContext.class,0);
		}
		public AlterUsingContext alterUsing() {
			return getRuleContext(AlterUsingContext.class,0);
		}
		public AlterGenericOptionsContext alterGenericOptions() {
			return getRuleContext(AlterGenericOptionsContext.class,0);
		}
		public TableConstraintContext tableConstraint() {
			return getRuleContext(TableConstraintContext.class,0);
		}
		public TerminalNode VALID() { return getToken(OpenGaussStatementParser.VALID, 0); }
		public TerminalNode CONSTRAINT() { return getToken(OpenGaussStatementParser.CONSTRAINT, 0); }
		public NameContext name() {
			return getRuleContext(NameContext.class,0);
		}
		public ConstraintAttributeSpecContext constraintAttributeSpec() {
			return getRuleContext(ConstraintAttributeSpecContext.class,0);
		}
		public TerminalNode VALIDATE() { return getToken(OpenGaussStatementParser.VALIDATE, 0); }
		public TerminalNode WITHOUT() { return getToken(OpenGaussStatementParser.WITHOUT, 0); }
		public TerminalNode OIDS() { return getToken(OpenGaussStatementParser.OIDS, 0); }
		public TerminalNode CLUSTER() { return getToken(OpenGaussStatementParser.CLUSTER, 0); }
		public TerminalNode ON() { return getToken(OpenGaussStatementParser.ON, 0); }
		public TerminalNode LOGGED() { return getToken(OpenGaussStatementParser.LOGGED, 0); }
		public TerminalNode UNLOGGED() { return getToken(OpenGaussStatementParser.UNLOGGED, 0); }
		public TerminalNode ENABLE() { return getToken(OpenGaussStatementParser.ENABLE, 0); }
		public TerminalNode TRIGGER() { return getToken(OpenGaussStatementParser.TRIGGER, 0); }
		public TerminalNode ALWAYS() { return getToken(OpenGaussStatementParser.ALWAYS, 0); }
		public TerminalNode REPLICA() { return getToken(OpenGaussStatementParser.REPLICA, 0); }
		public TerminalNode ALL() { return getToken(OpenGaussStatementParser.ALL, 0); }
		public TerminalNode USER() { return getToken(OpenGaussStatementParser.USER, 0); }
		public TerminalNode DISABLE() { return getToken(OpenGaussStatementParser.DISABLE, 0); }
		public TerminalNode RULE() { return getToken(OpenGaussStatementParser.RULE, 0); }
		public TerminalNode INHERIT() { return getToken(OpenGaussStatementParser.INHERIT, 0); }
		public QualifiedNameContext qualifiedName() {
			return getRuleContext(QualifiedNameContext.class,0);
		}
		public TerminalNode NO() { return getToken(OpenGaussStatementParser.NO, 0); }
		public TerminalNode OF() { return getToken(OpenGaussStatementParser.OF, 0); }
		public AnyNameContext anyName() {
			return getRuleContext(AnyNameContext.class,0);
		}
		public TerminalNode OWNER() { return getToken(OpenGaussStatementParser.OWNER, 0); }
		public TerminalNode TO() { return getToken(OpenGaussStatementParser.TO, 0); }
		public RoleSpecContext roleSpec() {
			return getRuleContext(RoleSpecContext.class,0);
		}
		public TerminalNode TABLESPACE() { return getToken(OpenGaussStatementParser.TABLESPACE, 0); }
		public ReplicaIdentityContext replicaIdentity() {
			return getRuleContext(ReplicaIdentityContext.class,0);
		}
		public TerminalNode ROW() { return getToken(OpenGaussStatementParser.ROW, 0); }
		public TerminalNode LEVEL() { return getToken(OpenGaussStatementParser.LEVEL, 0); }
		public TerminalNode SECURITY() { return getToken(OpenGaussStatementParser.SECURITY, 0); }
		public TerminalNode FORCE() { return getToken(OpenGaussStatementParser.FORCE, 0); }
		public AlterTableCmdContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterTableCmd; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitAlterTableCmd(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AlterTableCmdContext alterTableCmd() throws RecognitionException {
		AlterTableCmdContext _localctx = new AlterTableCmdContext(_ctx, getState());
		enterRule(_localctx, 920, RULE_alterTableCmd);
		int _la;
		try {
			setState(6966);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,619,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(6694);
				match(ADD);
				setState(6696);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==COLUMN) {
					{
					setState(6695);
					match(COLUMN);
					}
				}

				setState(6699);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,593,_ctx) ) {
				case 1:
					{
					setState(6698);
					ifNotExists();
					}
					break;
				}
				setState(6701);
				columnDef();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(6702);
				match(ALTER);
				setState(6704);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==COLUMN) {
					{
					setState(6703);
					match(COLUMN);
					}
				}

				setState(6706);
				colId();
				setState(6707);
				alterColumnDefault();
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(6709);
				match(ALTER);
				setState(6711);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==COLUMN) {
					{
					setState(6710);
					match(COLUMN);
					}
				}

				setState(6713);
				colId();
				setState(6714);
				match(DROP);
				setState(6715);
				match(NOT);
				setState(6716);
				match(NULL);
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(6718);
				match(ALTER);
				setState(6720);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==COLUMN) {
					{
					setState(6719);
					match(COLUMN);
					}
				}

				setState(6722);
				colId();
				setState(6723);
				match(SET);
				setState(6724);
				match(NOT);
				setState(6725);
				match(NULL);
				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(6727);
				match(ALTER);
				setState(6729);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==COLUMN) {
					{
					setState(6728);
					match(COLUMN);
					}
				}

				setState(6731);
				colId();
				setState(6732);
				match(SET);
				setState(6733);
				match(STATISTICS);
				setState(6734);
				signedIconst();
				}
				break;
			case 6:
				enterOuterAlt(_localctx, 6);
				{
				setState(6736);
				match(ALTER);
				setState(6738);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==COLUMN) {
					{
					setState(6737);
					match(COLUMN);
					}
				}

				setState(6740);
				match(NUMBER_);
				setState(6741);
				match(SET);
				setState(6742);
				match(STATISTICS);
				setState(6743);
				signedIconst();
				}
				break;
			case 7:
				enterOuterAlt(_localctx, 7);
				{
				setState(6744);
				match(ALTER);
				setState(6746);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==COLUMN) {
					{
					setState(6745);
					match(COLUMN);
					}
				}

				setState(6748);
				colId();
				setState(6749);
				match(SET);
				setState(6750);
				reloptions();
				}
				break;
			case 8:
				enterOuterAlt(_localctx, 8);
				{
				setState(6752);
				match(ALTER);
				setState(6754);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==COLUMN) {
					{
					setState(6753);
					match(COLUMN);
					}
				}

				setState(6756);
				colId();
				setState(6757);
				match(RESET);
				setState(6758);
				reloptions();
				}
				break;
			case 9:
				enterOuterAlt(_localctx, 9);
				{
				setState(6760);
				match(ALTER);
				setState(6762);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==COLUMN) {
					{
					setState(6761);
					match(COLUMN);
					}
				}

				setState(6764);
				colId();
				setState(6765);
				match(SET);
				setState(6766);
				match(STORAGE);
				setState(6767);
				colId();
				}
				break;
			case 10:
				enterOuterAlt(_localctx, 10);
				{
				setState(6769);
				match(ALTER);
				setState(6771);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==COLUMN) {
					{
					setState(6770);
					match(COLUMN);
					}
				}

				setState(6773);
				colId();
				setState(6774);
				match(ADD);
				setState(6775);
				match(GENERATED);
				setState(6776);
				generatedWhen();
				setState(6777);
				match(AS);
				setState(6778);
				match(IDENTITY);
				setState(6780);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==LP_) {
					{
					setState(6779);
					parenthesizedSeqOptList();
					}
				}

				}
				break;
			case 11:
				enterOuterAlt(_localctx, 11);
				{
				setState(6782);
				match(ALTER);
				setState(6784);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==COLUMN) {
					{
					setState(6783);
					match(COLUMN);
					}
				}

				setState(6786);
				colId();
				setState(6787);
				alterIdentityColumnOptionList();
				}
				break;
			case 12:
				enterOuterAlt(_localctx, 12);
				{
				setState(6789);
				match(ALTER);
				setState(6791);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==COLUMN) {
					{
					setState(6790);
					match(COLUMN);
					}
				}

				setState(6793);
				colId();
				setState(6794);
				match(DROP);
				setState(6795);
				match(IDENTITY);
				}
				break;
			case 13:
				enterOuterAlt(_localctx, 13);
				{
				setState(6797);
				match(ALTER);
				setState(6799);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==COLUMN) {
					{
					setState(6798);
					match(COLUMN);
					}
				}

				setState(6801);
				colId();
				setState(6802);
				match(DROP);
				setState(6803);
				match(IDENTITY);
				setState(6804);
				ifExists();
				}
				break;
			case 14:
				enterOuterAlt(_localctx, 14);
				{
				setState(6806);
				match(DROP);
				setState(6808);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==COLUMN) {
					{
					setState(6807);
					match(COLUMN);
					}
				}

				setState(6810);
				ifExists();
				setState(6811);
				colId();
				setState(6813);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==CASCADE || _la==RESTRICT) {
					{
					setState(6812);
					dropBehavior();
					}
				}

				}
				break;
			case 15:
				enterOuterAlt(_localctx, 15);
				{
				setState(6815);
				match(DROP);
				setState(6817);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==COLUMN) {
					{
					setState(6816);
					match(COLUMN);
					}
				}

				setState(6819);
				colId();
				setState(6821);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==CASCADE || _la==RESTRICT) {
					{
					setState(6820);
					dropBehavior();
					}
				}

				}
				break;
			case 16:
				enterOuterAlt(_localctx, 16);
				{
				setState(6823);
				match(ALTER);
				setState(6825);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==COLUMN) {
					{
					setState(6824);
					match(COLUMN);
					}
				}

				setState(6827);
				colId();
				setState(6829);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==SET) {
					{
					setState(6828);
					setData();
					}
				}

				setState(6831);
				match(TYPE);
				setState(6832);
				typeName();
				setState(6834);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==COLLATE) {
					{
					setState(6833);
					collateClause();
					}
				}

				setState(6837);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==USING) {
					{
					setState(6836);
					alterUsing();
					}
				}

				}
				break;
			case 17:
				enterOuterAlt(_localctx, 17);
				{
				setState(6839);
				match(ALTER);
				setState(6841);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==COLUMN) {
					{
					setState(6840);
					match(COLUMN);
					}
				}

				setState(6843);
				colId();
				setState(6844);
				alterGenericOptions();
				}
				break;
			case 18:
				enterOuterAlt(_localctx, 18);
				{
				setState(6846);
				match(ADD);
				setState(6847);
				tableConstraint();
				setState(6850);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==NOT) {
					{
					setState(6848);
					match(NOT);
					setState(6849);
					match(VALID);
					}
				}

				}
				break;
			case 19:
				enterOuterAlt(_localctx, 19);
				{
				setState(6852);
				match(ALTER);
				setState(6853);
				match(CONSTRAINT);
				setState(6854);
				name();
				setState(6855);
				constraintAttributeSpec();
				}
				break;
			case 20:
				enterOuterAlt(_localctx, 20);
				{
				setState(6857);
				match(VALIDATE);
				setState(6858);
				match(CONSTRAINT);
				setState(6859);
				name();
				}
				break;
			case 21:
				enterOuterAlt(_localctx, 21);
				{
				setState(6860);
				match(DROP);
				setState(6861);
				match(CONSTRAINT);
				setState(6862);
				ifExists();
				setState(6863);
				name();
				setState(6865);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==CASCADE || _la==RESTRICT) {
					{
					setState(6864);
					dropBehavior();
					}
				}

				}
				break;
			case 22:
				enterOuterAlt(_localctx, 22);
				{
				setState(6867);
				match(DROP);
				setState(6868);
				match(CONSTRAINT);
				setState(6869);
				name();
				setState(6871);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==CASCADE || _la==RESTRICT) {
					{
					setState(6870);
					dropBehavior();
					}
				}

				}
				break;
			case 23:
				enterOuterAlt(_localctx, 23);
				{
				setState(6873);
				match(SET);
				setState(6874);
				match(WITHOUT);
				setState(6875);
				match(OIDS);
				}
				break;
			case 24:
				enterOuterAlt(_localctx, 24);
				{
				setState(6876);
				match(CLUSTER);
				setState(6877);
				match(ON);
				setState(6878);
				name();
				}
				break;
			case 25:
				enterOuterAlt(_localctx, 25);
				{
				setState(6879);
				match(SET);
				setState(6880);
				match(WITHOUT);
				setState(6881);
				match(CLUSTER);
				}
				break;
			case 26:
				enterOuterAlt(_localctx, 26);
				{
				setState(6882);
				match(SET);
				setState(6883);
				match(LOGGED);
				}
				break;
			case 27:
				enterOuterAlt(_localctx, 27);
				{
				setState(6884);
				match(SET);
				setState(6885);
				match(UNLOGGED);
				}
				break;
			case 28:
				enterOuterAlt(_localctx, 28);
				{
				setState(6886);
				match(ENABLE);
				setState(6887);
				match(TRIGGER);
				setState(6888);
				name();
				}
				break;
			case 29:
				enterOuterAlt(_localctx, 29);
				{
				setState(6889);
				match(ENABLE);
				setState(6890);
				match(ALWAYS);
				setState(6891);
				match(TRIGGER);
				setState(6892);
				name();
				}
				break;
			case 30:
				enterOuterAlt(_localctx, 30);
				{
				setState(6893);
				match(ENABLE);
				setState(6894);
				match(REPLICA);
				setState(6895);
				match(TRIGGER);
				setState(6896);
				name();
				}
				break;
			case 31:
				enterOuterAlt(_localctx, 31);
				{
				setState(6897);
				match(ENABLE);
				setState(6898);
				match(TRIGGER);
				setState(6899);
				match(ALL);
				}
				break;
			case 32:
				enterOuterAlt(_localctx, 32);
				{
				setState(6900);
				match(ENABLE);
				setState(6901);
				match(TRIGGER);
				setState(6902);
				match(USER);
				}
				break;
			case 33:
				enterOuterAlt(_localctx, 33);
				{
				setState(6903);
				match(DISABLE);
				setState(6904);
				match(TRIGGER);
				setState(6905);
				name();
				}
				break;
			case 34:
				enterOuterAlt(_localctx, 34);
				{
				setState(6906);
				match(DISABLE);
				setState(6907);
				match(TRIGGER);
				setState(6908);
				match(ALL);
				}
				break;
			case 35:
				enterOuterAlt(_localctx, 35);
				{
				setState(6909);
				match(DISABLE);
				setState(6910);
				match(TRIGGER);
				setState(6911);
				match(USER);
				}
				break;
			case 36:
				enterOuterAlt(_localctx, 36);
				{
				setState(6912);
				match(ENABLE);
				setState(6913);
				match(RULE);
				setState(6914);
				name();
				}
				break;
			case 37:
				enterOuterAlt(_localctx, 37);
				{
				setState(6915);
				match(ENABLE);
				setState(6916);
				match(ALWAYS);
				setState(6917);
				match(RULE);
				setState(6918);
				name();
				}
				break;
			case 38:
				enterOuterAlt(_localctx, 38);
				{
				setState(6919);
				match(ENABLE);
				setState(6920);
				match(REPLICA);
				setState(6921);
				match(RULE);
				setState(6922);
				name();
				}
				break;
			case 39:
				enterOuterAlt(_localctx, 39);
				{
				setState(6923);
				match(DISABLE);
				setState(6924);
				match(RULE);
				setState(6925);
				name();
				}
				break;
			case 40:
				enterOuterAlt(_localctx, 40);
				{
				setState(6926);
				match(INHERIT);
				setState(6927);
				qualifiedName();
				}
				break;
			case 41:
				enterOuterAlt(_localctx, 41);
				{
				setState(6928);
				match(NO);
				setState(6929);
				match(INHERIT);
				setState(6930);
				qualifiedName();
				}
				break;
			case 42:
				enterOuterAlt(_localctx, 42);
				{
				setState(6931);
				match(OF);
				setState(6932);
				anyName();
				}
				break;
			case 43:
				enterOuterAlt(_localctx, 43);
				{
				setState(6933);
				match(NOT);
				setState(6934);
				match(OF);
				}
				break;
			case 44:
				enterOuterAlt(_localctx, 44);
				{
				setState(6935);
				match(OWNER);
				setState(6936);
				match(TO);
				setState(6937);
				roleSpec();
				}
				break;
			case 45:
				enterOuterAlt(_localctx, 45);
				{
				setState(6938);
				match(SET);
				setState(6939);
				match(TABLESPACE);
				setState(6940);
				name();
				}
				break;
			case 46:
				enterOuterAlt(_localctx, 46);
				{
				setState(6941);
				match(SET);
				setState(6942);
				reloptions();
				}
				break;
			case 47:
				enterOuterAlt(_localctx, 47);
				{
				setState(6943);
				match(RESET);
				setState(6944);
				reloptions();
				}
				break;
			case 48:
				enterOuterAlt(_localctx, 48);
				{
				setState(6945);
				match(REPLICA);
				setState(6946);
				match(IDENTITY);
				setState(6947);
				replicaIdentity();
				}
				break;
			case 49:
				enterOuterAlt(_localctx, 49);
				{
				setState(6948);
				match(ENABLE);
				setState(6949);
				match(ROW);
				setState(6950);
				match(LEVEL);
				setState(6951);
				match(SECURITY);
				}
				break;
			case 50:
				enterOuterAlt(_localctx, 50);
				{
				setState(6952);
				match(DISABLE);
				setState(6953);
				match(ROW);
				setState(6954);
				match(LEVEL);
				setState(6955);
				match(SECURITY);
				}
				break;
			case 51:
				enterOuterAlt(_localctx, 51);
				{
				setState(6956);
				match(FORCE);
				setState(6957);
				match(ROW);
				setState(6958);
				match(LEVEL);
				setState(6959);
				match(SECURITY);
				}
				break;
			case 52:
				enterOuterAlt(_localctx, 52);
				{
				setState(6960);
				match(NO);
				setState(6961);
				match(FORCE);
				setState(6962);
				match(ROW);
				setState(6963);
				match(LEVEL);
				setState(6964);
				match(SECURITY);
				}
				break;
			case 53:
				enterOuterAlt(_localctx, 53);
				{
				setState(6965);
				alterGenericOptions();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ConstraintAttributeSpecContext extends ParserRuleContext {
		public List constraintAttributeElem() {
			return getRuleContexts(ConstraintAttributeElemContext.class);
		}
		public ConstraintAttributeElemContext constraintAttributeElem(int i) {
			return getRuleContext(ConstraintAttributeElemContext.class,i);
		}
		public ConstraintAttributeSpecContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_constraintAttributeSpec; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitConstraintAttributeSpec(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ConstraintAttributeSpecContext constraintAttributeSpec() throws RecognitionException {
		ConstraintAttributeSpecContext _localctx = new ConstraintAttributeSpecContext(_ctx, getState());
		enterRule(_localctx, 922, RULE_constraintAttributeSpec);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6971);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==NOT || ((((_la - 255)) & ~0x3f) == 0 && ((1L << (_la - 255)) & ((1L << (NO - 255)) | (1L << (DEFERRABLE - 255)) | (1L << (INITIALLY - 255)))) != 0)) {
				{
				{
				setState(6968);
				constraintAttributeElem();
				}
				}
				setState(6973);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ConstraintAttributeElemContext extends ParserRuleContext {
		public TerminalNode NOT() { return getToken(OpenGaussStatementParser.NOT, 0); }
		public TerminalNode DEFERRABLE() { return getToken(OpenGaussStatementParser.DEFERRABLE, 0); }
		public TerminalNode INITIALLY() { return getToken(OpenGaussStatementParser.INITIALLY, 0); }
		public TerminalNode IMMEDIATE() { return getToken(OpenGaussStatementParser.IMMEDIATE, 0); }
		public TerminalNode DEFERRED() { return getToken(OpenGaussStatementParser.DEFERRED, 0); }
		public TerminalNode VALID() { return getToken(OpenGaussStatementParser.VALID, 0); }
		public TerminalNode NO() { return getToken(OpenGaussStatementParser.NO, 0); }
		public TerminalNode INHERIT() { return getToken(OpenGaussStatementParser.INHERIT, 0); }
		public ConstraintAttributeElemContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_constraintAttributeElem; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitConstraintAttributeElem(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ConstraintAttributeElemContext constraintAttributeElem() throws RecognitionException {
		ConstraintAttributeElemContext _localctx = new ConstraintAttributeElemContext(_ctx, getState());
		enterRule(_localctx, 924, RULE_constraintAttributeElem);
		try {
			setState(6985);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,621,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(6974);
				match(NOT);
				setState(6975);
				match(DEFERRABLE);
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(6976);
				match(DEFERRABLE);
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(6977);
				match(INITIALLY);
				setState(6978);
				match(IMMEDIATE);
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(6979);
				match(INITIALLY);
				setState(6980);
				match(DEFERRED);
				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(6981);
				match(NOT);
				setState(6982);
				match(VALID);
				}
				break;
			case 6:
				enterOuterAlt(_localctx, 6);
				{
				setState(6983);
				match(NO);
				setState(6984);
				match(INHERIT);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterGenericOptionsContext extends ParserRuleContext {
		public TerminalNode OPTIONS() { return getToken(OpenGaussStatementParser.OPTIONS, 0); }
		public TerminalNode LP_() { return getToken(OpenGaussStatementParser.LP_, 0); }
		public AlterGenericOptionListContext alterGenericOptionList() {
			return getRuleContext(AlterGenericOptionListContext.class,0);
		}
		public TerminalNode RP_() { return getToken(OpenGaussStatementParser.RP_, 0); }
		public AlterGenericOptionsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterGenericOptions; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitAlterGenericOptions(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AlterGenericOptionsContext alterGenericOptions() throws RecognitionException {
		AlterGenericOptionsContext _localctx = new AlterGenericOptionsContext(_ctx, getState());
		enterRule(_localctx, 926, RULE_alterGenericOptions);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6987);
			match(OPTIONS);
			setState(6988);
			match(LP_);
			setState(6989);
			alterGenericOptionList();
			setState(6990);
			match(RP_);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterGenericOptionListContext extends ParserRuleContext {
		public List alterGenericOptionElem() {
			return getRuleContexts(AlterGenericOptionElemContext.class);
		}
		public AlterGenericOptionElemContext alterGenericOptionElem(int i) {
			return getRuleContext(AlterGenericOptionElemContext.class,i);
		}
		public List COMMA_() { return getTokens(OpenGaussStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(OpenGaussStatementParser.COMMA_, i);
		}
		public AlterGenericOptionListContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterGenericOptionList; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitAlterGenericOptionList(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AlterGenericOptionListContext alterGenericOptionList() throws RecognitionException {
		AlterGenericOptionListContext _localctx = new AlterGenericOptionListContext(_ctx, getState());
		enterRule(_localctx, 928, RULE_alterGenericOptionList);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6992);
			alterGenericOptionElem();
			setState(6997);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA_) {
				{
				{
				setState(6993);
				match(COMMA_);
				setState(6994);
				alterGenericOptionElem();
				}
				}
				setState(6999);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterGenericOptionElemContext extends ParserRuleContext {
		public GenericOptionElemContext genericOptionElem() {
			return getRuleContext(GenericOptionElemContext.class,0);
		}
		public TerminalNode SET() { return getToken(OpenGaussStatementParser.SET, 0); }
		public TerminalNode ADD() { return getToken(OpenGaussStatementParser.ADD, 0); }
		public TerminalNode DROP() { return getToken(OpenGaussStatementParser.DROP, 0); }
		public GenericOptionNameContext genericOptionName() {
			return getRuleContext(GenericOptionNameContext.class,0);
		}
		public AlterGenericOptionElemContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterGenericOptionElem; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitAlterGenericOptionElem(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AlterGenericOptionElemContext alterGenericOptionElem() throws RecognitionException {
		AlterGenericOptionElemContext _localctx = new AlterGenericOptionElemContext(_ctx, getState());
		enterRule(_localctx, 930, RULE_alterGenericOptionElem);
		try {
			setState(7007);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,623,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(7000);
				genericOptionElem();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(7001);
				match(SET);
				setState(7002);
				genericOptionElem();
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(7003);
				match(ADD);
				setState(7004);
				genericOptionElem();
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(7005);
				match(DROP);
				setState(7006);
				genericOptionName();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterUsingContext extends ParserRuleContext {
		public TerminalNode USING() { return getToken(OpenGaussStatementParser.USING, 0); }
		public AExprContext aExpr() {
			return getRuleContext(AExprContext.class,0);
		}
		public AlterUsingContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterUsing; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitAlterUsing(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AlterUsingContext alterUsing() throws RecognitionException {
		AlterUsingContext _localctx = new AlterUsingContext(_ctx, getState());
		enterRule(_localctx, 932, RULE_alterUsing);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7009);
			match(USING);
			setState(7010);
			aExpr(0);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class SetDataContext extends ParserRuleContext {
		public TerminalNode SET() { return getToken(OpenGaussStatementParser.SET, 0); }
		public TerminalNode DATA() { return getToken(OpenGaussStatementParser.DATA, 0); }
		public SetDataContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_setData; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitSetData(this);
			else return visitor.visitChildren(this);
		}
	}

	public final SetDataContext setData() throws RecognitionException {
		SetDataContext _localctx = new SetDataContext(_ctx, getState());
		enterRule(_localctx, 934, RULE_setData);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7012);
			match(SET);
			setState(7013);
			match(DATA);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterIdentityColumnOptionListContext extends ParserRuleContext {
		public List alterIdentityColumnOption() {
			return getRuleContexts(AlterIdentityColumnOptionContext.class);
		}
		public AlterIdentityColumnOptionContext alterIdentityColumnOption(int i) {
			return getRuleContext(AlterIdentityColumnOptionContext.class,i);
		}
		public AlterIdentityColumnOptionListContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterIdentityColumnOptionList; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitAlterIdentityColumnOptionList(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AlterIdentityColumnOptionListContext alterIdentityColumnOptionList() throws RecognitionException {
		AlterIdentityColumnOptionListContext _localctx = new AlterIdentityColumnOptionListContext(_ctx, getState());
		enterRule(_localctx, 936, RULE_alterIdentityColumnOptionList);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7016); 
			_errHandler.sync(this);
			_la = _input.LA(1);
			do {
				{
				{
				setState(7015);
				alterIdentityColumnOption();
				}
				}
				setState(7018); 
				_errHandler.sync(this);
				_la = _input.LA(1);
			} while ( _la==SET || _la==RESTART );
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterIdentityColumnOptionContext extends ParserRuleContext {
		public TerminalNode RESTART() { return getToken(OpenGaussStatementParser.RESTART, 0); }
		public NumericOnlyContext numericOnly() {
			return getRuleContext(NumericOnlyContext.class,0);
		}
		public TerminalNode WITH() { return getToken(OpenGaussStatementParser.WITH, 0); }
		public TerminalNode SET() { return getToken(OpenGaussStatementParser.SET, 0); }
		public SeqOptElemContext seqOptElem() {
			return getRuleContext(SeqOptElemContext.class,0);
		}
		public TerminalNode GENERATED() { return getToken(OpenGaussStatementParser.GENERATED, 0); }
		public GeneratedWhenContext generatedWhen() {
			return getRuleContext(GeneratedWhenContext.class,0);
		}
		public AlterIdentityColumnOptionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterIdentityColumnOption; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitAlterIdentityColumnOption(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AlterIdentityColumnOptionContext alterIdentityColumnOption() throws RecognitionException {
		AlterIdentityColumnOptionContext _localctx = new AlterIdentityColumnOptionContext(_ctx, getState());
		enterRule(_localctx, 938, RULE_alterIdentityColumnOption);
		int _la;
		try {
			setState(7031);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,626,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(7020);
				match(RESTART);
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(7021);
				match(RESTART);
				setState(7023);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==WITH) {
					{
					setState(7022);
					match(WITH);
					}
				}

				setState(7025);
				numericOnly();
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(7026);
				match(SET);
				setState(7027);
				seqOptElem();
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(7028);
				match(SET);
				setState(7029);
				match(GENERATED);
				setState(7030);
				generatedWhen();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterColumnDefaultContext extends ParserRuleContext {
		public TerminalNode SET() { return getToken(OpenGaussStatementParser.SET, 0); }
		public TerminalNode DEFAULT() { return getToken(OpenGaussStatementParser.DEFAULT, 0); }
		public AExprContext aExpr() {
			return getRuleContext(AExprContext.class,0);
		}
		public TerminalNode DROP() { return getToken(OpenGaussStatementParser.DROP, 0); }
		public AlterColumnDefaultContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterColumnDefault; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitAlterColumnDefault(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AlterColumnDefaultContext alterColumnDefault() throws RecognitionException {
		AlterColumnDefaultContext _localctx = new AlterColumnDefaultContext(_ctx, getState());
		enterRule(_localctx, 940, RULE_alterColumnDefault);
		try {
			setState(7038);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case SET:
				enterOuterAlt(_localctx, 1);
				{
				setState(7033);
				match(SET);
				setState(7034);
				match(DEFAULT);
				setState(7035);
				aExpr(0);
				}
				break;
			case DROP:
				enterOuterAlt(_localctx, 2);
				{
				setState(7036);
				match(DROP);
				setState(7037);
				match(DEFAULT);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterOperatorContext extends ParserRuleContext {
		public TerminalNode ALTER() { return getToken(OpenGaussStatementParser.ALTER, 0); }
		public TerminalNode OPERATOR() { return getToken(OpenGaussStatementParser.OPERATOR, 0); }
		public AlterOperatorClausesContext alterOperatorClauses() {
			return getRuleContext(AlterOperatorClausesContext.class,0);
		}
		public AlterOperatorContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterOperator; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitAlterOperator(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AlterOperatorContext alterOperator() throws RecognitionException {
		AlterOperatorContext _localctx = new AlterOperatorContext(_ctx, getState());
		enterRule(_localctx, 942, RULE_alterOperator);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7040);
			match(ALTER);
			setState(7041);
			match(OPERATOR);
			setState(7042);
			alterOperatorClauses();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterOperatorClassContext extends ParserRuleContext {
		public TerminalNode ALTER() { return getToken(OpenGaussStatementParser.ALTER, 0); }
		public TerminalNode OPERATOR() { return getToken(OpenGaussStatementParser.OPERATOR, 0); }
		public TerminalNode CLASS() { return getToken(OpenGaussStatementParser.CLASS, 0); }
		public AnyNameContext anyName() {
			return getRuleContext(AnyNameContext.class,0);
		}
		public TerminalNode USING() { return getToken(OpenGaussStatementParser.USING, 0); }
		public NameContext name() {
			return getRuleContext(NameContext.class,0);
		}
		public AlterOperatorClassClausesContext alterOperatorClassClauses() {
			return getRuleContext(AlterOperatorClassClausesContext.class,0);
		}
		public AlterOperatorClassContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterOperatorClass; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitAlterOperatorClass(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AlterOperatorClassContext alterOperatorClass() throws RecognitionException {
		AlterOperatorClassContext _localctx = new AlterOperatorClassContext(_ctx, getState());
		enterRule(_localctx, 944, RULE_alterOperatorClass);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7044);
			match(ALTER);
			setState(7045);
			match(OPERATOR);
			setState(7046);
			match(CLASS);
			setState(7047);
			anyName();
			setState(7048);
			match(USING);
			setState(7049);
			name();
			setState(7050);
			alterOperatorClassClauses();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterOperatorClassClausesContext extends ParserRuleContext {
		public TerminalNode RENAME() { return getToken(OpenGaussStatementParser.RENAME, 0); }
		public TerminalNode TO() { return getToken(OpenGaussStatementParser.TO, 0); }
		public NameContext name() {
			return getRuleContext(NameContext.class,0);
		}
		public TerminalNode SET() { return getToken(OpenGaussStatementParser.SET, 0); }
		public TerminalNode SCHEMA() { return getToken(OpenGaussStatementParser.SCHEMA, 0); }
		public TerminalNode OWNER() { return getToken(OpenGaussStatementParser.OWNER, 0); }
		public RoleSpecContext roleSpec() {
			return getRuleContext(RoleSpecContext.class,0);
		}
		public AlterOperatorClassClausesContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterOperatorClassClauses; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitAlterOperatorClassClauses(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AlterOperatorClassClausesContext alterOperatorClassClauses() throws RecognitionException {
		AlterOperatorClassClausesContext _localctx = new AlterOperatorClassClausesContext(_ctx, getState());
		enterRule(_localctx, 946, RULE_alterOperatorClassClauses);
		try {
			setState(7061);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case RENAME:
				enterOuterAlt(_localctx, 1);
				{
				setState(7052);
				match(RENAME);
				setState(7053);
				match(TO);
				setState(7054);
				name();
				}
				break;
			case SET:
				enterOuterAlt(_localctx, 2);
				{
				setState(7055);
				match(SET);
				setState(7056);
				match(SCHEMA);
				setState(7057);
				name();
				}
				break;
			case OWNER:
				enterOuterAlt(_localctx, 3);
				{
				setState(7058);
				match(OWNER);
				setState(7059);
				match(TO);
				setState(7060);
				roleSpec();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterOperatorFamilyContext extends ParserRuleContext {
		public TerminalNode ALTER() { return getToken(OpenGaussStatementParser.ALTER, 0); }
		public TerminalNode OPERATOR() { return getToken(OpenGaussStatementParser.OPERATOR, 0); }
		public TerminalNode FAMILY() { return getToken(OpenGaussStatementParser.FAMILY, 0); }
		public AnyNameContext anyName() {
			return getRuleContext(AnyNameContext.class,0);
		}
		public TerminalNode USING() { return getToken(OpenGaussStatementParser.USING, 0); }
		public NameContext name() {
			return getRuleContext(NameContext.class,0);
		}
		public AlterOperatorFamilyClausesContext alterOperatorFamilyClauses() {
			return getRuleContext(AlterOperatorFamilyClausesContext.class,0);
		}
		public AlterOperatorFamilyContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterOperatorFamily; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitAlterOperatorFamily(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AlterOperatorFamilyContext alterOperatorFamily() throws RecognitionException {
		AlterOperatorFamilyContext _localctx = new AlterOperatorFamilyContext(_ctx, getState());
		enterRule(_localctx, 948, RULE_alterOperatorFamily);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7063);
			match(ALTER);
			setState(7064);
			match(OPERATOR);
			setState(7065);
			match(FAMILY);
			setState(7066);
			anyName();
			setState(7067);
			match(USING);
			setState(7068);
			name();
			setState(7069);
			alterOperatorFamilyClauses();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterOperatorFamilyClausesContext extends ParserRuleContext {
		public OpclassItemListContext opclassItemList() {
			return getRuleContext(OpclassItemListContext.class,0);
		}
		public TerminalNode ADD() { return getToken(OpenGaussStatementParser.ADD, 0); }
		public TerminalNode DROP() { return getToken(OpenGaussStatementParser.DROP, 0); }
		public AlterOperatorClassClausesContext alterOperatorClassClauses() {
			return getRuleContext(AlterOperatorClassClausesContext.class,0);
		}
		public AlterOperatorFamilyClausesContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterOperatorFamilyClauses; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitAlterOperatorFamilyClauses(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AlterOperatorFamilyClausesContext alterOperatorFamilyClauses() throws RecognitionException {
		AlterOperatorFamilyClausesContext _localctx = new AlterOperatorFamilyClausesContext(_ctx, getState());
		enterRule(_localctx, 950, RULE_alterOperatorFamilyClauses);
		int _la;
		try {
			setState(7074);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case DROP:
			case ADD:
				enterOuterAlt(_localctx, 1);
				{
				setState(7071);
				_la = _input.LA(1);
				if ( !(_la==DROP || _la==ADD) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(7072);
				opclassItemList();
				}
				break;
			case SET:
			case OWNER:
			case RENAME:
				enterOuterAlt(_localctx, 2);
				{
				setState(7073);
				alterOperatorClassClauses();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class OpclassItemListContext extends ParserRuleContext {
		public List opclassItem() {
			return getRuleContexts(OpclassItemContext.class);
		}
		public OpclassItemContext opclassItem(int i) {
			return getRuleContext(OpclassItemContext.class,i);
		}
		public List COMMA_() { return getTokens(OpenGaussStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(OpenGaussStatementParser.COMMA_, i);
		}
		public OpclassItemListContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_opclassItemList; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitOpclassItemList(this);
			else return visitor.visitChildren(this);
		}
	}

	public final OpclassItemListContext opclassItemList() throws RecognitionException {
		OpclassItemListContext _localctx = new OpclassItemListContext(_ctx, getState());
		enterRule(_localctx, 952, RULE_opclassItemList);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7076);
			opclassItem();
			setState(7081);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA_) {
				{
				{
				setState(7077);
				match(COMMA_);
				setState(7078);
				opclassItem();
				}
				}
				setState(7083);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class OpclassItemContext extends ParserRuleContext {
		public TerminalNode OPERATOR() { return getToken(OpenGaussStatementParser.OPERATOR, 0); }
		public TerminalNode NUMBER_() { return getToken(OpenGaussStatementParser.NUMBER_, 0); }
		public AnyOperatorContext anyOperator() {
			return getRuleContext(AnyOperatorContext.class,0);
		}
		public OpclassPurposeContext opclassPurpose() {
			return getRuleContext(OpclassPurposeContext.class,0);
		}
		public TerminalNode RECHECK() { return getToken(OpenGaussStatementParser.RECHECK, 0); }
		public OperatorWithArgtypesContext operatorWithArgtypes() {
			return getRuleContext(OperatorWithArgtypesContext.class,0);
		}
		public TerminalNode FUNCTION() { return getToken(OpenGaussStatementParser.FUNCTION, 0); }
		public FunctionWithArgtypesContext functionWithArgtypes() {
			return getRuleContext(FunctionWithArgtypesContext.class,0);
		}
		public TerminalNode LP_() { return getToken(OpenGaussStatementParser.LP_, 0); }
		public TypeListContext typeList() {
			return getRuleContext(TypeListContext.class,0);
		}
		public TerminalNode RP_() { return getToken(OpenGaussStatementParser.RP_, 0); }
		public TerminalNode STORAGE() { return getToken(OpenGaussStatementParser.STORAGE, 0); }
		public TypeNameContext typeName() {
			return getRuleContext(TypeNameContext.class,0);
		}
		public OpclassItemContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_opclassItem; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitOpclassItem(this);
			else return visitor.visitChildren(this);
		}
	}

	public final OpclassItemContext opclassItem() throws RecognitionException {
		OpclassItemContext _localctx = new OpclassItemContext(_ctx, getState());
		enterRule(_localctx, 954, RULE_opclassItem);
		int _la;
		try {
			setState(7114);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,635,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(7084);
				match(OPERATOR);
				setState(7085);
				match(NUMBER_);
				setState(7086);
				anyOperator();
				setState(7088);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==FOR) {
					{
					setState(7087);
					opclassPurpose();
					}
				}

				setState(7091);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==RECHECK) {
					{
					setState(7090);
					match(RECHECK);
					}
				}

				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(7093);
				match(OPERATOR);
				setState(7094);
				match(NUMBER_);
				setState(7095);
				operatorWithArgtypes();
				setState(7097);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==FOR) {
					{
					setState(7096);
					opclassPurpose();
					}
				}

				setState(7100);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==RECHECK) {
					{
					setState(7099);
					match(RECHECK);
					}
				}

				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(7102);
				match(FUNCTION);
				setState(7103);
				match(NUMBER_);
				setState(7104);
				functionWithArgtypes();
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(7105);
				match(FUNCTION);
				setState(7106);
				match(NUMBER_);
				setState(7107);
				match(LP_);
				setState(7108);
				typeList();
				setState(7109);
				match(RP_);
				setState(7110);
				functionWithArgtypes();
				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(7112);
				match(STORAGE);
				setState(7113);
				typeName();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class OpclassPurposeContext extends ParserRuleContext {
		public TerminalNode FOR() { return getToken(OpenGaussStatementParser.FOR, 0); }
		public TerminalNode SEARCH() { return getToken(OpenGaussStatementParser.SEARCH, 0); }
		public TerminalNode ORDER() { return getToken(OpenGaussStatementParser.ORDER, 0); }
		public TerminalNode BY() { return getToken(OpenGaussStatementParser.BY, 0); }
		public AnyNameContext anyName() {
			return getRuleContext(AnyNameContext.class,0);
		}
		public OpclassPurposeContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_opclassPurpose; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitOpclassPurpose(this);
			else return visitor.visitChildren(this);
		}
	}

	public final OpclassPurposeContext opclassPurpose() throws RecognitionException {
		OpclassPurposeContext _localctx = new OpclassPurposeContext(_ctx, getState());
		enterRule(_localctx, 956, RULE_opclassPurpose);
		try {
			setState(7122);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,636,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(7116);
				match(FOR);
				setState(7117);
				match(SEARCH);
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(7118);
				match(FOR);
				setState(7119);
				match(ORDER);
				setState(7120);
				match(BY);
				setState(7121);
				anyName();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterOperatorClausesContext extends ParserRuleContext {
		public OperatorWithArgtypesContext operatorWithArgtypes() {
			return getRuleContext(OperatorWithArgtypesContext.class,0);
		}
		public TerminalNode SET() { return getToken(OpenGaussStatementParser.SET, 0); }
		public TerminalNode SCHEMA() { return getToken(OpenGaussStatementParser.SCHEMA, 0); }
		public NameContext name() {
			return getRuleContext(NameContext.class,0);
		}
		public TerminalNode LP_() { return getToken(OpenGaussStatementParser.LP_, 0); }
		public OperatorDefListContext operatorDefList() {
			return getRuleContext(OperatorDefListContext.class,0);
		}
		public TerminalNode RP_() { return getToken(OpenGaussStatementParser.RP_, 0); }
		public TerminalNode OWNER() { return getToken(OpenGaussStatementParser.OWNER, 0); }
		public TerminalNode TO() { return getToken(OpenGaussStatementParser.TO, 0); }
		public RoleSpecContext roleSpec() {
			return getRuleContext(RoleSpecContext.class,0);
		}
		public AlterOperatorClausesContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterOperatorClauses; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitAlterOperatorClauses(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AlterOperatorClausesContext alterOperatorClauses() throws RecognitionException {
		AlterOperatorClausesContext _localctx = new AlterOperatorClausesContext(_ctx, getState());
		enterRule(_localctx, 958, RULE_alterOperatorClauses);
		try {
			setState(7140);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,637,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(7124);
				operatorWithArgtypes();
				setState(7125);
				match(SET);
				setState(7126);
				match(SCHEMA);
				setState(7127);
				name();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(7129);
				operatorWithArgtypes();
				setState(7130);
				match(SET);
				setState(7131);
				match(LP_);
				setState(7132);
				operatorDefList();
				setState(7133);
				match(RP_);
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(7135);
				operatorWithArgtypes();
				setState(7136);
				match(OWNER);
				setState(7137);
				match(TO);
				setState(7138);
				roleSpec();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class OperatorDefListContext extends ParserRuleContext {
		public List operatorDefElem() {
			return getRuleContexts(OperatorDefElemContext.class);
		}
		public OperatorDefElemContext operatorDefElem(int i) {
			return getRuleContext(OperatorDefElemContext.class,i);
		}
		public List COMMA_() { return getTokens(OpenGaussStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(OpenGaussStatementParser.COMMA_, i);
		}
		public OperatorDefListContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_operatorDefList; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitOperatorDefList(this);
			else return visitor.visitChildren(this);
		}
	}

	public final OperatorDefListContext operatorDefList() throws RecognitionException {
		OperatorDefListContext _localctx = new OperatorDefListContext(_ctx, getState());
		enterRule(_localctx, 960, RULE_operatorDefList);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7142);
			operatorDefElem();
			setState(7147);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA_) {
				{
				{
				setState(7143);
				match(COMMA_);
				setState(7144);
				operatorDefElem();
				}
				}
				setState(7149);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class OperatorDefElemContext extends ParserRuleContext {
		public ColLabelContext colLabel() {
			return getRuleContext(ColLabelContext.class,0);
		}
		public TerminalNode EQ_() { return getToken(OpenGaussStatementParser.EQ_, 0); }
		public TerminalNode NONE() { return getToken(OpenGaussStatementParser.NONE, 0); }
		public OperatorDefArgContext operatorDefArg() {
			return getRuleContext(OperatorDefArgContext.class,0);
		}
		public OperatorDefElemContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_operatorDefElem; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitOperatorDefElem(this);
			else return visitor.visitChildren(this);
		}
	}

	public final OperatorDefElemContext operatorDefElem() throws RecognitionException {
		OperatorDefElemContext _localctx = new OperatorDefElemContext(_ctx, getState());
		enterRule(_localctx, 962, RULE_operatorDefElem);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7150);
			colLabel();
			setState(7151);
			match(EQ_);
			setState(7154);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case NONE:
				{
				setState(7152);
				match(NONE);
				}
				break;
			case AND_:
			case OR_:
			case NOT_:
			case TILDE_:
			case VERTICAL_BAR_:
			case AMPERSAND_:
			case SIGNED_LEFT_SHIFT_:
			case SIGNED_RIGHT_SHIFT_:
			case CARET_:
			case MOD_:
			case COLON_:
			case PLUS_:
			case MINUS_:
			case ASTERISK_:
			case SLASH_:
			case BACKSLASH_:
			case DOT_:
			case DOT_ASTERISK_:
			case SAFE_EQ_:
			case DEQ_:
			case EQ_:
			case CQ_:
			case NEQ_:
			case GT_:
			case GTE_:
			case LT_:
			case LTE_:
			case POUND_:
			case LP_:
			case RP_:
			case LBE_:
			case RBE_:
			case LBT_:
			case RBT_:
			case COMMA_:
			case DQ_:
			case SQ_:
			case BQ_:
			case QUESTION_:
			case DOLLAR_:
			case AT_:
			case SEMI_:
			case TILDE_TILDE_:
			case NOT_TILDE_TILDE_:
			case TYPE_CAST_:
			case ILIKE_:
			case NOT_ILIKE_:
			case UNICODE_ESCAPE:
			case JSON_EXTRACT_:
			case JSON_EXTRACT_TEXT_:
			case JSON_PATH_EXTRACT_:
			case JSON_PATH_EXTRACT_TEXT_:
			case JSONB_CONTAIN_RIGHT_:
			case JSONB_CONTAIN_LEFT_:
			case JSONB_CONTAIN_ALL_TOP_KEY_:
			case JSONB_PATH_DELETE_:
			case JSONB_PATH_CONTAIN_ANY_VALUE_:
			case JSONB_PATH_PREDICATE_CHECK_:
			case GEOMETRIC_LENGTH_:
			case GEOMETRIC_DISTANCE_:
			case GEOMETRIC_EXTEND_RIGHT_:
			case GEOMETRIC_EXTEND_LEFT_:
			case GEOMETRIC_STRICT_BELOW_:
			case GEOMETRIC_STRICT_ABOVE_:
			case GEOMETRIC_EXTEND_ABOVE_:
			case GEOMETRIC_EXTEND_BELOW_:
			case GEOMETRIC_BELOW_:
			case GEOMETRIC_ABOVE_:
			case GEOMETRIC_INTERSECT_:
			case GEOMETRIC_PERPENDICULAR_:
			case GEOMETRIC_SAME_AS_:
			case SELECT:
			case INSERT:
			case UPDATE:
			case DELETE:
			case CREATE:
			case ALTER:
			case DROP:
			case TRUNCATE:
			case SCHEMA:
			case GRANT:
			case REVOKE:
			case ADD:
			case SET:
			case TABLE:
			case COLUMN:
			case INDEX:
			case CONSTRAINT:
			case PRIMARY:
			case UNIQUE:
			case FOREIGN:
			case KEY:
			case POSITION:
			case FUNCTION:
			case TRIGGER:
			case PROCEDURE:
			case VIEW:
			case INTO:
			case WITH:
			case UNION:
			case DISTINCT:
			case CASE:
			case WHEN:
			case CAST:
			case FROM:
			case NATURAL:
			case JOIN:
			case FULL:
			case INNER:
			case OUTER:
			case LEFT:
			case RIGHT:
			case CROSS:
			case USING:
			case WHERE:
			case AS:
			case ON:
			case IF:
			case ELSE:
			case THEN:
			case FOR:
			case TO:
			case AND:
			case OR:
			case IS:
			case NOT:
			case NULL:
			case TRUE:
			case FALSE:
			case IN:
			case ALL:
			case ANY:
			case LIKE:
			case ORDER:
			case GROUP:
			case BY:
			case ASC:
			case DESC:
			case HAVING:
			case LIMIT:
			case OFFSET:
			case BEGIN:
			case COMMIT:
			case ROLLBACK:
			case SAVEPOINT:
			case BOOLEAN:
			case DOUBLE:
			case CHAR:
			case CHARACTER:
			case ARRAY:
			case INTERVAL:
			case DATE:
			case TIME:
			case TIMESTAMP:
			case LOCALTIME:
			case LOCALTIMESTAMP:
			case YEAR:
			case MONTH:
			case DAY:
			case HOUR:
			case MINUTE:
			case SECOND:
			case DEFAULT:
			case CURRENT:
			case ENABLE:
			case DISABLE:
			case CALL:
			case PRESERVE:
			case DO:
			case DEFINER:
			case CURRENT_USER:
			case SQL:
			case CASCADED:
			case LOCAL:
			case CLOSE:
			case NEXT:
			case NAME:
			case COLLATION:
			case NAMES:
			case INTEGER:
			case REAL:
			case DECIMAL:
			case TYPE:
			case SMALLINT:
			case BIGINT:
			case NUMERIC:
			case TEXT:
			case REPEATABLE:
			case CURRENT_DATE:
			case CURRENT_TIME:
			case CURRENT_TIMESTAMP:
			case VARYING:
			case NATIONAL:
			case NCHAR:
			case VALUE:
			case BOTH:
			case LEADING:
			case TRAILING:
			case INTERSECT:
			case EXCEPT:
			case TIES:
			case FETCH:
			case CUBE:
			case SETS:
			case WINDOW:
			case OTHERS:
			case OVERLAPS:
			case SOME:
			case AT:
			case DEC:
			case END:
			case MAXVALUE:
			case ADMIN:
			case BINARY:
			case ESCAPE:
			case EXCLUDE:
			case MOD:
			case PARTITION:
			case ROW:
			case UNKNOWN:
			case ALWAYS:
			case CASCADE:
			case CHECK:
			case GENERATED:
			case ISOLATION:
			case LEVEL:
			case NO:
			case OPTION:
			case PRIVILEGES:
			case READ:
			case REFERENCES:
			case ROLE:
			case ROWS:
			case START:
			case TRANSACTION:
			case USER:
			case ACTION:
			case CACHE:
			case CHARACTERISTICS:
			case CLUSTER:
			case COLLATE:
			case COMMENTS:
			case CONCURRENTLY:
			case CONSTRAINTS:
			case CYCLE:
			case DATA:
			case DATABASE:
			case DEFAULTS:
			case DEFERRABLE:
			case DEFERRED:
			case DEPENDS:
			case DOMAIN:
			case EXCLUDING:
			case EXECUTE:
			case EXTENDED:
			case EXTENSION:
			case EXTERNAL:
			case FILTER:
			case FIRST:
			case FOLLOWING:
			case FORCE:
			case GLOBAL:
			case IDENTITY:
			case IMMEDIATE:
			case INCLUDING:
			case INCREMENT:
			case INDEXES:
			case INHERIT:
			case INHERITS:
			case INITIALLY:
			case INCLUDE:
			case LANGUAGE:
			case LARGE:
			case LAST:
			case LOGGED:
			case MAIN:
			case MATCH:
			case MINVALUE:
			case NOTHING:
			case NULLS:
			case OBJECT:
			case OIDS:
			case ONLY:
			case OVER:
			case OWNED:
			case OWNER:
			case PARTIAL:
			case PLAIN:
			case PRECEDING:
			case RANGE:
			case RENAME:
			case REPLICA:
			case RESET:
			case RESTART:
			case RESTRICT:
			case ROUTINE:
			case RULE:
			case SECURITY:
			case SEQUENCE:
			case SESSION:
			case SESSION_USER:
			case SHOW:
			case SIMPLE:
			case STATISTICS:
			case STORAGE:
			case TABLESPACE:
			case TEMP:
			case TEMPORARY:
			case UNBOUNDED:
			case UNLOGGED:
			case VALID:
			case VALIDATE:
			case WITHIN:
			case WITHOUT:
			case ZONE:
			case OF:
			case UESCAPE:
			case GROUPS:
			case RECURSIVE:
			case INT:
			case INT2:
			case INT4:
			case INT8:
			case FLOAT:
			case FLOAT4:
			case FLOAT8:
			case VARCHAR:
			case BYTEA:
			case ENUM:
			case POINT:
			case LSEG:
			case BOX:
			case PATH:
			case POLYGON:
			case CIRCLE:
			case INET:
			case BIT:
			case TSQUERY:
			case XML:
			case JSON:
			case INT4RANGE:
			case INT8RANGE:
			case NUMRANGE:
			case DATERANGE:
			case TABLESAMPLE:
			case ORDINALITY:
			case CURRENT_ROLE:
			case CURRENT_CATALOG:
			case CURRENT_SCHEMA:
			case SETOF:
			case NFC:
			case NFD:
			case NFKC:
			case NFKD:
			case REF:
			case PASSING:
			case VERSION:
			case YES:
			case STANDALONE:
			case MATERIALIZED:
			case OPERATOR:
			case SHARE:
			case ROLLUP:
			case ILIKE:
			case SIMILAR:
			case ISNULL:
			case NOTNULL:
			case SYMMETRIC:
			case DOCUMENT:
			case NORMALIZED:
			case ASYMMETRIC:
			case VARIADIC:
			case NOWAIT:
			case LOCKED:
			case COLUMNS:
			case CONTENT:
			case STRIP:
			case WHITESPACE:
			case PLACING:
			case RETURNING:
			case LATERAL:
			case ANALYSE:
			case ANALYZE:
			case CONFLICT:
			case OVERRIDING:
			case SYSTEM:
			case ABORT:
			case ABSOLUTE:
			case ACCESS:
			case AFTER:
			case AGGREGATE:
			case ALSO:
			case ATTACH:
			case ATTRIBUTE:
			case BACKWARD:
			case BEFORE:
			case ASSERTION:
			case ASSIGNMENT:
			case CONTINUE:
			case CONVERSION:
			case COPY:
			case COST:
			case CSV:
			case CALLED:
			case CATALOG:
			case CHAIN:
			case CHECKPOINT:
			case CLASS:
			case CONFIGURATION:
			case COMMENT:
			case DETACH:
			case DICTIONARY:
			case EXPRESSION:
			case INSENSITIVE:
			case DISCARD:
			case OFF:
			case INSTEAD:
			case EXPLAIN:
			case INPUT:
			case INLINE:
			case PARALLEL:
			case LEAKPROOF:
			case COMMITTED:
			case ENCODING:
			case IMPLICIT:
			case DELIMITER:
			case CURSOR:
			case EACH:
			case EVENT:
			case DEALLOCATE:
			case CONNECTION:
			case DECLARE:
			case FAMILY:
			case FORWARD:
			case EXCLUSIVE:
			case FUNCTIONS:
			case LOCATION:
			case LABEL:
			case DELIMITERS:
			case HANDLER:
			case HEADER:
			case IMMUTABLE:
			case GRANTED:
			case HOLD:
			case MAPPING:
			case OLD:
			case METHOD:
			case LOAD:
			case LISTEN:
			case MODE:
			case MOVE:
			case PROCEDURAL:
			case PARSER:
			case PROCEDURES:
			case ENCRYPTED:
			case PUBLICATION:
			case PROGRAM:
			case REFERENCING:
			case PLANS:
			case REINDEX:
			case PRIOR:
			case PASSWORD:
			case RELATIVE:
			case QUOTE:
			case ROUTINES:
			case REPLACE:
			case SNAPSHOT:
			case REFRESH:
			case PREPARE:
			case OPTIONS:
			case IMPORT:
			case INVOKER:
			case NEW:
			case PREPARED:
			case SCROLL:
			case SEQUENCES:
			case SYSID:
			case REASSIGN:
			case SERVER:
			case SUBSCRIPTION:
			case SEARCH:
			case SCHEMAS:
			case RECHECK:
			case POLICY:
			case NOTIFY:
			case LOCK:
			case RELEASE:
			case SERIALIZABLE:
			case RETURNS:
			case STATEMENT:
			case STDIN:
			case STDOUT:
			case TABLES:
			case SUPPORT:
			case STABLE:
			case TEMPLATE:
			case UNENCRYPTED:
			case VIEWS:
			case UNCOMMITTED:
			case TRANSFORM:
			case UNLISTEN:
			case TRUSTED:
			case VALIDATOR:
			case UNTIL:
			case VACUUM:
			case VOLATILE:
			case STORED:
			case WRITE:
			case STRICT:
			case TYPES:
			case WRAPPER:
			case WORK:
			case FREEZE:
			case AUTHORIZATION:
			case VERBOSE:
			case INT16:
			case INT1:
			case ELEM_CONTAINED_BY_RANGE:
			case IDENTIFIER_:
			case STRING_:
			case NUMBER_:
				{
				setState(7153);
				operatorDefArg();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class OperatorDefArgContext extends ParserRuleContext {
		public FuncTypeContext funcType() {
			return getRuleContext(FuncTypeContext.class,0);
		}
		public ReservedKeywordContext reservedKeyword() {
			return getRuleContext(ReservedKeywordContext.class,0);
		}
		public QualAllOpContext qualAllOp() {
			return getRuleContext(QualAllOpContext.class,0);
		}
		public NumericOnlyContext numericOnly() {
			return getRuleContext(NumericOnlyContext.class,0);
		}
		public TerminalNode STRING_() { return getToken(OpenGaussStatementParser.STRING_, 0); }
		public OperatorDefArgContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_operatorDefArg; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitOperatorDefArg(this);
			else return visitor.visitChildren(this);
		}
	}

	public final OperatorDefArgContext operatorDefArg() throws RecognitionException {
		OperatorDefArgContext _localctx = new OperatorDefArgContext(_ctx, getState());
		enterRule(_localctx, 964, RULE_operatorDefArg);
		try {
			setState(7161);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,640,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(7156);
				funcType();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(7157);
				reservedKeyword();
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(7158);
				qualAllOp();
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(7159);
				numericOnly();
				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(7160);
				match(STRING_);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class OperatorWithArgtypesContext extends ParserRuleContext {
		public AnyOperatorContext anyOperator() {
			return getRuleContext(AnyOperatorContext.class,0);
		}
		public OperArgtypesContext operArgtypes() {
			return getRuleContext(OperArgtypesContext.class,0);
		}
		public OperatorWithArgtypesContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_operatorWithArgtypes; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitOperatorWithArgtypes(this);
			else return visitor.visitChildren(this);
		}
	}

	public final OperatorWithArgtypesContext operatorWithArgtypes() throws RecognitionException {
		OperatorWithArgtypesContext _localctx = new OperatorWithArgtypesContext(_ctx, getState());
		enterRule(_localctx, 966, RULE_operatorWithArgtypes);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7163);
			anyOperator();
			setState(7164);
			operArgtypes();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterAggregateContext extends ParserRuleContext {
		public TerminalNode ALTER() { return getToken(OpenGaussStatementParser.ALTER, 0); }
		public TerminalNode AGGREGATE() { return getToken(OpenGaussStatementParser.AGGREGATE, 0); }
		public AggregateSignatureContext aggregateSignature() {
			return getRuleContext(AggregateSignatureContext.class,0);
		}
		public AlterAggregateDefinitionClauseContext alterAggregateDefinitionClause() {
			return getRuleContext(AlterAggregateDefinitionClauseContext.class,0);
		}
		public AlterAggregateContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterAggregate; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitAlterAggregate(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AlterAggregateContext alterAggregate() throws RecognitionException {
		AlterAggregateContext _localctx = new AlterAggregateContext(_ctx, getState());
		enterRule(_localctx, 968, RULE_alterAggregate);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7166);
			match(ALTER);
			setState(7167);
			match(AGGREGATE);
			setState(7168);
			aggregateSignature();
			setState(7169);
			alterAggregateDefinitionClause();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AggregateSignatureContext extends ParserRuleContext {
		public FuncNameContext funcName() {
			return getRuleContext(FuncNameContext.class,0);
		}
		public AggrArgsContext aggrArgs() {
			return getRuleContext(AggrArgsContext.class,0);
		}
		public AggregateSignatureContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_aggregateSignature; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitAggregateSignature(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AggregateSignatureContext aggregateSignature() throws RecognitionException {
		AggregateSignatureContext _localctx = new AggregateSignatureContext(_ctx, getState());
		enterRule(_localctx, 970, RULE_aggregateSignature);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7171);
			funcName();
			setState(7172);
			aggrArgs();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AggrArgsContext extends ParserRuleContext {
		public TerminalNode LP_() { return getToken(OpenGaussStatementParser.LP_, 0); }
		public TerminalNode ASTERISK_() { return getToken(OpenGaussStatementParser.ASTERISK_, 0); }
		public TerminalNode RP_() { return getToken(OpenGaussStatementParser.RP_, 0); }
		public List aggrArgsList() {
			return getRuleContexts(AggrArgsListContext.class);
		}
		public AggrArgsListContext aggrArgsList(int i) {
			return getRuleContext(AggrArgsListContext.class,i);
		}
		public TerminalNode ORDER() { return getToken(OpenGaussStatementParser.ORDER, 0); }
		public TerminalNode BY() { return getToken(OpenGaussStatementParser.BY, 0); }
		public AggrArgsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_aggrArgs; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitAggrArgs(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AggrArgsContext aggrArgs() throws RecognitionException {
		AggrArgsContext _localctx = new AggrArgsContext(_ctx, getState());
		enterRule(_localctx, 972, RULE_aggrArgs);
		try {
			setState(7194);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,641,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(7174);
				match(LP_);
				setState(7175);
				match(ASTERISK_);
				setState(7176);
				match(RP_);
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(7177);
				match(LP_);
				setState(7178);
				aggrArgsList();
				setState(7179);
				match(RP_);
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(7181);
				match(LP_);
				setState(7182);
				match(ORDER);
				setState(7183);
				match(BY);
				setState(7184);
				aggrArgsList();
				setState(7185);
				match(RP_);
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(7187);
				match(LP_);
				setState(7188);
				aggrArgsList();
				setState(7189);
				match(ORDER);
				setState(7190);
				match(BY);
				setState(7191);
				aggrArgsList();
				setState(7192);
				match(RP_);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AggrArgsListContext extends ParserRuleContext {
		public List aggrArg() {
			return getRuleContexts(AggrArgContext.class);
		}
		public AggrArgContext aggrArg(int i) {
			return getRuleContext(AggrArgContext.class,i);
		}
		public List COMMA_() { return getTokens(OpenGaussStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(OpenGaussStatementParser.COMMA_, i);
		}
		public AggrArgsListContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_aggrArgsList; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitAggrArgsList(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AggrArgsListContext aggrArgsList() throws RecognitionException {
		AggrArgsListContext _localctx = new AggrArgsListContext(_ctx, getState());
		enterRule(_localctx, 974, RULE_aggrArgsList);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7196);
			aggrArg();
			setState(7201);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA_) {
				{
				{
				setState(7197);
				match(COMMA_);
				setState(7198);
				aggrArg();
				}
				}
				setState(7203);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AggrArgContext extends ParserRuleContext {
		public FuncArgContext funcArg() {
			return getRuleContext(FuncArgContext.class,0);
		}
		public AggrArgContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_aggrArg; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitAggrArg(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AggrArgContext aggrArg() throws RecognitionException {
		AggrArgContext _localctx = new AggrArgContext(_ctx, getState());
		enterRule(_localctx, 976, RULE_aggrArg);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7204);
			funcArg();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterAggregateDefinitionClauseContext extends ParserRuleContext {
		public TerminalNode RENAME() { return getToken(OpenGaussStatementParser.RENAME, 0); }
		public TerminalNode TO() { return getToken(OpenGaussStatementParser.TO, 0); }
		public NameContext name() {
			return getRuleContext(NameContext.class,0);
		}
		public TerminalNode OWNER() { return getToken(OpenGaussStatementParser.OWNER, 0); }
		public RoleSpecContext roleSpec() {
			return getRuleContext(RoleSpecContext.class,0);
		}
		public TerminalNode SET() { return getToken(OpenGaussStatementParser.SET, 0); }
		public TerminalNode SCHEMA() { return getToken(OpenGaussStatementParser.SCHEMA, 0); }
		public SchemaNameContext schemaName() {
			return getRuleContext(SchemaNameContext.class,0);
		}
		public AlterAggregateDefinitionClauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterAggregateDefinitionClause; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitAlterAggregateDefinitionClause(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AlterAggregateDefinitionClauseContext alterAggregateDefinitionClause() throws RecognitionException {
		AlterAggregateDefinitionClauseContext _localctx = new AlterAggregateDefinitionClauseContext(_ctx, getState());
		enterRule(_localctx, 978, RULE_alterAggregateDefinitionClause);
		try {
			setState(7215);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case RENAME:
				enterOuterAlt(_localctx, 1);
				{
				setState(7206);
				match(RENAME);
				setState(7207);
				match(TO);
				setState(7208);
				name();
				}
				break;
			case OWNER:
				enterOuterAlt(_localctx, 2);
				{
				setState(7209);
				match(OWNER);
				setState(7210);
				match(TO);
				setState(7211);
				roleSpec();
				}
				break;
			case SET:
				enterOuterAlt(_localctx, 3);
				{
				setState(7212);
				match(SET);
				setState(7213);
				match(SCHEMA);
				setState(7214);
				schemaName();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterCollationContext extends ParserRuleContext {
		public TerminalNode ALTER() { return getToken(OpenGaussStatementParser.ALTER, 0); }
		public TerminalNode COLLATION() { return getToken(OpenGaussStatementParser.COLLATION, 0); }
		public AnyNameContext anyName() {
			return getRuleContext(AnyNameContext.class,0);
		}
		public AlterCollationClauseContext alterCollationClause() {
			return getRuleContext(AlterCollationClauseContext.class,0);
		}
		public AlterCollationContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterCollation; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitAlterCollation(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AlterCollationContext alterCollation() throws RecognitionException {
		AlterCollationContext _localctx = new AlterCollationContext(_ctx, getState());
		enterRule(_localctx, 980, RULE_alterCollation);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7217);
			match(ALTER);
			setState(7218);
			match(COLLATION);
			setState(7219);
			anyName();
			setState(7220);
			alterCollationClause();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterCollationClauseContext extends ParserRuleContext {
		public TerminalNode REFRESH() { return getToken(OpenGaussStatementParser.REFRESH, 0); }
		public TerminalNode VERSION() { return getToken(OpenGaussStatementParser.VERSION, 0); }
		public TerminalNode RENAME() { return getToken(OpenGaussStatementParser.RENAME, 0); }
		public TerminalNode TO() { return getToken(OpenGaussStatementParser.TO, 0); }
		public NameContext name() {
			return getRuleContext(NameContext.class,0);
		}
		public TerminalNode OWNER() { return getToken(OpenGaussStatementParser.OWNER, 0); }
		public RoleSpecContext roleSpec() {
			return getRuleContext(RoleSpecContext.class,0);
		}
		public TerminalNode SET() { return getToken(OpenGaussStatementParser.SET, 0); }
		public TerminalNode SCHEMA() { return getToken(OpenGaussStatementParser.SCHEMA, 0); }
		public SchemaNameContext schemaName() {
			return getRuleContext(SchemaNameContext.class,0);
		}
		public AlterCollationClauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterCollationClause; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitAlterCollationClause(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AlterCollationClauseContext alterCollationClause() throws RecognitionException {
		AlterCollationClauseContext _localctx = new AlterCollationClauseContext(_ctx, getState());
		enterRule(_localctx, 982, RULE_alterCollationClause);
		try {
			setState(7233);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case REFRESH:
				enterOuterAlt(_localctx, 1);
				{
				setState(7222);
				match(REFRESH);
				setState(7223);
				match(VERSION);
				}
				break;
			case RENAME:
				enterOuterAlt(_localctx, 2);
				{
				setState(7224);
				match(RENAME);
				setState(7225);
				match(TO);
				setState(7226);
				name();
				}
				break;
			case OWNER:
				enterOuterAlt(_localctx, 3);
				{
				setState(7227);
				match(OWNER);
				setState(7228);
				match(TO);
				setState(7229);
				roleSpec();
				}
				break;
			case SET:
				enterOuterAlt(_localctx, 4);
				{
				setState(7230);
				match(SET);
				setState(7231);
				match(SCHEMA);
				setState(7232);
				schemaName();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterSynonymContext extends ParserRuleContext {
		public TerminalNode ALTER() { return getToken(OpenGaussStatementParser.ALTER, 0); }
		public TerminalNode SYNONYM() { return getToken(OpenGaussStatementParser.SYNONYM, 0); }
		public SynonymNameContext synonymName() {
			return getRuleContext(SynonymNameContext.class,0);
		}
		public TerminalNode OWNER() { return getToken(OpenGaussStatementParser.OWNER, 0); }
		public TerminalNode TO() { return getToken(OpenGaussStatementParser.TO, 0); }
		public OwnerContext owner() {
			return getRuleContext(OwnerContext.class,0);
		}
		public AlterSynonymContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterSynonym; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitAlterSynonym(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AlterSynonymContext alterSynonym() throws RecognitionException {
		AlterSynonymContext _localctx = new AlterSynonymContext(_ctx, getState());
		enterRule(_localctx, 984, RULE_alterSynonym);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7235);
			match(ALTER);
			setState(7236);
			match(SYNONYM);
			setState(7237);
			synonymName();
			setState(7238);
			match(OWNER);
			setState(7239);
			match(TO);
			setState(7240);
			owner();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterDirectoryContext extends ParserRuleContext {
		public TerminalNode ALTER() { return getToken(OpenGaussStatementParser.ALTER, 0); }
		public TerminalNode DIRECTORY() { return getToken(OpenGaussStatementParser.DIRECTORY, 0); }
		public DirectoryNameContext directoryName() {
			return getRuleContext(DirectoryNameContext.class,0);
		}
		public TerminalNode OWNER() { return getToken(OpenGaussStatementParser.OWNER, 0); }
		public TerminalNode TO() { return getToken(OpenGaussStatementParser.TO, 0); }
		public OwnerContext owner() {
			return getRuleContext(OwnerContext.class,0);
		}
		public AlterDirectoryContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterDirectory; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitAlterDirectory(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AlterDirectoryContext alterDirectory() throws RecognitionException {
		AlterDirectoryContext _localctx = new AlterDirectoryContext(_ctx, getState());
		enterRule(_localctx, 986, RULE_alterDirectory);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7242);
			match(ALTER);
			setState(7243);
			match(DIRECTORY);
			setState(7244);
			directoryName();
			setState(7245);
			match(OWNER);
			setState(7246);
			match(TO);
			setState(7247);
			owner();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterConversionContext extends ParserRuleContext {
		public TerminalNode ALTER() { return getToken(OpenGaussStatementParser.ALTER, 0); }
		public TerminalNode CONVERSION() { return getToken(OpenGaussStatementParser.CONVERSION, 0); }
		public AnyNameContext anyName() {
			return getRuleContext(AnyNameContext.class,0);
		}
		public AlterConversionClauseContext alterConversionClause() {
			return getRuleContext(AlterConversionClauseContext.class,0);
		}
		public AlterConversionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterConversion; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitAlterConversion(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AlterConversionContext alterConversion() throws RecognitionException {
		AlterConversionContext _localctx = new AlterConversionContext(_ctx, getState());
		enterRule(_localctx, 988, RULE_alterConversion);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7249);
			match(ALTER);
			setState(7250);
			match(CONVERSION);
			setState(7251);
			anyName();
			setState(7252);
			alterConversionClause();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterConversionClauseContext extends ParserRuleContext {
		public TerminalNode RENAME() { return getToken(OpenGaussStatementParser.RENAME, 0); }
		public TerminalNode TO() { return getToken(OpenGaussStatementParser.TO, 0); }
		public NameContext name() {
			return getRuleContext(NameContext.class,0);
		}
		public TerminalNode OWNER() { return getToken(OpenGaussStatementParser.OWNER, 0); }
		public RoleSpecContext roleSpec() {
			return getRuleContext(RoleSpecContext.class,0);
		}
		public TerminalNode SET() { return getToken(OpenGaussStatementParser.SET, 0); }
		public TerminalNode SCHEMA() { return getToken(OpenGaussStatementParser.SCHEMA, 0); }
		public SchemaNameContext schemaName() {
			return getRuleContext(SchemaNameContext.class,0);
		}
		public AlterConversionClauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterConversionClause; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitAlterConversionClause(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AlterConversionClauseContext alterConversionClause() throws RecognitionException {
		AlterConversionClauseContext _localctx = new AlterConversionClauseContext(_ctx, getState());
		enterRule(_localctx, 990, RULE_alterConversionClause);
		try {
			setState(7263);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case RENAME:
				enterOuterAlt(_localctx, 1);
				{
				setState(7254);
				match(RENAME);
				setState(7255);
				match(TO);
				setState(7256);
				name();
				}
				break;
			case OWNER:
				enterOuterAlt(_localctx, 2);
				{
				setState(7257);
				match(OWNER);
				setState(7258);
				match(TO);
				setState(7259);
				roleSpec();
				}
				break;
			case SET:
				enterOuterAlt(_localctx, 3);
				{
				setState(7260);
				match(SET);
				setState(7261);
				match(SCHEMA);
				setState(7262);
				schemaName();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterDefaultPrivilegesContext extends ParserRuleContext {
		public TerminalNode ALTER() { return getToken(OpenGaussStatementParser.ALTER, 0); }
		public TerminalNode DEFAULT() { return getToken(OpenGaussStatementParser.DEFAULT, 0); }
		public TerminalNode PRIVILEGES() { return getToken(OpenGaussStatementParser.PRIVILEGES, 0); }
		public DefACLActionContext defACLAction() {
			return getRuleContext(DefACLActionContext.class,0);
		}
		public DefACLOptionListContext defACLOptionList() {
			return getRuleContext(DefACLOptionListContext.class,0);
		}
		public AlterDefaultPrivilegesContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterDefaultPrivileges; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitAlterDefaultPrivileges(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AlterDefaultPrivilegesContext alterDefaultPrivileges() throws RecognitionException {
		AlterDefaultPrivilegesContext _localctx = new AlterDefaultPrivilegesContext(_ctx, getState());
		enterRule(_localctx, 992, RULE_alterDefaultPrivileges);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7265);
			match(ALTER);
			setState(7266);
			match(DEFAULT);
			setState(7267);
			match(PRIVILEGES);
			setState(7269);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==FOR || _la==IN) {
				{
				setState(7268);
				defACLOptionList();
				}
			}

			setState(7271);
			defACLAction();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DefACLActionContext extends ParserRuleContext {
		public TerminalNode GRANT() { return getToken(OpenGaussStatementParser.GRANT, 0); }
		public PrivilegesContext privileges() {
			return getRuleContext(PrivilegesContext.class,0);
		}
		public TerminalNode ON() { return getToken(OpenGaussStatementParser.ON, 0); }
		public DefaclPrivilegeTargetContext defaclPrivilegeTarget() {
			return getRuleContext(DefaclPrivilegeTargetContext.class,0);
		}
		public TerminalNode TO() { return getToken(OpenGaussStatementParser.TO, 0); }
		public GranteeListContext granteeList() {
			return getRuleContext(GranteeListContext.class,0);
		}
		public GrantGrantOptionContext grantGrantOption() {
			return getRuleContext(GrantGrantOptionContext.class,0);
		}
		public TerminalNode REVOKE() { return getToken(OpenGaussStatementParser.REVOKE, 0); }
		public TerminalNode FROM() { return getToken(OpenGaussStatementParser.FROM, 0); }
		public DropBehaviorContext dropBehavior() {
			return getRuleContext(DropBehaviorContext.class,0);
		}
		public TerminalNode OPTION() { return getToken(OpenGaussStatementParser.OPTION, 0); }
		public TerminalNode FOR() { return getToken(OpenGaussStatementParser.FOR, 0); }
		public DefACLActionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_defACLAction; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitDefACLAction(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DefACLActionContext defACLAction() throws RecognitionException {
		DefACLActionContext _localctx = new DefACLActionContext(_ctx, getState());
		enterRule(_localctx, 994, RULE_defACLAction);
		int _la;
		try {
			setState(7303);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,650,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(7273);
				match(GRANT);
				setState(7274);
				privileges();
				setState(7275);
				match(ON);
				setState(7276);
				defaclPrivilegeTarget();
				setState(7277);
				match(TO);
				setState(7278);
				granteeList();
				setState(7280);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==WITH) {
					{
					setState(7279);
					grantGrantOption();
					}
				}

				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(7282);
				match(REVOKE);
				setState(7283);
				privileges();
				setState(7284);
				match(ON);
				setState(7285);
				defaclPrivilegeTarget();
				setState(7286);
				match(FROM);
				setState(7287);
				granteeList();
				setState(7289);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==CASCADE || _la==RESTRICT) {
					{
					setState(7288);
					dropBehavior();
					}
				}

				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(7291);
				match(REVOKE);
				setState(7292);
				match(GRANT);
				setState(7293);
				match(OPTION);
				setState(7294);
				match(FOR);
				setState(7295);
				privileges();
				setState(7296);
				match(ON);
				setState(7297);
				defaclPrivilegeTarget();
				setState(7298);
				match(FROM);
				setState(7299);
				granteeList();
				setState(7301);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==CASCADE || _la==RESTRICT) {
					{
					setState(7300);
					dropBehavior();
					}
				}

				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class GrantGrantOptionContext extends ParserRuleContext {
		public TerminalNode WITH() { return getToken(OpenGaussStatementParser.WITH, 0); }
		public TerminalNode GRANT() { return getToken(OpenGaussStatementParser.GRANT, 0); }
		public TerminalNode OPTION() { return getToken(OpenGaussStatementParser.OPTION, 0); }
		public GrantGrantOptionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_grantGrantOption; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitGrantGrantOption(this);
			else return visitor.visitChildren(this);
		}
	}

	public final GrantGrantOptionContext grantGrantOption() throws RecognitionException {
		GrantGrantOptionContext _localctx = new GrantGrantOptionContext(_ctx, getState());
		enterRule(_localctx, 996, RULE_grantGrantOption);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7305);
			match(WITH);
			setState(7306);
			match(GRANT);
			setState(7307);
			match(OPTION);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class GranteeListContext extends ParserRuleContext {
		public List grantee() {
			return getRuleContexts(GranteeContext.class);
		}
		public GranteeContext grantee(int i) {
			return getRuleContext(GranteeContext.class,i);
		}
		public List COMMA_() { return getTokens(OpenGaussStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(OpenGaussStatementParser.COMMA_, i);
		}
		public GranteeListContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_granteeList; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitGranteeList(this);
			else return visitor.visitChildren(this);
		}
	}

	public final GranteeListContext granteeList() throws RecognitionException {
		GranteeListContext _localctx = new GranteeListContext(_ctx, getState());
		enterRule(_localctx, 998, RULE_granteeList);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7309);
			grantee();
			setState(7314);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA_) {
				{
				{
				setState(7310);
				match(COMMA_);
				setState(7311);
				grantee();
				}
				}
				setState(7316);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class GranteeContext extends ParserRuleContext {
		public RoleSpecContext roleSpec() {
			return getRuleContext(RoleSpecContext.class,0);
		}
		public TerminalNode GROUP() { return getToken(OpenGaussStatementParser.GROUP, 0); }
		public GranteeContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_grantee; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitGrantee(this);
			else return visitor.visitChildren(this);
		}
	}

	public final GranteeContext grantee() throws RecognitionException {
		GranteeContext _localctx = new GranteeContext(_ctx, getState());
		enterRule(_localctx, 1000, RULE_grantee);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7318);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==GROUP) {
				{
				setState(7317);
				match(GROUP);
				}
			}

			setState(7320);
			roleSpec();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DefaclPrivilegeTargetContext extends ParserRuleContext {
		public TerminalNode TABLES() { return getToken(OpenGaussStatementParser.TABLES, 0); }
		public TerminalNode FUNCTIONS() { return getToken(OpenGaussStatementParser.FUNCTIONS, 0); }
		public TerminalNode ROUTINES() { return getToken(OpenGaussStatementParser.ROUTINES, 0); }
		public TerminalNode SEQUENCES() { return getToken(OpenGaussStatementParser.SEQUENCES, 0); }
		public TerminalNode TYPES() { return getToken(OpenGaussStatementParser.TYPES, 0); }
		public TerminalNode SCHEMAS() { return getToken(OpenGaussStatementParser.SCHEMAS, 0); }
		public DefaclPrivilegeTargetContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_defaclPrivilegeTarget; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitDefaclPrivilegeTarget(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DefaclPrivilegeTargetContext defaclPrivilegeTarget() throws RecognitionException {
		DefaclPrivilegeTargetContext _localctx = new DefaclPrivilegeTargetContext(_ctx, getState());
		enterRule(_localctx, 1002, RULE_defaclPrivilegeTarget);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7322);
			_la = _input.LA(1);
			if ( !(((((_la - 497)) & ~0x3f) == 0 && ((1L << (_la - 497)) & ((1L << (FUNCTIONS - 497)) | (1L << (ROUTINES - 497)) | (1L << (SEQUENCES - 497)) | (1L << (SCHEMAS - 497)) | (1L << (TABLES - 497)))) != 0) || _la==TYPES) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class PrivilegesContext extends ParserRuleContext {
		public PrivilegeListContext privilegeList() {
			return getRuleContext(PrivilegeListContext.class,0);
		}
		public TerminalNode ALL() { return getToken(OpenGaussStatementParser.ALL, 0); }
		public TerminalNode PRIVILEGES() { return getToken(OpenGaussStatementParser.PRIVILEGES, 0); }
		public TerminalNode LP_() { return getToken(OpenGaussStatementParser.LP_, 0); }
		public ColumnListContext columnList() {
			return getRuleContext(ColumnListContext.class,0);
		}
		public TerminalNode RP_() { return getToken(OpenGaussStatementParser.RP_, 0); }
		public PrivilegesContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_privileges; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitPrivileges(this);
			else return visitor.visitChildren(this);
		}
	}

	public final PrivilegesContext privileges() throws RecognitionException {
		PrivilegesContext _localctx = new PrivilegesContext(_ctx, getState());
		enterRule(_localctx, 1004, RULE_privileges);
		try {
			setState(7339);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,653,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(7324);
				privilegeList();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(7325);
				match(ALL);
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(7326);
				match(ALL);
				setState(7327);
				match(PRIVILEGES);
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(7328);
				match(ALL);
				setState(7329);
				match(LP_);
				setState(7330);
				columnList();
				setState(7331);
				match(RP_);
				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(7333);
				match(ALL);
				setState(7334);
				match(PRIVILEGES);
				setState(7335);
				match(LP_);
				setState(7336);
				columnList();
				setState(7337);
				match(RP_);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class PrivilegeListContext extends ParserRuleContext {
		public List privilege() {
			return getRuleContexts(PrivilegeContext.class);
		}
		public PrivilegeContext privilege(int i) {
			return getRuleContext(PrivilegeContext.class,i);
		}
		public List COMMA_() { return getTokens(OpenGaussStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(OpenGaussStatementParser.COMMA_, i);
		}
		public PrivilegeListContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_privilegeList; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitPrivilegeList(this);
			else return visitor.visitChildren(this);
		}
	}

	public final PrivilegeListContext privilegeList() throws RecognitionException {
		PrivilegeListContext _localctx = new PrivilegeListContext(_ctx, getState());
		enterRule(_localctx, 1006, RULE_privilegeList);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7341);
			privilege();
			setState(7346);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA_) {
				{
				{
				setState(7342);
				match(COMMA_);
				setState(7343);
				privilege();
				}
				}
				setState(7348);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class PrivilegeContext extends ParserRuleContext {
		public TerminalNode SELECT() { return getToken(OpenGaussStatementParser.SELECT, 0); }
		public OptColumnListContext optColumnList() {
			return getRuleContext(OptColumnListContext.class,0);
		}
		public TerminalNode REFERENCES() { return getToken(OpenGaussStatementParser.REFERENCES, 0); }
		public TerminalNode CREATE() { return getToken(OpenGaussStatementParser.CREATE, 0); }
		public ColIdContext colId() {
			return getRuleContext(ColIdContext.class,0);
		}
		public PrivilegeContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_privilege; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitPrivilege(this);
			else return visitor.visitChildren(this);
		}
	}

	public final PrivilegeContext privilege() throws RecognitionException {
		PrivilegeContext _localctx = new PrivilegeContext(_ctx, getState());
		enterRule(_localctx, 1008, RULE_privilege);
		int _la;
		try {
			setState(7365);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case SELECT:
				enterOuterAlt(_localctx, 1);
				{
				setState(7349);
				match(SELECT);
				setState(7351);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==LP_) {
					{
					setState(7350);
					optColumnList();
					}
				}

				}
				break;
			case REFERENCES:
				enterOuterAlt(_localctx, 2);
				{
				setState(7353);
				match(REFERENCES);
				setState(7355);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==LP_) {
					{
					setState(7354);
					optColumnList();
					}
				}

				}
				break;
			case CREATE:
				enterOuterAlt(_localctx, 3);
				{
				setState(7357);
				match(CREATE);
				setState(7359);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==LP_) {
					{
					setState(7358);
					optColumnList();
					}
				}

				}
				break;
			case UNICODE_ESCAPE:
			case INSERT:
			case UPDATE:
			case DELETE:
			case ALTER:
			case DROP:
			case TRUNCATE:
			case SCHEMA:
			case REVOKE:
			case ADD:
			case SET:
			case INDEX:
			case KEY:
			case POSITION:
			case FUNCTION:
			case TRIGGER:
			case PROCEDURE:
			case VIEW:
			case IF:
			case BY:
			case BEGIN:
			case COMMIT:
			case ROLLBACK:
			case SAVEPOINT:
			case DOUBLE:
			case INTERVAL:
			case TIME:
			case TIMESTAMP:
			case YEAR:
			case MONTH:
			case DAY:
			case HOUR:
			case MINUTE:
			case SECOND:
			case CURRENT:
			case ENABLE:
			case DISABLE:
			case CALL:
			case PRESERVE:
			case DEFINER:
			case SQL:
			case CASCADED:
			case LOCAL:
			case CLOSE:
			case NEXT:
			case NAME:
			case NAMES:
			case TYPE:
			case TEXT:
			case REPEATABLE:
			case VARYING:
			case NATIONAL:
			case VALUE:
			case TIES:
			case CUBE:
			case SETS:
			case OTHERS:
			case AT:
			case MAXVALUE:
			case ADMIN:
			case ESCAPE:
			case EXCLUDE:
			case MOD:
			case PARTITION:
			case UNKNOWN:
			case ALWAYS:
			case CASCADE:
			case GENERATED:
			case ISOLATION:
			case LEVEL:
			case NO:
			case OPTION:
			case PRIVILEGES:
			case READ:
			case ROLE:
			case ROWS:
			case START:
			case TRANSACTION:
			case ACTION:
			case CACHE:
			case CHARACTERISTICS:
			case CLUSTER:
			case COMMENTS:
			case CONSTRAINTS:
			case CYCLE:
			case DATA:
			case DATABASE:
			case DEFAULTS:
			case DEFERRED:
			case DEPENDS:
			case DOMAIN:
			case EXCLUDING:
			case EXECUTE:
			case EXTENDED:
			case EXTENSION:
			case EXTERNAL:
			case FILTER:
			case FIRST:
			case FOLLOWING:
			case FORCE:
			case GLOBAL:
			case IDENTITY:
			case IMMEDIATE:
			case INCLUDING:
			case INCREMENT:
			case INDEXES:
			case INHERIT:
			case INHERITS:
			case INCLUDE:
			case LANGUAGE:
			case LARGE:
			case LAST:
			case LOGGED:
			case MAIN:
			case MATCH:
			case MINVALUE:
			case NOTHING:
			case NULLS:
			case OBJECT:
			case OIDS:
			case OVER:
			case OWNED:
			case OWNER:
			case PARTIAL:
			case PLAIN:
			case PRECEDING:
			case RANGE:
			case RENAME:
			case REPLICA:
			case RESET:
			case RESTART:
			case RESTRICT:
			case ROUTINE:
			case RULE:
			case SECURITY:
			case SEQUENCE:
			case SESSION:
			case SHOW:
			case SIMPLE:
			case STATISTICS:
			case STORAGE:
			case TABLESPACE:
			case TEMP:
			case TEMPORARY:
			case UNBOUNDED:
			case UNLOGGED:
			case VALID:
			case VALIDATE:
			case WITHIN:
			case WITHOUT:
			case ZONE:
			case OF:
			case UESCAPE:
			case GROUPS:
			case RECURSIVE:
			case INT2:
			case INT4:
			case FLOAT4:
			case BYTEA:
			case ENUM:
			case POINT:
			case LSEG:
			case BOX:
			case PATH:
			case POLYGON:
			case CIRCLE:
			case INET:
			case TSQUERY:
			case XML:
			case JSON:
			case INT4RANGE:
			case INT8RANGE:
			case NUMRANGE:
			case DATERANGE:
			case ORDINALITY:
			case NFC:
			case NFD:
			case NFKC:
			case NFKD:
			case REF:
			case PASSING:
			case VERSION:
			case YES:
			case STANDALONE:
			case MATERIALIZED:
			case OPERATOR:
			case SHARE:
			case ROLLUP:
			case DOCUMENT:
			case NORMALIZED:
			case NOWAIT:
			case LOCKED:
			case COLUMNS:
			case CONTENT:
			case STRIP:
			case WHITESPACE:
			case CONFLICT:
			case OVERRIDING:
			case SYSTEM:
			case ABORT:
			case ABSOLUTE:
			case ACCESS:
			case AFTER:
			case AGGREGATE:
			case ALSO:
			case ATTACH:
			case ATTRIBUTE:
			case BACKWARD:
			case BEFORE:
			case ASSERTION:
			case ASSIGNMENT:
			case CONTINUE:
			case CONVERSION:
			case COPY:
			case COST:
			case CSV:
			case CALLED:
			case CATALOG:
			case CHAIN:
			case CHECKPOINT:
			case CLASS:
			case CONFIGURATION:
			case COMMENT:
			case DETACH:
			case DICTIONARY:
			case EXPRESSION:
			case INSENSITIVE:
			case DISCARD:
			case OFF:
			case INSTEAD:
			case EXPLAIN:
			case INPUT:
			case INLINE:
			case PARALLEL:
			case LEAKPROOF:
			case COMMITTED:
			case ENCODING:
			case IMPLICIT:
			case DELIMITER:
			case CURSOR:
			case EACH:
			case EVENT:
			case DEALLOCATE:
			case CONNECTION:
			case DECLARE:
			case FAMILY:
			case FORWARD:
			case EXCLUSIVE:
			case FUNCTIONS:
			case LOCATION:
			case LABEL:
			case DELIMITERS:
			case HANDLER:
			case HEADER:
			case IMMUTABLE:
			case GRANTED:
			case HOLD:
			case MAPPING:
			case OLD:
			case METHOD:
			case LOAD:
			case LISTEN:
			case MODE:
			case MOVE:
			case PROCEDURAL:
			case PARSER:
			case PROCEDURES:
			case ENCRYPTED:
			case PUBLICATION:
			case PROGRAM:
			case REFERENCING:
			case PLANS:
			case REINDEX:
			case PRIOR:
			case PASSWORD:
			case RELATIVE:
			case QUOTE:
			case ROUTINES:
			case REPLACE:
			case SNAPSHOT:
			case REFRESH:
			case PREPARE:
			case OPTIONS:
			case IMPORT:
			case INVOKER:
			case NEW:
			case PREPARED:
			case SCROLL:
			case SEQUENCES:
			case SYSID:
			case REASSIGN:
			case SERVER:
			case SUBSCRIPTION:
			case SEARCH:
			case SCHEMAS:
			case RECHECK:
			case POLICY:
			case NOTIFY:
			case LOCK:
			case RELEASE:
			case SERIALIZABLE:
			case RETURNS:
			case STATEMENT:
			case STDIN:
			case STDOUT:
			case TABLES:
			case SUPPORT:
			case STABLE:
			case TEMPLATE:
			case UNENCRYPTED:
			case VIEWS:
			case UNCOMMITTED:
			case TRANSFORM:
			case UNLISTEN:
			case TRUSTED:
			case VALIDATOR:
			case UNTIL:
			case VACUUM:
			case VOLATILE:
			case STORED:
			case WRITE:
			case STRICT:
			case TYPES:
			case WRAPPER:
			case WORK:
			case INT16:
			case INT1:
			case ELEM_CONTAINED_BY_RANGE:
			case IDENTIFIER_:
				enterOuterAlt(_localctx, 4);
				{
				setState(7361);
				colId();
				setState(7363);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==LP_) {
					{
					setState(7362);
					optColumnList();
					}
				}

				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DefACLOptionListContext extends ParserRuleContext {
		public List defACLOption() {
			return getRuleContexts(DefACLOptionContext.class);
		}
		public DefACLOptionContext defACLOption(int i) {
			return getRuleContext(DefACLOptionContext.class,i);
		}
		public DefACLOptionListContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_defACLOptionList; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitDefACLOptionList(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DefACLOptionListContext defACLOptionList() throws RecognitionException {
		DefACLOptionListContext _localctx = new DefACLOptionListContext(_ctx, getState());
		enterRule(_localctx, 1010, RULE_defACLOptionList);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7368); 
			_errHandler.sync(this);
			_la = _input.LA(1);
			do {
				{
				{
				setState(7367);
				defACLOption();
				}
				}
				setState(7370); 
				_errHandler.sync(this);
				_la = _input.LA(1);
			} while ( _la==FOR || _la==IN );
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DefACLOptionContext extends ParserRuleContext {
		public TerminalNode IN() { return getToken(OpenGaussStatementParser.IN, 0); }
		public TerminalNode SCHEMA() { return getToken(OpenGaussStatementParser.SCHEMA, 0); }
		public SchemaNameListContext schemaNameList() {
			return getRuleContext(SchemaNameListContext.class,0);
		}
		public TerminalNode FOR() { return getToken(OpenGaussStatementParser.FOR, 0); }
		public RoleListContext roleList() {
			return getRuleContext(RoleListContext.class,0);
		}
		public TerminalNode ROLE() { return getToken(OpenGaussStatementParser.ROLE, 0); }
		public TerminalNode USER() { return getToken(OpenGaussStatementParser.USER, 0); }
		public DefACLOptionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_defACLOption; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitDefACLOption(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DefACLOptionContext defACLOption() throws RecognitionException {
		DefACLOptionContext _localctx = new DefACLOptionContext(_ctx, getState());
		enterRule(_localctx, 1012, RULE_defACLOption);
		int _la;
		try {
			setState(7378);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case IN:
				enterOuterAlt(_localctx, 1);
				{
				setState(7372);
				match(IN);
				setState(7373);
				match(SCHEMA);
				setState(7374);
				schemaNameList();
				}
				break;
			case FOR:
				enterOuterAlt(_localctx, 2);
				{
				setState(7375);
				match(FOR);
				setState(7376);
				_la = _input.LA(1);
				if ( !(_la==ROLE || _la==USER) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(7377);
				roleList();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class SchemaNameListContext extends ParserRuleContext {
		public NameListContext nameList() {
			return getRuleContext(NameListContext.class,0);
		}
		public SchemaNameListContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_schemaNameList; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitSchemaNameList(this);
			else return visitor.visitChildren(this);
		}
	}

	public final SchemaNameListContext schemaNameList() throws RecognitionException {
		SchemaNameListContext _localctx = new SchemaNameListContext(_ctx, getState());
		enterRule(_localctx, 1014, RULE_schemaNameList);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7380);
			nameList(0);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterDomainContext extends ParserRuleContext {
		public TerminalNode ALTER() { return getToken(OpenGaussStatementParser.ALTER, 0); }
		public TerminalNode DOMAIN() { return getToken(OpenGaussStatementParser.DOMAIN, 0); }
		public AlterDomainClauseContext alterDomainClause() {
			return getRuleContext(AlterDomainClauseContext.class,0);
		}
		public AlterDomainContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterDomain; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitAlterDomain(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AlterDomainContext alterDomain() throws RecognitionException {
		AlterDomainContext _localctx = new AlterDomainContext(_ctx, getState());
		enterRule(_localctx, 1016, RULE_alterDomain);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7382);
			match(ALTER);
			setState(7383);
			match(DOMAIN);
			setState(7384);
			alterDomainClause();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterDomainClauseContext extends ParserRuleContext {
		public List anyName() {
			return getRuleContexts(AnyNameContext.class);
		}
		public AnyNameContext anyName(int i) {
			return getRuleContext(AnyNameContext.class,i);
		}
		public TerminalNode NOT() { return getToken(OpenGaussStatementParser.NOT, 0); }
		public TerminalNode NULL() { return getToken(OpenGaussStatementParser.NULL, 0); }
		public TerminalNode SET() { return getToken(OpenGaussStatementParser.SET, 0); }
		public TerminalNode DROP() { return getToken(OpenGaussStatementParser.DROP, 0); }
		public TerminalNode ADD() { return getToken(OpenGaussStatementParser.ADD, 0); }
		public TableConstraintContext tableConstraint() {
			return getRuleContext(TableConstraintContext.class,0);
		}
		public TerminalNode VALID() { return getToken(OpenGaussStatementParser.VALID, 0); }
		public TerminalNode CONSTRAINT() { return getToken(OpenGaussStatementParser.CONSTRAINT, 0); }
		public NameContext name() {
			return getRuleContext(NameContext.class,0);
		}
		public IfExistsContext ifExists() {
			return getRuleContext(IfExistsContext.class,0);
		}
		public DropBehaviorContext dropBehavior() {
			return getRuleContext(DropBehaviorContext.class,0);
		}
		public TerminalNode VALIDATE() { return getToken(OpenGaussStatementParser.VALIDATE, 0); }
		public TerminalNode RENAME() { return getToken(OpenGaussStatementParser.RENAME, 0); }
		public List constraintName() {
			return getRuleContexts(ConstraintNameContext.class);
		}
		public ConstraintNameContext constraintName(int i) {
			return getRuleContext(ConstraintNameContext.class,i);
		}
		public TerminalNode TO() { return getToken(OpenGaussStatementParser.TO, 0); }
		public TerminalNode OWNER() { return getToken(OpenGaussStatementParser.OWNER, 0); }
		public RoleSpecContext roleSpec() {
			return getRuleContext(RoleSpecContext.class,0);
		}
		public TerminalNode SCHEMA() { return getToken(OpenGaussStatementParser.SCHEMA, 0); }
		public AlterColumnDefaultContext alterColumnDefault() {
			return getRuleContext(AlterColumnDefaultContext.class,0);
		}
		public AlterDomainClauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterDomainClause; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitAlterDomainClause(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AlterDomainClauseContext alterDomainClause() throws RecognitionException {
		AlterDomainClauseContext _localctx = new AlterDomainClauseContext(_ctx, getState());
		enterRule(_localctx, 1018, RULE_alterDomainClause);
		int _la;
		try {
			setState(7438);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,665,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(7386);
				anyName();
				setState(7387);
				_la = _input.LA(1);
				if ( !(_la==DROP || _la==SET) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(7388);
				match(NOT);
				setState(7389);
				match(NULL);
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(7391);
				anyName();
				setState(7392);
				match(ADD);
				setState(7393);
				tableConstraint();
				setState(7396);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==NOT) {
					{
					setState(7394);
					match(NOT);
					setState(7395);
					match(VALID);
					}
				}

				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(7398);
				anyName();
				setState(7399);
				match(DROP);
				setState(7400);
				match(CONSTRAINT);
				setState(7402);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,663,_ctx) ) {
				case 1:
					{
					setState(7401);
					ifExists();
					}
					break;
				}
				setState(7404);
				name();
				setState(7406);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==CASCADE || _la==RESTRICT) {
					{
					setState(7405);
					dropBehavior();
					}
				}

				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(7408);
				anyName();
				setState(7409);
				match(VALIDATE);
				setState(7410);
				match(CONSTRAINT);
				setState(7411);
				name();
				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(7413);
				anyName();
				setState(7414);
				match(RENAME);
				setState(7415);
				match(CONSTRAINT);
				setState(7416);
				constraintName();
				setState(7417);
				match(TO);
				setState(7418);
				constraintName();
				}
				break;
			case 6:
				enterOuterAlt(_localctx, 6);
				{
				setState(7420);
				anyName();
				setState(7421);
				match(OWNER);
				setState(7422);
				match(TO);
				setState(7423);
				roleSpec();
				}
				break;
			case 7:
				enterOuterAlt(_localctx, 7);
				{
				setState(7425);
				anyName();
				setState(7426);
				match(RENAME);
				setState(7427);
				match(TO);
				setState(7428);
				anyName();
				}
				break;
			case 8:
				enterOuterAlt(_localctx, 8);
				{
				setState(7430);
				anyName();
				setState(7431);
				match(SET);
				setState(7432);
				match(SCHEMA);
				setState(7433);
				name();
				}
				break;
			case 9:
				enterOuterAlt(_localctx, 9);
				{
				setState(7435);
				anyName();
				setState(7436);
				alterColumnDefault();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterEventTriggerContext extends ParserRuleContext {
		public TerminalNode ALTER() { return getToken(OpenGaussStatementParser.ALTER, 0); }
		public TerminalNode EVENT() { return getToken(OpenGaussStatementParser.EVENT, 0); }
		public TerminalNode TRIGGER() { return getToken(OpenGaussStatementParser.TRIGGER, 0); }
		public TiggerNameContext tiggerName() {
			return getRuleContext(TiggerNameContext.class,0);
		}
		public AlterEventTriggerClauseContext alterEventTriggerClause() {
			return getRuleContext(AlterEventTriggerClauseContext.class,0);
		}
		public AlterEventTriggerContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterEventTrigger; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitAlterEventTrigger(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AlterEventTriggerContext alterEventTrigger() throws RecognitionException {
		AlterEventTriggerContext _localctx = new AlterEventTriggerContext(_ctx, getState());
		enterRule(_localctx, 1020, RULE_alterEventTrigger);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7440);
			match(ALTER);
			setState(7441);
			match(EVENT);
			setState(7442);
			match(TRIGGER);
			setState(7443);
			tiggerName();
			setState(7444);
			alterEventTriggerClause();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterEventTriggerClauseContext extends ParserRuleContext {
		public TerminalNode DISABLE() { return getToken(OpenGaussStatementParser.DISABLE, 0); }
		public TerminalNode ENABLE() { return getToken(OpenGaussStatementParser.ENABLE, 0); }
		public TerminalNode REPLICA() { return getToken(OpenGaussStatementParser.REPLICA, 0); }
		public TerminalNode ALWAYS() { return getToken(OpenGaussStatementParser.ALWAYS, 0); }
		public TerminalNode OWNER() { return getToken(OpenGaussStatementParser.OWNER, 0); }
		public TerminalNode TO() { return getToken(OpenGaussStatementParser.TO, 0); }
		public RoleSpecContext roleSpec() {
			return getRuleContext(RoleSpecContext.class,0);
		}
		public TerminalNode RENAME() { return getToken(OpenGaussStatementParser.RENAME, 0); }
		public TiggerNameContext tiggerName() {
			return getRuleContext(TiggerNameContext.class,0);
		}
		public AlterEventTriggerClauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterEventTriggerClause; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitAlterEventTriggerClause(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AlterEventTriggerClauseContext alterEventTriggerClause() throws RecognitionException {
		AlterEventTriggerClauseContext _localctx = new AlterEventTriggerClauseContext(_ctx, getState());
		enterRule(_localctx, 1022, RULE_alterEventTriggerClause);
		int _la;
		try {
			setState(7455);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case DISABLE:
				enterOuterAlt(_localctx, 1);
				{
				setState(7446);
				match(DISABLE);
				}
				break;
			case ENABLE:
				enterOuterAlt(_localctx, 2);
				{
				setState(7447);
				match(ENABLE);
				setState(7448);
				_la = _input.LA(1);
				if ( !(_la==ALWAYS || _la==REPLICA) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
				break;
			case OWNER:
				enterOuterAlt(_localctx, 3);
				{
				setState(7449);
				match(OWNER);
				setState(7450);
				match(TO);
				setState(7451);
				roleSpec();
				}
				break;
			case RENAME:
				enterOuterAlt(_localctx, 4);
				{
				setState(7452);
				match(RENAME);
				setState(7453);
				match(TO);
				setState(7454);
				tiggerName();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class TiggerNameContext extends ParserRuleContext {
		public ColIdContext colId() {
			return getRuleContext(ColIdContext.class,0);
		}
		public TiggerNameContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_tiggerName; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitTiggerName(this);
			else return visitor.visitChildren(this);
		}
	}

	public final TiggerNameContext tiggerName() throws RecognitionException {
		TiggerNameContext _localctx = new TiggerNameContext(_ctx, getState());
		enterRule(_localctx, 1024, RULE_tiggerName);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7457);
			colId();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterExtensionContext extends ParserRuleContext {
		public TerminalNode ALTER() { return getToken(OpenGaussStatementParser.ALTER, 0); }
		public TerminalNode EXTENSION() { return getToken(OpenGaussStatementParser.EXTENSION, 0); }
		public NameContext name() {
			return getRuleContext(NameContext.class,0);
		}
		public AlterExtensionClausesContext alterExtensionClauses() {
			return getRuleContext(AlterExtensionClausesContext.class,0);
		}
		public AlterExtensionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterExtension; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitAlterExtension(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AlterExtensionContext alterExtension() throws RecognitionException {
		AlterExtensionContext _localctx = new AlterExtensionContext(_ctx, getState());
		enterRule(_localctx, 1026, RULE_alterExtension);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7459);
			match(ALTER);
			setState(7460);
			match(EXTENSION);
			setState(7461);
			name();
			setState(7462);
			alterExtensionClauses();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CreateSynonymContext extends ParserRuleContext {
		public TerminalNode CREATE() { return getToken(OpenGaussStatementParser.CREATE, 0); }
		public TerminalNode SYNONYM() { return getToken(OpenGaussStatementParser.SYNONYM, 0); }
		public SynonymNameContext synonymName() {
			return getRuleContext(SynonymNameContext.class,0);
		}
		public TerminalNode FOR() { return getToken(OpenGaussStatementParser.FOR, 0); }
		public ObjectNameContext objectName() {
			return getRuleContext(ObjectNameContext.class,0);
		}
		public TerminalNode OR() { return getToken(OpenGaussStatementParser.OR, 0); }
		public TerminalNode REPLACE() { return getToken(OpenGaussStatementParser.REPLACE, 0); }
		public CreateSynonymContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_createSynonym; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitCreateSynonym(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CreateSynonymContext createSynonym() throws RecognitionException {
		CreateSynonymContext _localctx = new CreateSynonymContext(_ctx, getState());
		enterRule(_localctx, 1028, RULE_createSynonym);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7464);
			match(CREATE);
			setState(7467);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==OR) {
				{
				setState(7465);
				match(OR);
				setState(7466);
				match(REPLACE);
				}
			}

			setState(7469);
			match(SYNONYM);
			setState(7470);
			synonymName();
			setState(7471);
			match(FOR);
			setState(7472);
			objectName();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterExtensionClausesContext extends ParserRuleContext {
		public TerminalNode UPDATE() { return getToken(OpenGaussStatementParser.UPDATE, 0); }
		public AlterExtensionOptListContext alterExtensionOptList() {
			return getRuleContext(AlterExtensionOptListContext.class,0);
		}
		public TerminalNode ACCESS() { return getToken(OpenGaussStatementParser.ACCESS, 0); }
		public TerminalNode METHOD() { return getToken(OpenGaussStatementParser.METHOD, 0); }
		public NameContext name() {
			return getRuleContext(NameContext.class,0);
		}
		public TerminalNode ADD() { return getToken(OpenGaussStatementParser.ADD, 0); }
		public TerminalNode DROP() { return getToken(OpenGaussStatementParser.DROP, 0); }
		public TerminalNode AGGREGATE() { return getToken(OpenGaussStatementParser.AGGREGATE, 0); }
		public AggregateWithArgtypesContext aggregateWithArgtypes() {
			return getRuleContext(AggregateWithArgtypesContext.class,0);
		}
		public TerminalNode CAST() { return getToken(OpenGaussStatementParser.CAST, 0); }
		public TerminalNode LP_() { return getToken(OpenGaussStatementParser.LP_, 0); }
		public List typeName() {
			return getRuleContexts(TypeNameContext.class);
		}
		public TypeNameContext typeName(int i) {
			return getRuleContext(TypeNameContext.class,i);
		}
		public TerminalNode AS() { return getToken(OpenGaussStatementParser.AS, 0); }
		public TerminalNode RP_() { return getToken(OpenGaussStatementParser.RP_, 0); }
		public TerminalNode COLLATION() { return getToken(OpenGaussStatementParser.COLLATION, 0); }
		public AnyNameContext anyName() {
			return getRuleContext(AnyNameContext.class,0);
		}
		public TerminalNode CONVERSION() { return getToken(OpenGaussStatementParser.CONVERSION, 0); }
		public TerminalNode DOMAIN() { return getToken(OpenGaussStatementParser.DOMAIN, 0); }
		public TerminalNode FUNCTION() { return getToken(OpenGaussStatementParser.FUNCTION, 0); }
		public FunctionWithArgtypesContext functionWithArgtypes() {
			return getRuleContext(FunctionWithArgtypesContext.class,0);
		}
		public TerminalNode LANGUAGE() { return getToken(OpenGaussStatementParser.LANGUAGE, 0); }
		public TerminalNode PROCEDURAL() { return getToken(OpenGaussStatementParser.PROCEDURAL, 0); }
		public TerminalNode OPERATOR() { return getToken(OpenGaussStatementParser.OPERATOR, 0); }
		public OperatorWithArgtypesContext operatorWithArgtypes() {
			return getRuleContext(OperatorWithArgtypesContext.class,0);
		}
		public TerminalNode USING() { return getToken(OpenGaussStatementParser.USING, 0); }
		public AccessMethodContext accessMethod() {
			return getRuleContext(AccessMethodContext.class,0);
		}
		public TerminalNode CLASS() { return getToken(OpenGaussStatementParser.CLASS, 0); }
		public TerminalNode FAMILY() { return getToken(OpenGaussStatementParser.FAMILY, 0); }
		public TerminalNode PROCEDURE() { return getToken(OpenGaussStatementParser.PROCEDURE, 0); }
		public TerminalNode ROUTINE() { return getToken(OpenGaussStatementParser.ROUTINE, 0); }
		public TerminalNode SCHEMA() { return getToken(OpenGaussStatementParser.SCHEMA, 0); }
		public TerminalNode EVENT() { return getToken(OpenGaussStatementParser.EVENT, 0); }
		public TerminalNode TRIGGER() { return getToken(OpenGaussStatementParser.TRIGGER, 0); }
		public TerminalNode TABLE() { return getToken(OpenGaussStatementParser.TABLE, 0); }
		public TerminalNode TEXT() { return getToken(OpenGaussStatementParser.TEXT, 0); }
		public TerminalNode SEARCH() { return getToken(OpenGaussStatementParser.SEARCH, 0); }
		public TerminalNode PARSER() { return getToken(OpenGaussStatementParser.PARSER, 0); }
		public TerminalNode DICTIONARY() { return getToken(OpenGaussStatementParser.DICTIONARY, 0); }
		public TerminalNode TEMPLATE() { return getToken(OpenGaussStatementParser.TEMPLATE, 0); }
		public TerminalNode CONFIGURATION() { return getToken(OpenGaussStatementParser.CONFIGURATION, 0); }
		public TerminalNode SEQUENCE() { return getToken(OpenGaussStatementParser.SEQUENCE, 0); }
		public TerminalNode VIEW() { return getToken(OpenGaussStatementParser.VIEW, 0); }
		public TerminalNode MATERIALIZED() { return getToken(OpenGaussStatementParser.MATERIALIZED, 0); }
		public TerminalNode FOREIGN() { return getToken(OpenGaussStatementParser.FOREIGN, 0); }
		public TerminalNode DATA() { return getToken(OpenGaussStatementParser.DATA, 0); }
		public TerminalNode WRAPPER() { return getToken(OpenGaussStatementParser.WRAPPER, 0); }
		public TerminalNode SERVER() { return getToken(OpenGaussStatementParser.SERVER, 0); }
		public TerminalNode TRANSFORM() { return getToken(OpenGaussStatementParser.TRANSFORM, 0); }
		public TerminalNode FOR() { return getToken(OpenGaussStatementParser.FOR, 0); }
		public TerminalNode TYPE() { return getToken(OpenGaussStatementParser.TYPE, 0); }
		public TerminalNode SET() { return getToken(OpenGaussStatementParser.SET, 0); }
		public AlterExtensionClausesContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterExtensionClauses; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitAlterExtensionClauses(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AlterExtensionClausesContext alterExtensionClauses() throws RecognitionException {
		AlterExtensionClausesContext _localctx = new AlterExtensionClausesContext(_ctx, getState());
		enterRule(_localctx, 1030, RULE_alterExtensionClauses);
		int _la;
		try {
			setState(7590);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,669,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(7474);
				match(UPDATE);
				setState(7475);
				alterExtensionOptList();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(7476);
				_la = _input.LA(1);
				if ( !(_la==DROP || _la==ADD) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(7477);
				match(ACCESS);
				setState(7478);
				match(METHOD);
				setState(7479);
				name();
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(7480);
				_la = _input.LA(1);
				if ( !(_la==DROP || _la==ADD) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(7481);
				match(AGGREGATE);
				setState(7482);
				aggregateWithArgtypes();
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(7483);
				_la = _input.LA(1);
				if ( !(_la==DROP || _la==ADD) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(7484);
				match(CAST);
				setState(7485);
				match(LP_);
				setState(7486);
				typeName();
				setState(7487);
				match(AS);
				setState(7488);
				typeName();
				setState(7489);
				match(RP_);
				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(7491);
				_la = _input.LA(1);
				if ( !(_la==DROP || _la==ADD) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(7492);
				match(COLLATION);
				setState(7493);
				anyName();
				}
				break;
			case 6:
				enterOuterAlt(_localctx, 6);
				{
				setState(7494);
				_la = _input.LA(1);
				if ( !(_la==DROP || _la==ADD) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(7495);
				match(CONVERSION);
				setState(7496);
				anyName();
				}
				break;
			case 7:
				enterOuterAlt(_localctx, 7);
				{
				setState(7497);
				_la = _input.LA(1);
				if ( !(_la==DROP || _la==ADD) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(7498);
				match(DOMAIN);
				setState(7499);
				typeName();
				}
				break;
			case 8:
				enterOuterAlt(_localctx, 8);
				{
				setState(7500);
				_la = _input.LA(1);
				if ( !(_la==DROP || _la==ADD) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(7501);
				match(FUNCTION);
				setState(7502);
				functionWithArgtypes();
				}
				break;
			case 9:
				enterOuterAlt(_localctx, 9);
				{
				setState(7503);
				_la = _input.LA(1);
				if ( !(_la==DROP || _la==ADD) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(7505);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==PROCEDURAL) {
					{
					setState(7504);
					match(PROCEDURAL);
					}
				}

				setState(7507);
				match(LANGUAGE);
				setState(7508);
				name();
				}
				break;
			case 10:
				enterOuterAlt(_localctx, 10);
				{
				setState(7509);
				_la = _input.LA(1);
				if ( !(_la==DROP || _la==ADD) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(7510);
				match(OPERATOR);
				setState(7511);
				operatorWithArgtypes();
				}
				break;
			case 11:
				enterOuterAlt(_localctx, 11);
				{
				setState(7512);
				_la = _input.LA(1);
				if ( !(_la==DROP || _la==ADD) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(7513);
				match(OPERATOR);
				setState(7514);
				_la = _input.LA(1);
				if ( !(_la==CLASS || _la==FAMILY) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(7515);
				anyName();
				setState(7516);
				match(USING);
				setState(7517);
				accessMethod();
				}
				break;
			case 12:
				enterOuterAlt(_localctx, 12);
				{
				setState(7519);
				_la = _input.LA(1);
				if ( !(_la==DROP || _la==ADD) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(7520);
				match(PROCEDURE);
				setState(7521);
				functionWithArgtypes();
				}
				break;
			case 13:
				enterOuterAlt(_localctx, 13);
				{
				setState(7522);
				_la = _input.LA(1);
				if ( !(_la==DROP || _la==ADD) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(7523);
				match(ROUTINE);
				setState(7524);
				functionWithArgtypes();
				}
				break;
			case 14:
				enterOuterAlt(_localctx, 14);
				{
				setState(7525);
				_la = _input.LA(1);
				if ( !(_la==DROP || _la==ADD) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(7526);
				match(SCHEMA);
				setState(7527);
				name();
				}
				break;
			case 15:
				enterOuterAlt(_localctx, 15);
				{
				setState(7528);
				_la = _input.LA(1);
				if ( !(_la==DROP || _la==ADD) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(7529);
				match(EVENT);
				setState(7530);
				match(TRIGGER);
				setState(7531);
				name();
				}
				break;
			case 16:
				enterOuterAlt(_localctx, 16);
				{
				setState(7532);
				_la = _input.LA(1);
				if ( !(_la==DROP || _la==ADD) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(7533);
				match(TABLE);
				setState(7534);
				anyName();
				}
				break;
			case 17:
				enterOuterAlt(_localctx, 17);
				{
				setState(7535);
				_la = _input.LA(1);
				if ( !(_la==DROP || _la==ADD) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(7536);
				match(TEXT);
				setState(7537);
				match(SEARCH);
				setState(7538);
				match(PARSER);
				setState(7539);
				anyName();
				}
				break;
			case 18:
				enterOuterAlt(_localctx, 18);
				{
				setState(7540);
				_la = _input.LA(1);
				if ( !(_la==DROP || _la==ADD) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(7541);
				match(TEXT);
				setState(7542);
				match(SEARCH);
				setState(7543);
				match(DICTIONARY);
				setState(7544);
				anyName();
				}
				break;
			case 19:
				enterOuterAlt(_localctx, 19);
				{
				setState(7545);
				_la = _input.LA(1);
				if ( !(_la==DROP || _la==ADD) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(7546);
				match(TEXT);
				setState(7547);
				match(SEARCH);
				setState(7548);
				match(TEMPLATE);
				setState(7549);
				anyName();
				}
				break;
			case 20:
				enterOuterAlt(_localctx, 20);
				{
				setState(7550);
				_la = _input.LA(1);
				if ( !(_la==DROP || _la==ADD) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(7551);
				match(TEXT);
				setState(7552);
				match(SEARCH);
				setState(7553);
				match(CONFIGURATION);
				setState(7554);
				anyName();
				}
				break;
			case 21:
				enterOuterAlt(_localctx, 21);
				{
				setState(7555);
				_la = _input.LA(1);
				if ( !(_la==DROP || _la==ADD) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(7556);
				match(SEQUENCE);
				setState(7557);
				anyName();
				}
				break;
			case 22:
				enterOuterAlt(_localctx, 22);
				{
				setState(7558);
				_la = _input.LA(1);
				if ( !(_la==DROP || _la==ADD) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(7559);
				match(VIEW);
				setState(7560);
				anyName();
				}
				break;
			case 23:
				enterOuterAlt(_localctx, 23);
				{
				setState(7561);
				_la = _input.LA(1);
				if ( !(_la==DROP || _la==ADD) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(7562);
				match(MATERIALIZED);
				setState(7563);
				match(VIEW);
				setState(7564);
				anyName();
				}
				break;
			case 24:
				enterOuterAlt(_localctx, 24);
				{
				setState(7565);
				_la = _input.LA(1);
				if ( !(_la==DROP || _la==ADD) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(7566);
				match(FOREIGN);
				setState(7567);
				match(TABLE);
				setState(7568);
				anyName();
				}
				break;
			case 25:
				enterOuterAlt(_localctx, 25);
				{
				setState(7569);
				_la = _input.LA(1);
				if ( !(_la==DROP || _la==ADD) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(7570);
				match(FOREIGN);
				setState(7571);
				match(DATA);
				setState(7572);
				match(WRAPPER);
				setState(7573);
				name();
				}
				break;
			case 26:
				enterOuterAlt(_localctx, 26);
				{
				setState(7574);
				_la = _input.LA(1);
				if ( !(_la==DROP || _la==ADD) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(7575);
				match(SERVER);
				setState(7576);
				name();
				}
				break;
			case 27:
				enterOuterAlt(_localctx, 27);
				{
				setState(7577);
				_la = _input.LA(1);
				if ( !(_la==DROP || _la==ADD) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(7578);
				match(TRANSFORM);
				setState(7579);
				match(FOR);
				setState(7580);
				typeName();
				setState(7581);
				match(LANGUAGE);
				setState(7582);
				name();
				}
				break;
			case 28:
				enterOuterAlt(_localctx, 28);
				{
				setState(7584);
				_la = _input.LA(1);
				if ( !(_la==DROP || _la==ADD) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(7585);
				match(TYPE);
				setState(7586);
				typeName();
				}
				break;
			case 29:
				enterOuterAlt(_localctx, 29);
				{
				setState(7587);
				match(SET);
				setState(7588);
				match(SCHEMA);
				setState(7589);
				name();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class FunctionWithArgtypesContext extends ParserRuleContext {
		public FuncNameContext funcName() {
			return getRuleContext(FuncNameContext.class,0);
		}
		public FuncArgsContext funcArgs() {
			return getRuleContext(FuncArgsContext.class,0);
		}
		public TypeFuncNameKeywordContext typeFuncNameKeyword() {
			return getRuleContext(TypeFuncNameKeywordContext.class,0);
		}
		public ColIdContext colId() {
			return getRuleContext(ColIdContext.class,0);
		}
		public IndirectionContext indirection() {
			return getRuleContext(IndirectionContext.class,0);
		}
		public FunctionWithArgtypesContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_functionWithArgtypes; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitFunctionWithArgtypes(this);
			else return visitor.visitChildren(this);
		}
	}

	public final FunctionWithArgtypesContext functionWithArgtypes() throws RecognitionException {
		FunctionWithArgtypesContext _localctx = new FunctionWithArgtypesContext(_ctx, getState());
		enterRule(_localctx, 1032, RULE_functionWithArgtypes);
		try {
			setState(7600);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,670,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(7592);
				funcName();
				setState(7593);
				funcArgs();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(7595);
				typeFuncNameKeyword();
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(7596);
				colId();
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(7597);
				colId();
				setState(7598);
				indirection(0);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class FuncArgsContext extends ParserRuleContext {
		public TerminalNode LP_() { return getToken(OpenGaussStatementParser.LP_, 0); }
		public FuncArgsListContext funcArgsList() {
			return getRuleContext(FuncArgsListContext.class,0);
		}
		public TerminalNode RP_() { return getToken(OpenGaussStatementParser.RP_, 0); }
		public FuncArgsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_funcArgs; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitFuncArgs(this);
			else return visitor.visitChildren(this);
		}
	}

	public final FuncArgsContext funcArgs() throws RecognitionException {
		FuncArgsContext _localctx = new FuncArgsContext(_ctx, getState());
		enterRule(_localctx, 1034, RULE_funcArgs);
		try {
			setState(7608);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,671,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(7602);
				match(LP_);
				setState(7603);
				funcArgsList();
				setState(7604);
				match(RP_);
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(7606);
				match(LP_);
				setState(7607);
				match(RP_);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AggregateWithArgtypesContext extends ParserRuleContext {
		public FuncNameContext funcName() {
			return getRuleContext(FuncNameContext.class,0);
		}
		public AggrArgsContext aggrArgs() {
			return getRuleContext(AggrArgsContext.class,0);
		}
		public AggregateWithArgtypesContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_aggregateWithArgtypes; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitAggregateWithArgtypes(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AggregateWithArgtypesContext aggregateWithArgtypes() throws RecognitionException {
		AggregateWithArgtypesContext _localctx = new AggregateWithArgtypesContext(_ctx, getState());
		enterRule(_localctx, 1036, RULE_aggregateWithArgtypes);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7610);
			funcName();
			setState(7611);
			aggrArgs();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterExtensionOptListContext extends ParserRuleContext {
		public List alterExtensionOptItem() {
			return getRuleContexts(AlterExtensionOptItemContext.class);
		}
		public AlterExtensionOptItemContext alterExtensionOptItem(int i) {
			return getRuleContext(AlterExtensionOptItemContext.class,i);
		}
		public AlterExtensionOptListContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterExtensionOptList; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitAlterExtensionOptList(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AlterExtensionOptListContext alterExtensionOptList() throws RecognitionException {
		AlterExtensionOptListContext _localctx = new AlterExtensionOptListContext(_ctx, getState());
		enterRule(_localctx, 1038, RULE_alterExtensionOptList);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7616);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==TO) {
				{
				{
				setState(7613);
				alterExtensionOptItem();
				}
				}
				setState(7618);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterExtensionOptItemContext extends ParserRuleContext {
		public TerminalNode TO() { return getToken(OpenGaussStatementParser.TO, 0); }
		public NonReservedWordContext nonReservedWord() {
			return getRuleContext(NonReservedWordContext.class,0);
		}
		public TerminalNode STRING_() { return getToken(OpenGaussStatementParser.STRING_, 0); }
		public AlterExtensionOptItemContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterExtensionOptItem; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitAlterExtensionOptItem(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AlterExtensionOptItemContext alterExtensionOptItem() throws RecognitionException {
		AlterExtensionOptItemContext _localctx = new AlterExtensionOptItemContext(_ctx, getState());
		enterRule(_localctx, 1040, RULE_alterExtensionOptItem);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7619);
			match(TO);
			setState(7622);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case UNICODE_ESCAPE:
			case INSERT:
			case UPDATE:
			case DELETE:
			case ALTER:
			case DROP:
			case TRUNCATE:
			case SCHEMA:
			case REVOKE:
			case ADD:
			case SET:
			case INDEX:
			case KEY:
			case POSITION:
			case PRECISION:
			case FUNCTION:
			case TRIGGER:
			case PROCEDURE:
			case VIEW:
			case VALUES:
			case TRIM:
			case SUBSTRING:
			case NATURAL:
			case JOIN:
			case FULL:
			case INNER:
			case OUTER:
			case LEFT:
			case RIGHT:
			case CROSS:
			case IF:
			case IS:
			case EXISTS:
			case BETWEEN:
			case LIKE:
			case BY:
			case BEGIN:
			case COMMIT:
			case ROLLBACK:
			case SAVEPOINT:
			case BOOLEAN:
			case DOUBLE:
			case CHAR:
			case CHARACTER:
			case INTERVAL:
			case TIME:
			case TIMESTAMP:
			case YEAR:
			case MONTH:
			case DAY:
			case HOUR:
			case MINUTE:
			case SECOND:
			case CURRENT:
			case ENABLE:
			case DISABLE:
			case CALL:
			case PRESERVE:
			case DEFINER:
			case SQL:
			case CASCADED:
			case LOCAL:
			case CLOSE:
			case NEXT:
			case NAME:
			case COLLATION:
			case NAMES:
			case INTEGER:
			case REAL:
			case DECIMAL:
			case TYPE:
			case SMALLINT:
			case BIGINT:
			case NUMERIC:
			case TEXT:
			case REPEATABLE:
			case NULLIF:
			case VARYING:
			case NATIONAL:
			case NCHAR:
			case VALUE:
			case COALESCE:
			case TIES:
			case CUBE:
			case GROUPING:
			case SETS:
			case OTHERS:
			case OVERLAPS:
			case AT:
			case DEC:
			case MAXVALUE:
			case ADMIN:
			case BINARY:
			case ESCAPE:
			case EXCLUDE:
			case MOD:
			case PARTITION:
			case ROW:
			case UNKNOWN:
			case ALWAYS:
			case CASCADE:
			case GENERATED:
			case ISOLATION:
			case LEVEL:
			case NO:
			case OPTION:
			case PRIVILEGES:
			case READ:
			case ROLE:
			case ROWS:
			case START:
			case TRANSACTION:
			case ACTION:
			case CACHE:
			case CHARACTERISTICS:
			case CLUSTER:
			case COMMENTS:
			case CONCURRENTLY:
			case CONSTRAINTS:
			case CYCLE:
			case DATA:
			case DATABASE:
			case DEFAULTS:
			case DEFERRED:
			case DEPENDS:
			case DOMAIN:
			case EXCLUDING:
			case EXECUTE:
			case EXTENDED:
			case EXTENSION:
			case EXTERNAL:
			case EXTRACT:
			case FILTER:
			case FIRST:
			case FOLLOWING:
			case FORCE:
			case GLOBAL:
			case IDENTITY:
			case IMMEDIATE:
			case INCLUDING:
			case INCREMENT:
			case INDEXES:
			case INHERIT:
			case INHERITS:
			case INCLUDE:
			case LANGUAGE:
			case LARGE:
			case LAST:
			case LOGGED:
			case MAIN:
			case MATCH:
			case MINVALUE:
			case NOTHING:
			case NULLS:
			case OBJECT:
			case OIDS:
			case OVER:
			case OWNED:
			case OWNER:
			case PARTIAL:
			case PLAIN:
			case PRECEDING:
			case RANGE:
			case RENAME:
			case REPLICA:
			case RESET:
			case RESTART:
			case RESTRICT:
			case ROUTINE:
			case RULE:
			case SECURITY:
			case SEQUENCE:
			case SESSION:
			case SHOW:
			case SIMPLE:
			case STATISTICS:
			case STORAGE:
			case TABLESPACE:
			case TEMP:
			case TEMPORARY:
			case UNBOUNDED:
			case UNLOGGED:
			case VALID:
			case VALIDATE:
			case WITHIN:
			case WITHOUT:
			case ZONE:
			case OF:
			case UESCAPE:
			case GROUPS:
			case RECURSIVE:
			case INT:
			case INT2:
			case INT4:
			case FLOAT:
			case FLOAT4:
			case VARCHAR:
			case BYTEA:
			case ENUM:
			case POINT:
			case LSEG:
			case BOX:
			case PATH:
			case POLYGON:
			case CIRCLE:
			case INET:
			case BIT:
			case TSQUERY:
			case XML:
			case JSON:
			case INT4RANGE:
			case INT8RANGE:
			case NUMRANGE:
			case DATERANGE:
			case TABLESAMPLE:
			case ORDINALITY:
			case CURRENT_SCHEMA:
			case OVERLAY:
			case XMLCONCAT:
			case XMLELEMENT:
			case XMLEXISTS:
			case XMLFOREST:
			case XMLPARSE:
			case XMLPI:
			case XMLROOT:
			case XMLSERIALIZE:
			case TREAT:
			case SETOF:
			case NFC:
			case NFD:
			case NFKC:
			case NFKD:
			case XMLATTRIBUTES:
			case REF:
			case PASSING:
			case VERSION:
			case YES:
			case STANDALONE:
			case GREATEST:
			case LEAST:
			case MATERIALIZED:
			case OPERATOR:
			case SHARE:
			case ROLLUP:
			case ILIKE:
			case SIMILAR:
			case ISNULL:
			case NOTNULL:
			case DOCUMENT:
			case NORMALIZED:
			case NOWAIT:
			case LOCKED:
			case XMLTABLE:
			case COLUMNS:
			case CONTENT:
			case STRIP:
			case WHITESPACE:
			case XMLNAMESPACES:
			case NONE:
			case CONFLICT:
			case OVERRIDING:
			case SYSTEM:
			case ABORT:
			case ABSOLUTE:
			case ACCESS:
			case AFTER:
			case AGGREGATE:
			case ALSO:
			case ATTACH:
			case ATTRIBUTE:
			case BACKWARD:
			case BEFORE:
			case ASSERTION:
			case ASSIGNMENT:
			case CONTINUE:
			case CONVERSION:
			case COPY:
			case COST:
			case CSV:
			case CALLED:
			case CATALOG:
			case CHAIN:
			case CHECKPOINT:
			case CLASS:
			case CONFIGURATION:
			case COMMENT:
			case DETACH:
			case DICTIONARY:
			case EXPRESSION:
			case INSENSITIVE:
			case DISCARD:
			case OFF:
			case INSTEAD:
			case EXPLAIN:
			case INPUT:
			case INLINE:
			case PARALLEL:
			case LEAKPROOF:
			case COMMITTED:
			case ENCODING:
			case IMPLICIT:
			case DELIMITER:
			case CURSOR:
			case EACH:
			case EVENT:
			case DEALLOCATE:
			case CONNECTION:
			case DECLARE:
			case FAMILY:
			case FORWARD:
			case EXCLUSIVE:
			case FUNCTIONS:
			case LOCATION:
			case LABEL:
			case DELIMITERS:
			case HANDLER:
			case HEADER:
			case IMMUTABLE:
			case GRANTED:
			case HOLD:
			case MAPPING:
			case OLD:
			case METHOD:
			case LOAD:
			case LISTEN:
			case MODE:
			case MOVE:
			case PROCEDURAL:
			case PARSER:
			case PROCEDURES:
			case ENCRYPTED:
			case PUBLICATION:
			case PROGRAM:
			case REFERENCING:
			case PLANS:
			case REINDEX:
			case PRIOR:
			case PASSWORD:
			case RELATIVE:
			case QUOTE:
			case ROUTINES:
			case REPLACE:
			case SNAPSHOT:
			case REFRESH:
			case PREPARE:
			case OPTIONS:
			case IMPORT:
			case INVOKER:
			case NEW:
			case PREPARED:
			case SCROLL:
			case SEQUENCES:
			case SYSID:
			case REASSIGN:
			case SERVER:
			case SUBSCRIPTION:
			case SEARCH:
			case SCHEMAS:
			case RECHECK:
			case POLICY:
			case NOTIFY:
			case LOCK:
			case RELEASE:
			case SERIALIZABLE:
			case RETURNS:
			case STATEMENT:
			case STDIN:
			case STDOUT:
			case TABLES:
			case SUPPORT:
			case STABLE:
			case TEMPLATE:
			case UNENCRYPTED:
			case VIEWS:
			case UNCOMMITTED:
			case TRANSFORM:
			case UNLISTEN:
			case TRUSTED:
			case VALIDATOR:
			case UNTIL:
			case VACUUM:
			case VOLATILE:
			case STORED:
			case WRITE:
			case STRICT:
			case TYPES:
			case WRAPPER:
			case WORK:
			case FREEZE:
			case AUTHORIZATION:
			case VERBOSE:
			case OUT:
			case INOUT:
			case INT16:
			case INT1:
			case ELEM_CONTAINED_BY_RANGE:
			case IDENTIFIER_:
				{
				setState(7620);
				nonReservedWord();
				}
				break;
			case STRING_:
				{
				setState(7621);
				match(STRING_);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterForeignDataWrapperContext extends ParserRuleContext {
		public TerminalNode ALTER() { return getToken(OpenGaussStatementParser.ALTER, 0); }
		public TerminalNode FOREIGN() { return getToken(OpenGaussStatementParser.FOREIGN, 0); }
		public TerminalNode DATA() { return getToken(OpenGaussStatementParser.DATA, 0); }
		public TerminalNode WRAPPER() { return getToken(OpenGaussStatementParser.WRAPPER, 0); }
		public ColIdContext colId() {
			return getRuleContext(ColIdContext.class,0);
		}
		public AlterForeignDataWrapperClausesContext alterForeignDataWrapperClauses() {
			return getRuleContext(AlterForeignDataWrapperClausesContext.class,0);
		}
		public AlterForeignDataWrapperContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterForeignDataWrapper; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitAlterForeignDataWrapper(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AlterForeignDataWrapperContext alterForeignDataWrapper() throws RecognitionException {
		AlterForeignDataWrapperContext _localctx = new AlterForeignDataWrapperContext(_ctx, getState());
		enterRule(_localctx, 1042, RULE_alterForeignDataWrapper);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7624);
			match(ALTER);
			setState(7625);
			match(FOREIGN);
			setState(7626);
			match(DATA);
			setState(7627);
			match(WRAPPER);
			setState(7628);
			colId();
			setState(7629);
			alterForeignDataWrapperClauses();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterForeignDataWrapperClausesContext extends ParserRuleContext {
		public AlterGenericOptionsContext alterGenericOptions() {
			return getRuleContext(AlterGenericOptionsContext.class,0);
		}
		public FdwOptionsContext fdwOptions() {
			return getRuleContext(FdwOptionsContext.class,0);
		}
		public TerminalNode RENAME() { return getToken(OpenGaussStatementParser.RENAME, 0); }
		public TerminalNode TO() { return getToken(OpenGaussStatementParser.TO, 0); }
		public NameContext name() {
			return getRuleContext(NameContext.class,0);
		}
		public TerminalNode OWNER() { return getToken(OpenGaussStatementParser.OWNER, 0); }
		public RoleSpecContext roleSpec() {
			return getRuleContext(RoleSpecContext.class,0);
		}
		public AlterForeignDataWrapperClausesContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterForeignDataWrapperClauses; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitAlterForeignDataWrapperClauses(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AlterForeignDataWrapperClausesContext alterForeignDataWrapperClauses() throws RecognitionException {
		AlterForeignDataWrapperClausesContext _localctx = new AlterForeignDataWrapperClausesContext(_ctx, getState());
		enterRule(_localctx, 1044, RULE_alterForeignDataWrapperClauses);
		int _la;
		try {
			setState(7642);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,675,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(7632);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==NO || _la==HANDLER || _la==VALIDATOR) {
					{
					setState(7631);
					fdwOptions();
					}
				}

				setState(7634);
				alterGenericOptions();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(7635);
				fdwOptions();
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(7636);
				match(RENAME);
				setState(7637);
				match(TO);
				setState(7638);
				name();
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(7639);
				match(OWNER);
				setState(7640);
				match(TO);
				setState(7641);
				roleSpec();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class FdwOptionsContext extends ParserRuleContext {
		public List fdwOption() {
			return getRuleContexts(FdwOptionContext.class);
		}
		public FdwOptionContext fdwOption(int i) {
			return getRuleContext(FdwOptionContext.class,i);
		}
		public FdwOptionsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_fdwOptions; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitFdwOptions(this);
			else return visitor.visitChildren(this);
		}
	}

	public final FdwOptionsContext fdwOptions() throws RecognitionException {
		FdwOptionsContext _localctx = new FdwOptionsContext(_ctx, getState());
		enterRule(_localctx, 1046, RULE_fdwOptions);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7645); 
			_errHandler.sync(this);
			_la = _input.LA(1);
			do {
				{
				{
				setState(7644);
				fdwOption();
				}
				}
				setState(7647); 
				_errHandler.sync(this);
				_la = _input.LA(1);
			} while ( _la==NO || _la==HANDLER || _la==VALIDATOR );
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class FdwOptionContext extends ParserRuleContext {
		public TerminalNode HANDLER() { return getToken(OpenGaussStatementParser.HANDLER, 0); }
		public HandlerNameContext handlerName() {
			return getRuleContext(HandlerNameContext.class,0);
		}
		public TerminalNode NO() { return getToken(OpenGaussStatementParser.NO, 0); }
		public TerminalNode VALIDATOR() { return getToken(OpenGaussStatementParser.VALIDATOR, 0); }
		public FdwOptionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_fdwOption; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitFdwOption(this);
			else return visitor.visitChildren(this);
		}
	}

	public final FdwOptionContext fdwOption() throws RecognitionException {
		FdwOptionContext _localctx = new FdwOptionContext(_ctx, getState());
		enterRule(_localctx, 1048, RULE_fdwOption);
		try {
			setState(7657);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,677,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(7649);
				match(HANDLER);
				setState(7650);
				handlerName();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(7651);
				match(NO);
				setState(7652);
				match(HANDLER);
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(7653);
				match(VALIDATOR);
				setState(7654);
				handlerName();
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(7655);
				match(NO);
				setState(7656);
				match(VALIDATOR);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class HandlerNameContext extends ParserRuleContext {
		public AnyNameContext anyName() {
			return getRuleContext(AnyNameContext.class,0);
		}
		public HandlerNameContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_handlerName; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitHandlerName(this);
			else return visitor.visitChildren(this);
		}
	}

	public final HandlerNameContext handlerName() throws RecognitionException {
		HandlerNameContext _localctx = new HandlerNameContext(_ctx, getState());
		enterRule(_localctx, 1050, RULE_handlerName);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7659);
			anyName();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterGroupContext extends ParserRuleContext {
		public TerminalNode ALTER() { return getToken(OpenGaussStatementParser.ALTER, 0); }
		public TerminalNode GROUP() { return getToken(OpenGaussStatementParser.GROUP, 0); }
		public AlterGroupClausesContext alterGroupClauses() {
			return getRuleContext(AlterGroupClausesContext.class,0);
		}
		public AlterGroupContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterGroup; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitAlterGroup(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AlterGroupContext alterGroup() throws RecognitionException {
		AlterGroupContext _localctx = new AlterGroupContext(_ctx, getState());
		enterRule(_localctx, 1052, RULE_alterGroup);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7661);
			match(ALTER);
			setState(7662);
			match(GROUP);
			setState(7663);
			alterGroupClauses();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterGroupClausesContext extends ParserRuleContext {
		public List roleSpec() {
			return getRuleContexts(RoleSpecContext.class);
		}
		public RoleSpecContext roleSpec(int i) {
			return getRuleContext(RoleSpecContext.class,i);
		}
		public TerminalNode USER() { return getToken(OpenGaussStatementParser.USER, 0); }
		public RoleListContext roleList() {
			return getRuleContext(RoleListContext.class,0);
		}
		public TerminalNode ADD() { return getToken(OpenGaussStatementParser.ADD, 0); }
		public TerminalNode DROP() { return getToken(OpenGaussStatementParser.DROP, 0); }
		public TerminalNode RENAME() { return getToken(OpenGaussStatementParser.RENAME, 0); }
		public TerminalNode TO() { return getToken(OpenGaussStatementParser.TO, 0); }
		public AlterGroupClausesContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterGroupClauses; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitAlterGroupClauses(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AlterGroupClausesContext alterGroupClauses() throws RecognitionException {
		AlterGroupClausesContext _localctx = new AlterGroupClausesContext(_ctx, getState());
		enterRule(_localctx, 1054, RULE_alterGroupClauses);
		int _la;
		try {
			setState(7675);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,678,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(7665);
				roleSpec();
				setState(7666);
				_la = _input.LA(1);
				if ( !(_la==DROP || _la==ADD) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(7667);
				match(USER);
				setState(7668);
				roleList();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(7670);
				roleSpec();
				setState(7671);
				match(RENAME);
				setState(7672);
				match(TO);
				setState(7673);
				roleSpec();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterLanguageContext extends ParserRuleContext {
		public TerminalNode ALTER() { return getToken(OpenGaussStatementParser.ALTER, 0); }
		public TerminalNode LANGUAGE() { return getToken(OpenGaussStatementParser.LANGUAGE, 0); }
		public List colId() {
			return getRuleContexts(ColIdContext.class);
		}
		public ColIdContext colId(int i) {
			return getRuleContext(ColIdContext.class,i);
		}
		public TerminalNode RENAME() { return getToken(OpenGaussStatementParser.RENAME, 0); }
		public TerminalNode TO() { return getToken(OpenGaussStatementParser.TO, 0); }
		public TerminalNode OWNER() { return getToken(OpenGaussStatementParser.OWNER, 0); }
		public TerminalNode PROCEDURAL() { return getToken(OpenGaussStatementParser.PROCEDURAL, 0); }
		public IgnoredIdentifierContext ignoredIdentifier() {
			return getRuleContext(IgnoredIdentifierContext.class,0);
		}
		public TerminalNode CURRENT_USER() { return getToken(OpenGaussStatementParser.CURRENT_USER, 0); }
		public TerminalNode SESSION_USER() { return getToken(OpenGaussStatementParser.SESSION_USER, 0); }
		public AlterLanguageContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterLanguage; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitAlterLanguage(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AlterLanguageContext alterLanguage() throws RecognitionException {
		AlterLanguageContext _localctx = new AlterLanguageContext(_ctx, getState());
		enterRule(_localctx, 1056, RULE_alterLanguage);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7677);
			match(ALTER);
			setState(7679);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==PROCEDURAL) {
				{
				setState(7678);
				match(PROCEDURAL);
				}
			}

			setState(7681);
			match(LANGUAGE);
			setState(7682);
			colId();
			setState(7693);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case RENAME:
				{
				setState(7683);
				match(RENAME);
				setState(7684);
				match(TO);
				setState(7685);
				colId();
				}
				break;
			case OWNER:
				{
				setState(7686);
				match(OWNER);
				setState(7687);
				match(TO);
				setState(7691);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case UNICODE_ESCAPE:
				case INSERT:
				case UPDATE:
				case DELETE:
				case ALTER:
				case DROP:
				case TRUNCATE:
				case SCHEMA:
				case REVOKE:
				case ADD:
				case SET:
				case INDEX:
				case KEY:
				case POSITION:
				case FUNCTION:
				case TRIGGER:
				case PROCEDURE:
				case VIEW:
				case IF:
				case BY:
				case BEGIN:
				case COMMIT:
				case ROLLBACK:
				case SAVEPOINT:
				case DOUBLE:
				case INTERVAL:
				case TIME:
				case TIMESTAMP:
				case YEAR:
				case MONTH:
				case DAY:
				case HOUR:
				case MINUTE:
				case SECOND:
				case CURRENT:
				case ENABLE:
				case DISABLE:
				case CALL:
				case PRESERVE:
				case DEFINER:
				case SQL:
				case CASCADED:
				case LOCAL:
				case CLOSE:
				case NEXT:
				case NAME:
				case NAMES:
				case TYPE:
				case TEXT:
				case REPEATABLE:
				case VARYING:
				case NATIONAL:
				case VALUE:
				case TIES:
				case CUBE:
				case SETS:
				case OTHERS:
				case AT:
				case MAXVALUE:
				case ADMIN:
				case ESCAPE:
				case EXCLUDE:
				case MOD:
				case PARTITION:
				case UNKNOWN:
				case ALWAYS:
				case CASCADE:
				case GENERATED:
				case ISOLATION:
				case LEVEL:
				case NO:
				case OPTION:
				case PRIVILEGES:
				case READ:
				case ROLE:
				case ROWS:
				case START:
				case TRANSACTION:
				case ACTION:
				case CACHE:
				case CHARACTERISTICS:
				case CLUSTER:
				case COMMENTS:
				case CONSTRAINTS:
				case CYCLE:
				case DATA:
				case DATABASE:
				case DEFAULTS:
				case DEFERRED:
				case DEPENDS:
				case DOMAIN:
				case EXCLUDING:
				case EXECUTE:
				case EXTENDED:
				case EXTENSION:
				case EXTERNAL:
				case FILTER:
				case FIRST:
				case FOLLOWING:
				case FORCE:
				case GLOBAL:
				case IDENTITY:
				case IMMEDIATE:
				case INCLUDING:
				case INCREMENT:
				case INDEXES:
				case INHERIT:
				case INHERITS:
				case INCLUDE:
				case LANGUAGE:
				case LARGE:
				case LAST:
				case LOGGED:
				case MAIN:
				case MATCH:
				case MINVALUE:
				case NOTHING:
				case NULLS:
				case OBJECT:
				case OIDS:
				case OVER:
				case OWNED:
				case OWNER:
				case PARTIAL:
				case PLAIN:
				case PRECEDING:
				case RANGE:
				case RENAME:
				case REPLICA:
				case RESET:
				case RESTART:
				case RESTRICT:
				case ROUTINE:
				case RULE:
				case SECURITY:
				case SEQUENCE:
				case SESSION:
				case SHOW:
				case SIMPLE:
				case STATISTICS:
				case STORAGE:
				case TABLESPACE:
				case TEMP:
				case TEMPORARY:
				case UNBOUNDED:
				case UNLOGGED:
				case VALID:
				case VALIDATE:
				case WITHIN:
				case WITHOUT:
				case ZONE:
				case OF:
				case UESCAPE:
				case GROUPS:
				case RECURSIVE:
				case INT2:
				case INT4:
				case FLOAT4:
				case BYTEA:
				case ENUM:
				case POINT:
				case LSEG:
				case BOX:
				case PATH:
				case POLYGON:
				case CIRCLE:
				case INET:
				case TSQUERY:
				case XML:
				case JSON:
				case INT4RANGE:
				case INT8RANGE:
				case NUMRANGE:
				case DATERANGE:
				case ORDINALITY:
				case NFC:
				case NFD:
				case NFKC:
				case NFKD:
				case REF:
				case PASSING:
				case VERSION:
				case YES:
				case STANDALONE:
				case MATERIALIZED:
				case OPERATOR:
				case SHARE:
				case ROLLUP:
				case DOCUMENT:
				case NORMALIZED:
				case NOWAIT:
				case LOCKED:
				case COLUMNS:
				case CONTENT:
				case STRIP:
				case WHITESPACE:
				case CONFLICT:
				case OVERRIDING:
				case SYSTEM:
				case ABORT:
				case ABSOLUTE:
				case ACCESS:
				case AFTER:
				case AGGREGATE:
				case ALSO:
				case ATTACH:
				case ATTRIBUTE:
				case BACKWARD:
				case BEFORE:
				case ASSERTION:
				case ASSIGNMENT:
				case CONTINUE:
				case CONVERSION:
				case COPY:
				case COST:
				case CSV:
				case CALLED:
				case CATALOG:
				case CHAIN:
				case CHECKPOINT:
				case CLASS:
				case CONFIGURATION:
				case COMMENT:
				case DETACH:
				case DICTIONARY:
				case EXPRESSION:
				case INSENSITIVE:
				case DISCARD:
				case OFF:
				case INSTEAD:
				case EXPLAIN:
				case INPUT:
				case INLINE:
				case PARALLEL:
				case LEAKPROOF:
				case COMMITTED:
				case ENCODING:
				case IMPLICIT:
				case DELIMITER:
				case CURSOR:
				case EACH:
				case EVENT:
				case DEALLOCATE:
				case CONNECTION:
				case DECLARE:
				case FAMILY:
				case FORWARD:
				case EXCLUSIVE:
				case FUNCTIONS:
				case LOCATION:
				case LABEL:
				case DELIMITERS:
				case HANDLER:
				case HEADER:
				case IMMUTABLE:
				case GRANTED:
				case HOLD:
				case MAPPING:
				case OLD:
				case METHOD:
				case LOAD:
				case LISTEN:
				case MODE:
				case MOVE:
				case PROCEDURAL:
				case PARSER:
				case PROCEDURES:
				case ENCRYPTED:
				case PUBLICATION:
				case PROGRAM:
				case REFERENCING:
				case PLANS:
				case REINDEX:
				case PRIOR:
				case PASSWORD:
				case RELATIVE:
				case QUOTE:
				case ROUTINES:
				case REPLACE:
				case SNAPSHOT:
				case REFRESH:
				case PREPARE:
				case OPTIONS:
				case IMPORT:
				case INVOKER:
				case NEW:
				case PREPARED:
				case SCROLL:
				case SEQUENCES:
				case SYSID:
				case REASSIGN:
				case SERVER:
				case SUBSCRIPTION:
				case SEARCH:
				case SCHEMAS:
				case RECHECK:
				case POLICY:
				case NOTIFY:
				case LOCK:
				case RELEASE:
				case SERIALIZABLE:
				case RETURNS:
				case STATEMENT:
				case STDIN:
				case STDOUT:
				case TABLES:
				case SUPPORT:
				case STABLE:
				case TEMPLATE:
				case UNENCRYPTED:
				case VIEWS:
				case UNCOMMITTED:
				case TRANSFORM:
				case UNLISTEN:
				case TRUSTED:
				case VALIDATOR:
				case UNTIL:
				case VACUUM:
				case VOLATILE:
				case STORED:
				case WRITE:
				case STRICT:
				case TYPES:
				case WRAPPER:
				case WORK:
				case INT16:
				case INT1:
				case ELEM_CONTAINED_BY_RANGE:
				case IDENTIFIER_:
					{
					setState(7688);
					ignoredIdentifier();
					}
					break;
				case CURRENT_USER:
					{
					setState(7689);
					match(CURRENT_USER);
					}
					break;
				case SESSION_USER:
					{
					setState(7690);
					match(SESSION_USER);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterLargeObjectContext extends ParserRuleContext {
		public TerminalNode ALTER() { return getToken(OpenGaussStatementParser.ALTER, 0); }
		public TerminalNode LARGE() { return getToken(OpenGaussStatementParser.LARGE, 0); }
		public TerminalNode OBJECT() { return getToken(OpenGaussStatementParser.OBJECT, 0); }
		public NumericOnlyContext numericOnly() {
			return getRuleContext(NumericOnlyContext.class,0);
		}
		public TerminalNode OWNER() { return getToken(OpenGaussStatementParser.OWNER, 0); }
		public TerminalNode TO() { return getToken(OpenGaussStatementParser.TO, 0); }
		public IgnoredIdentifierContext ignoredIdentifier() {
			return getRuleContext(IgnoredIdentifierContext.class,0);
		}
		public TerminalNode CURRENT_USER() { return getToken(OpenGaussStatementParser.CURRENT_USER, 0); }
		public TerminalNode SESSION_USER() { return getToken(OpenGaussStatementParser.SESSION_USER, 0); }
		public AlterLargeObjectContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterLargeObject; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitAlterLargeObject(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AlterLargeObjectContext alterLargeObject() throws RecognitionException {
		AlterLargeObjectContext _localctx = new AlterLargeObjectContext(_ctx, getState());
		enterRule(_localctx, 1058, RULE_alterLargeObject);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7695);
			match(ALTER);
			setState(7696);
			match(LARGE);
			setState(7697);
			match(OBJECT);
			setState(7698);
			numericOnly();
			setState(7699);
			match(OWNER);
			setState(7700);
			match(TO);
			setState(7704);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case UNICODE_ESCAPE:
			case INSERT:
			case UPDATE:
			case DELETE:
			case ALTER:
			case DROP:
			case TRUNCATE:
			case SCHEMA:
			case REVOKE:
			case ADD:
			case SET:
			case INDEX:
			case KEY:
			case POSITION:
			case FUNCTION:
			case TRIGGER:
			case PROCEDURE:
			case VIEW:
			case IF:
			case BY:
			case BEGIN:
			case COMMIT:
			case ROLLBACK:
			case SAVEPOINT:
			case DOUBLE:
			case INTERVAL:
			case TIME:
			case TIMESTAMP:
			case YEAR:
			case MONTH:
			case DAY:
			case HOUR:
			case MINUTE:
			case SECOND:
			case CURRENT:
			case ENABLE:
			case DISABLE:
			case CALL:
			case PRESERVE:
			case DEFINER:
			case SQL:
			case CASCADED:
			case LOCAL:
			case CLOSE:
			case NEXT:
			case NAME:
			case NAMES:
			case TYPE:
			case TEXT:
			case REPEATABLE:
			case VARYING:
			case NATIONAL:
			case VALUE:
			case TIES:
			case CUBE:
			case SETS:
			case OTHERS:
			case AT:
			case MAXVALUE:
			case ADMIN:
			case ESCAPE:
			case EXCLUDE:
			case MOD:
			case PARTITION:
			case UNKNOWN:
			case ALWAYS:
			case CASCADE:
			case GENERATED:
			case ISOLATION:
			case LEVEL:
			case NO:
			case OPTION:
			case PRIVILEGES:
			case READ:
			case ROLE:
			case ROWS:
			case START:
			case TRANSACTION:
			case ACTION:
			case CACHE:
			case CHARACTERISTICS:
			case CLUSTER:
			case COMMENTS:
			case CONSTRAINTS:
			case CYCLE:
			case DATA:
			case DATABASE:
			case DEFAULTS:
			case DEFERRED:
			case DEPENDS:
			case DOMAIN:
			case EXCLUDING:
			case EXECUTE:
			case EXTENDED:
			case EXTENSION:
			case EXTERNAL:
			case FILTER:
			case FIRST:
			case FOLLOWING:
			case FORCE:
			case GLOBAL:
			case IDENTITY:
			case IMMEDIATE:
			case INCLUDING:
			case INCREMENT:
			case INDEXES:
			case INHERIT:
			case INHERITS:
			case INCLUDE:
			case LANGUAGE:
			case LARGE:
			case LAST:
			case LOGGED:
			case MAIN:
			case MATCH:
			case MINVALUE:
			case NOTHING:
			case NULLS:
			case OBJECT:
			case OIDS:
			case OVER:
			case OWNED:
			case OWNER:
			case PARTIAL:
			case PLAIN:
			case PRECEDING:
			case RANGE:
			case RENAME:
			case REPLICA:
			case RESET:
			case RESTART:
			case RESTRICT:
			case ROUTINE:
			case RULE:
			case SECURITY:
			case SEQUENCE:
			case SESSION:
			case SHOW:
			case SIMPLE:
			case STATISTICS:
			case STORAGE:
			case TABLESPACE:
			case TEMP:
			case TEMPORARY:
			case UNBOUNDED:
			case UNLOGGED:
			case VALID:
			case VALIDATE:
			case WITHIN:
			case WITHOUT:
			case ZONE:
			case OF:
			case UESCAPE:
			case GROUPS:
			case RECURSIVE:
			case INT2:
			case INT4:
			case FLOAT4:
			case BYTEA:
			case ENUM:
			case POINT:
			case LSEG:
			case BOX:
			case PATH:
			case POLYGON:
			case CIRCLE:
			case INET:
			case TSQUERY:
			case XML:
			case JSON:
			case INT4RANGE:
			case INT8RANGE:
			case NUMRANGE:
			case DATERANGE:
			case ORDINALITY:
			case NFC:
			case NFD:
			case NFKC:
			case NFKD:
			case REF:
			case PASSING:
			case VERSION:
			case YES:
			case STANDALONE:
			case MATERIALIZED:
			case OPERATOR:
			case SHARE:
			case ROLLUP:
			case DOCUMENT:
			case NORMALIZED:
			case NOWAIT:
			case LOCKED:
			case COLUMNS:
			case CONTENT:
			case STRIP:
			case WHITESPACE:
			case CONFLICT:
			case OVERRIDING:
			case SYSTEM:
			case ABORT:
			case ABSOLUTE:
			case ACCESS:
			case AFTER:
			case AGGREGATE:
			case ALSO:
			case ATTACH:
			case ATTRIBUTE:
			case BACKWARD:
			case BEFORE:
			case ASSERTION:
			case ASSIGNMENT:
			case CONTINUE:
			case CONVERSION:
			case COPY:
			case COST:
			case CSV:
			case CALLED:
			case CATALOG:
			case CHAIN:
			case CHECKPOINT:
			case CLASS:
			case CONFIGURATION:
			case COMMENT:
			case DETACH:
			case DICTIONARY:
			case EXPRESSION:
			case INSENSITIVE:
			case DISCARD:
			case OFF:
			case INSTEAD:
			case EXPLAIN:
			case INPUT:
			case INLINE:
			case PARALLEL:
			case LEAKPROOF:
			case COMMITTED:
			case ENCODING:
			case IMPLICIT:
			case DELIMITER:
			case CURSOR:
			case EACH:
			case EVENT:
			case DEALLOCATE:
			case CONNECTION:
			case DECLARE:
			case FAMILY:
			case FORWARD:
			case EXCLUSIVE:
			case FUNCTIONS:
			case LOCATION:
			case LABEL:
			case DELIMITERS:
			case HANDLER:
			case HEADER:
			case IMMUTABLE:
			case GRANTED:
			case HOLD:
			case MAPPING:
			case OLD:
			case METHOD:
			case LOAD:
			case LISTEN:
			case MODE:
			case MOVE:
			case PROCEDURAL:
			case PARSER:
			case PROCEDURES:
			case ENCRYPTED:
			case PUBLICATION:
			case PROGRAM:
			case REFERENCING:
			case PLANS:
			case REINDEX:
			case PRIOR:
			case PASSWORD:
			case RELATIVE:
			case QUOTE:
			case ROUTINES:
			case REPLACE:
			case SNAPSHOT:
			case REFRESH:
			case PREPARE:
			case OPTIONS:
			case IMPORT:
			case INVOKER:
			case NEW:
			case PREPARED:
			case SCROLL:
			case SEQUENCES:
			case SYSID:
			case REASSIGN:
			case SERVER:
			case SUBSCRIPTION:
			case SEARCH:
			case SCHEMAS:
			case RECHECK:
			case POLICY:
			case NOTIFY:
			case LOCK:
			case RELEASE:
			case SERIALIZABLE:
			case RETURNS:
			case STATEMENT:
			case STDIN:
			case STDOUT:
			case TABLES:
			case SUPPORT:
			case STABLE:
			case TEMPLATE:
			case UNENCRYPTED:
			case VIEWS:
			case UNCOMMITTED:
			case TRANSFORM:
			case UNLISTEN:
			case TRUSTED:
			case VALIDATOR:
			case UNTIL:
			case VACUUM:
			case VOLATILE:
			case STORED:
			case WRITE:
			case STRICT:
			case TYPES:
			case WRAPPER:
			case WORK:
			case INT16:
			case INT1:
			case ELEM_CONTAINED_BY_RANGE:
			case IDENTIFIER_:
				{
				setState(7701);
				ignoredIdentifier();
				}
				break;
			case CURRENT_USER:
				{
				setState(7702);
				match(CURRENT_USER);
				}
				break;
			case SESSION_USER:
				{
				setState(7703);
				match(SESSION_USER);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterMaterializedViewContext extends ParserRuleContext {
		public TerminalNode ALTER() { return getToken(OpenGaussStatementParser.ALTER, 0); }
		public TerminalNode MATERIALIZED() { return getToken(OpenGaussStatementParser.MATERIALIZED, 0); }
		public TerminalNode VIEW() { return getToken(OpenGaussStatementParser.VIEW, 0); }
		public AlterMaterializedViewClausesContext alterMaterializedViewClauses() {
			return getRuleContext(AlterMaterializedViewClausesContext.class,0);
		}
		public AlterMaterializedViewContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterMaterializedView; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitAlterMaterializedView(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AlterMaterializedViewContext alterMaterializedView() throws RecognitionException {
		AlterMaterializedViewContext _localctx = new AlterMaterializedViewContext(_ctx, getState());
		enterRule(_localctx, 1060, RULE_alterMaterializedView);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7706);
			match(ALTER);
			setState(7707);
			match(MATERIALIZED);
			setState(7708);
			match(VIEW);
			setState(7709);
			alterMaterializedViewClauses();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterMaterializedViewClausesContext extends ParserRuleContext {
		public List qualifiedName() {
			return getRuleContexts(QualifiedNameContext.class);
		}
		public QualifiedNameContext qualifiedName(int i) {
			return getRuleContext(QualifiedNameContext.class,i);
		}
		public AlterTableCmdsContext alterTableCmds() {
			return getRuleContext(AlterTableCmdsContext.class,0);
		}
		public IfExistsContext ifExists() {
			return getRuleContext(IfExistsContext.class,0);
		}
		public TerminalNode DEPENDS() { return getToken(OpenGaussStatementParser.DEPENDS, 0); }
		public TerminalNode ON() { return getToken(OpenGaussStatementParser.ON, 0); }
		public TerminalNode EXTENSION() { return getToken(OpenGaussStatementParser.EXTENSION, 0); }
		public List name() {
			return getRuleContexts(NameContext.class);
		}
		public NameContext name(int i) {
			return getRuleContext(NameContext.class,i);
		}
		public TerminalNode RENAME() { return getToken(OpenGaussStatementParser.RENAME, 0); }
		public List columnName() {
			return getRuleContexts(ColumnNameContext.class);
		}
		public ColumnNameContext columnName(int i) {
			return getRuleContext(ColumnNameContext.class,i);
		}
		public TerminalNode TO() { return getToken(OpenGaussStatementParser.TO, 0); }
		public TerminalNode COLUMN() { return getToken(OpenGaussStatementParser.COLUMN, 0); }
		public TerminalNode SET() { return getToken(OpenGaussStatementParser.SET, 0); }
		public TerminalNode SCHEMA() { return getToken(OpenGaussStatementParser.SCHEMA, 0); }
		public SchemaNameContext schemaName() {
			return getRuleContext(SchemaNameContext.class,0);
		}
		public TerminalNode ALL() { return getToken(OpenGaussStatementParser.ALL, 0); }
		public TerminalNode IN() { return getToken(OpenGaussStatementParser.IN, 0); }
		public List TABLESPACE() { return getTokens(OpenGaussStatementParser.TABLESPACE); }
		public TerminalNode TABLESPACE(int i) {
			return getToken(OpenGaussStatementParser.TABLESPACE, i);
		}
		public TerminalNode OWNED() { return getToken(OpenGaussStatementParser.OWNED, 0); }
		public TerminalNode BY() { return getToken(OpenGaussStatementParser.BY, 0); }
		public RoleListContext roleList() {
			return getRuleContext(RoleListContext.class,0);
		}
		public TerminalNode NOWAIT() { return getToken(OpenGaussStatementParser.NOWAIT, 0); }
		public AlterMaterializedViewClausesContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterMaterializedViewClauses; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitAlterMaterializedViewClauses(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AlterMaterializedViewClausesContext alterMaterializedViewClauses() throws RecognitionException {
		AlterMaterializedViewClausesContext _localctx = new AlterMaterializedViewClausesContext(_ctx, getState());
		enterRule(_localctx, 1062, RULE_alterMaterializedViewClauses);
		int _la;
		try {
			setState(7765);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,689,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(7712);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,683,_ctx) ) {
				case 1:
					{
					setState(7711);
					ifExists();
					}
					break;
				}
				setState(7714);
				qualifiedName();
				setState(7715);
				alterTableCmds();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(7717);
				qualifiedName();
				setState(7718);
				match(DEPENDS);
				setState(7719);
				match(ON);
				setState(7720);
				match(EXTENSION);
				setState(7721);
				name();
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(7724);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,684,_ctx) ) {
				case 1:
					{
					setState(7723);
					ifExists();
					}
					break;
				}
				setState(7726);
				qualifiedName();
				setState(7727);
				match(RENAME);
				setState(7729);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==COLUMN) {
					{
					setState(7728);
					match(COLUMN);
					}
				}

				setState(7731);
				columnName();
				setState(7732);
				match(TO);
				setState(7733);
				columnName();
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(7736);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,686,_ctx) ) {
				case 1:
					{
					setState(7735);
					ifExists();
					}
					break;
				}
				setState(7738);
				qualifiedName();
				setState(7739);
				match(RENAME);
				setState(7740);
				match(TO);
				setState(7741);
				qualifiedName();
				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(7744);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,687,_ctx) ) {
				case 1:
					{
					setState(7743);
					ifExists();
					}
					break;
				}
				setState(7746);
				qualifiedName();
				setState(7747);
				match(SET);
				setState(7748);
				match(SCHEMA);
				setState(7749);
				schemaName();
				}
				break;
			case 6:
				enterOuterAlt(_localctx, 6);
				{
				setState(7751);
				match(ALL);
				setState(7752);
				match(IN);
				setState(7753);
				match(TABLESPACE);
				setState(7754);
				name();
				{
				setState(7755);
				match(OWNED);
				setState(7756);
				match(BY);
				setState(7757);
				roleList();
				}
				setState(7759);
				match(SET);
				setState(7760);
				match(TABLESPACE);
				setState(7761);
				name();
				setState(7763);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==NOWAIT) {
					{
					setState(7762);
					match(NOWAIT);
					}
				}

				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DeclareContext extends ParserRuleContext {
		public TerminalNode DECLARE() { return getToken(OpenGaussStatementParser.DECLARE, 0); }
		public CursorNameContext cursorName() {
			return getRuleContext(CursorNameContext.class,0);
		}
		public CursorOptionsContext cursorOptions() {
			return getRuleContext(CursorOptionsContext.class,0);
		}
		public TerminalNode CURSOR() { return getToken(OpenGaussStatementParser.CURSOR, 0); }
		public TerminalNode FOR() { return getToken(OpenGaussStatementParser.FOR, 0); }
		public SelectContext select() {
			return getRuleContext(SelectContext.class,0);
		}
		public TerminalNode WITH() { return getToken(OpenGaussStatementParser.WITH, 0); }
		public TerminalNode HOLD() { return getToken(OpenGaussStatementParser.HOLD, 0); }
		public TerminalNode WITHOUT() { return getToken(OpenGaussStatementParser.WITHOUT, 0); }
		public DeclareContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_declare; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitDeclare(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DeclareContext declare() throws RecognitionException {
		DeclareContext _localctx = new DeclareContext(_ctx, getState());
		enterRule(_localctx, 1064, RULE_declare);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7767);
			match(DECLARE);
			setState(7768);
			cursorName();
			setState(7769);
			cursorOptions();
			setState(7770);
			match(CURSOR);
			setState(7775);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case WITH:
				{
				setState(7771);
				match(WITH);
				setState(7772);
				match(HOLD);
				}
				break;
			case WITHOUT:
				{
				setState(7773);
				match(WITHOUT);
				setState(7774);
				match(HOLD);
				}
				break;
			case FOR:
				break;
			default:
				break;
			}
			setState(7777);
			match(FOR);
			setState(7778);
			select();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CursorContext extends ParserRuleContext {
		public TerminalNode CURSOR() { return getToken(OpenGaussStatementParser.CURSOR, 0); }
		public CursorNameContext cursorName() {
			return getRuleContext(CursorNameContext.class,0);
		}
		public CursorOptionsContext cursorOptions() {
			return getRuleContext(CursorOptionsContext.class,0);
		}
		public TerminalNode FOR() { return getToken(OpenGaussStatementParser.FOR, 0); }
		public SelectContext select() {
			return getRuleContext(SelectContext.class,0);
		}
		public TerminalNode WITH() { return getToken(OpenGaussStatementParser.WITH, 0); }
		public TerminalNode HOLD() { return getToken(OpenGaussStatementParser.HOLD, 0); }
		public TerminalNode WITHOUT() { return getToken(OpenGaussStatementParser.WITHOUT, 0); }
		public CursorContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_cursor; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitCursor(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CursorContext cursor() throws RecognitionException {
		CursorContext _localctx = new CursorContext(_ctx, getState());
		enterRule(_localctx, 1066, RULE_cursor);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7780);
			match(CURSOR);
			setState(7781);
			cursorName();
			setState(7782);
			cursorOptions();
			setState(7787);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case WITH:
				{
				setState(7783);
				match(WITH);
				setState(7784);
				match(HOLD);
				}
				break;
			case WITHOUT:
				{
				setState(7785);
				match(WITHOUT);
				setState(7786);
				match(HOLD);
				}
				break;
			case FOR:
				break;
			default:
				break;
			}
			setState(7789);
			match(FOR);
			setState(7790);
			select();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CursorOptionsContext extends ParserRuleContext {
		public List cursorOption() {
			return getRuleContexts(CursorOptionContext.class);
		}
		public CursorOptionContext cursorOption(int i) {
			return getRuleContext(CursorOptionContext.class,i);
		}
		public CursorOptionsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_cursorOptions; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitCursorOptions(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CursorOptionsContext cursorOptions() throws RecognitionException {
		CursorOptionsContext _localctx = new CursorOptionsContext(_ctx, getState());
		enterRule(_localctx, 1068, RULE_cursorOptions);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7795);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==BINARY || _la==NO) {
				{
				{
				setState(7792);
				cursorOption();
				}
				}
				setState(7797);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CursorOptionContext extends ParserRuleContext {
		public TerminalNode BINARY() { return getToken(OpenGaussStatementParser.BINARY, 0); }
		public TerminalNode NO() { return getToken(OpenGaussStatementParser.NO, 0); }
		public TerminalNode SCROLL() { return getToken(OpenGaussStatementParser.SCROLL, 0); }
		public CursorOptionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_cursorOption; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitCursorOption(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CursorOptionContext cursorOption() throws RecognitionException {
		CursorOptionContext _localctx = new CursorOptionContext(_ctx, getState());
		enterRule(_localctx, 1070, RULE_cursorOption);
		try {
			setState(7801);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case BINARY:
				enterOuterAlt(_localctx, 1);
				{
				setState(7798);
				match(BINARY);
				}
				break;
			case NO:
				enterOuterAlt(_localctx, 2);
				{
				setState(7799);
				match(NO);
				setState(7800);
				match(SCROLL);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ExecuteStmtContext extends ParserRuleContext {
		public TerminalNode EXECUTE() { return getToken(OpenGaussStatementParser.EXECUTE, 0); }
		public NameContext name() {
			return getRuleContext(NameContext.class,0);
		}
		public ExecuteParamClauseContext executeParamClause() {
			return getRuleContext(ExecuteParamClauseContext.class,0);
		}
		public ExecuteStmtContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_executeStmt; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitExecuteStmt(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ExecuteStmtContext executeStmt() throws RecognitionException {
		ExecuteStmtContext _localctx = new ExecuteStmtContext(_ctx, getState());
		enterRule(_localctx, 1072, RULE_executeStmt);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7803);
			match(EXECUTE);
			setState(7804);
			name();
			setState(7805);
			executeParamClause();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CreateMaterializedViewContext extends ParserRuleContext {
		public TerminalNode CREATE() { return getToken(OpenGaussStatementParser.CREATE, 0); }
		public TerminalNode MATERIALIZED() { return getToken(OpenGaussStatementParser.MATERIALIZED, 0); }
		public TerminalNode VIEW() { return getToken(OpenGaussStatementParser.VIEW, 0); }
		public CreateMvTargetContext createMvTarget() {
			return getRuleContext(CreateMvTargetContext.class,0);
		}
		public TerminalNode AS() { return getToken(OpenGaussStatementParser.AS, 0); }
		public SelectContext select() {
			return getRuleContext(SelectContext.class,0);
		}
		public TerminalNode UNLOGGED() { return getToken(OpenGaussStatementParser.UNLOGGED, 0); }
		public IfNotExistsContext ifNotExists() {
			return getRuleContext(IfNotExistsContext.class,0);
		}
		public TerminalNode WITH() { return getToken(OpenGaussStatementParser.WITH, 0); }
		public TerminalNode DATA() { return getToken(OpenGaussStatementParser.DATA, 0); }
		public TerminalNode NO() { return getToken(OpenGaussStatementParser.NO, 0); }
		public CreateMaterializedViewContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_createMaterializedView; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitCreateMaterializedView(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CreateMaterializedViewContext createMaterializedView() throws RecognitionException {
		CreateMaterializedViewContext _localctx = new CreateMaterializedViewContext(_ctx, getState());
		enterRule(_localctx, 1074, RULE_createMaterializedView);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7807);
			match(CREATE);
			setState(7809);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==UNLOGGED) {
				{
				setState(7808);
				match(UNLOGGED);
				}
			}

			setState(7811);
			match(MATERIALIZED);
			setState(7812);
			match(VIEW);
			setState(7814);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,695,_ctx) ) {
			case 1:
				{
				setState(7813);
				ifNotExists();
				}
				break;
			}
			setState(7816);
			createMvTarget();
			setState(7817);
			match(AS);
			setState(7818);
			select();
			setState(7824);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,696,_ctx) ) {
			case 1:
				{
				setState(7819);
				match(WITH);
				setState(7820);
				match(DATA);
				}
				break;
			case 2:
				{
				setState(7821);
				match(WITH);
				setState(7822);
				match(NO);
				setState(7823);
				match(DATA);
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CreateMvTargetContext extends ParserRuleContext {
		public QualifiedNameContext qualifiedName() {
			return getRuleContext(QualifiedNameContext.class,0);
		}
		public TableAccessMethodClauseContext tableAccessMethodClause() {
			return getRuleContext(TableAccessMethodClauseContext.class,0);
		}
		public OptColumnListContext optColumnList() {
			return getRuleContext(OptColumnListContext.class,0);
		}
		public TerminalNode WITH() { return getToken(OpenGaussStatementParser.WITH, 0); }
		public ReloptionsContext reloptions() {
			return getRuleContext(ReloptionsContext.class,0);
		}
		public TerminalNode TABLESPACE() { return getToken(OpenGaussStatementParser.TABLESPACE, 0); }
		public NameContext name() {
			return getRuleContext(NameContext.class,0);
		}
		public CreateMvTargetContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_createMvTarget; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitCreateMvTarget(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CreateMvTargetContext createMvTarget() throws RecognitionException {
		CreateMvTargetContext _localctx = new CreateMvTargetContext(_ctx, getState());
		enterRule(_localctx, 1076, RULE_createMvTarget);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7826);
			qualifiedName();
			setState(7828);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==LP_) {
				{
				setState(7827);
				optColumnList();
				}
			}

			setState(7830);
			tableAccessMethodClause();
			setState(7833);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==WITH) {
				{
				setState(7831);
				match(WITH);
				setState(7832);
				reloptions();
				}
			}

			setState(7837);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==TABLESPACE) {
				{
				setState(7835);
				match(TABLESPACE);
				setState(7836);
				name();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class RefreshMatViewStmtContext extends ParserRuleContext {
		public TerminalNode REFRESH() { return getToken(OpenGaussStatementParser.REFRESH, 0); }
		public TerminalNode MATERIALIZED() { return getToken(OpenGaussStatementParser.MATERIALIZED, 0); }
		public TerminalNode VIEW() { return getToken(OpenGaussStatementParser.VIEW, 0); }
		public QualifiedNameContext qualifiedName() {
			return getRuleContext(QualifiedNameContext.class,0);
		}
		public TerminalNode CONCURRENTLY() { return getToken(OpenGaussStatementParser.CONCURRENTLY, 0); }
		public TerminalNode WITH() { return getToken(OpenGaussStatementParser.WITH, 0); }
		public TerminalNode DATA() { return getToken(OpenGaussStatementParser.DATA, 0); }
		public TerminalNode NO() { return getToken(OpenGaussStatementParser.NO, 0); }
		public RefreshMatViewStmtContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_refreshMatViewStmt; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitRefreshMatViewStmt(this);
			else return visitor.visitChildren(this);
		}
	}

	public final RefreshMatViewStmtContext refreshMatViewStmt() throws RecognitionException {
		RefreshMatViewStmtContext _localctx = new RefreshMatViewStmtContext(_ctx, getState());
		enterRule(_localctx, 1078, RULE_refreshMatViewStmt);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7839);
			match(REFRESH);
			setState(7840);
			match(MATERIALIZED);
			setState(7841);
			match(VIEW);
			setState(7843);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==CONCURRENTLY) {
				{
				setState(7842);
				match(CONCURRENTLY);
				}
			}

			setState(7845);
			qualifiedName();
			setState(7851);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,701,_ctx) ) {
			case 1:
				{
				setState(7846);
				match(WITH);
				setState(7847);
				match(DATA);
				}
				break;
			case 2:
				{
				setState(7848);
				match(WITH);
				setState(7849);
				match(NO);
				setState(7850);
				match(DATA);
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterPolicyContext extends ParserRuleContext {
		public TerminalNode ALTER() { return getToken(OpenGaussStatementParser.ALTER, 0); }
		public TerminalNode POLICY() { return getToken(OpenGaussStatementParser.POLICY, 0); }
		public NameContext name() {
			return getRuleContext(NameContext.class,0);
		}
		public TerminalNode ON() { return getToken(OpenGaussStatementParser.ON, 0); }
		public QualifiedNameContext qualifiedName() {
			return getRuleContext(QualifiedNameContext.class,0);
		}
		public AlterPolicyClausesContext alterPolicyClauses() {
			return getRuleContext(AlterPolicyClausesContext.class,0);
		}
		public IfExistsContext ifExists() {
			return getRuleContext(IfExistsContext.class,0);
		}
		public AlterPolicyContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterPolicy; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitAlterPolicy(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AlterPolicyContext alterPolicy() throws RecognitionException {
		AlterPolicyContext _localctx = new AlterPolicyContext(_ctx, getState());
		enterRule(_localctx, 1080, RULE_alterPolicy);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7853);
			match(ALTER);
			setState(7854);
			match(POLICY);
			setState(7856);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,702,_ctx) ) {
			case 1:
				{
				setState(7855);
				ifExists();
				}
				break;
			}
			setState(7858);
			name();
			setState(7859);
			match(ON);
			setState(7860);
			qualifiedName();
			setState(7861);
			alterPolicyClauses();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterPolicyClausesContext extends ParserRuleContext {
		public TerminalNode TO() { return getToken(OpenGaussStatementParser.TO, 0); }
		public RoleListContext roleList() {
			return getRuleContext(RoleListContext.class,0);
		}
		public TerminalNode USING() { return getToken(OpenGaussStatementParser.USING, 0); }
		public List LP_() { return getTokens(OpenGaussStatementParser.LP_); }
		public TerminalNode LP_(int i) {
			return getToken(OpenGaussStatementParser.LP_, i);
		}
		public List aExpr() {
			return getRuleContexts(AExprContext.class);
		}
		public AExprContext aExpr(int i) {
			return getRuleContext(AExprContext.class,i);
		}
		public List RP_() { return getTokens(OpenGaussStatementParser.RP_); }
		public TerminalNode RP_(int i) {
			return getToken(OpenGaussStatementParser.RP_, i);
		}
		public TerminalNode WITH() { return getToken(OpenGaussStatementParser.WITH, 0); }
		public TerminalNode CHECK() { return getToken(OpenGaussStatementParser.CHECK, 0); }
		public TerminalNode RENAME() { return getToken(OpenGaussStatementParser.RENAME, 0); }
		public NameContext name() {
			return getRuleContext(NameContext.class,0);
		}
		public AlterPolicyClausesContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterPolicyClauses; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitAlterPolicyClauses(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AlterPolicyClausesContext alterPolicyClauses() throws RecognitionException {
		AlterPolicyClausesContext _localctx = new AlterPolicyClausesContext(_ctx, getState());
		enterRule(_localctx, 1082, RULE_alterPolicyClauses);
		int _la;
		try {
			setState(7885);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case EOF:
			case WITH:
			case USING:
			case TO:
				enterOuterAlt(_localctx, 1);
				{
				setState(7865);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==TO) {
					{
					setState(7863);
					match(TO);
					setState(7864);
					roleList();
					}
				}

				setState(7872);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==USING) {
					{
					setState(7867);
					match(USING);
					setState(7868);
					match(LP_);
					setState(7869);
					aExpr(0);
					setState(7870);
					match(RP_);
					}
				}

				setState(7880);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==WITH) {
					{
					setState(7874);
					match(WITH);
					setState(7875);
					match(CHECK);
					setState(7876);
					match(LP_);
					setState(7877);
					aExpr(0);
					setState(7878);
					match(RP_);
					}
				}

				}
				break;
			case RENAME:
				enterOuterAlt(_localctx, 2);
				{
				setState(7882);
				match(RENAME);
				setState(7883);
				match(TO);
				setState(7884);
				name();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterProcedureContext extends ParserRuleContext {
		public TerminalNode ALTER() { return getToken(OpenGaussStatementParser.ALTER, 0); }
		public TerminalNode PROCEDURE() { return getToken(OpenGaussStatementParser.PROCEDURE, 0); }
		public FunctionWithArgtypesContext functionWithArgtypes() {
			return getRuleContext(FunctionWithArgtypesContext.class,0);
		}
		public AlterProcedureClausesContext alterProcedureClauses() {
			return getRuleContext(AlterProcedureClausesContext.class,0);
		}
		public AlterProcedureContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterProcedure; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitAlterProcedure(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AlterProcedureContext alterProcedure() throws RecognitionException {
		AlterProcedureContext _localctx = new AlterProcedureContext(_ctx, getState());
		enterRule(_localctx, 1084, RULE_alterProcedure);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7887);
			match(ALTER);
			setState(7888);
			match(PROCEDURE);
			setState(7889);
			functionWithArgtypes();
			setState(7890);
			alterProcedureClauses();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterProcedureClausesContext extends ParserRuleContext {
		public AlterfuncOptListContext alterfuncOptList() {
			return getRuleContext(AlterfuncOptListContext.class,0);
		}
		public TerminalNode RESTRICT() { return getToken(OpenGaussStatementParser.RESTRICT, 0); }
		public TerminalNode RENAME() { return getToken(OpenGaussStatementParser.RENAME, 0); }
		public TerminalNode TO() { return getToken(OpenGaussStatementParser.TO, 0); }
		public NameContext name() {
			return getRuleContext(NameContext.class,0);
		}
		public TerminalNode DEPENDS() { return getToken(OpenGaussStatementParser.DEPENDS, 0); }
		public TerminalNode ON() { return getToken(OpenGaussStatementParser.ON, 0); }
		public TerminalNode EXTENSION() { return getToken(OpenGaussStatementParser.EXTENSION, 0); }
		public TerminalNode NO() { return getToken(OpenGaussStatementParser.NO, 0); }
		public TerminalNode SET() { return getToken(OpenGaussStatementParser.SET, 0); }
		public TerminalNode SCHEMA() { return getToken(OpenGaussStatementParser.SCHEMA, 0); }
		public TerminalNode OWNER() { return getToken(OpenGaussStatementParser.OWNER, 0); }
		public RoleSpecContext roleSpec() {
			return getRuleContext(RoleSpecContext.class,0);
		}
		public AlterProcedureClausesContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterProcedureClauses; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitAlterProcedureClauses(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AlterProcedureClausesContext alterProcedureClauses() throws RecognitionException {
		AlterProcedureClausesContext _localctx = new AlterProcedureClausesContext(_ctx, getState());
		enterRule(_localctx, 1086, RULE_alterProcedureClauses);
		int _la;
		try {
			setState(7912);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,709,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(7892);
				alterfuncOptList();
				setState(7894);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==RESTRICT) {
					{
					setState(7893);
					match(RESTRICT);
					}
				}

				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(7896);
				match(RENAME);
				setState(7897);
				match(TO);
				setState(7898);
				name();
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(7900);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==NO) {
					{
					setState(7899);
					match(NO);
					}
				}

				setState(7902);
				match(DEPENDS);
				setState(7903);
				match(ON);
				setState(7904);
				match(EXTENSION);
				setState(7905);
				name();
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(7906);
				match(SET);
				setState(7907);
				match(SCHEMA);
				setState(7908);
				name();
				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(7909);
				match(OWNER);
				setState(7910);
				match(TO);
				setState(7911);
				roleSpec();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterfuncOptListContext extends ParserRuleContext {
		public List commonFuncOptItem() {
			return getRuleContexts(CommonFuncOptItemContext.class);
		}
		public CommonFuncOptItemContext commonFuncOptItem(int i) {
			return getRuleContext(CommonFuncOptItemContext.class,i);
		}
		public AlterfuncOptListContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterfuncOptList; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitAlterfuncOptList(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AlterfuncOptListContext alterfuncOptList() throws RecognitionException {
		AlterfuncOptListContext _localctx = new AlterfuncOptListContext(_ctx, getState());
		enterRule(_localctx, 1088, RULE_alterfuncOptList);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7915); 
			_errHandler.sync(this);
			_la = _input.LA(1);
			do {
				{
				{
				setState(7914);
				commonFuncOptItem();
				}
				}
				setState(7917); 
				_errHandler.sync(this);
				_la = _input.LA(1);
			} while ( _la==SET || _la==NOT || ((((_la - 261)) & ~0x3f) == 0 && ((1L << (_la - 261)) & ((1L << (ROWS - 261)) | (1L << (EXTERNAL - 261)) | (1L << (RESET - 261)))) != 0) || _la==SECURITY || ((((_la - 462)) & ~0x3f) == 0 && ((1L << (_la - 462)) & ((1L << (COST - 462)) | (1L << (CALLED - 462)) | (1L << (PARALLEL - 462)) | (1L << (LEAKPROOF - 462)) | (1L << (IMMUTABLE - 462)))) != 0) || ((((_la - 550)) & ~0x3f) == 0 && ((1L << (_la - 550)) & ((1L << (RETURNS - 550)) | (1L << (SUPPORT - 550)) | (1L << (STABLE - 550)) | (1L << (VOLATILE - 550)) | (1L << (STRICT - 550)))) != 0) );
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterFunctionContext extends ParserRuleContext {
		public TerminalNode ALTER() { return getToken(OpenGaussStatementParser.ALTER, 0); }
		public TerminalNode FUNCTION() { return getToken(OpenGaussStatementParser.FUNCTION, 0); }
		public FunctionWithArgtypesContext functionWithArgtypes() {
			return getRuleContext(FunctionWithArgtypesContext.class,0);
		}
		public AlterFunctionClausesContext alterFunctionClauses() {
			return getRuleContext(AlterFunctionClausesContext.class,0);
		}
		public AlterFunctionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterFunction; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitAlterFunction(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AlterFunctionContext alterFunction() throws RecognitionException {
		AlterFunctionContext _localctx = new AlterFunctionContext(_ctx, getState());
		enterRule(_localctx, 1090, RULE_alterFunction);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7919);
			match(ALTER);
			setState(7920);
			match(FUNCTION);
			setState(7921);
			functionWithArgtypes();
			setState(7922);
			alterFunctionClauses();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterFunctionClausesContext extends ParserRuleContext {
		public AlterfuncOptListContext alterfuncOptList() {
			return getRuleContext(AlterfuncOptListContext.class,0);
		}
		public TerminalNode RESTRICT() { return getToken(OpenGaussStatementParser.RESTRICT, 0); }
		public TerminalNode RENAME() { return getToken(OpenGaussStatementParser.RENAME, 0); }
		public TerminalNode TO() { return getToken(OpenGaussStatementParser.TO, 0); }
		public NameContext name() {
			return getRuleContext(NameContext.class,0);
		}
		public TerminalNode DEPENDS() { return getToken(OpenGaussStatementParser.DEPENDS, 0); }
		public TerminalNode ON() { return getToken(OpenGaussStatementParser.ON, 0); }
		public TerminalNode EXTENSION() { return getToken(OpenGaussStatementParser.EXTENSION, 0); }
		public TerminalNode NO() { return getToken(OpenGaussStatementParser.NO, 0); }
		public TerminalNode SET() { return getToken(OpenGaussStatementParser.SET, 0); }
		public TerminalNode SCHEMA() { return getToken(OpenGaussStatementParser.SCHEMA, 0); }
		public TerminalNode OWNER() { return getToken(OpenGaussStatementParser.OWNER, 0); }
		public RoleSpecContext roleSpec() {
			return getRuleContext(RoleSpecContext.class,0);
		}
		public AlterFunctionClausesContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterFunctionClauses; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitAlterFunctionClauses(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AlterFunctionClausesContext alterFunctionClauses() throws RecognitionException {
		AlterFunctionClausesContext _localctx = new AlterFunctionClausesContext(_ctx, getState());
		enterRule(_localctx, 1092, RULE_alterFunctionClauses);
		int _la;
		try {
			setState(7944);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,713,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(7924);
				alterfuncOptList();
				setState(7926);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==RESTRICT) {
					{
					setState(7925);
					match(RESTRICT);
					}
				}

				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(7928);
				match(RENAME);
				setState(7929);
				match(TO);
				setState(7930);
				name();
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(7932);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==NO) {
					{
					setState(7931);
					match(NO);
					}
				}

				setState(7934);
				match(DEPENDS);
				setState(7935);
				match(ON);
				setState(7936);
				match(EXTENSION);
				setState(7937);
				name();
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(7938);
				match(SET);
				setState(7939);
				match(SCHEMA);
				setState(7940);
				name();
				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(7941);
				match(OWNER);
				setState(7942);
				match(TO);
				setState(7943);
				roleSpec();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterPublicationContext extends ParserRuleContext {
		public TerminalNode ALTER() { return getToken(OpenGaussStatementParser.ALTER, 0); }
		public TerminalNode PUBLICATION() { return getToken(OpenGaussStatementParser.PUBLICATION, 0); }
		public List name() {
			return getRuleContexts(NameContext.class);
		}
		public NameContext name(int i) {
			return getRuleContext(NameContext.class,i);
		}
		public TerminalNode RENAME() { return getToken(OpenGaussStatementParser.RENAME, 0); }
		public TerminalNode TO() { return getToken(OpenGaussStatementParser.TO, 0); }
		public TerminalNode OWNER() { return getToken(OpenGaussStatementParser.OWNER, 0); }
		public RoleSpecContext roleSpec() {
			return getRuleContext(RoleSpecContext.class,0);
		}
		public TerminalNode SET() { return getToken(OpenGaussStatementParser.SET, 0); }
		public DefinitionContext definition() {
			return getRuleContext(DefinitionContext.class,0);
		}
		public TerminalNode TABLE() { return getToken(OpenGaussStatementParser.TABLE, 0); }
		public RelationExprListContext relationExprList() {
			return getRuleContext(RelationExprListContext.class,0);
		}
		public TerminalNode ADD() { return getToken(OpenGaussStatementParser.ADD, 0); }
		public TerminalNode DROP() { return getToken(OpenGaussStatementParser.DROP, 0); }
		public AlterPublicationContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterPublication; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitAlterPublication(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AlterPublicationContext alterPublication() throws RecognitionException {
		AlterPublicationContext _localctx = new AlterPublicationContext(_ctx, getState());
		enterRule(_localctx, 1094, RULE_alterPublication);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7946);
			match(ALTER);
			setState(7947);
			match(PUBLICATION);
			setState(7948);
			name();
			setState(7960);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,714,_ctx) ) {
			case 1:
				{
				setState(7949);
				match(RENAME);
				setState(7950);
				match(TO);
				setState(7951);
				name();
				}
				break;
			case 2:
				{
				setState(7952);
				match(OWNER);
				setState(7953);
				match(TO);
				setState(7954);
				roleSpec();
				}
				break;
			case 3:
				{
				setState(7955);
				match(SET);
				setState(7956);
				definition();
				}
				break;
			case 4:
				{
				setState(7957);
				_la = _input.LA(1);
				if ( !(((((_la - 86)) & ~0x3f) == 0 && ((1L << (_la - 86)) & ((1L << (DROP - 86)) | (1L << (ADD - 86)) | (1L << (SET - 86)))) != 0)) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(7958);
				match(TABLE);
				setState(7959);
				relationExprList();
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterRoutineContext extends ParserRuleContext {
		public TerminalNode ALTER() { return getToken(OpenGaussStatementParser.ALTER, 0); }
		public TerminalNode ROUTINE() { return getToken(OpenGaussStatementParser.ROUTINE, 0); }
		public FunctionWithArgtypesContext functionWithArgtypes() {
			return getRuleContext(FunctionWithArgtypesContext.class,0);
		}
		public AlterProcedureClausesContext alterProcedureClauses() {
			return getRuleContext(AlterProcedureClausesContext.class,0);
		}
		public AlterRoutineContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterRoutine; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitAlterRoutine(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AlterRoutineContext alterRoutine() throws RecognitionException {
		AlterRoutineContext _localctx = new AlterRoutineContext(_ctx, getState());
		enterRule(_localctx, 1096, RULE_alterRoutine);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7962);
			match(ALTER);
			setState(7963);
			match(ROUTINE);
			setState(7964);
			functionWithArgtypes();
			setState(7965);
			alterProcedureClauses();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterRuleContext extends ParserRuleContext {
		public TerminalNode ALTER() { return getToken(OpenGaussStatementParser.ALTER, 0); }
		public TerminalNode RULE() { return getToken(OpenGaussStatementParser.RULE, 0); }
		public List name() {
			return getRuleContexts(NameContext.class);
		}
		public NameContext name(int i) {
			return getRuleContext(NameContext.class,i);
		}
		public TerminalNode ON() { return getToken(OpenGaussStatementParser.ON, 0); }
		public TableNameContext tableName() {
			return getRuleContext(TableNameContext.class,0);
		}
		public TerminalNode RENAME() { return getToken(OpenGaussStatementParser.RENAME, 0); }
		public TerminalNode TO() { return getToken(OpenGaussStatementParser.TO, 0); }
		public AlterRuleContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterRule; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitAlterRule(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AlterRuleContext alterRule() throws RecognitionException {
		AlterRuleContext _localctx = new AlterRuleContext(_ctx, getState());
		enterRule(_localctx, 1098, RULE_alterRule);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7967);
			match(ALTER);
			setState(7968);
			match(RULE);
			setState(7969);
			name();
			setState(7970);
			match(ON);
			setState(7971);
			tableName();
			setState(7972);
			match(RENAME);
			setState(7973);
			match(TO);
			setState(7974);
			name();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterSequenceContext extends ParserRuleContext {
		public TerminalNode ALTER() { return getToken(OpenGaussStatementParser.ALTER, 0); }
		public TerminalNode SEQUENCE() { return getToken(OpenGaussStatementParser.SEQUENCE, 0); }
		public QualifiedNameContext qualifiedName() {
			return getRuleContext(QualifiedNameContext.class,0);
		}
		public AlterSequenceClausesContext alterSequenceClauses() {
			return getRuleContext(AlterSequenceClausesContext.class,0);
		}
		public IfExistsContext ifExists() {
			return getRuleContext(IfExistsContext.class,0);
		}
		public AlterSequenceContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterSequence; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitAlterSequence(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AlterSequenceContext alterSequence() throws RecognitionException {
		AlterSequenceContext _localctx = new AlterSequenceContext(_ctx, getState());
		enterRule(_localctx, 1100, RULE_alterSequence);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7976);
			match(ALTER);
			setState(7977);
			match(SEQUENCE);
			setState(7979);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,715,_ctx) ) {
			case 1:
				{
				setState(7978);
				ifExists();
				}
				break;
			}
			setState(7981);
			qualifiedName();
			setState(7982);
			alterSequenceClauses();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterSequenceClausesContext extends ParserRuleContext {
		public AlterTableCmdsContext alterTableCmds() {
			return getRuleContext(AlterTableCmdsContext.class,0);
		}
		public SeqOptListContext seqOptList() {
			return getRuleContext(SeqOptListContext.class,0);
		}
		public TerminalNode RENAME() { return getToken(OpenGaussStatementParser.RENAME, 0); }
		public TerminalNode TO() { return getToken(OpenGaussStatementParser.TO, 0); }
		public NameContext name() {
			return getRuleContext(NameContext.class,0);
		}
		public TerminalNode SET() { return getToken(OpenGaussStatementParser.SET, 0); }
		public TerminalNode SCHEMA() { return getToken(OpenGaussStatementParser.SCHEMA, 0); }
		public AlterSequenceClausesContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterSequenceClauses; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitAlterSequenceClauses(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AlterSequenceClausesContext alterSequenceClauses() throws RecognitionException {
		AlterSequenceClausesContext _localctx = new AlterSequenceClausesContext(_ctx, getState());
		enterRule(_localctx, 1102, RULE_alterSequenceClauses);
		try {
			setState(7992);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,716,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(7984);
				alterTableCmds();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(7985);
				seqOptList();
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(7986);
				match(RENAME);
				setState(7987);
				match(TO);
				setState(7988);
				name();
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(7989);
				match(SET);
				setState(7990);
				match(SCHEMA);
				setState(7991);
				name();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterServerContext extends ParserRuleContext {
		public TerminalNode ALTER() { return getToken(OpenGaussStatementParser.ALTER, 0); }
		public TerminalNode SERVER() { return getToken(OpenGaussStatementParser.SERVER, 0); }
		public List name() {
			return getRuleContexts(NameContext.class);
		}
		public NameContext name(int i) {
			return getRuleContext(NameContext.class,i);
		}
		public ForeignServerVersionContext foreignServerVersion() {
			return getRuleContext(ForeignServerVersionContext.class,0);
		}
		public AlterGenericOptionsContext alterGenericOptions() {
			return getRuleContext(AlterGenericOptionsContext.class,0);
		}
		public TerminalNode RENAME() { return getToken(OpenGaussStatementParser.RENAME, 0); }
		public TerminalNode TO() { return getToken(OpenGaussStatementParser.TO, 0); }
		public TerminalNode OWNER() { return getToken(OpenGaussStatementParser.OWNER, 0); }
		public RoleSpecContext roleSpec() {
			return getRuleContext(RoleSpecContext.class,0);
		}
		public AlterServerContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterServer; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitAlterServer(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AlterServerContext alterServer() throws RecognitionException {
		AlterServerContext _localctx = new AlterServerContext(_ctx, getState());
		enterRule(_localctx, 1104, RULE_alterServer);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7994);
			match(ALTER);
			setState(7995);
			match(SERVER);
			setState(7996);
			name();
			setState(8008);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,717,_ctx) ) {
			case 1:
				{
				setState(7997);
				foreignServerVersion();
				setState(7998);
				alterGenericOptions();
				}
				break;
			case 2:
				{
				setState(8000);
				foreignServerVersion();
				}
				break;
			case 3:
				{
				setState(8001);
				alterGenericOptions();
				}
				break;
			case 4:
				{
				setState(8002);
				match(RENAME);
				setState(8003);
				match(TO);
				setState(8004);
				name();
				}
				break;
			case 5:
				{
				setState(8005);
				match(OWNER);
				setState(8006);
				match(TO);
				setState(8007);
				roleSpec();
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ForeignServerVersionContext extends ParserRuleContext {
		public TerminalNode VERSION() { return getToken(OpenGaussStatementParser.VERSION, 0); }
		public TerminalNode STRING_() { return getToken(OpenGaussStatementParser.STRING_, 0); }
		public TerminalNode NULL() { return getToken(OpenGaussStatementParser.NULL, 0); }
		public ForeignServerVersionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_foreignServerVersion; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitForeignServerVersion(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ForeignServerVersionContext foreignServerVersion() throws RecognitionException {
		ForeignServerVersionContext _localctx = new ForeignServerVersionContext(_ctx, getState());
		enterRule(_localctx, 1106, RULE_foreignServerVersion);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(8010);
			match(VERSION);
			setState(8011);
			_la = _input.LA(1);
			if ( !(_la==NULL || _la==STRING_) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterStatisticsContext extends ParserRuleContext {
		public TerminalNode ALTER() { return getToken(OpenGaussStatementParser.ALTER, 0); }
		public List STATISTICS() { return getTokens(OpenGaussStatementParser.STATISTICS); }
		public TerminalNode STATISTICS(int i) {
			return getToken(OpenGaussStatementParser.STATISTICS, i);
		}
		public AnyNameContext anyName() {
			return getRuleContext(AnyNameContext.class,0);
		}
		public TerminalNode SET() { return getToken(OpenGaussStatementParser.SET, 0); }
		public SignedIconstContext signedIconst() {
			return getRuleContext(SignedIconstContext.class,0);
		}
		public TerminalNode RENAME() { return getToken(OpenGaussStatementParser.RENAME, 0); }
		public TerminalNode TO() { return getToken(OpenGaussStatementParser.TO, 0); }
		public NameContext name() {
			return getRuleContext(NameContext.class,0);
		}
		public TerminalNode SCHEMA() { return getToken(OpenGaussStatementParser.SCHEMA, 0); }
		public TerminalNode OWNER() { return getToken(OpenGaussStatementParser.OWNER, 0); }
		public RoleSpecContext roleSpec() {
			return getRuleContext(RoleSpecContext.class,0);
		}
		public IfExistsContext ifExists() {
			return getRuleContext(IfExistsContext.class,0);
		}
		public AlterStatisticsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterStatistics; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitAlterStatistics(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AlterStatisticsContext alterStatistics() throws RecognitionException {
		AlterStatisticsContext _localctx = new AlterStatisticsContext(_ctx, getState());
		enterRule(_localctx, 1108, RULE_alterStatistics);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(8013);
			match(ALTER);
			setState(8014);
			match(STATISTICS);
			setState(8038);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,719,_ctx) ) {
			case 1:
				{
				setState(8016);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,718,_ctx) ) {
				case 1:
					{
					setState(8015);
					ifExists();
					}
					break;
				}
				setState(8018);
				anyName();
				setState(8019);
				match(SET);
				setState(8020);
				match(STATISTICS);
				setState(8021);
				signedIconst();
				}
				break;
			case 2:
				{
				setState(8023);
				anyName();
				setState(8024);
				match(RENAME);
				setState(8025);
				match(TO);
				setState(8026);
				name();
				}
				break;
			case 3:
				{
				setState(8028);
				anyName();
				setState(8029);
				match(SET);
				setState(8030);
				match(SCHEMA);
				setState(8031);
				name();
				}
				break;
			case 4:
				{
				setState(8033);
				anyName();
				setState(8034);
				match(OWNER);
				setState(8035);
				match(TO);
				setState(8036);
				roleSpec();
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterSubscriptionContext extends ParserRuleContext {
		public TerminalNode ALTER() { return getToken(OpenGaussStatementParser.ALTER, 0); }
		public TerminalNode SUBSCRIPTION() { return getToken(OpenGaussStatementParser.SUBSCRIPTION, 0); }
		public List name() {
			return getRuleContexts(NameContext.class);
		}
		public NameContext name(int i) {
			return getRuleContext(NameContext.class,i);
		}
		public TerminalNode RENAME() { return getToken(OpenGaussStatementParser.RENAME, 0); }
		public TerminalNode TO() { return getToken(OpenGaussStatementParser.TO, 0); }
		public TerminalNode OWNER() { return getToken(OpenGaussStatementParser.OWNER, 0); }
		public RoleSpecContext roleSpec() {
			return getRuleContext(RoleSpecContext.class,0);
		}
		public TerminalNode SET() { return getToken(OpenGaussStatementParser.SET, 0); }
		public DefinitionContext definition() {
			return getRuleContext(DefinitionContext.class,0);
		}
		public TerminalNode CONNECTION() { return getToken(OpenGaussStatementParser.CONNECTION, 0); }
		public TerminalNode STRING_() { return getToken(OpenGaussStatementParser.STRING_, 0); }
		public TerminalNode REFRESH() { return getToken(OpenGaussStatementParser.REFRESH, 0); }
		public TerminalNode PUBLICATION() { return getToken(OpenGaussStatementParser.PUBLICATION, 0); }
		public PublicationNameListContext publicationNameList() {
			return getRuleContext(PublicationNameListContext.class,0);
		}
		public TerminalNode ENABLE() { return getToken(OpenGaussStatementParser.ENABLE, 0); }
		public TerminalNode DISABLE() { return getToken(OpenGaussStatementParser.DISABLE, 0); }
		public TerminalNode WITH() { return getToken(OpenGaussStatementParser.WITH, 0); }
		public AlterSubscriptionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterSubscription; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitAlterSubscription(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AlterSubscriptionContext alterSubscription() throws RecognitionException {
		AlterSubscriptionContext _localctx = new AlterSubscriptionContext(_ctx, getState());
		enterRule(_localctx, 1110, RULE_alterSubscription);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(8040);
			match(ALTER);
			setState(8041);
			match(SUBSCRIPTION);
			setState(8042);
			name();
			setState(8067);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,722,_ctx) ) {
			case 1:
				{
				setState(8043);
				match(RENAME);
				setState(8044);
				match(TO);
				setState(8045);
				name();
				}
				break;
			case 2:
				{
				setState(8046);
				match(OWNER);
				setState(8047);
				match(TO);
				setState(8048);
				roleSpec();
				}
				break;
			case 3:
				{
				setState(8049);
				match(SET);
				setState(8050);
				definition();
				}
				break;
			case 4:
				{
				setState(8051);
				match(CONNECTION);
				setState(8052);
				match(STRING_);
				}
				break;
			case 5:
				{
				setState(8053);
				match(REFRESH);
				setState(8054);
				match(PUBLICATION);
				setState(8057);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==WITH) {
					{
					setState(8055);
					match(WITH);
					setState(8056);
					definition();
					}
				}

				}
				break;
			case 6:
				{
				setState(8059);
				match(SET);
				setState(8060);
				match(PUBLICATION);
				setState(8061);
				publicationNameList();
				setState(8064);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==WITH) {
					{
					setState(8062);
					match(WITH);
					setState(8063);
					definition();
					}
				}

				}
				break;
			case 7:
				{
				setState(8066);
				_la = _input.LA(1);
				if ( !(_la==ENABLE || _la==DISABLE) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class PublicationNameListContext extends ParserRuleContext {
		public List publicationNameItem() {
			return getRuleContexts(PublicationNameItemContext.class);
		}
		public PublicationNameItemContext publicationNameItem(int i) {
			return getRuleContext(PublicationNameItemContext.class,i);
		}
		public List COMMA_() { return getTokens(OpenGaussStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(OpenGaussStatementParser.COMMA_, i);
		}
		public PublicationNameListContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_publicationNameList; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitPublicationNameList(this);
			else return visitor.visitChildren(this);
		}
	}

	public final PublicationNameListContext publicationNameList() throws RecognitionException {
		PublicationNameListContext _localctx = new PublicationNameListContext(_ctx, getState());
		enterRule(_localctx, 1112, RULE_publicationNameList);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(8069);
			publicationNameItem();
			setState(8074);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA_) {
				{
				{
				setState(8070);
				match(COMMA_);
				setState(8071);
				publicationNameItem();
				}
				}
				setState(8076);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class PublicationNameItemContext extends ParserRuleContext {
		public ColLabelContext colLabel() {
			return getRuleContext(ColLabelContext.class,0);
		}
		public PublicationNameItemContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_publicationNameItem; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitPublicationNameItem(this);
			else return visitor.visitChildren(this);
		}
	}

	public final PublicationNameItemContext publicationNameItem() throws RecognitionException {
		PublicationNameItemContext _localctx = new PublicationNameItemContext(_ctx, getState());
		enterRule(_localctx, 1114, RULE_publicationNameItem);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(8077);
			colLabel();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterSystemContext extends ParserRuleContext {
		public TerminalNode ALTER() { return getToken(OpenGaussStatementParser.ALTER, 0); }
		public TerminalNode SYSTEM() { return getToken(OpenGaussStatementParser.SYSTEM, 0); }
		public TerminalNode SET() { return getToken(OpenGaussStatementParser.SET, 0); }
		public GenericSetContext genericSet() {
			return getRuleContext(GenericSetContext.class,0);
		}
		public TerminalNode RESET() { return getToken(OpenGaussStatementParser.RESET, 0); }
		public GenericResetContext genericReset() {
			return getRuleContext(GenericResetContext.class,0);
		}
		public AlterSystemContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterSystem; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitAlterSystem(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AlterSystemContext alterSystem() throws RecognitionException {
		AlterSystemContext _localctx = new AlterSystemContext(_ctx, getState());
		enterRule(_localctx, 1116, RULE_alterSystem);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(8079);
			match(ALTER);
			setState(8080);
			match(SYSTEM);
			setState(8085);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case SET:
				{
				setState(8081);
				match(SET);
				setState(8082);
				genericSet();
				}
				break;
			case RESET:
				{
				setState(8083);
				match(RESET);
				setState(8084);
				genericReset();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterTablespaceContext extends ParserRuleContext {
		public TerminalNode ALTER() { return getToken(OpenGaussStatementParser.ALTER, 0); }
		public TerminalNode TABLESPACE() { return getToken(OpenGaussStatementParser.TABLESPACE, 0); }
		public List name() {
			return getRuleContexts(NameContext.class);
		}
		public NameContext name(int i) {
			return getRuleContext(NameContext.class,i);
		}
		public TerminalNode SET() { return getToken(OpenGaussStatementParser.SET, 0); }
		public TerminalNode RESET() { return getToken(OpenGaussStatementParser.RESET, 0); }
		public ReloptionsContext reloptions() {
			return getRuleContext(ReloptionsContext.class,0);
		}
		public TerminalNode RENAME() { return getToken(OpenGaussStatementParser.RENAME, 0); }
		public TerminalNode TO() { return getToken(OpenGaussStatementParser.TO, 0); }
		public TerminalNode OWNER() { return getToken(OpenGaussStatementParser.OWNER, 0); }
		public RoleSpecContext roleSpec() {
			return getRuleContext(RoleSpecContext.class,0);
		}
		public AlterTablespaceContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterTablespace; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitAlterTablespace(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AlterTablespaceContext alterTablespace() throws RecognitionException {
		AlterTablespaceContext _localctx = new AlterTablespaceContext(_ctx, getState());
		enterRule(_localctx, 1118, RULE_alterTablespace);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(8087);
			match(ALTER);
			setState(8088);
			match(TABLESPACE);
			setState(8089);
			name();
			setState(8099);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case SET:
				{
				setState(8090);
				match(SET);
				}
				break;
			case RESET:
				{
				setState(8091);
				match(RESET);
				setState(8092);
				reloptions();
				}
				break;
			case RENAME:
				{
				setState(8093);
				match(RENAME);
				setState(8094);
				match(TO);
				setState(8095);
				name();
				}
				break;
			case OWNER:
				{
				setState(8096);
				match(OWNER);
				setState(8097);
				match(TO);
				setState(8098);
				roleSpec();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterTextSearchConfigurationContext extends ParserRuleContext {
		public TerminalNode ALTER() { return getToken(OpenGaussStatementParser.ALTER, 0); }
		public TerminalNode TEXT() { return getToken(OpenGaussStatementParser.TEXT, 0); }
		public TerminalNode SEARCH() { return getToken(OpenGaussStatementParser.SEARCH, 0); }
		public TerminalNode CONFIGURATION() { return getToken(OpenGaussStatementParser.CONFIGURATION, 0); }
		public AnyNameContext anyName() {
			return getRuleContext(AnyNameContext.class,0);
		}
		public AlterTextSearchConfigurationClausesContext alterTextSearchConfigurationClauses() {
			return getRuleContext(AlterTextSearchConfigurationClausesContext.class,0);
		}
		public AlterTextSearchConfigurationContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterTextSearchConfiguration; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitAlterTextSearchConfiguration(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AlterTextSearchConfigurationContext alterTextSearchConfiguration() throws RecognitionException {
		AlterTextSearchConfigurationContext _localctx = new AlterTextSearchConfigurationContext(_ctx, getState());
		enterRule(_localctx, 1120, RULE_alterTextSearchConfiguration);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(8101);
			match(ALTER);
			setState(8102);
			match(TEXT);
			setState(8103);
			match(SEARCH);
			setState(8104);
			match(CONFIGURATION);
			setState(8105);
			anyName();
			setState(8106);
			alterTextSearchConfigurationClauses();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterTextSearchConfigurationClausesContext extends ParserRuleContext {
		public TerminalNode RENAME() { return getToken(OpenGaussStatementParser.RENAME, 0); }
		public TerminalNode TO() { return getToken(OpenGaussStatementParser.TO, 0); }
		public NameContext name() {
			return getRuleContext(NameContext.class,0);
		}
		public TerminalNode SET() { return getToken(OpenGaussStatementParser.SET, 0); }
		public TerminalNode SCHEMA() { return getToken(OpenGaussStatementParser.SCHEMA, 0); }
		public TerminalNode OWNER() { return getToken(OpenGaussStatementParser.OWNER, 0); }
		public RoleSpecContext roleSpec() {
			return getRuleContext(RoleSpecContext.class,0);
		}
		public TerminalNode MAPPING() { return getToken(OpenGaussStatementParser.MAPPING, 0); }
		public TerminalNode FOR() { return getToken(OpenGaussStatementParser.FOR, 0); }
		public NameListContext nameList() {
			return getRuleContext(NameListContext.class,0);
		}
		public AnyNameListContext anyNameList() {
			return getRuleContext(AnyNameListContext.class,0);
		}
		public TerminalNode ADD() { return getToken(OpenGaussStatementParser.ADD, 0); }
		public TerminalNode ALTER() { return getToken(OpenGaussStatementParser.ALTER, 0); }
		public TerminalNode WITH() { return getToken(OpenGaussStatementParser.WITH, 0); }
		public TerminalNode REPLACE() { return getToken(OpenGaussStatementParser.REPLACE, 0); }
		public List anyName() {
			return getRuleContexts(AnyNameContext.class);
		}
		public AnyNameContext anyName(int i) {
			return getRuleContext(AnyNameContext.class,i);
		}
		public TerminalNode DROP() { return getToken(OpenGaussStatementParser.DROP, 0); }
		public IfExistsContext ifExists() {
			return getRuleContext(IfExistsContext.class,0);
		}
		public AlterTextSearchConfigurationClausesContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterTextSearchConfigurationClauses; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitAlterTextSearchConfigurationClauses(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AlterTextSearchConfigurationClausesContext alterTextSearchConfigurationClauses() throws RecognitionException {
		AlterTextSearchConfigurationClausesContext _localctx = new AlterTextSearchConfigurationClausesContext(_ctx, getState());
		enterRule(_localctx, 1122, RULE_alterTextSearchConfigurationClauses);
		int _la;
		try {
			setState(8144);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,729,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(8108);
				match(RENAME);
				setState(8109);
				match(TO);
				setState(8110);
				name();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(8111);
				match(SET);
				setState(8112);
				match(SCHEMA);
				setState(8113);
				name();
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(8114);
				match(OWNER);
				setState(8115);
				match(TO);
				setState(8116);
				roleSpec();
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(8117);
				_la = _input.LA(1);
				if ( !(_la==ALTER || _la==ADD) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(8118);
				match(MAPPING);
				setState(8119);
				match(FOR);
				setState(8120);
				nameList(0);
				setState(8122);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==WITH) {
					{
					setState(8121);
					match(WITH);
					}
				}

				setState(8124);
				anyNameList();
				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(8126);
				match(ALTER);
				setState(8127);
				match(MAPPING);
				setState(8130);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==FOR) {
					{
					setState(8128);
					match(FOR);
					setState(8129);
					nameList(0);
					}
				}

				setState(8132);
				match(REPLACE);
				setState(8133);
				anyName();
				setState(8134);
				match(WITH);
				setState(8135);
				anyName();
				}
				break;
			case 6:
				enterOuterAlt(_localctx, 6);
				{
				setState(8137);
				match(DROP);
				setState(8138);
				match(MAPPING);
				setState(8140);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==IF) {
					{
					setState(8139);
					ifExists();
					}
				}

				setState(8142);
				match(FOR);
				setState(8143);
				nameList(0);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AnyNameListContext extends ParserRuleContext {
		public List anyName() {
			return getRuleContexts(AnyNameContext.class);
		}
		public AnyNameContext anyName(int i) {
			return getRuleContext(AnyNameContext.class,i);
		}
		public List COMMA_() { return getTokens(OpenGaussStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(OpenGaussStatementParser.COMMA_, i);
		}
		public AnyNameListContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_anyNameList; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitAnyNameList(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AnyNameListContext anyNameList() throws RecognitionException {
		AnyNameListContext _localctx = new AnyNameListContext(_ctx, getState());
		enterRule(_localctx, 1124, RULE_anyNameList);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(8146);
			anyName();
			setState(8151);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA_) {
				{
				{
				setState(8147);
				match(COMMA_);
				setState(8148);
				anyName();
				}
				}
				setState(8153);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterTextSearchDictionaryContext extends ParserRuleContext {
		public TerminalNode ALTER() { return getToken(OpenGaussStatementParser.ALTER, 0); }
		public TerminalNode TEXT() { return getToken(OpenGaussStatementParser.TEXT, 0); }
		public TerminalNode SEARCH() { return getToken(OpenGaussStatementParser.SEARCH, 0); }
		public TerminalNode DICTIONARY() { return getToken(OpenGaussStatementParser.DICTIONARY, 0); }
		public AnyNameContext anyName() {
			return getRuleContext(AnyNameContext.class,0);
		}
		public TerminalNode RENAME() { return getToken(OpenGaussStatementParser.RENAME, 0); }
		public TerminalNode TO() { return getToken(OpenGaussStatementParser.TO, 0); }
		public NameContext name() {
			return getRuleContext(NameContext.class,0);
		}
		public TerminalNode SET() { return getToken(OpenGaussStatementParser.SET, 0); }
		public TerminalNode SCHEMA() { return getToken(OpenGaussStatementParser.SCHEMA, 0); }
		public TerminalNode OWNER() { return getToken(OpenGaussStatementParser.OWNER, 0); }
		public RoleSpecContext roleSpec() {
			return getRuleContext(RoleSpecContext.class,0);
		}
		public DefinitionContext definition() {
			return getRuleContext(DefinitionContext.class,0);
		}
		public AlterTextSearchDictionaryContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterTextSearchDictionary; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitAlterTextSearchDictionary(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AlterTextSearchDictionaryContext alterTextSearchDictionary() throws RecognitionException {
		AlterTextSearchDictionaryContext _localctx = new AlterTextSearchDictionaryContext(_ctx, getState());
		enterRule(_localctx, 1126, RULE_alterTextSearchDictionary);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(8154);
			match(ALTER);
			setState(8155);
			match(TEXT);
			setState(8156);
			match(SEARCH);
			setState(8157);
			match(DICTIONARY);
			setState(8158);
			anyName();
			setState(8169);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case RENAME:
				{
				setState(8159);
				match(RENAME);
				setState(8160);
				match(TO);
				setState(8161);
				name();
				}
				break;
			case SET:
				{
				setState(8162);
				match(SET);
				setState(8163);
				match(SCHEMA);
				setState(8164);
				name();
				}
				break;
			case OWNER:
				{
				setState(8165);
				match(OWNER);
				setState(8166);
				match(TO);
				setState(8167);
				roleSpec();
				}
				break;
			case LP_:
				{
				setState(8168);
				definition();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterTextSearchParserContext extends ParserRuleContext {
		public TerminalNode ALTER() { return getToken(OpenGaussStatementParser.ALTER, 0); }
		public TerminalNode TEXT() { return getToken(OpenGaussStatementParser.TEXT, 0); }
		public TerminalNode SEARCH() { return getToken(OpenGaussStatementParser.SEARCH, 0); }
		public TerminalNode PARSER() { return getToken(OpenGaussStatementParser.PARSER, 0); }
		public AnyNameContext anyName() {
			return getRuleContext(AnyNameContext.class,0);
		}
		public TerminalNode RENAME() { return getToken(OpenGaussStatementParser.RENAME, 0); }
		public TerminalNode TO() { return getToken(OpenGaussStatementParser.TO, 0); }
		public NameContext name() {
			return getRuleContext(NameContext.class,0);
		}
		public TerminalNode SET() { return getToken(OpenGaussStatementParser.SET, 0); }
		public TerminalNode SCHEMA() { return getToken(OpenGaussStatementParser.SCHEMA, 0); }
		public AlterTextSearchParserContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterTextSearchParser; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitAlterTextSearchParser(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AlterTextSearchParserContext alterTextSearchParser() throws RecognitionException {
		AlterTextSearchParserContext _localctx = new AlterTextSearchParserContext(_ctx, getState());
		enterRule(_localctx, 1128, RULE_alterTextSearchParser);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(8171);
			match(ALTER);
			setState(8172);
			match(TEXT);
			setState(8173);
			match(SEARCH);
			setState(8174);
			match(PARSER);
			setState(8183);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,732,_ctx) ) {
			case 1:
				{
				setState(8175);
				anyName();
				setState(8176);
				match(RENAME);
				setState(8177);
				match(TO);
				setState(8178);
				name();
				}
				break;
			case 2:
				{
				setState(8180);
				match(SET);
				setState(8181);
				match(SCHEMA);
				setState(8182);
				name();
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterTextSearchTemplateContext extends ParserRuleContext {
		public TerminalNode ALTER() { return getToken(OpenGaussStatementParser.ALTER, 0); }
		public TerminalNode TEXT() { return getToken(OpenGaussStatementParser.TEXT, 0); }
		public TerminalNode SEARCH() { return getToken(OpenGaussStatementParser.SEARCH, 0); }
		public TerminalNode TEMPLATE() { return getToken(OpenGaussStatementParser.TEMPLATE, 0); }
		public AnyNameContext anyName() {
			return getRuleContext(AnyNameContext.class,0);
		}
		public TerminalNode RENAME() { return getToken(OpenGaussStatementParser.RENAME, 0); }
		public TerminalNode TO() { return getToken(OpenGaussStatementParser.TO, 0); }
		public NameContext name() {
			return getRuleContext(NameContext.class,0);
		}
		public TerminalNode SET() { return getToken(OpenGaussStatementParser.SET, 0); }
		public TerminalNode SCHEMA() { return getToken(OpenGaussStatementParser.SCHEMA, 0); }
		public AlterTextSearchTemplateContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterTextSearchTemplate; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitAlterTextSearchTemplate(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AlterTextSearchTemplateContext alterTextSearchTemplate() throws RecognitionException {
		AlterTextSearchTemplateContext _localctx = new AlterTextSearchTemplateContext(_ctx, getState());
		enterRule(_localctx, 1130, RULE_alterTextSearchTemplate);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(8185);
			match(ALTER);
			setState(8186);
			match(TEXT);
			setState(8187);
			match(SEARCH);
			setState(8188);
			match(TEMPLATE);
			setState(8197);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,733,_ctx) ) {
			case 1:
				{
				setState(8189);
				anyName();
				setState(8190);
				match(RENAME);
				setState(8191);
				match(TO);
				setState(8192);
				name();
				}
				break;
			case 2:
				{
				setState(8194);
				match(SET);
				setState(8195);
				match(SCHEMA);
				setState(8196);
				name();
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterTriggerContext extends ParserRuleContext {
		public TerminalNode ALTER() { return getToken(OpenGaussStatementParser.ALTER, 0); }
		public TerminalNode TRIGGER() { return getToken(OpenGaussStatementParser.TRIGGER, 0); }
		public List name() {
			return getRuleContexts(NameContext.class);
		}
		public NameContext name(int i) {
			return getRuleContext(NameContext.class,i);
		}
		public List ON() { return getTokens(OpenGaussStatementParser.ON); }
		public TerminalNode ON(int i) {
			return getToken(OpenGaussStatementParser.ON, i);
		}
		public QualifiedNameContext qualifiedName() {
			return getRuleContext(QualifiedNameContext.class,0);
		}
		public TerminalNode RENAME() { return getToken(OpenGaussStatementParser.RENAME, 0); }
		public TerminalNode TO() { return getToken(OpenGaussStatementParser.TO, 0); }
		public TerminalNode DEPENDS() { return getToken(OpenGaussStatementParser.DEPENDS, 0); }
		public TerminalNode EXTENSION() { return getToken(OpenGaussStatementParser.EXTENSION, 0); }
		public TerminalNode NO() { return getToken(OpenGaussStatementParser.NO, 0); }
		public AlterTriggerContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterTrigger; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitAlterTrigger(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AlterTriggerContext alterTrigger() throws RecognitionException {
		AlterTriggerContext _localctx = new AlterTriggerContext(_ctx, getState());
		enterRule(_localctx, 1132, RULE_alterTrigger);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(8199);
			match(ALTER);
			setState(8200);
			match(TRIGGER);
			setState(8201);
			name();
			setState(8202);
			match(ON);
			setState(8203);
			qualifiedName();
			setState(8214);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case RENAME:
				{
				setState(8204);
				match(RENAME);
				setState(8205);
				match(TO);
				setState(8206);
				name();
				}
				break;
			case NO:
			case DEPENDS:
				{
				setState(8208);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==NO) {
					{
					setState(8207);
					match(NO);
					}
				}

				setState(8210);
				match(DEPENDS);
				setState(8211);
				match(ON);
				setState(8212);
				match(EXTENSION);
				setState(8213);
				name();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterTypeContext extends ParserRuleContext {
		public TerminalNode ALTER() { return getToken(OpenGaussStatementParser.ALTER, 0); }
		public TerminalNode TYPE() { return getToken(OpenGaussStatementParser.TYPE, 0); }
		public AnyNameContext anyName() {
			return getRuleContext(AnyNameContext.class,0);
		}
		public AlterTypeClausesContext alterTypeClauses() {
			return getRuleContext(AlterTypeClausesContext.class,0);
		}
		public AlterTypeContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterType; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitAlterType(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AlterTypeContext alterType() throws RecognitionException {
		AlterTypeContext _localctx = new AlterTypeContext(_ctx, getState());
		enterRule(_localctx, 1134, RULE_alterType);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(8216);
			match(ALTER);
			setState(8217);
			match(TYPE);
			setState(8218);
			anyName();
			setState(8219);
			alterTypeClauses();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterTypeClausesContext extends ParserRuleContext {
		public AlterTypeCmdsContext alterTypeCmds() {
			return getRuleContext(AlterTypeCmdsContext.class,0);
		}
		public TerminalNode ADD() { return getToken(OpenGaussStatementParser.ADD, 0); }
		public TerminalNode VALUE() { return getToken(OpenGaussStatementParser.VALUE, 0); }
		public List STRING_() { return getTokens(OpenGaussStatementParser.STRING_); }
		public TerminalNode STRING_(int i) {
			return getToken(OpenGaussStatementParser.STRING_, i);
		}
		public IfNotExistsContext ifNotExists() {
			return getRuleContext(IfNotExistsContext.class,0);
		}
		public TerminalNode BEFORE() { return getToken(OpenGaussStatementParser.BEFORE, 0); }
		public TerminalNode AFTER() { return getToken(OpenGaussStatementParser.AFTER, 0); }
		public TerminalNode RENAME() { return getToken(OpenGaussStatementParser.RENAME, 0); }
		public TerminalNode TO() { return getToken(OpenGaussStatementParser.TO, 0); }
		public List name() {
			return getRuleContexts(NameContext.class);
		}
		public NameContext name(int i) {
			return getRuleContext(NameContext.class,i);
		}
		public TerminalNode ATTRIBUTE() { return getToken(OpenGaussStatementParser.ATTRIBUTE, 0); }
		public DropBehaviorContext dropBehavior() {
			return getRuleContext(DropBehaviorContext.class,0);
		}
		public TerminalNode SET() { return getToken(OpenGaussStatementParser.SET, 0); }
		public TerminalNode SCHEMA() { return getToken(OpenGaussStatementParser.SCHEMA, 0); }
		public TerminalNode OWNER() { return getToken(OpenGaussStatementParser.OWNER, 0); }
		public RoleSpecContext roleSpec() {
			return getRuleContext(RoleSpecContext.class,0);
		}
		public AlterTypeClausesContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterTypeClauses; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitAlterTypeClauses(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AlterTypeClausesContext alterTypeClauses() throws RecognitionException {
		AlterTypeClausesContext _localctx = new AlterTypeClausesContext(_ctx, getState());
		enterRule(_localctx, 1136, RULE_alterTypeClauses);
		int _la;
		try {
			setState(8254);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,739,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(8221);
				alterTypeCmds();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(8222);
				match(ADD);
				setState(8223);
				match(VALUE);
				setState(8225);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==IF) {
					{
					setState(8224);
					ifNotExists();
					}
				}

				setState(8227);
				match(STRING_);
				setState(8230);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==AFTER || _la==BEFORE) {
					{
					setState(8228);
					_la = _input.LA(1);
					if ( !(_la==AFTER || _la==BEFORE) ) {
					_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					setState(8229);
					match(STRING_);
					}
				}

				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(8232);
				match(RENAME);
				setState(8233);
				match(VALUE);
				setState(8234);
				match(STRING_);
				setState(8235);
				match(TO);
				setState(8236);
				match(STRING_);
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(8237);
				match(RENAME);
				setState(8238);
				match(TO);
				setState(8239);
				name();
				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(8240);
				match(RENAME);
				setState(8241);
				match(ATTRIBUTE);
				setState(8242);
				name();
				setState(8243);
				match(TO);
				setState(8244);
				name();
				setState(8246);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==CASCADE || _la==RESTRICT) {
					{
					setState(8245);
					dropBehavior();
					}
				}

				}
				break;
			case 6:
				enterOuterAlt(_localctx, 6);
				{
				setState(8248);
				match(SET);
				setState(8249);
				match(SCHEMA);
				setState(8250);
				name();
				}
				break;
			case 7:
				enterOuterAlt(_localctx, 7);
				{
				setState(8251);
				match(OWNER);
				setState(8252);
				match(TO);
				setState(8253);
				roleSpec();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterTypeCmdsContext extends ParserRuleContext {
		public List alterTypeCmd() {
			return getRuleContexts(AlterTypeCmdContext.class);
		}
		public AlterTypeCmdContext alterTypeCmd(int i) {
			return getRuleContext(AlterTypeCmdContext.class,i);
		}
		public TerminalNode COMMA_() { return getToken(OpenGaussStatementParser.COMMA_, 0); }
		public AlterTypeCmdsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterTypeCmds; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitAlterTypeCmds(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AlterTypeCmdsContext alterTypeCmds() throws RecognitionException {
		AlterTypeCmdsContext _localctx = new AlterTypeCmdsContext(_ctx, getState());
		enterRule(_localctx, 1138, RULE_alterTypeCmds);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(8256);
			alterTypeCmd();
			setState(8259);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==COMMA_) {
				{
				setState(8257);
				match(COMMA_);
				setState(8258);
				alterTypeCmd();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterTypeCmdContext extends ParserRuleContext {
		public TerminalNode ADD() { return getToken(OpenGaussStatementParser.ADD, 0); }
		public TerminalNode ATTRIBUTE() { return getToken(OpenGaussStatementParser.ATTRIBUTE, 0); }
		public TableFuncElementContext tableFuncElement() {
			return getRuleContext(TableFuncElementContext.class,0);
		}
		public DropBehaviorContext dropBehavior() {
			return getRuleContext(DropBehaviorContext.class,0);
		}
		public TerminalNode DROP() { return getToken(OpenGaussStatementParser.DROP, 0); }
		public ColIdContext colId() {
			return getRuleContext(ColIdContext.class,0);
		}
		public IfExistsContext ifExists() {
			return getRuleContext(IfExistsContext.class,0);
		}
		public TerminalNode ALTER() { return getToken(OpenGaussStatementParser.ALTER, 0); }
		public TerminalNode TYPE() { return getToken(OpenGaussStatementParser.TYPE, 0); }
		public TypeNameContext typeName() {
			return getRuleContext(TypeNameContext.class,0);
		}
		public SetDataContext setData() {
			return getRuleContext(SetDataContext.class,0);
		}
		public CollateClauseContext collateClause() {
			return getRuleContext(CollateClauseContext.class,0);
		}
		public AlterTypeCmdContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterTypeCmd; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitAlterTypeCmd(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AlterTypeCmdContext alterTypeCmd() throws RecognitionException {
		AlterTypeCmdContext _localctx = new AlterTypeCmdContext(_ctx, getState());
		enterRule(_localctx, 1140, RULE_alterTypeCmd);
		int _la;
		try {
			setState(8290);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case ADD:
				enterOuterAlt(_localctx, 1);
				{
				setState(8261);
				match(ADD);
				setState(8262);
				match(ATTRIBUTE);
				setState(8263);
				tableFuncElement();
				setState(8265);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==CASCADE || _la==RESTRICT) {
					{
					setState(8264);
					dropBehavior();
					}
				}

				}
				break;
			case DROP:
				enterOuterAlt(_localctx, 2);
				{
				setState(8267);
				match(DROP);
				setState(8268);
				match(ATTRIBUTE);
				setState(8270);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,742,_ctx) ) {
				case 1:
					{
					setState(8269);
					ifExists();
					}
					break;
				}
				setState(8272);
				colId();
				setState(8274);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==CASCADE || _la==RESTRICT) {
					{
					setState(8273);
					dropBehavior();
					}
				}

				}
				break;
			case ALTER:
				enterOuterAlt(_localctx, 3);
				{
				setState(8276);
				match(ALTER);
				setState(8277);
				match(ATTRIBUTE);
				setState(8278);
				colId();
				setState(8280);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==SET) {
					{
					setState(8279);
					setData();
					}
				}

				setState(8282);
				match(TYPE);
				setState(8283);
				typeName();
				setState(8285);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==COLLATE) {
					{
					setState(8284);
					collateClause();
					}
				}

				setState(8288);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==CASCADE || _la==RESTRICT) {
					{
					setState(8287);
					dropBehavior();
					}
				}

				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterUserMappingContext extends ParserRuleContext {
		public TerminalNode ALTER() { return getToken(OpenGaussStatementParser.ALTER, 0); }
		public TerminalNode USER() { return getToken(OpenGaussStatementParser.USER, 0); }
		public TerminalNode MAPPING() { return getToken(OpenGaussStatementParser.MAPPING, 0); }
		public TerminalNode FOR() { return getToken(OpenGaussStatementParser.FOR, 0); }
		public AuthIdentContext authIdent() {
			return getRuleContext(AuthIdentContext.class,0);
		}
		public TerminalNode SERVER() { return getToken(OpenGaussStatementParser.SERVER, 0); }
		public NameContext name() {
			return getRuleContext(NameContext.class,0);
		}
		public AlterGenericOptionsContext alterGenericOptions() {
			return getRuleContext(AlterGenericOptionsContext.class,0);
		}
		public AlterUserMappingContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterUserMapping; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitAlterUserMapping(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AlterUserMappingContext alterUserMapping() throws RecognitionException {
		AlterUserMappingContext _localctx = new AlterUserMappingContext(_ctx, getState());
		enterRule(_localctx, 1142, RULE_alterUserMapping);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(8292);
			match(ALTER);
			setState(8293);
			match(USER);
			setState(8294);
			match(MAPPING);
			setState(8295);
			match(FOR);
			setState(8296);
			authIdent();
			setState(8297);
			match(SERVER);
			setState(8298);
			name();
			setState(8299);
			alterGenericOptions();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AuthIdentContext extends ParserRuleContext {
		public RoleSpecContext roleSpec() {
			return getRuleContext(RoleSpecContext.class,0);
		}
		public TerminalNode USER() { return getToken(OpenGaussStatementParser.USER, 0); }
		public AuthIdentContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_authIdent; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitAuthIdent(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AuthIdentContext authIdent() throws RecognitionException {
		AuthIdentContext _localctx = new AuthIdentContext(_ctx, getState());
		enterRule(_localctx, 1144, RULE_authIdent);
		try {
			setState(8303);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case UNICODE_ESCAPE:
			case INSERT:
			case UPDATE:
			case DELETE:
			case ALTER:
			case DROP:
			case TRUNCATE:
			case SCHEMA:
			case REVOKE:
			case ADD:
			case SET:
			case INDEX:
			case KEY:
			case POSITION:
			case PRECISION:
			case FUNCTION:
			case TRIGGER:
			case PROCEDURE:
			case VIEW:
			case VALUES:
			case TRIM:
			case SUBSTRING:
			case NATURAL:
			case JOIN:
			case FULL:
			case INNER:
			case OUTER:
			case LEFT:
			case RIGHT:
			case CROSS:
			case IF:
			case IS:
			case EXISTS:
			case BETWEEN:
			case LIKE:
			case BY:
			case BEGIN:
			case COMMIT:
			case ROLLBACK:
			case SAVEPOINT:
			case BOOLEAN:
			case DOUBLE:
			case CHAR:
			case CHARACTER:
			case INTERVAL:
			case TIME:
			case TIMESTAMP:
			case YEAR:
			case MONTH:
			case DAY:
			case HOUR:
			case MINUTE:
			case SECOND:
			case CURRENT:
			case ENABLE:
			case DISABLE:
			case CALL:
			case PRESERVE:
			case DEFINER:
			case CURRENT_USER:
			case SQL:
			case CASCADED:
			case LOCAL:
			case CLOSE:
			case NEXT:
			case NAME:
			case COLLATION:
			case NAMES:
			case INTEGER:
			case REAL:
			case DECIMAL:
			case TYPE:
			case SMALLINT:
			case BIGINT:
			case NUMERIC:
			case TEXT:
			case REPEATABLE:
			case NULLIF:
			case VARYING:
			case NATIONAL:
			case NCHAR:
			case VALUE:
			case COALESCE:
			case TIES:
			case CUBE:
			case GROUPING:
			case SETS:
			case OTHERS:
			case OVERLAPS:
			case AT:
			case DEC:
			case MAXVALUE:
			case ADMIN:
			case BINARY:
			case ESCAPE:
			case EXCLUDE:
			case MOD:
			case PARTITION:
			case ROW:
			case UNKNOWN:
			case ALWAYS:
			case CASCADE:
			case GENERATED:
			case ISOLATION:
			case LEVEL:
			case NO:
			case OPTION:
			case PRIVILEGES:
			case READ:
			case ROLE:
			case ROWS:
			case START:
			case TRANSACTION:
			case ACTION:
			case CACHE:
			case CHARACTERISTICS:
			case CLUSTER:
			case COMMENTS:
			case CONCURRENTLY:
			case CONSTRAINTS:
			case CYCLE:
			case DATA:
			case DATABASE:
			case DEFAULTS:
			case DEFERRED:
			case DEPENDS:
			case DOMAIN:
			case EXCLUDING:
			case EXECUTE:
			case EXTENDED:
			case EXTENSION:
			case EXTERNAL:
			case EXTRACT:
			case FILTER:
			case FIRST:
			case FOLLOWING:
			case FORCE:
			case GLOBAL:
			case IDENTITY:
			case IMMEDIATE:
			case INCLUDING:
			case INCREMENT:
			case INDEXES:
			case INHERIT:
			case INHERITS:
			case INCLUDE:
			case LANGUAGE:
			case LARGE:
			case LAST:
			case LOGGED:
			case MAIN:
			case MATCH:
			case MINVALUE:
			case NOTHING:
			case NULLS:
			case OBJECT:
			case OIDS:
			case OVER:
			case OWNED:
			case OWNER:
			case PARTIAL:
			case PLAIN:
			case PRECEDING:
			case RANGE:
			case RENAME:
			case REPLICA:
			case RESET:
			case RESTART:
			case RESTRICT:
			case ROUTINE:
			case RULE:
			case SECURITY:
			case SEQUENCE:
			case SESSION:
			case SESSION_USER:
			case SHOW:
			case SIMPLE:
			case STATISTICS:
			case STORAGE:
			case TABLESPACE:
			case TEMP:
			case TEMPORARY:
			case UNBOUNDED:
			case UNLOGGED:
			case VALID:
			case VALIDATE:
			case WITHIN:
			case WITHOUT:
			case ZONE:
			case OF:
			case UESCAPE:
			case GROUPS:
			case RECURSIVE:
			case INT:
			case INT2:
			case INT4:
			case FLOAT:
			case FLOAT4:
			case VARCHAR:
			case BYTEA:
			case ENUM:
			case POINT:
			case LSEG:
			case BOX:
			case PATH:
			case POLYGON:
			case CIRCLE:
			case INET:
			case BIT:
			case TSQUERY:
			case XML:
			case JSON:
			case INT4RANGE:
			case INT8RANGE:
			case NUMRANGE:
			case DATERANGE:
			case TABLESAMPLE:
			case ORDINALITY:
			case CURRENT_SCHEMA:
			case OVERLAY:
			case XMLCONCAT:
			case XMLELEMENT:
			case XMLEXISTS:
			case XMLFOREST:
			case XMLPARSE:
			case XMLPI:
			case XMLROOT:
			case XMLSERIALIZE:
			case TREAT:
			case SETOF:
			case NFC:
			case NFD:
			case NFKC:
			case NFKD:
			case XMLATTRIBUTES:
			case REF:
			case PASSING:
			case VERSION:
			case YES:
			case STANDALONE:
			case GREATEST:
			case LEAST:
			case MATERIALIZED:
			case OPERATOR:
			case SHARE:
			case ROLLUP:
			case ILIKE:
			case SIMILAR:
			case ISNULL:
			case NOTNULL:
			case DOCUMENT:
			case NORMALIZED:
			case NOWAIT:
			case LOCKED:
			case XMLTABLE:
			case COLUMNS:
			case CONTENT:
			case STRIP:
			case WHITESPACE:
			case XMLNAMESPACES:
			case NONE:
			case CONFLICT:
			case OVERRIDING:
			case SYSTEM:
			case ABORT:
			case ABSOLUTE:
			case ACCESS:
			case AFTER:
			case AGGREGATE:
			case ALSO:
			case ATTACH:
			case ATTRIBUTE:
			case BACKWARD:
			case BEFORE:
			case ASSERTION:
			case ASSIGNMENT:
			case CONTINUE:
			case CONVERSION:
			case COPY:
			case COST:
			case CSV:
			case CALLED:
			case CATALOG:
			case CHAIN:
			case CHECKPOINT:
			case CLASS:
			case CONFIGURATION:
			case COMMENT:
			case DETACH:
			case DICTIONARY:
			case EXPRESSION:
			case INSENSITIVE:
			case DISCARD:
			case OFF:
			case INSTEAD:
			case EXPLAIN:
			case INPUT:
			case INLINE:
			case PARALLEL:
			case LEAKPROOF:
			case COMMITTED:
			case ENCODING:
			case IMPLICIT:
			case DELIMITER:
			case CURSOR:
			case EACH:
			case EVENT:
			case DEALLOCATE:
			case CONNECTION:
			case DECLARE:
			case FAMILY:
			case FORWARD:
			case EXCLUSIVE:
			case FUNCTIONS:
			case LOCATION:
			case LABEL:
			case DELIMITERS:
			case HANDLER:
			case HEADER:
			case IMMUTABLE:
			case GRANTED:
			case HOLD:
			case MAPPING:
			case OLD:
			case METHOD:
			case LOAD:
			case LISTEN:
			case MODE:
			case MOVE:
			case PROCEDURAL:
			case PARSER:
			case PROCEDURES:
			case ENCRYPTED:
			case PUBLICATION:
			case PROGRAM:
			case REFERENCING:
			case PLANS:
			case REINDEX:
			case PRIOR:
			case PASSWORD:
			case RELATIVE:
			case QUOTE:
			case ROUTINES:
			case REPLACE:
			case SNAPSHOT:
			case REFRESH:
			case PREPARE:
			case OPTIONS:
			case IMPORT:
			case INVOKER:
			case NEW:
			case PREPARED:
			case SCROLL:
			case SEQUENCES:
			case SYSID:
			case REASSIGN:
			case SERVER:
			case SUBSCRIPTION:
			case SEARCH:
			case SCHEMAS:
			case RECHECK:
			case POLICY:
			case NOTIFY:
			case LOCK:
			case RELEASE:
			case SERIALIZABLE:
			case RETURNS:
			case STATEMENT:
			case STDIN:
			case STDOUT:
			case TABLES:
			case SUPPORT:
			case STABLE:
			case TEMPLATE:
			case UNENCRYPTED:
			case VIEWS:
			case UNCOMMITTED:
			case TRANSFORM:
			case UNLISTEN:
			case TRUSTED:
			case VALIDATOR:
			case UNTIL:
			case VACUUM:
			case VOLATILE:
			case STORED:
			case WRITE:
			case STRICT:
			case TYPES:
			case WRAPPER:
			case WORK:
			case FREEZE:
			case AUTHORIZATION:
			case VERBOSE:
			case OUT:
			case INOUT:
			case INT16:
			case INT1:
			case ELEM_CONTAINED_BY_RANGE:
			case IDENTIFIER_:
				enterOuterAlt(_localctx, 1);
				{
				setState(8301);
				roleSpec();
				}
				break;
			case USER:
				enterOuterAlt(_localctx, 2);
				{
				setState(8302);
				match(USER);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterViewContext extends ParserRuleContext {
		public TerminalNode ALTER() { return getToken(OpenGaussStatementParser.ALTER, 0); }
		public TerminalNode VIEW() { return getToken(OpenGaussStatementParser.VIEW, 0); }
		public QualifiedNameContext qualifiedName() {
			return getRuleContext(QualifiedNameContext.class,0);
		}
		public AlterViewClausesContext alterViewClauses() {
			return getRuleContext(AlterViewClausesContext.class,0);
		}
		public IfExistsContext ifExists() {
			return getRuleContext(IfExistsContext.class,0);
		}
		public AlterViewContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterView; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitAlterView(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AlterViewContext alterView() throws RecognitionException {
		AlterViewContext _localctx = new AlterViewContext(_ctx, getState());
		enterRule(_localctx, 1146, RULE_alterView);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(8305);
			match(ALTER);
			setState(8306);
			match(VIEW);
			setState(8308);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,749,_ctx) ) {
			case 1:
				{
				setState(8307);
				ifExists();
				}
				break;
			}
			setState(8310);
			qualifiedName();
			setState(8311);
			alterViewClauses();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterViewClausesContext extends ParserRuleContext {
		public AlterViewClausesContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterViewClauses; }
	 
		public AlterViewClausesContext() { }
		public void copyFrom(AlterViewClausesContext ctx) {
			super.copyFrom(ctx);
		}
	}
	public static class AlterSetSchemaContext extends AlterViewClausesContext {
		public TerminalNode SET() { return getToken(OpenGaussStatementParser.SET, 0); }
		public TerminalNode SCHEMA() { return getToken(OpenGaussStatementParser.SCHEMA, 0); }
		public NameContext name() {
			return getRuleContext(NameContext.class,0);
		}
		public AlterSetSchemaContext(AlterViewClausesContext ctx) { copyFrom(ctx); }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitAlterSetSchema(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class AlterViewCmdsContext extends AlterViewClausesContext {
		public AlterTableCmdsContext alterTableCmds() {
			return getRuleContext(AlterTableCmdsContext.class,0);
		}
		public AlterViewCmdsContext(AlterViewClausesContext ctx) { copyFrom(ctx); }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitAlterViewCmds(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class AlterRenameViewContext extends AlterViewClausesContext {
		public TerminalNode RENAME() { return getToken(OpenGaussStatementParser.RENAME, 0); }
		public TerminalNode TO() { return getToken(OpenGaussStatementParser.TO, 0); }
		public NameContext name() {
			return getRuleContext(NameContext.class,0);
		}
		public AlterRenameViewContext(AlterViewClausesContext ctx) { copyFrom(ctx); }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitAlterRenameView(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class AlterRenameColumnContext extends AlterViewClausesContext {
		public TerminalNode RENAME() { return getToken(OpenGaussStatementParser.RENAME, 0); }
		public List name() {
			return getRuleContexts(NameContext.class);
		}
		public NameContext name(int i) {
			return getRuleContext(NameContext.class,i);
		}
		public TerminalNode TO() { return getToken(OpenGaussStatementParser.TO, 0); }
		public TerminalNode COLUMN() { return getToken(OpenGaussStatementParser.COLUMN, 0); }
		public AlterRenameColumnContext(AlterViewClausesContext ctx) { copyFrom(ctx); }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitAlterRenameColumn(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AlterViewClausesContext alterViewClauses() throws RecognitionException {
		AlterViewClausesContext _localctx = new AlterViewClausesContext(_ctx, getState());
		enterRule(_localctx, 1148, RULE_alterViewClauses);
		int _la;
		try {
			setState(8328);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,751,_ctx) ) {
			case 1:
				_localctx = new AlterViewCmdsContext(_localctx);
				enterOuterAlt(_localctx, 1);
				{
				setState(8313);
				alterTableCmds();
				}
				break;
			case 2:
				_localctx = new AlterRenameViewContext(_localctx);
				enterOuterAlt(_localctx, 2);
				{
				setState(8314);
				match(RENAME);
				setState(8315);
				match(TO);
				setState(8316);
				name();
				}
				break;
			case 3:
				_localctx = new AlterRenameColumnContext(_localctx);
				enterOuterAlt(_localctx, 3);
				{
				setState(8317);
				match(RENAME);
				setState(8319);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==COLUMN) {
					{
					setState(8318);
					match(COLUMN);
					}
				}

				setState(8321);
				name();
				setState(8322);
				match(TO);
				setState(8323);
				name();
				}
				break;
			case 4:
				_localctx = new AlterSetSchemaContext(_localctx);
				enterOuterAlt(_localctx, 4);
				{
				setState(8325);
				match(SET);
				setState(8326);
				match(SCHEMA);
				setState(8327);
				name();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CloseContext extends ParserRuleContext {
		public TerminalNode CLOSE() { return getToken(OpenGaussStatementParser.CLOSE, 0); }
		public CursorNameContext cursorName() {
			return getRuleContext(CursorNameContext.class,0);
		}
		public TerminalNode ALL() { return getToken(OpenGaussStatementParser.ALL, 0); }
		public CloseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_close; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitClose(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CloseContext close() throws RecognitionException {
		CloseContext _localctx = new CloseContext(_ctx, getState());
		enterRule(_localctx, 1150, RULE_close);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(8330);
			match(CLOSE);
			setState(8333);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case UNICODE_ESCAPE:
			case INSERT:
			case UPDATE:
			case DELETE:
			case ALTER:
			case DROP:
			case TRUNCATE:
			case SCHEMA:
			case REVOKE:
			case ADD:
			case SET:
			case INDEX:
			case KEY:
			case POSITION:
			case FUNCTION:
			case TRIGGER:
			case PROCEDURE:
			case VIEW:
			case IF:
			case BY:
			case BEGIN:
			case COMMIT:
			case ROLLBACK:
			case SAVEPOINT:
			case DOUBLE:
			case INTERVAL:
			case TIME:
			case TIMESTAMP:
			case YEAR:
			case MONTH:
			case DAY:
			case HOUR:
			case MINUTE:
			case SECOND:
			case CURRENT:
			case ENABLE:
			case DISABLE:
			case CALL:
			case PRESERVE:
			case DEFINER:
			case SQL:
			case CASCADED:
			case LOCAL:
			case CLOSE:
			case NEXT:
			case NAME:
			case NAMES:
			case TYPE:
			case TEXT:
			case REPEATABLE:
			case VARYING:
			case NATIONAL:
			case VALUE:
			case TIES:
			case CUBE:
			case SETS:
			case OTHERS:
			case AT:
			case MAXVALUE:
			case ADMIN:
			case ESCAPE:
			case EXCLUDE:
			case MOD:
			case PARTITION:
			case UNKNOWN:
			case ALWAYS:
			case CASCADE:
			case GENERATED:
			case ISOLATION:
			case LEVEL:
			case NO:
			case OPTION:
			case PRIVILEGES:
			case READ:
			case ROLE:
			case ROWS:
			case START:
			case TRANSACTION:
			case ACTION:
			case CACHE:
			case CHARACTERISTICS:
			case CLUSTER:
			case COMMENTS:
			case CONSTRAINTS:
			case CYCLE:
			case DATA:
			case DATABASE:
			case DEFAULTS:
			case DEFERRED:
			case DEPENDS:
			case DOMAIN:
			case EXCLUDING:
			case EXECUTE:
			case EXTENDED:
			case EXTENSION:
			case EXTERNAL:
			case FILTER:
			case FIRST:
			case FOLLOWING:
			case FORCE:
			case GLOBAL:
			case IDENTITY:
			case IMMEDIATE:
			case INCLUDING:
			case INCREMENT:
			case INDEXES:
			case INHERIT:
			case INHERITS:
			case INCLUDE:
			case LANGUAGE:
			case LARGE:
			case LAST:
			case LOGGED:
			case MAIN:
			case MATCH:
			case MINVALUE:
			case NOTHING:
			case NULLS:
			case OBJECT:
			case OIDS:
			case OVER:
			case OWNED:
			case OWNER:
			case PARTIAL:
			case PLAIN:
			case PRECEDING:
			case RANGE:
			case RENAME:
			case REPLICA:
			case RESET:
			case RESTART:
			case RESTRICT:
			case ROUTINE:
			case RULE:
			case SECURITY:
			case SEQUENCE:
			case SESSION:
			case SHOW:
			case SIMPLE:
			case STATISTICS:
			case STORAGE:
			case TABLESPACE:
			case TEMP:
			case TEMPORARY:
			case UNBOUNDED:
			case UNLOGGED:
			case VALID:
			case VALIDATE:
			case WITHIN:
			case WITHOUT:
			case ZONE:
			case OF:
			case UESCAPE:
			case GROUPS:
			case RECURSIVE:
			case INT2:
			case INT4:
			case FLOAT4:
			case BYTEA:
			case ENUM:
			case POINT:
			case LSEG:
			case BOX:
			case PATH:
			case POLYGON:
			case CIRCLE:
			case INET:
			case TSQUERY:
			case XML:
			case JSON:
			case INT4RANGE:
			case INT8RANGE:
			case NUMRANGE:
			case DATERANGE:
			case ORDINALITY:
			case NFC:
			case NFD:
			case NFKC:
			case NFKD:
			case REF:
			case PASSING:
			case VERSION:
			case YES:
			case STANDALONE:
			case MATERIALIZED:
			case OPERATOR:
			case SHARE:
			case ROLLUP:
			case DOCUMENT:
			case NORMALIZED:
			case NOWAIT:
			case LOCKED:
			case COLUMNS:
			case CONTENT:
			case STRIP:
			case WHITESPACE:
			case CONFLICT:
			case OVERRIDING:
			case SYSTEM:
			case ABORT:
			case ABSOLUTE:
			case ACCESS:
			case AFTER:
			case AGGREGATE:
			case ALSO:
			case ATTACH:
			case ATTRIBUTE:
			case BACKWARD:
			case BEFORE:
			case ASSERTION:
			case ASSIGNMENT:
			case CONTINUE:
			case CONVERSION:
			case COPY:
			case COST:
			case CSV:
			case CALLED:
			case CATALOG:
			case CHAIN:
			case CHECKPOINT:
			case CLASS:
			case CONFIGURATION:
			case COMMENT:
			case DETACH:
			case DICTIONARY:
			case EXPRESSION:
			case INSENSITIVE:
			case DISCARD:
			case OFF:
			case INSTEAD:
			case EXPLAIN:
			case INPUT:
			case INLINE:
			case PARALLEL:
			case LEAKPROOF:
			case COMMITTED:
			case ENCODING:
			case IMPLICIT:
			case DELIMITER:
			case CURSOR:
			case EACH:
			case EVENT:
			case DEALLOCATE:
			case CONNECTION:
			case DECLARE:
			case FAMILY:
			case FORWARD:
			case EXCLUSIVE:
			case FUNCTIONS:
			case LOCATION:
			case LABEL:
			case DELIMITERS:
			case HANDLER:
			case HEADER:
			case IMMUTABLE:
			case GRANTED:
			case HOLD:
			case MAPPING:
			case OLD:
			case METHOD:
			case LOAD:
			case LISTEN:
			case MODE:
			case MOVE:
			case PROCEDURAL:
			case PARSER:
			case PROCEDURES:
			case ENCRYPTED:
			case PUBLICATION:
			case PROGRAM:
			case REFERENCING:
			case PLANS:
			case REINDEX:
			case PRIOR:
			case PASSWORD:
			case RELATIVE:
			case QUOTE:
			case ROUTINES:
			case REPLACE:
			case SNAPSHOT:
			case REFRESH:
			case PREPARE:
			case OPTIONS:
			case IMPORT:
			case INVOKER:
			case NEW:
			case PREPARED:
			case SCROLL:
			case SEQUENCES:
			case SYSID:
			case REASSIGN:
			case SERVER:
			case SUBSCRIPTION:
			case SEARCH:
			case SCHEMAS:
			case RECHECK:
			case POLICY:
			case NOTIFY:
			case LOCK:
			case RELEASE:
			case SERIALIZABLE:
			case RETURNS:
			case STATEMENT:
			case STDIN:
			case STDOUT:
			case TABLES:
			case SUPPORT:
			case STABLE:
			case TEMPLATE:
			case UNENCRYPTED:
			case VIEWS:
			case UNCOMMITTED:
			case TRANSFORM:
			case UNLISTEN:
			case TRUSTED:
			case VALIDATOR:
			case UNTIL:
			case VACUUM:
			case VOLATILE:
			case STORED:
			case WRITE:
			case STRICT:
			case TYPES:
			case WRAPPER:
			case WORK:
			case INT16:
			case INT1:
			case ELEM_CONTAINED_BY_RANGE:
			case IDENTIFIER_:
				{
				setState(8331);
				cursorName();
				}
				break;
			case ALL:
				{
				setState(8332);
				match(ALL);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ClusterContext extends ParserRuleContext {
		public TerminalNode CLUSTER() { return getToken(OpenGaussStatementParser.CLUSTER, 0); }
		public TerminalNode VERBOSE() { return getToken(OpenGaussStatementParser.VERBOSE, 0); }
		public QualifiedNameContext qualifiedName() {
			return getRuleContext(QualifiedNameContext.class,0);
		}
		public NameContext name() {
			return getRuleContext(NameContext.class,0);
		}
		public TerminalNode ON() { return getToken(OpenGaussStatementParser.ON, 0); }
		public ClusterIndexSpecificationContext clusterIndexSpecification() {
			return getRuleContext(ClusterIndexSpecificationContext.class,0);
		}
		public ClusterContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_cluster; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitCluster(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ClusterContext cluster() throws RecognitionException {
		ClusterContext _localctx = new ClusterContext(_ctx, getState());
		enterRule(_localctx, 1152, RULE_cluster);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(8335);
			match(CLUSTER);
			setState(8337);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==VERBOSE) {
				{
				setState(8336);
				match(VERBOSE);
				}
			}

			setState(8347);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,755,_ctx) ) {
			case 1:
				{
				setState(8339);
				qualifiedName();
				setState(8341);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==USING) {
					{
					setState(8340);
					clusterIndexSpecification();
					}
				}

				}
				break;
			case 2:
				{
				setState(8343);
				name();
				setState(8344);
				match(ON);
				setState(8345);
				qualifiedName();
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ClusterIndexSpecificationContext extends ParserRuleContext {
		public TerminalNode USING() { return getToken(OpenGaussStatementParser.USING, 0); }
		public NameContext name() {
			return getRuleContext(NameContext.class,0);
		}
		public ClusterIndexSpecificationContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_clusterIndexSpecification; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitClusterIndexSpecification(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ClusterIndexSpecificationContext clusterIndexSpecification() throws RecognitionException {
		ClusterIndexSpecificationContext _localctx = new ClusterIndexSpecificationContext(_ctx, getState());
		enterRule(_localctx, 1154, RULE_clusterIndexSpecification);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(8349);
			match(USING);
			setState(8350);
			name();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CommentContext extends ParserRuleContext {
		public TerminalNode COMMENT() { return getToken(OpenGaussStatementParser.COMMENT, 0); }
		public TerminalNode ON() { return getToken(OpenGaussStatementParser.ON, 0); }
		public CommentClausesContext commentClauses() {
			return getRuleContext(CommentClausesContext.class,0);
		}
		public CommentContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_comment; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitComment(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CommentContext comment() throws RecognitionException {
		CommentContext _localctx = new CommentContext(_ctx, getState());
		enterRule(_localctx, 1156, RULE_comment);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(8352);
			match(COMMENT);
			setState(8353);
			match(ON);
			setState(8354);
			commentClauses();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CommentClausesContext extends ParserRuleContext {
		public ObjectTypeAnyNameContext objectTypeAnyName() {
			return getRuleContext(ObjectTypeAnyNameContext.class,0);
		}
		public AnyNameContext anyName() {
			return getRuleContext(AnyNameContext.class,0);
		}
		public TerminalNode IS() { return getToken(OpenGaussStatementParser.IS, 0); }
		public CommentTextContext commentText() {
			return getRuleContext(CommentTextContext.class,0);
		}
		public TerminalNode COLUMN() { return getToken(OpenGaussStatementParser.COLUMN, 0); }
		public ObjectTypeNameContext objectTypeName() {
			return getRuleContext(ObjectTypeNameContext.class,0);
		}
		public NameContext name() {
			return getRuleContext(NameContext.class,0);
		}
		public TerminalNode TYPE() { return getToken(OpenGaussStatementParser.TYPE, 0); }
		public List typeName() {
			return getRuleContexts(TypeNameContext.class);
		}
		public TypeNameContext typeName(int i) {
			return getRuleContext(TypeNameContext.class,i);
		}
		public TerminalNode DOMAIN() { return getToken(OpenGaussStatementParser.DOMAIN, 0); }
		public TerminalNode AGGREGATE() { return getToken(OpenGaussStatementParser.AGGREGATE, 0); }
		public AggregateWithArgtypesContext aggregateWithArgtypes() {
			return getRuleContext(AggregateWithArgtypesContext.class,0);
		}
		public TerminalNode FUNCTION() { return getToken(OpenGaussStatementParser.FUNCTION, 0); }
		public FunctionWithArgtypesContext functionWithArgtypes() {
			return getRuleContext(FunctionWithArgtypesContext.class,0);
		}
		public TerminalNode OPERATOR() { return getToken(OpenGaussStatementParser.OPERATOR, 0); }
		public OperatorWithArgtypesContext operatorWithArgtypes() {
			return getRuleContext(OperatorWithArgtypesContext.class,0);
		}
		public TerminalNode CONSTRAINT() { return getToken(OpenGaussStatementParser.CONSTRAINT, 0); }
		public TerminalNode ON() { return getToken(OpenGaussStatementParser.ON, 0); }
		public ObjectTypeNameOnAnyNameContext objectTypeNameOnAnyName() {
			return getRuleContext(ObjectTypeNameOnAnyNameContext.class,0);
		}
		public TerminalNode PROCEDURE() { return getToken(OpenGaussStatementParser.PROCEDURE, 0); }
		public TerminalNode ROUTINE() { return getToken(OpenGaussStatementParser.ROUTINE, 0); }
		public TerminalNode TRANSFORM() { return getToken(OpenGaussStatementParser.TRANSFORM, 0); }
		public TerminalNode FOR() { return getToken(OpenGaussStatementParser.FOR, 0); }
		public TerminalNode LANGUAGE() { return getToken(OpenGaussStatementParser.LANGUAGE, 0); }
		public TerminalNode CLASS() { return getToken(OpenGaussStatementParser.CLASS, 0); }
		public TerminalNode USING() { return getToken(OpenGaussStatementParser.USING, 0); }
		public TerminalNode FAMILY() { return getToken(OpenGaussStatementParser.FAMILY, 0); }
		public TerminalNode LARGE() { return getToken(OpenGaussStatementParser.LARGE, 0); }
		public TerminalNode OBJECT() { return getToken(OpenGaussStatementParser.OBJECT, 0); }
		public NumericOnlyContext numericOnly() {
			return getRuleContext(NumericOnlyContext.class,0);
		}
		public TerminalNode CAST() { return getToken(OpenGaussStatementParser.CAST, 0); }
		public TerminalNode LP_() { return getToken(OpenGaussStatementParser.LP_, 0); }
		public TerminalNode AS() { return getToken(OpenGaussStatementParser.AS, 0); }
		public TerminalNode RP_() { return getToken(OpenGaussStatementParser.RP_, 0); }
		public CommentClausesContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_commentClauses; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitCommentClauses(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CommentClausesContext commentClauses() throws RecognitionException {
		CommentClausesContext _localctx = new CommentClausesContext(_ctx, getState());
		enterRule(_localctx, 1158, RULE_commentClauses);
		try {
			setState(8467);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,756,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(8356);
				objectTypeAnyName();
				setState(8357);
				anyName();
				setState(8358);
				match(IS);
				setState(8359);
				commentText();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(8361);
				match(COLUMN);
				setState(8362);
				anyName();
				setState(8363);
				match(IS);
				setState(8364);
				commentText();
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(8366);
				objectTypeName();
				setState(8367);
				name();
				setState(8368);
				match(IS);
				setState(8369);
				commentText();
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(8371);
				match(TYPE);
				setState(8372);
				typeName();
				setState(8373);
				match(IS);
				setState(8374);
				commentText();
				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(8376);
				match(DOMAIN);
				setState(8377);
				typeName();
				setState(8378);
				match(IS);
				setState(8379);
				commentText();
				}
				break;
			case 6:
				enterOuterAlt(_localctx, 6);
				{
				setState(8381);
				match(AGGREGATE);
				setState(8382);
				aggregateWithArgtypes();
				setState(8383);
				match(IS);
				setState(8384);
				commentText();
				}
				break;
			case 7:
				enterOuterAlt(_localctx, 7);
				{
				setState(8386);
				match(FUNCTION);
				setState(8387);
				functionWithArgtypes();
				setState(8388);
				match(IS);
				setState(8389);
				commentText();
				}
				break;
			case 8:
				enterOuterAlt(_localctx, 8);
				{
				setState(8391);
				match(OPERATOR);
				setState(8392);
				operatorWithArgtypes();
				setState(8393);
				match(IS);
				setState(8394);
				commentText();
				}
				break;
			case 9:
				enterOuterAlt(_localctx, 9);
				{
				setState(8396);
				match(CONSTRAINT);
				setState(8397);
				name();
				setState(8398);
				match(ON);
				setState(8399);
				anyName();
				setState(8400);
				match(IS);
				setState(8401);
				commentText();
				}
				break;
			case 10:
				enterOuterAlt(_localctx, 10);
				{
				setState(8403);
				match(CONSTRAINT);
				setState(8404);
				name();
				setState(8405);
				match(ON);
				setState(8406);
				match(DOMAIN);
				setState(8407);
				anyName();
				setState(8408);
				match(IS);
				setState(8409);
				commentText();
				}
				break;
			case 11:
				enterOuterAlt(_localctx, 11);
				{
				setState(8411);
				objectTypeNameOnAnyName();
				setState(8412);
				name();
				setState(8413);
				match(ON);
				setState(8414);
				anyName();
				setState(8415);
				match(IS);
				setState(8416);
				commentText();
				}
				break;
			case 12:
				enterOuterAlt(_localctx, 12);
				{
				setState(8418);
				match(PROCEDURE);
				setState(8419);
				functionWithArgtypes();
				setState(8420);
				match(IS);
				setState(8421);
				commentText();
				}
				break;
			case 13:
				enterOuterAlt(_localctx, 13);
				{
				setState(8423);
				match(ROUTINE);
				setState(8424);
				functionWithArgtypes();
				setState(8425);
				match(IS);
				setState(8426);
				commentText();
				}
				break;
			case 14:
				enterOuterAlt(_localctx, 14);
				{
				setState(8428);
				match(TRANSFORM);
				setState(8429);
				match(FOR);
				setState(8430);
				typeName();
				setState(8431);
				match(LANGUAGE);
				setState(8432);
				name();
				setState(8433);
				match(IS);
				setState(8434);
				commentText();
				}
				break;
			case 15:
				enterOuterAlt(_localctx, 15);
				{
				setState(8436);
				match(OPERATOR);
				setState(8437);
				match(CLASS);
				setState(8438);
				anyName();
				setState(8439);
				match(USING);
				setState(8440);
				name();
				setState(8441);
				match(IS);
				setState(8442);
				commentText();
				}
				break;
			case 16:
				enterOuterAlt(_localctx, 16);
				{
				setState(8444);
				match(OPERATOR);
				setState(8445);
				match(FAMILY);
				setState(8446);
				anyName();
				setState(8447);
				match(USING);
				setState(8448);
				name();
				setState(8449);
				match(IS);
				setState(8450);
				commentText();
				}
				break;
			case 17:
				enterOuterAlt(_localctx, 17);
				{
				setState(8452);
				match(LARGE);
				setState(8453);
				match(OBJECT);
				setState(8454);
				numericOnly();
				setState(8455);
				match(IS);
				setState(8456);
				commentText();
				}
				break;
			case 18:
				enterOuterAlt(_localctx, 18);
				{
				setState(8458);
				match(CAST);
				setState(8459);
				match(LP_);
				setState(8460);
				typeName();
				setState(8461);
				match(AS);
				setState(8462);
				typeName();
				setState(8463);
				match(RP_);
				setState(8464);
				match(IS);
				setState(8465);
				commentText();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ObjectTypeNameOnAnyNameContext extends ParserRuleContext {
		public TerminalNode POLICY() { return getToken(OpenGaussStatementParser.POLICY, 0); }
		public TerminalNode RULE() { return getToken(OpenGaussStatementParser.RULE, 0); }
		public TerminalNode TRIGGER() { return getToken(OpenGaussStatementParser.TRIGGER, 0); }
		public ObjectTypeNameOnAnyNameContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_objectTypeNameOnAnyName; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitObjectTypeNameOnAnyName(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ObjectTypeNameOnAnyNameContext objectTypeNameOnAnyName() throws RecognitionException {
		ObjectTypeNameOnAnyNameContext _localctx = new ObjectTypeNameOnAnyNameContext(_ctx, getState());
		enterRule(_localctx, 1160, RULE_objectTypeNameOnAnyName);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(8469);
			_la = _input.LA(1);
			if ( !(_la==TRIGGER || _la==RULE || _la==POLICY) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ObjectTypeNameContext extends ParserRuleContext {
		public DropTypeNameContext dropTypeName() {
			return getRuleContext(DropTypeNameContext.class,0);
		}
		public TerminalNode DATABASE() { return getToken(OpenGaussStatementParser.DATABASE, 0); }
		public TerminalNode ROLE() { return getToken(OpenGaussStatementParser.ROLE, 0); }
		public TerminalNode SUBSCRIPTION() { return getToken(OpenGaussStatementParser.SUBSCRIPTION, 0); }
		public TerminalNode TABLESPACE() { return getToken(OpenGaussStatementParser.TABLESPACE, 0); }
		public ObjectTypeNameContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_objectTypeName; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitObjectTypeName(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ObjectTypeNameContext objectTypeName() throws RecognitionException {
		ObjectTypeNameContext _localctx = new ObjectTypeNameContext(_ctx, getState());
		enterRule(_localctx, 1162, RULE_objectTypeName);
		try {
			setState(8476);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case SCHEMA:
			case FOREIGN:
			case EXTENSION:
			case LANGUAGE:
			case ACCESS:
			case EVENT:
			case PROCEDURAL:
			case PUBLICATION:
			case SERVER:
				enterOuterAlt(_localctx, 1);
				{
				setState(8471);
				dropTypeName();
				}
				break;
			case DATABASE:
				enterOuterAlt(_localctx, 2);
				{
				setState(8472);
				match(DATABASE);
				}
				break;
			case ROLE:
				enterOuterAlt(_localctx, 3);
				{
				setState(8473);
				match(ROLE);
				}
				break;
			case SUBSCRIPTION:
				enterOuterAlt(_localctx, 4);
				{
				setState(8474);
				match(SUBSCRIPTION);
				}
				break;
			case TABLESPACE:
				enterOuterAlt(_localctx, 5);
				{
				setState(8475);
				match(TABLESPACE);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DropTypeNameContext extends ParserRuleContext {
		public TerminalNode ACCESS() { return getToken(OpenGaussStatementParser.ACCESS, 0); }
		public TerminalNode METHOD() { return getToken(OpenGaussStatementParser.METHOD, 0); }
		public TerminalNode EVENT() { return getToken(OpenGaussStatementParser.EVENT, 0); }
		public TerminalNode TRIGGER() { return getToken(OpenGaussStatementParser.TRIGGER, 0); }
		public TerminalNode EXTENSION() { return getToken(OpenGaussStatementParser.EXTENSION, 0); }
		public TerminalNode FOREIGN() { return getToken(OpenGaussStatementParser.FOREIGN, 0); }
		public TerminalNode DATA() { return getToken(OpenGaussStatementParser.DATA, 0); }
		public TerminalNode WRAPPER() { return getToken(OpenGaussStatementParser.WRAPPER, 0); }
		public TerminalNode LANGUAGE() { return getToken(OpenGaussStatementParser.LANGUAGE, 0); }
		public TerminalNode PROCEDURAL() { return getToken(OpenGaussStatementParser.PROCEDURAL, 0); }
		public TerminalNode PUBLICATION() { return getToken(OpenGaussStatementParser.PUBLICATION, 0); }
		public TerminalNode SCHEMA() { return getToken(OpenGaussStatementParser.SCHEMA, 0); }
		public TerminalNode SERVER() { return getToken(OpenGaussStatementParser.SERVER, 0); }
		public DropTypeNameContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_dropTypeName; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitDropTypeName(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DropTypeNameContext dropTypeName() throws RecognitionException {
		DropTypeNameContext _localctx = new DropTypeNameContext(_ctx, getState());
		enterRule(_localctx, 1164, RULE_dropTypeName);
		int _la;
		try {
			setState(8493);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case ACCESS:
				enterOuterAlt(_localctx, 1);
				{
				setState(8478);
				match(ACCESS);
				setState(8479);
				match(METHOD);
				}
				break;
			case EVENT:
				enterOuterAlt(_localctx, 2);
				{
				setState(8480);
				match(EVENT);
				setState(8481);
				match(TRIGGER);
				}
				break;
			case EXTENSION:
				enterOuterAlt(_localctx, 3);
				{
				setState(8482);
				match(EXTENSION);
				}
				break;
			case FOREIGN:
				enterOuterAlt(_localctx, 4);
				{
				setState(8483);
				match(FOREIGN);
				setState(8484);
				match(DATA);
				setState(8485);
				match(WRAPPER);
				}
				break;
			case LANGUAGE:
			case PROCEDURAL:
				enterOuterAlt(_localctx, 5);
				{
				setState(8487);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==PROCEDURAL) {
					{
					setState(8486);
					match(PROCEDURAL);
					}
				}

				setState(8489);
				match(LANGUAGE);
				}
				break;
			case PUBLICATION:
				enterOuterAlt(_localctx, 6);
				{
				setState(8490);
				match(PUBLICATION);
				}
				break;
			case SCHEMA:
				enterOuterAlt(_localctx, 7);
				{
				setState(8491);
				match(SCHEMA);
				}
				break;
			case SERVER:
				enterOuterAlt(_localctx, 8);
				{
				setState(8492);
				match(SERVER);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ObjectTypeAnyNameContext extends ParserRuleContext {
		public TerminalNode TABLE() { return getToken(OpenGaussStatementParser.TABLE, 0); }
		public TerminalNode SEQUENCE() { return getToken(OpenGaussStatementParser.SEQUENCE, 0); }
		public TerminalNode VIEW() { return getToken(OpenGaussStatementParser.VIEW, 0); }
		public TerminalNode MATERIALIZED() { return getToken(OpenGaussStatementParser.MATERIALIZED, 0); }
		public TerminalNode INDEX() { return getToken(OpenGaussStatementParser.INDEX, 0); }
		public TerminalNode FOREIGN() { return getToken(OpenGaussStatementParser.FOREIGN, 0); }
		public TerminalNode COLLATION() { return getToken(OpenGaussStatementParser.COLLATION, 0); }
		public TerminalNode CONVERSION() { return getToken(OpenGaussStatementParser.CONVERSION, 0); }
		public TerminalNode STATISTICS() { return getToken(OpenGaussStatementParser.STATISTICS, 0); }
		public TerminalNode TEXT() { return getToken(OpenGaussStatementParser.TEXT, 0); }
		public TerminalNode SEARCH() { return getToken(OpenGaussStatementParser.SEARCH, 0); }
		public TerminalNode PARSER() { return getToken(OpenGaussStatementParser.PARSER, 0); }
		public TerminalNode DICTIONARY() { return getToken(OpenGaussStatementParser.DICTIONARY, 0); }
		public TerminalNode TEMPLATE() { return getToken(OpenGaussStatementParser.TEMPLATE, 0); }
		public TerminalNode CONFIGURATION() { return getToken(OpenGaussStatementParser.CONFIGURATION, 0); }
		public ObjectTypeAnyNameContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_objectTypeAnyName; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitObjectTypeAnyName(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ObjectTypeAnyNameContext objectTypeAnyName() throws RecognitionException {
		ObjectTypeAnyNameContext _localctx = new ObjectTypeAnyNameContext(_ctx, getState());
		enterRule(_localctx, 1166, RULE_objectTypeAnyName);
		try {
			setState(8518);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,760,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(8495);
				match(TABLE);
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(8496);
				match(SEQUENCE);
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(8497);
				match(VIEW);
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(8498);
				match(MATERIALIZED);
				setState(8499);
				match(VIEW);
				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(8500);
				match(INDEX);
				}
				break;
			case 6:
				enterOuterAlt(_localctx, 6);
				{
				setState(8501);
				match(FOREIGN);
				setState(8502);
				match(TABLE);
				}
				break;
			case 7:
				enterOuterAlt(_localctx, 7);
				{
				setState(8503);
				match(COLLATION);
				}
				break;
			case 8:
				enterOuterAlt(_localctx, 8);
				{
				setState(8504);
				match(CONVERSION);
				}
				break;
			case 9:
				enterOuterAlt(_localctx, 9);
				{
				setState(8505);
				match(STATISTICS);
				}
				break;
			case 10:
				enterOuterAlt(_localctx, 10);
				{
				setState(8506);
				match(TEXT);
				setState(8507);
				match(SEARCH);
				setState(8508);
				match(PARSER);
				}
				break;
			case 11:
				enterOuterAlt(_localctx, 11);
				{
				setState(8509);
				match(TEXT);
				setState(8510);
				match(SEARCH);
				setState(8511);
				match(DICTIONARY);
				}
				break;
			case 12:
				enterOuterAlt(_localctx, 12);
				{
				setState(8512);
				match(TEXT);
				setState(8513);
				match(SEARCH);
				setState(8514);
				match(TEMPLATE);
				}
				break;
			case 13:
				enterOuterAlt(_localctx, 13);
				{
				setState(8515);
				match(TEXT);
				setState(8516);
				match(SEARCH);
				setState(8517);
				match(CONFIGURATION);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CommentTextContext extends ParserRuleContext {
		public TerminalNode STRING_() { return getToken(OpenGaussStatementParser.STRING_, 0); }
		public TerminalNode NULL() { return getToken(OpenGaussStatementParser.NULL, 0); }
		public CommentTextContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_commentText; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitCommentText(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CommentTextContext commentText() throws RecognitionException {
		CommentTextContext _localctx = new CommentTextContext(_ctx, getState());
		enterRule(_localctx, 1168, RULE_commentText);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(8520);
			_la = _input.LA(1);
			if ( !(_la==NULL || _la==STRING_) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CreateAccessMethodContext extends ParserRuleContext {
		public TerminalNode CREATE() { return getToken(OpenGaussStatementParser.CREATE, 0); }
		public TerminalNode ACCESS() { return getToken(OpenGaussStatementParser.ACCESS, 0); }
		public TerminalNode METHOD() { return getToken(OpenGaussStatementParser.METHOD, 0); }
		public NameContext name() {
			return getRuleContext(NameContext.class,0);
		}
		public TerminalNode TYPE() { return getToken(OpenGaussStatementParser.TYPE, 0); }
		public TerminalNode HANDLER() { return getToken(OpenGaussStatementParser.HANDLER, 0); }
		public HandlerNameContext handlerName() {
			return getRuleContext(HandlerNameContext.class,0);
		}
		public TerminalNode INDEX() { return getToken(OpenGaussStatementParser.INDEX, 0); }
		public TerminalNode TABLE() { return getToken(OpenGaussStatementParser.TABLE, 0); }
		public CreateAccessMethodContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_createAccessMethod; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitCreateAccessMethod(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CreateAccessMethodContext createAccessMethod() throws RecognitionException {
		CreateAccessMethodContext _localctx = new CreateAccessMethodContext(_ctx, getState());
		enterRule(_localctx, 1170, RULE_createAccessMethod);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(8522);
			match(CREATE);
			setState(8523);
			match(ACCESS);
			setState(8524);
			match(METHOD);
			setState(8525);
			name();
			setState(8526);
			match(TYPE);
			setState(8527);
			_la = _input.LA(1);
			if ( !(_la==TABLE || _la==INDEX) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			setState(8528);
			match(HANDLER);
			setState(8529);
			handlerName();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CreateAggregateContext extends ParserRuleContext {
		public TerminalNode CREATE() { return getToken(OpenGaussStatementParser.CREATE, 0); }
		public TerminalNode AGGREGATE() { return getToken(OpenGaussStatementParser.AGGREGATE, 0); }
		public FuncNameContext funcName() {
			return getRuleContext(FuncNameContext.class,0);
		}
		public AggrArgsContext aggrArgs() {
			return getRuleContext(AggrArgsContext.class,0);
		}
		public DefinitionContext definition() {
			return getRuleContext(DefinitionContext.class,0);
		}
		public OldAggrDefinitionContext oldAggrDefinition() {
			return getRuleContext(OldAggrDefinitionContext.class,0);
		}
		public CreateAggregateContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_createAggregate; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitCreateAggregate(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CreateAggregateContext createAggregate() throws RecognitionException {
		CreateAggregateContext _localctx = new CreateAggregateContext(_ctx, getState());
		enterRule(_localctx, 1172, RULE_createAggregate);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(8531);
			match(CREATE);
			setState(8532);
			match(AGGREGATE);
			setState(8533);
			funcName();
			setState(8538);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,761,_ctx) ) {
			case 1:
				{
				setState(8534);
				aggrArgs();
				setState(8535);
				definition();
				}
				break;
			case 2:
				{
				setState(8537);
				oldAggrDefinition();
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class OldAggrDefinitionContext extends ParserRuleContext {
		public TerminalNode LP_() { return getToken(OpenGaussStatementParser.LP_, 0); }
		public OldAggrListContext oldAggrList() {
			return getRuleContext(OldAggrListContext.class,0);
		}
		public TerminalNode RP_() { return getToken(OpenGaussStatementParser.RP_, 0); }
		public OldAggrDefinitionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_oldAggrDefinition; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitOldAggrDefinition(this);
			else return visitor.visitChildren(this);
		}
	}

	public final OldAggrDefinitionContext oldAggrDefinition() throws RecognitionException {
		OldAggrDefinitionContext _localctx = new OldAggrDefinitionContext(_ctx, getState());
		enterRule(_localctx, 1174, RULE_oldAggrDefinition);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(8540);
			match(LP_);
			setState(8541);
			oldAggrList();
			setState(8542);
			match(RP_);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class OldAggrListContext extends ParserRuleContext {
		public List oldAggrElem() {
			return getRuleContexts(OldAggrElemContext.class);
		}
		public OldAggrElemContext oldAggrElem(int i) {
			return getRuleContext(OldAggrElemContext.class,i);
		}
		public List COMMA_() { return getTokens(OpenGaussStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(OpenGaussStatementParser.COMMA_, i);
		}
		public OldAggrListContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_oldAggrList; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitOldAggrList(this);
			else return visitor.visitChildren(this);
		}
	}

	public final OldAggrListContext oldAggrList() throws RecognitionException {
		OldAggrListContext _localctx = new OldAggrListContext(_ctx, getState());
		enterRule(_localctx, 1176, RULE_oldAggrList);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(8544);
			oldAggrElem();
			setState(8549);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA_) {
				{
				{
				setState(8545);
				match(COMMA_);
				setState(8546);
				oldAggrElem();
				}
				}
				setState(8551);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class OldAggrElemContext extends ParserRuleContext {
		public IdentifierContext identifier() {
			return getRuleContext(IdentifierContext.class,0);
		}
		public TerminalNode EQ_() { return getToken(OpenGaussStatementParser.EQ_, 0); }
		public DefArgContext defArg() {
			return getRuleContext(DefArgContext.class,0);
		}
		public OldAggrElemContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_oldAggrElem; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitOldAggrElem(this);
			else return visitor.visitChildren(this);
		}
	}

	public final OldAggrElemContext oldAggrElem() throws RecognitionException {
		OldAggrElemContext _localctx = new OldAggrElemContext(_ctx, getState());
		enterRule(_localctx, 1178, RULE_oldAggrElem);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(8552);
			identifier();
			setState(8553);
			match(EQ_);
			setState(8554);
			defArg();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CreateCastContext extends ParserRuleContext {
		public TerminalNode CREATE() { return getToken(OpenGaussStatementParser.CREATE, 0); }
		public TerminalNode CAST() { return getToken(OpenGaussStatementParser.CAST, 0); }
		public TerminalNode LP_() { return getToken(OpenGaussStatementParser.LP_, 0); }
		public List typeName() {
			return getRuleContexts(TypeNameContext.class);
		}
		public TypeNameContext typeName(int i) {
			return getRuleContext(TypeNameContext.class,i);
		}
		public TerminalNode AS() { return getToken(OpenGaussStatementParser.AS, 0); }
		public TerminalNode RP_() { return getToken(OpenGaussStatementParser.RP_, 0); }
		public TerminalNode WITH() { return getToken(OpenGaussStatementParser.WITH, 0); }
		public TerminalNode FUNCTION() { return getToken(OpenGaussStatementParser.FUNCTION, 0); }
		public FuncArgsContext funcArgs() {
			return getRuleContext(FuncArgsContext.class,0);
		}
		public TerminalNode WITHOUT() { return getToken(OpenGaussStatementParser.WITHOUT, 0); }
		public TerminalNode INOUT() { return getToken(OpenGaussStatementParser.INOUT, 0); }
		public CastContextContext castContext() {
			return getRuleContext(CastContextContext.class,0);
		}
		public FuncNameContext funcName() {
			return getRuleContext(FuncNameContext.class,0);
		}
		public DataTypeNameContext dataTypeName() {
			return getRuleContext(DataTypeNameContext.class,0);
		}
		public CreateCastContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_createCast; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitCreateCast(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CreateCastContext createCast() throws RecognitionException {
		CreateCastContext _localctx = new CreateCastContext(_ctx, getState());
		enterRule(_localctx, 1180, RULE_createCast);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(8556);
			match(CREATE);
			setState(8557);
			match(CAST);
			setState(8558);
			match(LP_);
			setState(8559);
			typeName();
			setState(8560);
			match(AS);
			setState(8561);
			typeName();
			setState(8562);
			match(RP_);
			setState(8576);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,764,_ctx) ) {
			case 1:
				{
				}
				break;
			case 2:
				{
				setState(8564);
				match(WITH);
				setState(8565);
				match(FUNCTION);
				setState(8568);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,763,_ctx) ) {
				case 1:
					{
					setState(8566);
					funcName();
					}
					break;
				case 2:
					{
					setState(8567);
					dataTypeName();
					}
					break;
				}
				setState(8570);
				funcArgs();
				}
				break;
			case 3:
				{
				setState(8572);
				match(WITHOUT);
				setState(8573);
				match(FUNCTION);
				}
				break;
			case 4:
				{
				setState(8574);
				match(WITH);
				setState(8575);
				match(INOUT);
				}
				break;
			}
			setState(8579);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==AS) {
				{
				setState(8578);
				castContext();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CastContextContext extends ParserRuleContext {
		public TerminalNode AS() { return getToken(OpenGaussStatementParser.AS, 0); }
		public TerminalNode ASSIGNMENT() { return getToken(OpenGaussStatementParser.ASSIGNMENT, 0); }
		public TerminalNode IMPLICIT() { return getToken(OpenGaussStatementParser.IMPLICIT, 0); }
		public CastContextContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_castContext; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitCastContext(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CastContextContext castContext() throws RecognitionException {
		CastContextContext _localctx = new CastContextContext(_ctx, getState());
		enterRule(_localctx, 1182, RULE_castContext);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(8581);
			match(AS);
			setState(8582);
			_la = _input.LA(1);
			if ( !(_la==ASSIGNMENT || _la==IMPLICIT) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CreateCollationContext extends ParserRuleContext {
		public TerminalNode CREATE() { return getToken(OpenGaussStatementParser.CREATE, 0); }
		public TerminalNode COLLATION() { return getToken(OpenGaussStatementParser.COLLATION, 0); }
		public List anyName() {
			return getRuleContexts(AnyNameContext.class);
		}
		public AnyNameContext anyName(int i) {
			return getRuleContext(AnyNameContext.class,i);
		}
		public DefinitionContext definition() {
			return getRuleContext(DefinitionContext.class,0);
		}
		public TerminalNode FROM() { return getToken(OpenGaussStatementParser.FROM, 0); }
		public IfNotExistsContext ifNotExists() {
			return getRuleContext(IfNotExistsContext.class,0);
		}
		public CreateCollationContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_createCollation; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitCreateCollation(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CreateCollationContext createCollation() throws RecognitionException {
		CreateCollationContext _localctx = new CreateCollationContext(_ctx, getState());
		enterRule(_localctx, 1184, RULE_createCollation);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(8584);
			match(CREATE);
			setState(8585);
			match(COLLATION);
			setState(8587);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,766,_ctx) ) {
			case 1:
				{
				setState(8586);
				ifNotExists();
				}
				break;
			}
			setState(8596);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,767,_ctx) ) {
			case 1:
				{
				setState(8589);
				anyName();
				setState(8590);
				definition();
				}
				break;
			case 2:
				{
				setState(8592);
				anyName();
				setState(8593);
				match(FROM);
				setState(8594);
				anyName();
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CreateConversionContext extends ParserRuleContext {
		public TerminalNode CREATE() { return getToken(OpenGaussStatementParser.CREATE, 0); }
		public TerminalNode CONVERSION() { return getToken(OpenGaussStatementParser.CONVERSION, 0); }
		public List anyName() {
			return getRuleContexts(AnyNameContext.class);
		}
		public AnyNameContext anyName(int i) {
			return getRuleContext(AnyNameContext.class,i);
		}
		public TerminalNode FOR() { return getToken(OpenGaussStatementParser.FOR, 0); }
		public List STRING_() { return getTokens(OpenGaussStatementParser.STRING_); }
		public TerminalNode STRING_(int i) {
			return getToken(OpenGaussStatementParser.STRING_, i);
		}
		public TerminalNode TO() { return getToken(OpenGaussStatementParser.TO, 0); }
		public TerminalNode FROM() { return getToken(OpenGaussStatementParser.FROM, 0); }
		public TerminalNode DEFAULT() { return getToken(OpenGaussStatementParser.DEFAULT, 0); }
		public CreateConversionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_createConversion; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitCreateConversion(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CreateConversionContext createConversion() throws RecognitionException {
		CreateConversionContext _localctx = new CreateConversionContext(_ctx, getState());
		enterRule(_localctx, 1186, RULE_createConversion);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(8598);
			match(CREATE);
			setState(8600);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==DEFAULT) {
				{
				setState(8599);
				match(DEFAULT);
				}
			}

			setState(8602);
			match(CONVERSION);
			setState(8603);
			anyName();
			setState(8604);
			match(FOR);
			setState(8605);
			match(STRING_);
			setState(8606);
			match(TO);
			setState(8607);
			match(STRING_);
			setState(8608);
			match(FROM);
			setState(8609);
			anyName();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CreateDomainContext extends ParserRuleContext {
		public TerminalNode CREATE() { return getToken(OpenGaussStatementParser.CREATE, 0); }
		public TerminalNode DOMAIN() { return getToken(OpenGaussStatementParser.DOMAIN, 0); }
		public AnyNameContext anyName() {
			return getRuleContext(AnyNameContext.class,0);
		}
		public TypeNameContext typeName() {
			return getRuleContext(TypeNameContext.class,0);
		}
		public ColQualListContext colQualList() {
			return getRuleContext(ColQualListContext.class,0);
		}
		public TerminalNode AS() { return getToken(OpenGaussStatementParser.AS, 0); }
		public CreateDomainContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_createDomain; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitCreateDomain(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CreateDomainContext createDomain() throws RecognitionException {
		CreateDomainContext _localctx = new CreateDomainContext(_ctx, getState());
		enterRule(_localctx, 1188, RULE_createDomain);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(8611);
			match(CREATE);
			setState(8612);
			match(DOMAIN);
			setState(8613);
			anyName();
			setState(8615);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==AS) {
				{
				setState(8614);
				match(AS);
				}
			}

			setState(8617);
			typeName();
			setState(8618);
			colQualList();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CreateEventTriggerContext extends ParserRuleContext {
		public TerminalNode CREATE() { return getToken(OpenGaussStatementParser.CREATE, 0); }
		public TerminalNode EVENT() { return getToken(OpenGaussStatementParser.EVENT, 0); }
		public TerminalNode TRIGGER() { return getToken(OpenGaussStatementParser.TRIGGER, 0); }
		public NameContext name() {
			return getRuleContext(NameContext.class,0);
		}
		public TerminalNode ON() { return getToken(OpenGaussStatementParser.ON, 0); }
		public ColLabelContext colLabel() {
			return getRuleContext(ColLabelContext.class,0);
		}
		public TerminalNode EXECUTE() { return getToken(OpenGaussStatementParser.EXECUTE, 0); }
		public FuncNameContext funcName() {
			return getRuleContext(FuncNameContext.class,0);
		}
		public TerminalNode LP_() { return getToken(OpenGaussStatementParser.LP_, 0); }
		public TerminalNode RP_() { return getToken(OpenGaussStatementParser.RP_, 0); }
		public TerminalNode FUNCTION() { return getToken(OpenGaussStatementParser.FUNCTION, 0); }
		public TerminalNode PROCEDURE() { return getToken(OpenGaussStatementParser.PROCEDURE, 0); }
		public TerminalNode WHEN() { return getToken(OpenGaussStatementParser.WHEN, 0); }
		public EventTriggerWhenListContext eventTriggerWhenList() {
			return getRuleContext(EventTriggerWhenListContext.class,0);
		}
		public CreateEventTriggerContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_createEventTrigger; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitCreateEventTrigger(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CreateEventTriggerContext createEventTrigger() throws RecognitionException {
		CreateEventTriggerContext _localctx = new CreateEventTriggerContext(_ctx, getState());
		enterRule(_localctx, 1190, RULE_createEventTrigger);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(8620);
			match(CREATE);
			setState(8621);
			match(EVENT);
			setState(8622);
			match(TRIGGER);
			setState(8623);
			name();
			setState(8624);
			match(ON);
			setState(8625);
			colLabel();
			setState(8628);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==WHEN) {
				{
				setState(8626);
				match(WHEN);
				setState(8627);
				eventTriggerWhenList();
				}
			}

			setState(8630);
			match(EXECUTE);
			setState(8631);
			_la = _input.LA(1);
			if ( !(_la==FUNCTION || _la==PROCEDURE) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			setState(8632);
			funcName();
			setState(8633);
			match(LP_);
			setState(8634);
			match(RP_);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class EventTriggerWhenListContext extends ParserRuleContext {
		public List eventTriggerWhenItem() {
			return getRuleContexts(EventTriggerWhenItemContext.class);
		}
		public EventTriggerWhenItemContext eventTriggerWhenItem(int i) {
			return getRuleContext(EventTriggerWhenItemContext.class,i);
		}
		public List AND() { return getTokens(OpenGaussStatementParser.AND); }
		public TerminalNode AND(int i) {
			return getToken(OpenGaussStatementParser.AND, i);
		}
		public EventTriggerWhenListContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_eventTriggerWhenList; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitEventTriggerWhenList(this);
			else return visitor.visitChildren(this);
		}
	}

	public final EventTriggerWhenListContext eventTriggerWhenList() throws RecognitionException {
		EventTriggerWhenListContext _localctx = new EventTriggerWhenListContext(_ctx, getState());
		enterRule(_localctx, 1192, RULE_eventTriggerWhenList);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(8636);
			eventTriggerWhenItem();
			setState(8641);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==AND) {
				{
				{
				setState(8637);
				match(AND);
				setState(8638);
				eventTriggerWhenItem();
				}
				}
				setState(8643);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class EventTriggerWhenItemContext extends ParserRuleContext {
		public ColIdContext colId() {
			return getRuleContext(ColIdContext.class,0);
		}
		public TerminalNode IN() { return getToken(OpenGaussStatementParser.IN, 0); }
		public TerminalNode LP_() { return getToken(OpenGaussStatementParser.LP_, 0); }
		public EventTriggerValueListContext eventTriggerValueList() {
			return getRuleContext(EventTriggerValueListContext.class,0);
		}
		public TerminalNode RP_() { return getToken(OpenGaussStatementParser.RP_, 0); }
		public EventTriggerWhenItemContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_eventTriggerWhenItem; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitEventTriggerWhenItem(this);
			else return visitor.visitChildren(this);
		}
	}

	public final EventTriggerWhenItemContext eventTriggerWhenItem() throws RecognitionException {
		EventTriggerWhenItemContext _localctx = new EventTriggerWhenItemContext(_ctx, getState());
		enterRule(_localctx, 1194, RULE_eventTriggerWhenItem);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(8644);
			colId();
			setState(8645);
			match(IN);
			setState(8646);
			match(LP_);
			setState(8647);
			eventTriggerValueList();
			setState(8648);
			match(RP_);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class EventTriggerValueListContext extends ParserRuleContext {
		public List STRING_() { return getTokens(OpenGaussStatementParser.STRING_); }
		public TerminalNode STRING_(int i) {
			return getToken(OpenGaussStatementParser.STRING_, i);
		}
		public List COMMA_() { return getTokens(OpenGaussStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(OpenGaussStatementParser.COMMA_, i);
		}
		public EventTriggerValueListContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_eventTriggerValueList; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitEventTriggerValueList(this);
			else return visitor.visitChildren(this);
		}
	}

	public final EventTriggerValueListContext eventTriggerValueList() throws RecognitionException {
		EventTriggerValueListContext _localctx = new EventTriggerValueListContext(_ctx, getState());
		enterRule(_localctx, 1196, RULE_eventTriggerValueList);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(8650);
			match(STRING_);
			setState(8655);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA_) {
				{
				{
				setState(8651);
				match(COMMA_);
				setState(8652);
				match(STRING_);
				}
				}
				setState(8657);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CreateExtensionContext extends ParserRuleContext {
		public TerminalNode CREATE() { return getToken(OpenGaussStatementParser.CREATE, 0); }
		public TerminalNode EXTENSION() { return getToken(OpenGaussStatementParser.EXTENSION, 0); }
		public NameContext name() {
			return getRuleContext(NameContext.class,0);
		}
		public CreateExtensionOptListContext createExtensionOptList() {
			return getRuleContext(CreateExtensionOptListContext.class,0);
		}
		public IfNotExistsContext ifNotExists() {
			return getRuleContext(IfNotExistsContext.class,0);
		}
		public TerminalNode WITH() { return getToken(OpenGaussStatementParser.WITH, 0); }
		public CreateExtensionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_createExtension; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitCreateExtension(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CreateExtensionContext createExtension() throws RecognitionException {
		CreateExtensionContext _localctx = new CreateExtensionContext(_ctx, getState());
		enterRule(_localctx, 1198, RULE_createExtension);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(8658);
			match(CREATE);
			setState(8659);
			match(EXTENSION);
			setState(8661);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,773,_ctx) ) {
			case 1:
				{
				setState(8660);
				ifNotExists();
				}
				break;
			}
			setState(8663);
			name();
			setState(8665);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==WITH) {
				{
				setState(8664);
				match(WITH);
				}
			}

			setState(8667);
			createExtensionOptList();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CreateExtensionOptListContext extends ParserRuleContext {
		public List createExtensionOptItem() {
			return getRuleContexts(CreateExtensionOptItemContext.class);
		}
		public CreateExtensionOptItemContext createExtensionOptItem(int i) {
			return getRuleContext(CreateExtensionOptItemContext.class,i);
		}
		public CreateExtensionOptListContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_createExtensionOptList; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitCreateExtensionOptList(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CreateExtensionOptListContext createExtensionOptList() throws RecognitionException {
		CreateExtensionOptListContext _localctx = new CreateExtensionOptListContext(_ctx, getState());
		enterRule(_localctx, 1200, RULE_createExtensionOptList);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(8672);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==SCHEMA || _la==FROM || _la==CASCADE || _la==VERSION) {
				{
				{
				setState(8669);
				createExtensionOptItem();
				}
				}
				setState(8674);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CreateExtensionOptItemContext extends ParserRuleContext {
		public TerminalNode SCHEMA() { return getToken(OpenGaussStatementParser.SCHEMA, 0); }
		public NameContext name() {
			return getRuleContext(NameContext.class,0);
		}
		public TerminalNode VERSION() { return getToken(OpenGaussStatementParser.VERSION, 0); }
		public NonReservedWordOrSconstContext nonReservedWordOrSconst() {
			return getRuleContext(NonReservedWordOrSconstContext.class,0);
		}
		public TerminalNode FROM() { return getToken(OpenGaussStatementParser.FROM, 0); }
		public TerminalNode CASCADE() { return getToken(OpenGaussStatementParser.CASCADE, 0); }
		public CreateExtensionOptItemContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_createExtensionOptItem; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitCreateExtensionOptItem(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CreateExtensionOptItemContext createExtensionOptItem() throws RecognitionException {
		CreateExtensionOptItemContext _localctx = new CreateExtensionOptItemContext(_ctx, getState());
		enterRule(_localctx, 1202, RULE_createExtensionOptItem);
		try {
			setState(8682);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case SCHEMA:
				enterOuterAlt(_localctx, 1);
				{
				setState(8675);
				match(SCHEMA);
				setState(8676);
				name();
				}
				break;
			case VERSION:
				enterOuterAlt(_localctx, 2);
				{
				setState(8677);
				match(VERSION);
				setState(8678);
				nonReservedWordOrSconst();
				}
				break;
			case FROM:
				enterOuterAlt(_localctx, 3);
				{
				setState(8679);
				match(FROM);
				setState(8680);
				nonReservedWordOrSconst();
				}
				break;
			case CASCADE:
				enterOuterAlt(_localctx, 4);
				{
				setState(8681);
				match(CASCADE);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CreateForeignDataWrapperContext extends ParserRuleContext {
		public TerminalNode CREATE() { return getToken(OpenGaussStatementParser.CREATE, 0); }
		public TerminalNode FOREIGN() { return getToken(OpenGaussStatementParser.FOREIGN, 0); }
		public TerminalNode DATA() { return getToken(OpenGaussStatementParser.DATA, 0); }
		public TerminalNode WRAPPER() { return getToken(OpenGaussStatementParser.WRAPPER, 0); }
		public NameContext name() {
			return getRuleContext(NameContext.class,0);
		}
		public FdwOptionsContext fdwOptions() {
			return getRuleContext(FdwOptionsContext.class,0);
		}
		public CreateGenericOptionsContext createGenericOptions() {
			return getRuleContext(CreateGenericOptionsContext.class,0);
		}
		public CreateForeignDataWrapperContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_createForeignDataWrapper; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitCreateForeignDataWrapper(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CreateForeignDataWrapperContext createForeignDataWrapper() throws RecognitionException {
		CreateForeignDataWrapperContext _localctx = new CreateForeignDataWrapperContext(_ctx, getState());
		enterRule(_localctx, 1204, RULE_createForeignDataWrapper);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(8684);
			match(CREATE);
			setState(8685);
			match(FOREIGN);
			setState(8686);
			match(DATA);
			setState(8687);
			match(WRAPPER);
			setState(8688);
			name();
			setState(8690);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==NO || _la==HANDLER || _la==VALIDATOR) {
				{
				setState(8689);
				fdwOptions();
				}
			}

			setState(8693);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==OPTIONS) {
				{
				setState(8692);
				createGenericOptions();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CreateForeignTableContext extends ParserRuleContext {
		public TerminalNode CREATE() { return getToken(OpenGaussStatementParser.CREATE, 0); }
		public TerminalNode FOREIGN() { return getToken(OpenGaussStatementParser.FOREIGN, 0); }
		public TerminalNode TABLE() { return getToken(OpenGaussStatementParser.TABLE, 0); }
		public CreateForeignTableClausesContext createForeignTableClauses() {
			return getRuleContext(CreateForeignTableClausesContext.class,0);
		}
		public CreateForeignTableContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_createForeignTable; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitCreateForeignTable(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CreateForeignTableContext createForeignTable() throws RecognitionException {
		CreateForeignTableContext _localctx = new CreateForeignTableContext(_ctx, getState());
		enterRule(_localctx, 1206, RULE_createForeignTable);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(8695);
			match(CREATE);
			setState(8696);
			match(FOREIGN);
			setState(8697);
			match(TABLE);
			setState(8698);
			createForeignTableClauses();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CreateForeignTableClausesContext extends ParserRuleContext {
		public List qualifiedName() {
			return getRuleContexts(QualifiedNameContext.class);
		}
		public QualifiedNameContext qualifiedName(int i) {
			return getRuleContext(QualifiedNameContext.class,i);
		}
		public List LP_() { return getTokens(OpenGaussStatementParser.LP_); }
		public TerminalNode LP_(int i) {
			return getToken(OpenGaussStatementParser.LP_, i);
		}
		public List RP_() { return getTokens(OpenGaussStatementParser.RP_); }
		public TerminalNode RP_(int i) {
			return getToken(OpenGaussStatementParser.RP_, i);
		}
		public TerminalNode SERVER() { return getToken(OpenGaussStatementParser.SERVER, 0); }
		public NameContext name() {
			return getRuleContext(NameContext.class,0);
		}
		public IfNotExistsContext ifNotExists() {
			return getRuleContext(IfNotExistsContext.class,0);
		}
		public TableElementListContext tableElementList() {
			return getRuleContext(TableElementListContext.class,0);
		}
		public TerminalNode INHERITS() { return getToken(OpenGaussStatementParser.INHERITS, 0); }
		public QualifiedNameListContext qualifiedNameList() {
			return getRuleContext(QualifiedNameListContext.class,0);
		}
		public CreateGenericOptionsContext createGenericOptions() {
			return getRuleContext(CreateGenericOptionsContext.class,0);
		}
		public TerminalNode PARTITION() { return getToken(OpenGaussStatementParser.PARTITION, 0); }
		public TerminalNode OF() { return getToken(OpenGaussStatementParser.OF, 0); }
		public PartitionBoundSpecContext partitionBoundSpec() {
			return getRuleContext(PartitionBoundSpecContext.class,0);
		}
		public TypedTableElementListContext typedTableElementList() {
			return getRuleContext(TypedTableElementListContext.class,0);
		}
		public CreateForeignTableClausesContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_createForeignTableClauses; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitCreateForeignTableClauses(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CreateForeignTableClausesContext createForeignTableClauses() throws RecognitionException {
		CreateForeignTableClausesContext _localctx = new CreateForeignTableClausesContext(_ctx, getState());
		enterRule(_localctx, 1208, RULE_createForeignTableClauses);
		int _la;
		try {
			setState(8740);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,786,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(8701);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,779,_ctx) ) {
				case 1:
					{
					setState(8700);
					ifNotExists();
					}
					break;
				}
				setState(8703);
				qualifiedName();
				setState(8704);
				match(LP_);
				setState(8706);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==UNICODE_ESCAPE || ((((_la - 81)) & ~0x3f) == 0 && ((1L << (_la - 81)) & ((1L << (INSERT - 81)) | (1L << (UPDATE - 81)) | (1L << (DELETE - 81)) | (1L << (ALTER - 81)) | (1L << (DROP - 81)) | (1L << (TRUNCATE - 81)) | (1L << (SCHEMA - 81)) | (1L << (REVOKE - 81)) | (1L << (ADD - 81)) | (1L << (SET - 81)) | (1L << (INDEX - 81)) | (1L << (CONSTRAINT - 81)) | (1L << (PRIMARY - 81)) | (1L << (UNIQUE - 81)) | (1L << (FOREIGN - 81)) | (1L << (KEY - 81)) | (1L << (POSITION - 81)) | (1L << (FUNCTION - 81)) | (1L << (TRIGGER - 81)) | (1L << (PROCEDURE - 81)) | (1L << (VIEW - 81)) | (1L << (IF - 81)))) != 0) || ((((_la - 148)) & ~0x3f) == 0 && ((1L << (_la - 148)) & ((1L << (LIKE - 148)) | (1L << (BY - 148)) | (1L << (BEGIN - 148)) | (1L << (COMMIT - 148)) | (1L << (ROLLBACK - 148)) | (1L << (SAVEPOINT - 148)) | (1L << (DOUBLE - 148)) | (1L << (INTERVAL - 148)) | (1L << (TIME - 148)) | (1L << (TIMESTAMP - 148)) | (1L << (YEAR - 148)) | (1L << (MONTH - 148)) | (1L << (DAY - 148)) | (1L << (HOUR - 148)) | (1L << (MINUTE - 148)) | (1L << (SECOND - 148)) | (1L << (CURRENT - 148)) | (1L << (ENABLE - 148)) | (1L << (DISABLE - 148)) | (1L << (CALL - 148)) | (1L << (PRESERVE - 148)) | (1L << (DEFINER - 148)) | (1L << (SQL - 148)) | (1L << (CASCADED - 148)) | (1L << (LOCAL - 148)) | (1L << (CLOSE - 148)) | (1L << (NEXT - 148)) | (1L << (NAME - 148)) | (1L << (NAMES - 148)) | (1L << (TYPE - 148)) | (1L << (TEXT - 148)) | (1L << (REPEATABLE - 148)))) != 0) || ((((_la - 213)) & ~0x3f) == 0 && ((1L << (_la - 213)) & ((1L << (VARYING - 213)) | (1L << (NATIONAL - 213)) | (1L << (VALUE - 213)) | (1L << (TIES - 213)) | (1L << (CUBE - 213)) | (1L << (SETS - 213)) | (1L << (OTHERS - 213)) | (1L << (AT - 213)) | (1L << (MAXVALUE - 213)) | (1L << (ADMIN - 213)) | (1L << (ESCAPE - 213)) | (1L << (EXCLUDE - 213)) | (1L << (MOD - 213)) | (1L << (PARTITION - 213)) | (1L << (UNKNOWN - 213)) | (1L << (ALWAYS - 213)) | (1L << (CASCADE - 213)) | (1L << (CHECK - 213)) | (1L << (GENERATED - 213)) | (1L << (ISOLATION - 213)) | (1L << (LEVEL - 213)) | (1L << (NO - 213)) | (1L << (OPTION - 213)) | (1L << (PRIVILEGES - 213)) | (1L << (READ - 213)) | (1L << (ROLE - 213)) | (1L << (ROWS - 213)) | (1L << (START - 213)) | (1L << (TRANSACTION - 213)) | (1L << (ACTION - 213)) | (1L << (CACHE - 213)) | (1L << (CHARACTERISTICS - 213)) | (1L << (CLUSTER - 213)) | (1L << (COMMENTS - 213)) | (1L << (CONSTRAINTS - 213)) | (1L << (CYCLE - 213)) | (1L << (DATA - 213)) | (1L << (DATABASE - 213)))) != 0) || ((((_la - 277)) & ~0x3f) == 0 && ((1L << (_la - 277)) & ((1L << (DEFAULTS - 277)) | (1L << (DEFERRED - 277)) | (1L << (DEPENDS - 277)) | (1L << (DOMAIN - 277)) | (1L << (EXCLUDING - 277)) | (1L << (EXECUTE - 277)) | (1L << (EXTENDED - 277)) | (1L << (EXTENSION - 277)) | (1L << (EXTERNAL - 277)) | (1L << (FILTER - 277)) | (1L << (FIRST - 277)) | (1L << (FOLLOWING - 277)) | (1L << (FORCE - 277)) | (1L << (GLOBAL - 277)) | (1L << (IDENTITY - 277)) | (1L << (IMMEDIATE - 277)) | (1L << (INCLUDING - 277)) | (1L << (INCREMENT - 277)) | (1L << (INDEXES - 277)) | (1L << (INHERIT - 277)) | (1L << (INHERITS - 277)) | (1L << (INCLUDE - 277)) | (1L << (LANGUAGE - 277)) | (1L << (LARGE - 277)) | (1L << (LAST - 277)) | (1L << (LOGGED - 277)) | (1L << (MAIN - 277)) | (1L << (MATCH - 277)) | (1L << (MINVALUE - 277)) | (1L << (NOTHING - 277)) | (1L << (NULLS - 277)) | (1L << (OBJECT - 277)) | (1L << (OIDS - 277)) | (1L << (OVER - 277)) | (1L << (OWNED - 277)) | (1L << (OWNER - 277)) | (1L << (PARTIAL - 277)) | (1L << (PLAIN - 277)) | (1L << (PRECEDING - 277)) | (1L << (RANGE - 277)) | (1L << (RENAME - 277)) | (1L << (REPLICA - 277)) | (1L << (RESET - 277)) | (1L << (RESTART - 277)) | (1L << (RESTRICT - 277)) | (1L << (ROUTINE - 277)) | (1L << (RULE - 277)) | (1L << (SECURITY - 277)) | (1L << (SEQUENCE - 277)) | (1L << (SESSION - 277)) | (1L << (SHOW - 277)) | (1L << (SIMPLE - 277)) | (1L << (STATISTICS - 277)) | (1L << (STORAGE - 277)) | (1L << (TABLESPACE - 277)) | (1L << (TEMP - 277)) | (1L << (TEMPORARY - 277)) | (1L << (UNBOUNDED - 277)))) != 0) || ((((_la - 341)) & ~0x3f) == 0 && ((1L << (_la - 341)) & ((1L << (UNLOGGED - 341)) | (1L << (VALID - 341)) | (1L << (VALIDATE - 341)) | (1L << (WITHIN - 341)) | (1L << (WITHOUT - 341)) | (1L << (ZONE - 341)) | (1L << (OF - 341)) | (1L << (UESCAPE - 341)) | (1L << (GROUPS - 341)) | (1L << (RECURSIVE - 341)) | (1L << (INT2 - 341)) | (1L << (INT4 - 341)) | (1L << (FLOAT4 - 341)) | (1L << (BYTEA - 341)) | (1L << (ENUM - 341)) | (1L << (POINT - 341)) | (1L << (LSEG - 341)) | (1L << (BOX - 341)) | (1L << (PATH - 341)) | (1L << (POLYGON - 341)) | (1L << (CIRCLE - 341)) | (1L << (INET - 341)) | (1L << (TSQUERY - 341)) | (1L << (XML - 341)) | (1L << (JSON - 341)) | (1L << (INT4RANGE - 341)) | (1L << (INT8RANGE - 341)) | (1L << (NUMRANGE - 341)) | (1L << (DATERANGE - 341)) | (1L << (ORDINALITY - 341)))) != 0) || ((((_la - 405)) & ~0x3f) == 0 && ((1L << (_la - 405)) & ((1L << (NFC - 405)) | (1L << (NFD - 405)) | (1L << (NFKC - 405)) | (1L << (NFKD - 405)) | (1L << (REF - 405)) | (1L << (PASSING - 405)) | (1L << (VERSION - 405)) | (1L << (YES - 405)) | (1L << (STANDALONE - 405)) | (1L << (MATERIALIZED - 405)) | (1L << (OPERATOR - 405)) | (1L << (SHARE - 405)) | (1L << (ROLLUP - 405)) | (1L << (DOCUMENT - 405)) | (1L << (NORMALIZED - 405)) | (1L << (NOWAIT - 405)) | (1L << (LOCKED - 405)) | (1L << (COLUMNS - 405)) | (1L << (CONTENT - 405)) | (1L << (STRIP - 405)) | (1L << (WHITESPACE - 405)) | (1L << (CONFLICT - 405)) | (1L << (OVERRIDING - 405)) | (1L << (SYSTEM - 405)) | (1L << (ABORT - 405)) | (1L << (ABSOLUTE - 405)) | (1L << (ACCESS - 405)) | (1L << (AFTER - 405)) | (1L << (AGGREGATE - 405)) | (1L << (ALSO - 405)) | (1L << (ATTACH - 405)) | (1L << (ATTRIBUTE - 405)) | (1L << (BACKWARD - 405)) | (1L << (BEFORE - 405)) | (1L << (ASSERTION - 405)) | (1L << (ASSIGNMENT - 405)) | (1L << (CONTINUE - 405)) | (1L << (CONVERSION - 405)) | (1L << (COPY - 405)) | (1L << (COST - 405)) | (1L << (CSV - 405)) | (1L << (CALLED - 405)) | (1L << (CATALOG - 405)) | (1L << (CHAIN - 405)) | (1L << (CHECKPOINT - 405)) | (1L << (CLASS - 405)))) != 0) || ((((_la - 469)) & ~0x3f) == 0 && ((1L << (_la - 469)) & ((1L << (CONFIGURATION - 469)) | (1L << (COMMENT - 469)) | (1L << (DETACH - 469)) | (1L << (DICTIONARY - 469)) | (1L << (EXPRESSION - 469)) | (1L << (INSENSITIVE - 469)) | (1L << (DISCARD - 469)) | (1L << (OFF - 469)) | (1L << (INSTEAD - 469)) | (1L << (EXPLAIN - 469)) | (1L << (INPUT - 469)) | (1L << (INLINE - 469)) | (1L << (PARALLEL - 469)) | (1L << (LEAKPROOF - 469)) | (1L << (COMMITTED - 469)) | (1L << (ENCODING - 469)) | (1L << (IMPLICIT - 469)) | (1L << (DELIMITER - 469)) | (1L << (CURSOR - 469)) | (1L << (EACH - 469)) | (1L << (EVENT - 469)) | (1L << (DEALLOCATE - 469)) | (1L << (CONNECTION - 469)) | (1L << (DECLARE - 469)) | (1L << (FAMILY - 469)) | (1L << (FORWARD - 469)) | (1L << (EXCLUSIVE - 469)) | (1L << (FUNCTIONS - 469)) | (1L << (LOCATION - 469)) | (1L << (LABEL - 469)) | (1L << (DELIMITERS - 469)) | (1L << (HANDLER - 469)) | (1L << (HEADER - 469)) | (1L << (IMMUTABLE - 469)) | (1L << (GRANTED - 469)) | (1L << (HOLD - 469)) | (1L << (MAPPING - 469)) | (1L << (OLD - 469)) | (1L << (METHOD - 469)) | (1L << (LOAD - 469)) | (1L << (LISTEN - 469)) | (1L << (MODE - 469)) | (1L << (MOVE - 469)) | (1L << (PROCEDURAL - 469)) | (1L << (PARSER - 469)) | (1L << (PROCEDURES - 469)) | (1L << (ENCRYPTED - 469)) | (1L << (PUBLICATION - 469)) | (1L << (PROGRAM - 469)) | (1L << (REFERENCING - 469)) | (1L << (PLANS - 469)) | (1L << (REINDEX - 469)) | (1L << (PRIOR - 469)) | (1L << (PASSWORD - 469)) | (1L << (RELATIVE - 469)) | (1L << (QUOTE - 469)) | (1L << (ROUTINES - 469)) | (1L << (REPLACE - 469)) | (1L << (SNAPSHOT - 469)) | (1L << (REFRESH - 469)) | (1L << (PREPARE - 469)) | (1L << (OPTIONS - 469)) | (1L << (IMPORT - 469)))) != 0) || ((((_la - 533)) & ~0x3f) == 0 && ((1L << (_la - 533)) & ((1L << (INVOKER - 533)) | (1L << (NEW - 533)) | (1L << (PREPARED - 533)) | (1L << (SCROLL - 533)) | (1L << (SEQUENCES - 533)) | (1L << (SYSID - 533)) | (1L << (REASSIGN - 533)) | (1L << (SERVER - 533)) | (1L << (SUBSCRIPTION - 533)) | (1L << (SEARCH - 533)) | (1L << (SCHEMAS - 533)) | (1L << (RECHECK - 533)) | (1L << (POLICY - 533)) | (1L << (NOTIFY - 533)) | (1L << (LOCK - 533)) | (1L << (RELEASE - 533)) | (1L << (SERIALIZABLE - 533)) | (1L << (RETURNS - 533)) | (1L << (STATEMENT - 533)) | (1L << (STDIN - 533)) | (1L << (STDOUT - 533)) | (1L << (TABLES - 533)) | (1L << (SUPPORT - 533)) | (1L << (STABLE - 533)) | (1L << (TEMPLATE - 533)) | (1L << (UNENCRYPTED - 533)) | (1L << (VIEWS - 533)) | (1L << (UNCOMMITTED - 533)) | (1L << (TRANSFORM - 533)) | (1L << (UNLISTEN - 533)) | (1L << (TRUSTED - 533)) | (1L << (VALIDATOR - 533)) | (1L << (UNTIL - 533)) | (1L << (VACUUM - 533)) | (1L << (VOLATILE - 533)) | (1L << (STORED - 533)) | (1L << (WRITE - 533)) | (1L << (STRICT - 533)) | (1L << (TYPES - 533)) | (1L << (WRAPPER - 533)) | (1L << (WORK - 533)) | (1L << (INT16 - 533)) | (1L << (INT1 - 533)) | (1L << (ELEM_CONTAINED_BY_RANGE - 533)) | (1L << (IDENTIFIER_ - 533)))) != 0)) {
					{
					setState(8705);
					tableElementList();
					}
				}

				setState(8708);
				match(RP_);
				setState(8714);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==INHERITS) {
					{
					setState(8709);
					match(INHERITS);
					setState(8710);
					match(LP_);
					setState(8711);
					qualifiedNameList(0);
					setState(8712);
					match(RP_);
					}
				}

				setState(8716);
				match(SERVER);
				setState(8717);
				name();
				setState(8719);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==OPTIONS) {
					{
					setState(8718);
					createGenericOptions();
					}
				}

				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(8722);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,783,_ctx) ) {
				case 1:
					{
					setState(8721);
					ifNotExists();
					}
					break;
				}
				setState(8724);
				qualifiedName();
				setState(8725);
				match(PARTITION);
				setState(8726);
				match(OF);
				setState(8727);
				qualifiedName();
				setState(8732);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==LP_) {
					{
					setState(8728);
					match(LP_);
					setState(8729);
					typedTableElementList();
					setState(8730);
					match(RP_);
					}
				}

				setState(8734);
				partitionBoundSpec();
				setState(8735);
				match(SERVER);
				setState(8736);
				name();
				setState(8738);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==OPTIONS) {
					{
					setState(8737);
					createGenericOptions();
					}
				}

				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class TableElementListContext extends ParserRuleContext {
		public List tableElement() {
			return getRuleContexts(TableElementContext.class);
		}
		public TableElementContext tableElement(int i) {
			return getRuleContext(TableElementContext.class,i);
		}
		public List COMMA_() { return getTokens(OpenGaussStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(OpenGaussStatementParser.COMMA_, i);
		}
		public TableElementListContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_tableElementList; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitTableElementList(this);
			else return visitor.visitChildren(this);
		}
	}

	public final TableElementListContext tableElementList() throws RecognitionException {
		TableElementListContext _localctx = new TableElementListContext(_ctx, getState());
		enterRule(_localctx, 1210, RULE_tableElementList);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(8742);
			tableElement();
			setState(8747);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA_) {
				{
				{
				setState(8743);
				match(COMMA_);
				setState(8744);
				tableElement();
				}
				}
				setState(8749);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class TableElementContext extends ParserRuleContext {
		public ColumnDefContext columnDef() {
			return getRuleContext(ColumnDefContext.class,0);
		}
		public TableLikeClauseContext tableLikeClause() {
			return getRuleContext(TableLikeClauseContext.class,0);
		}
		public TableConstraintContext tableConstraint() {
			return getRuleContext(TableConstraintContext.class,0);
		}
		public TableElementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_tableElement; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitTableElement(this);
			else return visitor.visitChildren(this);
		}
	}

	public final TableElementContext tableElement() throws RecognitionException {
		TableElementContext _localctx = new TableElementContext(_ctx, getState());
		enterRule(_localctx, 1212, RULE_tableElement);
		try {
			setState(8753);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,788,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(8750);
				columnDef();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(8751);
				tableLikeClause();
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(8752);
				tableConstraint();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class TableLikeClauseContext extends ParserRuleContext {
		public TerminalNode LIKE() { return getToken(OpenGaussStatementParser.LIKE, 0); }
		public QualifiedNameContext qualifiedName() {
			return getRuleContext(QualifiedNameContext.class,0);
		}
		public TableLikeOptionListContext tableLikeOptionList() {
			return getRuleContext(TableLikeOptionListContext.class,0);
		}
		public TableLikeClauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_tableLikeClause; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitTableLikeClause(this);
			else return visitor.visitChildren(this);
		}
	}

	public final TableLikeClauseContext tableLikeClause() throws RecognitionException {
		TableLikeClauseContext _localctx = new TableLikeClauseContext(_ctx, getState());
		enterRule(_localctx, 1214, RULE_tableLikeClause);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(8755);
			match(LIKE);
			setState(8756);
			qualifiedName();
			setState(8757);
			tableLikeOptionList(0);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class TableLikeOptionListContext extends ParserRuleContext {
		public TableLikeOptionListContext tableLikeOptionList() {
			return getRuleContext(TableLikeOptionListContext.class,0);
		}
		public TableLikeOptionContext tableLikeOption() {
			return getRuleContext(TableLikeOptionContext.class,0);
		}
		public TerminalNode INCLUDING() { return getToken(OpenGaussStatementParser.INCLUDING, 0); }
		public TerminalNode EXCLUDING() { return getToken(OpenGaussStatementParser.EXCLUDING, 0); }
		public TableLikeOptionListContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_tableLikeOptionList; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitTableLikeOptionList(this);
			else return visitor.visitChildren(this);
		}
	}

	public final TableLikeOptionListContext tableLikeOptionList() throws RecognitionException {
		return tableLikeOptionList(0);
	}

	private TableLikeOptionListContext tableLikeOptionList(int _p) throws RecognitionException {
		ParserRuleContext _parentctx = _ctx;
		int _parentState = getState();
		TableLikeOptionListContext _localctx = new TableLikeOptionListContext(_ctx, _parentState);
		TableLikeOptionListContext _prevctx = _localctx;
		int _startState = 1216;
		enterRecursionRule(_localctx, 1216, RULE_tableLikeOptionList, _p);
		int _la;
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			{
			}
			_ctx.stop = _input.LT(-1);
			setState(8765);
			_errHandler.sync(this);
			_alt = getInterpreter().adaptivePredict(_input,789,_ctx);
			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
				if ( _alt==1 ) {
					if ( _parseListeners!=null ) triggerExitRuleEvent();
					_prevctx = _localctx;
					{
					{
					_localctx = new TableLikeOptionListContext(_parentctx, _parentState);
					pushNewRecursionContext(_localctx, _startState, RULE_tableLikeOptionList);
					setState(8760);
					if (!(precpred(_ctx, 2))) throw new FailedPredicateException(this, "precpred(_ctx, 2)");
					setState(8761);
					_la = _input.LA(1);
					if ( !(_la==EXCLUDING || _la==INCLUDING) ) {
					_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					setState(8762);
					tableLikeOption();
					}
					} 
				}
				setState(8767);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,789,_ctx);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			unrollRecursionContexts(_parentctx);
		}
		return _localctx;
	}

	public static class TableLikeOptionContext extends ParserRuleContext {
		public TerminalNode COMMENTS() { return getToken(OpenGaussStatementParser.COMMENTS, 0); }
		public TerminalNode CONSTRAINTS() { return getToken(OpenGaussStatementParser.CONSTRAINTS, 0); }
		public TerminalNode DEFAULTS() { return getToken(OpenGaussStatementParser.DEFAULTS, 0); }
		public TerminalNode IDENTITY() { return getToken(OpenGaussStatementParser.IDENTITY, 0); }
		public TerminalNode GENERATED() { return getToken(OpenGaussStatementParser.GENERATED, 0); }
		public TerminalNode INDEXES() { return getToken(OpenGaussStatementParser.INDEXES, 0); }
		public TerminalNode STATISTICS() { return getToken(OpenGaussStatementParser.STATISTICS, 0); }
		public TerminalNode STORAGE() { return getToken(OpenGaussStatementParser.STORAGE, 0); }
		public TerminalNode ALL() { return getToken(OpenGaussStatementParser.ALL, 0); }
		public TableLikeOptionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_tableLikeOption; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitTableLikeOption(this);
			else return visitor.visitChildren(this);
		}
	}

	public final TableLikeOptionContext tableLikeOption() throws RecognitionException {
		TableLikeOptionContext _localctx = new TableLikeOptionContext(_ctx, getState());
		enterRule(_localctx, 1218, RULE_tableLikeOption);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(8768);
			_la = _input.LA(1);
			if ( !(_la==ALL || ((((_la - 252)) & ~0x3f) == 0 && ((1L << (_la - 252)) & ((1L << (GENERATED - 252)) | (1L << (COMMENTS - 252)) | (1L << (CONSTRAINTS - 252)) | (1L << (DEFAULTS - 252)) | (1L << (IDENTITY - 252)) | (1L << (INDEXES - 252)))) != 0) || _la==STATISTICS || _la==STORAGE) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CreateFunctionContext extends ParserRuleContext {
		public TerminalNode CREATE() { return getToken(OpenGaussStatementParser.CREATE, 0); }
		public TerminalNode FUNCTION() { return getToken(OpenGaussStatementParser.FUNCTION, 0); }
		public FuncNameContext funcName() {
			return getRuleContext(FuncNameContext.class,0);
		}
		public FuncArgsWithDefaultsContext funcArgsWithDefaults() {
			return getRuleContext(FuncArgsWithDefaultsContext.class,0);
		}
		public TerminalNode RETURNS() { return getToken(OpenGaussStatementParser.RETURNS, 0); }
		public FuncReturnContext funcReturn() {
			return getRuleContext(FuncReturnContext.class,0);
		}
		public CreatefuncOptListContext createfuncOptList() {
			return getRuleContext(CreatefuncOptListContext.class,0);
		}
		public TerminalNode TABLE() { return getToken(OpenGaussStatementParser.TABLE, 0); }
		public TerminalNode LP_() { return getToken(OpenGaussStatementParser.LP_, 0); }
		public TableFuncColumnListContext tableFuncColumnList() {
			return getRuleContext(TableFuncColumnListContext.class,0);
		}
		public TerminalNode RP_() { return getToken(OpenGaussStatementParser.RP_, 0); }
		public TerminalNode OR() { return getToken(OpenGaussStatementParser.OR, 0); }
		public TerminalNode REPLACE() { return getToken(OpenGaussStatementParser.REPLACE, 0); }
		public CreateFunctionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_createFunction; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitCreateFunction(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CreateFunctionContext createFunction() throws RecognitionException {
		CreateFunctionContext _localctx = new CreateFunctionContext(_ctx, getState());
		enterRule(_localctx, 1220, RULE_createFunction);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(8770);
			match(CREATE);
			setState(8773);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==OR) {
				{
				setState(8771);
				match(OR);
				setState(8772);
				match(REPLACE);
				}
			}

			setState(8775);
			match(FUNCTION);
			setState(8776);
			funcName();
			setState(8777);
			funcArgsWithDefaults();
			setState(8790);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,791,_ctx) ) {
			case 1:
				{
				setState(8778);
				match(RETURNS);
				setState(8779);
				funcReturn();
				setState(8780);
				createfuncOptList();
				}
				break;
			case 2:
				{
				setState(8782);
				match(RETURNS);
				setState(8783);
				match(TABLE);
				setState(8784);
				match(LP_);
				setState(8785);
				tableFuncColumnList();
				setState(8786);
				match(RP_);
				setState(8787);
				createfuncOptList();
				}
				break;
			case 3:
				{
				setState(8789);
				createfuncOptList();
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class TableFuncColumnListContext extends ParserRuleContext {
		public List tableFuncColumn() {
			return getRuleContexts(TableFuncColumnContext.class);
		}
		public TableFuncColumnContext tableFuncColumn(int i) {
			return getRuleContext(TableFuncColumnContext.class,i);
		}
		public List COMMA_() { return getTokens(OpenGaussStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(OpenGaussStatementParser.COMMA_, i);
		}
		public TableFuncColumnListContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_tableFuncColumnList; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitTableFuncColumnList(this);
			else return visitor.visitChildren(this);
		}
	}

	public final TableFuncColumnListContext tableFuncColumnList() throws RecognitionException {
		TableFuncColumnListContext _localctx = new TableFuncColumnListContext(_ctx, getState());
		enterRule(_localctx, 1222, RULE_tableFuncColumnList);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(8792);
			tableFuncColumn();
			setState(8797);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA_) {
				{
				{
				setState(8793);
				match(COMMA_);
				setState(8794);
				tableFuncColumn();
				}
				}
				setState(8799);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class TableFuncColumnContext extends ParserRuleContext {
		public ParamNameContext paramName() {
			return getRuleContext(ParamNameContext.class,0);
		}
		public FuncTypeContext funcType() {
			return getRuleContext(FuncTypeContext.class,0);
		}
		public TableFuncColumnContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_tableFuncColumn; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitTableFuncColumn(this);
			else return visitor.visitChildren(this);
		}
	}

	public final TableFuncColumnContext tableFuncColumn() throws RecognitionException {
		TableFuncColumnContext _localctx = new TableFuncColumnContext(_ctx, getState());
		enterRule(_localctx, 1224, RULE_tableFuncColumn);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(8800);
			paramName();
			setState(8801);
			funcType();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CreatefuncOptListContext extends ParserRuleContext {
		public List createfuncOptItem() {
			return getRuleContexts(CreatefuncOptItemContext.class);
		}
		public CreatefuncOptItemContext createfuncOptItem(int i) {
			return getRuleContext(CreatefuncOptItemContext.class,i);
		}
		public CreatefuncOptListContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_createfuncOptList; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitCreatefuncOptList(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CreatefuncOptListContext createfuncOptList() throws RecognitionException {
		CreatefuncOptListContext _localctx = new CreatefuncOptListContext(_ctx, getState());
		enterRule(_localctx, 1226, RULE_createfuncOptList);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(8804); 
			_errHandler.sync(this);
			_la = _input.LA(1);
			do {
				{
				{
				setState(8803);
				createfuncOptItem();
				}
				}
				setState(8806); 
				_errHandler.sync(this);
				_la = _input.LA(1);
			} while ( ((((_la - 92)) & ~0x3f) == 0 && ((1L << (_la - 92)) & ((1L << (SET - 92)) | (1L << (AS - 92)) | (1L << (NOT - 92)))) != 0) || ((((_la - 230)) & ~0x3f) == 0 && ((1L << (_la - 230)) & ((1L << (WINDOW - 230)) | (1L << (ROWS - 230)) | (1L << (EXTERNAL - 230)))) != 0) || ((((_la - 302)) & ~0x3f) == 0 && ((1L << (_la - 302)) & ((1L << (LANGUAGE - 302)) | (1L << (RESET - 302)) | (1L << (SECURITY - 302)))) != 0) || ((((_la - 462)) & ~0x3f) == 0 && ((1L << (_la - 462)) & ((1L << (COST - 462)) | (1L << (CALLED - 462)) | (1L << (PARALLEL - 462)) | (1L << (LEAKPROOF - 462)) | (1L << (IMMUTABLE - 462)))) != 0) || ((((_la - 550)) & ~0x3f) == 0 && ((1L << (_la - 550)) & ((1L << (RETURNS - 550)) | (1L << (SUPPORT - 550)) | (1L << (STABLE - 550)) | (1L << (TRANSFORM - 550)) | (1L << (VOLATILE - 550)) | (1L << (STRICT - 550)))) != 0) );
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CreatefuncOptItemContext extends ParserRuleContext {
		public TerminalNode AS() { return getToken(OpenGaussStatementParser.AS, 0); }
		public FuncAsContext funcAs() {
			return getRuleContext(FuncAsContext.class,0);
		}
		public TerminalNode LANGUAGE() { return getToken(OpenGaussStatementParser.LANGUAGE, 0); }
		public NonReservedWordOrSconstContext nonReservedWordOrSconst() {
			return getRuleContext(NonReservedWordOrSconstContext.class,0);
		}
		public TerminalNode TRANSFORM() { return getToken(OpenGaussStatementParser.TRANSFORM, 0); }
		public TransformTypeListContext transformTypeList() {
			return getRuleContext(TransformTypeListContext.class,0);
		}
		public TerminalNode WINDOW() { return getToken(OpenGaussStatementParser.WINDOW, 0); }
		public CommonFuncOptItemContext commonFuncOptItem() {
			return getRuleContext(CommonFuncOptItemContext.class,0);
		}
		public CreatefuncOptItemContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_createfuncOptItem; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitCreatefuncOptItem(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CreatefuncOptItemContext createfuncOptItem() throws RecognitionException {
		CreatefuncOptItemContext _localctx = new CreatefuncOptItemContext(_ctx, getState());
		enterRule(_localctx, 1228, RULE_createfuncOptItem);
		try {
			setState(8816);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case AS:
				enterOuterAlt(_localctx, 1);
				{
				setState(8808);
				match(AS);
				setState(8809);
				funcAs();
				}
				break;
			case LANGUAGE:
				enterOuterAlt(_localctx, 2);
				{
				setState(8810);
				match(LANGUAGE);
				setState(8811);
				nonReservedWordOrSconst();
				}
				break;
			case TRANSFORM:
				enterOuterAlt(_localctx, 3);
				{
				setState(8812);
				match(TRANSFORM);
				setState(8813);
				transformTypeList();
				}
				break;
			case WINDOW:
				enterOuterAlt(_localctx, 4);
				{
				setState(8814);
				match(WINDOW);
				}
				break;
			case SET:
			case NOT:
			case ROWS:
			case EXTERNAL:
			case RESET:
			case SECURITY:
			case COST:
			case CALLED:
			case PARALLEL:
			case LEAKPROOF:
			case IMMUTABLE:
			case RETURNS:
			case SUPPORT:
			case STABLE:
			case VOLATILE:
			case STRICT:
				enterOuterAlt(_localctx, 5);
				{
				setState(8815);
				commonFuncOptItem();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class TransformTypeListContext extends ParserRuleContext {
		public List FOR() { return getTokens(OpenGaussStatementParser.FOR); }
		public TerminalNode FOR(int i) {
			return getToken(OpenGaussStatementParser.FOR, i);
		}
		public List TYPE() { return getTokens(OpenGaussStatementParser.TYPE); }
		public TerminalNode TYPE(int i) {
			return getToken(OpenGaussStatementParser.TYPE, i);
		}
		public List typeName() {
			return getRuleContexts(TypeNameContext.class);
		}
		public TypeNameContext typeName(int i) {
			return getRuleContext(TypeNameContext.class,i);
		}
		public TerminalNode COMMA_() { return getToken(OpenGaussStatementParser.COMMA_, 0); }
		public TransformTypeListContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_transformTypeList; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitTransformTypeList(this);
			else return visitor.visitChildren(this);
		}
	}

	public final TransformTypeListContext transformTypeList() throws RecognitionException {
		TransformTypeListContext _localctx = new TransformTypeListContext(_ctx, getState());
		enterRule(_localctx, 1230, RULE_transformTypeList);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(8818);
			match(FOR);
			setState(8819);
			match(TYPE);
			setState(8820);
			typeName();
			{
			setState(8821);
			match(COMMA_);
			setState(8822);
			match(FOR);
			setState(8823);
			match(TYPE);
			setState(8824);
			typeName();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class FuncAsContext extends ParserRuleContext {
		public IdentifierContext identifier() {
			return getRuleContext(IdentifierContext.class,0);
		}
		public List STRING_() { return getTokens(OpenGaussStatementParser.STRING_); }
		public TerminalNode STRING_(int i) {
			return getToken(OpenGaussStatementParser.STRING_, i);
		}
		public TerminalNode COMMA_() { return getToken(OpenGaussStatementParser.COMMA_, 0); }
		public FuncAsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_funcAs; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitFuncAs(this);
			else return visitor.visitChildren(this);
		}
	}

	public final FuncAsContext funcAs() throws RecognitionException {
		FuncAsContext _localctx = new FuncAsContext(_ctx, getState());
		enterRule(_localctx, 1232, RULE_funcAs);
		try {
			setState(8833);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case UNICODE_ESCAPE:
			case INSERT:
			case UPDATE:
			case DELETE:
			case ALTER:
			case DROP:
			case TRUNCATE:
			case SCHEMA:
			case REVOKE:
			case ADD:
			case SET:
			case INDEX:
			case KEY:
			case POSITION:
			case FUNCTION:
			case TRIGGER:
			case PROCEDURE:
			case VIEW:
			case IF:
			case BY:
			case BEGIN:
			case COMMIT:
			case ROLLBACK:
			case SAVEPOINT:
			case DOUBLE:
			case INTERVAL:
			case TIME:
			case TIMESTAMP:
			case YEAR:
			case MONTH:
			case DAY:
			case HOUR:
			case MINUTE:
			case SECOND:
			case CURRENT:
			case ENABLE:
			case DISABLE:
			case CALL:
			case PRESERVE:
			case DEFINER:
			case SQL:
			case CASCADED:
			case LOCAL:
			case CLOSE:
			case NEXT:
			case NAME:
			case NAMES:
			case TYPE:
			case TEXT:
			case REPEATABLE:
			case VARYING:
			case NATIONAL:
			case VALUE:
			case TIES:
			case CUBE:
			case SETS:
			case OTHERS:
			case AT:
			case MAXVALUE:
			case ADMIN:
			case ESCAPE:
			case EXCLUDE:
			case MOD:
			case PARTITION:
			case UNKNOWN:
			case ALWAYS:
			case CASCADE:
			case GENERATED:
			case ISOLATION:
			case LEVEL:
			case NO:
			case OPTION:
			case PRIVILEGES:
			case READ:
			case ROLE:
			case ROWS:
			case START:
			case TRANSACTION:
			case ACTION:
			case CACHE:
			case CHARACTERISTICS:
			case CLUSTER:
			case COMMENTS:
			case CONSTRAINTS:
			case CYCLE:
			case DATA:
			case DATABASE:
			case DEFAULTS:
			case DEFERRED:
			case DEPENDS:
			case DOMAIN:
			case EXCLUDING:
			case EXECUTE:
			case EXTENDED:
			case EXTENSION:
			case EXTERNAL:
			case FILTER:
			case FIRST:
			case FOLLOWING:
			case FORCE:
			case GLOBAL:
			case IDENTITY:
			case IMMEDIATE:
			case INCLUDING:
			case INCREMENT:
			case INDEXES:
			case INHERIT:
			case INHERITS:
			case INCLUDE:
			case LANGUAGE:
			case LARGE:
			case LAST:
			case LOGGED:
			case MAIN:
			case MATCH:
			case MINVALUE:
			case NOTHING:
			case NULLS:
			case OBJECT:
			case OIDS:
			case OVER:
			case OWNED:
			case OWNER:
			case PARTIAL:
			case PLAIN:
			case PRECEDING:
			case RANGE:
			case RENAME:
			case REPLICA:
			case RESET:
			case RESTART:
			case RESTRICT:
			case ROUTINE:
			case RULE:
			case SECURITY:
			case SEQUENCE:
			case SESSION:
			case SHOW:
			case SIMPLE:
			case STATISTICS:
			case STORAGE:
			case TABLESPACE:
			case TEMP:
			case TEMPORARY:
			case UNBOUNDED:
			case UNLOGGED:
			case VALID:
			case VALIDATE:
			case WITHIN:
			case WITHOUT:
			case ZONE:
			case OF:
			case UESCAPE:
			case GROUPS:
			case RECURSIVE:
			case INT2:
			case INT4:
			case FLOAT4:
			case BYTEA:
			case ENUM:
			case POINT:
			case LSEG:
			case BOX:
			case PATH:
			case POLYGON:
			case CIRCLE:
			case INET:
			case TSQUERY:
			case XML:
			case JSON:
			case INT4RANGE:
			case INT8RANGE:
			case NUMRANGE:
			case DATERANGE:
			case ORDINALITY:
			case NFC:
			case NFD:
			case NFKC:
			case NFKD:
			case REF:
			case PASSING:
			case VERSION:
			case YES:
			case STANDALONE:
			case MATERIALIZED:
			case OPERATOR:
			case SHARE:
			case ROLLUP:
			case DOCUMENT:
			case NORMALIZED:
			case NOWAIT:
			case LOCKED:
			case COLUMNS:
			case CONTENT:
			case STRIP:
			case WHITESPACE:
			case CONFLICT:
			case OVERRIDING:
			case SYSTEM:
			case ABORT:
			case ABSOLUTE:
			case ACCESS:
			case AFTER:
			case AGGREGATE:
			case ALSO:
			case ATTACH:
			case ATTRIBUTE:
			case BACKWARD:
			case BEFORE:
			case ASSERTION:
			case ASSIGNMENT:
			case CONTINUE:
			case CONVERSION:
			case COPY:
			case COST:
			case CSV:
			case CALLED:
			case CATALOG:
			case CHAIN:
			case CHECKPOINT:
			case CLASS:
			case CONFIGURATION:
			case COMMENT:
			case DETACH:
			case DICTIONARY:
			case EXPRESSION:
			case INSENSITIVE:
			case DISCARD:
			case OFF:
			case INSTEAD:
			case EXPLAIN:
			case INPUT:
			case INLINE:
			case PARALLEL:
			case LEAKPROOF:
			case COMMITTED:
			case ENCODING:
			case IMPLICIT:
			case DELIMITER:
			case CURSOR:
			case EACH:
			case EVENT:
			case DEALLOCATE:
			case CONNECTION:
			case DECLARE:
			case FAMILY:
			case FORWARD:
			case EXCLUSIVE:
			case FUNCTIONS:
			case LOCATION:
			case LABEL:
			case DELIMITERS:
			case HANDLER:
			case HEADER:
			case IMMUTABLE:
			case GRANTED:
			case HOLD:
			case MAPPING:
			case OLD:
			case METHOD:
			case LOAD:
			case LISTEN:
			case MODE:
			case MOVE:
			case PROCEDURAL:
			case PARSER:
			case PROCEDURES:
			case ENCRYPTED:
			case PUBLICATION:
			case PROGRAM:
			case REFERENCING:
			case PLANS:
			case REINDEX:
			case PRIOR:
			case PASSWORD:
			case RELATIVE:
			case QUOTE:
			case ROUTINES:
			case REPLACE:
			case SNAPSHOT:
			case REFRESH:
			case PREPARE:
			case OPTIONS:
			case IMPORT:
			case INVOKER:
			case NEW:
			case PREPARED:
			case SCROLL:
			case SEQUENCES:
			case SYSID:
			case REASSIGN:
			case SERVER:
			case SUBSCRIPTION:
			case SEARCH:
			case SCHEMAS:
			case RECHECK:
			case POLICY:
			case NOTIFY:
			case LOCK:
			case RELEASE:
			case SERIALIZABLE:
			case RETURNS:
			case STATEMENT:
			case STDIN:
			case STDOUT:
			case TABLES:
			case SUPPORT:
			case STABLE:
			case TEMPLATE:
			case UNENCRYPTED:
			case VIEWS:
			case UNCOMMITTED:
			case TRANSFORM:
			case UNLISTEN:
			case TRUSTED:
			case VALIDATOR:
			case UNTIL:
			case VACUUM:
			case VOLATILE:
			case STORED:
			case WRITE:
			case STRICT:
			case TYPES:
			case WRAPPER:
			case WORK:
			case INT16:
			case INT1:
			case ELEM_CONTAINED_BY_RANGE:
			case IDENTIFIER_:
				enterOuterAlt(_localctx, 1);
				{
				setState(8826);
				identifier();
				}
				break;
			case STRING_:
				enterOuterAlt(_localctx, 2);
				{
				setState(8827);
				match(STRING_);
				setState(8831);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case COMMA_:
					{
					setState(8828);
					match(COMMA_);
					setState(8829);
					identifier();
					}
					break;
				case STRING_:
					{
					setState(8830);
					match(STRING_);
					}
					break;
				case EOF:
				case SEMI_:
				case SET:
				case AS:
				case NOT:
				case WINDOW:
				case ROWS:
				case EXTERNAL:
				case LANGUAGE:
				case RESET:
				case SECURITY:
				case COST:
				case CALLED:
				case PARALLEL:
				case LEAKPROOF:
				case IMMUTABLE:
				case RETURNS:
				case SUPPORT:
				case STABLE:
				case TRANSFORM:
				case VOLATILE:
				case STRICT:
					break;
				default:
					break;
				}
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class FuncReturnContext extends ParserRuleContext {
		public FuncTypeContext funcType() {
			return getRuleContext(FuncTypeContext.class,0);
		}
		public FuncReturnContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_funcReturn; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitFuncReturn(this);
			else return visitor.visitChildren(this);
		}
	}

	public final FuncReturnContext funcReturn() throws RecognitionException {
		FuncReturnContext _localctx = new FuncReturnContext(_ctx, getState());
		enterRule(_localctx, 1234, RULE_funcReturn);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(8835);
			funcType();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class FuncArgsWithDefaultsContext extends ParserRuleContext {
		public TerminalNode LP_() { return getToken(OpenGaussStatementParser.LP_, 0); }
		public TerminalNode RP_() { return getToken(OpenGaussStatementParser.RP_, 0); }
		public FuncArgsWithDefaultsListContext funcArgsWithDefaultsList() {
			return getRuleContext(FuncArgsWithDefaultsListContext.class,0);
		}
		public FuncArgsWithDefaultsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_funcArgsWithDefaults; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitFuncArgsWithDefaults(this);
			else return visitor.visitChildren(this);
		}
	}

	public final FuncArgsWithDefaultsContext funcArgsWithDefaults() throws RecognitionException {
		FuncArgsWithDefaultsContext _localctx = new FuncArgsWithDefaultsContext(_ctx, getState());
		enterRule(_localctx, 1236, RULE_funcArgsWithDefaults);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(8837);
			match(LP_);
			setState(8839);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==UNICODE_ESCAPE || ((((_la - 81)) & ~0x3f) == 0 && ((1L << (_la - 81)) & ((1L << (INSERT - 81)) | (1L << (UPDATE - 81)) | (1L << (DELETE - 81)) | (1L << (ALTER - 81)) | (1L << (DROP - 81)) | (1L << (TRUNCATE - 81)) | (1L << (SCHEMA - 81)) | (1L << (REVOKE - 81)) | (1L << (ADD - 81)) | (1L << (SET - 81)) | (1L << (INDEX - 81)) | (1L << (KEY - 81)) | (1L << (POSITION - 81)) | (1L << (FUNCTION - 81)) | (1L << (TRIGGER - 81)) | (1L << (PROCEDURE - 81)) | (1L << (VIEW - 81)) | (1L << (NATURAL - 81)) | (1L << (JOIN - 81)) | (1L << (FULL - 81)) | (1L << (INNER - 81)) | (1L << (OUTER - 81)) | (1L << (LEFT - 81)) | (1L << (RIGHT - 81)) | (1L << (CROSS - 81)) | (1L << (IF - 81)) | (1L << (IS - 81)))) != 0) || ((((_la - 145)) & ~0x3f) == 0 && ((1L << (_la - 145)) & ((1L << (IN - 145)) | (1L << (LIKE - 145)) | (1L << (BY - 145)) | (1L << (BEGIN - 145)) | (1L << (COMMIT - 145)) | (1L << (ROLLBACK - 145)) | (1L << (SAVEPOINT - 145)) | (1L << (BOOLEAN - 145)) | (1L << (DOUBLE - 145)) | (1L << (CHAR - 145)) | (1L << (CHARACTER - 145)) | (1L << (INTERVAL - 145)) | (1L << (DATE - 145)) | (1L << (TIME - 145)) | (1L << (TIMESTAMP - 145)) | (1L << (YEAR - 145)) | (1L << (MONTH - 145)) | (1L << (DAY - 145)) | (1L << (HOUR - 145)) | (1L << (MINUTE - 145)) | (1L << (SECOND - 145)) | (1L << (CURRENT - 145)) | (1L << (ENABLE - 145)) | (1L << (DISABLE - 145)) | (1L << (CALL - 145)) | (1L << (PRESERVE - 145)) | (1L << (DEFINER - 145)) | (1L << (SQL - 145)) | (1L << (CASCADED - 145)) | (1L << (LOCAL - 145)) | (1L << (CLOSE - 145)) | (1L << (NEXT - 145)) | (1L << (NAME - 145)) | (1L << (COLLATION - 145)) | (1L << (NAMES - 145)) | (1L << (INTEGER - 145)) | (1L << (REAL - 145)) | (1L << (DECIMAL - 145)) | (1L << (TYPE - 145)) | (1L << (SMALLINT - 145)) | (1L << (BIGINT - 145)) | (1L << (NUMERIC - 145)) | (1L << (TEXT - 145)) | (1L << (REPEATABLE - 145)))) != 0) || ((((_la - 213)) & ~0x3f) == 0 && ((1L << (_la - 213)) & ((1L << (VARYING - 213)) | (1L << (NATIONAL - 213)) | (1L << (NCHAR - 213)) | (1L << (VALUE - 213)) | (1L << (TIES - 213)) | (1L << (CUBE - 213)) | (1L << (SETS - 213)) | (1L << (OTHERS - 213)) | (1L << (OVERLAPS - 213)) | (1L << (AT - 213)) | (1L << (DEC - 213)) | (1L << (MAXVALUE - 213)) | (1L << (ADMIN - 213)) | (1L << (BINARY - 213)) | (1L << (ESCAPE - 213)) | (1L << (EXCLUDE - 213)) | (1L << (MOD - 213)) | (1L << (PARTITION - 213)) | (1L << (UNKNOWN - 213)) | (1L << (ALWAYS - 213)) | (1L << (CASCADE - 213)) | (1L << (GENERATED - 213)) | (1L << (ISOLATION - 213)) | (1L << (LEVEL - 213)) | (1L << (NO - 213)) | (1L << (OPTION - 213)) | (1L << (PRIVILEGES - 213)) | (1L << (READ - 213)) | (1L << (ROLE - 213)) | (1L << (ROWS - 213)) | (1L << (START - 213)) | (1L << (TRANSACTION - 213)) | (1L << (ACTION - 213)) | (1L << (CACHE - 213)) | (1L << (CHARACTERISTICS - 213)) | (1L << (CLUSTER - 213)) | (1L << (COMMENTS - 213)) | (1L << (CONCURRENTLY - 213)) | (1L << (CONSTRAINTS - 213)) | (1L << (CYCLE - 213)) | (1L << (DATA - 213)) | (1L << (DATABASE - 213)))) != 0) || ((((_la - 277)) & ~0x3f) == 0 && ((1L << (_la - 277)) & ((1L << (DEFAULTS - 277)) | (1L << (DEFERRED - 277)) | (1L << (DEPENDS - 277)) | (1L << (DOMAIN - 277)) | (1L << (EXCLUDING - 277)) | (1L << (EXECUTE - 277)) | (1L << (EXTENDED - 277)) | (1L << (EXTENSION - 277)) | (1L << (EXTERNAL - 277)) | (1L << (FILTER - 277)) | (1L << (FIRST - 277)) | (1L << (FOLLOWING - 277)) | (1L << (FORCE - 277)) | (1L << (GLOBAL - 277)) | (1L << (IDENTITY - 277)) | (1L << (IMMEDIATE - 277)) | (1L << (INCLUDING - 277)) | (1L << (INCREMENT - 277)) | (1L << (INDEXES - 277)) | (1L << (INHERIT - 277)) | (1L << (INHERITS - 277)) | (1L << (INCLUDE - 277)) | (1L << (LANGUAGE - 277)) | (1L << (LARGE - 277)) | (1L << (LAST - 277)) | (1L << (LOGGED - 277)) | (1L << (MAIN - 277)) | (1L << (MATCH - 277)) | (1L << (MINVALUE - 277)) | (1L << (NOTHING - 277)) | (1L << (NULLS - 277)) | (1L << (OBJECT - 277)) | (1L << (OIDS - 277)) | (1L << (OVER - 277)) | (1L << (OWNED - 277)) | (1L << (OWNER - 277)) | (1L << (PARTIAL - 277)) | (1L << (PLAIN - 277)) | (1L << (PRECEDING - 277)) | (1L << (RANGE - 277)) | (1L << (RENAME - 277)) | (1L << (REPLICA - 277)) | (1L << (RESET - 277)) | (1L << (RESTART - 277)) | (1L << (RESTRICT - 277)) | (1L << (ROUTINE - 277)) | (1L << (RULE - 277)) | (1L << (SECURITY - 277)) | (1L << (SEQUENCE - 277)) | (1L << (SESSION - 277)) | (1L << (SHOW - 277)) | (1L << (SIMPLE - 277)) | (1L << (STATISTICS - 277)) | (1L << (STORAGE - 277)) | (1L << (TABLESPACE - 277)) | (1L << (TEMP - 277)) | (1L << (TEMPORARY - 277)) | (1L << (UNBOUNDED - 277)))) != 0) || ((((_la - 341)) & ~0x3f) == 0 && ((1L << (_la - 341)) & ((1L << (UNLOGGED - 341)) | (1L << (VALID - 341)) | (1L << (VALIDATE - 341)) | (1L << (WITHIN - 341)) | (1L << (WITHOUT - 341)) | (1L << (ZONE - 341)) | (1L << (OF - 341)) | (1L << (UESCAPE - 341)) | (1L << (GROUPS - 341)) | (1L << (RECURSIVE - 341)) | (1L << (INT - 341)) | (1L << (INT2 - 341)) | (1L << (INT4 - 341)) | (1L << (INT8 - 341)) | (1L << (FLOAT - 341)) | (1L << (FLOAT4 - 341)) | (1L << (FLOAT8 - 341)) | (1L << (VARCHAR - 341)) | (1L << (BYTEA - 341)) | (1L << (ENUM - 341)) | (1L << (POINT - 341)) | (1L << (LSEG - 341)) | (1L << (BOX - 341)) | (1L << (PATH - 341)) | (1L << (POLYGON - 341)) | (1L << (CIRCLE - 341)) | (1L << (INET - 341)) | (1L << (BIT - 341)) | (1L << (TSQUERY - 341)) | (1L << (XML - 341)) | (1L << (JSON - 341)) | (1L << (INT4RANGE - 341)) | (1L << (INT8RANGE - 341)) | (1L << (NUMRANGE - 341)) | (1L << (DATERANGE - 341)) | (1L << (TABLESAMPLE - 341)) | (1L << (ORDINALITY - 341)) | (1L << (CURRENT_SCHEMA - 341)) | (1L << (SETOF - 341)))) != 0) || ((((_la - 405)) & ~0x3f) == 0 && ((1L << (_la - 405)) & ((1L << (NFC - 405)) | (1L << (NFD - 405)) | (1L << (NFKC - 405)) | (1L << (NFKD - 405)) | (1L << (REF - 405)) | (1L << (PASSING - 405)) | (1L << (VERSION - 405)) | (1L << (YES - 405)) | (1L << (STANDALONE - 405)) | (1L << (MATERIALIZED - 405)) | (1L << (OPERATOR - 405)) | (1L << (SHARE - 405)) | (1L << (ROLLUP - 405)) | (1L << (ILIKE - 405)) | (1L << (SIMILAR - 405)) | (1L << (ISNULL - 405)) | (1L << (NOTNULL - 405)) | (1L << (DOCUMENT - 405)) | (1L << (NORMALIZED - 405)) | (1L << (VARIADIC - 405)) | (1L << (NOWAIT - 405)) | (1L << (LOCKED - 405)) | (1L << (COLUMNS - 405)) | (1L << (CONTENT - 405)) | (1L << (STRIP - 405)) | (1L << (WHITESPACE - 405)) | (1L << (CONFLICT - 405)) | (1L << (OVERRIDING - 405)) | (1L << (SYSTEM - 405)) | (1L << (ABORT - 405)) | (1L << (ABSOLUTE - 405)) | (1L << (ACCESS - 405)) | (1L << (AFTER - 405)) | (1L << (AGGREGATE - 405)) | (1L << (ALSO - 405)) | (1L << (ATTACH - 405)) | (1L << (ATTRIBUTE - 405)) | (1L << (BACKWARD - 405)) | (1L << (BEFORE - 405)) | (1L << (ASSERTION - 405)) | (1L << (ASSIGNMENT - 405)) | (1L << (CONTINUE - 405)) | (1L << (CONVERSION - 405)) | (1L << (COPY - 405)) | (1L << (COST - 405)) | (1L << (CSV - 405)) | (1L << (CALLED - 405)) | (1L << (CATALOG - 405)) | (1L << (CHAIN - 405)) | (1L << (CHECKPOINT - 405)) | (1L << (CLASS - 405)))) != 0) || ((((_la - 469)) & ~0x3f) == 0 && ((1L << (_la - 469)) & ((1L << (CONFIGURATION - 469)) | (1L << (COMMENT - 469)) | (1L << (DETACH - 469)) | (1L << (DICTIONARY - 469)) | (1L << (EXPRESSION - 469)) | (1L << (INSENSITIVE - 469)) | (1L << (DISCARD - 469)) | (1L << (OFF - 469)) | (1L << (INSTEAD - 469)) | (1L << (EXPLAIN - 469)) | (1L << (INPUT - 469)) | (1L << (INLINE - 469)) | (1L << (PARALLEL - 469)) | (1L << (LEAKPROOF - 469)) | (1L << (COMMITTED - 469)) | (1L << (ENCODING - 469)) | (1L << (IMPLICIT - 469)) | (1L << (DELIMITER - 469)) | (1L << (CURSOR - 469)) | (1L << (EACH - 469)) | (1L << (EVENT - 469)) | (1L << (DEALLOCATE - 469)) | (1L << (CONNECTION - 469)) | (1L << (DECLARE - 469)) | (1L << (FAMILY - 469)) | (1L << (FORWARD - 469)) | (1L << (EXCLUSIVE - 469)) | (1L << (FUNCTIONS - 469)) | (1L << (LOCATION - 469)) | (1L << (LABEL - 469)) | (1L << (DELIMITERS - 469)) | (1L << (HANDLER - 469)) | (1L << (HEADER - 469)) | (1L << (IMMUTABLE - 469)) | (1L << (GRANTED - 469)) | (1L << (HOLD - 469)) | (1L << (MAPPING - 469)) | (1L << (OLD - 469)) | (1L << (METHOD - 469)) | (1L << (LOAD - 469)) | (1L << (LISTEN - 469)) | (1L << (MODE - 469)) | (1L << (MOVE - 469)) | (1L << (PROCEDURAL - 469)) | (1L << (PARSER - 469)) | (1L << (PROCEDURES - 469)) | (1L << (ENCRYPTED - 469)) | (1L << (PUBLICATION - 469)) | (1L << (PROGRAM - 469)) | (1L << (REFERENCING - 469)) | (1L << (PLANS - 469)) | (1L << (REINDEX - 469)) | (1L << (PRIOR - 469)) | (1L << (PASSWORD - 469)) | (1L << (RELATIVE - 469)) | (1L << (QUOTE - 469)) | (1L << (ROUTINES - 469)) | (1L << (REPLACE - 469)) | (1L << (SNAPSHOT - 469)) | (1L << (REFRESH - 469)) | (1L << (PREPARE - 469)) | (1L << (OPTIONS - 469)) | (1L << (IMPORT - 469)))) != 0) || ((((_la - 533)) & ~0x3f) == 0 && ((1L << (_la - 533)) & ((1L << (INVOKER - 533)) | (1L << (NEW - 533)) | (1L << (PREPARED - 533)) | (1L << (SCROLL - 533)) | (1L << (SEQUENCES - 533)) | (1L << (SYSID - 533)) | (1L << (REASSIGN - 533)) | (1L << (SERVER - 533)) | (1L << (SUBSCRIPTION - 533)) | (1L << (SEARCH - 533)) | (1L << (SCHEMAS - 533)) | (1L << (RECHECK - 533)) | (1L << (POLICY - 533)) | (1L << (NOTIFY - 533)) | (1L << (LOCK - 533)) | (1L << (RELEASE - 533)) | (1L << (SERIALIZABLE - 533)) | (1L << (RETURNS - 533)) | (1L << (STATEMENT - 533)) | (1L << (STDIN - 533)) | (1L << (STDOUT - 533)) | (1L << (TABLES - 533)) | (1L << (SUPPORT - 533)) | (1L << (STABLE - 533)) | (1L << (TEMPLATE - 533)) | (1L << (UNENCRYPTED - 533)) | (1L << (VIEWS - 533)) | (1L << (UNCOMMITTED - 533)) | (1L << (TRANSFORM - 533)) | (1L << (UNLISTEN - 533)) | (1L << (TRUSTED - 533)) | (1L << (VALIDATOR - 533)) | (1L << (UNTIL - 533)) | (1L << (VACUUM - 533)) | (1L << (VOLATILE - 533)) | (1L << (STORED - 533)) | (1L << (WRITE - 533)) | (1L << (STRICT - 533)) | (1L << (TYPES - 533)) | (1L << (WRAPPER - 533)) | (1L << (WORK - 533)) | (1L << (FREEZE - 533)) | (1L << (AUTHORIZATION - 533)) | (1L << (VERBOSE - 533)) | (1L << (OUT - 533)) | (1L << (INOUT - 533)) | (1L << (INT16 - 533)) | (1L << (INT1 - 533)) | (1L << (ELEM_CONTAINED_BY_RANGE - 533)) | (1L << (IDENTIFIER_ - 533)))) != 0)) {
				{
				setState(8838);
				funcArgsWithDefaultsList();
				}
			}

			setState(8841);
			match(RP_);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class FuncArgsWithDefaultsListContext extends ParserRuleContext {
		public List funcArgWithDefault() {
			return getRuleContexts(FuncArgWithDefaultContext.class);
		}
		public FuncArgWithDefaultContext funcArgWithDefault(int i) {
			return getRuleContext(FuncArgWithDefaultContext.class,i);
		}
		public List COMMA_() { return getTokens(OpenGaussStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(OpenGaussStatementParser.COMMA_, i);
		}
		public FuncArgsWithDefaultsListContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_funcArgsWithDefaultsList; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitFuncArgsWithDefaultsList(this);
			else return visitor.visitChildren(this);
		}
	}

	public final FuncArgsWithDefaultsListContext funcArgsWithDefaultsList() throws RecognitionException {
		FuncArgsWithDefaultsListContext _localctx = new FuncArgsWithDefaultsListContext(_ctx, getState());
		enterRule(_localctx, 1238, RULE_funcArgsWithDefaultsList);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(8843);
			funcArgWithDefault();
			setState(8848);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA_) {
				{
				{
				setState(8844);
				match(COMMA_);
				setState(8845);
				funcArgWithDefault();
				}
				}
				setState(8850);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class FuncArgWithDefaultContext extends ParserRuleContext {
		public FuncArgContext funcArg() {
			return getRuleContext(FuncArgContext.class,0);
		}
		public TerminalNode DEFAULT() { return getToken(OpenGaussStatementParser.DEFAULT, 0); }
		public AExprContext aExpr() {
			return getRuleContext(AExprContext.class,0);
		}
		public TerminalNode EQ_() { return getToken(OpenGaussStatementParser.EQ_, 0); }
		public FuncArgWithDefaultContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_funcArgWithDefault; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitFuncArgWithDefault(this);
			else return visitor.visitChildren(this);
		}
	}

	public final FuncArgWithDefaultContext funcArgWithDefault() throws RecognitionException {
		FuncArgWithDefaultContext _localctx = new FuncArgWithDefaultContext(_ctx, getState());
		enterRule(_localctx, 1240, RULE_funcArgWithDefault);
		try {
			setState(8860);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,799,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(8851);
				funcArg();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(8852);
				funcArg();
				setState(8853);
				match(DEFAULT);
				setState(8854);
				aExpr(0);
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(8856);
				funcArg();
				setState(8857);
				match(EQ_);
				setState(8858);
				aExpr(0);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CreateLanguageContext extends ParserRuleContext {
		public TerminalNode CREATE() { return getToken(OpenGaussStatementParser.CREATE, 0); }
		public TerminalNode LANGUAGE() { return getToken(OpenGaussStatementParser.LANGUAGE, 0); }
		public NameContext name() {
			return getRuleContext(NameContext.class,0);
		}
		public TerminalNode OR() { return getToken(OpenGaussStatementParser.OR, 0); }
		public TerminalNode REPLACE() { return getToken(OpenGaussStatementParser.REPLACE, 0); }
		public TerminalNode TRUSTED() { return getToken(OpenGaussStatementParser.TRUSTED, 0); }
		public TerminalNode PROCEDURAL() { return getToken(OpenGaussStatementParser.PROCEDURAL, 0); }
		public TerminalNode HANDLER() { return getToken(OpenGaussStatementParser.HANDLER, 0); }
		public List handlerName() {
			return getRuleContexts(HandlerNameContext.class);
		}
		public HandlerNameContext handlerName(int i) {
			return getRuleContext(HandlerNameContext.class,i);
		}
		public TerminalNode LP_() { return getToken(OpenGaussStatementParser.LP_, 0); }
		public TransformElementListContext transformElementList() {
			return getRuleContext(TransformElementListContext.class,0);
		}
		public TerminalNode RP_() { return getToken(OpenGaussStatementParser.RP_, 0); }
		public TerminalNode INLINE() { return getToken(OpenGaussStatementParser.INLINE, 0); }
		public ValidatorClauseContext validatorClause() {
			return getRuleContext(ValidatorClauseContext.class,0);
		}
		public CreateLanguageContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_createLanguage; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitCreateLanguage(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CreateLanguageContext createLanguage() throws RecognitionException {
		CreateLanguageContext _localctx = new CreateLanguageContext(_ctx, getState());
		enterRule(_localctx, 1242, RULE_createLanguage);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(8862);
			match(CREATE);
			setState(8865);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==OR) {
				{
				setState(8863);
				match(OR);
				setState(8864);
				match(REPLACE);
				}
			}

			setState(8868);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==TRUSTED) {
				{
				setState(8867);
				match(TRUSTED);
				}
			}

			setState(8871);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==PROCEDURAL) {
				{
				setState(8870);
				match(PROCEDURAL);
				}
			}

			setState(8873);
			match(LANGUAGE);
			setState(8874);
			name();
			setState(8888);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case HANDLER:
				{
				setState(8875);
				match(HANDLER);
				setState(8876);
				handlerName();
				setState(8879);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==INLINE) {
					{
					setState(8877);
					match(INLINE);
					setState(8878);
					handlerName();
					}
				}

				setState(8882);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==NO || _la==VALIDATOR) {
					{
					setState(8881);
					validatorClause();
					}
				}

				}
				break;
			case LP_:
				{
				setState(8884);
				match(LP_);
				setState(8885);
				transformElementList();
				setState(8886);
				match(RP_);
				}
				break;
			case EOF:
			case SEMI_:
				break;
			default:
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class TransformElementListContext extends ParserRuleContext {
		public List FROM() { return getTokens(OpenGaussStatementParser.FROM); }
		public TerminalNode FROM(int i) {
			return getToken(OpenGaussStatementParser.FROM, i);
		}
		public List SQL() { return getTokens(OpenGaussStatementParser.SQL); }
		public TerminalNode SQL(int i) {
			return getToken(OpenGaussStatementParser.SQL, i);
		}
		public List WITH() { return getTokens(OpenGaussStatementParser.WITH); }
		public TerminalNode WITH(int i) {
			return getToken(OpenGaussStatementParser.WITH, i);
		}
		public List FUNCTION() { return getTokens(OpenGaussStatementParser.FUNCTION); }
		public TerminalNode FUNCTION(int i) {
			return getToken(OpenGaussStatementParser.FUNCTION, i);
		}
		public List functionWithArgtypes() {
			return getRuleContexts(FunctionWithArgtypesContext.class);
		}
		public FunctionWithArgtypesContext functionWithArgtypes(int i) {
			return getRuleContext(FunctionWithArgtypesContext.class,i);
		}
		public TerminalNode COMMA_() { return getToken(OpenGaussStatementParser.COMMA_, 0); }
		public TerminalNode TO() { return getToken(OpenGaussStatementParser.TO, 0); }
		public TransformElementListContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_transformElementList; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitTransformElementList(this);
			else return visitor.visitChildren(this);
		}
	}

	public final TransformElementListContext transformElementList() throws RecognitionException {
		TransformElementListContext _localctx = new TransformElementListContext(_ctx, getState());
		enterRule(_localctx, 1244, RULE_transformElementList);
		int _la;
		try {
			setState(8907);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,806,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(8890);
				match(FROM);
				setState(8891);
				match(SQL);
				setState(8892);
				match(WITH);
				setState(8893);
				match(FUNCTION);
				setState(8894);
				functionWithArgtypes();
				setState(8895);
				match(COMMA_);
				setState(8896);
				_la = _input.LA(1);
				if ( !(_la==FROM || _la==TO) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(8897);
				match(SQL);
				setState(8898);
				match(WITH);
				setState(8899);
				match(FUNCTION);
				setState(8900);
				functionWithArgtypes();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(8902);
				_la = _input.LA(1);
				if ( !(_la==FROM || _la==TO) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(8903);
				match(SQL);
				setState(8904);
				match(WITH);
				setState(8905);
				match(FUNCTION);
				setState(8906);
				functionWithArgtypes();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ValidatorClauseContext extends ParserRuleContext {
		public TerminalNode VALIDATOR() { return getToken(OpenGaussStatementParser.VALIDATOR, 0); }
		public HandlerNameContext handlerName() {
			return getRuleContext(HandlerNameContext.class,0);
		}
		public TerminalNode NO() { return getToken(OpenGaussStatementParser.NO, 0); }
		public ValidatorClauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_validatorClause; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitValidatorClause(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ValidatorClauseContext validatorClause() throws RecognitionException {
		ValidatorClauseContext _localctx = new ValidatorClauseContext(_ctx, getState());
		enterRule(_localctx, 1246, RULE_validatorClause);
		try {
			setState(8913);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case VALIDATOR:
				enterOuterAlt(_localctx, 1);
				{
				setState(8909);
				match(VALIDATOR);
				setState(8910);
				handlerName();
				}
				break;
			case NO:
				enterOuterAlt(_localctx, 2);
				{
				setState(8911);
				match(NO);
				setState(8912);
				match(VALIDATOR);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CreatePolicyContext extends ParserRuleContext {
		public TerminalNode CREATE() { return getToken(OpenGaussStatementParser.CREATE, 0); }
		public TerminalNode POLICY() { return getToken(OpenGaussStatementParser.POLICY, 0); }
		public NameContext name() {
			return getRuleContext(NameContext.class,0);
		}
		public TerminalNode ON() { return getToken(OpenGaussStatementParser.ON, 0); }
		public QualifiedNameContext qualifiedName() {
			return getRuleContext(QualifiedNameContext.class,0);
		}
		public TerminalNode AS() { return getToken(OpenGaussStatementParser.AS, 0); }
		public IdentifierContext identifier() {
			return getRuleContext(IdentifierContext.class,0);
		}
		public TerminalNode FOR() { return getToken(OpenGaussStatementParser.FOR, 0); }
		public RowSecurityCmdContext rowSecurityCmd() {
			return getRuleContext(RowSecurityCmdContext.class,0);
		}
		public TerminalNode TO() { return getToken(OpenGaussStatementParser.TO, 0); }
		public RoleListContext roleList() {
			return getRuleContext(RoleListContext.class,0);
		}
		public TerminalNode USING() { return getToken(OpenGaussStatementParser.USING, 0); }
		public List LP_() { return getTokens(OpenGaussStatementParser.LP_); }
		public TerminalNode LP_(int i) {
			return getToken(OpenGaussStatementParser.LP_, i);
		}
		public List aExpr() {
			return getRuleContexts(AExprContext.class);
		}
		public AExprContext aExpr(int i) {
			return getRuleContext(AExprContext.class,i);
		}
		public List RP_() { return getTokens(OpenGaussStatementParser.RP_); }
		public TerminalNode RP_(int i) {
			return getToken(OpenGaussStatementParser.RP_, i);
		}
		public TerminalNode WITH() { return getToken(OpenGaussStatementParser.WITH, 0); }
		public TerminalNode CHECK() { return getToken(OpenGaussStatementParser.CHECK, 0); }
		public CreatePolicyContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_createPolicy; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitCreatePolicy(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CreatePolicyContext createPolicy() throws RecognitionException {
		CreatePolicyContext _localctx = new CreatePolicyContext(_ctx, getState());
		enterRule(_localctx, 1248, RULE_createPolicy);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(8915);
			match(CREATE);
			setState(8916);
			match(POLICY);
			setState(8917);
			name();
			setState(8918);
			match(ON);
			setState(8919);
			qualifiedName();
			setState(8922);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==AS) {
				{
				setState(8920);
				match(AS);
				setState(8921);
				identifier();
				}
			}

			setState(8926);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==FOR) {
				{
				setState(8924);
				match(FOR);
				setState(8925);
				rowSecurityCmd();
				}
			}

			setState(8930);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==TO) {
				{
				setState(8928);
				match(TO);
				setState(8929);
				roleList();
				}
			}

			setState(8937);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==USING) {
				{
				setState(8932);
				match(USING);
				setState(8933);
				match(LP_);
				setState(8934);
				aExpr(0);
				setState(8935);
				match(RP_);
				}
			}

			setState(8945);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==WITH) {
				{
				setState(8939);
				match(WITH);
				setState(8940);
				match(CHECK);
				setState(8941);
				match(LP_);
				setState(8942);
				aExpr(0);
				setState(8943);
				match(RP_);
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CreateProcedureContext extends ParserRuleContext {
		public TerminalNode CREATE() { return getToken(OpenGaussStatementParser.CREATE, 0); }
		public TerminalNode PROCEDURE() { return getToken(OpenGaussStatementParser.PROCEDURE, 0); }
		public FuncNameContext funcName() {
			return getRuleContext(FuncNameContext.class,0);
		}
		public FuncArgsWithDefaultsContext funcArgsWithDefaults() {
			return getRuleContext(FuncArgsWithDefaultsContext.class,0);
		}
		public CreatefuncOptListContext createfuncOptList() {
			return getRuleContext(CreatefuncOptListContext.class,0);
		}
		public TerminalNode OR() { return getToken(OpenGaussStatementParser.OR, 0); }
		public TerminalNode REPLACE() { return getToken(OpenGaussStatementParser.REPLACE, 0); }
		public CreateProcedureContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_createProcedure; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitCreateProcedure(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CreateProcedureContext createProcedure() throws RecognitionException {
		CreateProcedureContext _localctx = new CreateProcedureContext(_ctx, getState());
		enterRule(_localctx, 1250, RULE_createProcedure);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(8947);
			match(CREATE);
			setState(8950);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==OR) {
				{
				setState(8948);
				match(OR);
				setState(8949);
				match(REPLACE);
				}
			}

			setState(8952);
			match(PROCEDURE);
			setState(8953);
			funcName();
			setState(8954);
			funcArgsWithDefaults();
			setState(8955);
			createfuncOptList();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CreatePublicationContext extends ParserRuleContext {
		public TerminalNode CREATE() { return getToken(OpenGaussStatementParser.CREATE, 0); }
		public TerminalNode PUBLICATION() { return getToken(OpenGaussStatementParser.PUBLICATION, 0); }
		public NameContext name() {
			return getRuleContext(NameContext.class,0);
		}
		public PublicationForTablesContext publicationForTables() {
			return getRuleContext(PublicationForTablesContext.class,0);
		}
		public TerminalNode WITH() { return getToken(OpenGaussStatementParser.WITH, 0); }
		public DefinitionContext definition() {
			return getRuleContext(DefinitionContext.class,0);
		}
		public CreatePublicationContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_createPublication; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitCreatePublication(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CreatePublicationContext createPublication() throws RecognitionException {
		CreatePublicationContext _localctx = new CreatePublicationContext(_ctx, getState());
		enterRule(_localctx, 1252, RULE_createPublication);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(8957);
			match(CREATE);
			setState(8958);
			match(PUBLICATION);
			setState(8959);
			name();
			setState(8961);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==FOR) {
				{
				setState(8960);
				publicationForTables();
				}
			}

			setState(8965);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==WITH) {
				{
				setState(8963);
				match(WITH);
				setState(8964);
				definition();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class PublicationForTablesContext extends ParserRuleContext {
		public TerminalNode FOR() { return getToken(OpenGaussStatementParser.FOR, 0); }
		public TerminalNode TABLE() { return getToken(OpenGaussStatementParser.TABLE, 0); }
		public RelationExprListContext relationExprList() {
			return getRuleContext(RelationExprListContext.class,0);
		}
		public TerminalNode ALL() { return getToken(OpenGaussStatementParser.ALL, 0); }
		public TerminalNode TABLES() { return getToken(OpenGaussStatementParser.TABLES, 0); }
		public PublicationForTablesContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_publicationForTables; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitPublicationForTables(this);
			else return visitor.visitChildren(this);
		}
	}

	public final PublicationForTablesContext publicationForTables() throws RecognitionException {
		PublicationForTablesContext _localctx = new PublicationForTablesContext(_ctx, getState());
		enterRule(_localctx, 1254, RULE_publicationForTables);
		try {
			setState(8973);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,816,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(8967);
				match(FOR);
				setState(8968);
				match(TABLE);
				setState(8969);
				relationExprList();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(8970);
				match(FOR);
				setState(8971);
				match(ALL);
				setState(8972);
				match(TABLES);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CreateRuleContext extends ParserRuleContext {
		public TerminalNode CREATE() { return getToken(OpenGaussStatementParser.CREATE, 0); }
		public TerminalNode RULE() { return getToken(OpenGaussStatementParser.RULE, 0); }
		public NameContext name() {
			return getRuleContext(NameContext.class,0);
		}
		public TerminalNode AS() { return getToken(OpenGaussStatementParser.AS, 0); }
		public TerminalNode ON() { return getToken(OpenGaussStatementParser.ON, 0); }
		public EventContext event() {
			return getRuleContext(EventContext.class,0);
		}
		public TerminalNode TO() { return getToken(OpenGaussStatementParser.TO, 0); }
		public QualifiedNameContext qualifiedName() {
			return getRuleContext(QualifiedNameContext.class,0);
		}
		public TerminalNode DO() { return getToken(OpenGaussStatementParser.DO, 0); }
		public RuleActionListContext ruleActionList() {
			return getRuleContext(RuleActionListContext.class,0);
		}
		public TerminalNode OR() { return getToken(OpenGaussStatementParser.OR, 0); }
		public TerminalNode REPLACE() { return getToken(OpenGaussStatementParser.REPLACE, 0); }
		public TerminalNode WHERE() { return getToken(OpenGaussStatementParser.WHERE, 0); }
		public AExprContext aExpr() {
			return getRuleContext(AExprContext.class,0);
		}
		public TerminalNode INSTEAD() { return getToken(OpenGaussStatementParser.INSTEAD, 0); }
		public TerminalNode ALSO() { return getToken(OpenGaussStatementParser.ALSO, 0); }
		public CreateRuleContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_createRule; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitCreateRule(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CreateRuleContext createRule() throws RecognitionException {
		CreateRuleContext _localctx = new CreateRuleContext(_ctx, getState());
		enterRule(_localctx, 1256, RULE_createRule);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(8975);
			match(CREATE);
			setState(8978);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==OR) {
				{
				setState(8976);
				match(OR);
				setState(8977);
				match(REPLACE);
				}
			}

			setState(8980);
			match(RULE);
			setState(8981);
			name();
			setState(8982);
			match(AS);
			setState(8983);
			match(ON);
			setState(8984);
			event();
			setState(8985);
			match(TO);
			setState(8986);
			qualifiedName();
			setState(8989);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==WHERE) {
				{
				setState(8987);
				match(WHERE);
				setState(8988);
				aExpr(0);
				}
			}

			setState(8991);
			match(DO);
			setState(8993);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==ALSO || _la==INSTEAD) {
				{
				setState(8992);
				_la = _input.LA(1);
				if ( !(_la==ALSO || _la==INSTEAD) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
			}

			setState(8995);
			ruleActionList();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class RuleActionListContext extends ParserRuleContext {
		public TerminalNode NOTHING() { return getToken(OpenGaussStatementParser.NOTHING, 0); }
		public RuleActionStmtContext ruleActionStmt() {
			return getRuleContext(RuleActionStmtContext.class,0);
		}
		public TerminalNode LP_() { return getToken(OpenGaussStatementParser.LP_, 0); }
		public RuleActionMultiContext ruleActionMulti() {
			return getRuleContext(RuleActionMultiContext.class,0);
		}
		public TerminalNode RP_() { return getToken(OpenGaussStatementParser.RP_, 0); }
		public RuleActionListContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_ruleActionList; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitRuleActionList(this);
			else return visitor.visitChildren(this);
		}
	}

	public final RuleActionListContext ruleActionList() throws RecognitionException {
		RuleActionListContext _localctx = new RuleActionListContext(_ctx, getState());
		enterRule(_localctx, 1258, RULE_ruleActionList);
		try {
			setState(9003);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,820,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(8997);
				match(NOTHING);
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(8998);
				ruleActionStmt();
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(8999);
				match(LP_);
				setState(9000);
				ruleActionMulti();
				setState(9001);
				match(RP_);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class RuleActionStmtContext extends ParserRuleContext {
		public SelectContext select() {
			return getRuleContext(SelectContext.class,0);
		}
		public InsertContext insert() {
			return getRuleContext(InsertContext.class,0);
		}
		public UpdateContext update() {
			return getRuleContext(UpdateContext.class,0);
		}
		public DeleteContext delete() {
			return getRuleContext(DeleteContext.class,0);
		}
		public NotifyStmtContext notifyStmt() {
			return getRuleContext(NotifyStmtContext.class,0);
		}
		public RuleActionStmtContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_ruleActionStmt; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitRuleActionStmt(this);
			else return visitor.visitChildren(this);
		}
	}

	public final RuleActionStmtContext ruleActionStmt() throws RecognitionException {
		RuleActionStmtContext _localctx = new RuleActionStmtContext(_ctx, getState());
		enterRule(_localctx, 1260, RULE_ruleActionStmt);
		try {
			setState(9010);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,821,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(9005);
				select();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(9006);
				insert();
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(9007);
				update();
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(9008);
				delete();
				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(9009);
				notifyStmt();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class RuleActionMultiContext extends ParserRuleContext {
		public List ruleActionStmt() {
			return getRuleContexts(RuleActionStmtContext.class);
		}
		public RuleActionStmtContext ruleActionStmt(int i) {
			return getRuleContext(RuleActionStmtContext.class,i);
		}
		public List SEMI_() { return getTokens(OpenGaussStatementParser.SEMI_); }
		public TerminalNode SEMI_(int i) {
			return getToken(OpenGaussStatementParser.SEMI_, i);
		}
		public RuleActionMultiContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_ruleActionMulti; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitRuleActionMulti(this);
			else return visitor.visitChildren(this);
		}
	}

	public final RuleActionMultiContext ruleActionMulti() throws RecognitionException {
		RuleActionMultiContext _localctx = new RuleActionMultiContext(_ctx, getState());
		enterRule(_localctx, 1262, RULE_ruleActionMulti);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(9013);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==LP_ || ((((_la - 80)) & ~0x3f) == 0 && ((1L << (_la - 80)) & ((1L << (SELECT - 80)) | (1L << (INSERT - 80)) | (1L << (UPDATE - 80)) | (1L << (DELETE - 80)) | (1L << (TABLE - 80)) | (1L << (VALUES - 80)) | (1L << (WITH - 80)))) != 0) || _la==NOTIFY) {
				{
				setState(9012);
				ruleActionStmt();
				}
			}

			setState(9021);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==SEMI_) {
				{
				{
				setState(9015);
				match(SEMI_);
				setState(9017);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==LP_ || ((((_la - 80)) & ~0x3f) == 0 && ((1L << (_la - 80)) & ((1L << (SELECT - 80)) | (1L << (INSERT - 80)) | (1L << (UPDATE - 80)) | (1L << (DELETE - 80)) | (1L << (TABLE - 80)) | (1L << (VALUES - 80)) | (1L << (WITH - 80)))) != 0) || _la==NOTIFY) {
					{
					setState(9016);
					ruleActionStmt();
					}
				}

				}
				}
				setState(9023);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class NotifyStmtContext extends ParserRuleContext {
		public TerminalNode NOTIFY() { return getToken(OpenGaussStatementParser.NOTIFY, 0); }
		public ColIdContext colId() {
			return getRuleContext(ColIdContext.class,0);
		}
		public TerminalNode COMMA_() { return getToken(OpenGaussStatementParser.COMMA_, 0); }
		public TerminalNode STRING_() { return getToken(OpenGaussStatementParser.STRING_, 0); }
		public NotifyStmtContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_notifyStmt; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitNotifyStmt(this);
			else return visitor.visitChildren(this);
		}
	}

	public final NotifyStmtContext notifyStmt() throws RecognitionException {
		NotifyStmtContext _localctx = new NotifyStmtContext(_ctx, getState());
		enterRule(_localctx, 1264, RULE_notifyStmt);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(9024);
			match(NOTIFY);
			setState(9025);
			colId();
			setState(9028);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==COMMA_) {
				{
				setState(9026);
				match(COMMA_);
				setState(9027);
				match(STRING_);
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CreateTriggerContext extends ParserRuleContext {
		public TerminalNode CREATE() { return getToken(OpenGaussStatementParser.CREATE, 0); }
		public TerminalNode TRIGGER() { return getToken(OpenGaussStatementParser.TRIGGER, 0); }
		public NameContext name() {
			return getRuleContext(NameContext.class,0);
		}
		public TriggerActionTimeContext triggerActionTime() {
			return getRuleContext(TriggerActionTimeContext.class,0);
		}
		public TriggerEventsContext triggerEvents() {
			return getRuleContext(TriggerEventsContext.class,0);
		}
		public TerminalNode ON() { return getToken(OpenGaussStatementParser.ON, 0); }
		public QualifiedNameContext qualifiedName() {
			return getRuleContext(QualifiedNameContext.class,0);
		}
		public TerminalNode EXECUTE() { return getToken(OpenGaussStatementParser.EXECUTE, 0); }
		public FuncNameContext funcName() {
			return getRuleContext(FuncNameContext.class,0);
		}
		public TerminalNode LP_() { return getToken(OpenGaussStatementParser.LP_, 0); }
		public TerminalNode RP_() { return getToken(OpenGaussStatementParser.RP_, 0); }
		public TerminalNode FUNCTION() { return getToken(OpenGaussStatementParser.FUNCTION, 0); }
		public TerminalNode PROCEDURE() { return getToken(OpenGaussStatementParser.PROCEDURE, 0); }
		public TriggerReferencingContext triggerReferencing() {
			return getRuleContext(TriggerReferencingContext.class,0);
		}
		public TriggerForSpecContext triggerForSpec() {
			return getRuleContext(TriggerForSpecContext.class,0);
		}
		public TriggerWhenContext triggerWhen() {
			return getRuleContext(TriggerWhenContext.class,0);
		}
		public TriggerFuncArgsContext triggerFuncArgs() {
			return getRuleContext(TriggerFuncArgsContext.class,0);
		}
		public TerminalNode CONSTRAINT() { return getToken(OpenGaussStatementParser.CONSTRAINT, 0); }
		public ConstraintAttributeSpecContext constraintAttributeSpec() {
			return getRuleContext(ConstraintAttributeSpecContext.class,0);
		}
		public TerminalNode FOR() { return getToken(OpenGaussStatementParser.FOR, 0); }
		public TerminalNode EACH() { return getToken(OpenGaussStatementParser.EACH, 0); }
		public TerminalNode ROW() { return getToken(OpenGaussStatementParser.ROW, 0); }
		public TerminalNode FROM() { return getToken(OpenGaussStatementParser.FROM, 0); }
		public CreateTriggerContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_createTrigger; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitCreateTrigger(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CreateTriggerContext createTrigger() throws RecognitionException {
		CreateTriggerContext _localctx = new CreateTriggerContext(_ctx, getState());
		enterRule(_localctx, 1266, RULE_createTrigger);
		int _la;
		try {
			setState(9074);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,831,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(9030);
				match(CREATE);
				setState(9031);
				match(TRIGGER);
				setState(9032);
				name();
				setState(9033);
				triggerActionTime();
				setState(9034);
				triggerEvents();
				setState(9035);
				match(ON);
				setState(9036);
				qualifiedName();
				setState(9038);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==REFERENCING) {
					{
					setState(9037);
					triggerReferencing();
					}
				}

				setState(9041);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==FOR) {
					{
					setState(9040);
					triggerForSpec();
					}
				}

				setState(9044);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==WHEN) {
					{
					setState(9043);
					triggerWhen();
					}
				}

				setState(9046);
				match(EXECUTE);
				setState(9047);
				_la = _input.LA(1);
				if ( !(_la==FUNCTION || _la==PROCEDURE) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(9048);
				funcName();
				setState(9049);
				match(LP_);
				setState(9051);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (((((_la - 51)) & ~0x3f) == 0 && ((1L << (_la - 51)) & ((1L << (UNICODE_ESCAPE - 51)) | (1L << (SELECT - 51)) | (1L << (INSERT - 51)) | (1L << (UPDATE - 51)) | (1L << (DELETE - 51)) | (1L << (CREATE - 51)) | (1L << (ALTER - 51)) | (1L << (DROP - 51)) | (1L << (TRUNCATE - 51)) | (1L << (SCHEMA - 51)) | (1L << (GRANT - 51)) | (1L << (REVOKE - 51)) | (1L << (ADD - 51)) | (1L << (SET - 51)) | (1L << (TABLE - 51)) | (1L << (COLUMN - 51)) | (1L << (INDEX - 51)) | (1L << (CONSTRAINT - 51)) | (1L << (PRIMARY - 51)) | (1L << (UNIQUE - 51)) | (1L << (FOREIGN - 51)) | (1L << (KEY - 51)) | (1L << (POSITION - 51)) | (1L << (PRECISION - 51)) | (1L << (FUNCTION - 51)) | (1L << (TRIGGER - 51)) | (1L << (PROCEDURE - 51)) | (1L << (VIEW - 51)) | (1L << (INTO - 51)) | (1L << (VALUES - 51)) | (1L << (WITH - 51)) | (1L << (UNION - 51)) | (1L << (DISTINCT - 51)) | (1L << (CASE - 51)) | (1L << (WHEN - 51)))) != 0) || ((((_la - 115)) & ~0x3f) == 0 && ((1L << (_la - 115)) & ((1L << (CAST - 115)) | (1L << (TRIM - 115)) | (1L << (SUBSTRING - 115)) | (1L << (FROM - 115)) | (1L << (NATURAL - 115)) | (1L << (JOIN - 115)) | (1L << (FULL - 115)) | (1L << (INNER - 115)) | (1L << (OUTER - 115)) | (1L << (LEFT - 115)) | (1L << (RIGHT - 115)) | (1L << (CROSS - 115)) | (1L << (USING - 115)) | (1L << (WHERE - 115)) | (1L << (AS - 115)) | (1L << (ON - 115)) | (1L << (IF - 115)) | (1L << (ELSE - 115)) | (1L << (THEN - 115)) | (1L << (FOR - 115)) | (1L << (TO - 115)) | (1L << (AND - 115)) | (1L << (OR - 115)) | (1L << (IS - 115)) | (1L << (NOT - 115)) | (1L << (NULL - 115)) | (1L << (TRUE - 115)) | (1L << (FALSE - 115)) | (1L << (EXISTS - 115)) | (1L << (BETWEEN - 115)) | (1L << (IN - 115)) | (1L << (ALL - 115)) | (1L << (ANY - 115)) | (1L << (LIKE - 115)) | (1L << (ORDER - 115)) | (1L << (GROUP - 115)) | (1L << (BY - 115)) | (1L << (ASC - 115)) | (1L << (DESC - 115)) | (1L << (HAVING - 115)) | (1L << (LIMIT - 115)) | (1L << (OFFSET - 115)) | (1L << (BEGIN - 115)) | (1L << (COMMIT - 115)) | (1L << (ROLLBACK - 115)) | (1L << (SAVEPOINT - 115)) | (1L << (BOOLEAN - 115)) | (1L << (DOUBLE - 115)) | (1L << (CHAR - 115)) | (1L << (CHARACTER - 115)) | (1L << (ARRAY - 115)) | (1L << (INTERVAL - 115)) | (1L << (TIME - 115)) | (1L << (TIMESTAMP - 115)) | (1L << (LOCALTIME - 115)) | (1L << (LOCALTIMESTAMP - 115)) | (1L << (YEAR - 115)) | (1L << (MONTH - 115)) | (1L << (DAY - 115)) | (1L << (HOUR - 115)) | (1L << (MINUTE - 115)))) != 0) || ((((_la - 179)) & ~0x3f) == 0 && ((1L << (_la - 179)) & ((1L << (SECOND - 179)) | (1L << (DEFAULT - 179)) | (1L << (CURRENT - 179)) | (1L << (ENABLE - 179)) | (1L << (DISABLE - 179)) | (1L << (CALL - 179)) | (1L << (PRESERVE - 179)) | (1L << (DO - 179)) | (1L << (DEFINER - 179)) | (1L << (CURRENT_USER - 179)) | (1L << (SQL - 179)) | (1L << (CASCADED - 179)) | (1L << (LOCAL - 179)) | (1L << (CLOSE - 179)) | (1L << (NEXT - 179)) | (1L << (NAME - 179)) | (1L << (COLLATION - 179)) | (1L << (NAMES - 179)) | (1L << (INTEGER - 179)) | (1L << (REAL - 179)) | (1L << (DECIMAL - 179)) | (1L << (TYPE - 179)) | (1L << (SMALLINT - 179)) | (1L << (BIGINT - 179)) | (1L << (NUMERIC - 179)) | (1L << (TEXT - 179)) | (1L << (REPEATABLE - 179)) | (1L << (CURRENT_DATE - 179)) | (1L << (CURRENT_TIME - 179)) | (1L << (CURRENT_TIMESTAMP - 179)) | (1L << (NULLIF - 179)) | (1L << (VARYING - 179)) | (1L << (NATIONAL - 179)) | (1L << (NCHAR - 179)) | (1L << (VALUE - 179)) | (1L << (BOTH - 179)) | (1L << (LEADING - 179)) | (1L << (TRAILING - 179)) | (1L << (COALESCE - 179)) | (1L << (INTERSECT - 179)) | (1L << (EXCEPT - 179)) | (1L << (TIES - 179)) | (1L << (FETCH - 179)) | (1L << (CUBE - 179)) | (1L << (GROUPING - 179)) | (1L << (SETS - 179)) | (1L << (WINDOW - 179)) | (1L << (OTHERS - 179)) | (1L << (OVERLAPS - 179)) | (1L << (SOME - 179)) | (1L << (AT - 179)) | (1L << (DEC - 179)) | (1L << (END - 179)) | (1L << (MAXVALUE - 179)) | (1L << (ADMIN - 179)) | (1L << (BINARY - 179)))) != 0) || ((((_la - 243)) & ~0x3f) == 0 && ((1L << (_la - 243)) & ((1L << (ESCAPE - 243)) | (1L << (EXCLUDE - 243)) | (1L << (MOD - 243)) | (1L << (PARTITION - 243)) | (1L << (ROW - 243)) | (1L << (UNKNOWN - 243)) | (1L << (ALWAYS - 243)) | (1L << (CASCADE - 243)) | (1L << (CHECK - 243)) | (1L << (GENERATED - 243)) | (1L << (ISOLATION - 243)) | (1L << (LEVEL - 243)) | (1L << (NO - 243)) | (1L << (OPTION - 243)) | (1L << (PRIVILEGES - 243)) | (1L << (READ - 243)) | (1L << (REFERENCES - 243)) | (1L << (ROLE - 243)) | (1L << (ROWS - 243)) | (1L << (START - 243)) | (1L << (TRANSACTION - 243)) | (1L << (USER - 243)) | (1L << (ACTION - 243)) | (1L << (CACHE - 243)) | (1L << (CHARACTERISTICS - 243)) | (1L << (CLUSTER - 243)) | (1L << (COLLATE - 243)) | (1L << (COMMENTS - 243)) | (1L << (CONCURRENTLY - 243)) | (1L << (CONSTRAINTS - 243)) | (1L << (CYCLE - 243)) | (1L << (DATA - 243)) | (1L << (DATABASE - 243)) | (1L << (DEFAULTS - 243)) | (1L << (DEFERRABLE - 243)) | (1L << (DEFERRED - 243)) | (1L << (DEPENDS - 243)) | (1L << (DOMAIN - 243)) | (1L << (EXCLUDING - 243)) | (1L << (EXECUTE - 243)) | (1L << (EXTENDED - 243)) | (1L << (EXTENSION - 243)) | (1L << (EXTERNAL - 243)) | (1L << (EXTRACT - 243)) | (1L << (FILTER - 243)) | (1L << (FIRST - 243)) | (1L << (FOLLOWING - 243)) | (1L << (FORCE - 243)) | (1L << (GLOBAL - 243)) | (1L << (IDENTITY - 243)) | (1L << (IMMEDIATE - 243)) | (1L << (INCLUDING - 243)) | (1L << (INCREMENT - 243)) | (1L << (INDEXES - 243)) | (1L << (INHERIT - 243)) | (1L << (INHERITS - 243)) | (1L << (INITIALLY - 243)) | (1L << (INCLUDE - 243)) | (1L << (LANGUAGE - 243)) | (1L << (LARGE - 243)) | (1L << (LAST - 243)) | (1L << (LOGGED - 243)) | (1L << (MAIN - 243)))) != 0) || ((((_la - 307)) & ~0x3f) == 0 && ((1L << (_la - 307)) & ((1L << (MATCH - 307)) | (1L << (MINVALUE - 307)) | (1L << (NOTHING - 307)) | (1L << (NULLS - 307)) | (1L << (OBJECT - 307)) | (1L << (OIDS - 307)) | (1L << (ONLY - 307)) | (1L << (OVER - 307)) | (1L << (OWNED - 307)) | (1L << (OWNER - 307)) | (1L << (PARTIAL - 307)) | (1L << (PLAIN - 307)) | (1L << (PRECEDING - 307)) | (1L << (RANGE - 307)) | (1L << (RENAME - 307)) | (1L << (REPLICA - 307)) | (1L << (RESET - 307)) | (1L << (RESTART - 307)) | (1L << (RESTRICT - 307)) | (1L << (ROUTINE - 307)) | (1L << (RULE - 307)) | (1L << (SECURITY - 307)) | (1L << (SEQUENCE - 307)) | (1L << (SESSION - 307)) | (1L << (SESSION_USER - 307)) | (1L << (SHOW - 307)) | (1L << (SIMPLE - 307)) | (1L << (STATISTICS - 307)) | (1L << (STORAGE - 307)) | (1L << (TABLESPACE - 307)) | (1L << (TEMP - 307)) | (1L << (TEMPORARY - 307)) | (1L << (UNBOUNDED - 307)) | (1L << (UNLOGGED - 307)) | (1L << (VALID - 307)) | (1L << (VALIDATE - 307)) | (1L << (WITHIN - 307)) | (1L << (WITHOUT - 307)) | (1L << (ZONE - 307)) | (1L << (OF - 307)) | (1L << (UESCAPE - 307)) | (1L << (GROUPS - 307)) | (1L << (RECURSIVE - 307)) | (1L << (INT - 307)) | (1L << (INT2 - 307)) | (1L << (INT4 - 307)) | (1L << (FLOAT - 307)) | (1L << (FLOAT4 - 307)) | (1L << (VARCHAR - 307)) | (1L << (BYTEA - 307)) | (1L << (ENUM - 307)) | (1L << (POINT - 307)) | (1L << (LSEG - 307)) | (1L << (BOX - 307)) | (1L << (PATH - 307)) | (1L << (POLYGON - 307)))) != 0) || ((((_la - 371)) & ~0x3f) == 0 && ((1L << (_la - 371)) & ((1L << (CIRCLE - 371)) | (1L << (INET - 371)) | (1L << (BIT - 371)) | (1L << (TSQUERY - 371)) | (1L << (XML - 371)) | (1L << (JSON - 371)) | (1L << (INT4RANGE - 371)) | (1L << (INT8RANGE - 371)) | (1L << (NUMRANGE - 371)) | (1L << (DATERANGE - 371)) | (1L << (TABLESAMPLE - 371)) | (1L << (ORDINALITY - 371)) | (1L << (CURRENT_ROLE - 371)) | (1L << (CURRENT_CATALOG - 371)) | (1L << (CURRENT_SCHEMA - 371)) | (1L << (OVERLAY - 371)) | (1L << (XMLCONCAT - 371)) | (1L << (XMLELEMENT - 371)) | (1L << (XMLEXISTS - 371)) | (1L << (XMLFOREST - 371)) | (1L << (XMLPARSE - 371)) | (1L << (XMLPI - 371)) | (1L << (XMLROOT - 371)) | (1L << (XMLSERIALIZE - 371)) | (1L << (TREAT - 371)) | (1L << (SETOF - 371)) | (1L << (NFC - 371)) | (1L << (NFD - 371)) | (1L << (NFKC - 371)) | (1L << (NFKD - 371)) | (1L << (XMLATTRIBUTES - 371)) | (1L << (REF - 371)) | (1L << (PASSING - 371)) | (1L << (VERSION - 371)) | (1L << (YES - 371)) | (1L << (STANDALONE - 371)) | (1L << (GREATEST - 371)) | (1L << (LEAST - 371)) | (1L << (MATERIALIZED - 371)) | (1L << (OPERATOR - 371)) | (1L << (SHARE - 371)) | (1L << (ROLLUP - 371)) | (1L << (ILIKE - 371)) | (1L << (SIMILAR - 371)) | (1L << (ISNULL - 371)) | (1L << (NOTNULL - 371)) | (1L << (SYMMETRIC - 371)) | (1L << (DOCUMENT - 371)) | (1L << (NORMALIZED - 371)) | (1L << (ASYMMETRIC - 371)) | (1L << (VARIADIC - 371)) | (1L << (NOWAIT - 371)) | (1L << (LOCKED - 371)) | (1L << (XMLTABLE - 371)) | (1L << (COLUMNS - 371)) | (1L << (CONTENT - 371)))) != 0) || ((((_la - 435)) & ~0x3f) == 0 && ((1L << (_la - 435)) & ((1L << (STRIP - 435)) | (1L << (WHITESPACE - 435)) | (1L << (XMLNAMESPACES - 435)) | (1L << (PLACING - 435)) | (1L << (RETURNING - 435)) | (1L << (LATERAL - 435)) | (1L << (NONE - 435)) | (1L << (ANALYSE - 435)) | (1L << (ANALYZE - 435)) | (1L << (CONFLICT - 435)) | (1L << (OVERRIDING - 435)) | (1L << (SYSTEM - 435)) | (1L << (ABORT - 435)) | (1L << (ABSOLUTE - 435)) | (1L << (ACCESS - 435)) | (1L << (AFTER - 435)) | (1L << (AGGREGATE - 435)) | (1L << (ALSO - 435)) | (1L << (ATTACH - 435)) | (1L << (ATTRIBUTE - 435)) | (1L << (BACKWARD - 435)) | (1L << (BEFORE - 435)) | (1L << (ASSERTION - 435)) | (1L << (ASSIGNMENT - 435)) | (1L << (CONTINUE - 435)) | (1L << (CONVERSION - 435)) | (1L << (COPY - 435)) | (1L << (COST - 435)) | (1L << (CSV - 435)) | (1L << (CALLED - 435)) | (1L << (CATALOG - 435)) | (1L << (CHAIN - 435)) | (1L << (CHECKPOINT - 435)) | (1L << (CLASS - 435)) | (1L << (CONFIGURATION - 435)) | (1L << (COMMENT - 435)) | (1L << (DETACH - 435)) | (1L << (DICTIONARY - 435)) | (1L << (EXPRESSION - 435)) | (1L << (INSENSITIVE - 435)) | (1L << (DISCARD - 435)) | (1L << (OFF - 435)) | (1L << (INSTEAD - 435)) | (1L << (EXPLAIN - 435)) | (1L << (INPUT - 435)) | (1L << (INLINE - 435)) | (1L << (PARALLEL - 435)) | (1L << (LEAKPROOF - 435)) | (1L << (COMMITTED - 435)) | (1L << (ENCODING - 435)) | (1L << (IMPLICIT - 435)) | (1L << (DELIMITER - 435)) | (1L << (CURSOR - 435)) | (1L << (EACH - 435)) | (1L << (EVENT - 435)) | (1L << (DEALLOCATE - 435)) | (1L << (CONNECTION - 435)) | (1L << (DECLARE - 435)) | (1L << (FAMILY - 435)) | (1L << (FORWARD - 435)) | (1L << (EXCLUSIVE - 435)) | (1L << (FUNCTIONS - 435)) | (1L << (LOCATION - 435)))) != 0) || ((((_la - 499)) & ~0x3f) == 0 && ((1L << (_la - 499)) & ((1L << (LABEL - 499)) | (1L << (DELIMITERS - 499)) | (1L << (HANDLER - 499)) | (1L << (HEADER - 499)) | (1L << (IMMUTABLE - 499)) | (1L << (GRANTED - 499)) | (1L << (HOLD - 499)) | (1L << (MAPPING - 499)) | (1L << (OLD - 499)) | (1L << (METHOD - 499)) | (1L << (LOAD - 499)) | (1L << (LISTEN - 499)) | (1L << (MODE - 499)) | (1L << (MOVE - 499)) | (1L << (PROCEDURAL - 499)) | (1L << (PARSER - 499)) | (1L << (PROCEDURES - 499)) | (1L << (ENCRYPTED - 499)) | (1L << (PUBLICATION - 499)) | (1L << (PROGRAM - 499)) | (1L << (REFERENCING - 499)) | (1L << (PLANS - 499)) | (1L << (REINDEX - 499)) | (1L << (PRIOR - 499)) | (1L << (PASSWORD - 499)) | (1L << (RELATIVE - 499)) | (1L << (QUOTE - 499)) | (1L << (ROUTINES - 499)) | (1L << (REPLACE - 499)) | (1L << (SNAPSHOT - 499)) | (1L << (REFRESH - 499)) | (1L << (PREPARE - 499)) | (1L << (OPTIONS - 499)) | (1L << (IMPORT - 499)) | (1L << (INVOKER - 499)) | (1L << (NEW - 499)) | (1L << (PREPARED - 499)) | (1L << (SCROLL - 499)) | (1L << (SEQUENCES - 499)) | (1L << (SYSID - 499)) | (1L << (REASSIGN - 499)) | (1L << (SERVER - 499)) | (1L << (SUBSCRIPTION - 499)) | (1L << (SEARCH - 499)) | (1L << (SCHEMAS - 499)) | (1L << (RECHECK - 499)) | (1L << (POLICY - 499)) | (1L << (NOTIFY - 499)) | (1L << (LOCK - 499)) | (1L << (RELEASE - 499)) | (1L << (SERIALIZABLE - 499)) | (1L << (RETURNS - 499)) | (1L << (STATEMENT - 499)) | (1L << (STDIN - 499)) | (1L << (STDOUT - 499)) | (1L << (TABLES - 499)) | (1L << (SUPPORT - 499)) | (1L << (STABLE - 499)) | (1L << (TEMPLATE - 499)) | (1L << (UNENCRYPTED - 499)) | (1L << (VIEWS - 499)) | (1L << (UNCOMMITTED - 499)) | (1L << (TRANSFORM - 499)) | (1L << (UNLISTEN - 499)))) != 0) || ((((_la - 563)) & ~0x3f) == 0 && ((1L << (_la - 563)) & ((1L << (TRUSTED - 563)) | (1L << (VALIDATOR - 563)) | (1L << (UNTIL - 563)) | (1L << (VACUUM - 563)) | (1L << (VOLATILE - 563)) | (1L << (STORED - 563)) | (1L << (WRITE - 563)) | (1L << (STRICT - 563)) | (1L << (TYPES - 563)) | (1L << (WRAPPER - 563)) | (1L << (WORK - 563)) | (1L << (FREEZE - 563)) | (1L << (AUTHORIZATION - 563)) | (1L << (VERBOSE - 563)) | (1L << (OUT - 563)) | (1L << (INOUT - 563)) | (1L << (INT16 - 563)) | (1L << (INT1 - 563)) | (1L << (ELEM_CONTAINED_BY_RANGE - 563)) | (1L << (IDENTIFIER_ - 563)) | (1L << (STRING_ - 563)) | (1L << (NUMBER_ - 563)))) != 0)) {
					{
					setState(9050);
					triggerFuncArgs();
					}
				}

				setState(9053);
				match(RP_);
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(9055);
				match(CREATE);
				setState(9056);
				match(CONSTRAINT);
				setState(9057);
				match(TRIGGER);
				setState(9060);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==FROM) {
					{
					setState(9058);
					match(FROM);
					setState(9059);
					qualifiedName();
					}
				}

				setState(9062);
				constraintAttributeSpec();
				setState(9063);
				match(FOR);
				setState(9064);
				match(EACH);
				setState(9065);
				match(ROW);
				setState(9066);
				triggerWhen();
				setState(9067);
				match(EXECUTE);
				setState(9068);
				_la = _input.LA(1);
				if ( !(_la==FUNCTION || _la==PROCEDURE) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(9069);
				funcName();
				setState(9070);
				match(LP_);
				setState(9071);
				triggerFuncArgs();
				setState(9072);
				match(RP_);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class TriggerEventsContext extends ParserRuleContext {
		public List triggerOneEvent() {
			return getRuleContexts(TriggerOneEventContext.class);
		}
		public TriggerOneEventContext triggerOneEvent(int i) {
			return getRuleContext(TriggerOneEventContext.class,i);
		}
		public List OR() { return getTokens(OpenGaussStatementParser.OR); }
		public TerminalNode OR(int i) {
			return getToken(OpenGaussStatementParser.OR, i);
		}
		public TriggerEventsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_triggerEvents; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitTriggerEvents(this);
			else return visitor.visitChildren(this);
		}
	}

	public final TriggerEventsContext triggerEvents() throws RecognitionException {
		TriggerEventsContext _localctx = new TriggerEventsContext(_ctx, getState());
		enterRule(_localctx, 1268, RULE_triggerEvents);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(9076);
			triggerOneEvent();
			setState(9081);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==OR) {
				{
				{
				setState(9077);
				match(OR);
				setState(9078);
				triggerOneEvent();
				}
				}
				setState(9083);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class TriggerOneEventContext extends ParserRuleContext {
		public TerminalNode INSERT() { return getToken(OpenGaussStatementParser.INSERT, 0); }
		public TerminalNode DELETE() { return getToken(OpenGaussStatementParser.DELETE, 0); }
		public TerminalNode UPDATE() { return getToken(OpenGaussStatementParser.UPDATE, 0); }
		public TerminalNode OF() { return getToken(OpenGaussStatementParser.OF, 0); }
		public ColumnListContext columnList() {
			return getRuleContext(ColumnListContext.class,0);
		}
		public TerminalNode TRUNCATE() { return getToken(OpenGaussStatementParser.TRUNCATE, 0); }
		public TriggerOneEventContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_triggerOneEvent; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitTriggerOneEvent(this);
			else return visitor.visitChildren(this);
		}
	}

	public final TriggerOneEventContext triggerOneEvent() throws RecognitionException {
		TriggerOneEventContext _localctx = new TriggerOneEventContext(_ctx, getState());
		enterRule(_localctx, 1270, RULE_triggerOneEvent);
		try {
			setState(9091);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,833,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(9084);
				match(INSERT);
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(9085);
				match(DELETE);
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(9086);
				match(UPDATE);
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(9087);
				match(UPDATE);
				setState(9088);
				match(OF);
				setState(9089);
				columnList();
				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(9090);
				match(TRUNCATE);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class TriggerActionTimeContext extends ParserRuleContext {
		public TerminalNode BEFORE() { return getToken(OpenGaussStatementParser.BEFORE, 0); }
		public TerminalNode AFTER() { return getToken(OpenGaussStatementParser.AFTER, 0); }
		public TerminalNode INSTEAD() { return getToken(OpenGaussStatementParser.INSTEAD, 0); }
		public TerminalNode OF() { return getToken(OpenGaussStatementParser.OF, 0); }
		public TriggerActionTimeContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_triggerActionTime; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitTriggerActionTime(this);
			else return visitor.visitChildren(this);
		}
	}

	public final TriggerActionTimeContext triggerActionTime() throws RecognitionException {
		TriggerActionTimeContext _localctx = new TriggerActionTimeContext(_ctx, getState());
		enterRule(_localctx, 1272, RULE_triggerActionTime);
		try {
			setState(9097);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case BEFORE:
				enterOuterAlt(_localctx, 1);
				{
				setState(9093);
				match(BEFORE);
				}
				break;
			case AFTER:
				enterOuterAlt(_localctx, 2);
				{
				setState(9094);
				match(AFTER);
				}
				break;
			case INSTEAD:
				enterOuterAlt(_localctx, 3);
				{
				setState(9095);
				match(INSTEAD);
				setState(9096);
				match(OF);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class TriggerFuncArgsContext extends ParserRuleContext {
		public List triggerFuncArg() {
			return getRuleContexts(TriggerFuncArgContext.class);
		}
		public TriggerFuncArgContext triggerFuncArg(int i) {
			return getRuleContext(TriggerFuncArgContext.class,i);
		}
		public List COMMA_() { return getTokens(OpenGaussStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(OpenGaussStatementParser.COMMA_, i);
		}
		public TriggerFuncArgsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_triggerFuncArgs; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitTriggerFuncArgs(this);
			else return visitor.visitChildren(this);
		}
	}

	public final TriggerFuncArgsContext triggerFuncArgs() throws RecognitionException {
		TriggerFuncArgsContext _localctx = new TriggerFuncArgsContext(_ctx, getState());
		enterRule(_localctx, 1274, RULE_triggerFuncArgs);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(9099);
			triggerFuncArg();
			setState(9104);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA_) {
				{
				{
				setState(9100);
				match(COMMA_);
				setState(9101);
				triggerFuncArg();
				}
				}
				setState(9106);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class TriggerFuncArgContext extends ParserRuleContext {
		public TerminalNode NUMBER_() { return getToken(OpenGaussStatementParser.NUMBER_, 0); }
		public TerminalNode STRING_() { return getToken(OpenGaussStatementParser.STRING_, 0); }
		public ColLabelContext colLabel() {
			return getRuleContext(ColLabelContext.class,0);
		}
		public TriggerFuncArgContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_triggerFuncArg; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitTriggerFuncArg(this);
			else return visitor.visitChildren(this);
		}
	}

	public final TriggerFuncArgContext triggerFuncArg() throws RecognitionException {
		TriggerFuncArgContext _localctx = new TriggerFuncArgContext(_ctx, getState());
		enterRule(_localctx, 1276, RULE_triggerFuncArg);
		try {
			setState(9110);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case NUMBER_:
				enterOuterAlt(_localctx, 1);
				{
				setState(9107);
				match(NUMBER_);
				}
				break;
			case STRING_:
				enterOuterAlt(_localctx, 2);
				{
				setState(9108);
				match(STRING_);
				}
				break;
			case UNICODE_ESCAPE:
			case SELECT:
			case INSERT:
			case UPDATE:
			case DELETE:
			case CREATE:
			case ALTER:
			case DROP:
			case TRUNCATE:
			case SCHEMA:
			case GRANT:
			case REVOKE:
			case ADD:
			case SET:
			case TABLE:
			case COLUMN:
			case INDEX:
			case CONSTRAINT:
			case PRIMARY:
			case UNIQUE:
			case FOREIGN:
			case KEY:
			case POSITION:
			case PRECISION:
			case FUNCTION:
			case TRIGGER:
			case PROCEDURE:
			case VIEW:
			case INTO:
			case VALUES:
			case WITH:
			case UNION:
			case DISTINCT:
			case CASE:
			case WHEN:
			case CAST:
			case TRIM:
			case SUBSTRING:
			case FROM:
			case NATURAL:
			case JOIN:
			case FULL:
			case INNER:
			case OUTER:
			case LEFT:
			case RIGHT:
			case CROSS:
			case USING:
			case WHERE:
			case AS:
			case ON:
			case IF:
			case ELSE:
			case THEN:
			case FOR:
			case TO:
			case AND:
			case OR:
			case IS:
			case NOT:
			case NULL:
			case TRUE:
			case FALSE:
			case EXISTS:
			case BETWEEN:
			case IN:
			case ALL:
			case ANY:
			case LIKE:
			case ORDER:
			case GROUP:
			case BY:
			case ASC:
			case DESC:
			case HAVING:
			case LIMIT:
			case OFFSET:
			case BEGIN:
			case COMMIT:
			case ROLLBACK:
			case SAVEPOINT:
			case BOOLEAN:
			case DOUBLE:
			case CHAR:
			case CHARACTER:
			case ARRAY:
			case INTERVAL:
			case TIME:
			case TIMESTAMP:
			case LOCALTIME:
			case LOCALTIMESTAMP:
			case YEAR:
			case MONTH:
			case DAY:
			case HOUR:
			case MINUTE:
			case SECOND:
			case DEFAULT:
			case CURRENT:
			case ENABLE:
			case DISABLE:
			case CALL:
			case PRESERVE:
			case DO:
			case DEFINER:
			case CURRENT_USER:
			case SQL:
			case CASCADED:
			case LOCAL:
			case CLOSE:
			case NEXT:
			case NAME:
			case COLLATION:
			case NAMES:
			case INTEGER:
			case REAL:
			case DECIMAL:
			case TYPE:
			case SMALLINT:
			case BIGINT:
			case NUMERIC:
			case TEXT:
			case REPEATABLE:
			case CURRENT_DATE:
			case CURRENT_TIME:
			case CURRENT_TIMESTAMP:
			case NULLIF:
			case VARYING:
			case NATIONAL:
			case NCHAR:
			case VALUE:
			case BOTH:
			case LEADING:
			case TRAILING:
			case COALESCE:
			case INTERSECT:
			case EXCEPT:
			case TIES:
			case FETCH:
			case CUBE:
			case GROUPING:
			case SETS:
			case WINDOW:
			case OTHERS:
			case OVERLAPS:
			case SOME:
			case AT:
			case DEC:
			case END:
			case MAXVALUE:
			case ADMIN:
			case BINARY:
			case ESCAPE:
			case EXCLUDE:
			case MOD:
			case PARTITION:
			case ROW:
			case UNKNOWN:
			case ALWAYS:
			case CASCADE:
			case CHECK:
			case GENERATED:
			case ISOLATION:
			case LEVEL:
			case NO:
			case OPTION:
			case PRIVILEGES:
			case READ:
			case REFERENCES:
			case ROLE:
			case ROWS:
			case START:
			case TRANSACTION:
			case USER:
			case ACTION:
			case CACHE:
			case CHARACTERISTICS:
			case CLUSTER:
			case COLLATE:
			case COMMENTS:
			case CONCURRENTLY:
			case CONSTRAINTS:
			case CYCLE:
			case DATA:
			case DATABASE:
			case DEFAULTS:
			case DEFERRABLE:
			case DEFERRED:
			case DEPENDS:
			case DOMAIN:
			case EXCLUDING:
			case EXECUTE:
			case EXTENDED:
			case EXTENSION:
			case EXTERNAL:
			case EXTRACT:
			case FILTER:
			case FIRST:
			case FOLLOWING:
			case FORCE:
			case GLOBAL:
			case IDENTITY:
			case IMMEDIATE:
			case INCLUDING:
			case INCREMENT:
			case INDEXES:
			case INHERIT:
			case INHERITS:
			case INITIALLY:
			case INCLUDE:
			case LANGUAGE:
			case LARGE:
			case LAST:
			case LOGGED:
			case MAIN:
			case MATCH:
			case MINVALUE:
			case NOTHING:
			case NULLS:
			case OBJECT:
			case OIDS:
			case ONLY:
			case OVER:
			case OWNED:
			case OWNER:
			case PARTIAL:
			case PLAIN:
			case PRECEDING:
			case RANGE:
			case RENAME:
			case REPLICA:
			case RESET:
			case RESTART:
			case RESTRICT:
			case ROUTINE:
			case RULE:
			case SECURITY:
			case SEQUENCE:
			case SESSION:
			case SESSION_USER:
			case SHOW:
			case SIMPLE:
			case STATISTICS:
			case STORAGE:
			case TABLESPACE:
			case TEMP:
			case TEMPORARY:
			case UNBOUNDED:
			case UNLOGGED:
			case VALID:
			case VALIDATE:
			case WITHIN:
			case WITHOUT:
			case ZONE:
			case OF:
			case UESCAPE:
			case GROUPS:
			case RECURSIVE:
			case INT:
			case INT2:
			case INT4:
			case FLOAT:
			case FLOAT4:
			case VARCHAR:
			case BYTEA:
			case ENUM:
			case POINT:
			case LSEG:
			case BOX:
			case PATH:
			case POLYGON:
			case CIRCLE:
			case INET:
			case BIT:
			case TSQUERY:
			case XML:
			case JSON:
			case INT4RANGE:
			case INT8RANGE:
			case NUMRANGE:
			case DATERANGE:
			case TABLESAMPLE:
			case ORDINALITY:
			case CURRENT_ROLE:
			case CURRENT_CATALOG:
			case CURRENT_SCHEMA:
			case OVERLAY:
			case XMLCONCAT:
			case XMLELEMENT:
			case XMLEXISTS:
			case XMLFOREST:
			case XMLPARSE:
			case XMLPI:
			case XMLROOT:
			case XMLSERIALIZE:
			case TREAT:
			case SETOF:
			case NFC:
			case NFD:
			case NFKC:
			case NFKD:
			case XMLATTRIBUTES:
			case REF:
			case PASSING:
			case VERSION:
			case YES:
			case STANDALONE:
			case GREATEST:
			case LEAST:
			case MATERIALIZED:
			case OPERATOR:
			case SHARE:
			case ROLLUP:
			case ILIKE:
			case SIMILAR:
			case ISNULL:
			case NOTNULL:
			case SYMMETRIC:
			case DOCUMENT:
			case NORMALIZED:
			case ASYMMETRIC:
			case VARIADIC:
			case NOWAIT:
			case LOCKED:
			case XMLTABLE:
			case COLUMNS:
			case CONTENT:
			case STRIP:
			case WHITESPACE:
			case XMLNAMESPACES:
			case PLACING:
			case RETURNING:
			case LATERAL:
			case NONE:
			case ANALYSE:
			case ANALYZE:
			case CONFLICT:
			case OVERRIDING:
			case SYSTEM:
			case ABORT:
			case ABSOLUTE:
			case ACCESS:
			case AFTER:
			case AGGREGATE:
			case ALSO:
			case ATTACH:
			case ATTRIBUTE:
			case BACKWARD:
			case BEFORE:
			case ASSERTION:
			case ASSIGNMENT:
			case CONTINUE:
			case CONVERSION:
			case COPY:
			case COST:
			case CSV:
			case CALLED:
			case CATALOG:
			case CHAIN:
			case CHECKPOINT:
			case CLASS:
			case CONFIGURATION:
			case COMMENT:
			case DETACH:
			case DICTIONARY:
			case EXPRESSION:
			case INSENSITIVE:
			case DISCARD:
			case OFF:
			case INSTEAD:
			case EXPLAIN:
			case INPUT:
			case INLINE:
			case PARALLEL:
			case LEAKPROOF:
			case COMMITTED:
			case ENCODING:
			case IMPLICIT:
			case DELIMITER:
			case CURSOR:
			case EACH:
			case EVENT:
			case DEALLOCATE:
			case CONNECTION:
			case DECLARE:
			case FAMILY:
			case FORWARD:
			case EXCLUSIVE:
			case FUNCTIONS:
			case LOCATION:
			case LABEL:
			case DELIMITERS:
			case HANDLER:
			case HEADER:
			case IMMUTABLE:
			case GRANTED:
			case HOLD:
			case MAPPING:
			case OLD:
			case METHOD:
			case LOAD:
			case LISTEN:
			case MODE:
			case MOVE:
			case PROCEDURAL:
			case PARSER:
			case PROCEDURES:
			case ENCRYPTED:
			case PUBLICATION:
			case PROGRAM:
			case REFERENCING:
			case PLANS:
			case REINDEX:
			case PRIOR:
			case PASSWORD:
			case RELATIVE:
			case QUOTE:
			case ROUTINES:
			case REPLACE:
			case SNAPSHOT:
			case REFRESH:
			case PREPARE:
			case OPTIONS:
			case IMPORT:
			case INVOKER:
			case NEW:
			case PREPARED:
			case SCROLL:
			case SEQUENCES:
			case SYSID:
			case REASSIGN:
			case SERVER:
			case SUBSCRIPTION:
			case SEARCH:
			case SCHEMAS:
			case RECHECK:
			case POLICY:
			case NOTIFY:
			case LOCK:
			case RELEASE:
			case SERIALIZABLE:
			case RETURNS:
			case STATEMENT:
			case STDIN:
			case STDOUT:
			case TABLES:
			case SUPPORT:
			case STABLE:
			case TEMPLATE:
			case UNENCRYPTED:
			case VIEWS:
			case UNCOMMITTED:
			case TRANSFORM:
			case UNLISTEN:
			case TRUSTED:
			case VALIDATOR:
			case UNTIL:
			case VACUUM:
			case VOLATILE:
			case STORED:
			case WRITE:
			case STRICT:
			case TYPES:
			case WRAPPER:
			case WORK:
			case FREEZE:
			case AUTHORIZATION:
			case VERBOSE:
			case OUT:
			case INOUT:
			case INT16:
			case INT1:
			case ELEM_CONTAINED_BY_RANGE:
			case IDENTIFIER_:
				enterOuterAlt(_localctx, 3);
				{
				setState(9109);
				colLabel();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class TriggerWhenContext extends ParserRuleContext {
		public TerminalNode WHEN() { return getToken(OpenGaussStatementParser.WHEN, 0); }
		public TerminalNode LP_() { return getToken(OpenGaussStatementParser.LP_, 0); }
		public AExprContext aExpr() {
			return getRuleContext(AExprContext.class,0);
		}
		public TerminalNode RP_() { return getToken(OpenGaussStatementParser.RP_, 0); }
		public TriggerWhenContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_triggerWhen; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitTriggerWhen(this);
			else return visitor.visitChildren(this);
		}
	}

	public final TriggerWhenContext triggerWhen() throws RecognitionException {
		TriggerWhenContext _localctx = new TriggerWhenContext(_ctx, getState());
		enterRule(_localctx, 1278, RULE_triggerWhen);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(9112);
			match(WHEN);
			setState(9113);
			match(LP_);
			setState(9114);
			aExpr(0);
			setState(9115);
			match(RP_);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class TriggerForSpecContext extends ParserRuleContext {
		public TerminalNode FOR() { return getToken(OpenGaussStatementParser.FOR, 0); }
		public TerminalNode ROW() { return getToken(OpenGaussStatementParser.ROW, 0); }
		public TerminalNode STATEMENT() { return getToken(OpenGaussStatementParser.STATEMENT, 0); }
		public TerminalNode EACH() { return getToken(OpenGaussStatementParser.EACH, 0); }
		public TriggerForSpecContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_triggerForSpec; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitTriggerForSpec(this);
			else return visitor.visitChildren(this);
		}
	}

	public final TriggerForSpecContext triggerForSpec() throws RecognitionException {
		TriggerForSpecContext _localctx = new TriggerForSpecContext(_ctx, getState());
		enterRule(_localctx, 1280, RULE_triggerForSpec);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(9117);
			match(FOR);
			setState(9119);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==EACH) {
				{
				setState(9118);
				match(EACH);
				}
			}

			setState(9121);
			_la = _input.LA(1);
			if ( !(_la==ROW || _la==STATEMENT) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class TriggerReferencingContext extends ParserRuleContext {
		public TerminalNode REFERENCING() { return getToken(OpenGaussStatementParser.REFERENCING, 0); }
		public TriggerTransitionsContext triggerTransitions() {
			return getRuleContext(TriggerTransitionsContext.class,0);
		}
		public TriggerReferencingContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_triggerReferencing; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitTriggerReferencing(this);
			else return visitor.visitChildren(this);
		}
	}

	public final TriggerReferencingContext triggerReferencing() throws RecognitionException {
		TriggerReferencingContext _localctx = new TriggerReferencingContext(_ctx, getState());
		enterRule(_localctx, 1282, RULE_triggerReferencing);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(9123);
			match(REFERENCING);
			setState(9124);
			triggerTransitions();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class TriggerTransitionsContext extends ParserRuleContext {
		public List triggerTransition() {
			return getRuleContexts(TriggerTransitionContext.class);
		}
		public TriggerTransitionContext triggerTransition(int i) {
			return getRuleContext(TriggerTransitionContext.class,i);
		}
		public TriggerTransitionsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_triggerTransitions; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitTriggerTransitions(this);
			else return visitor.visitChildren(this);
		}
	}

	public final TriggerTransitionsContext triggerTransitions() throws RecognitionException {
		TriggerTransitionsContext _localctx = new TriggerTransitionsContext(_ctx, getState());
		enterRule(_localctx, 1284, RULE_triggerTransitions);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(9127); 
			_errHandler.sync(this);
			_la = _input.LA(1);
			do {
				{
				{
				setState(9126);
				triggerTransition();
				}
				}
				setState(9129); 
				_errHandler.sync(this);
				_la = _input.LA(1);
			} while ( _la==OLD || _la==NEW );
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class TriggerTransitionContext extends ParserRuleContext {
		public TransitionOldOrNewContext transitionOldOrNew() {
			return getRuleContext(TransitionOldOrNewContext.class,0);
		}
		public TransitionRowOrTableContext transitionRowOrTable() {
			return getRuleContext(TransitionRowOrTableContext.class,0);
		}
		public TransitionRelNameContext transitionRelName() {
			return getRuleContext(TransitionRelNameContext.class,0);
		}
		public TerminalNode AS() { return getToken(OpenGaussStatementParser.AS, 0); }
		public TriggerTransitionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_triggerTransition; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitTriggerTransition(this);
			else return visitor.visitChildren(this);
		}
	}

	public final TriggerTransitionContext triggerTransition() throws RecognitionException {
		TriggerTransitionContext _localctx = new TriggerTransitionContext(_ctx, getState());
		enterRule(_localctx, 1286, RULE_triggerTransition);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(9131);
			transitionOldOrNew();
			setState(9132);
			transitionRowOrTable();
			setState(9134);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==AS) {
				{
				setState(9133);
				match(AS);
				}
			}

			setState(9136);
			transitionRelName();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class TransitionRelNameContext extends ParserRuleContext {
		public ColIdContext colId() {
			return getRuleContext(ColIdContext.class,0);
		}
		public TransitionRelNameContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_transitionRelName; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitTransitionRelName(this);
			else return visitor.visitChildren(this);
		}
	}

	public final TransitionRelNameContext transitionRelName() throws RecognitionException {
		TransitionRelNameContext _localctx = new TransitionRelNameContext(_ctx, getState());
		enterRule(_localctx, 1288, RULE_transitionRelName);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(9138);
			colId();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class TransitionRowOrTableContext extends ParserRuleContext {
		public TerminalNode TABLE() { return getToken(OpenGaussStatementParser.TABLE, 0); }
		public TerminalNode ROW() { return getToken(OpenGaussStatementParser.ROW, 0); }
		public TransitionRowOrTableContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_transitionRowOrTable; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitTransitionRowOrTable(this);
			else return visitor.visitChildren(this);
		}
	}

	public final TransitionRowOrTableContext transitionRowOrTable() throws RecognitionException {
		TransitionRowOrTableContext _localctx = new TransitionRowOrTableContext(_ctx, getState());
		enterRule(_localctx, 1290, RULE_transitionRowOrTable);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(9140);
			_la = _input.LA(1);
			if ( !(_la==TABLE || _la==ROW) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class TransitionOldOrNewContext extends ParserRuleContext {
		public TerminalNode OLD() { return getToken(OpenGaussStatementParser.OLD, 0); }
		public TerminalNode NEW() { return getToken(OpenGaussStatementParser.NEW, 0); }
		public TransitionOldOrNewContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_transitionOldOrNew; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitTransitionOldOrNew(this);
			else return visitor.visitChildren(this);
		}
	}

	public final TransitionOldOrNewContext transitionOldOrNew() throws RecognitionException {
		TransitionOldOrNewContext _localctx = new TransitionOldOrNewContext(_ctx, getState());
		enterRule(_localctx, 1292, RULE_transitionOldOrNew);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(9142);
			_la = _input.LA(1);
			if ( !(_la==OLD || _la==NEW) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CreateSequenceContext extends ParserRuleContext {
		public TerminalNode CREATE() { return getToken(OpenGaussStatementParser.CREATE, 0); }
		public TerminalNode SEQUENCE() { return getToken(OpenGaussStatementParser.SEQUENCE, 0); }
		public QualifiedNameContext qualifiedName() {
			return getRuleContext(QualifiedNameContext.class,0);
		}
		public TempOptionContext tempOption() {
			return getRuleContext(TempOptionContext.class,0);
		}
		public IfNotExistsContext ifNotExists() {
			return getRuleContext(IfNotExistsContext.class,0);
		}
		public SeqOptListContext seqOptList() {
			return getRuleContext(SeqOptListContext.class,0);
		}
		public CreateSequenceContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_createSequence; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitCreateSequence(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CreateSequenceContext createSequence() throws RecognitionException {
		CreateSequenceContext _localctx = new CreateSequenceContext(_ctx, getState());
		enterRule(_localctx, 1294, RULE_createSequence);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(9144);
			match(CREATE);
			setState(9146);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==LOCAL || ((((_la - 292)) & ~0x3f) == 0 && ((1L << (_la - 292)) & ((1L << (GLOBAL - 292)) | (1L << (TEMP - 292)) | (1L << (TEMPORARY - 292)) | (1L << (UNLOGGED - 292)))) != 0)) {
				{
				setState(9145);
				tempOption();
				}
			}

			setState(9148);
			match(SEQUENCE);
			setState(9150);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,841,_ctx) ) {
			case 1:
				{
				setState(9149);
				ifNotExists();
				}
				break;
			}
			setState(9152);
			qualifiedName();
			setState(9154);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==AS || ((((_la - 239)) & ~0x3f) == 0 && ((1L << (_la - 239)) & ((1L << (MAXVALUE - 239)) | (1L << (NO - 239)) | (1L << (START - 239)) | (1L << (CACHE - 239)) | (1L << (CYCLE - 239)) | (1L << (INCREMENT - 239)))) != 0) || ((((_la - 308)) & ~0x3f) == 0 && ((1L << (_la - 308)) & ((1L << (MINVALUE - 308)) | (1L << (OWNED - 308)) | (1L << (RESTART - 308)) | (1L << (SEQUENCE - 308)))) != 0)) {
				{
				setState(9153);
				seqOptList();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class TempOptionContext extends ParserRuleContext {
		public TerminalNode TEMPORARY() { return getToken(OpenGaussStatementParser.TEMPORARY, 0); }
		public TerminalNode TEMP() { return getToken(OpenGaussStatementParser.TEMP, 0); }
		public TerminalNode LOCAL() { return getToken(OpenGaussStatementParser.LOCAL, 0); }
		public TerminalNode GLOBAL() { return getToken(OpenGaussStatementParser.GLOBAL, 0); }
		public TerminalNode UNLOGGED() { return getToken(OpenGaussStatementParser.UNLOGGED, 0); }
		public TempOptionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_tempOption; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitTempOption(this);
			else return visitor.visitChildren(this);
		}
	}

	public final TempOptionContext tempOption() throws RecognitionException {
		TempOptionContext _localctx = new TempOptionContext(_ctx, getState());
		enterRule(_localctx, 1296, RULE_tempOption);
		int _la;
		try {
			setState(9161);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case LOCAL:
			case GLOBAL:
			case TEMP:
			case TEMPORARY:
				enterOuterAlt(_localctx, 1);
				{
				{
				setState(9157);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==LOCAL || _la==GLOBAL) {
					{
					setState(9156);
					_la = _input.LA(1);
					if ( !(_la==LOCAL || _la==GLOBAL) ) {
					_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					}
				}

				setState(9159);
				_la = _input.LA(1);
				if ( !(_la==TEMP || _la==TEMPORARY) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
				}
				break;
			case UNLOGGED:
				enterOuterAlt(_localctx, 2);
				{
				setState(9160);
				match(UNLOGGED);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CreateServerContext extends ParserRuleContext {
		public TerminalNode CREATE() { return getToken(OpenGaussStatementParser.CREATE, 0); }
		public TerminalNode SERVER() { return getToken(OpenGaussStatementParser.SERVER, 0); }
		public List name() {
			return getRuleContexts(NameContext.class);
		}
		public NameContext name(int i) {
			return getRuleContext(NameContext.class,i);
		}
		public TerminalNode FOREIGN() { return getToken(OpenGaussStatementParser.FOREIGN, 0); }
		public TerminalNode DATA() { return getToken(OpenGaussStatementParser.DATA, 0); }
		public TerminalNode WRAPPER() { return getToken(OpenGaussStatementParser.WRAPPER, 0); }
		public CreateGenericOptionsContext createGenericOptions() {
			return getRuleContext(CreateGenericOptionsContext.class,0);
		}
		public IfNotExistsContext ifNotExists() {
			return getRuleContext(IfNotExistsContext.class,0);
		}
		public TerminalNode TYPE() { return getToken(OpenGaussStatementParser.TYPE, 0); }
		public TerminalNode STRING_() { return getToken(OpenGaussStatementParser.STRING_, 0); }
		public ForeignServerVersionContext foreignServerVersion() {
			return getRuleContext(ForeignServerVersionContext.class,0);
		}
		public CreateServerContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_createServer; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitCreateServer(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CreateServerContext createServer() throws RecognitionException {
		CreateServerContext _localctx = new CreateServerContext(_ctx, getState());
		enterRule(_localctx, 1298, RULE_createServer);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(9163);
			match(CREATE);
			setState(9164);
			match(SERVER);
			setState(9166);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,845,_ctx) ) {
			case 1:
				{
				setState(9165);
				ifNotExists();
				}
				break;
			}
			setState(9168);
			name();
			setState(9171);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==TYPE) {
				{
				setState(9169);
				match(TYPE);
				setState(9170);
				match(STRING_);
				}
			}

			setState(9174);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==VERSION) {
				{
				setState(9173);
				foreignServerVersion();
				}
			}

			setState(9176);
			match(FOREIGN);
			setState(9177);
			match(DATA);
			setState(9178);
			match(WRAPPER);
			setState(9179);
			name();
			setState(9180);
			createGenericOptions();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CreateStatisticsContext extends ParserRuleContext {
		public TerminalNode CREATE() { return getToken(OpenGaussStatementParser.CREATE, 0); }
		public TerminalNode STATISTICS() { return getToken(OpenGaussStatementParser.STATISTICS, 0); }
		public AnyNameContext anyName() {
			return getRuleContext(AnyNameContext.class,0);
		}
		public OptNameListContext optNameList() {
			return getRuleContext(OptNameListContext.class,0);
		}
		public TerminalNode ON() { return getToken(OpenGaussStatementParser.ON, 0); }
		public ExprListContext exprList() {
			return getRuleContext(ExprListContext.class,0);
		}
		public TerminalNode FROM() { return getToken(OpenGaussStatementParser.FROM, 0); }
		public FromListContext fromList() {
			return getRuleContext(FromListContext.class,0);
		}
		public IfNotExistsContext ifNotExists() {
			return getRuleContext(IfNotExistsContext.class,0);
		}
		public CreateStatisticsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_createStatistics; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitCreateStatistics(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CreateStatisticsContext createStatistics() throws RecognitionException {
		CreateStatisticsContext _localctx = new CreateStatisticsContext(_ctx, getState());
		enterRule(_localctx, 1300, RULE_createStatistics);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(9182);
			match(CREATE);
			setState(9183);
			match(STATISTICS);
			setState(9185);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,848,_ctx) ) {
			case 1:
				{
				setState(9184);
				ifNotExists();
				}
				break;
			}
			setState(9187);
			anyName();
			setState(9188);
			optNameList();
			setState(9189);
			match(ON);
			setState(9190);
			exprList(0);
			setState(9191);
			match(FROM);
			setState(9192);
			fromList(0);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CreateSubscriptionContext extends ParserRuleContext {
		public TerminalNode CREATE() { return getToken(OpenGaussStatementParser.CREATE, 0); }
		public TerminalNode SUBSCRIPTION() { return getToken(OpenGaussStatementParser.SUBSCRIPTION, 0); }
		public NameContext name() {
			return getRuleContext(NameContext.class,0);
		}
		public TerminalNode CONNECTION() { return getToken(OpenGaussStatementParser.CONNECTION, 0); }
		public TerminalNode STRING_() { return getToken(OpenGaussStatementParser.STRING_, 0); }
		public TerminalNode PUBLICATION() { return getToken(OpenGaussStatementParser.PUBLICATION, 0); }
		public PublicationNameListContext publicationNameList() {
			return getRuleContext(PublicationNameListContext.class,0);
		}
		public TerminalNode WITH() { return getToken(OpenGaussStatementParser.WITH, 0); }
		public DefinitionContext definition() {
			return getRuleContext(DefinitionContext.class,0);
		}
		public CreateSubscriptionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_createSubscription; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitCreateSubscription(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CreateSubscriptionContext createSubscription() throws RecognitionException {
		CreateSubscriptionContext _localctx = new CreateSubscriptionContext(_ctx, getState());
		enterRule(_localctx, 1302, RULE_createSubscription);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(9194);
			match(CREATE);
			setState(9195);
			match(SUBSCRIPTION);
			setState(9196);
			name();
			setState(9197);
			match(CONNECTION);
			setState(9198);
			match(STRING_);
			setState(9199);
			match(PUBLICATION);
			setState(9200);
			publicationNameList();
			setState(9203);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==WITH) {
				{
				setState(9201);
				match(WITH);
				setState(9202);
				definition();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CreateTablespaceContext extends ParserRuleContext {
		public TerminalNode CREATE() { return getToken(OpenGaussStatementParser.CREATE, 0); }
		public TerminalNode TABLESPACE() { return getToken(OpenGaussStatementParser.TABLESPACE, 0); }
		public NameContext name() {
			return getRuleContext(NameContext.class,0);
		}
		public TerminalNode LOCATION() { return getToken(OpenGaussStatementParser.LOCATION, 0); }
		public TerminalNode STRING_() { return getToken(OpenGaussStatementParser.STRING_, 0); }
		public TerminalNode OWNER() { return getToken(OpenGaussStatementParser.OWNER, 0); }
		public RoleSpecContext roleSpec() {
			return getRuleContext(RoleSpecContext.class,0);
		}
		public TerminalNode RELATIVE() { return getToken(OpenGaussStatementParser.RELATIVE, 0); }
		public TerminalNode WITH() { return getToken(OpenGaussStatementParser.WITH, 0); }
		public ReloptionsContext reloptions() {
			return getRuleContext(ReloptionsContext.class,0);
		}
		public TerminalNode MAXSIZE() { return getToken(OpenGaussStatementParser.MAXSIZE, 0); }
		public FileSizeLiteralContext fileSizeLiteral() {
			return getRuleContext(FileSizeLiteralContext.class,0);
		}
		public TerminalNode EQ_() { return getToken(OpenGaussStatementParser.EQ_, 0); }
		public CreateTablespaceContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_createTablespace; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitCreateTablespace(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CreateTablespaceContext createTablespace() throws RecognitionException {
		CreateTablespaceContext _localctx = new CreateTablespaceContext(_ctx, getState());
		enterRule(_localctx, 1304, RULE_createTablespace);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(9205);
			match(CREATE);
			setState(9206);
			match(TABLESPACE);
			setState(9207);
			name();
			setState(9210);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==OWNER) {
				{
				setState(9208);
				match(OWNER);
				setState(9209);
				roleSpec();
				}
			}

			setState(9213);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==RELATIVE) {
				{
				setState(9212);
				match(RELATIVE);
				}
			}

			setState(9215);
			match(LOCATION);
			setState(9216);
			match(STRING_);
			setState(9219);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==WITH) {
				{
				setState(9217);
				match(WITH);
				setState(9218);
				reloptions();
				}
			}

			setState(9226);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==MAXSIZE) {
				{
				setState(9221);
				match(MAXSIZE);
				setState(9223);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQ_) {
					{
					setState(9222);
					match(EQ_);
					}
				}

				setState(9225);
				fileSizeLiteral();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CreateTextSearchContext extends ParserRuleContext {
		public TerminalNode CREATE() { return getToken(OpenGaussStatementParser.CREATE, 0); }
		public TerminalNode TEXT() { return getToken(OpenGaussStatementParser.TEXT, 0); }
		public TerminalNode SEARCH() { return getToken(OpenGaussStatementParser.SEARCH, 0); }
		public AnyNameContext anyName() {
			return getRuleContext(AnyNameContext.class,0);
		}
		public DefinitionContext definition() {
			return getRuleContext(DefinitionContext.class,0);
		}
		public TerminalNode CONFIGURATION() { return getToken(OpenGaussStatementParser.CONFIGURATION, 0); }
		public TerminalNode DICTIONARY() { return getToken(OpenGaussStatementParser.DICTIONARY, 0); }
		public TerminalNode PARSER() { return getToken(OpenGaussStatementParser.PARSER, 0); }
		public TerminalNode TEMPLATE() { return getToken(OpenGaussStatementParser.TEMPLATE, 0); }
		public CreateTextSearchContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_createTextSearch; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitCreateTextSearch(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CreateTextSearchContext createTextSearch() throws RecognitionException {
		CreateTextSearchContext _localctx = new CreateTextSearchContext(_ctx, getState());
		enterRule(_localctx, 1306, RULE_createTextSearch);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(9228);
			match(CREATE);
			setState(9229);
			match(TEXT);
			setState(9230);
			match(SEARCH);
			setState(9231);
			_la = _input.LA(1);
			if ( !(((((_la - 469)) & ~0x3f) == 0 && ((1L << (_la - 469)) & ((1L << (CONFIGURATION - 469)) | (1L << (DICTIONARY - 469)) | (1L << (PARSER - 469)))) != 0) || _la==TEMPLATE) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			setState(9232);
			anyName();
			setState(9233);
			definition();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CreateTransformContext extends ParserRuleContext {
		public TerminalNode CREATE() { return getToken(OpenGaussStatementParser.CREATE, 0); }
		public TerminalNode TRANSFORM() { return getToken(OpenGaussStatementParser.TRANSFORM, 0); }
		public TerminalNode FOR() { return getToken(OpenGaussStatementParser.FOR, 0); }
		public TypeNameContext typeName() {
			return getRuleContext(TypeNameContext.class,0);
		}
		public TerminalNode LANGUAGE() { return getToken(OpenGaussStatementParser.LANGUAGE, 0); }
		public NameContext name() {
			return getRuleContext(NameContext.class,0);
		}
		public TerminalNode LP_() { return getToken(OpenGaussStatementParser.LP_, 0); }
		public TransformElementListContext transformElementList() {
			return getRuleContext(TransformElementListContext.class,0);
		}
		public TerminalNode RP_() { return getToken(OpenGaussStatementParser.RP_, 0); }
		public TerminalNode OR() { return getToken(OpenGaussStatementParser.OR, 0); }
		public TerminalNode REPLACE() { return getToken(OpenGaussStatementParser.REPLACE, 0); }
		public CreateTransformContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_createTransform; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitCreateTransform(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CreateTransformContext createTransform() throws RecognitionException {
		CreateTransformContext _localctx = new CreateTransformContext(_ctx, getState());
		enterRule(_localctx, 1308, RULE_createTransform);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(9235);
			match(CREATE);
			setState(9238);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==OR) {
				{
				setState(9236);
				match(OR);
				setState(9237);
				match(REPLACE);
				}
			}

			setState(9240);
			match(TRANSFORM);
			setState(9241);
			match(FOR);
			setState(9242);
			typeName();
			setState(9243);
			match(LANGUAGE);
			setState(9244);
			name();
			setState(9245);
			match(LP_);
			setState(9246);
			transformElementList();
			setState(9247);
			match(RP_);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CreateTypeContext extends ParserRuleContext {
		public TerminalNode CREATE() { return getToken(OpenGaussStatementParser.CREATE, 0); }
		public TerminalNode TYPE() { return getToken(OpenGaussStatementParser.TYPE, 0); }
		public AnyNameContext anyName() {
			return getRuleContext(AnyNameContext.class,0);
		}
		public CreateTypeClausesContext createTypeClauses() {
			return getRuleContext(CreateTypeClausesContext.class,0);
		}
		public CreateTypeContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_createType; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitCreateType(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CreateTypeContext createType() throws RecognitionException {
		CreateTypeContext _localctx = new CreateTypeContext(_ctx, getState());
		enterRule(_localctx, 1310, RULE_createType);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(9249);
			match(CREATE);
			setState(9250);
			match(TYPE);
			setState(9251);
			anyName();
			setState(9252);
			createTypeClauses();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CreateTypeClausesContext extends ParserRuleContext {
		public DefinitionContext definition() {
			return getRuleContext(DefinitionContext.class,0);
		}
		public TerminalNode AS() { return getToken(OpenGaussStatementParser.AS, 0); }
		public TerminalNode LP_() { return getToken(OpenGaussStatementParser.LP_, 0); }
		public TerminalNode RP_() { return getToken(OpenGaussStatementParser.RP_, 0); }
		public TableFuncElementListContext tableFuncElementList() {
			return getRuleContext(TableFuncElementListContext.class,0);
		}
		public TerminalNode ENUM() { return getToken(OpenGaussStatementParser.ENUM, 0); }
		public EnumValListContext enumValList() {
			return getRuleContext(EnumValListContext.class,0);
		}
		public TerminalNode RANGE() { return getToken(OpenGaussStatementParser.RANGE, 0); }
		public CreateTypeClausesContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_createTypeClauses; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitCreateTypeClauses(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CreateTypeClausesContext createTypeClauses() throws RecognitionException {
		CreateTypeClausesContext _localctx = new CreateTypeClausesContext(_ctx, getState());
		enterRule(_localctx, 1312, RULE_createTypeClauses);
		int _la;
		try {
			setState(9273);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,859,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(9255);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==LP_) {
					{
					setState(9254);
					definition();
					}
				}

				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(9257);
				match(AS);
				setState(9258);
				match(LP_);
				setState(9260);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==UNICODE_ESCAPE || ((((_la - 81)) & ~0x3f) == 0 && ((1L << (_la - 81)) & ((1L << (INSERT - 81)) | (1L << (UPDATE - 81)) | (1L << (DELETE - 81)) | (1L << (ALTER - 81)) | (1L << (DROP - 81)) | (1L << (TRUNCATE - 81)) | (1L << (SCHEMA - 81)) | (1L << (REVOKE - 81)) | (1L << (ADD - 81)) | (1L << (SET - 81)) | (1L << (INDEX - 81)) | (1L << (KEY - 81)) | (1L << (POSITION - 81)) | (1L << (FUNCTION - 81)) | (1L << (TRIGGER - 81)) | (1L << (PROCEDURE - 81)) | (1L << (VIEW - 81)) | (1L << (IF - 81)))) != 0) || ((((_la - 151)) & ~0x3f) == 0 && ((1L << (_la - 151)) & ((1L << (BY - 151)) | (1L << (BEGIN - 151)) | (1L << (COMMIT - 151)) | (1L << (ROLLBACK - 151)) | (1L << (SAVEPOINT - 151)) | (1L << (DOUBLE - 151)) | (1L << (INTERVAL - 151)) | (1L << (TIME - 151)) | (1L << (TIMESTAMP - 151)) | (1L << (YEAR - 151)) | (1L << (MONTH - 151)) | (1L << (DAY - 151)) | (1L << (HOUR - 151)) | (1L << (MINUTE - 151)) | (1L << (SECOND - 151)) | (1L << (CURRENT - 151)) | (1L << (ENABLE - 151)) | (1L << (DISABLE - 151)) | (1L << (CALL - 151)) | (1L << (PRESERVE - 151)) | (1L << (DEFINER - 151)) | (1L << (SQL - 151)) | (1L << (CASCADED - 151)) | (1L << (LOCAL - 151)) | (1L << (CLOSE - 151)) | (1L << (NEXT - 151)) | (1L << (NAME - 151)) | (1L << (NAMES - 151)) | (1L << (TYPE - 151)) | (1L << (TEXT - 151)) | (1L << (REPEATABLE - 151)) | (1L << (VARYING - 151)) | (1L << (NATIONAL - 151)))) != 0) || ((((_la - 216)) & ~0x3f) == 0 && ((1L << (_la - 216)) & ((1L << (VALUE - 216)) | (1L << (TIES - 216)) | (1L << (CUBE - 216)) | (1L << (SETS - 216)) | (1L << (OTHERS - 216)) | (1L << (AT - 216)) | (1L << (MAXVALUE - 216)) | (1L << (ADMIN - 216)) | (1L << (ESCAPE - 216)) | (1L << (EXCLUDE - 216)) | (1L << (MOD - 216)) | (1L << (PARTITION - 216)) | (1L << (UNKNOWN - 216)) | (1L << (ALWAYS - 216)) | (1L << (CASCADE - 216)) | (1L << (GENERATED - 216)) | (1L << (ISOLATION - 216)) | (1L << (LEVEL - 216)) | (1L << (NO - 216)) | (1L << (OPTION - 216)) | (1L << (PRIVILEGES - 216)) | (1L << (READ - 216)) | (1L << (ROLE - 216)) | (1L << (ROWS - 216)) | (1L << (START - 216)) | (1L << (TRANSACTION - 216)) | (1L << (ACTION - 216)) | (1L << (CACHE - 216)) | (1L << (CHARACTERISTICS - 216)) | (1L << (CLUSTER - 216)) | (1L << (COMMENTS - 216)) | (1L << (CONSTRAINTS - 216)) | (1L << (CYCLE - 216)) | (1L << (DATA - 216)) | (1L << (DATABASE - 216)) | (1L << (DEFAULTS - 216)) | (1L << (DEFERRED - 216)))) != 0) || ((((_la - 280)) & ~0x3f) == 0 && ((1L << (_la - 280)) & ((1L << (DEPENDS - 280)) | (1L << (DOMAIN - 280)) | (1L << (EXCLUDING - 280)) | (1L << (EXECUTE - 280)) | (1L << (EXTENDED - 280)) | (1L << (EXTENSION - 280)) | (1L << (EXTERNAL - 280)) | (1L << (FILTER - 280)) | (1L << (FIRST - 280)) | (1L << (FOLLOWING - 280)) | (1L << (FORCE - 280)) | (1L << (GLOBAL - 280)) | (1L << (IDENTITY - 280)) | (1L << (IMMEDIATE - 280)) | (1L << (INCLUDING - 280)) | (1L << (INCREMENT - 280)) | (1L << (INDEXES - 280)) | (1L << (INHERIT - 280)) | (1L << (INHERITS - 280)) | (1L << (INCLUDE - 280)) | (1L << (LANGUAGE - 280)) | (1L << (LARGE - 280)) | (1L << (LAST - 280)) | (1L << (LOGGED - 280)) | (1L << (MAIN - 280)) | (1L << (MATCH - 280)) | (1L << (MINVALUE - 280)) | (1L << (NOTHING - 280)) | (1L << (NULLS - 280)) | (1L << (OBJECT - 280)) | (1L << (OIDS - 280)) | (1L << (OVER - 280)) | (1L << (OWNED - 280)) | (1L << (OWNER - 280)) | (1L << (PARTIAL - 280)) | (1L << (PLAIN - 280)) | (1L << (PRECEDING - 280)) | (1L << (RANGE - 280)) | (1L << (RENAME - 280)) | (1L << (REPLICA - 280)) | (1L << (RESET - 280)) | (1L << (RESTART - 280)) | (1L << (RESTRICT - 280)) | (1L << (ROUTINE - 280)) | (1L << (RULE - 280)) | (1L << (SECURITY - 280)) | (1L << (SEQUENCE - 280)) | (1L << (SESSION - 280)) | (1L << (SHOW - 280)) | (1L << (SIMPLE - 280)) | (1L << (STATISTICS - 280)) | (1L << (STORAGE - 280)) | (1L << (TABLESPACE - 280)) | (1L << (TEMP - 280)) | (1L << (TEMPORARY - 280)) | (1L << (UNBOUNDED - 280)) | (1L << (UNLOGGED - 280)) | (1L << (VALID - 280)))) != 0) || ((((_la - 344)) & ~0x3f) == 0 && ((1L << (_la - 344)) & ((1L << (VALIDATE - 344)) | (1L << (WITHIN - 344)) | (1L << (WITHOUT - 344)) | (1L << (ZONE - 344)) | (1L << (OF - 344)) | (1L << (UESCAPE - 344)) | (1L << (GROUPS - 344)) | (1L << (RECURSIVE - 344)) | (1L << (INT2 - 344)) | (1L << (INT4 - 344)) | (1L << (FLOAT4 - 344)) | (1L << (BYTEA - 344)) | (1L << (ENUM - 344)) | (1L << (POINT - 344)) | (1L << (LSEG - 344)) | (1L << (BOX - 344)) | (1L << (PATH - 344)) | (1L << (POLYGON - 344)) | (1L << (CIRCLE - 344)) | (1L << (INET - 344)) | (1L << (TSQUERY - 344)) | (1L << (XML - 344)) | (1L << (JSON - 344)) | (1L << (INT4RANGE - 344)) | (1L << (INT8RANGE - 344)) | (1L << (NUMRANGE - 344)) | (1L << (DATERANGE - 344)) | (1L << (ORDINALITY - 344)) | (1L << (NFC - 344)) | (1L << (NFD - 344)) | (1L << (NFKC - 344)))) != 0) || ((((_la - 408)) & ~0x3f) == 0 && ((1L << (_la - 408)) & ((1L << (NFKD - 408)) | (1L << (REF - 408)) | (1L << (PASSING - 408)) | (1L << (VERSION - 408)) | (1L << (YES - 408)) | (1L << (STANDALONE - 408)) | (1L << (MATERIALIZED - 408)) | (1L << (OPERATOR - 408)) | (1L << (SHARE - 408)) | (1L << (ROLLUP - 408)) | (1L << (DOCUMENT - 408)) | (1L << (NORMALIZED - 408)) | (1L << (NOWAIT - 408)) | (1L << (LOCKED - 408)) | (1L << (COLUMNS - 408)) | (1L << (CONTENT - 408)) | (1L << (STRIP - 408)) | (1L << (WHITESPACE - 408)) | (1L << (CONFLICT - 408)) | (1L << (OVERRIDING - 408)) | (1L << (SYSTEM - 408)) | (1L << (ABORT - 408)) | (1L << (ABSOLUTE - 408)) | (1L << (ACCESS - 408)) | (1L << (AFTER - 408)) | (1L << (AGGREGATE - 408)) | (1L << (ALSO - 408)) | (1L << (ATTACH - 408)) | (1L << (ATTRIBUTE - 408)) | (1L << (BACKWARD - 408)) | (1L << (BEFORE - 408)) | (1L << (ASSERTION - 408)) | (1L << (ASSIGNMENT - 408)) | (1L << (CONTINUE - 408)) | (1L << (CONVERSION - 408)) | (1L << (COPY - 408)) | (1L << (COST - 408)) | (1L << (CSV - 408)) | (1L << (CALLED - 408)) | (1L << (CATALOG - 408)) | (1L << (CHAIN - 408)) | (1L << (CHECKPOINT - 408)) | (1L << (CLASS - 408)) | (1L << (CONFIGURATION - 408)) | (1L << (COMMENT - 408)) | (1L << (DETACH - 408)))) != 0) || ((((_la - 472)) & ~0x3f) == 0 && ((1L << (_la - 472)) & ((1L << (DICTIONARY - 472)) | (1L << (EXPRESSION - 472)) | (1L << (INSENSITIVE - 472)) | (1L << (DISCARD - 472)) | (1L << (OFF - 472)) | (1L << (INSTEAD - 472)) | (1L << (EXPLAIN - 472)) | (1L << (INPUT - 472)) | (1L << (INLINE - 472)) | (1L << (PARALLEL - 472)) | (1L << (LEAKPROOF - 472)) | (1L << (COMMITTED - 472)) | (1L << (ENCODING - 472)) | (1L << (IMPLICIT - 472)) | (1L << (DELIMITER - 472)) | (1L << (CURSOR - 472)) | (1L << (EACH - 472)) | (1L << (EVENT - 472)) | (1L << (DEALLOCATE - 472)) | (1L << (CONNECTION - 472)) | (1L << (DECLARE - 472)) | (1L << (FAMILY - 472)) | (1L << (FORWARD - 472)) | (1L << (EXCLUSIVE - 472)) | (1L << (FUNCTIONS - 472)) | (1L << (LOCATION - 472)) | (1L << (LABEL - 472)) | (1L << (DELIMITERS - 472)) | (1L << (HANDLER - 472)) | (1L << (HEADER - 472)) | (1L << (IMMUTABLE - 472)) | (1L << (GRANTED - 472)) | (1L << (HOLD - 472)) | (1L << (MAPPING - 472)) | (1L << (OLD - 472)) | (1L << (METHOD - 472)) | (1L << (LOAD - 472)) | (1L << (LISTEN - 472)) | (1L << (MODE - 472)) | (1L << (MOVE - 472)) | (1L << (PROCEDURAL - 472)) | (1L << (PARSER - 472)) | (1L << (PROCEDURES - 472)) | (1L << (ENCRYPTED - 472)) | (1L << (PUBLICATION - 472)) | (1L << (PROGRAM - 472)) | (1L << (REFERENCING - 472)) | (1L << (PLANS - 472)) | (1L << (REINDEX - 472)) | (1L << (PRIOR - 472)) | (1L << (PASSWORD - 472)) | (1L << (RELATIVE - 472)) | (1L << (QUOTE - 472)) | (1L << (ROUTINES - 472)) | (1L << (REPLACE - 472)) | (1L << (SNAPSHOT - 472)) | (1L << (REFRESH - 472)) | (1L << (PREPARE - 472)) | (1L << (OPTIONS - 472)) | (1L << (IMPORT - 472)) | (1L << (INVOKER - 472)) | (1L << (NEW - 472)) | (1L << (PREPARED - 472)))) != 0) || ((((_la - 536)) & ~0x3f) == 0 && ((1L << (_la - 536)) & ((1L << (SCROLL - 536)) | (1L << (SEQUENCES - 536)) | (1L << (SYSID - 536)) | (1L << (REASSIGN - 536)) | (1L << (SERVER - 536)) | (1L << (SUBSCRIPTION - 536)) | (1L << (SEARCH - 536)) | (1L << (SCHEMAS - 536)) | (1L << (RECHECK - 536)) | (1L << (POLICY - 536)) | (1L << (NOTIFY - 536)) | (1L << (LOCK - 536)) | (1L << (RELEASE - 536)) | (1L << (SERIALIZABLE - 536)) | (1L << (RETURNS - 536)) | (1L << (STATEMENT - 536)) | (1L << (STDIN - 536)) | (1L << (STDOUT - 536)) | (1L << (TABLES - 536)) | (1L << (SUPPORT - 536)) | (1L << (STABLE - 536)) | (1L << (TEMPLATE - 536)) | (1L << (UNENCRYPTED - 536)) | (1L << (VIEWS - 536)) | (1L << (UNCOMMITTED - 536)) | (1L << (TRANSFORM - 536)) | (1L << (UNLISTEN - 536)) | (1L << (TRUSTED - 536)) | (1L << (VALIDATOR - 536)) | (1L << (UNTIL - 536)) | (1L << (VACUUM - 536)) | (1L << (VOLATILE - 536)) | (1L << (STORED - 536)) | (1L << (WRITE - 536)) | (1L << (STRICT - 536)) | (1L << (TYPES - 536)) | (1L << (WRAPPER - 536)) | (1L << (WORK - 536)) | (1L << (INT16 - 536)) | (1L << (INT1 - 536)) | (1L << (ELEM_CONTAINED_BY_RANGE - 536)) | (1L << (IDENTIFIER_ - 536)))) != 0)) {
					{
					setState(9259);
					tableFuncElementList();
					}
				}

				setState(9262);
				match(RP_);
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(9263);
				match(AS);
				setState(9264);
				match(ENUM);
				setState(9265);
				match(LP_);
				setState(9267);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==STRING_) {
					{
					setState(9266);
					enumValList();
					}
				}

				setState(9269);
				match(RP_);
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(9270);
				match(AS);
				setState(9271);
				match(RANGE);
				setState(9272);
				definition();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class EnumValListContext extends ParserRuleContext {
		public List STRING_() { return getTokens(OpenGaussStatementParser.STRING_); }
		public TerminalNode STRING_(int i) {
			return getToken(OpenGaussStatementParser.STRING_, i);
		}
		public List COMMA_() { return getTokens(OpenGaussStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(OpenGaussStatementParser.COMMA_, i);
		}
		public EnumValListContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_enumValList; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitEnumValList(this);
			else return visitor.visitChildren(this);
		}
	}

	public final EnumValListContext enumValList() throws RecognitionException {
		EnumValListContext _localctx = new EnumValListContext(_ctx, getState());
		enterRule(_localctx, 1314, RULE_enumValList);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(9275);
			match(STRING_);
			setState(9280);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA_) {
				{
				{
				setState(9276);
				match(COMMA_);
				setState(9277);
				match(STRING_);
				}
				}
				setState(9282);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CreateUserMappingContext extends ParserRuleContext {
		public TerminalNode CREATE() { return getToken(OpenGaussStatementParser.CREATE, 0); }
		public TerminalNode USER() { return getToken(OpenGaussStatementParser.USER, 0); }
		public TerminalNode MAPPING() { return getToken(OpenGaussStatementParser.MAPPING, 0); }
		public TerminalNode FOR() { return getToken(OpenGaussStatementParser.FOR, 0); }
		public AuthIdentContext authIdent() {
			return getRuleContext(AuthIdentContext.class,0);
		}
		public TerminalNode SERVER() { return getToken(OpenGaussStatementParser.SERVER, 0); }
		public NameContext name() {
			return getRuleContext(NameContext.class,0);
		}
		public CreateGenericOptionsContext createGenericOptions() {
			return getRuleContext(CreateGenericOptionsContext.class,0);
		}
		public IfNotExistsContext ifNotExists() {
			return getRuleContext(IfNotExistsContext.class,0);
		}
		public CreateUserMappingContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_createUserMapping; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitCreateUserMapping(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CreateUserMappingContext createUserMapping() throws RecognitionException {
		CreateUserMappingContext _localctx = new CreateUserMappingContext(_ctx, getState());
		enterRule(_localctx, 1316, RULE_createUserMapping);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(9283);
			match(CREATE);
			setState(9284);
			match(USER);
			setState(9285);
			match(MAPPING);
			setState(9287);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==IF) {
				{
				setState(9286);
				ifNotExists();
				}
			}

			setState(9289);
			match(FOR);
			setState(9290);
			authIdent();
			setState(9291);
			match(SERVER);
			setState(9292);
			name();
			setState(9293);
			createGenericOptions();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DiscardContext extends ParserRuleContext {
		public TerminalNode DISCARD() { return getToken(OpenGaussStatementParser.DISCARD, 0); }
		public TerminalNode ALL() { return getToken(OpenGaussStatementParser.ALL, 0); }
		public TerminalNode PLANS() { return getToken(OpenGaussStatementParser.PLANS, 0); }
		public TerminalNode SEQUENCES() { return getToken(OpenGaussStatementParser.SEQUENCES, 0); }
		public TerminalNode TEMPORARY() { return getToken(OpenGaussStatementParser.TEMPORARY, 0); }
		public TerminalNode TEMP() { return getToken(OpenGaussStatementParser.TEMP, 0); }
		public DiscardContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_discard; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitDiscard(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DiscardContext discard() throws RecognitionException {
		DiscardContext _localctx = new DiscardContext(_ctx, getState());
		enterRule(_localctx, 1318, RULE_discard);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(9295);
			match(DISCARD);
			setState(9296);
			_la = _input.LA(1);
			if ( !(_la==ALL || _la==TEMP || _la==TEMPORARY || _la==PLANS || _la==SEQUENCES) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DropAccessMethodContext extends ParserRuleContext {
		public TerminalNode DROP() { return getToken(OpenGaussStatementParser.DROP, 0); }
		public TerminalNode ACCESS() { return getToken(OpenGaussStatementParser.ACCESS, 0); }
		public TerminalNode METHOD() { return getToken(OpenGaussStatementParser.METHOD, 0); }
		public NameContext name() {
			return getRuleContext(NameContext.class,0);
		}
		public IfExistsContext ifExists() {
			return getRuleContext(IfExistsContext.class,0);
		}
		public DropBehaviorContext dropBehavior() {
			return getRuleContext(DropBehaviorContext.class,0);
		}
		public DropAccessMethodContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_dropAccessMethod; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitDropAccessMethod(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DropAccessMethodContext dropAccessMethod() throws RecognitionException {
		DropAccessMethodContext _localctx = new DropAccessMethodContext(_ctx, getState());
		enterRule(_localctx, 1320, RULE_dropAccessMethod);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(9298);
			match(DROP);
			setState(9299);
			match(ACCESS);
			setState(9300);
			match(METHOD);
			setState(9302);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,862,_ctx) ) {
			case 1:
				{
				setState(9301);
				ifExists();
				}
				break;
			}
			setState(9304);
			name();
			setState(9306);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==CASCADE || _la==RESTRICT) {
				{
				setState(9305);
				dropBehavior();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DropAggregateContext extends ParserRuleContext {
		public TerminalNode DROP() { return getToken(OpenGaussStatementParser.DROP, 0); }
		public TerminalNode AGGREGATE() { return getToken(OpenGaussStatementParser.AGGREGATE, 0); }
		public AggregateWithArgtypesListContext aggregateWithArgtypesList() {
			return getRuleContext(AggregateWithArgtypesListContext.class,0);
		}
		public IfExistsContext ifExists() {
			return getRuleContext(IfExistsContext.class,0);
		}
		public DropBehaviorContext dropBehavior() {
			return getRuleContext(DropBehaviorContext.class,0);
		}
		public DropAggregateContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_dropAggregate; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitDropAggregate(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DropAggregateContext dropAggregate() throws RecognitionException {
		DropAggregateContext _localctx = new DropAggregateContext(_ctx, getState());
		enterRule(_localctx, 1322, RULE_dropAggregate);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(9308);
			match(DROP);
			setState(9309);
			match(AGGREGATE);
			setState(9311);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,864,_ctx) ) {
			case 1:
				{
				setState(9310);
				ifExists();
				}
				break;
			}
			setState(9313);
			aggregateWithArgtypesList();
			setState(9315);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==CASCADE || _la==RESTRICT) {
				{
				setState(9314);
				dropBehavior();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AggregateWithArgtypesListContext extends ParserRuleContext {
		public List aggregateWithArgtypes() {
			return getRuleContexts(AggregateWithArgtypesContext.class);
		}
		public AggregateWithArgtypesContext aggregateWithArgtypes(int i) {
			return getRuleContext(AggregateWithArgtypesContext.class,i);
		}
		public List COMMA_() { return getTokens(OpenGaussStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(OpenGaussStatementParser.COMMA_, i);
		}
		public AggregateWithArgtypesListContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_aggregateWithArgtypesList; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitAggregateWithArgtypesList(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AggregateWithArgtypesListContext aggregateWithArgtypesList() throws RecognitionException {
		AggregateWithArgtypesListContext _localctx = new AggregateWithArgtypesListContext(_ctx, getState());
		enterRule(_localctx, 1324, RULE_aggregateWithArgtypesList);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(9317);
			aggregateWithArgtypes();
			setState(9322);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA_) {
				{
				{
				setState(9318);
				match(COMMA_);
				setState(9319);
				aggregateWithArgtypes();
				}
				}
				setState(9324);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DropCastContext extends ParserRuleContext {
		public TerminalNode DROP() { return getToken(OpenGaussStatementParser.DROP, 0); }
		public TerminalNode CAST() { return getToken(OpenGaussStatementParser.CAST, 0); }
		public TerminalNode LP_() { return getToken(OpenGaussStatementParser.LP_, 0); }
		public List typeName() {
			return getRuleContexts(TypeNameContext.class);
		}
		public TypeNameContext typeName(int i) {
			return getRuleContext(TypeNameContext.class,i);
		}
		public TerminalNode AS() { return getToken(OpenGaussStatementParser.AS, 0); }
		public TerminalNode RP_() { return getToken(OpenGaussStatementParser.RP_, 0); }
		public IfExistsContext ifExists() {
			return getRuleContext(IfExistsContext.class,0);
		}
		public DropBehaviorContext dropBehavior() {
			return getRuleContext(DropBehaviorContext.class,0);
		}
		public DropCastContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_dropCast; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitDropCast(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DropCastContext dropCast() throws RecognitionException {
		DropCastContext _localctx = new DropCastContext(_ctx, getState());
		enterRule(_localctx, 1326, RULE_dropCast);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(9325);
			match(DROP);
			setState(9326);
			match(CAST);
			setState(9328);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==IF) {
				{
				setState(9327);
				ifExists();
				}
			}

			setState(9330);
			match(LP_);
			setState(9331);
			typeName();
			setState(9332);
			match(AS);
			setState(9333);
			typeName();
			setState(9334);
			match(RP_);
			setState(9336);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==CASCADE || _la==RESTRICT) {
				{
				setState(9335);
				dropBehavior();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DropCollationContext extends ParserRuleContext {
		public TerminalNode DROP() { return getToken(OpenGaussStatementParser.DROP, 0); }
		public TerminalNode COLLATION() { return getToken(OpenGaussStatementParser.COLLATION, 0); }
		public NameContext name() {
			return getRuleContext(NameContext.class,0);
		}
		public IfExistsContext ifExists() {
			return getRuleContext(IfExistsContext.class,0);
		}
		public DropBehaviorContext dropBehavior() {
			return getRuleContext(DropBehaviorContext.class,0);
		}
		public DropCollationContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_dropCollation; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitDropCollation(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DropCollationContext dropCollation() throws RecognitionException {
		DropCollationContext _localctx = new DropCollationContext(_ctx, getState());
		enterRule(_localctx, 1328, RULE_dropCollation);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(9338);
			match(DROP);
			setState(9339);
			match(COLLATION);
			setState(9341);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,869,_ctx) ) {
			case 1:
				{
				setState(9340);
				ifExists();
				}
				break;
			}
			setState(9343);
			name();
			setState(9345);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==CASCADE || _la==RESTRICT) {
				{
				setState(9344);
				dropBehavior();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DropConversionContext extends ParserRuleContext {
		public TerminalNode DROP() { return getToken(OpenGaussStatementParser.DROP, 0); }
		public TerminalNode CONVERSION() { return getToken(OpenGaussStatementParser.CONVERSION, 0); }
		public NameContext name() {
			return getRuleContext(NameContext.class,0);
		}
		public IfExistsContext ifExists() {
			return getRuleContext(IfExistsContext.class,0);
		}
		public DropBehaviorContext dropBehavior() {
			return getRuleContext(DropBehaviorContext.class,0);
		}
		public DropConversionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_dropConversion; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitDropConversion(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DropConversionContext dropConversion() throws RecognitionException {
		DropConversionContext _localctx = new DropConversionContext(_ctx, getState());
		enterRule(_localctx, 1330, RULE_dropConversion);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(9347);
			match(DROP);
			setState(9348);
			match(CONVERSION);
			setState(9350);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,871,_ctx) ) {
			case 1:
				{
				setState(9349);
				ifExists();
				}
				break;
			}
			setState(9352);
			name();
			setState(9354);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==CASCADE || _la==RESTRICT) {
				{
				setState(9353);
				dropBehavior();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DropDomainContext extends ParserRuleContext {
		public TerminalNode DROP() { return getToken(OpenGaussStatementParser.DROP, 0); }
		public TerminalNode DOMAIN() { return getToken(OpenGaussStatementParser.DOMAIN, 0); }
		public NameListContext nameList() {
			return getRuleContext(NameListContext.class,0);
		}
		public IfExistsContext ifExists() {
			return getRuleContext(IfExistsContext.class,0);
		}
		public DropBehaviorContext dropBehavior() {
			return getRuleContext(DropBehaviorContext.class,0);
		}
		public DropDomainContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_dropDomain; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitDropDomain(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DropDomainContext dropDomain() throws RecognitionException {
		DropDomainContext _localctx = new DropDomainContext(_ctx, getState());
		enterRule(_localctx, 1332, RULE_dropDomain);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(9356);
			match(DROP);
			setState(9357);
			match(DOMAIN);
			setState(9359);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,873,_ctx) ) {
			case 1:
				{
				setState(9358);
				ifExists();
				}
				break;
			}
			setState(9361);
			nameList(0);
			setState(9363);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==CASCADE || _la==RESTRICT) {
				{
				setState(9362);
				dropBehavior();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DropEventTriggerContext extends ParserRuleContext {
		public TerminalNode DROP() { return getToken(OpenGaussStatementParser.DROP, 0); }
		public TerminalNode EVENT() { return getToken(OpenGaussStatementParser.EVENT, 0); }
		public TerminalNode TRIGGER() { return getToken(OpenGaussStatementParser.TRIGGER, 0); }
		public NameListContext nameList() {
			return getRuleContext(NameListContext.class,0);
		}
		public IfExistsContext ifExists() {
			return getRuleContext(IfExistsContext.class,0);
		}
		public DropBehaviorContext dropBehavior() {
			return getRuleContext(DropBehaviorContext.class,0);
		}
		public DropEventTriggerContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_dropEventTrigger; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitDropEventTrigger(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DropEventTriggerContext dropEventTrigger() throws RecognitionException {
		DropEventTriggerContext _localctx = new DropEventTriggerContext(_ctx, getState());
		enterRule(_localctx, 1334, RULE_dropEventTrigger);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(9365);
			match(DROP);
			setState(9366);
			match(EVENT);
			setState(9367);
			match(TRIGGER);
			setState(9369);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,875,_ctx) ) {
			case 1:
				{
				setState(9368);
				ifExists();
				}
				break;
			}
			setState(9371);
			nameList(0);
			setState(9373);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==CASCADE || _la==RESTRICT) {
				{
				setState(9372);
				dropBehavior();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DropExtensionContext extends ParserRuleContext {
		public TerminalNode DROP() { return getToken(OpenGaussStatementParser.DROP, 0); }
		public TerminalNode EXTENSION() { return getToken(OpenGaussStatementParser.EXTENSION, 0); }
		public NameListContext nameList() {
			return getRuleContext(NameListContext.class,0);
		}
		public IfExistsContext ifExists() {
			return getRuleContext(IfExistsContext.class,0);
		}
		public DropBehaviorContext dropBehavior() {
			return getRuleContext(DropBehaviorContext.class,0);
		}
		public DropExtensionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_dropExtension; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitDropExtension(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DropExtensionContext dropExtension() throws RecognitionException {
		DropExtensionContext _localctx = new DropExtensionContext(_ctx, getState());
		enterRule(_localctx, 1336, RULE_dropExtension);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(9375);
			match(DROP);
			setState(9376);
			match(EXTENSION);
			setState(9378);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,877,_ctx) ) {
			case 1:
				{
				setState(9377);
				ifExists();
				}
				break;
			}
			setState(9380);
			nameList(0);
			setState(9382);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==CASCADE || _la==RESTRICT) {
				{
				setState(9381);
				dropBehavior();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DropForeignDataWrapperContext extends ParserRuleContext {
		public TerminalNode DROP() { return getToken(OpenGaussStatementParser.DROP, 0); }
		public TerminalNode FOREIGN() { return getToken(OpenGaussStatementParser.FOREIGN, 0); }
		public TerminalNode DATA() { return getToken(OpenGaussStatementParser.DATA, 0); }
		public TerminalNode WRAPPER() { return getToken(OpenGaussStatementParser.WRAPPER, 0); }
		public NameListContext nameList() {
			return getRuleContext(NameListContext.class,0);
		}
		public IfExistsContext ifExists() {
			return getRuleContext(IfExistsContext.class,0);
		}
		public DropBehaviorContext dropBehavior() {
			return getRuleContext(DropBehaviorContext.class,0);
		}
		public DropForeignDataWrapperContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_dropForeignDataWrapper; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitDropForeignDataWrapper(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DropForeignDataWrapperContext dropForeignDataWrapper() throws RecognitionException {
		DropForeignDataWrapperContext _localctx = new DropForeignDataWrapperContext(_ctx, getState());
		enterRule(_localctx, 1338, RULE_dropForeignDataWrapper);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(9384);
			match(DROP);
			setState(9385);
			match(FOREIGN);
			setState(9386);
			match(DATA);
			setState(9387);
			match(WRAPPER);
			setState(9389);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,879,_ctx) ) {
			case 1:
				{
				setState(9388);
				ifExists();
				}
				break;
			}
			setState(9391);
			nameList(0);
			setState(9393);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==CASCADE || _la==RESTRICT) {
				{
				setState(9392);
				dropBehavior();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DropForeignTableContext extends ParserRuleContext {
		public TerminalNode DROP() { return getToken(OpenGaussStatementParser.DROP, 0); }
		public TerminalNode FOREIGN() { return getToken(OpenGaussStatementParser.FOREIGN, 0); }
		public TerminalNode TABLE() { return getToken(OpenGaussStatementParser.TABLE, 0); }
		public List tableName() {
			return getRuleContexts(TableNameContext.class);
		}
		public TableNameContext tableName(int i) {
			return getRuleContext(TableNameContext.class,i);
		}
		public IfExistsContext ifExists() {
			return getRuleContext(IfExistsContext.class,0);
		}
		public List COMMA_() { return getTokens(OpenGaussStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(OpenGaussStatementParser.COMMA_, i);
		}
		public DropBehaviorContext dropBehavior() {
			return getRuleContext(DropBehaviorContext.class,0);
		}
		public DropForeignTableContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_dropForeignTable; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitDropForeignTable(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DropForeignTableContext dropForeignTable() throws RecognitionException {
		DropForeignTableContext _localctx = new DropForeignTableContext(_ctx, getState());
		enterRule(_localctx, 1340, RULE_dropForeignTable);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(9395);
			match(DROP);
			setState(9396);
			match(FOREIGN);
			setState(9397);
			match(TABLE);
			setState(9399);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,881,_ctx) ) {
			case 1:
				{
				setState(9398);
				ifExists();
				}
				break;
			}
			setState(9401);
			tableName();
			setState(9406);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA_) {
				{
				{
				setState(9402);
				match(COMMA_);
				setState(9403);
				tableName();
				}
				}
				setState(9408);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			setState(9410);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==CASCADE || _la==RESTRICT) {
				{
				setState(9409);
				dropBehavior();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DropFunctionContext extends ParserRuleContext {
		public TerminalNode DROP() { return getToken(OpenGaussStatementParser.DROP, 0); }
		public TerminalNode FUNCTION() { return getToken(OpenGaussStatementParser.FUNCTION, 0); }
		public FunctionWithArgtypesListContext functionWithArgtypesList() {
			return getRuleContext(FunctionWithArgtypesListContext.class,0);
		}
		public IfExistsContext ifExists() {
			return getRuleContext(IfExistsContext.class,0);
		}
		public DropBehaviorContext dropBehavior() {
			return getRuleContext(DropBehaviorContext.class,0);
		}
		public DropFunctionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_dropFunction; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitDropFunction(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DropFunctionContext dropFunction() throws RecognitionException {
		DropFunctionContext _localctx = new DropFunctionContext(_ctx, getState());
		enterRule(_localctx, 1342, RULE_dropFunction);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(9412);
			match(DROP);
			setState(9413);
			match(FUNCTION);
			setState(9415);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,884,_ctx) ) {
			case 1:
				{
				setState(9414);
				ifExists();
				}
				break;
			}
			setState(9417);
			functionWithArgtypesList();
			setState(9419);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==CASCADE || _la==RESTRICT) {
				{
				setState(9418);
				dropBehavior();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class FunctionWithArgtypesListContext extends ParserRuleContext {
		public List functionWithArgtypes() {
			return getRuleContexts(FunctionWithArgtypesContext.class);
		}
		public FunctionWithArgtypesContext functionWithArgtypes(int i) {
			return getRuleContext(FunctionWithArgtypesContext.class,i);
		}
		public List COMMA_() { return getTokens(OpenGaussStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(OpenGaussStatementParser.COMMA_, i);
		}
		public FunctionWithArgtypesListContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_functionWithArgtypesList; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitFunctionWithArgtypesList(this);
			else return visitor.visitChildren(this);
		}
	}

	public final FunctionWithArgtypesListContext functionWithArgtypesList() throws RecognitionException {
		FunctionWithArgtypesListContext _localctx = new FunctionWithArgtypesListContext(_ctx, getState());
		enterRule(_localctx, 1344, RULE_functionWithArgtypesList);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(9421);
			functionWithArgtypes();
			setState(9426);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA_) {
				{
				{
				setState(9422);
				match(COMMA_);
				setState(9423);
				functionWithArgtypes();
				}
				}
				setState(9428);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DropLanguageContext extends ParserRuleContext {
		public TerminalNode DROP() { return getToken(OpenGaussStatementParser.DROP, 0); }
		public TerminalNode LANGUAGE() { return getToken(OpenGaussStatementParser.LANGUAGE, 0); }
		public NameContext name() {
			return getRuleContext(NameContext.class,0);
		}
		public TerminalNode PROCEDURAL() { return getToken(OpenGaussStatementParser.PROCEDURAL, 0); }
		public IfExistsContext ifExists() {
			return getRuleContext(IfExistsContext.class,0);
		}
		public DropBehaviorContext dropBehavior() {
			return getRuleContext(DropBehaviorContext.class,0);
		}
		public DropLanguageContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_dropLanguage; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitDropLanguage(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DropLanguageContext dropLanguage() throws RecognitionException {
		DropLanguageContext _localctx = new DropLanguageContext(_ctx, getState());
		enterRule(_localctx, 1346, RULE_dropLanguage);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(9429);
			match(DROP);
			setState(9431);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==PROCEDURAL) {
				{
				setState(9430);
				match(PROCEDURAL);
				}
			}

			setState(9433);
			match(LANGUAGE);
			setState(9435);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,888,_ctx) ) {
			case 1:
				{
				setState(9434);
				ifExists();
				}
				break;
			}
			setState(9437);
			name();
			setState(9439);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==CASCADE || _la==RESTRICT) {
				{
				setState(9438);
				dropBehavior();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DropMaterializedViewContext extends ParserRuleContext {
		public TerminalNode DROP() { return getToken(OpenGaussStatementParser.DROP, 0); }
		public TerminalNode MATERIALIZED() { return getToken(OpenGaussStatementParser.MATERIALIZED, 0); }
		public TerminalNode VIEW() { return getToken(OpenGaussStatementParser.VIEW, 0); }
		public AnyNameListContext anyNameList() {
			return getRuleContext(AnyNameListContext.class,0);
		}
		public IfExistsContext ifExists() {
			return getRuleContext(IfExistsContext.class,0);
		}
		public DropBehaviorContext dropBehavior() {
			return getRuleContext(DropBehaviorContext.class,0);
		}
		public DropMaterializedViewContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_dropMaterializedView; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitDropMaterializedView(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DropMaterializedViewContext dropMaterializedView() throws RecognitionException {
		DropMaterializedViewContext _localctx = new DropMaterializedViewContext(_ctx, getState());
		enterRule(_localctx, 1348, RULE_dropMaterializedView);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(9441);
			match(DROP);
			setState(9442);
			match(MATERIALIZED);
			setState(9443);
			match(VIEW);
			setState(9445);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,890,_ctx) ) {
			case 1:
				{
				setState(9444);
				ifExists();
				}
				break;
			}
			setState(9447);
			anyNameList();
			setState(9449);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==CASCADE || _la==RESTRICT) {
				{
				setState(9448);
				dropBehavior();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DropOperatorContext extends ParserRuleContext {
		public TerminalNode DROP() { return getToken(OpenGaussStatementParser.DROP, 0); }
		public TerminalNode OPERATOR() { return getToken(OpenGaussStatementParser.OPERATOR, 0); }
		public OperatorWithArgtypesListContext operatorWithArgtypesList() {
			return getRuleContext(OperatorWithArgtypesListContext.class,0);
		}
		public IfExistsContext ifExists() {
			return getRuleContext(IfExistsContext.class,0);
		}
		public DropBehaviorContext dropBehavior() {
			return getRuleContext(DropBehaviorContext.class,0);
		}
		public DropOperatorContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_dropOperator; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitDropOperator(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DropOperatorContext dropOperator() throws RecognitionException {
		DropOperatorContext _localctx = new DropOperatorContext(_ctx, getState());
		enterRule(_localctx, 1350, RULE_dropOperator);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(9451);
			match(DROP);
			setState(9452);
			match(OPERATOR);
			setState(9454);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,892,_ctx) ) {
			case 1:
				{
				setState(9453);
				ifExists();
				}
				break;
			}
			setState(9456);
			operatorWithArgtypesList();
			setState(9458);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==CASCADE || _la==RESTRICT) {
				{
				setState(9457);
				dropBehavior();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class OperatorWithArgtypesListContext extends ParserRuleContext {
		public List operatorWithArgtypes() {
			return getRuleContexts(OperatorWithArgtypesContext.class);
		}
		public OperatorWithArgtypesContext operatorWithArgtypes(int i) {
			return getRuleContext(OperatorWithArgtypesContext.class,i);
		}
		public List COMMA_() { return getTokens(OpenGaussStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(OpenGaussStatementParser.COMMA_, i);
		}
		public OperatorWithArgtypesListContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_operatorWithArgtypesList; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitOperatorWithArgtypesList(this);
			else return visitor.visitChildren(this);
		}
	}

	public final OperatorWithArgtypesListContext operatorWithArgtypesList() throws RecognitionException {
		OperatorWithArgtypesListContext _localctx = new OperatorWithArgtypesListContext(_ctx, getState());
		enterRule(_localctx, 1352, RULE_operatorWithArgtypesList);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(9460);
			operatorWithArgtypes();
			setState(9465);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA_) {
				{
				{
				setState(9461);
				match(COMMA_);
				setState(9462);
				operatorWithArgtypes();
				}
				}
				setState(9467);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DropOperatorClassContext extends ParserRuleContext {
		public TerminalNode DROP() { return getToken(OpenGaussStatementParser.DROP, 0); }
		public TerminalNode OPERATOR() { return getToken(OpenGaussStatementParser.OPERATOR, 0); }
		public TerminalNode CLASS() { return getToken(OpenGaussStatementParser.CLASS, 0); }
		public AnyNameContext anyName() {
			return getRuleContext(AnyNameContext.class,0);
		}
		public TerminalNode USING() { return getToken(OpenGaussStatementParser.USING, 0); }
		public NameContext name() {
			return getRuleContext(NameContext.class,0);
		}
		public IfExistsContext ifExists() {
			return getRuleContext(IfExistsContext.class,0);
		}
		public DropBehaviorContext dropBehavior() {
			return getRuleContext(DropBehaviorContext.class,0);
		}
		public DropOperatorClassContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_dropOperatorClass; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitDropOperatorClass(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DropOperatorClassContext dropOperatorClass() throws RecognitionException {
		DropOperatorClassContext _localctx = new DropOperatorClassContext(_ctx, getState());
		enterRule(_localctx, 1354, RULE_dropOperatorClass);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(9468);
			match(DROP);
			setState(9469);
			match(OPERATOR);
			setState(9470);
			match(CLASS);
			setState(9472);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,895,_ctx) ) {
			case 1:
				{
				setState(9471);
				ifExists();
				}
				break;
			}
			setState(9474);
			anyName();
			setState(9475);
			match(USING);
			setState(9476);
			name();
			setState(9478);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==CASCADE || _la==RESTRICT) {
				{
				setState(9477);
				dropBehavior();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DropOperatorFamilyContext extends ParserRuleContext {
		public TerminalNode DROP() { return getToken(OpenGaussStatementParser.DROP, 0); }
		public TerminalNode OPERATOR() { return getToken(OpenGaussStatementParser.OPERATOR, 0); }
		public TerminalNode FAMILY() { return getToken(OpenGaussStatementParser.FAMILY, 0); }
		public AnyNameContext anyName() {
			return getRuleContext(AnyNameContext.class,0);
		}
		public TerminalNode USING() { return getToken(OpenGaussStatementParser.USING, 0); }
		public NameContext name() {
			return getRuleContext(NameContext.class,0);
		}
		public IfExistsContext ifExists() {
			return getRuleContext(IfExistsContext.class,0);
		}
		public DropBehaviorContext dropBehavior() {
			return getRuleContext(DropBehaviorContext.class,0);
		}
		public DropOperatorFamilyContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_dropOperatorFamily; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitDropOperatorFamily(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DropOperatorFamilyContext dropOperatorFamily() throws RecognitionException {
		DropOperatorFamilyContext _localctx = new DropOperatorFamilyContext(_ctx, getState());
		enterRule(_localctx, 1356, RULE_dropOperatorFamily);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(9480);
			match(DROP);
			setState(9481);
			match(OPERATOR);
			setState(9482);
			match(FAMILY);
			setState(9484);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,897,_ctx) ) {
			case 1:
				{
				setState(9483);
				ifExists();
				}
				break;
			}
			setState(9486);
			anyName();
			setState(9487);
			match(USING);
			setState(9488);
			name();
			setState(9490);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==CASCADE || _la==RESTRICT) {
				{
				setState(9489);
				dropBehavior();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DropOwnedContext extends ParserRuleContext {
		public TerminalNode DROP() { return getToken(OpenGaussStatementParser.DROP, 0); }
		public TerminalNode OWNED() { return getToken(OpenGaussStatementParser.OWNED, 0); }
		public TerminalNode BY() { return getToken(OpenGaussStatementParser.BY, 0); }
		public RoleListContext roleList() {
			return getRuleContext(RoleListContext.class,0);
		}
		public DropBehaviorContext dropBehavior() {
			return getRuleContext(DropBehaviorContext.class,0);
		}
		public DropOwnedContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_dropOwned; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitDropOwned(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DropOwnedContext dropOwned() throws RecognitionException {
		DropOwnedContext _localctx = new DropOwnedContext(_ctx, getState());
		enterRule(_localctx, 1358, RULE_dropOwned);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(9492);
			match(DROP);
			setState(9493);
			match(OWNED);
			setState(9494);
			match(BY);
			setState(9495);
			roleList();
			setState(9497);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==CASCADE || _la==RESTRICT) {
				{
				setState(9496);
				dropBehavior();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DropPolicyContext extends ParserRuleContext {
		public TerminalNode DROP() { return getToken(OpenGaussStatementParser.DROP, 0); }
		public TerminalNode POLICY() { return getToken(OpenGaussStatementParser.POLICY, 0); }
		public NameContext name() {
			return getRuleContext(NameContext.class,0);
		}
		public TerminalNode ON() { return getToken(OpenGaussStatementParser.ON, 0); }
		public TableNameContext tableName() {
			return getRuleContext(TableNameContext.class,0);
		}
		public IfExistsContext ifExists() {
			return getRuleContext(IfExistsContext.class,0);
		}
		public DropBehaviorContext dropBehavior() {
			return getRuleContext(DropBehaviorContext.class,0);
		}
		public DropPolicyContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_dropPolicy; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitDropPolicy(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DropPolicyContext dropPolicy() throws RecognitionException {
		DropPolicyContext _localctx = new DropPolicyContext(_ctx, getState());
		enterRule(_localctx, 1360, RULE_dropPolicy);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(9499);
			match(DROP);
			setState(9500);
			match(POLICY);
			setState(9502);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,900,_ctx) ) {
			case 1:
				{
				setState(9501);
				ifExists();
				}
				break;
			}
			setState(9504);
			name();
			setState(9505);
			match(ON);
			setState(9506);
			tableName();
			setState(9508);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==CASCADE || _la==RESTRICT) {
				{
				setState(9507);
				dropBehavior();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DropProcedureContext extends ParserRuleContext {
		public TerminalNode DROP() { return getToken(OpenGaussStatementParser.DROP, 0); }
		public TerminalNode PROCEDURE() { return getToken(OpenGaussStatementParser.PROCEDURE, 0); }
		public FunctionWithArgtypesListContext functionWithArgtypesList() {
			return getRuleContext(FunctionWithArgtypesListContext.class,0);
		}
		public IfExistsContext ifExists() {
			return getRuleContext(IfExistsContext.class,0);
		}
		public DropBehaviorContext dropBehavior() {
			return getRuleContext(DropBehaviorContext.class,0);
		}
		public DropProcedureContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_dropProcedure; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitDropProcedure(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DropProcedureContext dropProcedure() throws RecognitionException {
		DropProcedureContext _localctx = new DropProcedureContext(_ctx, getState());
		enterRule(_localctx, 1362, RULE_dropProcedure);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(9510);
			match(DROP);
			setState(9511);
			match(PROCEDURE);
			setState(9513);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,902,_ctx) ) {
			case 1:
				{
				setState(9512);
				ifExists();
				}
				break;
			}
			setState(9515);
			functionWithArgtypesList();
			setState(9517);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==CASCADE || _la==RESTRICT) {
				{
				setState(9516);
				dropBehavior();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DropPublicationContext extends ParserRuleContext {
		public TerminalNode DROP() { return getToken(OpenGaussStatementParser.DROP, 0); }
		public TerminalNode PUBLICATION() { return getToken(OpenGaussStatementParser.PUBLICATION, 0); }
		public NameContext name() {
			return getRuleContext(NameContext.class,0);
		}
		public IfExistsContext ifExists() {
			return getRuleContext(IfExistsContext.class,0);
		}
		public DropBehaviorContext dropBehavior() {
			return getRuleContext(DropBehaviorContext.class,0);
		}
		public DropPublicationContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_dropPublication; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitDropPublication(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DropPublicationContext dropPublication() throws RecognitionException {
		DropPublicationContext _localctx = new DropPublicationContext(_ctx, getState());
		enterRule(_localctx, 1364, RULE_dropPublication);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(9519);
			match(DROP);
			setState(9520);
			match(PUBLICATION);
			setState(9522);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,904,_ctx) ) {
			case 1:
				{
				setState(9521);
				ifExists();
				}
				break;
			}
			setState(9524);
			name();
			setState(9526);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==CASCADE || _la==RESTRICT) {
				{
				setState(9525);
				dropBehavior();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DropRoutineContext extends ParserRuleContext {
		public TerminalNode DROP() { return getToken(OpenGaussStatementParser.DROP, 0); }
		public TerminalNode ROUTINE() { return getToken(OpenGaussStatementParser.ROUTINE, 0); }
		public FunctionWithArgtypesListContext functionWithArgtypesList() {
			return getRuleContext(FunctionWithArgtypesListContext.class,0);
		}
		public IfExistsContext ifExists() {
			return getRuleContext(IfExistsContext.class,0);
		}
		public DropBehaviorContext dropBehavior() {
			return getRuleContext(DropBehaviorContext.class,0);
		}
		public DropRoutineContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_dropRoutine; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitDropRoutine(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DropRoutineContext dropRoutine() throws RecognitionException {
		DropRoutineContext _localctx = new DropRoutineContext(_ctx, getState());
		enterRule(_localctx, 1366, RULE_dropRoutine);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(9528);
			match(DROP);
			setState(9529);
			match(ROUTINE);
			setState(9531);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,906,_ctx) ) {
			case 1:
				{
				setState(9530);
				ifExists();
				}
				break;
			}
			setState(9533);
			functionWithArgtypesList();
			setState(9535);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==CASCADE || _la==RESTRICT) {
				{
				setState(9534);
				dropBehavior();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DropRuleContext extends ParserRuleContext {
		public TerminalNode DROP() { return getToken(OpenGaussStatementParser.DROP, 0); }
		public TerminalNode RULE() { return getToken(OpenGaussStatementParser.RULE, 0); }
		public NameContext name() {
			return getRuleContext(NameContext.class,0);
		}
		public TerminalNode ON() { return getToken(OpenGaussStatementParser.ON, 0); }
		public TableNameContext tableName() {
			return getRuleContext(TableNameContext.class,0);
		}
		public IfExistsContext ifExists() {
			return getRuleContext(IfExistsContext.class,0);
		}
		public DropBehaviorContext dropBehavior() {
			return getRuleContext(DropBehaviorContext.class,0);
		}
		public DropRuleContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_dropRule; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitDropRule(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DropRuleContext dropRule() throws RecognitionException {
		DropRuleContext _localctx = new DropRuleContext(_ctx, getState());
		enterRule(_localctx, 1368, RULE_dropRule);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(9537);
			match(DROP);
			setState(9538);
			match(RULE);
			setState(9540);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,908,_ctx) ) {
			case 1:
				{
				setState(9539);
				ifExists();
				}
				break;
			}
			setState(9542);
			name();
			setState(9543);
			match(ON);
			setState(9544);
			tableName();
			setState(9546);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==CASCADE || _la==RESTRICT) {
				{
				setState(9545);
				dropBehavior();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DropSequenceContext extends ParserRuleContext {
		public TerminalNode DROP() { return getToken(OpenGaussStatementParser.DROP, 0); }
		public TerminalNode SEQUENCE() { return getToken(OpenGaussStatementParser.SEQUENCE, 0); }
		public QualifiedNameListContext qualifiedNameList() {
			return getRuleContext(QualifiedNameListContext.class,0);
		}
		public IfExistsContext ifExists() {
			return getRuleContext(IfExistsContext.class,0);
		}
		public DropBehaviorContext dropBehavior() {
			return getRuleContext(DropBehaviorContext.class,0);
		}
		public DropSequenceContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_dropSequence; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitDropSequence(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DropSequenceContext dropSequence() throws RecognitionException {
		DropSequenceContext _localctx = new DropSequenceContext(_ctx, getState());
		enterRule(_localctx, 1370, RULE_dropSequence);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(9548);
			match(DROP);
			setState(9549);
			match(SEQUENCE);
			setState(9551);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,910,_ctx) ) {
			case 1:
				{
				setState(9550);
				ifExists();
				}
				break;
			}
			setState(9553);
			qualifiedNameList(0);
			setState(9555);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==CASCADE || _la==RESTRICT) {
				{
				setState(9554);
				dropBehavior();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DropSynonymContext extends ParserRuleContext {
		public TerminalNode DROP() { return getToken(OpenGaussStatementParser.DROP, 0); }
		public TerminalNode SYNONYM() { return getToken(OpenGaussStatementParser.SYNONYM, 0); }
		public SynonymNameContext synonymName() {
			return getRuleContext(SynonymNameContext.class,0);
		}
		public IfExistsContext ifExists() {
			return getRuleContext(IfExistsContext.class,0);
		}
		public DropBehaviorContext dropBehavior() {
			return getRuleContext(DropBehaviorContext.class,0);
		}
		public DropSynonymContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_dropSynonym; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitDropSynonym(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DropSynonymContext dropSynonym() throws RecognitionException {
		DropSynonymContext _localctx = new DropSynonymContext(_ctx, getState());
		enterRule(_localctx, 1372, RULE_dropSynonym);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(9557);
			match(DROP);
			setState(9558);
			match(SYNONYM);
			setState(9560);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,912,_ctx) ) {
			case 1:
				{
				setState(9559);
				ifExists();
				}
				break;
			}
			setState(9562);
			synonymName();
			setState(9564);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==CASCADE || _la==RESTRICT) {
				{
				setState(9563);
				dropBehavior();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DropServerContext extends ParserRuleContext {
		public TerminalNode DROP() { return getToken(OpenGaussStatementParser.DROP, 0); }
		public TerminalNode SERVER() { return getToken(OpenGaussStatementParser.SERVER, 0); }
		public QualifiedNameListContext qualifiedNameList() {
			return getRuleContext(QualifiedNameListContext.class,0);
		}
		public IfExistsContext ifExists() {
			return getRuleContext(IfExistsContext.class,0);
		}
		public DropBehaviorContext dropBehavior() {
			return getRuleContext(DropBehaviorContext.class,0);
		}
		public DropServerContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_dropServer; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitDropServer(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DropServerContext dropServer() throws RecognitionException {
		DropServerContext _localctx = new DropServerContext(_ctx, getState());
		enterRule(_localctx, 1374, RULE_dropServer);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(9566);
			match(DROP);
			setState(9567);
			match(SERVER);
			setState(9569);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,914,_ctx) ) {
			case 1:
				{
				setState(9568);
				ifExists();
				}
				break;
			}
			setState(9571);
			qualifiedNameList(0);
			setState(9573);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==CASCADE || _la==RESTRICT) {
				{
				setState(9572);
				dropBehavior();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DropStatisticsContext extends ParserRuleContext {
		public TerminalNode DROP() { return getToken(OpenGaussStatementParser.DROP, 0); }
		public TerminalNode STATISTICS() { return getToken(OpenGaussStatementParser.STATISTICS, 0); }
		public QualifiedNameListContext qualifiedNameList() {
			return getRuleContext(QualifiedNameListContext.class,0);
		}
		public IfExistsContext ifExists() {
			return getRuleContext(IfExistsContext.class,0);
		}
		public DropStatisticsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_dropStatistics; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitDropStatistics(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DropStatisticsContext dropStatistics() throws RecognitionException {
		DropStatisticsContext _localctx = new DropStatisticsContext(_ctx, getState());
		enterRule(_localctx, 1376, RULE_dropStatistics);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(9575);
			match(DROP);
			setState(9576);
			match(STATISTICS);
			setState(9578);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,916,_ctx) ) {
			case 1:
				{
				setState(9577);
				ifExists();
				}
				break;
			}
			setState(9580);
			qualifiedNameList(0);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DropSubscriptionContext extends ParserRuleContext {
		public TerminalNode DROP() { return getToken(OpenGaussStatementParser.DROP, 0); }
		public TerminalNode SUBSCRIPTION() { return getToken(OpenGaussStatementParser.SUBSCRIPTION, 0); }
		public QualifiedNameContext qualifiedName() {
			return getRuleContext(QualifiedNameContext.class,0);
		}
		public IfExistsContext ifExists() {
			return getRuleContext(IfExistsContext.class,0);
		}
		public DropBehaviorContext dropBehavior() {
			return getRuleContext(DropBehaviorContext.class,0);
		}
		public DropSubscriptionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_dropSubscription; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitDropSubscription(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DropSubscriptionContext dropSubscription() throws RecognitionException {
		DropSubscriptionContext _localctx = new DropSubscriptionContext(_ctx, getState());
		enterRule(_localctx, 1378, RULE_dropSubscription);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(9582);
			match(DROP);
			setState(9583);
			match(SUBSCRIPTION);
			setState(9585);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,917,_ctx) ) {
			case 1:
				{
				setState(9584);
				ifExists();
				}
				break;
			}
			setState(9587);
			qualifiedName();
			setState(9589);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==CASCADE || _la==RESTRICT) {
				{
				setState(9588);
				dropBehavior();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DropTablespaceContext extends ParserRuleContext {
		public TerminalNode DROP() { return getToken(OpenGaussStatementParser.DROP, 0); }
		public TerminalNode TABLESPACE() { return getToken(OpenGaussStatementParser.TABLESPACE, 0); }
		public QualifiedNameContext qualifiedName() {
			return getRuleContext(QualifiedNameContext.class,0);
		}
		public IfExistsContext ifExists() {
			return getRuleContext(IfExistsContext.class,0);
		}
		public DropTablespaceContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_dropTablespace; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitDropTablespace(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DropTablespaceContext dropTablespace() throws RecognitionException {
		DropTablespaceContext _localctx = new DropTablespaceContext(_ctx, getState());
		enterRule(_localctx, 1380, RULE_dropTablespace);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(9591);
			match(DROP);
			setState(9592);
			match(TABLESPACE);
			setState(9594);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,919,_ctx) ) {
			case 1:
				{
				setState(9593);
				ifExists();
				}
				break;
			}
			setState(9596);
			qualifiedName();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DropTextSearchContext extends ParserRuleContext {
		public TerminalNode DROP() { return getToken(OpenGaussStatementParser.DROP, 0); }
		public TerminalNode TEXT() { return getToken(OpenGaussStatementParser.TEXT, 0); }
		public TerminalNode SEARCH() { return getToken(OpenGaussStatementParser.SEARCH, 0); }
		public QualifiedNameContext qualifiedName() {
			return getRuleContext(QualifiedNameContext.class,0);
		}
		public TerminalNode CONFIGURATION() { return getToken(OpenGaussStatementParser.CONFIGURATION, 0); }
		public TerminalNode DICTIONARY() { return getToken(OpenGaussStatementParser.DICTIONARY, 0); }
		public TerminalNode PARSER() { return getToken(OpenGaussStatementParser.PARSER, 0); }
		public TerminalNode TEMPLATE() { return getToken(OpenGaussStatementParser.TEMPLATE, 0); }
		public IfExistsContext ifExists() {
			return getRuleContext(IfExistsContext.class,0);
		}
		public DropBehaviorContext dropBehavior() {
			return getRuleContext(DropBehaviorContext.class,0);
		}
		public DropTextSearchContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_dropTextSearch; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitDropTextSearch(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DropTextSearchContext dropTextSearch() throws RecognitionException {
		DropTextSearchContext _localctx = new DropTextSearchContext(_ctx, getState());
		enterRule(_localctx, 1382, RULE_dropTextSearch);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(9598);
			match(DROP);
			setState(9599);
			match(TEXT);
			setState(9600);
			match(SEARCH);
			setState(9601);
			_la = _input.LA(1);
			if ( !(((((_la - 469)) & ~0x3f) == 0 && ((1L << (_la - 469)) & ((1L << (CONFIGURATION - 469)) | (1L << (DICTIONARY - 469)) | (1L << (PARSER - 469)))) != 0) || _la==TEMPLATE) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			setState(9603);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,920,_ctx) ) {
			case 1:
				{
				setState(9602);
				ifExists();
				}
				break;
			}
			setState(9605);
			qualifiedName();
			setState(9607);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==CASCADE || _la==RESTRICT) {
				{
				setState(9606);
				dropBehavior();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DropTransformContext extends ParserRuleContext {
		public TerminalNode DROP() { return getToken(OpenGaussStatementParser.DROP, 0); }
		public TerminalNode TRANSFORM() { return getToken(OpenGaussStatementParser.TRANSFORM, 0); }
		public TerminalNode FOR() { return getToken(OpenGaussStatementParser.FOR, 0); }
		public TypeNameContext typeName() {
			return getRuleContext(TypeNameContext.class,0);
		}
		public TerminalNode LANGUAGE() { return getToken(OpenGaussStatementParser.LANGUAGE, 0); }
		public NameContext name() {
			return getRuleContext(NameContext.class,0);
		}
		public IfExistsContext ifExists() {
			return getRuleContext(IfExistsContext.class,0);
		}
		public DropBehaviorContext dropBehavior() {
			return getRuleContext(DropBehaviorContext.class,0);
		}
		public DropTransformContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_dropTransform; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitDropTransform(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DropTransformContext dropTransform() throws RecognitionException {
		DropTransformContext _localctx = new DropTransformContext(_ctx, getState());
		enterRule(_localctx, 1384, RULE_dropTransform);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(9609);
			match(DROP);
			setState(9610);
			match(TRANSFORM);
			setState(9612);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==IF) {
				{
				setState(9611);
				ifExists();
				}
			}

			setState(9614);
			match(FOR);
			setState(9615);
			typeName();
			setState(9616);
			match(LANGUAGE);
			setState(9617);
			name();
			setState(9619);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==CASCADE || _la==RESTRICT) {
				{
				setState(9618);
				dropBehavior();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DropTriggerContext extends ParserRuleContext {
		public TerminalNode DROP() { return getToken(OpenGaussStatementParser.DROP, 0); }
		public TerminalNode TRIGGER() { return getToken(OpenGaussStatementParser.TRIGGER, 0); }
		public QualifiedNameContext qualifiedName() {
			return getRuleContext(QualifiedNameContext.class,0);
		}
		public TerminalNode ON() { return getToken(OpenGaussStatementParser.ON, 0); }
		public TableNameContext tableName() {
			return getRuleContext(TableNameContext.class,0);
		}
		public IfExistsContext ifExists() {
			return getRuleContext(IfExistsContext.class,0);
		}
		public DropBehaviorContext dropBehavior() {
			return getRuleContext(DropBehaviorContext.class,0);
		}
		public DropTriggerContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_dropTrigger; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitDropTrigger(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DropTriggerContext dropTrigger() throws RecognitionException {
		DropTriggerContext _localctx = new DropTriggerContext(_ctx, getState());
		enterRule(_localctx, 1386, RULE_dropTrigger);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(9621);
			match(DROP);
			setState(9622);
			match(TRIGGER);
			setState(9624);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,924,_ctx) ) {
			case 1:
				{
				setState(9623);
				ifExists();
				}
				break;
			}
			setState(9626);
			qualifiedName();
			setState(9627);
			match(ON);
			setState(9628);
			tableName();
			setState(9630);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==CASCADE || _la==RESTRICT) {
				{
				setState(9629);
				dropBehavior();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DropTypeContext extends ParserRuleContext {
		public TerminalNode DROP() { return getToken(OpenGaussStatementParser.DROP, 0); }
		public TerminalNode TYPE() { return getToken(OpenGaussStatementParser.TYPE, 0); }
		public AnyNameListContext anyNameList() {
			return getRuleContext(AnyNameListContext.class,0);
		}
		public IfExistsContext ifExists() {
			return getRuleContext(IfExistsContext.class,0);
		}
		public DropBehaviorContext dropBehavior() {
			return getRuleContext(DropBehaviorContext.class,0);
		}
		public DropTypeContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_dropType; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitDropType(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DropTypeContext dropType() throws RecognitionException {
		DropTypeContext _localctx = new DropTypeContext(_ctx, getState());
		enterRule(_localctx, 1388, RULE_dropType);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(9632);
			match(DROP);
			setState(9633);
			match(TYPE);
			setState(9635);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,926,_ctx) ) {
			case 1:
				{
				setState(9634);
				ifExists();
				}
				break;
			}
			setState(9637);
			anyNameList();
			setState(9639);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==CASCADE || _la==RESTRICT) {
				{
				setState(9638);
				dropBehavior();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DropUserMappingContext extends ParserRuleContext {
		public TerminalNode DROP() { return getToken(OpenGaussStatementParser.DROP, 0); }
		public TerminalNode USER() { return getToken(OpenGaussStatementParser.USER, 0); }
		public TerminalNode MAPPING() { return getToken(OpenGaussStatementParser.MAPPING, 0); }
		public TerminalNode FOR() { return getToken(OpenGaussStatementParser.FOR, 0); }
		public AuthIdentContext authIdent() {
			return getRuleContext(AuthIdentContext.class,0);
		}
		public TerminalNode SERVER() { return getToken(OpenGaussStatementParser.SERVER, 0); }
		public NameContext name() {
			return getRuleContext(NameContext.class,0);
		}
		public IfExistsContext ifExists() {
			return getRuleContext(IfExistsContext.class,0);
		}
		public DropUserMappingContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_dropUserMapping; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitDropUserMapping(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DropUserMappingContext dropUserMapping() throws RecognitionException {
		DropUserMappingContext _localctx = new DropUserMappingContext(_ctx, getState());
		enterRule(_localctx, 1390, RULE_dropUserMapping);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(9641);
			match(DROP);
			setState(9642);
			match(USER);
			setState(9643);
			match(MAPPING);
			setState(9645);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==IF) {
				{
				setState(9644);
				ifExists();
				}
			}

			setState(9647);
			match(FOR);
			setState(9648);
			authIdent();
			setState(9649);
			match(SERVER);
			setState(9650);
			name();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DropViewContext extends ParserRuleContext {
		public TerminalNode DROP() { return getToken(OpenGaussStatementParser.DROP, 0); }
		public TerminalNode VIEW() { return getToken(OpenGaussStatementParser.VIEW, 0); }
		public QualifiedNameListContext qualifiedNameList() {
			return getRuleContext(QualifiedNameListContext.class,0);
		}
		public IfExistsContext ifExists() {
			return getRuleContext(IfExistsContext.class,0);
		}
		public DropBehaviorContext dropBehavior() {
			return getRuleContext(DropBehaviorContext.class,0);
		}
		public DropViewContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_dropView; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitDropView(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DropViewContext dropView() throws RecognitionException {
		DropViewContext _localctx = new DropViewContext(_ctx, getState());
		enterRule(_localctx, 1392, RULE_dropView);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(9652);
			match(DROP);
			setState(9653);
			match(VIEW);
			setState(9655);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,929,_ctx) ) {
			case 1:
				{
				setState(9654);
				ifExists();
				}
				break;
			}
			setState(9657);
			qualifiedNameList(0);
			setState(9659);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==CASCADE || _la==RESTRICT) {
				{
				setState(9658);
				dropBehavior();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ImportForeignSchemaContext extends ParserRuleContext {
		public TerminalNode IMPORT() { return getToken(OpenGaussStatementParser.IMPORT, 0); }
		public TerminalNode FOREIGN() { return getToken(OpenGaussStatementParser.FOREIGN, 0); }
		public TerminalNode SCHEMA() { return getToken(OpenGaussStatementParser.SCHEMA, 0); }
		public List name() {
			return getRuleContexts(NameContext.class);
		}
		public NameContext name(int i) {
			return getRuleContext(NameContext.class,i);
		}
		public TerminalNode FROM() { return getToken(OpenGaussStatementParser.FROM, 0); }
		public TerminalNode SERVER() { return getToken(OpenGaussStatementParser.SERVER, 0); }
		public TerminalNode INTO() { return getToken(OpenGaussStatementParser.INTO, 0); }
		public ImportQualificationContext importQualification() {
			return getRuleContext(ImportQualificationContext.class,0);
		}
		public CreateGenericOptionsContext createGenericOptions() {
			return getRuleContext(CreateGenericOptionsContext.class,0);
		}
		public ImportForeignSchemaContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_importForeignSchema; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitImportForeignSchema(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ImportForeignSchemaContext importForeignSchema() throws RecognitionException {
		ImportForeignSchemaContext _localctx = new ImportForeignSchemaContext(_ctx, getState());
		enterRule(_localctx, 1394, RULE_importForeignSchema);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(9661);
			match(IMPORT);
			setState(9662);
			match(FOREIGN);
			setState(9663);
			match(SCHEMA);
			setState(9664);
			name();
			setState(9666);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==LIMIT || _la==EXCEPT) {
				{
				setState(9665);
				importQualification();
				}
			}

			setState(9668);
			match(FROM);
			setState(9669);
			match(SERVER);
			setState(9670);
			name();
			setState(9671);
			match(INTO);
			setState(9672);
			name();
			setState(9674);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==OPTIONS) {
				{
				setState(9673);
				createGenericOptions();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ImportQualificationContext extends ParserRuleContext {
		public ImportQualificationTypeContext importQualificationType() {
			return getRuleContext(ImportQualificationTypeContext.class,0);
		}
		public TerminalNode LP_() { return getToken(OpenGaussStatementParser.LP_, 0); }
		public RelationExprListContext relationExprList() {
			return getRuleContext(RelationExprListContext.class,0);
		}
		public TerminalNode RP_() { return getToken(OpenGaussStatementParser.RP_, 0); }
		public ImportQualificationContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_importQualification; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitImportQualification(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ImportQualificationContext importQualification() throws RecognitionException {
		ImportQualificationContext _localctx = new ImportQualificationContext(_ctx, getState());
		enterRule(_localctx, 1396, RULE_importQualification);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(9676);
			importQualificationType();
			setState(9677);
			match(LP_);
			setState(9678);
			relationExprList();
			setState(9679);
			match(RP_);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ImportQualificationTypeContext extends ParserRuleContext {
		public TerminalNode LIMIT() { return getToken(OpenGaussStatementParser.LIMIT, 0); }
		public TerminalNode TO() { return getToken(OpenGaussStatementParser.TO, 0); }
		public TerminalNode EXCEPT() { return getToken(OpenGaussStatementParser.EXCEPT, 0); }
		public ImportQualificationTypeContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_importQualificationType; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitImportQualificationType(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ImportQualificationTypeContext importQualificationType() throws RecognitionException {
		ImportQualificationTypeContext _localctx = new ImportQualificationTypeContext(_ctx, getState());
		enterRule(_localctx, 1398, RULE_importQualificationType);
		try {
			setState(9684);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case LIMIT:
				enterOuterAlt(_localctx, 1);
				{
				setState(9681);
				match(LIMIT);
				setState(9682);
				match(TO);
				}
				break;
			case EXCEPT:
				enterOuterAlt(_localctx, 2);
				{
				setState(9683);
				match(EXCEPT);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ListenContext extends ParserRuleContext {
		public TerminalNode LISTEN() { return getToken(OpenGaussStatementParser.LISTEN, 0); }
		public ColIdContext colId() {
			return getRuleContext(ColIdContext.class,0);
		}
		public ListenContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_listen; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitListen(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ListenContext listen() throws RecognitionException {
		ListenContext _localctx = new ListenContext(_ctx, getState());
		enterRule(_localctx, 1400, RULE_listen);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(9686);
			match(LISTEN);
			setState(9687);
			colId();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class MoveContext extends ParserRuleContext {
		public TerminalNode MOVE() { return getToken(OpenGaussStatementParser.MOVE, 0); }
		public CursorNameContext cursorName() {
			return getRuleContext(CursorNameContext.class,0);
		}
		public DirectionContext direction() {
			return getRuleContext(DirectionContext.class,0);
		}
		public TerminalNode FROM() { return getToken(OpenGaussStatementParser.FROM, 0); }
		public TerminalNode IN() { return getToken(OpenGaussStatementParser.IN, 0); }
		public MoveContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_move; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitMove(this);
			else return visitor.visitChildren(this);
		}
	}

	public final MoveContext move() throws RecognitionException {
		MoveContext _localctx = new MoveContext(_ctx, getState());
		enterRule(_localctx, 1402, RULE_move);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(9689);
			match(MOVE);
			setState(9691);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,934,_ctx) ) {
			case 1:
				{
				setState(9690);
				direction();
				}
				break;
			}
			setState(9694);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==FROM || _la==IN) {
				{
				setState(9693);
				_la = _input.LA(1);
				if ( !(_la==FROM || _la==IN) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
			}

			setState(9696);
			cursorName();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class PrepareContext extends ParserRuleContext {
		public TerminalNode PREPARE() { return getToken(OpenGaussStatementParser.PREPARE, 0); }
		public NameContext name() {
			return getRuleContext(NameContext.class,0);
		}
		public TerminalNode AS() { return getToken(OpenGaussStatementParser.AS, 0); }
		public PreparableStmtContext preparableStmt() {
			return getRuleContext(PreparableStmtContext.class,0);
		}
		public PrepTypeClauseContext prepTypeClause() {
			return getRuleContext(PrepTypeClauseContext.class,0);
		}
		public PrepareContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_prepare; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitPrepare(this);
			else return visitor.visitChildren(this);
		}
	}

	public final PrepareContext prepare() throws RecognitionException {
		PrepareContext _localctx = new PrepareContext(_ctx, getState());
		enterRule(_localctx, 1404, RULE_prepare);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(9698);
			match(PREPARE);
			setState(9699);
			name();
			setState(9701);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==LP_) {
				{
				setState(9700);
				prepTypeClause();
				}
			}

			setState(9703);
			match(AS);
			setState(9704);
			preparableStmt();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DeallocateContext extends ParserRuleContext {
		public TerminalNode DEALLOCATE() { return getToken(OpenGaussStatementParser.DEALLOCATE, 0); }
		public NameContext name() {
			return getRuleContext(NameContext.class,0);
		}
		public TerminalNode ALL() { return getToken(OpenGaussStatementParser.ALL, 0); }
		public TerminalNode PREPARE() { return getToken(OpenGaussStatementParser.PREPARE, 0); }
		public DeallocateContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_deallocate; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitDeallocate(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DeallocateContext deallocate() throws RecognitionException {
		DeallocateContext _localctx = new DeallocateContext(_ctx, getState());
		enterRule(_localctx, 1406, RULE_deallocate);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(9706);
			match(DEALLOCATE);
			setState(9708);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,937,_ctx) ) {
			case 1:
				{
				setState(9707);
				match(PREPARE);
				}
				break;
			}
			setState(9712);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case UNICODE_ESCAPE:
			case INSERT:
			case UPDATE:
			case DELETE:
			case ALTER:
			case DROP:
			case TRUNCATE:
			case SCHEMA:
			case REVOKE:
			case ADD:
			case SET:
			case INDEX:
			case KEY:
			case POSITION:
			case FUNCTION:
			case TRIGGER:
			case PROCEDURE:
			case VIEW:
			case IF:
			case BY:
			case BEGIN:
			case COMMIT:
			case ROLLBACK:
			case SAVEPOINT:
			case DOUBLE:
			case INTERVAL:
			case TIME:
			case TIMESTAMP:
			case YEAR:
			case MONTH:
			case DAY:
			case HOUR:
			case MINUTE:
			case SECOND:
			case CURRENT:
			case ENABLE:
			case DISABLE:
			case CALL:
			case PRESERVE:
			case DEFINER:
			case SQL:
			case CASCADED:
			case LOCAL:
			case CLOSE:
			case NEXT:
			case NAME:
			case NAMES:
			case TYPE:
			case TEXT:
			case REPEATABLE:
			case VARYING:
			case NATIONAL:
			case VALUE:
			case TIES:
			case CUBE:
			case SETS:
			case OTHERS:
			case AT:
			case MAXVALUE:
			case ADMIN:
			case ESCAPE:
			case EXCLUDE:
			case MOD:
			case PARTITION:
			case UNKNOWN:
			case ALWAYS:
			case CASCADE:
			case GENERATED:
			case ISOLATION:
			case LEVEL:
			case NO:
			case OPTION:
			case PRIVILEGES:
			case READ:
			case ROLE:
			case ROWS:
			case START:
			case TRANSACTION:
			case ACTION:
			case CACHE:
			case CHARACTERISTICS:
			case CLUSTER:
			case COMMENTS:
			case CONSTRAINTS:
			case CYCLE:
			case DATA:
			case DATABASE:
			case DEFAULTS:
			case DEFERRED:
			case DEPENDS:
			case DOMAIN:
			case EXCLUDING:
			case EXECUTE:
			case EXTENDED:
			case EXTENSION:
			case EXTERNAL:
			case FILTER:
			case FIRST:
			case FOLLOWING:
			case FORCE:
			case GLOBAL:
			case IDENTITY:
			case IMMEDIATE:
			case INCLUDING:
			case INCREMENT:
			case INDEXES:
			case INHERIT:
			case INHERITS:
			case INCLUDE:
			case LANGUAGE:
			case LARGE:
			case LAST:
			case LOGGED:
			case MAIN:
			case MATCH:
			case MINVALUE:
			case NOTHING:
			case NULLS:
			case OBJECT:
			case OIDS:
			case OVER:
			case OWNED:
			case OWNER:
			case PARTIAL:
			case PLAIN:
			case PRECEDING:
			case RANGE:
			case RENAME:
			case REPLICA:
			case RESET:
			case RESTART:
			case RESTRICT:
			case ROUTINE:
			case RULE:
			case SECURITY:
			case SEQUENCE:
			case SESSION:
			case SHOW:
			case SIMPLE:
			case STATISTICS:
			case STORAGE:
			case TABLESPACE:
			case TEMP:
			case TEMPORARY:
			case UNBOUNDED:
			case UNLOGGED:
			case VALID:
			case VALIDATE:
			case WITHIN:
			case WITHOUT:
			case ZONE:
			case OF:
			case UESCAPE:
			case GROUPS:
			case RECURSIVE:
			case INT2:
			case INT4:
			case FLOAT4:
			case BYTEA:
			case ENUM:
			case POINT:
			case LSEG:
			case BOX:
			case PATH:
			case POLYGON:
			case CIRCLE:
			case INET:
			case TSQUERY:
			case XML:
			case JSON:
			case INT4RANGE:
			case INT8RANGE:
			case NUMRANGE:
			case DATERANGE:
			case ORDINALITY:
			case NFC:
			case NFD:
			case NFKC:
			case NFKD:
			case REF:
			case PASSING:
			case VERSION:
			case YES:
			case STANDALONE:
			case MATERIALIZED:
			case OPERATOR:
			case SHARE:
			case ROLLUP:
			case DOCUMENT:
			case NORMALIZED:
			case NOWAIT:
			case LOCKED:
			case COLUMNS:
			case CONTENT:
			case STRIP:
			case WHITESPACE:
			case CONFLICT:
			case OVERRIDING:
			case SYSTEM:
			case ABORT:
			case ABSOLUTE:
			case ACCESS:
			case AFTER:
			case AGGREGATE:
			case ALSO:
			case ATTACH:
			case ATTRIBUTE:
			case BACKWARD:
			case BEFORE:
			case ASSERTION:
			case ASSIGNMENT:
			case CONTINUE:
			case CONVERSION:
			case COPY:
			case COST:
			case CSV:
			case CALLED:
			case CATALOG:
			case CHAIN:
			case CHECKPOINT:
			case CLASS:
			case CONFIGURATION:
			case COMMENT:
			case DETACH:
			case DICTIONARY:
			case EXPRESSION:
			case INSENSITIVE:
			case DISCARD:
			case OFF:
			case INSTEAD:
			case EXPLAIN:
			case INPUT:
			case INLINE:
			case PARALLEL:
			case LEAKPROOF:
			case COMMITTED:
			case ENCODING:
			case IMPLICIT:
			case DELIMITER:
			case CURSOR:
			case EACH:
			case EVENT:
			case DEALLOCATE:
			case CONNECTION:
			case DECLARE:
			case FAMILY:
			case FORWARD:
			case EXCLUSIVE:
			case FUNCTIONS:
			case LOCATION:
			case LABEL:
			case DELIMITERS:
			case HANDLER:
			case HEADER:
			case IMMUTABLE:
			case GRANTED:
			case HOLD:
			case MAPPING:
			case OLD:
			case METHOD:
			case LOAD:
			case LISTEN:
			case MODE:
			case MOVE:
			case PROCEDURAL:
			case PARSER:
			case PROCEDURES:
			case ENCRYPTED:
			case PUBLICATION:
			case PROGRAM:
			case REFERENCING:
			case PLANS:
			case REINDEX:
			case PRIOR:
			case PASSWORD:
			case RELATIVE:
			case QUOTE:
			case ROUTINES:
			case REPLACE:
			case SNAPSHOT:
			case REFRESH:
			case PREPARE:
			case OPTIONS:
			case IMPORT:
			case INVOKER:
			case NEW:
			case PREPARED:
			case SCROLL:
			case SEQUENCES:
			case SYSID:
			case REASSIGN:
			case SERVER:
			case SUBSCRIPTION:
			case SEARCH:
			case SCHEMAS:
			case RECHECK:
			case POLICY:
			case NOTIFY:
			case LOCK:
			case RELEASE:
			case SERIALIZABLE:
			case RETURNS:
			case STATEMENT:
			case STDIN:
			case STDOUT:
			case TABLES:
			case SUPPORT:
			case STABLE:
			case TEMPLATE:
			case UNENCRYPTED:
			case VIEWS:
			case UNCOMMITTED:
			case TRANSFORM:
			case UNLISTEN:
			case TRUSTED:
			case VALIDATOR:
			case UNTIL:
			case VACUUM:
			case VOLATILE:
			case STORED:
			case WRITE:
			case STRICT:
			case TYPES:
			case WRAPPER:
			case WORK:
			case INT16:
			case INT1:
			case ELEM_CONTAINED_BY_RANGE:
			case IDENTIFIER_:
				{
				setState(9710);
				name();
				}
				break;
			case ALL:
				{
				setState(9711);
				match(ALL);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class PrepTypeClauseContext extends ParserRuleContext {
		public TerminalNode LP_() { return getToken(OpenGaussStatementParser.LP_, 0); }
		public TypeListContext typeList() {
			return getRuleContext(TypeListContext.class,0);
		}
		public TerminalNode RP_() { return getToken(OpenGaussStatementParser.RP_, 0); }
		public PrepTypeClauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_prepTypeClause; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitPrepTypeClause(this);
			else return visitor.visitChildren(this);
		}
	}

	public final PrepTypeClauseContext prepTypeClause() throws RecognitionException {
		PrepTypeClauseContext _localctx = new PrepTypeClauseContext(_ctx, getState());
		enterRule(_localctx, 1408, RULE_prepTypeClause);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(9714);
			match(LP_);
			setState(9715);
			typeList();
			setState(9716);
			match(RP_);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class RefreshMaterializedViewContext extends ParserRuleContext {
		public TerminalNode REFRESH() { return getToken(OpenGaussStatementParser.REFRESH, 0); }
		public TerminalNode MATERIALIZED() { return getToken(OpenGaussStatementParser.MATERIALIZED, 0); }
		public TerminalNode VIEW() { return getToken(OpenGaussStatementParser.VIEW, 0); }
		public QualifiedNameContext qualifiedName() {
			return getRuleContext(QualifiedNameContext.class,0);
		}
		public TerminalNode CONCURRENTLY() { return getToken(OpenGaussStatementParser.CONCURRENTLY, 0); }
		public WithDataContext withData() {
			return getRuleContext(WithDataContext.class,0);
		}
		public RefreshMaterializedViewContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_refreshMaterializedView; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitRefreshMaterializedView(this);
			else return visitor.visitChildren(this);
		}
	}

	public final RefreshMaterializedViewContext refreshMaterializedView() throws RecognitionException {
		RefreshMaterializedViewContext _localctx = new RefreshMaterializedViewContext(_ctx, getState());
		enterRule(_localctx, 1410, RULE_refreshMaterializedView);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(9718);
			match(REFRESH);
			setState(9719);
			match(MATERIALIZED);
			setState(9720);
			match(VIEW);
			setState(9722);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==CONCURRENTLY) {
				{
				setState(9721);
				match(CONCURRENTLY);
				}
			}

			setState(9724);
			qualifiedName();
			setState(9726);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==WITH) {
				{
				setState(9725);
				withData();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ReIndexContext extends ParserRuleContext {
		public TerminalNode REINDEX() { return getToken(OpenGaussStatementParser.REINDEX, 0); }
		public ReIndexClausesContext reIndexClauses() {
			return getRuleContext(ReIndexClausesContext.class,0);
		}
		public ReIndexContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_reIndex; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitReIndex(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ReIndexContext reIndex() throws RecognitionException {
		ReIndexContext _localctx = new ReIndexContext(_ctx, getState());
		enterRule(_localctx, 1412, RULE_reIndex);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(9728);
			match(REINDEX);
			setState(9729);
			reIndexClauses();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ReIndexClausesContext extends ParserRuleContext {
		public ReindexTargetTypeContext reindexTargetType() {
			return getRuleContext(ReindexTargetTypeContext.class,0);
		}
		public QualifiedNameContext qualifiedName() {
			return getRuleContext(QualifiedNameContext.class,0);
		}
		public TerminalNode CONCURRENTLY() { return getToken(OpenGaussStatementParser.CONCURRENTLY, 0); }
		public ReindexTargetMultitableContext reindexTargetMultitable() {
			return getRuleContext(ReindexTargetMultitableContext.class,0);
		}
		public NameContext name() {
			return getRuleContext(NameContext.class,0);
		}
		public TerminalNode LP_() { return getToken(OpenGaussStatementParser.LP_, 0); }
		public ReindexOptionListContext reindexOptionList() {
			return getRuleContext(ReindexOptionListContext.class,0);
		}
		public TerminalNode RP_() { return getToken(OpenGaussStatementParser.RP_, 0); }
		public ReIndexClausesContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_reIndexClauses; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitReIndexClauses(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ReIndexClausesContext reIndexClauses() throws RecognitionException {
		ReIndexClausesContext _localctx = new ReIndexClausesContext(_ctx, getState());
		enterRule(_localctx, 1414, RULE_reIndexClauses);
		int _la;
		try {
			setState(9761);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,945,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(9731);
				reindexTargetType();
				setState(9733);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==CONCURRENTLY) {
					{
					setState(9732);
					match(CONCURRENTLY);
					}
				}

				setState(9735);
				qualifiedName();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(9737);
				reindexTargetMultitable();
				setState(9739);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==CONCURRENTLY) {
					{
					setState(9738);
					match(CONCURRENTLY);
					}
				}

				setState(9741);
				name();
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(9743);
				match(LP_);
				setState(9744);
				reindexOptionList();
				setState(9745);
				match(RP_);
				setState(9746);
				reindexTargetType();
				setState(9748);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==CONCURRENTLY) {
					{
					setState(9747);
					match(CONCURRENTLY);
					}
				}

				setState(9750);
				qualifiedName();
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(9752);
				match(LP_);
				setState(9753);
				reindexOptionList();
				setState(9754);
				match(RP_);
				setState(9755);
				reindexTargetMultitable();
				setState(9757);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==CONCURRENTLY) {
					{
					setState(9756);
					match(CONCURRENTLY);
					}
				}

				setState(9759);
				name();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ReindexOptionListContext extends ParserRuleContext {
		public List reindexOptionElem() {
			return getRuleContexts(ReindexOptionElemContext.class);
		}
		public ReindexOptionElemContext reindexOptionElem(int i) {
			return getRuleContext(ReindexOptionElemContext.class,i);
		}
		public List COMMA_() { return getTokens(OpenGaussStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(OpenGaussStatementParser.COMMA_, i);
		}
		public ReindexOptionListContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_reindexOptionList; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitReindexOptionList(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ReindexOptionListContext reindexOptionList() throws RecognitionException {
		ReindexOptionListContext _localctx = new ReindexOptionListContext(_ctx, getState());
		enterRule(_localctx, 1416, RULE_reindexOptionList);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(9763);
			reindexOptionElem();
			setState(9768);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA_) {
				{
				{
				setState(9764);
				match(COMMA_);
				setState(9765);
				reindexOptionElem();
				}
				}
				setState(9770);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ReindexOptionElemContext extends ParserRuleContext {
		public TerminalNode VERBOSE() { return getToken(OpenGaussStatementParser.VERBOSE, 0); }
		public ReindexOptionElemContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_reindexOptionElem; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitReindexOptionElem(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ReindexOptionElemContext reindexOptionElem() throws RecognitionException {
		ReindexOptionElemContext _localctx = new ReindexOptionElemContext(_ctx, getState());
		enterRule(_localctx, 1418, RULE_reindexOptionElem);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(9771);
			match(VERBOSE);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ReindexTargetMultitableContext extends ParserRuleContext {
		public TerminalNode SCHEMA() { return getToken(OpenGaussStatementParser.SCHEMA, 0); }
		public TerminalNode SYSTEM() { return getToken(OpenGaussStatementParser.SYSTEM, 0); }
		public TerminalNode DATABASE() { return getToken(OpenGaussStatementParser.DATABASE, 0); }
		public ReindexTargetMultitableContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_reindexTargetMultitable; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitReindexTargetMultitable(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ReindexTargetMultitableContext reindexTargetMultitable() throws RecognitionException {
		ReindexTargetMultitableContext _localctx = new ReindexTargetMultitableContext(_ctx, getState());
		enterRule(_localctx, 1420, RULE_reindexTargetMultitable);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(9773);
			_la = _input.LA(1);
			if ( !(_la==SCHEMA || _la==DATABASE || _la==SYSTEM) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ReindexTargetTypeContext extends ParserRuleContext {
		public TerminalNode INDEX() { return getToken(OpenGaussStatementParser.INDEX, 0); }
		public TerminalNode TABLE() { return getToken(OpenGaussStatementParser.TABLE, 0); }
		public ReindexTargetTypeContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_reindexTargetType; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitReindexTargetType(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ReindexTargetTypeContext reindexTargetType() throws RecognitionException {
		ReindexTargetTypeContext _localctx = new ReindexTargetTypeContext(_ctx, getState());
		enterRule(_localctx, 1422, RULE_reindexTargetType);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(9775);
			_la = _input.LA(1);
			if ( !(_la==TABLE || _la==INDEX) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterForeignTableContext extends ParserRuleContext {
		public TerminalNode ALTER() { return getToken(OpenGaussStatementParser.ALTER, 0); }
		public TerminalNode FOREIGN() { return getToken(OpenGaussStatementParser.FOREIGN, 0); }
		public TerminalNode TABLE() { return getToken(OpenGaussStatementParser.TABLE, 0); }
		public RelationExprContext relationExpr() {
			return getRuleContext(RelationExprContext.class,0);
		}
		public AlterForeignTableClausesContext alterForeignTableClauses() {
			return getRuleContext(AlterForeignTableClausesContext.class,0);
		}
		public IfExistsContext ifExists() {
			return getRuleContext(IfExistsContext.class,0);
		}
		public AlterForeignTableContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterForeignTable; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitAlterForeignTable(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AlterForeignTableContext alterForeignTable() throws RecognitionException {
		AlterForeignTableContext _localctx = new AlterForeignTableContext(_ctx, getState());
		enterRule(_localctx, 1424, RULE_alterForeignTable);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(9777);
			match(ALTER);
			setState(9778);
			match(FOREIGN);
			setState(9779);
			match(TABLE);
			setState(9781);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,947,_ctx) ) {
			case 1:
				{
				setState(9780);
				ifExists();
				}
				break;
			}
			setState(9783);
			relationExpr();
			setState(9784);
			alterForeignTableClauses();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterForeignTableClausesContext extends ParserRuleContext {
		public TerminalNode RENAME() { return getToken(OpenGaussStatementParser.RENAME, 0); }
		public TerminalNode TO() { return getToken(OpenGaussStatementParser.TO, 0); }
		public List name() {
			return getRuleContexts(NameContext.class);
		}
		public NameContext name(int i) {
			return getRuleContext(NameContext.class,i);
		}
		public TerminalNode COLUMN() { return getToken(OpenGaussStatementParser.COLUMN, 0); }
		public AlterTableCmdsContext alterTableCmds() {
			return getRuleContext(AlterTableCmdsContext.class,0);
		}
		public TerminalNode SET() { return getToken(OpenGaussStatementParser.SET, 0); }
		public TerminalNode SCHEMA() { return getToken(OpenGaussStatementParser.SCHEMA, 0); }
		public AlterForeignTableClausesContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterForeignTableClauses; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitAlterForeignTableClauses(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AlterForeignTableClausesContext alterForeignTableClauses() throws RecognitionException {
		AlterForeignTableClausesContext _localctx = new AlterForeignTableClausesContext(_ctx, getState());
		enterRule(_localctx, 1426, RULE_alterForeignTableClauses);
		int _la;
		try {
			setState(9801);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,949,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(9786);
				match(RENAME);
				setState(9787);
				match(TO);
				setState(9788);
				name();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(9789);
				match(RENAME);
				setState(9791);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==COLUMN) {
					{
					setState(9790);
					match(COLUMN);
					}
				}

				setState(9793);
				name();
				setState(9794);
				match(TO);
				setState(9795);
				name();
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(9797);
				alterTableCmds();
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(9798);
				match(SET);
				setState(9799);
				match(SCHEMA);
				setState(9800);
				name();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CreateOperatorContext extends ParserRuleContext {
		public TerminalNode CREATE() { return getToken(OpenGaussStatementParser.CREATE, 0); }
		public TerminalNode OPERATOR() { return getToken(OpenGaussStatementParser.OPERATOR, 0); }
		public AnyOperatorContext anyOperator() {
			return getRuleContext(AnyOperatorContext.class,0);
		}
		public DefinitionContext definition() {
			return getRuleContext(DefinitionContext.class,0);
		}
		public CreateOperatorContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_createOperator; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitCreateOperator(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CreateOperatorContext createOperator() throws RecognitionException {
		CreateOperatorContext _localctx = new CreateOperatorContext(_ctx, getState());
		enterRule(_localctx, 1428, RULE_createOperator);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(9803);
			match(CREATE);
			setState(9804);
			match(OPERATOR);
			setState(9805);
			anyOperator();
			setState(9806);
			definition();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CreateOperatorClassContext extends ParserRuleContext {
		public TerminalNode CREATE() { return getToken(OpenGaussStatementParser.CREATE, 0); }
		public TerminalNode OPERATOR() { return getToken(OpenGaussStatementParser.OPERATOR, 0); }
		public TerminalNode CLASS() { return getToken(OpenGaussStatementParser.CLASS, 0); }
		public List anyName() {
			return getRuleContexts(AnyNameContext.class);
		}
		public AnyNameContext anyName(int i) {
			return getRuleContext(AnyNameContext.class,i);
		}
		public TerminalNode FOR() { return getToken(OpenGaussStatementParser.FOR, 0); }
		public TerminalNode TYPE() { return getToken(OpenGaussStatementParser.TYPE, 0); }
		public TypeNameContext typeName() {
			return getRuleContext(TypeNameContext.class,0);
		}
		public TerminalNode USING() { return getToken(OpenGaussStatementParser.USING, 0); }
		public NameContext name() {
			return getRuleContext(NameContext.class,0);
		}
		public TerminalNode AS() { return getToken(OpenGaussStatementParser.AS, 0); }
		public OpclassItemListContext opclassItemList() {
			return getRuleContext(OpclassItemListContext.class,0);
		}
		public TerminalNode DEFAULT() { return getToken(OpenGaussStatementParser.DEFAULT, 0); }
		public TerminalNode FAMILY() { return getToken(OpenGaussStatementParser.FAMILY, 0); }
		public CreateOperatorClassContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_createOperatorClass; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitCreateOperatorClass(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CreateOperatorClassContext createOperatorClass() throws RecognitionException {
		CreateOperatorClassContext _localctx = new CreateOperatorClassContext(_ctx, getState());
		enterRule(_localctx, 1430, RULE_createOperatorClass);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(9808);
			match(CREATE);
			setState(9809);
			match(OPERATOR);
			setState(9810);
			match(CLASS);
			setState(9811);
			anyName();
			setState(9813);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==DEFAULT) {
				{
				setState(9812);
				match(DEFAULT);
				}
			}

			setState(9815);
			match(FOR);
			setState(9816);
			match(TYPE);
			setState(9817);
			typeName();
			setState(9818);
			match(USING);
			setState(9819);
			name();
			setState(9822);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==FAMILY) {
				{
				setState(9820);
				match(FAMILY);
				setState(9821);
				anyName();
				}
			}

			setState(9824);
			match(AS);
			setState(9825);
			opclassItemList();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CreateOperatorFamilyContext extends ParserRuleContext {
		public TerminalNode CREATE() { return getToken(OpenGaussStatementParser.CREATE, 0); }
		public TerminalNode OPERATOR() { return getToken(OpenGaussStatementParser.OPERATOR, 0); }
		public TerminalNode FAMILY() { return getToken(OpenGaussStatementParser.FAMILY, 0); }
		public AnyNameContext anyName() {
			return getRuleContext(AnyNameContext.class,0);
		}
		public TerminalNode USING() { return getToken(OpenGaussStatementParser.USING, 0); }
		public NameContext name() {
			return getRuleContext(NameContext.class,0);
		}
		public CreateOperatorFamilyContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_createOperatorFamily; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitCreateOperatorFamily(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CreateOperatorFamilyContext createOperatorFamily() throws RecognitionException {
		CreateOperatorFamilyContext _localctx = new CreateOperatorFamilyContext(_ctx, getState());
		enterRule(_localctx, 1432, RULE_createOperatorFamily);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(9827);
			match(CREATE);
			setState(9828);
			match(OPERATOR);
			setState(9829);
			match(FAMILY);
			setState(9830);
			anyName();
			setState(9831);
			match(USING);
			setState(9832);
			name();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class SecurityLabelStmtContext extends ParserRuleContext {
		public TerminalNode SECURITY() { return getToken(OpenGaussStatementParser.SECURITY, 0); }
		public TerminalNode LABEL() { return getToken(OpenGaussStatementParser.LABEL, 0); }
		public TerminalNode ON() { return getToken(OpenGaussStatementParser.ON, 0); }
		public SecurityLabelClauscesContext securityLabelClausces() {
			return getRuleContext(SecurityLabelClauscesContext.class,0);
		}
		public TerminalNode IS() { return getToken(OpenGaussStatementParser.IS, 0); }
		public SecurityLabelContext securityLabel() {
			return getRuleContext(SecurityLabelContext.class,0);
		}
		public TerminalNode FOR() { return getToken(OpenGaussStatementParser.FOR, 0); }
		public NonReservedWordOrSconstContext nonReservedWordOrSconst() {
			return getRuleContext(NonReservedWordOrSconstContext.class,0);
		}
		public SecurityLabelStmtContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_securityLabelStmt; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitSecurityLabelStmt(this);
			else return visitor.visitChildren(this);
		}
	}

	public final SecurityLabelStmtContext securityLabelStmt() throws RecognitionException {
		SecurityLabelStmtContext _localctx = new SecurityLabelStmtContext(_ctx, getState());
		enterRule(_localctx, 1434, RULE_securityLabelStmt);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(9834);
			match(SECURITY);
			setState(9835);
			match(LABEL);
			{
			setState(9836);
			match(FOR);
			setState(9837);
			nonReservedWordOrSconst();
			}
			setState(9839);
			match(ON);
			setState(9840);
			securityLabelClausces();
			setState(9841);
			match(IS);
			setState(9842);
			securityLabel();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class SecurityLabelContext extends ParserRuleContext {
		public TerminalNode STRING_() { return getToken(OpenGaussStatementParser.STRING_, 0); }
		public TerminalNode NULL() { return getToken(OpenGaussStatementParser.NULL, 0); }
		public SecurityLabelContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_securityLabel; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitSecurityLabel(this);
			else return visitor.visitChildren(this);
		}
	}

	public final SecurityLabelContext securityLabel() throws RecognitionException {
		SecurityLabelContext _localctx = new SecurityLabelContext(_ctx, getState());
		enterRule(_localctx, 1436, RULE_securityLabel);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(9844);
			_la = _input.LA(1);
			if ( !(_la==NULL || _la==STRING_) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class SecurityLabelClauscesContext extends ParserRuleContext {
		public ObjectTypeAnyNameContext objectTypeAnyName() {
			return getRuleContext(ObjectTypeAnyNameContext.class,0);
		}
		public AnyNameContext anyName() {
			return getRuleContext(AnyNameContext.class,0);
		}
		public TerminalNode COLUMN() { return getToken(OpenGaussStatementParser.COLUMN, 0); }
		public TypeNameContext typeName() {
			return getRuleContext(TypeNameContext.class,0);
		}
		public TerminalNode TYPE() { return getToken(OpenGaussStatementParser.TYPE, 0); }
		public TerminalNode DOMAIN() { return getToken(OpenGaussStatementParser.DOMAIN, 0); }
		public AggregateWithArgtypesContext aggregateWithArgtypes() {
			return getRuleContext(AggregateWithArgtypesContext.class,0);
		}
		public TerminalNode AGGREGATE() { return getToken(OpenGaussStatementParser.AGGREGATE, 0); }
		public TerminalNode FUNCTION() { return getToken(OpenGaussStatementParser.FUNCTION, 0); }
		public TerminalNode LARGE() { return getToken(OpenGaussStatementParser.LARGE, 0); }
		public TerminalNode OBJECT() { return getToken(OpenGaussStatementParser.OBJECT, 0); }
		public NumericOnlyContext numericOnly() {
			return getRuleContext(NumericOnlyContext.class,0);
		}
		public FunctionWithArgtypesContext functionWithArgtypes() {
			return getRuleContext(FunctionWithArgtypesContext.class,0);
		}
		public TerminalNode PROCEDURE() { return getToken(OpenGaussStatementParser.PROCEDURE, 0); }
		public TerminalNode ROUTINE() { return getToken(OpenGaussStatementParser.ROUTINE, 0); }
		public SecurityLabelClauscesContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_securityLabelClausces; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitSecurityLabelClausces(this);
			else return visitor.visitChildren(this);
		}
	}

	public final SecurityLabelClauscesContext securityLabelClausces() throws RecognitionException {
		SecurityLabelClauscesContext _localctx = new SecurityLabelClauscesContext(_ctx, getState());
		enterRule(_localctx, 1438, RULE_securityLabelClausces);
		int _la;
		try {
			setState(9860);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case TABLE:
			case INDEX:
			case FOREIGN:
			case VIEW:
			case COLLATION:
			case TEXT:
			case SEQUENCE:
			case STATISTICS:
			case MATERIALIZED:
			case CONVERSION:
				enterOuterAlt(_localctx, 1);
				{
				setState(9846);
				objectTypeAnyName();
				setState(9847);
				anyName();
				}
				break;
			case COLUMN:
				enterOuterAlt(_localctx, 2);
				{
				setState(9849);
				match(COLUMN);
				setState(9850);
				anyName();
				}
				break;
			case TYPE:
			case DOMAIN:
				enterOuterAlt(_localctx, 3);
				{
				setState(9851);
				_la = _input.LA(1);
				if ( !(_la==TYPE || _la==DOMAIN) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(9852);
				typeName();
				}
				break;
			case FUNCTION:
			case AGGREGATE:
				enterOuterAlt(_localctx, 4);
				{
				setState(9853);
				_la = _input.LA(1);
				if ( !(_la==FUNCTION || _la==AGGREGATE) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(9854);
				aggregateWithArgtypes();
				}
				break;
			case LARGE:
				enterOuterAlt(_localctx, 5);
				{
				setState(9855);
				match(LARGE);
				setState(9856);
				match(OBJECT);
				setState(9857);
				numericOnly();
				}
				break;
			case PROCEDURE:
			case ROUTINE:
				enterOuterAlt(_localctx, 6);
				{
				setState(9858);
				_la = _input.LA(1);
				if ( !(_la==PROCEDURE || _la==ROUTINE) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(9859);
				functionWithArgtypes();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class UnlistenContext extends ParserRuleContext {
		public TerminalNode UNLISTEN() { return getToken(OpenGaussStatementParser.UNLISTEN, 0); }
		public ColIdContext colId() {
			return getRuleContext(ColIdContext.class,0);
		}
		public TerminalNode ASTERISK_() { return getToken(OpenGaussStatementParser.ASTERISK_, 0); }
		public UnlistenContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_unlisten; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitUnlisten(this);
			else return visitor.visitChildren(this);
		}
	}

	public final UnlistenContext unlisten() throws RecognitionException {
		UnlistenContext _localctx = new UnlistenContext(_ctx, getState());
		enterRule(_localctx, 1440, RULE_unlisten);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(9862);
			match(UNLISTEN);
			setState(9865);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case UNICODE_ESCAPE:
			case INSERT:
			case UPDATE:
			case DELETE:
			case ALTER:
			case DROP:
			case TRUNCATE:
			case SCHEMA:
			case REVOKE:
			case ADD:
			case SET:
			case INDEX:
			case KEY:
			case POSITION:
			case FUNCTION:
			case TRIGGER:
			case PROCEDURE:
			case VIEW:
			case IF:
			case BY:
			case BEGIN:
			case COMMIT:
			case ROLLBACK:
			case SAVEPOINT:
			case DOUBLE:
			case INTERVAL:
			case TIME:
			case TIMESTAMP:
			case YEAR:
			case MONTH:
			case DAY:
			case HOUR:
			case MINUTE:
			case SECOND:
			case CURRENT:
			case ENABLE:
			case DISABLE:
			case CALL:
			case PRESERVE:
			case DEFINER:
			case SQL:
			case CASCADED:
			case LOCAL:
			case CLOSE:
			case NEXT:
			case NAME:
			case NAMES:
			case TYPE:
			case TEXT:
			case REPEATABLE:
			case VARYING:
			case NATIONAL:
			case VALUE:
			case TIES:
			case CUBE:
			case SETS:
			case OTHERS:
			case AT:
			case MAXVALUE:
			case ADMIN:
			case ESCAPE:
			case EXCLUDE:
			case MOD:
			case PARTITION:
			case UNKNOWN:
			case ALWAYS:
			case CASCADE:
			case GENERATED:
			case ISOLATION:
			case LEVEL:
			case NO:
			case OPTION:
			case PRIVILEGES:
			case READ:
			case ROLE:
			case ROWS:
			case START:
			case TRANSACTION:
			case ACTION:
			case CACHE:
			case CHARACTERISTICS:
			case CLUSTER:
			case COMMENTS:
			case CONSTRAINTS:
			case CYCLE:
			case DATA:
			case DATABASE:
			case DEFAULTS:
			case DEFERRED:
			case DEPENDS:
			case DOMAIN:
			case EXCLUDING:
			case EXECUTE:
			case EXTENDED:
			case EXTENSION:
			case EXTERNAL:
			case FILTER:
			case FIRST:
			case FOLLOWING:
			case FORCE:
			case GLOBAL:
			case IDENTITY:
			case IMMEDIATE:
			case INCLUDING:
			case INCREMENT:
			case INDEXES:
			case INHERIT:
			case INHERITS:
			case INCLUDE:
			case LANGUAGE:
			case LARGE:
			case LAST:
			case LOGGED:
			case MAIN:
			case MATCH:
			case MINVALUE:
			case NOTHING:
			case NULLS:
			case OBJECT:
			case OIDS:
			case OVER:
			case OWNED:
			case OWNER:
			case PARTIAL:
			case PLAIN:
			case PRECEDING:
			case RANGE:
			case RENAME:
			case REPLICA:
			case RESET:
			case RESTART:
			case RESTRICT:
			case ROUTINE:
			case RULE:
			case SECURITY:
			case SEQUENCE:
			case SESSION:
			case SHOW:
			case SIMPLE:
			case STATISTICS:
			case STORAGE:
			case TABLESPACE:
			case TEMP:
			case TEMPORARY:
			case UNBOUNDED:
			case UNLOGGED:
			case VALID:
			case VALIDATE:
			case WITHIN:
			case WITHOUT:
			case ZONE:
			case OF:
			case UESCAPE:
			case GROUPS:
			case RECURSIVE:
			case INT2:
			case INT4:
			case FLOAT4:
			case BYTEA:
			case ENUM:
			case POINT:
			case LSEG:
			case BOX:
			case PATH:
			case POLYGON:
			case CIRCLE:
			case INET:
			case TSQUERY:
			case XML:
			case JSON:
			case INT4RANGE:
			case INT8RANGE:
			case NUMRANGE:
			case DATERANGE:
			case ORDINALITY:
			case NFC:
			case NFD:
			case NFKC:
			case NFKD:
			case REF:
			case PASSING:
			case VERSION:
			case YES:
			case STANDALONE:
			case MATERIALIZED:
			case OPERATOR:
			case SHARE:
			case ROLLUP:
			case DOCUMENT:
			case NORMALIZED:
			case NOWAIT:
			case LOCKED:
			case COLUMNS:
			case CONTENT:
			case STRIP:
			case WHITESPACE:
			case CONFLICT:
			case OVERRIDING:
			case SYSTEM:
			case ABORT:
			case ABSOLUTE:
			case ACCESS:
			case AFTER:
			case AGGREGATE:
			case ALSO:
			case ATTACH:
			case ATTRIBUTE:
			case BACKWARD:
			case BEFORE:
			case ASSERTION:
			case ASSIGNMENT:
			case CONTINUE:
			case CONVERSION:
			case COPY:
			case COST:
			case CSV:
			case CALLED:
			case CATALOG:
			case CHAIN:
			case CHECKPOINT:
			case CLASS:
			case CONFIGURATION:
			case COMMENT:
			case DETACH:
			case DICTIONARY:
			case EXPRESSION:
			case INSENSITIVE:
			case DISCARD:
			case OFF:
			case INSTEAD:
			case EXPLAIN:
			case INPUT:
			case INLINE:
			case PARALLEL:
			case LEAKPROOF:
			case COMMITTED:
			case ENCODING:
			case IMPLICIT:
			case DELIMITER:
			case CURSOR:
			case EACH:
			case EVENT:
			case DEALLOCATE:
			case CONNECTION:
			case DECLARE:
			case FAMILY:
			case FORWARD:
			case EXCLUSIVE:
			case FUNCTIONS:
			case LOCATION:
			case LABEL:
			case DELIMITERS:
			case HANDLER:
			case HEADER:
			case IMMUTABLE:
			case GRANTED:
			case HOLD:
			case MAPPING:
			case OLD:
			case METHOD:
			case LOAD:
			case LISTEN:
			case MODE:
			case MOVE:
			case PROCEDURAL:
			case PARSER:
			case PROCEDURES:
			case ENCRYPTED:
			case PUBLICATION:
			case PROGRAM:
			case REFERENCING:
			case PLANS:
			case REINDEX:
			case PRIOR:
			case PASSWORD:
			case RELATIVE:
			case QUOTE:
			case ROUTINES:
			case REPLACE:
			case SNAPSHOT:
			case REFRESH:
			case PREPARE:
			case OPTIONS:
			case IMPORT:
			case INVOKER:
			case NEW:
			case PREPARED:
			case SCROLL:
			case SEQUENCES:
			case SYSID:
			case REASSIGN:
			case SERVER:
			case SUBSCRIPTION:
			case SEARCH:
			case SCHEMAS:
			case RECHECK:
			case POLICY:
			case NOTIFY:
			case LOCK:
			case RELEASE:
			case SERIALIZABLE:
			case RETURNS:
			case STATEMENT:
			case STDIN:
			case STDOUT:
			case TABLES:
			case SUPPORT:
			case STABLE:
			case TEMPLATE:
			case UNENCRYPTED:
			case VIEWS:
			case UNCOMMITTED:
			case TRANSFORM:
			case UNLISTEN:
			case TRUSTED:
			case VALIDATOR:
			case UNTIL:
			case VACUUM:
			case VOLATILE:
			case STORED:
			case WRITE:
			case STRICT:
			case TYPES:
			case WRAPPER:
			case WORK:
			case INT16:
			case INT1:
			case ELEM_CONTAINED_BY_RANGE:
			case IDENTIFIER_:
				{
				setState(9863);
				colId();
				}
				break;
			case ASTERISK_:
				{
				setState(9864);
				match(ASTERISK_);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CreateSchemaContext extends ParserRuleContext {
		public TerminalNode CREATE() { return getToken(OpenGaussStatementParser.CREATE, 0); }
		public TerminalNode SCHEMA() { return getToken(OpenGaussStatementParser.SCHEMA, 0); }
		public CreateSchemaClausesContext createSchemaClauses() {
			return getRuleContext(CreateSchemaClausesContext.class,0);
		}
		public IfNotExistsContext ifNotExists() {
			return getRuleContext(IfNotExistsContext.class,0);
		}
		public CreateSchemaContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_createSchema; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitCreateSchema(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CreateSchemaContext createSchema() throws RecognitionException {
		CreateSchemaContext _localctx = new CreateSchemaContext(_ctx, getState());
		enterRule(_localctx, 1442, RULE_createSchema);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(9867);
			match(CREATE);
			setState(9868);
			match(SCHEMA);
			setState(9870);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,954,_ctx) ) {
			case 1:
				{
				setState(9869);
				ifNotExists();
				}
				break;
			}
			setState(9872);
			createSchemaClauses();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CreateSchemaClausesContext extends ParserRuleContext {
		public TerminalNode AUTHORIZATION() { return getToken(OpenGaussStatementParser.AUTHORIZATION, 0); }
		public RoleSpecContext roleSpec() {
			return getRuleContext(RoleSpecContext.class,0);
		}
		public SchemaEltListContext schemaEltList() {
			return getRuleContext(SchemaEltListContext.class,0);
		}
		public ColIdContext colId() {
			return getRuleContext(ColIdContext.class,0);
		}
		public CreateSchemaClausesContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_createSchemaClauses; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitCreateSchemaClauses(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CreateSchemaClausesContext createSchemaClauses() throws RecognitionException {
		CreateSchemaClausesContext _localctx = new CreateSchemaClausesContext(_ctx, getState());
		enterRule(_localctx, 1444, RULE_createSchemaClauses);
		int _la;
		try {
			setState(9884);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,956,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(9875);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==UNICODE_ESCAPE || ((((_la - 81)) & ~0x3f) == 0 && ((1L << (_la - 81)) & ((1L << (INSERT - 81)) | (1L << (UPDATE - 81)) | (1L << (DELETE - 81)) | (1L << (ALTER - 81)) | (1L << (DROP - 81)) | (1L << (TRUNCATE - 81)) | (1L << (SCHEMA - 81)) | (1L << (REVOKE - 81)) | (1L << (ADD - 81)) | (1L << (SET - 81)) | (1L << (INDEX - 81)) | (1L << (KEY - 81)) | (1L << (POSITION - 81)) | (1L << (FUNCTION - 81)) | (1L << (TRIGGER - 81)) | (1L << (PROCEDURE - 81)) | (1L << (VIEW - 81)) | (1L << (IF - 81)))) != 0) || ((((_la - 151)) & ~0x3f) == 0 && ((1L << (_la - 151)) & ((1L << (BY - 151)) | (1L << (BEGIN - 151)) | (1L << (COMMIT - 151)) | (1L << (ROLLBACK - 151)) | (1L << (SAVEPOINT - 151)) | (1L << (DOUBLE - 151)) | (1L << (INTERVAL - 151)) | (1L << (TIME - 151)) | (1L << (TIMESTAMP - 151)) | (1L << (YEAR - 151)) | (1L << (MONTH - 151)) | (1L << (DAY - 151)) | (1L << (HOUR - 151)) | (1L << (MINUTE - 151)) | (1L << (SECOND - 151)) | (1L << (CURRENT - 151)) | (1L << (ENABLE - 151)) | (1L << (DISABLE - 151)) | (1L << (CALL - 151)) | (1L << (PRESERVE - 151)) | (1L << (DEFINER - 151)) | (1L << (SQL - 151)) | (1L << (CASCADED - 151)) | (1L << (LOCAL - 151)) | (1L << (CLOSE - 151)) | (1L << (NEXT - 151)) | (1L << (NAME - 151)) | (1L << (NAMES - 151)) | (1L << (TYPE - 151)) | (1L << (TEXT - 151)) | (1L << (REPEATABLE - 151)) | (1L << (VARYING - 151)) | (1L << (NATIONAL - 151)))) != 0) || ((((_la - 216)) & ~0x3f) == 0 && ((1L << (_la - 216)) & ((1L << (VALUE - 216)) | (1L << (TIES - 216)) | (1L << (CUBE - 216)) | (1L << (SETS - 216)) | (1L << (OTHERS - 216)) | (1L << (AT - 216)) | (1L << (MAXVALUE - 216)) | (1L << (ADMIN - 216)) | (1L << (ESCAPE - 216)) | (1L << (EXCLUDE - 216)) | (1L << (MOD - 216)) | (1L << (PARTITION - 216)) | (1L << (UNKNOWN - 216)) | (1L << (ALWAYS - 216)) | (1L << (CASCADE - 216)) | (1L << (GENERATED - 216)) | (1L << (ISOLATION - 216)) | (1L << (LEVEL - 216)) | (1L << (NO - 216)) | (1L << (OPTION - 216)) | (1L << (PRIVILEGES - 216)) | (1L << (READ - 216)) | (1L << (ROLE - 216)) | (1L << (ROWS - 216)) | (1L << (START - 216)) | (1L << (TRANSACTION - 216)) | (1L << (ACTION - 216)) | (1L << (CACHE - 216)) | (1L << (CHARACTERISTICS - 216)) | (1L << (CLUSTER - 216)) | (1L << (COMMENTS - 216)) | (1L << (CONSTRAINTS - 216)) | (1L << (CYCLE - 216)) | (1L << (DATA - 216)) | (1L << (DATABASE - 216)) | (1L << (DEFAULTS - 216)) | (1L << (DEFERRED - 216)))) != 0) || ((((_la - 280)) & ~0x3f) == 0 && ((1L << (_la - 280)) & ((1L << (DEPENDS - 280)) | (1L << (DOMAIN - 280)) | (1L << (EXCLUDING - 280)) | (1L << (EXECUTE - 280)) | (1L << (EXTENDED - 280)) | (1L << (EXTENSION - 280)) | (1L << (EXTERNAL - 280)) | (1L << (FILTER - 280)) | (1L << (FIRST - 280)) | (1L << (FOLLOWING - 280)) | (1L << (FORCE - 280)) | (1L << (GLOBAL - 280)) | (1L << (IDENTITY - 280)) | (1L << (IMMEDIATE - 280)) | (1L << (INCLUDING - 280)) | (1L << (INCREMENT - 280)) | (1L << (INDEXES - 280)) | (1L << (INHERIT - 280)) | (1L << (INHERITS - 280)) | (1L << (INCLUDE - 280)) | (1L << (LANGUAGE - 280)) | (1L << (LARGE - 280)) | (1L << (LAST - 280)) | (1L << (LOGGED - 280)) | (1L << (MAIN - 280)) | (1L << (MATCH - 280)) | (1L << (MINVALUE - 280)) | (1L << (NOTHING - 280)) | (1L << (NULLS - 280)) | (1L << (OBJECT - 280)) | (1L << (OIDS - 280)) | (1L << (OVER - 280)) | (1L << (OWNED - 280)) | (1L << (OWNER - 280)) | (1L << (PARTIAL - 280)) | (1L << (PLAIN - 280)) | (1L << (PRECEDING - 280)) | (1L << (RANGE - 280)) | (1L << (RENAME - 280)) | (1L << (REPLICA - 280)) | (1L << (RESET - 280)) | (1L << (RESTART - 280)) | (1L << (RESTRICT - 280)) | (1L << (ROUTINE - 280)) | (1L << (RULE - 280)) | (1L << (SECURITY - 280)) | (1L << (SEQUENCE - 280)) | (1L << (SESSION - 280)) | (1L << (SHOW - 280)) | (1L << (SIMPLE - 280)) | (1L << (STATISTICS - 280)) | (1L << (STORAGE - 280)) | (1L << (TABLESPACE - 280)) | (1L << (TEMP - 280)) | (1L << (TEMPORARY - 280)) | (1L << (UNBOUNDED - 280)) | (1L << (UNLOGGED - 280)) | (1L << (VALID - 280)))) != 0) || ((((_la - 344)) & ~0x3f) == 0 && ((1L << (_la - 344)) & ((1L << (VALIDATE - 344)) | (1L << (WITHIN - 344)) | (1L << (WITHOUT - 344)) | (1L << (ZONE - 344)) | (1L << (OF - 344)) | (1L << (UESCAPE - 344)) | (1L << (GROUPS - 344)) | (1L << (RECURSIVE - 344)) | (1L << (INT2 - 344)) | (1L << (INT4 - 344)) | (1L << (FLOAT4 - 344)) | (1L << (BYTEA - 344)) | (1L << (ENUM - 344)) | (1L << (POINT - 344)) | (1L << (LSEG - 344)) | (1L << (BOX - 344)) | (1L << (PATH - 344)) | (1L << (POLYGON - 344)) | (1L << (CIRCLE - 344)) | (1L << (INET - 344)) | (1L << (TSQUERY - 344)) | (1L << (XML - 344)) | (1L << (JSON - 344)) | (1L << (INT4RANGE - 344)) | (1L << (INT8RANGE - 344)) | (1L << (NUMRANGE - 344)) | (1L << (DATERANGE - 344)) | (1L << (ORDINALITY - 344)) | (1L << (NFC - 344)) | (1L << (NFD - 344)) | (1L << (NFKC - 344)))) != 0) || ((((_la - 408)) & ~0x3f) == 0 && ((1L << (_la - 408)) & ((1L << (NFKD - 408)) | (1L << (REF - 408)) | (1L << (PASSING - 408)) | (1L << (VERSION - 408)) | (1L << (YES - 408)) | (1L << (STANDALONE - 408)) | (1L << (MATERIALIZED - 408)) | (1L << (OPERATOR - 408)) | (1L << (SHARE - 408)) | (1L << (ROLLUP - 408)) | (1L << (DOCUMENT - 408)) | (1L << (NORMALIZED - 408)) | (1L << (NOWAIT - 408)) | (1L << (LOCKED - 408)) | (1L << (COLUMNS - 408)) | (1L << (CONTENT - 408)) | (1L << (STRIP - 408)) | (1L << (WHITESPACE - 408)) | (1L << (CONFLICT - 408)) | (1L << (OVERRIDING - 408)) | (1L << (SYSTEM - 408)) | (1L << (ABORT - 408)) | (1L << (ABSOLUTE - 408)) | (1L << (ACCESS - 408)) | (1L << (AFTER - 408)) | (1L << (AGGREGATE - 408)) | (1L << (ALSO - 408)) | (1L << (ATTACH - 408)) | (1L << (ATTRIBUTE - 408)) | (1L << (BACKWARD - 408)) | (1L << (BEFORE - 408)) | (1L << (ASSERTION - 408)) | (1L << (ASSIGNMENT - 408)) | (1L << (CONTINUE - 408)) | (1L << (CONVERSION - 408)) | (1L << (COPY - 408)) | (1L << (COST - 408)) | (1L << (CSV - 408)) | (1L << (CALLED - 408)) | (1L << (CATALOG - 408)) | (1L << (CHAIN - 408)) | (1L << (CHECKPOINT - 408)) | (1L << (CLASS - 408)) | (1L << (CONFIGURATION - 408)) | (1L << (COMMENT - 408)) | (1L << (DETACH - 408)))) != 0) || ((((_la - 472)) & ~0x3f) == 0 && ((1L << (_la - 472)) & ((1L << (DICTIONARY - 472)) | (1L << (EXPRESSION - 472)) | (1L << (INSENSITIVE - 472)) | (1L << (DISCARD - 472)) | (1L << (OFF - 472)) | (1L << (INSTEAD - 472)) | (1L << (EXPLAIN - 472)) | (1L << (INPUT - 472)) | (1L << (INLINE - 472)) | (1L << (PARALLEL - 472)) | (1L << (LEAKPROOF - 472)) | (1L << (COMMITTED - 472)) | (1L << (ENCODING - 472)) | (1L << (IMPLICIT - 472)) | (1L << (DELIMITER - 472)) | (1L << (CURSOR - 472)) | (1L << (EACH - 472)) | (1L << (EVENT - 472)) | (1L << (DEALLOCATE - 472)) | (1L << (CONNECTION - 472)) | (1L << (DECLARE - 472)) | (1L << (FAMILY - 472)) | (1L << (FORWARD - 472)) | (1L << (EXCLUSIVE - 472)) | (1L << (FUNCTIONS - 472)) | (1L << (LOCATION - 472)) | (1L << (LABEL - 472)) | (1L << (DELIMITERS - 472)) | (1L << (HANDLER - 472)) | (1L << (HEADER - 472)) | (1L << (IMMUTABLE - 472)) | (1L << (GRANTED - 472)) | (1L << (HOLD - 472)) | (1L << (MAPPING - 472)) | (1L << (OLD - 472)) | (1L << (METHOD - 472)) | (1L << (LOAD - 472)) | (1L << (LISTEN - 472)) | (1L << (MODE - 472)) | (1L << (MOVE - 472)) | (1L << (PROCEDURAL - 472)) | (1L << (PARSER - 472)) | (1L << (PROCEDURES - 472)) | (1L << (ENCRYPTED - 472)) | (1L << (PUBLICATION - 472)) | (1L << (PROGRAM - 472)) | (1L << (REFERENCING - 472)) | (1L << (PLANS - 472)) | (1L << (REINDEX - 472)) | (1L << (PRIOR - 472)) | (1L << (PASSWORD - 472)) | (1L << (RELATIVE - 472)) | (1L << (QUOTE - 472)) | (1L << (ROUTINES - 472)) | (1L << (REPLACE - 472)) | (1L << (SNAPSHOT - 472)) | (1L << (REFRESH - 472)) | (1L << (PREPARE - 472)) | (1L << (OPTIONS - 472)) | (1L << (IMPORT - 472)) | (1L << (INVOKER - 472)) | (1L << (NEW - 472)) | (1L << (PREPARED - 472)))) != 0) || ((((_la - 536)) & ~0x3f) == 0 && ((1L << (_la - 536)) & ((1L << (SCROLL - 536)) | (1L << (SEQUENCES - 536)) | (1L << (SYSID - 536)) | (1L << (REASSIGN - 536)) | (1L << (SERVER - 536)) | (1L << (SUBSCRIPTION - 536)) | (1L << (SEARCH - 536)) | (1L << (SCHEMAS - 536)) | (1L << (RECHECK - 536)) | (1L << (POLICY - 536)) | (1L << (NOTIFY - 536)) | (1L << (LOCK - 536)) | (1L << (RELEASE - 536)) | (1L << (SERIALIZABLE - 536)) | (1L << (RETURNS - 536)) | (1L << (STATEMENT - 536)) | (1L << (STDIN - 536)) | (1L << (STDOUT - 536)) | (1L << (TABLES - 536)) | (1L << (SUPPORT - 536)) | (1L << (STABLE - 536)) | (1L << (TEMPLATE - 536)) | (1L << (UNENCRYPTED - 536)) | (1L << (VIEWS - 536)) | (1L << (UNCOMMITTED - 536)) | (1L << (TRANSFORM - 536)) | (1L << (UNLISTEN - 536)) | (1L << (TRUSTED - 536)) | (1L << (VALIDATOR - 536)) | (1L << (UNTIL - 536)) | (1L << (VACUUM - 536)) | (1L << (VOLATILE - 536)) | (1L << (STORED - 536)) | (1L << (WRITE - 536)) | (1L << (STRICT - 536)) | (1L << (TYPES - 536)) | (1L << (WRAPPER - 536)) | (1L << (WORK - 536)) | (1L << (INT16 - 536)) | (1L << (INT1 - 536)) | (1L << (ELEM_CONTAINED_BY_RANGE - 536)) | (1L << (IDENTIFIER_ - 536)))) != 0)) {
					{
					setState(9874);
					colId();
					}
				}

				setState(9877);
				match(AUTHORIZATION);
				setState(9878);
				roleSpec();
				setState(9879);
				schemaEltList();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(9881);
				colId();
				setState(9882);
				schemaEltList();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class SchemaEltListContext extends ParserRuleContext {
		public List schemaStmt() {
			return getRuleContexts(SchemaStmtContext.class);
		}
		public SchemaStmtContext schemaStmt(int i) {
			return getRuleContext(SchemaStmtContext.class,i);
		}
		public SchemaEltListContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_schemaEltList; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitSchemaEltList(this);
			else return visitor.visitChildren(this);
		}
	}

	public final SchemaEltListContext schemaEltList() throws RecognitionException {
		SchemaEltListContext _localctx = new SchemaEltListContext(_ctx, getState());
		enterRule(_localctx, 1446, RULE_schemaEltList);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(9889);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==CREATE || _la==GRANT) {
				{
				{
				setState(9886);
				schemaStmt();
				}
				}
				setState(9891);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class SchemaStmtContext extends ParserRuleContext {
		public CreateTableContext createTable() {
			return getRuleContext(CreateTableContext.class,0);
		}
		public CreateIndexContext createIndex() {
			return getRuleContext(CreateIndexContext.class,0);
		}
		public CreateSequenceContext createSequence() {
			return getRuleContext(CreateSequenceContext.class,0);
		}
		public CreateTriggerContext createTrigger() {
			return getRuleContext(CreateTriggerContext.class,0);
		}
		public GrantContext grant() {
			return getRuleContext(GrantContext.class,0);
		}
		public CreateViewContext createView() {
			return getRuleContext(CreateViewContext.class,0);
		}
		public SchemaStmtContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_schemaStmt; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitSchemaStmt(this);
			else return visitor.visitChildren(this);
		}
	}

	public final SchemaStmtContext schemaStmt() throws RecognitionException {
		SchemaStmtContext _localctx = new SchemaStmtContext(_ctx, getState());
		enterRule(_localctx, 1448, RULE_schemaStmt);
		try {
			setState(9898);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,958,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(9892);
				createTable();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(9893);
				createIndex();
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(9894);
				createSequence();
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(9895);
				createTrigger();
				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(9896);
				grant();
				}
				break;
			case 6:
				enterOuterAlt(_localctx, 6);
				{
				setState(9897);
				createView();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class PrivilegeClauseContext extends ParserRuleContext {
		public PrivilegeTypesContext privilegeTypes() {
			return getRuleContext(PrivilegeTypesContext.class,0);
		}
		public TerminalNode ON() { return getToken(OpenGaussStatementParser.ON, 0); }
		public OnObjectClauseContext onObjectClause() {
			return getRuleContext(OnObjectClauseContext.class,0);
		}
		public GranteeListContext granteeList() {
			return getRuleContext(GranteeListContext.class,0);
		}
		public TerminalNode FROM() { return getToken(OpenGaussStatementParser.FROM, 0); }
		public TerminalNode TO() { return getToken(OpenGaussStatementParser.TO, 0); }
		public TerminalNode WITH() { return getToken(OpenGaussStatementParser.WITH, 0); }
		public TerminalNode GRANT() { return getToken(OpenGaussStatementParser.GRANT, 0); }
		public TerminalNode OPTION() { return getToken(OpenGaussStatementParser.OPTION, 0); }
		public PrivilegeClauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_privilegeClause; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitPrivilegeClause(this);
			else return visitor.visitChildren(this);
		}
	}

	public final PrivilegeClauseContext privilegeClause() throws RecognitionException {
		PrivilegeClauseContext _localctx = new PrivilegeClauseContext(_ctx, getState());
		enterRule(_localctx, 1450, RULE_privilegeClause);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(9900);
			privilegeTypes();
			setState(9901);
			match(ON);
			setState(9902);
			onObjectClause();
			setState(9903);
			_la = _input.LA(1);
			if ( !(_la==FROM || _la==TO) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			setState(9904);
			granteeList();
			setState(9908);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==WITH) {
				{
				setState(9905);
				match(WITH);
				setState(9906);
				match(GRANT);
				setState(9907);
				match(OPTION);
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class RoleClauseContext extends ParserRuleContext {
		public PrivilegeListContext privilegeList() {
			return getRuleContext(PrivilegeListContext.class,0);
		}
		public RoleListContext roleList() {
			return getRuleContext(RoleListContext.class,0);
		}
		public TerminalNode FROM() { return getToken(OpenGaussStatementParser.FROM, 0); }
		public TerminalNode TO() { return getToken(OpenGaussStatementParser.TO, 0); }
		public TerminalNode WITH() { return getToken(OpenGaussStatementParser.WITH, 0); }
		public TerminalNode ADMIN() { return getToken(OpenGaussStatementParser.ADMIN, 0); }
		public TerminalNode OPTION() { return getToken(OpenGaussStatementParser.OPTION, 0); }
		public TerminalNode GRANTED() { return getToken(OpenGaussStatementParser.GRANTED, 0); }
		public TerminalNode BY() { return getToken(OpenGaussStatementParser.BY, 0); }
		public RoleSpecContext roleSpec() {
			return getRuleContext(RoleSpecContext.class,0);
		}
		public RoleClauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_roleClause; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitRoleClause(this);
			else return visitor.visitChildren(this);
		}
	}

	public final RoleClauseContext roleClause() throws RecognitionException {
		RoleClauseContext _localctx = new RoleClauseContext(_ctx, getState());
		enterRule(_localctx, 1452, RULE_roleClause);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(9910);
			privilegeList();
			setState(9911);
			_la = _input.LA(1);
			if ( !(_la==FROM || _la==TO) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			setState(9912);
			roleList();
			setState(9916);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==WITH) {
				{
				setState(9913);
				match(WITH);
				setState(9914);
				match(ADMIN);
				setState(9915);
				match(OPTION);
				}
			}

			setState(9921);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==GRANTED) {
				{
				setState(9918);
				match(GRANTED);
				setState(9919);
				match(BY);
				setState(9920);
				roleSpec();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class PrivilegeTypesContext extends ParserRuleContext {
		public List privilegeType() {
			return getRuleContexts(PrivilegeTypeContext.class);
		}
		public PrivilegeTypeContext privilegeType(int i) {
			return getRuleContext(PrivilegeTypeContext.class,i);
		}
		public List columnNames() {
			return getRuleContexts(ColumnNamesContext.class);
		}
		public ColumnNamesContext columnNames(int i) {
			return getRuleContext(ColumnNamesContext.class,i);
		}
		public List COMMA_() { return getTokens(OpenGaussStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(OpenGaussStatementParser.COMMA_, i);
		}
		public PrivilegeTypesContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_privilegeTypes; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitPrivilegeTypes(this);
			else return visitor.visitChildren(this);
		}
	}

	public final PrivilegeTypesContext privilegeTypes() throws RecognitionException {
		PrivilegeTypesContext _localctx = new PrivilegeTypesContext(_ctx, getState());
		enterRule(_localctx, 1454, RULE_privilegeTypes);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(9923);
			privilegeType();
			setState(9925);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==LP_) {
				{
				setState(9924);
				columnNames();
				}
			}

			setState(9934);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA_) {
				{
				{
				setState(9927);
				match(COMMA_);
				setState(9928);
				privilegeType();
				setState(9930);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==LP_) {
					{
					setState(9929);
					columnNames();
					}
				}

				}
				}
				setState(9936);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class OnObjectClauseContext extends ParserRuleContext {
		public TerminalNode DATABASE() { return getToken(OpenGaussStatementParser.DATABASE, 0); }
		public NameListContext nameList() {
			return getRuleContext(NameListContext.class,0);
		}
		public TerminalNode SCHEMA() { return getToken(OpenGaussStatementParser.SCHEMA, 0); }
		public TerminalNode DOMAIN() { return getToken(OpenGaussStatementParser.DOMAIN, 0); }
		public AnyNameListContext anyNameList() {
			return getRuleContext(AnyNameListContext.class,0);
		}
		public TerminalNode FUNCTION() { return getToken(OpenGaussStatementParser.FUNCTION, 0); }
		public FunctionWithArgtypesListContext functionWithArgtypesList() {
			return getRuleContext(FunctionWithArgtypesListContext.class,0);
		}
		public TerminalNode PROCEDURE() { return getToken(OpenGaussStatementParser.PROCEDURE, 0); }
		public TerminalNode ROUTINE() { return getToken(OpenGaussStatementParser.ROUTINE, 0); }
		public TerminalNode LANGUAGE() { return getToken(OpenGaussStatementParser.LANGUAGE, 0); }
		public TerminalNode LARGE() { return getToken(OpenGaussStatementParser.LARGE, 0); }
		public TerminalNode OBJECT() { return getToken(OpenGaussStatementParser.OBJECT, 0); }
		public NumericOnlyListContext numericOnlyList() {
			return getRuleContext(NumericOnlyListContext.class,0);
		}
		public TerminalNode TABLESPACE() { return getToken(OpenGaussStatementParser.TABLESPACE, 0); }
		public TerminalNode TYPE() { return getToken(OpenGaussStatementParser.TYPE, 0); }
		public TerminalNode SEQUENCE() { return getToken(OpenGaussStatementParser.SEQUENCE, 0); }
		public QualifiedNameListContext qualifiedNameList() {
			return getRuleContext(QualifiedNameListContext.class,0);
		}
		public PrivilegeLevelContext privilegeLevel() {
			return getRuleContext(PrivilegeLevelContext.class,0);
		}
		public TerminalNode TABLE() { return getToken(OpenGaussStatementParser.TABLE, 0); }
		public TerminalNode FOREIGN() { return getToken(OpenGaussStatementParser.FOREIGN, 0); }
		public TerminalNode DATA() { return getToken(OpenGaussStatementParser.DATA, 0); }
		public TerminalNode WRAPPER() { return getToken(OpenGaussStatementParser.WRAPPER, 0); }
		public TerminalNode SERVER() { return getToken(OpenGaussStatementParser.SERVER, 0); }
		public TerminalNode ALL() { return getToken(OpenGaussStatementParser.ALL, 0); }
		public TerminalNode TABLES() { return getToken(OpenGaussStatementParser.TABLES, 0); }
		public TerminalNode IN() { return getToken(OpenGaussStatementParser.IN, 0); }
		public TerminalNode SEQUENCES() { return getToken(OpenGaussStatementParser.SEQUENCES, 0); }
		public TerminalNode FUNCTIONS() { return getToken(OpenGaussStatementParser.FUNCTIONS, 0); }
		public TerminalNode PROCEDURES() { return getToken(OpenGaussStatementParser.PROCEDURES, 0); }
		public TerminalNode ROUTINES() { return getToken(OpenGaussStatementParser.ROUTINES, 0); }
		public TerminalNode CLIENT_MASTER_KEY() { return getToken(OpenGaussStatementParser.CLIENT_MASTER_KEY, 0); }
		public TerminalNode COLUMN_ENCRYPTION_KEY() { return getToken(OpenGaussStatementParser.COLUMN_ENCRYPTION_KEY, 0); }
		public OnObjectClauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_onObjectClause; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitOnObjectClause(this);
			else return visitor.visitChildren(this);
		}
	}

	public final OnObjectClauseContext onObjectClause() throws RecognitionException {
		OnObjectClauseContext _localctx = new OnObjectClauseContext(_ctx, getState());
		enterRule(_localctx, 1456, RULE_onObjectClause);
		int _la;
		try {
			setState(10000);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,966,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(9937);
				match(DATABASE);
				setState(9938);
				nameList(0);
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(9939);
				match(SCHEMA);
				setState(9940);
				nameList(0);
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(9941);
				match(DOMAIN);
				setState(9942);
				anyNameList();
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(9943);
				match(FUNCTION);
				setState(9944);
				functionWithArgtypesList();
				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(9945);
				match(PROCEDURE);
				setState(9946);
				functionWithArgtypesList();
				}
				break;
			case 6:
				enterOuterAlt(_localctx, 6);
				{
				setState(9947);
				match(ROUTINE);
				setState(9948);
				functionWithArgtypesList();
				}
				break;
			case 7:
				enterOuterAlt(_localctx, 7);
				{
				setState(9949);
				match(LANGUAGE);
				setState(9950);
				nameList(0);
				}
				break;
			case 8:
				enterOuterAlt(_localctx, 8);
				{
				setState(9951);
				match(LARGE);
				setState(9952);
				match(OBJECT);
				setState(9953);
				numericOnlyList();
				}
				break;
			case 9:
				enterOuterAlt(_localctx, 9);
				{
				setState(9954);
				match(TABLESPACE);
				setState(9955);
				nameList(0);
				}
				break;
			case 10:
				enterOuterAlt(_localctx, 10);
				{
				setState(9956);
				match(TYPE);
				setState(9957);
				anyNameList();
				}
				break;
			case 11:
				enterOuterAlt(_localctx, 11);
				{
				setState(9958);
				match(SEQUENCE);
				setState(9959);
				qualifiedNameList(0);
				}
				break;
			case 12:
				enterOuterAlt(_localctx, 12);
				{
				setState(9961);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==TABLE) {
					{
					setState(9960);
					match(TABLE);
					}
				}

				setState(9963);
				privilegeLevel();
				}
				break;
			case 13:
				enterOuterAlt(_localctx, 13);
				{
				setState(9964);
				match(FOREIGN);
				setState(9965);
				match(DATA);
				setState(9966);
				match(WRAPPER);
				setState(9967);
				nameList(0);
				}
				break;
			case 14:
				enterOuterAlt(_localctx, 14);
				{
				setState(9968);
				match(FOREIGN);
				setState(9969);
				match(SERVER);
				setState(9970);
				nameList(0);
				}
				break;
			case 15:
				enterOuterAlt(_localctx, 15);
				{
				setState(9971);
				match(ALL);
				setState(9972);
				match(TABLES);
				setState(9973);
				match(IN);
				setState(9974);
				match(SCHEMA);
				setState(9975);
				nameList(0);
				}
				break;
			case 16:
				enterOuterAlt(_localctx, 16);
				{
				setState(9976);
				match(ALL);
				setState(9977);
				match(SEQUENCES);
				setState(9978);
				match(IN);
				setState(9979);
				match(SCHEMA);
				setState(9980);
				nameList(0);
				}
				break;
			case 17:
				enterOuterAlt(_localctx, 17);
				{
				setState(9981);
				match(ALL);
				setState(9982);
				match(FUNCTIONS);
				setState(9983);
				match(IN);
				setState(9984);
				match(SCHEMA);
				setState(9985);
				nameList(0);
				}
				break;
			case 18:
				enterOuterAlt(_localctx, 18);
				{
				setState(9986);
				match(ALL);
				setState(9987);
				match(PROCEDURES);
				setState(9988);
				match(IN);
				setState(9989);
				match(SCHEMA);
				setState(9990);
				nameList(0);
				}
				break;
			case 19:
				enterOuterAlt(_localctx, 19);
				{
				setState(9991);
				match(ALL);
				setState(9992);
				match(ROUTINES);
				setState(9993);
				match(IN);
				setState(9994);
				match(SCHEMA);
				setState(9995);
				nameList(0);
				}
				break;
			case 20:
				enterOuterAlt(_localctx, 20);
				{
				setState(9996);
				match(CLIENT_MASTER_KEY);
				setState(9997);
				nameList(0);
				}
				break;
			case 21:
				enterOuterAlt(_localctx, 21);
				{
				setState(9998);
				match(COLUMN_ENCRYPTION_KEY);
				setState(9999);
				nameList(0);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class NumericOnlyListContext extends ParserRuleContext {
		public List numericOnly() {
			return getRuleContexts(NumericOnlyContext.class);
		}
		public NumericOnlyContext numericOnly(int i) {
			return getRuleContext(NumericOnlyContext.class,i);
		}
		public List COMMA_() { return getTokens(OpenGaussStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(OpenGaussStatementParser.COMMA_, i);
		}
		public NumericOnlyListContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_numericOnlyList; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitNumericOnlyList(this);
			else return visitor.visitChildren(this);
		}
	}

	public final NumericOnlyListContext numericOnlyList() throws RecognitionException {
		NumericOnlyListContext _localctx = new NumericOnlyListContext(_ctx, getState());
		enterRule(_localctx, 1458, RULE_numericOnlyList);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(10002);
			numericOnly();
			setState(10007);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA_) {
				{
				{
				setState(10003);
				match(COMMA_);
				setState(10004);
				numericOnly();
				}
				}
				setState(10009);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class PrivilegeLevelContext extends ParserRuleContext {
		public TerminalNode ASTERISK_() { return getToken(OpenGaussStatementParser.ASTERISK_, 0); }
		public TerminalNode DOT_ASTERISK_() { return getToken(OpenGaussStatementParser.DOT_ASTERISK_, 0); }
		public IdentifierContext identifier() {
			return getRuleContext(IdentifierContext.class,0);
		}
		public TableNamesContext tableNames() {
			return getRuleContext(TableNamesContext.class,0);
		}
		public SchemaNameContext schemaName() {
			return getRuleContext(SchemaNameContext.class,0);
		}
		public TerminalNode DOT_() { return getToken(OpenGaussStatementParser.DOT_, 0); }
		public RoutineNameContext routineName() {
			return getRuleContext(RoutineNameContext.class,0);
		}
		public PrivilegeLevelContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_privilegeLevel; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitPrivilegeLevel(this);
			else return visitor.visitChildren(this);
		}
	}

	public final PrivilegeLevelContext privilegeLevel() throws RecognitionException {
		PrivilegeLevelContext _localctx = new PrivilegeLevelContext(_ctx, getState());
		enterRule(_localctx, 1460, RULE_privilegeLevel);
		try {
			setState(10021);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,968,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(10010);
				match(ASTERISK_);
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(10011);
				match(ASTERISK_);
				setState(10012);
				match(DOT_ASTERISK_);
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(10013);
				identifier();
				setState(10014);
				match(DOT_ASTERISK_);
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(10016);
				tableNames();
				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(10017);
				schemaName();
				setState(10018);
				match(DOT_);
				setState(10019);
				routineName();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class RoutineNameContext extends ParserRuleContext {
		public IdentifierContext identifier() {
			return getRuleContext(IdentifierContext.class,0);
		}
		public RoutineNameContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_routineName; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitRoutineName(this);
			else return visitor.visitChildren(this);
		}
	}

	public final RoutineNameContext routineName() throws RecognitionException {
		RoutineNameContext _localctx = new RoutineNameContext(_ctx, getState());
		enterRule(_localctx, 1462, RULE_routineName);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(10023);
			identifier();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class PrivilegeTypeContext extends ParserRuleContext {
		public TerminalNode SELECT() { return getToken(OpenGaussStatementParser.SELECT, 0); }
		public TerminalNode INSERT() { return getToken(OpenGaussStatementParser.INSERT, 0); }
		public TerminalNode UPDATE() { return getToken(OpenGaussStatementParser.UPDATE, 0); }
		public TerminalNode DELETE() { return getToken(OpenGaussStatementParser.DELETE, 0); }
		public TerminalNode TRUNCATE() { return getToken(OpenGaussStatementParser.TRUNCATE, 0); }
		public TerminalNode REFERENCES() { return getToken(OpenGaussStatementParser.REFERENCES, 0); }
		public TerminalNode TRIGGER() { return getToken(OpenGaussStatementParser.TRIGGER, 0); }
		public TerminalNode CREATE() { return getToken(OpenGaussStatementParser.CREATE, 0); }
		public TerminalNode CONNECT() { return getToken(OpenGaussStatementParser.CONNECT, 0); }
		public TerminalNode TEMPORARY() { return getToken(OpenGaussStatementParser.TEMPORARY, 0); }
		public TerminalNode TEMP() { return getToken(OpenGaussStatementParser.TEMP, 0); }
		public TerminalNode EXECUTE() { return getToken(OpenGaussStatementParser.EXECUTE, 0); }
		public TerminalNode USAGE() { return getToken(OpenGaussStatementParser.USAGE, 0); }
		public TerminalNode ALL() { return getToken(OpenGaussStatementParser.ALL, 0); }
		public TerminalNode PRIVILEGES() { return getToken(OpenGaussStatementParser.PRIVILEGES, 0); }
		public PrivilegeTypeContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_privilegeType; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitPrivilegeType(this);
			else return visitor.visitChildren(this);
		}
	}

	public final PrivilegeTypeContext privilegeType() throws RecognitionException {
		PrivilegeTypeContext _localctx = new PrivilegeTypeContext(_ctx, getState());
		enterRule(_localctx, 1464, RULE_privilegeType);
		int _la;
		try {
			setState(10042);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case SELECT:
				enterOuterAlt(_localctx, 1);
				{
				setState(10025);
				match(SELECT);
				}
				break;
			case INSERT:
				enterOuterAlt(_localctx, 2);
				{
				setState(10026);
				match(INSERT);
				}
				break;
			case UPDATE:
				enterOuterAlt(_localctx, 3);
				{
				setState(10027);
				match(UPDATE);
				}
				break;
			case DELETE:
				enterOuterAlt(_localctx, 4);
				{
				setState(10028);
				match(DELETE);
				}
				break;
			case TRUNCATE:
				enterOuterAlt(_localctx, 5);
				{
				setState(10029);
				match(TRUNCATE);
				}
				break;
			case REFERENCES:
				enterOuterAlt(_localctx, 6);
				{
				setState(10030);
				match(REFERENCES);
				}
				break;
			case TRIGGER:
				enterOuterAlt(_localctx, 7);
				{
				setState(10031);
				match(TRIGGER);
				}
				break;
			case CREATE:
				enterOuterAlt(_localctx, 8);
				{
				setState(10032);
				match(CREATE);
				}
				break;
			case CONNECT:
				enterOuterAlt(_localctx, 9);
				{
				setState(10033);
				match(CONNECT);
				}
				break;
			case TEMPORARY:
				enterOuterAlt(_localctx, 10);
				{
				setState(10034);
				match(TEMPORARY);
				}
				break;
			case TEMP:
				enterOuterAlt(_localctx, 11);
				{
				setState(10035);
				match(TEMP);
				}
				break;
			case EXECUTE:
				enterOuterAlt(_localctx, 12);
				{
				setState(10036);
				match(EXECUTE);
				}
				break;
			case USAGE:
				enterOuterAlt(_localctx, 13);
				{
				setState(10037);
				match(USAGE);
				}
				break;
			case ALL:
				enterOuterAlt(_localctx, 14);
				{
				setState(10038);
				match(ALL);
				setState(10040);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==PRIVILEGES) {
					{
					setState(10039);
					match(PRIVILEGES);
					}
				}

				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CreateDirectoryContext extends ParserRuleContext {
		public TerminalNode CREATE() { return getToken(OpenGaussStatementParser.CREATE, 0); }
		public TerminalNode DIRECTORY() { return getToken(OpenGaussStatementParser.DIRECTORY, 0); }
		public DirectoryNameContext directoryName() {
			return getRuleContext(DirectoryNameContext.class,0);
		}
		public TerminalNode AS() { return getToken(OpenGaussStatementParser.AS, 0); }
		public PathStringContext pathString() {
			return getRuleContext(PathStringContext.class,0);
		}
		public TerminalNode OR() { return getToken(OpenGaussStatementParser.OR, 0); }
		public TerminalNode REPLACE() { return getToken(OpenGaussStatementParser.REPLACE, 0); }
		public CreateDirectoryContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_createDirectory; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitCreateDirectory(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CreateDirectoryContext createDirectory() throws RecognitionException {
		CreateDirectoryContext _localctx = new CreateDirectoryContext(_ctx, getState());
		enterRule(_localctx, 1466, RULE_createDirectory);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(10044);
			match(CREATE);
			setState(10047);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==OR) {
				{
				setState(10045);
				match(OR);
				setState(10046);
				match(REPLACE);
				}
			}

			setState(10049);
			match(DIRECTORY);
			setState(10050);
			directoryName();
			setState(10051);
			match(AS);
			setState(10052);
			pathString();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterSchemaContext extends ParserRuleContext {
		public TerminalNode ALTER() { return getToken(OpenGaussStatementParser.ALTER, 0); }
		public TerminalNode SCHEMA() { return getToken(OpenGaussStatementParser.SCHEMA, 0); }
		public List name() {
			return getRuleContexts(NameContext.class);
		}
		public NameContext name(int i) {
			return getRuleContext(NameContext.class,i);
		}
		public TerminalNode RENAME() { return getToken(OpenGaussStatementParser.RENAME, 0); }
		public TerminalNode TO() { return getToken(OpenGaussStatementParser.TO, 0); }
		public TerminalNode OWNER() { return getToken(OpenGaussStatementParser.OWNER, 0); }
		public RoleSpecContext roleSpec() {
			return getRuleContext(RoleSpecContext.class,0);
		}
		public AlterSchemaContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterSchema; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitAlterSchema(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AlterSchemaContext alterSchema() throws RecognitionException {
		AlterSchemaContext _localctx = new AlterSchemaContext(_ctx, getState());
		enterRule(_localctx, 1468, RULE_alterSchema);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(10054);
			match(ALTER);
			setState(10055);
			match(SCHEMA);
			setState(10056);
			name();
			setState(10063);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case RENAME:
				{
				setState(10057);
				match(RENAME);
				setState(10058);
				match(TO);
				setState(10059);
				name();
				}
				break;
			case OWNER:
				{
				setState(10060);
				match(OWNER);
				setState(10061);
				match(TO);
				setState(10062);
				roleSpec();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DropSchemaContext extends ParserRuleContext {
		public TerminalNode DROP() { return getToken(OpenGaussStatementParser.DROP, 0); }
		public TerminalNode SCHEMA() { return getToken(OpenGaussStatementParser.SCHEMA, 0); }
		public NameListContext nameList() {
			return getRuleContext(NameListContext.class,0);
		}
		public IfExistsContext ifExists() {
			return getRuleContext(IfExistsContext.class,0);
		}
		public DropBehaviorContext dropBehavior() {
			return getRuleContext(DropBehaviorContext.class,0);
		}
		public DropSchemaContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_dropSchema; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitDropSchema(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DropSchemaContext dropSchema() throws RecognitionException {
		DropSchemaContext _localctx = new DropSchemaContext(_ctx, getState());
		enterRule(_localctx, 1470, RULE_dropSchema);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(10065);
			match(DROP);
			setState(10066);
			match(SCHEMA);
			setState(10068);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,973,_ctx) ) {
			case 1:
				{
				setState(10067);
				ifExists();
				}
				break;
			}
			setState(10070);
			nameList(0);
			setState(10072);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==CASCADE || _la==RESTRICT) {
				{
				setState(10071);
				dropBehavior();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class FetchContext extends ParserRuleContext {
		public TerminalNode FETCH() { return getToken(OpenGaussStatementParser.FETCH, 0); }
		public CursorNameContext cursorName() {
			return getRuleContext(CursorNameContext.class,0);
		}
		public DirectionContext direction() {
			return getRuleContext(DirectionContext.class,0);
		}
		public TerminalNode FROM() { return getToken(OpenGaussStatementParser.FROM, 0); }
		public TerminalNode IN() { return getToken(OpenGaussStatementParser.IN, 0); }
		public FetchContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_fetch; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitFetch(this);
			else return visitor.visitChildren(this);
		}
	}

	public final FetchContext fetch() throws RecognitionException {
		FetchContext _localctx = new FetchContext(_ctx, getState());
		enterRule(_localctx, 1472, RULE_fetch);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(10074);
			match(FETCH);
			setState(10076);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,975,_ctx) ) {
			case 1:
				{
				setState(10075);
				direction();
				}
				break;
			}
			setState(10079);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==FROM || _la==IN) {
				{
				setState(10078);
				_la = _input.LA(1);
				if ( !(_la==FROM || _la==IN) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
			}

			setState(10081);
			cursorName();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterPackageContext extends ParserRuleContext {
		public TerminalNode ALTER() { return getToken(OpenGaussStatementParser.ALTER, 0); }
		public TerminalNode PACKAGE() { return getToken(OpenGaussStatementParser.PACKAGE, 0); }
		public PackageNameContext packageName() {
			return getRuleContext(PackageNameContext.class,0);
		}
		public TerminalNode OWNER() { return getToken(OpenGaussStatementParser.OWNER, 0); }
		public TerminalNode TO() { return getToken(OpenGaussStatementParser.TO, 0); }
		public RoleSpecContext roleSpec() {
			return getRuleContext(RoleSpecContext.class,0);
		}
		public AlterPackageContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterPackage; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitAlterPackage(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AlterPackageContext alterPackage() throws RecognitionException {
		AlterPackageContext _localctx = new AlterPackageContext(_ctx, getState());
		enterRule(_localctx, 1474, RULE_alterPackage);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(10083);
			match(ALTER);
			setState(10084);
			match(PACKAGE);
			setState(10085);
			packageName();
			setState(10086);
			match(OWNER);
			setState(10087);
			match(TO);
			setState(10088);
			roleSpec();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DirectionContext extends ParserRuleContext {
		public DirectionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_direction; }
	 
		public DirectionContext() { }
		public void copyFrom(DirectionContext ctx) {
			super.copyFrom(ctx);
		}
	}
	public static class NextContext extends DirectionContext {
		public TerminalNode NEXT() { return getToken(OpenGaussStatementParser.NEXT, 0); }
		public NextContext(DirectionContext ctx) { copyFrom(ctx); }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitNext(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class AllContext extends DirectionContext {
		public TerminalNode ALL() { return getToken(OpenGaussStatementParser.ALL, 0); }
		public AllContext(DirectionContext ctx) { copyFrom(ctx); }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitAll(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class BackwardCountContext extends DirectionContext {
		public TerminalNode BACKWARD() { return getToken(OpenGaussStatementParser.BACKWARD, 0); }
		public SignedIconstContext signedIconst() {
			return getRuleContext(SignedIconstContext.class,0);
		}
		public BackwardCountContext(DirectionContext ctx) { copyFrom(ctx); }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitBackwardCount(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class LastContext extends DirectionContext {
		public TerminalNode LAST() { return getToken(OpenGaussStatementParser.LAST, 0); }
		public LastContext(DirectionContext ctx) { copyFrom(ctx); }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitLast(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class ForwardContext extends DirectionContext {
		public TerminalNode FORWARD() { return getToken(OpenGaussStatementParser.FORWARD, 0); }
		public ForwardContext(DirectionContext ctx) { copyFrom(ctx); }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitForward(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class CountContext extends DirectionContext {
		public SignedIconstContext signedIconst() {
			return getRuleContext(SignedIconstContext.class,0);
		}
		public CountContext(DirectionContext ctx) { copyFrom(ctx); }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitCount(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class ForwardAllContext extends DirectionContext {
		public TerminalNode FORWARD() { return getToken(OpenGaussStatementParser.FORWARD, 0); }
		public TerminalNode ALL() { return getToken(OpenGaussStatementParser.ALL, 0); }
		public ForwardAllContext(DirectionContext ctx) { copyFrom(ctx); }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitForwardAll(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class BackwardAllContext extends DirectionContext {
		public TerminalNode BACKWARD() { return getToken(OpenGaussStatementParser.BACKWARD, 0); }
		public TerminalNode ALL() { return getToken(OpenGaussStatementParser.ALL, 0); }
		public BackwardAllContext(DirectionContext ctx) { copyFrom(ctx); }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitBackwardAll(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class AbsoluteCountContext extends DirectionContext {
		public TerminalNode ABSOLUTE() { return getToken(OpenGaussStatementParser.ABSOLUTE, 0); }
		public SignedIconstContext signedIconst() {
			return getRuleContext(SignedIconstContext.class,0);
		}
		public AbsoluteCountContext(DirectionContext ctx) { copyFrom(ctx); }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitAbsoluteCount(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class PriorContext extends DirectionContext {
		public TerminalNode PRIOR() { return getToken(OpenGaussStatementParser.PRIOR, 0); }
		public PriorContext(DirectionContext ctx) { copyFrom(ctx); }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitPrior(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class BackwardContext extends DirectionContext {
		public TerminalNode BACKWARD() { return getToken(OpenGaussStatementParser.BACKWARD, 0); }
		public BackwardContext(DirectionContext ctx) { copyFrom(ctx); }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitBackward(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class RelativeCountContext extends DirectionContext {
		public TerminalNode RELATIVE() { return getToken(OpenGaussStatementParser.RELATIVE, 0); }
		public SignedIconstContext signedIconst() {
			return getRuleContext(SignedIconstContext.class,0);
		}
		public RelativeCountContext(DirectionContext ctx) { copyFrom(ctx); }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitRelativeCount(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class ForwardCountContext extends DirectionContext {
		public TerminalNode FORWARD() { return getToken(OpenGaussStatementParser.FORWARD, 0); }
		public SignedIconstContext signedIconst() {
			return getRuleContext(SignedIconstContext.class,0);
		}
		public ForwardCountContext(DirectionContext ctx) { copyFrom(ctx); }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitForwardCount(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class FirstContext extends DirectionContext {
		public TerminalNode FIRST() { return getToken(OpenGaussStatementParser.FIRST, 0); }
		public FirstContext(DirectionContext ctx) { copyFrom(ctx); }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitFirst(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DirectionContext direction() throws RecognitionException {
		DirectionContext _localctx = new DirectionContext(_ctx, getState());
		enterRule(_localctx, 1476, RULE_direction);
		try {
			setState(10110);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,977,_ctx) ) {
			case 1:
				_localctx = new NextContext(_localctx);
				enterOuterAlt(_localctx, 1);
				{
				setState(10090);
				match(NEXT);
				}
				break;
			case 2:
				_localctx = new PriorContext(_localctx);
				enterOuterAlt(_localctx, 2);
				{
				setState(10091);
				match(PRIOR);
				}
				break;
			case 3:
				_localctx = new FirstContext(_localctx);
				enterOuterAlt(_localctx, 3);
				{
				setState(10092);
				match(FIRST);
				}
				break;
			case 4:
				_localctx = new LastContext(_localctx);
				enterOuterAlt(_localctx, 4);
				{
				setState(10093);
				match(LAST);
				}
				break;
			case 5:
				_localctx = new AbsoluteCountContext(_localctx);
				enterOuterAlt(_localctx, 5);
				{
				setState(10094);
				match(ABSOLUTE);
				setState(10095);
				signedIconst();
				}
				break;
			case 6:
				_localctx = new RelativeCountContext(_localctx);
				enterOuterAlt(_localctx, 6);
				{
				setState(10096);
				match(RELATIVE);
				setState(10097);
				signedIconst();
				}
				break;
			case 7:
				_localctx = new CountContext(_localctx);
				enterOuterAlt(_localctx, 7);
				{
				setState(10098);
				signedIconst();
				}
				break;
			case 8:
				_localctx = new AllContext(_localctx);
				enterOuterAlt(_localctx, 8);
				{
				setState(10099);
				match(ALL);
				}
				break;
			case 9:
				_localctx = new ForwardContext(_localctx);
				enterOuterAlt(_localctx, 9);
				{
				setState(10100);
				match(FORWARD);
				}
				break;
			case 10:
				_localctx = new ForwardCountContext(_localctx);
				enterOuterAlt(_localctx, 10);
				{
				setState(10101);
				match(FORWARD);
				setState(10102);
				signedIconst();
				}
				break;
			case 11:
				_localctx = new ForwardAllContext(_localctx);
				enterOuterAlt(_localctx, 11);
				{
				setState(10103);
				match(FORWARD);
				setState(10104);
				match(ALL);
				}
				break;
			case 12:
				_localctx = new BackwardContext(_localctx);
				enterOuterAlt(_localctx, 12);
				{
				setState(10105);
				match(BACKWARD);
				}
				break;
			case 13:
				_localctx = new BackwardCountContext(_localctx);
				enterOuterAlt(_localctx, 13);
				{
				setState(10106);
				match(BACKWARD);
				setState(10107);
				signedIconst();
				}
				break;
			case 14:
				_localctx = new BackwardAllContext(_localctx);
				enterOuterAlt(_localctx, 14);
				{
				setState(10108);
				match(BACKWARD);
				setState(10109);
				match(ALL);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ShowContext extends ParserRuleContext {
		public TerminalNode SHOW() { return getToken(OpenGaussStatementParser.SHOW, 0); }
		public VarNameContext varName() {
			return getRuleContext(VarNameContext.class,0);
		}
		public TerminalNode TIME() { return getToken(OpenGaussStatementParser.TIME, 0); }
		public TerminalNode ZONE() { return getToken(OpenGaussStatementParser.ZONE, 0); }
		public TerminalNode TRANSACTION() { return getToken(OpenGaussStatementParser.TRANSACTION, 0); }
		public TerminalNode ISOLATION() { return getToken(OpenGaussStatementParser.ISOLATION, 0); }
		public TerminalNode LEVEL() { return getToken(OpenGaussStatementParser.LEVEL, 0); }
		public TerminalNode SESSION() { return getToken(OpenGaussStatementParser.SESSION, 0); }
		public TerminalNode AUTHORIZATION() { return getToken(OpenGaussStatementParser.AUTHORIZATION, 0); }
		public TerminalNode ALL() { return getToken(OpenGaussStatementParser.ALL, 0); }
		public ShowContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_show; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitShow(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ShowContext show() throws RecognitionException {
		ShowContext _localctx = new ShowContext(_ctx, getState());
		enterRule(_localctx, 1478, RULE_show);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(10112);
			match(SHOW);
			setState(10122);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,978,_ctx) ) {
			case 1:
				{
				setState(10113);
				varName(0);
				}
				break;
			case 2:
				{
				setState(10114);
				match(TIME);
				setState(10115);
				match(ZONE);
				}
				break;
			case 3:
				{
				setState(10116);
				match(TRANSACTION);
				setState(10117);
				match(ISOLATION);
				setState(10118);
				match(LEVEL);
				}
				break;
			case 4:
				{
				setState(10119);
				match(SESSION);
				setState(10120);
				match(AUTHORIZATION);
				}
				break;
			case 5:
				{
				setState(10121);
				match(ALL);
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class SetContext extends ParserRuleContext {
		public TerminalNode SET() { return getToken(OpenGaussStatementParser.SET, 0); }
		public TimeZoneClauseContext timeZoneClause() {
			return getRuleContext(TimeZoneClauseContext.class,0);
		}
		public ConfigurationParameterClauseContext configurationParameterClause() {
			return getRuleContext(ConfigurationParameterClauseContext.class,0);
		}
		public VarNameContext varName() {
			return getRuleContext(VarNameContext.class,0);
		}
		public TerminalNode FROM() { return getToken(OpenGaussStatementParser.FROM, 0); }
		public TerminalNode CURRENT() { return getToken(OpenGaussStatementParser.CURRENT, 0); }
		public TerminalNode TIME() { return getToken(OpenGaussStatementParser.TIME, 0); }
		public TerminalNode ZONE() { return getToken(OpenGaussStatementParser.ZONE, 0); }
		public ZoneValueContext zoneValue() {
			return getRuleContext(ZoneValueContext.class,0);
		}
		public TerminalNode CATALOG() { return getToken(OpenGaussStatementParser.CATALOG, 0); }
		public TerminalNode STRING_() { return getToken(OpenGaussStatementParser.STRING_, 0); }
		public TerminalNode SCHEMA() { return getToken(OpenGaussStatementParser.SCHEMA, 0); }
		public TerminalNode NAMES() { return getToken(OpenGaussStatementParser.NAMES, 0); }
		public TerminalNode ROLE() { return getToken(OpenGaussStatementParser.ROLE, 0); }
		public NonReservedWordOrSconstContext nonReservedWordOrSconst() {
			return getRuleContext(NonReservedWordOrSconstContext.class,0);
		}
		public TerminalNode SESSION() { return getToken(OpenGaussStatementParser.SESSION, 0); }
		public TerminalNode AUTHORIZATION() { return getToken(OpenGaussStatementParser.AUTHORIZATION, 0); }
		public TerminalNode IDENTIFIER_() { return getToken(OpenGaussStatementParser.IDENTIFIER_, 0); }
		public TerminalNode PASSWORD() { return getToken(OpenGaussStatementParser.PASSWORD, 0); }
		public TerminalNode DEFAULT() { return getToken(OpenGaussStatementParser.DEFAULT, 0); }
		public TerminalNode XML() { return getToken(OpenGaussStatementParser.XML, 0); }
		public TerminalNode OPTION() { return getToken(OpenGaussStatementParser.OPTION, 0); }
		public DocumentOrContentContext documentOrContent() {
			return getRuleContext(DocumentOrContentContext.class,0);
		}
		public RuntimeScopeContext runtimeScope() {
			return getRuleContext(RuntimeScopeContext.class,0);
		}
		public EncodingContext encoding() {
			return getRuleContext(EncodingContext.class,0);
		}
		public SetContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_set; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitSet(this);
			else return visitor.visitChildren(this);
		}
	}

	public final SetContext set() throws RecognitionException {
		SetContext _localctx = new SetContext(_ctx, getState());
		enterRule(_localctx, 1480, RULE_set);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(10124);
			match(SET);
			setState(10126);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,979,_ctx) ) {
			case 1:
				{
				setState(10125);
				runtimeScope();
				}
				break;
			}
			setState(10158);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,981,_ctx) ) {
			case 1:
				{
				setState(10128);
				timeZoneClause();
				}
				break;
			case 2:
				{
				setState(10129);
				configurationParameterClause();
				}
				break;
			case 3:
				{
				setState(10130);
				varName(0);
				setState(10131);
				match(FROM);
				setState(10132);
				match(CURRENT);
				}
				break;
			case 4:
				{
				setState(10134);
				match(TIME);
				setState(10135);
				match(ZONE);
				setState(10136);
				zoneValue();
				}
				break;
			case 5:
				{
				setState(10137);
				match(CATALOG);
				setState(10138);
				match(STRING_);
				}
				break;
			case 6:
				{
				setState(10139);
				match(SCHEMA);
				setState(10140);
				match(STRING_);
				}
				break;
			case 7:
				{
				setState(10141);
				match(NAMES);
				setState(10143);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==DEFAULT || _la==STRING_) {
					{
					setState(10142);
					encoding();
					}
				}

				}
				break;
			case 8:
				{
				setState(10145);
				match(ROLE);
				setState(10146);
				nonReservedWordOrSconst();
				}
				break;
			case 9:
				{
				setState(10147);
				match(SESSION);
				setState(10148);
				match(AUTHORIZATION);
				setState(10149);
				match(IDENTIFIER_);
				setState(10150);
				match(PASSWORD);
				setState(10151);
				match(STRING_);
				}
				break;
			case 10:
				{
				setState(10152);
				match(SESSION);
				setState(10153);
				match(AUTHORIZATION);
				setState(10154);
				match(DEFAULT);
				}
				break;
			case 11:
				{
				setState(10155);
				match(XML);
				setState(10156);
				match(OPTION);
				setState(10157);
				documentOrContent();
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class RuntimeScopeContext extends ParserRuleContext {
		public TerminalNode SESSION() { return getToken(OpenGaussStatementParser.SESSION, 0); }
		public TerminalNode LOCAL() { return getToken(OpenGaussStatementParser.LOCAL, 0); }
		public RuntimeScopeContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_runtimeScope; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitRuntimeScope(this);
			else return visitor.visitChildren(this);
		}
	}

	public final RuntimeScopeContext runtimeScope() throws RecognitionException {
		RuntimeScopeContext _localctx = new RuntimeScopeContext(_ctx, getState());
		enterRule(_localctx, 1482, RULE_runtimeScope);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(10160);
			_la = _input.LA(1);
			if ( !(_la==LOCAL || _la==SESSION) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class TimeZoneClauseContext extends ParserRuleContext {
		public TerminalNode TIME() { return getToken(OpenGaussStatementParser.TIME, 0); }
		public TerminalNode ZONE() { return getToken(OpenGaussStatementParser.ZONE, 0); }
		public NumberLiteralsContext numberLiterals() {
			return getRuleContext(NumberLiteralsContext.class,0);
		}
		public TerminalNode LOCAL() { return getToken(OpenGaussStatementParser.LOCAL, 0); }
		public TerminalNode DEFAULT() { return getToken(OpenGaussStatementParser.DEFAULT, 0); }
		public TimeZoneClauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_timeZoneClause; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitTimeZoneClause(this);
			else return visitor.visitChildren(this);
		}
	}

	public final TimeZoneClauseContext timeZoneClause() throws RecognitionException {
		TimeZoneClauseContext _localctx = new TimeZoneClauseContext(_ctx, getState());
		enterRule(_localctx, 1484, RULE_timeZoneClause);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(10162);
			match(TIME);
			setState(10163);
			match(ZONE);
			setState(10167);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case MINUS_:
			case NUMBER_:
				{
				setState(10164);
				numberLiterals();
				}
				break;
			case LOCAL:
				{
				setState(10165);
				match(LOCAL);
				}
				break;
			case DEFAULT:
				{
				setState(10166);
				match(DEFAULT);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ConfigurationParameterClauseContext extends ParserRuleContext {
		public VarNameContext varName() {
			return getRuleContext(VarNameContext.class,0);
		}
		public TerminalNode TO() { return getToken(OpenGaussStatementParser.TO, 0); }
		public TerminalNode EQ_() { return getToken(OpenGaussStatementParser.EQ_, 0); }
		public VarListContext varList() {
			return getRuleContext(VarListContext.class,0);
		}
		public TerminalNode DEFAULT() { return getToken(OpenGaussStatementParser.DEFAULT, 0); }
		public ConfigurationParameterClauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_configurationParameterClause; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitConfigurationParameterClause(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ConfigurationParameterClauseContext configurationParameterClause() throws RecognitionException {
		ConfigurationParameterClauseContext _localctx = new ConfigurationParameterClauseContext(_ctx, getState());
		enterRule(_localctx, 1486, RULE_configurationParameterClause);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(10169);
			varName(0);
			setState(10170);
			_la = _input.LA(1);
			if ( !(_la==EQ_ || _la==TO) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			setState(10173);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case PLUS_:
			case MINUS_:
			case UNICODE_ESCAPE:
			case INSERT:
			case UPDATE:
			case DELETE:
			case ALTER:
			case DROP:
			case TRUNCATE:
			case SCHEMA:
			case REVOKE:
			case ADD:
			case SET:
			case INDEX:
			case KEY:
			case POSITION:
			case PRECISION:
			case FUNCTION:
			case TRIGGER:
			case PROCEDURE:
			case VIEW:
			case VALUES:
			case TRIM:
			case SUBSTRING:
			case NATURAL:
			case JOIN:
			case FULL:
			case INNER:
			case OUTER:
			case LEFT:
			case RIGHT:
			case CROSS:
			case ON:
			case IF:
			case IS:
			case TRUE:
			case FALSE:
			case EXISTS:
			case BETWEEN:
			case LIKE:
			case BY:
			case BEGIN:
			case COMMIT:
			case ROLLBACK:
			case SAVEPOINT:
			case BOOLEAN:
			case DOUBLE:
			case CHAR:
			case CHARACTER:
			case INTERVAL:
			case TIME:
			case TIMESTAMP:
			case YEAR:
			case MONTH:
			case DAY:
			case HOUR:
			case MINUTE:
			case SECOND:
			case CURRENT:
			case ENABLE:
			case DISABLE:
			case CALL:
			case PRESERVE:
			case DEFINER:
			case SQL:
			case CASCADED:
			case LOCAL:
			case CLOSE:
			case NEXT:
			case NAME:
			case COLLATION:
			case NAMES:
			case INTEGER:
			case REAL:
			case DECIMAL:
			case TYPE:
			case SMALLINT:
			case BIGINT:
			case NUMERIC:
			case TEXT:
			case REPEATABLE:
			case NULLIF:
			case VARYING:
			case NATIONAL:
			case NCHAR:
			case VALUE:
			case COALESCE:
			case TIES:
			case CUBE:
			case GROUPING:
			case SETS:
			case OTHERS:
			case OVERLAPS:
			case AT:
			case DEC:
			case MAXVALUE:
			case ADMIN:
			case BINARY:
			case ESCAPE:
			case EXCLUDE:
			case MOD:
			case PARTITION:
			case ROW:
			case UNKNOWN:
			case ALWAYS:
			case CASCADE:
			case GENERATED:
			case ISOLATION:
			case LEVEL:
			case NO:
			case OPTION:
			case PRIVILEGES:
			case READ:
			case ROLE:
			case ROWS:
			case START:
			case TRANSACTION:
			case ACTION:
			case CACHE:
			case CHARACTERISTICS:
			case CLUSTER:
			case COMMENTS:
			case CONCURRENTLY:
			case CONSTRAINTS:
			case CYCLE:
			case DATA:
			case DATABASE:
			case DEFAULTS:
			case DEFERRED:
			case DEPENDS:
			case DOMAIN:
			case EXCLUDING:
			case EXECUTE:
			case EXTENDED:
			case EXTENSION:
			case EXTERNAL:
			case EXTRACT:
			case FILTER:
			case FIRST:
			case FOLLOWING:
			case FORCE:
			case GLOBAL:
			case IDENTITY:
			case IMMEDIATE:
			case INCLUDING:
			case INCREMENT:
			case INDEXES:
			case INHERIT:
			case INHERITS:
			case INCLUDE:
			case LANGUAGE:
			case LARGE:
			case LAST:
			case LOGGED:
			case MAIN:
			case MATCH:
			case MINVALUE:
			case NOTHING:
			case NULLS:
			case OBJECT:
			case OIDS:
			case OVER:
			case OWNED:
			case OWNER:
			case PARTIAL:
			case PLAIN:
			case PRECEDING:
			case RANGE:
			case RENAME:
			case REPLICA:
			case RESET:
			case RESTART:
			case RESTRICT:
			case ROUTINE:
			case RULE:
			case SECURITY:
			case SEQUENCE:
			case SESSION:
			case SHOW:
			case SIMPLE:
			case STATISTICS:
			case STORAGE:
			case TABLESPACE:
			case TEMP:
			case TEMPORARY:
			case UNBOUNDED:
			case UNLOGGED:
			case VALID:
			case VALIDATE:
			case WITHIN:
			case WITHOUT:
			case ZONE:
			case OF:
			case UESCAPE:
			case GROUPS:
			case RECURSIVE:
			case INT:
			case INT2:
			case INT4:
			case FLOAT:
			case FLOAT4:
			case VARCHAR:
			case BYTEA:
			case ENUM:
			case POINT:
			case LSEG:
			case BOX:
			case PATH:
			case POLYGON:
			case CIRCLE:
			case INET:
			case BIT:
			case TSQUERY:
			case XML:
			case JSON:
			case INT4RANGE:
			case INT8RANGE:
			case NUMRANGE:
			case DATERANGE:
			case TABLESAMPLE:
			case ORDINALITY:
			case CURRENT_SCHEMA:
			case OVERLAY:
			case XMLCONCAT:
			case XMLELEMENT:
			case XMLEXISTS:
			case XMLFOREST:
			case XMLPARSE:
			case XMLPI:
			case XMLROOT:
			case XMLSERIALIZE:
			case TREAT:
			case SETOF:
			case NFC:
			case NFD:
			case NFKC:
			case NFKD:
			case XMLATTRIBUTES:
			case REF:
			case PASSING:
			case VERSION:
			case YES:
			case STANDALONE:
			case GREATEST:
			case LEAST:
			case MATERIALIZED:
			case OPERATOR:
			case SHARE:
			case ROLLUP:
			case ILIKE:
			case SIMILAR:
			case ISNULL:
			case NOTNULL:
			case DOCUMENT:
			case NORMALIZED:
			case NOWAIT:
			case LOCKED:
			case XMLTABLE:
			case COLUMNS:
			case CONTENT:
			case STRIP:
			case WHITESPACE:
			case XMLNAMESPACES:
			case NONE:
			case CONFLICT:
			case OVERRIDING:
			case SYSTEM:
			case ABORT:
			case ABSOLUTE:
			case ACCESS:
			case AFTER:
			case AGGREGATE:
			case ALSO:
			case ATTACH:
			case ATTRIBUTE:
			case BACKWARD:
			case BEFORE:
			case ASSERTION:
			case ASSIGNMENT:
			case CONTINUE:
			case CONVERSION:
			case COPY:
			case COST:
			case CSV:
			case CALLED:
			case CATALOG:
			case CHAIN:
			case CHECKPOINT:
			case CLASS:
			case CONFIGURATION:
			case COMMENT:
			case DETACH:
			case DICTIONARY:
			case EXPRESSION:
			case INSENSITIVE:
			case DISCARD:
			case OFF:
			case INSTEAD:
			case EXPLAIN:
			case INPUT:
			case INLINE:
			case PARALLEL:
			case LEAKPROOF:
			case COMMITTED:
			case ENCODING:
			case IMPLICIT:
			case DELIMITER:
			case CURSOR:
			case EACH:
			case EVENT:
			case DEALLOCATE:
			case CONNECTION:
			case DECLARE:
			case FAMILY:
			case FORWARD:
			case EXCLUSIVE:
			case FUNCTIONS:
			case LOCATION:
			case LABEL:
			case DELIMITERS:
			case HANDLER:
			case HEADER:
			case IMMUTABLE:
			case GRANTED:
			case HOLD:
			case MAPPING:
			case OLD:
			case METHOD:
			case LOAD:
			case LISTEN:
			case MODE:
			case MOVE:
			case PROCEDURAL:
			case PARSER:
			case PROCEDURES:
			case ENCRYPTED:
			case PUBLICATION:
			case PROGRAM:
			case REFERENCING:
			case PLANS:
			case REINDEX:
			case PRIOR:
			case PASSWORD:
			case RELATIVE:
			case QUOTE:
			case ROUTINES:
			case REPLACE:
			case SNAPSHOT:
			case REFRESH:
			case PREPARE:
			case OPTIONS:
			case IMPORT:
			case INVOKER:
			case NEW:
			case PREPARED:
			case SCROLL:
			case SEQUENCES:
			case SYSID:
			case REASSIGN:
			case SERVER:
			case SUBSCRIPTION:
			case SEARCH:
			case SCHEMAS:
			case RECHECK:
			case POLICY:
			case NOTIFY:
			case LOCK:
			case RELEASE:
			case SERIALIZABLE:
			case RETURNS:
			case STATEMENT:
			case STDIN:
			case STDOUT:
			case TABLES:
			case SUPPORT:
			case STABLE:
			case TEMPLATE:
			case UNENCRYPTED:
			case VIEWS:
			case UNCOMMITTED:
			case TRANSFORM:
			case UNLISTEN:
			case TRUSTED:
			case VALIDATOR:
			case UNTIL:
			case VACUUM:
			case VOLATILE:
			case STORED:
			case WRITE:
			case STRICT:
			case TYPES:
			case WRAPPER:
			case WORK:
			case FREEZE:
			case AUTHORIZATION:
			case VERBOSE:
			case OUT:
			case INOUT:
			case INT16:
			case INT1:
			case ELEM_CONTAINED_BY_RANGE:
			case IDENTIFIER_:
			case STRING_:
			case NUMBER_:
				{
				setState(10171);
				varList();
				}
				break;
			case DEFAULT:
				{
				setState(10172);
				match(DEFAULT);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ResetParameterContext extends ParserRuleContext {
		public TerminalNode RESET() { return getToken(OpenGaussStatementParser.RESET, 0); }
		public TerminalNode ALL() { return getToken(OpenGaussStatementParser.ALL, 0); }
		public IdentifierContext identifier() {
			return getRuleContext(IdentifierContext.class,0);
		}
		public ResetParameterContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_resetParameter; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitResetParameter(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ResetParameterContext resetParameter() throws RecognitionException {
		ResetParameterContext _localctx = new ResetParameterContext(_ctx, getState());
		enterRule(_localctx, 1488, RULE_resetParameter);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(10175);
			match(RESET);
			setState(10178);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case ALL:
				{
				setState(10176);
				match(ALL);
				}
				break;
			case UNICODE_ESCAPE:
			case INSERT:
			case UPDATE:
			case DELETE:
			case ALTER:
			case DROP:
			case TRUNCATE:
			case SCHEMA:
			case REVOKE:
			case ADD:
			case SET:
			case INDEX:
			case KEY:
			case POSITION:
			case FUNCTION:
			case TRIGGER:
			case PROCEDURE:
			case VIEW:
			case IF:
			case BY:
			case BEGIN:
			case COMMIT:
			case ROLLBACK:
			case SAVEPOINT:
			case DOUBLE:
			case INTERVAL:
			case TIME:
			case TIMESTAMP:
			case YEAR:
			case MONTH:
			case DAY:
			case HOUR:
			case MINUTE:
			case SECOND:
			case CURRENT:
			case ENABLE:
			case DISABLE:
			case CALL:
			case PRESERVE:
			case DEFINER:
			case SQL:
			case CASCADED:
			case LOCAL:
			case CLOSE:
			case NEXT:
			case NAME:
			case NAMES:
			case TYPE:
			case TEXT:
			case REPEATABLE:
			case VARYING:
			case NATIONAL:
			case VALUE:
			case TIES:
			case CUBE:
			case SETS:
			case OTHERS:
			case AT:
			case MAXVALUE:
			case ADMIN:
			case ESCAPE:
			case EXCLUDE:
			case MOD:
			case PARTITION:
			case UNKNOWN:
			case ALWAYS:
			case CASCADE:
			case GENERATED:
			case ISOLATION:
			case LEVEL:
			case NO:
			case OPTION:
			case PRIVILEGES:
			case READ:
			case ROLE:
			case ROWS:
			case START:
			case TRANSACTION:
			case ACTION:
			case CACHE:
			case CHARACTERISTICS:
			case CLUSTER:
			case COMMENTS:
			case CONSTRAINTS:
			case CYCLE:
			case DATA:
			case DATABASE:
			case DEFAULTS:
			case DEFERRED:
			case DEPENDS:
			case DOMAIN:
			case EXCLUDING:
			case EXECUTE:
			case EXTENDED:
			case EXTENSION:
			case EXTERNAL:
			case FILTER:
			case FIRST:
			case FOLLOWING:
			case FORCE:
			case GLOBAL:
			case IDENTITY:
			case IMMEDIATE:
			case INCLUDING:
			case INCREMENT:
			case INDEXES:
			case INHERIT:
			case INHERITS:
			case INCLUDE:
			case LANGUAGE:
			case LARGE:
			case LAST:
			case LOGGED:
			case MAIN:
			case MATCH:
			case MINVALUE:
			case NOTHING:
			case NULLS:
			case OBJECT:
			case OIDS:
			case OVER:
			case OWNED:
			case OWNER:
			case PARTIAL:
			case PLAIN:
			case PRECEDING:
			case RANGE:
			case RENAME:
			case REPLICA:
			case RESET:
			case RESTART:
			case RESTRICT:
			case ROUTINE:
			case RULE:
			case SECURITY:
			case SEQUENCE:
			case SESSION:
			case SHOW:
			case SIMPLE:
			case STATISTICS:
			case STORAGE:
			case TABLESPACE:
			case TEMP:
			case TEMPORARY:
			case UNBOUNDED:
			case UNLOGGED:
			case VALID:
			case VALIDATE:
			case WITHIN:
			case WITHOUT:
			case ZONE:
			case OF:
			case UESCAPE:
			case GROUPS:
			case RECURSIVE:
			case INT2:
			case INT4:
			case FLOAT4:
			case BYTEA:
			case ENUM:
			case POINT:
			case LSEG:
			case BOX:
			case PATH:
			case POLYGON:
			case CIRCLE:
			case INET:
			case TSQUERY:
			case XML:
			case JSON:
			case INT4RANGE:
			case INT8RANGE:
			case NUMRANGE:
			case DATERANGE:
			case ORDINALITY:
			case NFC:
			case NFD:
			case NFKC:
			case NFKD:
			case REF:
			case PASSING:
			case VERSION:
			case YES:
			case STANDALONE:
			case MATERIALIZED:
			case OPERATOR:
			case SHARE:
			case ROLLUP:
			case DOCUMENT:
			case NORMALIZED:
			case NOWAIT:
			case LOCKED:
			case COLUMNS:
			case CONTENT:
			case STRIP:
			case WHITESPACE:
			case CONFLICT:
			case OVERRIDING:
			case SYSTEM:
			case ABORT:
			case ABSOLUTE:
			case ACCESS:
			case AFTER:
			case AGGREGATE:
			case ALSO:
			case ATTACH:
			case ATTRIBUTE:
			case BACKWARD:
			case BEFORE:
			case ASSERTION:
			case ASSIGNMENT:
			case CONTINUE:
			case CONVERSION:
			case COPY:
			case COST:
			case CSV:
			case CALLED:
			case CATALOG:
			case CHAIN:
			case CHECKPOINT:
			case CLASS:
			case CONFIGURATION:
			case COMMENT:
			case DETACH:
			case DICTIONARY:
			case EXPRESSION:
			case INSENSITIVE:
			case DISCARD:
			case OFF:
			case INSTEAD:
			case EXPLAIN:
			case INPUT:
			case INLINE:
			case PARALLEL:
			case LEAKPROOF:
			case COMMITTED:
			case ENCODING:
			case IMPLICIT:
			case DELIMITER:
			case CURSOR:
			case EACH:
			case EVENT:
			case DEALLOCATE:
			case CONNECTION:
			case DECLARE:
			case FAMILY:
			case FORWARD:
			case EXCLUSIVE:
			case FUNCTIONS:
			case LOCATION:
			case LABEL:
			case DELIMITERS:
			case HANDLER:
			case HEADER:
			case IMMUTABLE:
			case GRANTED:
			case HOLD:
			case MAPPING:
			case OLD:
			case METHOD:
			case LOAD:
			case LISTEN:
			case MODE:
			case MOVE:
			case PROCEDURAL:
			case PARSER:
			case PROCEDURES:
			case ENCRYPTED:
			case PUBLICATION:
			case PROGRAM:
			case REFERENCING:
			case PLANS:
			case REINDEX:
			case PRIOR:
			case PASSWORD:
			case RELATIVE:
			case QUOTE:
			case ROUTINES:
			case REPLACE:
			case SNAPSHOT:
			case REFRESH:
			case PREPARE:
			case OPTIONS:
			case IMPORT:
			case INVOKER:
			case NEW:
			case PREPARED:
			case SCROLL:
			case SEQUENCES:
			case SYSID:
			case REASSIGN:
			case SERVER:
			case SUBSCRIPTION:
			case SEARCH:
			case SCHEMAS:
			case RECHECK:
			case POLICY:
			case NOTIFY:
			case LOCK:
			case RELEASE:
			case SERIALIZABLE:
			case RETURNS:
			case STATEMENT:
			case STDIN:
			case STDOUT:
			case TABLES:
			case SUPPORT:
			case STABLE:
			case TEMPLATE:
			case UNENCRYPTED:
			case VIEWS:
			case UNCOMMITTED:
			case TRANSFORM:
			case UNLISTEN:
			case TRUSTED:
			case VALIDATOR:
			case UNTIL:
			case VACUUM:
			case VOLATILE:
			case STORED:
			case WRITE:
			case STRICT:
			case TYPES:
			case WRAPPER:
			case WORK:
			case INT16:
			case INT1:
			case ELEM_CONTAINED_BY_RANGE:
			case IDENTIFIER_:
				{
				setState(10177);
				identifier();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ExplainContext extends ParserRuleContext {
		public TerminalNode EXPLAIN() { return getToken(OpenGaussStatementParser.EXPLAIN, 0); }
		public ExplainableStmtContext explainableStmt() {
			return getRuleContext(ExplainableStmtContext.class,0);
		}
		public AnalyzeKeywordContext analyzeKeyword() {
			return getRuleContext(AnalyzeKeywordContext.class,0);
		}
		public TerminalNode VERBOSE() { return getToken(OpenGaussStatementParser.VERBOSE, 0); }
		public TerminalNode PERFORMANCE() { return getToken(OpenGaussStatementParser.PERFORMANCE, 0); }
		public TerminalNode LP_() { return getToken(OpenGaussStatementParser.LP_, 0); }
		public ExplainOptionListContext explainOptionList() {
			return getRuleContext(ExplainOptionListContext.class,0);
		}
		public TerminalNode RP_() { return getToken(OpenGaussStatementParser.RP_, 0); }
		public ExplainContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_explain; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitExplain(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ExplainContext explain() throws RecognitionException {
		ExplainContext _localctx = new ExplainContext(_ctx, getState());
		enterRule(_localctx, 1490, RULE_explain);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(10180);
			match(EXPLAIN);
			setState(10191);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,986,_ctx) ) {
			case 1:
				{
				setState(10181);
				analyzeKeyword();
				setState(10183);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==VERBOSE) {
					{
					setState(10182);
					match(VERBOSE);
					}
				}

				}
				break;
			case 2:
				{
				setState(10185);
				match(VERBOSE);
				}
				break;
			case 3:
				{
				setState(10186);
				match(PERFORMANCE);
				}
				break;
			case 4:
				{
				setState(10187);
				match(LP_);
				setState(10188);
				explainOptionList();
				setState(10189);
				match(RP_);
				}
				break;
			}
			setState(10193);
			explainableStmt();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ExplainableStmtContext extends ParserRuleContext {
		public SelectContext select() {
			return getRuleContext(SelectContext.class,0);
		}
		public InsertContext insert() {
			return getRuleContext(InsertContext.class,0);
		}
		public UpdateContext update() {
			return getRuleContext(UpdateContext.class,0);
		}
		public DeleteContext delete() {
			return getRuleContext(DeleteContext.class,0);
		}
		public DeclareContext declare() {
			return getRuleContext(DeclareContext.class,0);
		}
		public ExecuteStmtContext executeStmt() {
			return getRuleContext(ExecuteStmtContext.class,0);
		}
		public CreateMaterializedViewContext createMaterializedView() {
			return getRuleContext(CreateMaterializedViewContext.class,0);
		}
		public RefreshMatViewStmtContext refreshMatViewStmt() {
			return getRuleContext(RefreshMatViewStmtContext.class,0);
		}
		public ExplainableStmtContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_explainableStmt; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitExplainableStmt(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ExplainableStmtContext explainableStmt() throws RecognitionException {
		ExplainableStmtContext _localctx = new ExplainableStmtContext(_ctx, getState());
		enterRule(_localctx, 1492, RULE_explainableStmt);
		try {
			setState(10203);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,987,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(10195);
				select();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(10196);
				insert();
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(10197);
				update();
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(10198);
				delete();
				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(10199);
				declare();
				}
				break;
			case 6:
				enterOuterAlt(_localctx, 6);
				{
				setState(10200);
				executeStmt();
				}
				break;
			case 7:
				enterOuterAlt(_localctx, 7);
				{
				setState(10201);
				createMaterializedView();
				}
				break;
			case 8:
				enterOuterAlt(_localctx, 8);
				{
				setState(10202);
				refreshMatViewStmt();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ExplainOptionListContext extends ParserRuleContext {
		public List explainOptionElem() {
			return getRuleContexts(ExplainOptionElemContext.class);
		}
		public ExplainOptionElemContext explainOptionElem(int i) {
			return getRuleContext(ExplainOptionElemContext.class,i);
		}
		public List COMMA_() { return getTokens(OpenGaussStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(OpenGaussStatementParser.COMMA_, i);
		}
		public ExplainOptionListContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_explainOptionList; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitExplainOptionList(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ExplainOptionListContext explainOptionList() throws RecognitionException {
		ExplainOptionListContext _localctx = new ExplainOptionListContext(_ctx, getState());
		enterRule(_localctx, 1494, RULE_explainOptionList);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(10205);
			explainOptionElem();
			setState(10210);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA_) {
				{
				{
				setState(10206);
				match(COMMA_);
				setState(10207);
				explainOptionElem();
				}
				}
				setState(10212);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ExplainOptionElemContext extends ParserRuleContext {
		public ExplainOptionNameContext explainOptionName() {
			return getRuleContext(ExplainOptionNameContext.class,0);
		}
		public ExplainOptionArgContext explainOptionArg() {
			return getRuleContext(ExplainOptionArgContext.class,0);
		}
		public ExplainOptionElemContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_explainOptionElem; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitExplainOptionElem(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ExplainOptionElemContext explainOptionElem() throws RecognitionException {
		ExplainOptionElemContext _localctx = new ExplainOptionElemContext(_ctx, getState());
		enterRule(_localctx, 1496, RULE_explainOptionElem);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(10213);
			explainOptionName();
			setState(10215);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << PLUS_) | (1L << MINUS_) | (1L << UNICODE_ESCAPE))) != 0) || ((((_la - 81)) & ~0x3f) == 0 && ((1L << (_la - 81)) & ((1L << (INSERT - 81)) | (1L << (UPDATE - 81)) | (1L << (DELETE - 81)) | (1L << (ALTER - 81)) | (1L << (DROP - 81)) | (1L << (TRUNCATE - 81)) | (1L << (SCHEMA - 81)) | (1L << (REVOKE - 81)) | (1L << (ADD - 81)) | (1L << (SET - 81)) | (1L << (INDEX - 81)) | (1L << (KEY - 81)) | (1L << (POSITION - 81)) | (1L << (PRECISION - 81)) | (1L << (FUNCTION - 81)) | (1L << (TRIGGER - 81)) | (1L << (PROCEDURE - 81)) | (1L << (VIEW - 81)) | (1L << (VALUES - 81)) | (1L << (TRIM - 81)) | (1L << (SUBSTRING - 81)) | (1L << (NATURAL - 81)) | (1L << (JOIN - 81)) | (1L << (FULL - 81)) | (1L << (INNER - 81)) | (1L << (OUTER - 81)) | (1L << (LEFT - 81)) | (1L << (RIGHT - 81)) | (1L << (CROSS - 81)) | (1L << (ON - 81)) | (1L << (IF - 81)) | (1L << (IS - 81)) | (1L << (TRUE - 81)) | (1L << (FALSE - 81)) | (1L << (EXISTS - 81)) | (1L << (BETWEEN - 81)))) != 0) || ((((_la - 148)) & ~0x3f) == 0 && ((1L << (_la - 148)) & ((1L << (LIKE - 148)) | (1L << (BY - 148)) | (1L << (BEGIN - 148)) | (1L << (COMMIT - 148)) | (1L << (ROLLBACK - 148)) | (1L << (SAVEPOINT - 148)) | (1L << (BOOLEAN - 148)) | (1L << (DOUBLE - 148)) | (1L << (CHAR - 148)) | (1L << (CHARACTER - 148)) | (1L << (INTERVAL - 148)) | (1L << (TIME - 148)) | (1L << (TIMESTAMP - 148)) | (1L << (YEAR - 148)) | (1L << (MONTH - 148)) | (1L << (DAY - 148)) | (1L << (HOUR - 148)) | (1L << (MINUTE - 148)) | (1L << (SECOND - 148)) | (1L << (CURRENT - 148)) | (1L << (ENABLE - 148)) | (1L << (DISABLE - 148)) | (1L << (CALL - 148)) | (1L << (PRESERVE - 148)) | (1L << (DEFINER - 148)) | (1L << (SQL - 148)) | (1L << (CASCADED - 148)) | (1L << (LOCAL - 148)) | (1L << (CLOSE - 148)) | (1L << (NEXT - 148)) | (1L << (NAME - 148)) | (1L << (COLLATION - 148)) | (1L << (NAMES - 148)) | (1L << (INTEGER - 148)) | (1L << (REAL - 148)) | (1L << (DECIMAL - 148)) | (1L << (TYPE - 148)) | (1L << (SMALLINT - 148)) | (1L << (BIGINT - 148)) | (1L << (NUMERIC - 148)) | (1L << (TEXT - 148)) | (1L << (REPEATABLE - 148)))) != 0) || ((((_la - 212)) & ~0x3f) == 0 && ((1L << (_la - 212)) & ((1L << (NULLIF - 212)) | (1L << (VARYING - 212)) | (1L << (NATIONAL - 212)) | (1L << (NCHAR - 212)) | (1L << (VALUE - 212)) | (1L << (COALESCE - 212)) | (1L << (TIES - 212)) | (1L << (CUBE - 212)) | (1L << (GROUPING - 212)) | (1L << (SETS - 212)) | (1L << (OTHERS - 212)) | (1L << (OVERLAPS - 212)) | (1L << (AT - 212)) | (1L << (DEC - 212)) | (1L << (MAXVALUE - 212)) | (1L << (ADMIN - 212)) | (1L << (BINARY - 212)) | (1L << (ESCAPE - 212)) | (1L << (EXCLUDE - 212)) | (1L << (MOD - 212)) | (1L << (PARTITION - 212)) | (1L << (ROW - 212)) | (1L << (UNKNOWN - 212)) | (1L << (ALWAYS - 212)) | (1L << (CASCADE - 212)) | (1L << (GENERATED - 212)) | (1L << (ISOLATION - 212)) | (1L << (LEVEL - 212)) | (1L << (NO - 212)) | (1L << (OPTION - 212)) | (1L << (PRIVILEGES - 212)) | (1L << (READ - 212)) | (1L << (ROLE - 212)) | (1L << (ROWS - 212)) | (1L << (START - 212)) | (1L << (TRANSACTION - 212)) | (1L << (ACTION - 212)) | (1L << (CACHE - 212)) | (1L << (CHARACTERISTICS - 212)) | (1L << (CLUSTER - 212)) | (1L << (COMMENTS - 212)) | (1L << (CONCURRENTLY - 212)) | (1L << (CONSTRAINTS - 212)) | (1L << (CYCLE - 212)) | (1L << (DATA - 212)))) != 0) || ((((_la - 276)) & ~0x3f) == 0 && ((1L << (_la - 276)) & ((1L << (DATABASE - 276)) | (1L << (DEFAULTS - 276)) | (1L << (DEFERRED - 276)) | (1L << (DEPENDS - 276)) | (1L << (DOMAIN - 276)) | (1L << (EXCLUDING - 276)) | (1L << (EXECUTE - 276)) | (1L << (EXTENDED - 276)) | (1L << (EXTENSION - 276)) | (1L << (EXTERNAL - 276)) | (1L << (EXTRACT - 276)) | (1L << (FILTER - 276)) | (1L << (FIRST - 276)) | (1L << (FOLLOWING - 276)) | (1L << (FORCE - 276)) | (1L << (GLOBAL - 276)) | (1L << (IDENTITY - 276)) | (1L << (IMMEDIATE - 276)) | (1L << (INCLUDING - 276)) | (1L << (INCREMENT - 276)) | (1L << (INDEXES - 276)) | (1L << (INHERIT - 276)) | (1L << (INHERITS - 276)) | (1L << (INCLUDE - 276)) | (1L << (LANGUAGE - 276)) | (1L << (LARGE - 276)) | (1L << (LAST - 276)) | (1L << (LOGGED - 276)) | (1L << (MAIN - 276)) | (1L << (MATCH - 276)) | (1L << (MINVALUE - 276)) | (1L << (NOTHING - 276)) | (1L << (NULLS - 276)) | (1L << (OBJECT - 276)) | (1L << (OIDS - 276)) | (1L << (OVER - 276)) | (1L << (OWNED - 276)) | (1L << (OWNER - 276)) | (1L << (PARTIAL - 276)) | (1L << (PLAIN - 276)) | (1L << (PRECEDING - 276)) | (1L << (RANGE - 276)) | (1L << (RENAME - 276)) | (1L << (REPLICA - 276)) | (1L << (RESET - 276)) | (1L << (RESTART - 276)) | (1L << (RESTRICT - 276)) | (1L << (ROUTINE - 276)) | (1L << (RULE - 276)) | (1L << (SECURITY - 276)) | (1L << (SEQUENCE - 276)) | (1L << (SESSION - 276)) | (1L << (SHOW - 276)) | (1L << (SIMPLE - 276)) | (1L << (STATISTICS - 276)) | (1L << (STORAGE - 276)) | (1L << (TABLESPACE - 276)) | (1L << (TEMP - 276)) | (1L << (TEMPORARY - 276)))) != 0) || ((((_la - 340)) & ~0x3f) == 0 && ((1L << (_la - 340)) & ((1L << (UNBOUNDED - 340)) | (1L << (UNLOGGED - 340)) | (1L << (VALID - 340)) | (1L << (VALIDATE - 340)) | (1L << (WITHIN - 340)) | (1L << (WITHOUT - 340)) | (1L << (ZONE - 340)) | (1L << (OF - 340)) | (1L << (UESCAPE - 340)) | (1L << (GROUPS - 340)) | (1L << (RECURSIVE - 340)) | (1L << (INT - 340)) | (1L << (INT2 - 340)) | (1L << (INT4 - 340)) | (1L << (FLOAT - 340)) | (1L << (FLOAT4 - 340)) | (1L << (VARCHAR - 340)) | (1L << (BYTEA - 340)) | (1L << (ENUM - 340)) | (1L << (POINT - 340)) | (1L << (LSEG - 340)) | (1L << (BOX - 340)) | (1L << (PATH - 340)) | (1L << (POLYGON - 340)) | (1L << (CIRCLE - 340)) | (1L << (INET - 340)) | (1L << (BIT - 340)) | (1L << (TSQUERY - 340)) | (1L << (XML - 340)) | (1L << (JSON - 340)) | (1L << (INT4RANGE - 340)) | (1L << (INT8RANGE - 340)) | (1L << (NUMRANGE - 340)) | (1L << (DATERANGE - 340)) | (1L << (TABLESAMPLE - 340)) | (1L << (ORDINALITY - 340)) | (1L << (CURRENT_SCHEMA - 340)) | (1L << (OVERLAY - 340)) | (1L << (XMLCONCAT - 340)) | (1L << (XMLELEMENT - 340)) | (1L << (XMLEXISTS - 340)) | (1L << (XMLFOREST - 340)) | (1L << (XMLPARSE - 340)) | (1L << (XMLPI - 340)) | (1L << (XMLROOT - 340)) | (1L << (XMLSERIALIZE - 340)) | (1L << (TREAT - 340)))) != 0) || ((((_la - 404)) & ~0x3f) == 0 && ((1L << (_la - 404)) & ((1L << (SETOF - 404)) | (1L << (NFC - 404)) | (1L << (NFD - 404)) | (1L << (NFKC - 404)) | (1L << (NFKD - 404)) | (1L << (XMLATTRIBUTES - 404)) | (1L << (REF - 404)) | (1L << (PASSING - 404)) | (1L << (VERSION - 404)) | (1L << (YES - 404)) | (1L << (STANDALONE - 404)) | (1L << (GREATEST - 404)) | (1L << (LEAST - 404)) | (1L << (MATERIALIZED - 404)) | (1L << (OPERATOR - 404)) | (1L << (SHARE - 404)) | (1L << (ROLLUP - 404)) | (1L << (ILIKE - 404)) | (1L << (SIMILAR - 404)) | (1L << (ISNULL - 404)) | (1L << (NOTNULL - 404)) | (1L << (DOCUMENT - 404)) | (1L << (NORMALIZED - 404)) | (1L << (NOWAIT - 404)) | (1L << (LOCKED - 404)) | (1L << (XMLTABLE - 404)) | (1L << (COLUMNS - 404)) | (1L << (CONTENT - 404)) | (1L << (STRIP - 404)) | (1L << (WHITESPACE - 404)) | (1L << (XMLNAMESPACES - 404)) | (1L << (NONE - 404)) | (1L << (CONFLICT - 404)) | (1L << (OVERRIDING - 404)) | (1L << (SYSTEM - 404)) | (1L << (ABORT - 404)) | (1L << (ABSOLUTE - 404)) | (1L << (ACCESS - 404)) | (1L << (AFTER - 404)) | (1L << (AGGREGATE - 404)) | (1L << (ALSO - 404)) | (1L << (ATTACH - 404)) | (1L << (ATTRIBUTE - 404)) | (1L << (BACKWARD - 404)) | (1L << (BEFORE - 404)) | (1L << (ASSERTION - 404)) | (1L << (ASSIGNMENT - 404)) | (1L << (CONTINUE - 404)) | (1L << (CONVERSION - 404)) | (1L << (COPY - 404)) | (1L << (COST - 404)) | (1L << (CSV - 404)) | (1L << (CALLED - 404)) | (1L << (CATALOG - 404)) | (1L << (CHAIN - 404)) | (1L << (CHECKPOINT - 404)))) != 0) || ((((_la - 468)) & ~0x3f) == 0 && ((1L << (_la - 468)) & ((1L << (CLASS - 468)) | (1L << (CONFIGURATION - 468)) | (1L << (COMMENT - 468)) | (1L << (DETACH - 468)) | (1L << (DICTIONARY - 468)) | (1L << (EXPRESSION - 468)) | (1L << (INSENSITIVE - 468)) | (1L << (DISCARD - 468)) | (1L << (OFF - 468)) | (1L << (INSTEAD - 468)) | (1L << (EXPLAIN - 468)) | (1L << (INPUT - 468)) | (1L << (INLINE - 468)) | (1L << (PARALLEL - 468)) | (1L << (LEAKPROOF - 468)) | (1L << (COMMITTED - 468)) | (1L << (ENCODING - 468)) | (1L << (IMPLICIT - 468)) | (1L << (DELIMITER - 468)) | (1L << (CURSOR - 468)) | (1L << (EACH - 468)) | (1L << (EVENT - 468)) | (1L << (DEALLOCATE - 468)) | (1L << (CONNECTION - 468)) | (1L << (DECLARE - 468)) | (1L << (FAMILY - 468)) | (1L << (FORWARD - 468)) | (1L << (EXCLUSIVE - 468)) | (1L << (FUNCTIONS - 468)) | (1L << (LOCATION - 468)) | (1L << (LABEL - 468)) | (1L << (DELIMITERS - 468)) | (1L << (HANDLER - 468)) | (1L << (HEADER - 468)) | (1L << (IMMUTABLE - 468)) | (1L << (GRANTED - 468)) | (1L << (HOLD - 468)) | (1L << (MAPPING - 468)) | (1L << (OLD - 468)) | (1L << (METHOD - 468)) | (1L << (LOAD - 468)) | (1L << (LISTEN - 468)) | (1L << (MODE - 468)) | (1L << (MOVE - 468)) | (1L << (PROCEDURAL - 468)) | (1L << (PARSER - 468)) | (1L << (PROCEDURES - 468)) | (1L << (ENCRYPTED - 468)) | (1L << (PUBLICATION - 468)) | (1L << (PROGRAM - 468)) | (1L << (REFERENCING - 468)) | (1L << (PLANS - 468)) | (1L << (REINDEX - 468)) | (1L << (PRIOR - 468)) | (1L << (PASSWORD - 468)) | (1L << (RELATIVE - 468)) | (1L << (QUOTE - 468)) | (1L << (ROUTINES - 468)) | (1L << (REPLACE - 468)) | (1L << (SNAPSHOT - 468)) | (1L << (REFRESH - 468)) | (1L << (PREPARE - 468)) | (1L << (OPTIONS - 468)))) != 0) || ((((_la - 532)) & ~0x3f) == 0 && ((1L << (_la - 532)) & ((1L << (IMPORT - 532)) | (1L << (INVOKER - 532)) | (1L << (NEW - 532)) | (1L << (PREPARED - 532)) | (1L << (SCROLL - 532)) | (1L << (SEQUENCES - 532)) | (1L << (SYSID - 532)) | (1L << (REASSIGN - 532)) | (1L << (SERVER - 532)) | (1L << (SUBSCRIPTION - 532)) | (1L << (SEARCH - 532)) | (1L << (SCHEMAS - 532)) | (1L << (RECHECK - 532)) | (1L << (POLICY - 532)) | (1L << (NOTIFY - 532)) | (1L << (LOCK - 532)) | (1L << (RELEASE - 532)) | (1L << (SERIALIZABLE - 532)) | (1L << (RETURNS - 532)) | (1L << (STATEMENT - 532)) | (1L << (STDIN - 532)) | (1L << (STDOUT - 532)) | (1L << (TABLES - 532)) | (1L << (SUPPORT - 532)) | (1L << (STABLE - 532)) | (1L << (TEMPLATE - 532)) | (1L << (UNENCRYPTED - 532)) | (1L << (VIEWS - 532)) | (1L << (UNCOMMITTED - 532)) | (1L << (TRANSFORM - 532)) | (1L << (UNLISTEN - 532)) | (1L << (TRUSTED - 532)) | (1L << (VALIDATOR - 532)) | (1L << (UNTIL - 532)) | (1L << (VACUUM - 532)) | (1L << (VOLATILE - 532)) | (1L << (STORED - 532)) | (1L << (WRITE - 532)) | (1L << (STRICT - 532)) | (1L << (TYPES - 532)) | (1L << (WRAPPER - 532)) | (1L << (WORK - 532)) | (1L << (FREEZE - 532)) | (1L << (AUTHORIZATION - 532)) | (1L << (VERBOSE - 532)) | (1L << (OUT - 532)) | (1L << (INOUT - 532)) | (1L << (INT16 - 532)) | (1L << (INT1 - 532)) | (1L << (ELEM_CONTAINED_BY_RANGE - 532)) | (1L << (IDENTIFIER_ - 532)))) != 0) || _la==STRING_ || _la==NUMBER_) {
				{
				setState(10214);
				explainOptionArg();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ExplainOptionArgContext extends ParserRuleContext {
		public BooleanOrStringContext booleanOrString() {
			return getRuleContext(BooleanOrStringContext.class,0);
		}
		public NumericOnlyContext numericOnly() {
			return getRuleContext(NumericOnlyContext.class,0);
		}
		public ExplainOptionArgContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_explainOptionArg; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitExplainOptionArg(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ExplainOptionArgContext explainOptionArg() throws RecognitionException {
		ExplainOptionArgContext _localctx = new ExplainOptionArgContext(_ctx, getState());
		enterRule(_localctx, 1498, RULE_explainOptionArg);
		try {
			setState(10219);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case UNICODE_ESCAPE:
			case INSERT:
			case UPDATE:
			case DELETE:
			case ALTER:
			case DROP:
			case TRUNCATE:
			case SCHEMA:
			case REVOKE:
			case ADD:
			case SET:
			case INDEX:
			case KEY:
			case POSITION:
			case PRECISION:
			case FUNCTION:
			case TRIGGER:
			case PROCEDURE:
			case VIEW:
			case VALUES:
			case TRIM:
			case SUBSTRING:
			case NATURAL:
			case JOIN:
			case FULL:
			case INNER:
			case OUTER:
			case LEFT:
			case RIGHT:
			case CROSS:
			case ON:
			case IF:
			case IS:
			case TRUE:
			case FALSE:
			case EXISTS:
			case BETWEEN:
			case LIKE:
			case BY:
			case BEGIN:
			case COMMIT:
			case ROLLBACK:
			case SAVEPOINT:
			case BOOLEAN:
			case DOUBLE:
			case CHAR:
			case CHARACTER:
			case INTERVAL:
			case TIME:
			case TIMESTAMP:
			case YEAR:
			case MONTH:
			case DAY:
			case HOUR:
			case MINUTE:
			case SECOND:
			case CURRENT:
			case ENABLE:
			case DISABLE:
			case CALL:
			case PRESERVE:
			case DEFINER:
			case SQL:
			case CASCADED:
			case LOCAL:
			case CLOSE:
			case NEXT:
			case NAME:
			case COLLATION:
			case NAMES:
			case INTEGER:
			case REAL:
			case DECIMAL:
			case TYPE:
			case SMALLINT:
			case BIGINT:
			case NUMERIC:
			case TEXT:
			case REPEATABLE:
			case NULLIF:
			case VARYING:
			case NATIONAL:
			case NCHAR:
			case VALUE:
			case COALESCE:
			case TIES:
			case CUBE:
			case GROUPING:
			case SETS:
			case OTHERS:
			case OVERLAPS:
			case AT:
			case DEC:
			case MAXVALUE:
			case ADMIN:
			case BINARY:
			case ESCAPE:
			case EXCLUDE:
			case MOD:
			case PARTITION:
			case ROW:
			case UNKNOWN:
			case ALWAYS:
			case CASCADE:
			case GENERATED:
			case ISOLATION:
			case LEVEL:
			case NO:
			case OPTION:
			case PRIVILEGES:
			case READ:
			case ROLE:
			case ROWS:
			case START:
			case TRANSACTION:
			case ACTION:
			case CACHE:
			case CHARACTERISTICS:
			case CLUSTER:
			case COMMENTS:
			case CONCURRENTLY:
			case CONSTRAINTS:
			case CYCLE:
			case DATA:
			case DATABASE:
			case DEFAULTS:
			case DEFERRED:
			case DEPENDS:
			case DOMAIN:
			case EXCLUDING:
			case EXECUTE:
			case EXTENDED:
			case EXTENSION:
			case EXTERNAL:
			case EXTRACT:
			case FILTER:
			case FIRST:
			case FOLLOWING:
			case FORCE:
			case GLOBAL:
			case IDENTITY:
			case IMMEDIATE:
			case INCLUDING:
			case INCREMENT:
			case INDEXES:
			case INHERIT:
			case INHERITS:
			case INCLUDE:
			case LANGUAGE:
			case LARGE:
			case LAST:
			case LOGGED:
			case MAIN:
			case MATCH:
			case MINVALUE:
			case NOTHING:
			case NULLS:
			case OBJECT:
			case OIDS:
			case OVER:
			case OWNED:
			case OWNER:
			case PARTIAL:
			case PLAIN:
			case PRECEDING:
			case RANGE:
			case RENAME:
			case REPLICA:
			case RESET:
			case RESTART:
			case RESTRICT:
			case ROUTINE:
			case RULE:
			case SECURITY:
			case SEQUENCE:
			case SESSION:
			case SHOW:
			case SIMPLE:
			case STATISTICS:
			case STORAGE:
			case TABLESPACE:
			case TEMP:
			case TEMPORARY:
			case UNBOUNDED:
			case UNLOGGED:
			case VALID:
			case VALIDATE:
			case WITHIN:
			case WITHOUT:
			case ZONE:
			case OF:
			case UESCAPE:
			case GROUPS:
			case RECURSIVE:
			case INT:
			case INT2:
			case INT4:
			case FLOAT:
			case FLOAT4:
			case VARCHAR:
			case BYTEA:
			case ENUM:
			case POINT:
			case LSEG:
			case BOX:
			case PATH:
			case POLYGON:
			case CIRCLE:
			case INET:
			case BIT:
			case TSQUERY:
			case XML:
			case JSON:
			case INT4RANGE:
			case INT8RANGE:
			case NUMRANGE:
			case DATERANGE:
			case TABLESAMPLE:
			case ORDINALITY:
			case CURRENT_SCHEMA:
			case OVERLAY:
			case XMLCONCAT:
			case XMLELEMENT:
			case XMLEXISTS:
			case XMLFOREST:
			case XMLPARSE:
			case XMLPI:
			case XMLROOT:
			case XMLSERIALIZE:
			case TREAT:
			case SETOF:
			case NFC:
			case NFD:
			case NFKC:
			case NFKD:
			case XMLATTRIBUTES:
			case REF:
			case PASSING:
			case VERSION:
			case YES:
			case STANDALONE:
			case GREATEST:
			case LEAST:
			case MATERIALIZED:
			case OPERATOR:
			case SHARE:
			case ROLLUP:
			case ILIKE:
			case SIMILAR:
			case ISNULL:
			case NOTNULL:
			case DOCUMENT:
			case NORMALIZED:
			case NOWAIT:
			case LOCKED:
			case XMLTABLE:
			case COLUMNS:
			case CONTENT:
			case STRIP:
			case WHITESPACE:
			case XMLNAMESPACES:
			case NONE:
			case CONFLICT:
			case OVERRIDING:
			case SYSTEM:
			case ABORT:
			case ABSOLUTE:
			case ACCESS:
			case AFTER:
			case AGGREGATE:
			case ALSO:
			case ATTACH:
			case ATTRIBUTE:
			case BACKWARD:
			case BEFORE:
			case ASSERTION:
			case ASSIGNMENT:
			case CONTINUE:
			case CONVERSION:
			case COPY:
			case COST:
			case CSV:
			case CALLED:
			case CATALOG:
			case CHAIN:
			case CHECKPOINT:
			case CLASS:
			case CONFIGURATION:
			case COMMENT:
			case DETACH:
			case DICTIONARY:
			case EXPRESSION:
			case INSENSITIVE:
			case DISCARD:
			case OFF:
			case INSTEAD:
			case EXPLAIN:
			case INPUT:
			case INLINE:
			case PARALLEL:
			case LEAKPROOF:
			case COMMITTED:
			case ENCODING:
			case IMPLICIT:
			case DELIMITER:
			case CURSOR:
			case EACH:
			case EVENT:
			case DEALLOCATE:
			case CONNECTION:
			case DECLARE:
			case FAMILY:
			case FORWARD:
			case EXCLUSIVE:
			case FUNCTIONS:
			case LOCATION:
			case LABEL:
			case DELIMITERS:
			case HANDLER:
			case HEADER:
			case IMMUTABLE:
			case GRANTED:
			case HOLD:
			case MAPPING:
			case OLD:
			case METHOD:
			case LOAD:
			case LISTEN:
			case MODE:
			case MOVE:
			case PROCEDURAL:
			case PARSER:
			case PROCEDURES:
			case ENCRYPTED:
			case PUBLICATION:
			case PROGRAM:
			case REFERENCING:
			case PLANS:
			case REINDEX:
			case PRIOR:
			case PASSWORD:
			case RELATIVE:
			case QUOTE:
			case ROUTINES:
			case REPLACE:
			case SNAPSHOT:
			case REFRESH:
			case PREPARE:
			case OPTIONS:
			case IMPORT:
			case INVOKER:
			case NEW:
			case PREPARED:
			case SCROLL:
			case SEQUENCES:
			case SYSID:
			case REASSIGN:
			case SERVER:
			case SUBSCRIPTION:
			case SEARCH:
			case SCHEMAS:
			case RECHECK:
			case POLICY:
			case NOTIFY:
			case LOCK:
			case RELEASE:
			case SERIALIZABLE:
			case RETURNS:
			case STATEMENT:
			case STDIN:
			case STDOUT:
			case TABLES:
			case SUPPORT:
			case STABLE:
			case TEMPLATE:
			case UNENCRYPTED:
			case VIEWS:
			case UNCOMMITTED:
			case TRANSFORM:
			case UNLISTEN:
			case TRUSTED:
			case VALIDATOR:
			case UNTIL:
			case VACUUM:
			case VOLATILE:
			case STORED:
			case WRITE:
			case STRICT:
			case TYPES:
			case WRAPPER:
			case WORK:
			case FREEZE:
			case AUTHORIZATION:
			case VERBOSE:
			case OUT:
			case INOUT:
			case INT16:
			case INT1:
			case ELEM_CONTAINED_BY_RANGE:
			case IDENTIFIER_:
			case STRING_:
				enterOuterAlt(_localctx, 1);
				{
				setState(10217);
				booleanOrString();
				}
				break;
			case PLUS_:
			case MINUS_:
			case NUMBER_:
				enterOuterAlt(_localctx, 2);
				{
				setState(10218);
				numericOnly();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ExplainOptionNameContext extends ParserRuleContext {
		public NonReservedWordContext nonReservedWord() {
			return getRuleContext(NonReservedWordContext.class,0);
		}
		public AnalyzeKeywordContext analyzeKeyword() {
			return getRuleContext(AnalyzeKeywordContext.class,0);
		}
		public ExplainOptionNameContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_explainOptionName; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitExplainOptionName(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ExplainOptionNameContext explainOptionName() throws RecognitionException {
		ExplainOptionNameContext _localctx = new ExplainOptionNameContext(_ctx, getState());
		enterRule(_localctx, 1500, RULE_explainOptionName);
		try {
			setState(10223);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case UNICODE_ESCAPE:
			case INSERT:
			case UPDATE:
			case DELETE:
			case ALTER:
			case DROP:
			case TRUNCATE:
			case SCHEMA:
			case REVOKE:
			case ADD:
			case SET:
			case INDEX:
			case KEY:
			case POSITION:
			case PRECISION:
			case FUNCTION:
			case TRIGGER:
			case PROCEDURE:
			case VIEW:
			case VALUES:
			case TRIM:
			case SUBSTRING:
			case NATURAL:
			case JOIN:
			case FULL:
			case INNER:
			case OUTER:
			case LEFT:
			case RIGHT:
			case CROSS:
			case IF:
			case IS:
			case EXISTS:
			case BETWEEN:
			case LIKE:
			case BY:
			case BEGIN:
			case COMMIT:
			case ROLLBACK:
			case SAVEPOINT:
			case BOOLEAN:
			case DOUBLE:
			case CHAR:
			case CHARACTER:
			case INTERVAL:
			case TIME:
			case TIMESTAMP:
			case YEAR:
			case MONTH:
			case DAY:
			case HOUR:
			case MINUTE:
			case SECOND:
			case CURRENT:
			case ENABLE:
			case DISABLE:
			case CALL:
			case PRESERVE:
			case DEFINER:
			case SQL:
			case CASCADED:
			case LOCAL:
			case CLOSE:
			case NEXT:
			case NAME:
			case COLLATION:
			case NAMES:
			case INTEGER:
			case REAL:
			case DECIMAL:
			case TYPE:
			case SMALLINT:
			case BIGINT:
			case NUMERIC:
			case TEXT:
			case REPEATABLE:
			case NULLIF:
			case VARYING:
			case NATIONAL:
			case NCHAR:
			case VALUE:
			case COALESCE:
			case TIES:
			case CUBE:
			case GROUPING:
			case SETS:
			case OTHERS:
			case OVERLAPS:
			case AT:
			case DEC:
			case MAXVALUE:
			case ADMIN:
			case BINARY:
			case ESCAPE:
			case EXCLUDE:
			case MOD:
			case PARTITION:
			case ROW:
			case UNKNOWN:
			case ALWAYS:
			case CASCADE:
			case GENERATED:
			case ISOLATION:
			case LEVEL:
			case NO:
			case OPTION:
			case PRIVILEGES:
			case READ:
			case ROLE:
			case ROWS:
			case START:
			case TRANSACTION:
			case ACTION:
			case CACHE:
			case CHARACTERISTICS:
			case CLUSTER:
			case COMMENTS:
			case CONCURRENTLY:
			case CONSTRAINTS:
			case CYCLE:
			case DATA:
			case DATABASE:
			case DEFAULTS:
			case DEFERRED:
			case DEPENDS:
			case DOMAIN:
			case EXCLUDING:
			case EXECUTE:
			case EXTENDED:
			case EXTENSION:
			case EXTERNAL:
			case EXTRACT:
			case FILTER:
			case FIRST:
			case FOLLOWING:
			case FORCE:
			case GLOBAL:
			case IDENTITY:
			case IMMEDIATE:
			case INCLUDING:
			case INCREMENT:
			case INDEXES:
			case INHERIT:
			case INHERITS:
			case INCLUDE:
			case LANGUAGE:
			case LARGE:
			case LAST:
			case LOGGED:
			case MAIN:
			case MATCH:
			case MINVALUE:
			case NOTHING:
			case NULLS:
			case OBJECT:
			case OIDS:
			case OVER:
			case OWNED:
			case OWNER:
			case PARTIAL:
			case PLAIN:
			case PRECEDING:
			case RANGE:
			case RENAME:
			case REPLICA:
			case RESET:
			case RESTART:
			case RESTRICT:
			case ROUTINE:
			case RULE:
			case SECURITY:
			case SEQUENCE:
			case SESSION:
			case SHOW:
			case SIMPLE:
			case STATISTICS:
			case STORAGE:
			case TABLESPACE:
			case TEMP:
			case TEMPORARY:
			case UNBOUNDED:
			case UNLOGGED:
			case VALID:
			case VALIDATE:
			case WITHIN:
			case WITHOUT:
			case ZONE:
			case OF:
			case UESCAPE:
			case GROUPS:
			case RECURSIVE:
			case INT:
			case INT2:
			case INT4:
			case FLOAT:
			case FLOAT4:
			case VARCHAR:
			case BYTEA:
			case ENUM:
			case POINT:
			case LSEG:
			case BOX:
			case PATH:
			case POLYGON:
			case CIRCLE:
			case INET:
			case BIT:
			case TSQUERY:
			case XML:
			case JSON:
			case INT4RANGE:
			case INT8RANGE:
			case NUMRANGE:
			case DATERANGE:
			case TABLESAMPLE:
			case ORDINALITY:
			case CURRENT_SCHEMA:
			case OVERLAY:
			case XMLCONCAT:
			case XMLELEMENT:
			case XMLEXISTS:
			case XMLFOREST:
			case XMLPARSE:
			case XMLPI:
			case XMLROOT:
			case XMLSERIALIZE:
			case TREAT:
			case SETOF:
			case NFC:
			case NFD:
			case NFKC:
			case NFKD:
			case XMLATTRIBUTES:
			case REF:
			case PASSING:
			case VERSION:
			case YES:
			case STANDALONE:
			case GREATEST:
			case LEAST:
			case MATERIALIZED:
			case OPERATOR:
			case SHARE:
			case ROLLUP:
			case ILIKE:
			case SIMILAR:
			case ISNULL:
			case NOTNULL:
			case DOCUMENT:
			case NORMALIZED:
			case NOWAIT:
			case LOCKED:
			case XMLTABLE:
			case COLUMNS:
			case CONTENT:
			case STRIP:
			case WHITESPACE:
			case XMLNAMESPACES:
			case NONE:
			case CONFLICT:
			case OVERRIDING:
			case SYSTEM:
			case ABORT:
			case ABSOLUTE:
			case ACCESS:
			case AFTER:
			case AGGREGATE:
			case ALSO:
			case ATTACH:
			case ATTRIBUTE:
			case BACKWARD:
			case BEFORE:
			case ASSERTION:
			case ASSIGNMENT:
			case CONTINUE:
			case CONVERSION:
			case COPY:
			case COST:
			case CSV:
			case CALLED:
			case CATALOG:
			case CHAIN:
			case CHECKPOINT:
			case CLASS:
			case CONFIGURATION:
			case COMMENT:
			case DETACH:
			case DICTIONARY:
			case EXPRESSION:
			case INSENSITIVE:
			case DISCARD:
			case OFF:
			case INSTEAD:
			case EXPLAIN:
			case INPUT:
			case INLINE:
			case PARALLEL:
			case LEAKPROOF:
			case COMMITTED:
			case ENCODING:
			case IMPLICIT:
			case DELIMITER:
			case CURSOR:
			case EACH:
			case EVENT:
			case DEALLOCATE:
			case CONNECTION:
			case DECLARE:
			case FAMILY:
			case FORWARD:
			case EXCLUSIVE:
			case FUNCTIONS:
			case LOCATION:
			case LABEL:
			case DELIMITERS:
			case HANDLER:
			case HEADER:
			case IMMUTABLE:
			case GRANTED:
			case HOLD:
			case MAPPING:
			case OLD:
			case METHOD:
			case LOAD:
			case LISTEN:
			case MODE:
			case MOVE:
			case PROCEDURAL:
			case PARSER:
			case PROCEDURES:
			case ENCRYPTED:
			case PUBLICATION:
			case PROGRAM:
			case REFERENCING:
			case PLANS:
			case REINDEX:
			case PRIOR:
			case PASSWORD:
			case RELATIVE:
			case QUOTE:
			case ROUTINES:
			case REPLACE:
			case SNAPSHOT:
			case REFRESH:
			case PREPARE:
			case OPTIONS:
			case IMPORT:
			case INVOKER:
			case NEW:
			case PREPARED:
			case SCROLL:
			case SEQUENCES:
			case SYSID:
			case REASSIGN:
			case SERVER:
			case SUBSCRIPTION:
			case SEARCH:
			case SCHEMAS:
			case RECHECK:
			case POLICY:
			case NOTIFY:
			case LOCK:
			case RELEASE:
			case SERIALIZABLE:
			case RETURNS:
			case STATEMENT:
			case STDIN:
			case STDOUT:
			case TABLES:
			case SUPPORT:
			case STABLE:
			case TEMPLATE:
			case UNENCRYPTED:
			case VIEWS:
			case UNCOMMITTED:
			case TRANSFORM:
			case UNLISTEN:
			case TRUSTED:
			case VALIDATOR:
			case UNTIL:
			case VACUUM:
			case VOLATILE:
			case STORED:
			case WRITE:
			case STRICT:
			case TYPES:
			case WRAPPER:
			case WORK:
			case FREEZE:
			case AUTHORIZATION:
			case VERBOSE:
			case OUT:
			case INOUT:
			case INT16:
			case INT1:
			case ELEM_CONTAINED_BY_RANGE:
			case IDENTIFIER_:
				enterOuterAlt(_localctx, 1);
				{
				setState(10221);
				nonReservedWord();
				}
				break;
			case ANALYSE:
			case ANALYZE:
				enterOuterAlt(_localctx, 2);
				{
				setState(10222);
				analyzeKeyword();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AnalyzeKeywordContext extends ParserRuleContext {
		public TerminalNode ANALYZE() { return getToken(OpenGaussStatementParser.ANALYZE, 0); }
		public TerminalNode ANALYSE() { return getToken(OpenGaussStatementParser.ANALYSE, 0); }
		public AnalyzeKeywordContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_analyzeKeyword; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitAnalyzeKeyword(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AnalyzeKeywordContext analyzeKeyword() throws RecognitionException {
		AnalyzeKeywordContext _localctx = new AnalyzeKeywordContext(_ctx, getState());
		enterRule(_localctx, 1502, RULE_analyzeKeyword);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(10225);
			_la = _input.LA(1);
			if ( !(_la==ANALYSE || _la==ANALYZE) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AnalyzeTableContext extends ParserRuleContext {
		public AnalyzeKeywordContext analyzeKeyword() {
			return getRuleContext(AnalyzeKeywordContext.class,0);
		}
		public TerminalNode LP_() { return getToken(OpenGaussStatementParser.LP_, 0); }
		public VacAnalyzeOptionListContext vacAnalyzeOptionList() {
			return getRuleContext(VacAnalyzeOptionListContext.class,0);
		}
		public TerminalNode RP_() { return getToken(OpenGaussStatementParser.RP_, 0); }
		public VacuumRelationListContext vacuumRelationList() {
			return getRuleContext(VacuumRelationListContext.class,0);
		}
		public TerminalNode VERBOSE() { return getToken(OpenGaussStatementParser.VERBOSE, 0); }
		public AnalyzeTableContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_analyzeTable; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitAnalyzeTable(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AnalyzeTableContext analyzeTable() throws RecognitionException {
		AnalyzeTableContext _localctx = new AnalyzeTableContext(_ctx, getState());
		enterRule(_localctx, 1504, RULE_analyzeTable);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(10227);
			analyzeKeyword();
			setState(10235);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case EOF:
			case SEMI_:
			case UNICODE_ESCAPE:
			case INSERT:
			case UPDATE:
			case DELETE:
			case ALTER:
			case DROP:
			case TRUNCATE:
			case SCHEMA:
			case REVOKE:
			case ADD:
			case SET:
			case INDEX:
			case KEY:
			case POSITION:
			case FUNCTION:
			case TRIGGER:
			case PROCEDURE:
			case VIEW:
			case IF:
			case BY:
			case BEGIN:
			case COMMIT:
			case ROLLBACK:
			case SAVEPOINT:
			case DOUBLE:
			case INTERVAL:
			case TIME:
			case TIMESTAMP:
			case YEAR:
			case MONTH:
			case DAY:
			case HOUR:
			case MINUTE:
			case SECOND:
			case CURRENT:
			case ENABLE:
			case DISABLE:
			case CALL:
			case PRESERVE:
			case DEFINER:
			case SQL:
			case CASCADED:
			case LOCAL:
			case CLOSE:
			case NEXT:
			case NAME:
			case NAMES:
			case TYPE:
			case TEXT:
			case REPEATABLE:
			case VARYING:
			case NATIONAL:
			case VALUE:
			case TIES:
			case CUBE:
			case SETS:
			case OTHERS:
			case AT:
			case MAXVALUE:
			case ADMIN:
			case ESCAPE:
			case EXCLUDE:
			case MOD:
			case PARTITION:
			case UNKNOWN:
			case ALWAYS:
			case CASCADE:
			case GENERATED:
			case ISOLATION:
			case LEVEL:
			case NO:
			case OPTION:
			case PRIVILEGES:
			case READ:
			case ROLE:
			case ROWS:
			case START:
			case TRANSACTION:
			case ACTION:
			case CACHE:
			case CHARACTERISTICS:
			case CLUSTER:
			case COMMENTS:
			case CONSTRAINTS:
			case CYCLE:
			case DATA:
			case DATABASE:
			case DEFAULTS:
			case DEFERRED:
			case DEPENDS:
			case DOMAIN:
			case EXCLUDING:
			case EXECUTE:
			case EXTENDED:
			case EXTENSION:
			case EXTERNAL:
			case FILTER:
			case FIRST:
			case FOLLOWING:
			case FORCE:
			case GLOBAL:
			case IDENTITY:
			case IMMEDIATE:
			case INCLUDING:
			case INCREMENT:
			case INDEXES:
			case INHERIT:
			case INHERITS:
			case INCLUDE:
			case LANGUAGE:
			case LARGE:
			case LAST:
			case LOGGED:
			case MAIN:
			case MATCH:
			case MINVALUE:
			case NOTHING:
			case NULLS:
			case OBJECT:
			case OIDS:
			case OVER:
			case OWNED:
			case OWNER:
			case PARTIAL:
			case PLAIN:
			case PRECEDING:
			case RANGE:
			case RENAME:
			case REPLICA:
			case RESET:
			case RESTART:
			case RESTRICT:
			case ROUTINE:
			case RULE:
			case SECURITY:
			case SEQUENCE:
			case SESSION:
			case SHOW:
			case SIMPLE:
			case STATISTICS:
			case STORAGE:
			case TABLESPACE:
			case TEMP:
			case TEMPORARY:
			case UNBOUNDED:
			case UNLOGGED:
			case VALID:
			case VALIDATE:
			case WITHIN:
			case WITHOUT:
			case ZONE:
			case OF:
			case UESCAPE:
			case GROUPS:
			case RECURSIVE:
			case INT2:
			case INT4:
			case FLOAT4:
			case BYTEA:
			case ENUM:
			case POINT:
			case LSEG:
			case BOX:
			case PATH:
			case POLYGON:
			case CIRCLE:
			case INET:
			case TSQUERY:
			case XML:
			case JSON:
			case INT4RANGE:
			case INT8RANGE:
			case NUMRANGE:
			case DATERANGE:
			case ORDINALITY:
			case NFC:
			case NFD:
			case NFKC:
			case NFKD:
			case REF:
			case PASSING:
			case VERSION:
			case YES:
			case STANDALONE:
			case MATERIALIZED:
			case OPERATOR:
			case SHARE:
			case ROLLUP:
			case DOCUMENT:
			case NORMALIZED:
			case NOWAIT:
			case LOCKED:
			case COLUMNS:
			case CONTENT:
			case STRIP:
			case WHITESPACE:
			case CONFLICT:
			case OVERRIDING:
			case SYSTEM:
			case ABORT:
			case ABSOLUTE:
			case ACCESS:
			case AFTER:
			case AGGREGATE:
			case ALSO:
			case ATTACH:
			case ATTRIBUTE:
			case BACKWARD:
			case BEFORE:
			case ASSERTION:
			case ASSIGNMENT:
			case CONTINUE:
			case CONVERSION:
			case COPY:
			case COST:
			case CSV:
			case CALLED:
			case CATALOG:
			case CHAIN:
			case CHECKPOINT:
			case CLASS:
			case CONFIGURATION:
			case COMMENT:
			case DETACH:
			case DICTIONARY:
			case EXPRESSION:
			case INSENSITIVE:
			case DISCARD:
			case OFF:
			case INSTEAD:
			case EXPLAIN:
			case INPUT:
			case INLINE:
			case PARALLEL:
			case LEAKPROOF:
			case COMMITTED:
			case ENCODING:
			case IMPLICIT:
			case DELIMITER:
			case CURSOR:
			case EACH:
			case EVENT:
			case DEALLOCATE:
			case CONNECTION:
			case DECLARE:
			case FAMILY:
			case FORWARD:
			case EXCLUSIVE:
			case FUNCTIONS:
			case LOCATION:
			case LABEL:
			case DELIMITERS:
			case HANDLER:
			case HEADER:
			case IMMUTABLE:
			case GRANTED:
			case HOLD:
			case MAPPING:
			case OLD:
			case METHOD:
			case LOAD:
			case LISTEN:
			case MODE:
			case MOVE:
			case PROCEDURAL:
			case PARSER:
			case PROCEDURES:
			case ENCRYPTED:
			case PUBLICATION:
			case PROGRAM:
			case REFERENCING:
			case PLANS:
			case REINDEX:
			case PRIOR:
			case PASSWORD:
			case RELATIVE:
			case QUOTE:
			case ROUTINES:
			case REPLACE:
			case SNAPSHOT:
			case REFRESH:
			case PREPARE:
			case OPTIONS:
			case IMPORT:
			case INVOKER:
			case NEW:
			case PREPARED:
			case SCROLL:
			case SEQUENCES:
			case SYSID:
			case REASSIGN:
			case SERVER:
			case SUBSCRIPTION:
			case SEARCH:
			case SCHEMAS:
			case RECHECK:
			case POLICY:
			case NOTIFY:
			case LOCK:
			case RELEASE:
			case SERIALIZABLE:
			case RETURNS:
			case STATEMENT:
			case STDIN:
			case STDOUT:
			case TABLES:
			case SUPPORT:
			case STABLE:
			case TEMPLATE:
			case UNENCRYPTED:
			case VIEWS:
			case UNCOMMITTED:
			case TRANSFORM:
			case UNLISTEN:
			case TRUSTED:
			case VALIDATOR:
			case UNTIL:
			case VACUUM:
			case VOLATILE:
			case STORED:
			case WRITE:
			case STRICT:
			case TYPES:
			case WRAPPER:
			case WORK:
			case VERBOSE:
			case INT16:
			case INT1:
			case ELEM_CONTAINED_BY_RANGE:
			case IDENTIFIER_:
				{
				setState(10229);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==VERBOSE) {
					{
					setState(10228);
					match(VERBOSE);
					}
				}

				}
				break;
			case LP_:
				{
				setState(10231);
				match(LP_);
				setState(10232);
				vacAnalyzeOptionList();
				setState(10233);
				match(RP_);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			setState(10238);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==UNICODE_ESCAPE || ((((_la - 81)) & ~0x3f) == 0 && ((1L << (_la - 81)) & ((1L << (INSERT - 81)) | (1L << (UPDATE - 81)) | (1L << (DELETE - 81)) | (1L << (ALTER - 81)) | (1L << (DROP - 81)) | (1L << (TRUNCATE - 81)) | (1L << (SCHEMA - 81)) | (1L << (REVOKE - 81)) | (1L << (ADD - 81)) | (1L << (SET - 81)) | (1L << (INDEX - 81)) | (1L << (KEY - 81)) | (1L << (POSITION - 81)) | (1L << (FUNCTION - 81)) | (1L << (TRIGGER - 81)) | (1L << (PROCEDURE - 81)) | (1L << (VIEW - 81)) | (1L << (IF - 81)))) != 0) || ((((_la - 151)) & ~0x3f) == 0 && ((1L << (_la - 151)) & ((1L << (BY - 151)) | (1L << (BEGIN - 151)) | (1L << (COMMIT - 151)) | (1L << (ROLLBACK - 151)) | (1L << (SAVEPOINT - 151)) | (1L << (DOUBLE - 151)) | (1L << (INTERVAL - 151)) | (1L << (TIME - 151)) | (1L << (TIMESTAMP - 151)) | (1L << (YEAR - 151)) | (1L << (MONTH - 151)) | (1L << (DAY - 151)) | (1L << (HOUR - 151)) | (1L << (MINUTE - 151)) | (1L << (SECOND - 151)) | (1L << (CURRENT - 151)) | (1L << (ENABLE - 151)) | (1L << (DISABLE - 151)) | (1L << (CALL - 151)) | (1L << (PRESERVE - 151)) | (1L << (DEFINER - 151)) | (1L << (SQL - 151)) | (1L << (CASCADED - 151)) | (1L << (LOCAL - 151)) | (1L << (CLOSE - 151)) | (1L << (NEXT - 151)) | (1L << (NAME - 151)) | (1L << (NAMES - 151)) | (1L << (TYPE - 151)) | (1L << (TEXT - 151)) | (1L << (REPEATABLE - 151)) | (1L << (VARYING - 151)) | (1L << (NATIONAL - 151)))) != 0) || ((((_la - 216)) & ~0x3f) == 0 && ((1L << (_la - 216)) & ((1L << (VALUE - 216)) | (1L << (TIES - 216)) | (1L << (CUBE - 216)) | (1L << (SETS - 216)) | (1L << (OTHERS - 216)) | (1L << (AT - 216)) | (1L << (MAXVALUE - 216)) | (1L << (ADMIN - 216)) | (1L << (ESCAPE - 216)) | (1L << (EXCLUDE - 216)) | (1L << (MOD - 216)) | (1L << (PARTITION - 216)) | (1L << (UNKNOWN - 216)) | (1L << (ALWAYS - 216)) | (1L << (CASCADE - 216)) | (1L << (GENERATED - 216)) | (1L << (ISOLATION - 216)) | (1L << (LEVEL - 216)) | (1L << (NO - 216)) | (1L << (OPTION - 216)) | (1L << (PRIVILEGES - 216)) | (1L << (READ - 216)) | (1L << (ROLE - 216)) | (1L << (ROWS - 216)) | (1L << (START - 216)) | (1L << (TRANSACTION - 216)) | (1L << (ACTION - 216)) | (1L << (CACHE - 216)) | (1L << (CHARACTERISTICS - 216)) | (1L << (CLUSTER - 216)) | (1L << (COMMENTS - 216)) | (1L << (CONSTRAINTS - 216)) | (1L << (CYCLE - 216)) | (1L << (DATA - 216)) | (1L << (DATABASE - 216)) | (1L << (DEFAULTS - 216)) | (1L << (DEFERRED - 216)))) != 0) || ((((_la - 280)) & ~0x3f) == 0 && ((1L << (_la - 280)) & ((1L << (DEPENDS - 280)) | (1L << (DOMAIN - 280)) | (1L << (EXCLUDING - 280)) | (1L << (EXECUTE - 280)) | (1L << (EXTENDED - 280)) | (1L << (EXTENSION - 280)) | (1L << (EXTERNAL - 280)) | (1L << (FILTER - 280)) | (1L << (FIRST - 280)) | (1L << (FOLLOWING - 280)) | (1L << (FORCE - 280)) | (1L << (GLOBAL - 280)) | (1L << (IDENTITY - 280)) | (1L << (IMMEDIATE - 280)) | (1L << (INCLUDING - 280)) | (1L << (INCREMENT - 280)) | (1L << (INDEXES - 280)) | (1L << (INHERIT - 280)) | (1L << (INHERITS - 280)) | (1L << (INCLUDE - 280)) | (1L << (LANGUAGE - 280)) | (1L << (LARGE - 280)) | (1L << (LAST - 280)) | (1L << (LOGGED - 280)) | (1L << (MAIN - 280)) | (1L << (MATCH - 280)) | (1L << (MINVALUE - 280)) | (1L << (NOTHING - 280)) | (1L << (NULLS - 280)) | (1L << (OBJECT - 280)) | (1L << (OIDS - 280)) | (1L << (OVER - 280)) | (1L << (OWNED - 280)) | (1L << (OWNER - 280)) | (1L << (PARTIAL - 280)) | (1L << (PLAIN - 280)) | (1L << (PRECEDING - 280)) | (1L << (RANGE - 280)) | (1L << (RENAME - 280)) | (1L << (REPLICA - 280)) | (1L << (RESET - 280)) | (1L << (RESTART - 280)) | (1L << (RESTRICT - 280)) | (1L << (ROUTINE - 280)) | (1L << (RULE - 280)) | (1L << (SECURITY - 280)) | (1L << (SEQUENCE - 280)) | (1L << (SESSION - 280)) | (1L << (SHOW - 280)) | (1L << (SIMPLE - 280)) | (1L << (STATISTICS - 280)) | (1L << (STORAGE - 280)) | (1L << (TABLESPACE - 280)) | (1L << (TEMP - 280)) | (1L << (TEMPORARY - 280)) | (1L << (UNBOUNDED - 280)) | (1L << (UNLOGGED - 280)) | (1L << (VALID - 280)))) != 0) || ((((_la - 344)) & ~0x3f) == 0 && ((1L << (_la - 344)) & ((1L << (VALIDATE - 344)) | (1L << (WITHIN - 344)) | (1L << (WITHOUT - 344)) | (1L << (ZONE - 344)) | (1L << (OF - 344)) | (1L << (UESCAPE - 344)) | (1L << (GROUPS - 344)) | (1L << (RECURSIVE - 344)) | (1L << (INT2 - 344)) | (1L << (INT4 - 344)) | (1L << (FLOAT4 - 344)) | (1L << (BYTEA - 344)) | (1L << (ENUM - 344)) | (1L << (POINT - 344)) | (1L << (LSEG - 344)) | (1L << (BOX - 344)) | (1L << (PATH - 344)) | (1L << (POLYGON - 344)) | (1L << (CIRCLE - 344)) | (1L << (INET - 344)) | (1L << (TSQUERY - 344)) | (1L << (XML - 344)) | (1L << (JSON - 344)) | (1L << (INT4RANGE - 344)) | (1L << (INT8RANGE - 344)) | (1L << (NUMRANGE - 344)) | (1L << (DATERANGE - 344)) | (1L << (ORDINALITY - 344)) | (1L << (NFC - 344)) | (1L << (NFD - 344)) | (1L << (NFKC - 344)))) != 0) || ((((_la - 408)) & ~0x3f) == 0 && ((1L << (_la - 408)) & ((1L << (NFKD - 408)) | (1L << (REF - 408)) | (1L << (PASSING - 408)) | (1L << (VERSION - 408)) | (1L << (YES - 408)) | (1L << (STANDALONE - 408)) | (1L << (MATERIALIZED - 408)) | (1L << (OPERATOR - 408)) | (1L << (SHARE - 408)) | (1L << (ROLLUP - 408)) | (1L << (DOCUMENT - 408)) | (1L << (NORMALIZED - 408)) | (1L << (NOWAIT - 408)) | (1L << (LOCKED - 408)) | (1L << (COLUMNS - 408)) | (1L << (CONTENT - 408)) | (1L << (STRIP - 408)) | (1L << (WHITESPACE - 408)) | (1L << (CONFLICT - 408)) | (1L << (OVERRIDING - 408)) | (1L << (SYSTEM - 408)) | (1L << (ABORT - 408)) | (1L << (ABSOLUTE - 408)) | (1L << (ACCESS - 408)) | (1L << (AFTER - 408)) | (1L << (AGGREGATE - 408)) | (1L << (ALSO - 408)) | (1L << (ATTACH - 408)) | (1L << (ATTRIBUTE - 408)) | (1L << (BACKWARD - 408)) | (1L << (BEFORE - 408)) | (1L << (ASSERTION - 408)) | (1L << (ASSIGNMENT - 408)) | (1L << (CONTINUE - 408)) | (1L << (CONVERSION - 408)) | (1L << (COPY - 408)) | (1L << (COST - 408)) | (1L << (CSV - 408)) | (1L << (CALLED - 408)) | (1L << (CATALOG - 408)) | (1L << (CHAIN - 408)) | (1L << (CHECKPOINT - 408)) | (1L << (CLASS - 408)) | (1L << (CONFIGURATION - 408)) | (1L << (COMMENT - 408)) | (1L << (DETACH - 408)))) != 0) || ((((_la - 472)) & ~0x3f) == 0 && ((1L << (_la - 472)) & ((1L << (DICTIONARY - 472)) | (1L << (EXPRESSION - 472)) | (1L << (INSENSITIVE - 472)) | (1L << (DISCARD - 472)) | (1L << (OFF - 472)) | (1L << (INSTEAD - 472)) | (1L << (EXPLAIN - 472)) | (1L << (INPUT - 472)) | (1L << (INLINE - 472)) | (1L << (PARALLEL - 472)) | (1L << (LEAKPROOF - 472)) | (1L << (COMMITTED - 472)) | (1L << (ENCODING - 472)) | (1L << (IMPLICIT - 472)) | (1L << (DELIMITER - 472)) | (1L << (CURSOR - 472)) | (1L << (EACH - 472)) | (1L << (EVENT - 472)) | (1L << (DEALLOCATE - 472)) | (1L << (CONNECTION - 472)) | (1L << (DECLARE - 472)) | (1L << (FAMILY - 472)) | (1L << (FORWARD - 472)) | (1L << (EXCLUSIVE - 472)) | (1L << (FUNCTIONS - 472)) | (1L << (LOCATION - 472)) | (1L << (LABEL - 472)) | (1L << (DELIMITERS - 472)) | (1L << (HANDLER - 472)) | (1L << (HEADER - 472)) | (1L << (IMMUTABLE - 472)) | (1L << (GRANTED - 472)) | (1L << (HOLD - 472)) | (1L << (MAPPING - 472)) | (1L << (OLD - 472)) | (1L << (METHOD - 472)) | (1L << (LOAD - 472)) | (1L << (LISTEN - 472)) | (1L << (MODE - 472)) | (1L << (MOVE - 472)) | (1L << (PROCEDURAL - 472)) | (1L << (PARSER - 472)) | (1L << (PROCEDURES - 472)) | (1L << (ENCRYPTED - 472)) | (1L << (PUBLICATION - 472)) | (1L << (PROGRAM - 472)) | (1L << (REFERENCING - 472)) | (1L << (PLANS - 472)) | (1L << (REINDEX - 472)) | (1L << (PRIOR - 472)) | (1L << (PASSWORD - 472)) | (1L << (RELATIVE - 472)) | (1L << (QUOTE - 472)) | (1L << (ROUTINES - 472)) | (1L << (REPLACE - 472)) | (1L << (SNAPSHOT - 472)) | (1L << (REFRESH - 472)) | (1L << (PREPARE - 472)) | (1L << (OPTIONS - 472)) | (1L << (IMPORT - 472)) | (1L << (INVOKER - 472)) | (1L << (NEW - 472)) | (1L << (PREPARED - 472)))) != 0) || ((((_la - 536)) & ~0x3f) == 0 && ((1L << (_la - 536)) & ((1L << (SCROLL - 536)) | (1L << (SEQUENCES - 536)) | (1L << (SYSID - 536)) | (1L << (REASSIGN - 536)) | (1L << (SERVER - 536)) | (1L << (SUBSCRIPTION - 536)) | (1L << (SEARCH - 536)) | (1L << (SCHEMAS - 536)) | (1L << (RECHECK - 536)) | (1L << (POLICY - 536)) | (1L << (NOTIFY - 536)) | (1L << (LOCK - 536)) | (1L << (RELEASE - 536)) | (1L << (SERIALIZABLE - 536)) | (1L << (RETURNS - 536)) | (1L << (STATEMENT - 536)) | (1L << (STDIN - 536)) | (1L << (STDOUT - 536)) | (1L << (TABLES - 536)) | (1L << (SUPPORT - 536)) | (1L << (STABLE - 536)) | (1L << (TEMPLATE - 536)) | (1L << (UNENCRYPTED - 536)) | (1L << (VIEWS - 536)) | (1L << (UNCOMMITTED - 536)) | (1L << (TRANSFORM - 536)) | (1L << (UNLISTEN - 536)) | (1L << (TRUSTED - 536)) | (1L << (VALIDATOR - 536)) | (1L << (UNTIL - 536)) | (1L << (VACUUM - 536)) | (1L << (VOLATILE - 536)) | (1L << (STORED - 536)) | (1L << (WRITE - 536)) | (1L << (STRICT - 536)) | (1L << (TYPES - 536)) | (1L << (WRAPPER - 536)) | (1L << (WORK - 536)) | (1L << (INT16 - 536)) | (1L << (INT1 - 536)) | (1L << (ELEM_CONTAINED_BY_RANGE - 536)) | (1L << (IDENTIFIER_ - 536)))) != 0)) {
				{
				setState(10237);
				vacuumRelationList();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class VacuumRelationListContext extends ParserRuleContext {
		public List vacuumRelation() {
			return getRuleContexts(VacuumRelationContext.class);
		}
		public VacuumRelationContext vacuumRelation(int i) {
			return getRuleContext(VacuumRelationContext.class,i);
		}
		public List COMMA_() { return getTokens(OpenGaussStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(OpenGaussStatementParser.COMMA_, i);
		}
		public VacuumRelationListContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_vacuumRelationList; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitVacuumRelationList(this);
			else return visitor.visitChildren(this);
		}
	}

	public final VacuumRelationListContext vacuumRelationList() throws RecognitionException {
		VacuumRelationListContext _localctx = new VacuumRelationListContext(_ctx, getState());
		enterRule(_localctx, 1506, RULE_vacuumRelationList);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(10240);
			vacuumRelation();
			setState(10245);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA_) {
				{
				{
				setState(10241);
				match(COMMA_);
				setState(10242);
				vacuumRelation();
				}
				}
				setState(10247);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class VacuumRelationContext extends ParserRuleContext {
		public QualifiedNameContext qualifiedName() {
			return getRuleContext(QualifiedNameContext.class,0);
		}
		public OptNameListContext optNameList() {
			return getRuleContext(OptNameListContext.class,0);
		}
		public VacuumRelationContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_vacuumRelation; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitVacuumRelation(this);
			else return visitor.visitChildren(this);
		}
	}

	public final VacuumRelationContext vacuumRelation() throws RecognitionException {
		VacuumRelationContext _localctx = new VacuumRelationContext(_ctx, getState());
		enterRule(_localctx, 1508, RULE_vacuumRelation);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(10248);
			qualifiedName();
			setState(10249);
			optNameList();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class VacAnalyzeOptionListContext extends ParserRuleContext {
		public List vacAnalyzeOptionElem() {
			return getRuleContexts(VacAnalyzeOptionElemContext.class);
		}
		public VacAnalyzeOptionElemContext vacAnalyzeOptionElem(int i) {
			return getRuleContext(VacAnalyzeOptionElemContext.class,i);
		}
		public List COMMA_() { return getTokens(OpenGaussStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(OpenGaussStatementParser.COMMA_, i);
		}
		public VacAnalyzeOptionListContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_vacAnalyzeOptionList; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitVacAnalyzeOptionList(this);
			else return visitor.visitChildren(this);
		}
	}

	public final VacAnalyzeOptionListContext vacAnalyzeOptionList() throws RecognitionException {
		VacAnalyzeOptionListContext _localctx = new VacAnalyzeOptionListContext(_ctx, getState());
		enterRule(_localctx, 1510, RULE_vacAnalyzeOptionList);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(10251);
			vacAnalyzeOptionElem();
			setState(10256);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA_) {
				{
				{
				setState(10252);
				match(COMMA_);
				setState(10253);
				vacAnalyzeOptionElem();
				}
				}
				setState(10258);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class VacAnalyzeOptionElemContext extends ParserRuleContext {
		public VacAnalyzeOptionNameContext vacAnalyzeOptionName() {
			return getRuleContext(VacAnalyzeOptionNameContext.class,0);
		}
		public VacAnalyzeOptionArgContext vacAnalyzeOptionArg() {
			return getRuleContext(VacAnalyzeOptionArgContext.class,0);
		}
		public VacAnalyzeOptionElemContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_vacAnalyzeOptionElem; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitVacAnalyzeOptionElem(this);
			else return visitor.visitChildren(this);
		}
	}

	public final VacAnalyzeOptionElemContext vacAnalyzeOptionElem() throws RecognitionException {
		VacAnalyzeOptionElemContext _localctx = new VacAnalyzeOptionElemContext(_ctx, getState());
		enterRule(_localctx, 1512, RULE_vacAnalyzeOptionElem);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(10259);
			vacAnalyzeOptionName();
			setState(10261);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << PLUS_) | (1L << MINUS_) | (1L << UNICODE_ESCAPE))) != 0) || ((((_la - 81)) & ~0x3f) == 0 && ((1L << (_la - 81)) & ((1L << (INSERT - 81)) | (1L << (UPDATE - 81)) | (1L << (DELETE - 81)) | (1L << (ALTER - 81)) | (1L << (DROP - 81)) | (1L << (TRUNCATE - 81)) | (1L << (SCHEMA - 81)) | (1L << (REVOKE - 81)) | (1L << (ADD - 81)) | (1L << (SET - 81)) | (1L << (INDEX - 81)) | (1L << (KEY - 81)) | (1L << (POSITION - 81)) | (1L << (PRECISION - 81)) | (1L << (FUNCTION - 81)) | (1L << (TRIGGER - 81)) | (1L << (PROCEDURE - 81)) | (1L << (VIEW - 81)) | (1L << (VALUES - 81)) | (1L << (TRIM - 81)) | (1L << (SUBSTRING - 81)) | (1L << (NATURAL - 81)) | (1L << (JOIN - 81)) | (1L << (FULL - 81)) | (1L << (INNER - 81)) | (1L << (OUTER - 81)) | (1L << (LEFT - 81)) | (1L << (RIGHT - 81)) | (1L << (CROSS - 81)) | (1L << (ON - 81)) | (1L << (IF - 81)) | (1L << (IS - 81)) | (1L << (TRUE - 81)) | (1L << (FALSE - 81)) | (1L << (EXISTS - 81)) | (1L << (BETWEEN - 81)))) != 0) || ((((_la - 148)) & ~0x3f) == 0 && ((1L << (_la - 148)) & ((1L << (LIKE - 148)) | (1L << (BY - 148)) | (1L << (BEGIN - 148)) | (1L << (COMMIT - 148)) | (1L << (ROLLBACK - 148)) | (1L << (SAVEPOINT - 148)) | (1L << (BOOLEAN - 148)) | (1L << (DOUBLE - 148)) | (1L << (CHAR - 148)) | (1L << (CHARACTER - 148)) | (1L << (INTERVAL - 148)) | (1L << (TIME - 148)) | (1L << (TIMESTAMP - 148)) | (1L << (YEAR - 148)) | (1L << (MONTH - 148)) | (1L << (DAY - 148)) | (1L << (HOUR - 148)) | (1L << (MINUTE - 148)) | (1L << (SECOND - 148)) | (1L << (CURRENT - 148)) | (1L << (ENABLE - 148)) | (1L << (DISABLE - 148)) | (1L << (CALL - 148)) | (1L << (PRESERVE - 148)) | (1L << (DEFINER - 148)) | (1L << (SQL - 148)) | (1L << (CASCADED - 148)) | (1L << (LOCAL - 148)) | (1L << (CLOSE - 148)) | (1L << (NEXT - 148)) | (1L << (NAME - 148)) | (1L << (COLLATION - 148)) | (1L << (NAMES - 148)) | (1L << (INTEGER - 148)) | (1L << (REAL - 148)) | (1L << (DECIMAL - 148)) | (1L << (TYPE - 148)) | (1L << (SMALLINT - 148)) | (1L << (BIGINT - 148)) | (1L << (NUMERIC - 148)) | (1L << (TEXT - 148)) | (1L << (REPEATABLE - 148)))) != 0) || ((((_la - 212)) & ~0x3f) == 0 && ((1L << (_la - 212)) & ((1L << (NULLIF - 212)) | (1L << (VARYING - 212)) | (1L << (NATIONAL - 212)) | (1L << (NCHAR - 212)) | (1L << (VALUE - 212)) | (1L << (COALESCE - 212)) | (1L << (TIES - 212)) | (1L << (CUBE - 212)) | (1L << (GROUPING - 212)) | (1L << (SETS - 212)) | (1L << (OTHERS - 212)) | (1L << (OVERLAPS - 212)) | (1L << (AT - 212)) | (1L << (DEC - 212)) | (1L << (MAXVALUE - 212)) | (1L << (ADMIN - 212)) | (1L << (BINARY - 212)) | (1L << (ESCAPE - 212)) | (1L << (EXCLUDE - 212)) | (1L << (MOD - 212)) | (1L << (PARTITION - 212)) | (1L << (ROW - 212)) | (1L << (UNKNOWN - 212)) | (1L << (ALWAYS - 212)) | (1L << (CASCADE - 212)) | (1L << (GENERATED - 212)) | (1L << (ISOLATION - 212)) | (1L << (LEVEL - 212)) | (1L << (NO - 212)) | (1L << (OPTION - 212)) | (1L << (PRIVILEGES - 212)) | (1L << (READ - 212)) | (1L << (ROLE - 212)) | (1L << (ROWS - 212)) | (1L << (START - 212)) | (1L << (TRANSACTION - 212)) | (1L << (ACTION - 212)) | (1L << (CACHE - 212)) | (1L << (CHARACTERISTICS - 212)) | (1L << (CLUSTER - 212)) | (1L << (COMMENTS - 212)) | (1L << (CONCURRENTLY - 212)) | (1L << (CONSTRAINTS - 212)) | (1L << (CYCLE - 212)) | (1L << (DATA - 212)))) != 0) || ((((_la - 276)) & ~0x3f) == 0 && ((1L << (_la - 276)) & ((1L << (DATABASE - 276)) | (1L << (DEFAULTS - 276)) | (1L << (DEFERRED - 276)) | (1L << (DEPENDS - 276)) | (1L << (DOMAIN - 276)) | (1L << (EXCLUDING - 276)) | (1L << (EXECUTE - 276)) | (1L << (EXTENDED - 276)) | (1L << (EXTENSION - 276)) | (1L << (EXTERNAL - 276)) | (1L << (EXTRACT - 276)) | (1L << (FILTER - 276)) | (1L << (FIRST - 276)) | (1L << (FOLLOWING - 276)) | (1L << (FORCE - 276)) | (1L << (GLOBAL - 276)) | (1L << (IDENTITY - 276)) | (1L << (IMMEDIATE - 276)) | (1L << (INCLUDING - 276)) | (1L << (INCREMENT - 276)) | (1L << (INDEXES - 276)) | (1L << (INHERIT - 276)) | (1L << (INHERITS - 276)) | (1L << (INCLUDE - 276)) | (1L << (LANGUAGE - 276)) | (1L << (LARGE - 276)) | (1L << (LAST - 276)) | (1L << (LOGGED - 276)) | (1L << (MAIN - 276)) | (1L << (MATCH - 276)) | (1L << (MINVALUE - 276)) | (1L << (NOTHING - 276)) | (1L << (NULLS - 276)) | (1L << (OBJECT - 276)) | (1L << (OIDS - 276)) | (1L << (OVER - 276)) | (1L << (OWNED - 276)) | (1L << (OWNER - 276)) | (1L << (PARTIAL - 276)) | (1L << (PLAIN - 276)) | (1L << (PRECEDING - 276)) | (1L << (RANGE - 276)) | (1L << (RENAME - 276)) | (1L << (REPLICA - 276)) | (1L << (RESET - 276)) | (1L << (RESTART - 276)) | (1L << (RESTRICT - 276)) | (1L << (ROUTINE - 276)) | (1L << (RULE - 276)) | (1L << (SECURITY - 276)) | (1L << (SEQUENCE - 276)) | (1L << (SESSION - 276)) | (1L << (SHOW - 276)) | (1L << (SIMPLE - 276)) | (1L << (STATISTICS - 276)) | (1L << (STORAGE - 276)) | (1L << (TABLESPACE - 276)) | (1L << (TEMP - 276)) | (1L << (TEMPORARY - 276)))) != 0) || ((((_la - 340)) & ~0x3f) == 0 && ((1L << (_la - 340)) & ((1L << (UNBOUNDED - 340)) | (1L << (UNLOGGED - 340)) | (1L << (VALID - 340)) | (1L << (VALIDATE - 340)) | (1L << (WITHIN - 340)) | (1L << (WITHOUT - 340)) | (1L << (ZONE - 340)) | (1L << (OF - 340)) | (1L << (UESCAPE - 340)) | (1L << (GROUPS - 340)) | (1L << (RECURSIVE - 340)) | (1L << (INT - 340)) | (1L << (INT2 - 340)) | (1L << (INT4 - 340)) | (1L << (FLOAT - 340)) | (1L << (FLOAT4 - 340)) | (1L << (VARCHAR - 340)) | (1L << (BYTEA - 340)) | (1L << (ENUM - 340)) | (1L << (POINT - 340)) | (1L << (LSEG - 340)) | (1L << (BOX - 340)) | (1L << (PATH - 340)) | (1L << (POLYGON - 340)) | (1L << (CIRCLE - 340)) | (1L << (INET - 340)) | (1L << (BIT - 340)) | (1L << (TSQUERY - 340)) | (1L << (XML - 340)) | (1L << (JSON - 340)) | (1L << (INT4RANGE - 340)) | (1L << (INT8RANGE - 340)) | (1L << (NUMRANGE - 340)) | (1L << (DATERANGE - 340)) | (1L << (TABLESAMPLE - 340)) | (1L << (ORDINALITY - 340)) | (1L << (CURRENT_SCHEMA - 340)) | (1L << (OVERLAY - 340)) | (1L << (XMLCONCAT - 340)) | (1L << (XMLELEMENT - 340)) | (1L << (XMLEXISTS - 340)) | (1L << (XMLFOREST - 340)) | (1L << (XMLPARSE - 340)) | (1L << (XMLPI - 340)) | (1L << (XMLROOT - 340)) | (1L << (XMLSERIALIZE - 340)) | (1L << (TREAT - 340)))) != 0) || ((((_la - 404)) & ~0x3f) == 0 && ((1L << (_la - 404)) & ((1L << (SETOF - 404)) | (1L << (NFC - 404)) | (1L << (NFD - 404)) | (1L << (NFKC - 404)) | (1L << (NFKD - 404)) | (1L << (XMLATTRIBUTES - 404)) | (1L << (REF - 404)) | (1L << (PASSING - 404)) | (1L << (VERSION - 404)) | (1L << (YES - 404)) | (1L << (STANDALONE - 404)) | (1L << (GREATEST - 404)) | (1L << (LEAST - 404)) | (1L << (MATERIALIZED - 404)) | (1L << (OPERATOR - 404)) | (1L << (SHARE - 404)) | (1L << (ROLLUP - 404)) | (1L << (ILIKE - 404)) | (1L << (SIMILAR - 404)) | (1L << (ISNULL - 404)) | (1L << (NOTNULL - 404)) | (1L << (DOCUMENT - 404)) | (1L << (NORMALIZED - 404)) | (1L << (NOWAIT - 404)) | (1L << (LOCKED - 404)) | (1L << (XMLTABLE - 404)) | (1L << (COLUMNS - 404)) | (1L << (CONTENT - 404)) | (1L << (STRIP - 404)) | (1L << (WHITESPACE - 404)) | (1L << (XMLNAMESPACES - 404)) | (1L << (NONE - 404)) | (1L << (CONFLICT - 404)) | (1L << (OVERRIDING - 404)) | (1L << (SYSTEM - 404)) | (1L << (ABORT - 404)) | (1L << (ABSOLUTE - 404)) | (1L << (ACCESS - 404)) | (1L << (AFTER - 404)) | (1L << (AGGREGATE - 404)) | (1L << (ALSO - 404)) | (1L << (ATTACH - 404)) | (1L << (ATTRIBUTE - 404)) | (1L << (BACKWARD - 404)) | (1L << (BEFORE - 404)) | (1L << (ASSERTION - 404)) | (1L << (ASSIGNMENT - 404)) | (1L << (CONTINUE - 404)) | (1L << (CONVERSION - 404)) | (1L << (COPY - 404)) | (1L << (COST - 404)) | (1L << (CSV - 404)) | (1L << (CALLED - 404)) | (1L << (CATALOG - 404)) | (1L << (CHAIN - 404)) | (1L << (CHECKPOINT - 404)))) != 0) || ((((_la - 468)) & ~0x3f) == 0 && ((1L << (_la - 468)) & ((1L << (CLASS - 468)) | (1L << (CONFIGURATION - 468)) | (1L << (COMMENT - 468)) | (1L << (DETACH - 468)) | (1L << (DICTIONARY - 468)) | (1L << (EXPRESSION - 468)) | (1L << (INSENSITIVE - 468)) | (1L << (DISCARD - 468)) | (1L << (OFF - 468)) | (1L << (INSTEAD - 468)) | (1L << (EXPLAIN - 468)) | (1L << (INPUT - 468)) | (1L << (INLINE - 468)) | (1L << (PARALLEL - 468)) | (1L << (LEAKPROOF - 468)) | (1L << (COMMITTED - 468)) | (1L << (ENCODING - 468)) | (1L << (IMPLICIT - 468)) | (1L << (DELIMITER - 468)) | (1L << (CURSOR - 468)) | (1L << (EACH - 468)) | (1L << (EVENT - 468)) | (1L << (DEALLOCATE - 468)) | (1L << (CONNECTION - 468)) | (1L << (DECLARE - 468)) | (1L << (FAMILY - 468)) | (1L << (FORWARD - 468)) | (1L << (EXCLUSIVE - 468)) | (1L << (FUNCTIONS - 468)) | (1L << (LOCATION - 468)) | (1L << (LABEL - 468)) | (1L << (DELIMITERS - 468)) | (1L << (HANDLER - 468)) | (1L << (HEADER - 468)) | (1L << (IMMUTABLE - 468)) | (1L << (GRANTED - 468)) | (1L << (HOLD - 468)) | (1L << (MAPPING - 468)) | (1L << (OLD - 468)) | (1L << (METHOD - 468)) | (1L << (LOAD - 468)) | (1L << (LISTEN - 468)) | (1L << (MODE - 468)) | (1L << (MOVE - 468)) | (1L << (PROCEDURAL - 468)) | (1L << (PARSER - 468)) | (1L << (PROCEDURES - 468)) | (1L << (ENCRYPTED - 468)) | (1L << (PUBLICATION - 468)) | (1L << (PROGRAM - 468)) | (1L << (REFERENCING - 468)) | (1L << (PLANS - 468)) | (1L << (REINDEX - 468)) | (1L << (PRIOR - 468)) | (1L << (PASSWORD - 468)) | (1L << (RELATIVE - 468)) | (1L << (QUOTE - 468)) | (1L << (ROUTINES - 468)) | (1L << (REPLACE - 468)) | (1L << (SNAPSHOT - 468)) | (1L << (REFRESH - 468)) | (1L << (PREPARE - 468)) | (1L << (OPTIONS - 468)))) != 0) || ((((_la - 532)) & ~0x3f) == 0 && ((1L << (_la - 532)) & ((1L << (IMPORT - 532)) | (1L << (INVOKER - 532)) | (1L << (NEW - 532)) | (1L << (PREPARED - 532)) | (1L << (SCROLL - 532)) | (1L << (SEQUENCES - 532)) | (1L << (SYSID - 532)) | (1L << (REASSIGN - 532)) | (1L << (SERVER - 532)) | (1L << (SUBSCRIPTION - 532)) | (1L << (SEARCH - 532)) | (1L << (SCHEMAS - 532)) | (1L << (RECHECK - 532)) | (1L << (POLICY - 532)) | (1L << (NOTIFY - 532)) | (1L << (LOCK - 532)) | (1L << (RELEASE - 532)) | (1L << (SERIALIZABLE - 532)) | (1L << (RETURNS - 532)) | (1L << (STATEMENT - 532)) | (1L << (STDIN - 532)) | (1L << (STDOUT - 532)) | (1L << (TABLES - 532)) | (1L << (SUPPORT - 532)) | (1L << (STABLE - 532)) | (1L << (TEMPLATE - 532)) | (1L << (UNENCRYPTED - 532)) | (1L << (VIEWS - 532)) | (1L << (UNCOMMITTED - 532)) | (1L << (TRANSFORM - 532)) | (1L << (UNLISTEN - 532)) | (1L << (TRUSTED - 532)) | (1L << (VALIDATOR - 532)) | (1L << (UNTIL - 532)) | (1L << (VACUUM - 532)) | (1L << (VOLATILE - 532)) | (1L << (STORED - 532)) | (1L << (WRITE - 532)) | (1L << (STRICT - 532)) | (1L << (TYPES - 532)) | (1L << (WRAPPER - 532)) | (1L << (WORK - 532)) | (1L << (FREEZE - 532)) | (1L << (AUTHORIZATION - 532)) | (1L << (VERBOSE - 532)) | (1L << (OUT - 532)) | (1L << (INOUT - 532)) | (1L << (INT16 - 532)) | (1L << (INT1 - 532)) | (1L << (ELEM_CONTAINED_BY_RANGE - 532)) | (1L << (IDENTIFIER_ - 532)))) != 0) || _la==STRING_ || _la==NUMBER_) {
				{
				setState(10260);
				vacAnalyzeOptionArg();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class VacAnalyzeOptionArgContext extends ParserRuleContext {
		public BooleanOrStringContext booleanOrString() {
			return getRuleContext(BooleanOrStringContext.class,0);
		}
		public NumericOnlyContext numericOnly() {
			return getRuleContext(NumericOnlyContext.class,0);
		}
		public VacAnalyzeOptionArgContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_vacAnalyzeOptionArg; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitVacAnalyzeOptionArg(this);
			else return visitor.visitChildren(this);
		}
	}

	public final VacAnalyzeOptionArgContext vacAnalyzeOptionArg() throws RecognitionException {
		VacAnalyzeOptionArgContext _localctx = new VacAnalyzeOptionArgContext(_ctx, getState());
		enterRule(_localctx, 1514, RULE_vacAnalyzeOptionArg);
		try {
			setState(10265);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case UNICODE_ESCAPE:
			case INSERT:
			case UPDATE:
			case DELETE:
			case ALTER:
			case DROP:
			case TRUNCATE:
			case SCHEMA:
			case REVOKE:
			case ADD:
			case SET:
			case INDEX:
			case KEY:
			case POSITION:
			case PRECISION:
			case FUNCTION:
			case TRIGGER:
			case PROCEDURE:
			case VIEW:
			case VALUES:
			case TRIM:
			case SUBSTRING:
			case NATURAL:
			case JOIN:
			case FULL:
			case INNER:
			case OUTER:
			case LEFT:
			case RIGHT:
			case CROSS:
			case ON:
			case IF:
			case IS:
			case TRUE:
			case FALSE:
			case EXISTS:
			case BETWEEN:
			case LIKE:
			case BY:
			case BEGIN:
			case COMMIT:
			case ROLLBACK:
			case SAVEPOINT:
			case BOOLEAN:
			case DOUBLE:
			case CHAR:
			case CHARACTER:
			case INTERVAL:
			case TIME:
			case TIMESTAMP:
			case YEAR:
			case MONTH:
			case DAY:
			case HOUR:
			case MINUTE:
			case SECOND:
			case CURRENT:
			case ENABLE:
			case DISABLE:
			case CALL:
			case PRESERVE:
			case DEFINER:
			case SQL:
			case CASCADED:
			case LOCAL:
			case CLOSE:
			case NEXT:
			case NAME:
			case COLLATION:
			case NAMES:
			case INTEGER:
			case REAL:
			case DECIMAL:
			case TYPE:
			case SMALLINT:
			case BIGINT:
			case NUMERIC:
			case TEXT:
			case REPEATABLE:
			case NULLIF:
			case VARYING:
			case NATIONAL:
			case NCHAR:
			case VALUE:
			case COALESCE:
			case TIES:
			case CUBE:
			case GROUPING:
			case SETS:
			case OTHERS:
			case OVERLAPS:
			case AT:
			case DEC:
			case MAXVALUE:
			case ADMIN:
			case BINARY:
			case ESCAPE:
			case EXCLUDE:
			case MOD:
			case PARTITION:
			case ROW:
			case UNKNOWN:
			case ALWAYS:
			case CASCADE:
			case GENERATED:
			case ISOLATION:
			case LEVEL:
			case NO:
			case OPTION:
			case PRIVILEGES:
			case READ:
			case ROLE:
			case ROWS:
			case START:
			case TRANSACTION:
			case ACTION:
			case CACHE:
			case CHARACTERISTICS:
			case CLUSTER:
			case COMMENTS:
			case CONCURRENTLY:
			case CONSTRAINTS:
			case CYCLE:
			case DATA:
			case DATABASE:
			case DEFAULTS:
			case DEFERRED:
			case DEPENDS:
			case DOMAIN:
			case EXCLUDING:
			case EXECUTE:
			case EXTENDED:
			case EXTENSION:
			case EXTERNAL:
			case EXTRACT:
			case FILTER:
			case FIRST:
			case FOLLOWING:
			case FORCE:
			case GLOBAL:
			case IDENTITY:
			case IMMEDIATE:
			case INCLUDING:
			case INCREMENT:
			case INDEXES:
			case INHERIT:
			case INHERITS:
			case INCLUDE:
			case LANGUAGE:
			case LARGE:
			case LAST:
			case LOGGED:
			case MAIN:
			case MATCH:
			case MINVALUE:
			case NOTHING:
			case NULLS:
			case OBJECT:
			case OIDS:
			case OVER:
			case OWNED:
			case OWNER:
			case PARTIAL:
			case PLAIN:
			case PRECEDING:
			case RANGE:
			case RENAME:
			case REPLICA:
			case RESET:
			case RESTART:
			case RESTRICT:
			case ROUTINE:
			case RULE:
			case SECURITY:
			case SEQUENCE:
			case SESSION:
			case SHOW:
			case SIMPLE:
			case STATISTICS:
			case STORAGE:
			case TABLESPACE:
			case TEMP:
			case TEMPORARY:
			case UNBOUNDED:
			case UNLOGGED:
			case VALID:
			case VALIDATE:
			case WITHIN:
			case WITHOUT:
			case ZONE:
			case OF:
			case UESCAPE:
			case GROUPS:
			case RECURSIVE:
			case INT:
			case INT2:
			case INT4:
			case FLOAT:
			case FLOAT4:
			case VARCHAR:
			case BYTEA:
			case ENUM:
			case POINT:
			case LSEG:
			case BOX:
			case PATH:
			case POLYGON:
			case CIRCLE:
			case INET:
			case BIT:
			case TSQUERY:
			case XML:
			case JSON:
			case INT4RANGE:
			case INT8RANGE:
			case NUMRANGE:
			case DATERANGE:
			case TABLESAMPLE:
			case ORDINALITY:
			case CURRENT_SCHEMA:
			case OVERLAY:
			case XMLCONCAT:
			case XMLELEMENT:
			case XMLEXISTS:
			case XMLFOREST:
			case XMLPARSE:
			case XMLPI:
			case XMLROOT:
			case XMLSERIALIZE:
			case TREAT:
			case SETOF:
			case NFC:
			case NFD:
			case NFKC:
			case NFKD:
			case XMLATTRIBUTES:
			case REF:
			case PASSING:
			case VERSION:
			case YES:
			case STANDALONE:
			case GREATEST:
			case LEAST:
			case MATERIALIZED:
			case OPERATOR:
			case SHARE:
			case ROLLUP:
			case ILIKE:
			case SIMILAR:
			case ISNULL:
			case NOTNULL:
			case DOCUMENT:
			case NORMALIZED:
			case NOWAIT:
			case LOCKED:
			case XMLTABLE:
			case COLUMNS:
			case CONTENT:
			case STRIP:
			case WHITESPACE:
			case XMLNAMESPACES:
			case NONE:
			case CONFLICT:
			case OVERRIDING:
			case SYSTEM:
			case ABORT:
			case ABSOLUTE:
			case ACCESS:
			case AFTER:
			case AGGREGATE:
			case ALSO:
			case ATTACH:
			case ATTRIBUTE:
			case BACKWARD:
			case BEFORE:
			case ASSERTION:
			case ASSIGNMENT:
			case CONTINUE:
			case CONVERSION:
			case COPY:
			case COST:
			case CSV:
			case CALLED:
			case CATALOG:
			case CHAIN:
			case CHECKPOINT:
			case CLASS:
			case CONFIGURATION:
			case COMMENT:
			case DETACH:
			case DICTIONARY:
			case EXPRESSION:
			case INSENSITIVE:
			case DISCARD:
			case OFF:
			case INSTEAD:
			case EXPLAIN:
			case INPUT:
			case INLINE:
			case PARALLEL:
			case LEAKPROOF:
			case COMMITTED:
			case ENCODING:
			case IMPLICIT:
			case DELIMITER:
			case CURSOR:
			case EACH:
			case EVENT:
			case DEALLOCATE:
			case CONNECTION:
			case DECLARE:
			case FAMILY:
			case FORWARD:
			case EXCLUSIVE:
			case FUNCTIONS:
			case LOCATION:
			case LABEL:
			case DELIMITERS:
			case HANDLER:
			case HEADER:
			case IMMUTABLE:
			case GRANTED:
			case HOLD:
			case MAPPING:
			case OLD:
			case METHOD:
			case LOAD:
			case LISTEN:
			case MODE:
			case MOVE:
			case PROCEDURAL:
			case PARSER:
			case PROCEDURES:
			case ENCRYPTED:
			case PUBLICATION:
			case PROGRAM:
			case REFERENCING:
			case PLANS:
			case REINDEX:
			case PRIOR:
			case PASSWORD:
			case RELATIVE:
			case QUOTE:
			case ROUTINES:
			case REPLACE:
			case SNAPSHOT:
			case REFRESH:
			case PREPARE:
			case OPTIONS:
			case IMPORT:
			case INVOKER:
			case NEW:
			case PREPARED:
			case SCROLL:
			case SEQUENCES:
			case SYSID:
			case REASSIGN:
			case SERVER:
			case SUBSCRIPTION:
			case SEARCH:
			case SCHEMAS:
			case RECHECK:
			case POLICY:
			case NOTIFY:
			case LOCK:
			case RELEASE:
			case SERIALIZABLE:
			case RETURNS:
			case STATEMENT:
			case STDIN:
			case STDOUT:
			case TABLES:
			case SUPPORT:
			case STABLE:
			case TEMPLATE:
			case UNENCRYPTED:
			case VIEWS:
			case UNCOMMITTED:
			case TRANSFORM:
			case UNLISTEN:
			case TRUSTED:
			case VALIDATOR:
			case UNTIL:
			case VACUUM:
			case VOLATILE:
			case STORED:
			case WRITE:
			case STRICT:
			case TYPES:
			case WRAPPER:
			case WORK:
			case FREEZE:
			case AUTHORIZATION:
			case VERBOSE:
			case OUT:
			case INOUT:
			case INT16:
			case INT1:
			case ELEM_CONTAINED_BY_RANGE:
			case IDENTIFIER_:
			case STRING_:
				enterOuterAlt(_localctx, 1);
				{
				setState(10263);
				booleanOrString();
				}
				break;
			case PLUS_:
			case MINUS_:
			case NUMBER_:
				enterOuterAlt(_localctx, 2);
				{
				setState(10264);
				numericOnly();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class VacAnalyzeOptionNameContext extends ParserRuleContext {
		public NonReservedWordContext nonReservedWord() {
			return getRuleContext(NonReservedWordContext.class,0);
		}
		public AnalyzeKeywordContext analyzeKeyword() {
			return getRuleContext(AnalyzeKeywordContext.class,0);
		}
		public VacAnalyzeOptionNameContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_vacAnalyzeOptionName; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitVacAnalyzeOptionName(this);
			else return visitor.visitChildren(this);
		}
	}

	public final VacAnalyzeOptionNameContext vacAnalyzeOptionName() throws RecognitionException {
		VacAnalyzeOptionNameContext _localctx = new VacAnalyzeOptionNameContext(_ctx, getState());
		enterRule(_localctx, 1516, RULE_vacAnalyzeOptionName);
		try {
			setState(10269);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case UNICODE_ESCAPE:
			case INSERT:
			case UPDATE:
			case DELETE:
			case ALTER:
			case DROP:
			case TRUNCATE:
			case SCHEMA:
			case REVOKE:
			case ADD:
			case SET:
			case INDEX:
			case KEY:
			case POSITION:
			case PRECISION:
			case FUNCTION:
			case TRIGGER:
			case PROCEDURE:
			case VIEW:
			case VALUES:
			case TRIM:
			case SUBSTRING:
			case NATURAL:
			case JOIN:
			case FULL:
			case INNER:
			case OUTER:
			case LEFT:
			case RIGHT:
			case CROSS:
			case IF:
			case IS:
			case EXISTS:
			case BETWEEN:
			case LIKE:
			case BY:
			case BEGIN:
			case COMMIT:
			case ROLLBACK:
			case SAVEPOINT:
			case BOOLEAN:
			case DOUBLE:
			case CHAR:
			case CHARACTER:
			case INTERVAL:
			case TIME:
			case TIMESTAMP:
			case YEAR:
			case MONTH:
			case DAY:
			case HOUR:
			case MINUTE:
			case SECOND:
			case CURRENT:
			case ENABLE:
			case DISABLE:
			case CALL:
			case PRESERVE:
			case DEFINER:
			case SQL:
			case CASCADED:
			case LOCAL:
			case CLOSE:
			case NEXT:
			case NAME:
			case COLLATION:
			case NAMES:
			case INTEGER:
			case REAL:
			case DECIMAL:
			case TYPE:
			case SMALLINT:
			case BIGINT:
			case NUMERIC:
			case TEXT:
			case REPEATABLE:
			case NULLIF:
			case VARYING:
			case NATIONAL:
			case NCHAR:
			case VALUE:
			case COALESCE:
			case TIES:
			case CUBE:
			case GROUPING:
			case SETS:
			case OTHERS:
			case OVERLAPS:
			case AT:
			case DEC:
			case MAXVALUE:
			case ADMIN:
			case BINARY:
			case ESCAPE:
			case EXCLUDE:
			case MOD:
			case PARTITION:
			case ROW:
			case UNKNOWN:
			case ALWAYS:
			case CASCADE:
			case GENERATED:
			case ISOLATION:
			case LEVEL:
			case NO:
			case OPTION:
			case PRIVILEGES:
			case READ:
			case ROLE:
			case ROWS:
			case START:
			case TRANSACTION:
			case ACTION:
			case CACHE:
			case CHARACTERISTICS:
			case CLUSTER:
			case COMMENTS:
			case CONCURRENTLY:
			case CONSTRAINTS:
			case CYCLE:
			case DATA:
			case DATABASE:
			case DEFAULTS:
			case DEFERRED:
			case DEPENDS:
			case DOMAIN:
			case EXCLUDING:
			case EXECUTE:
			case EXTENDED:
			case EXTENSION:
			case EXTERNAL:
			case EXTRACT:
			case FILTER:
			case FIRST:
			case FOLLOWING:
			case FORCE:
			case GLOBAL:
			case IDENTITY:
			case IMMEDIATE:
			case INCLUDING:
			case INCREMENT:
			case INDEXES:
			case INHERIT:
			case INHERITS:
			case INCLUDE:
			case LANGUAGE:
			case LARGE:
			case LAST:
			case LOGGED:
			case MAIN:
			case MATCH:
			case MINVALUE:
			case NOTHING:
			case NULLS:
			case OBJECT:
			case OIDS:
			case OVER:
			case OWNED:
			case OWNER:
			case PARTIAL:
			case PLAIN:
			case PRECEDING:
			case RANGE:
			case RENAME:
			case REPLICA:
			case RESET:
			case RESTART:
			case RESTRICT:
			case ROUTINE:
			case RULE:
			case SECURITY:
			case SEQUENCE:
			case SESSION:
			case SHOW:
			case SIMPLE:
			case STATISTICS:
			case STORAGE:
			case TABLESPACE:
			case TEMP:
			case TEMPORARY:
			case UNBOUNDED:
			case UNLOGGED:
			case VALID:
			case VALIDATE:
			case WITHIN:
			case WITHOUT:
			case ZONE:
			case OF:
			case UESCAPE:
			case GROUPS:
			case RECURSIVE:
			case INT:
			case INT2:
			case INT4:
			case FLOAT:
			case FLOAT4:
			case VARCHAR:
			case BYTEA:
			case ENUM:
			case POINT:
			case LSEG:
			case BOX:
			case PATH:
			case POLYGON:
			case CIRCLE:
			case INET:
			case BIT:
			case TSQUERY:
			case XML:
			case JSON:
			case INT4RANGE:
			case INT8RANGE:
			case NUMRANGE:
			case DATERANGE:
			case TABLESAMPLE:
			case ORDINALITY:
			case CURRENT_SCHEMA:
			case OVERLAY:
			case XMLCONCAT:
			case XMLELEMENT:
			case XMLEXISTS:
			case XMLFOREST:
			case XMLPARSE:
			case XMLPI:
			case XMLROOT:
			case XMLSERIALIZE:
			case TREAT:
			case SETOF:
			case NFC:
			case NFD:
			case NFKC:
			case NFKD:
			case XMLATTRIBUTES:
			case REF:
			case PASSING:
			case VERSION:
			case YES:
			case STANDALONE:
			case GREATEST:
			case LEAST:
			case MATERIALIZED:
			case OPERATOR:
			case SHARE:
			case ROLLUP:
			case ILIKE:
			case SIMILAR:
			case ISNULL:
			case NOTNULL:
			case DOCUMENT:
			case NORMALIZED:
			case NOWAIT:
			case LOCKED:
			case XMLTABLE:
			case COLUMNS:
			case CONTENT:
			case STRIP:
			case WHITESPACE:
			case XMLNAMESPACES:
			case NONE:
			case CONFLICT:
			case OVERRIDING:
			case SYSTEM:
			case ABORT:
			case ABSOLUTE:
			case ACCESS:
			case AFTER:
			case AGGREGATE:
			case ALSO:
			case ATTACH:
			case ATTRIBUTE:
			case BACKWARD:
			case BEFORE:
			case ASSERTION:
			case ASSIGNMENT:
			case CONTINUE:
			case CONVERSION:
			case COPY:
			case COST:
			case CSV:
			case CALLED:
			case CATALOG:
			case CHAIN:
			case CHECKPOINT:
			case CLASS:
			case CONFIGURATION:
			case COMMENT:
			case DETACH:
			case DICTIONARY:
			case EXPRESSION:
			case INSENSITIVE:
			case DISCARD:
			case OFF:
			case INSTEAD:
			case EXPLAIN:
			case INPUT:
			case INLINE:
			case PARALLEL:
			case LEAKPROOF:
			case COMMITTED:
			case ENCODING:
			case IMPLICIT:
			case DELIMITER:
			case CURSOR:
			case EACH:
			case EVENT:
			case DEALLOCATE:
			case CONNECTION:
			case DECLARE:
			case FAMILY:
			case FORWARD:
			case EXCLUSIVE:
			case FUNCTIONS:
			case LOCATION:
			case LABEL:
			case DELIMITERS:
			case HANDLER:
			case HEADER:
			case IMMUTABLE:
			case GRANTED:
			case HOLD:
			case MAPPING:
			case OLD:
			case METHOD:
			case LOAD:
			case LISTEN:
			case MODE:
			case MOVE:
			case PROCEDURAL:
			case PARSER:
			case PROCEDURES:
			case ENCRYPTED:
			case PUBLICATION:
			case PROGRAM:
			case REFERENCING:
			case PLANS:
			case REINDEX:
			case PRIOR:
			case PASSWORD:
			case RELATIVE:
			case QUOTE:
			case ROUTINES:
			case REPLACE:
			case SNAPSHOT:
			case REFRESH:
			case PREPARE:
			case OPTIONS:
			case IMPORT:
			case INVOKER:
			case NEW:
			case PREPARED:
			case SCROLL:
			case SEQUENCES:
			case SYSID:
			case REASSIGN:
			case SERVER:
			case SUBSCRIPTION:
			case SEARCH:
			case SCHEMAS:
			case RECHECK:
			case POLICY:
			case NOTIFY:
			case LOCK:
			case RELEASE:
			case SERIALIZABLE:
			case RETURNS:
			case STATEMENT:
			case STDIN:
			case STDOUT:
			case TABLES:
			case SUPPORT:
			case STABLE:
			case TEMPLATE:
			case UNENCRYPTED:
			case VIEWS:
			case UNCOMMITTED:
			case TRANSFORM:
			case UNLISTEN:
			case TRUSTED:
			case VALIDATOR:
			case UNTIL:
			case VACUUM:
			case VOLATILE:
			case STORED:
			case WRITE:
			case STRICT:
			case TYPES:
			case WRAPPER:
			case WORK:
			case FREEZE:
			case AUTHORIZATION:
			case VERBOSE:
			case OUT:
			case INOUT:
			case INT16:
			case INT1:
			case ELEM_CONTAINED_BY_RANGE:
			case IDENTIFIER_:
				enterOuterAlt(_localctx, 1);
				{
				setState(10267);
				nonReservedWord();
				}
				break;
			case ANALYSE:
			case ANALYZE:
				enterOuterAlt(_localctx, 2);
				{
				setState(10268);
				analyzeKeyword();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class LoadContext extends ParserRuleContext {
		public TerminalNode LOAD() { return getToken(OpenGaussStatementParser.LOAD, 0); }
		public FileNameContext fileName() {
			return getRuleContext(FileNameContext.class,0);
		}
		public LoadContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_load; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitLoad(this);
			else return visitor.visitChildren(this);
		}
	}

	public final LoadContext load() throws RecognitionException {
		LoadContext _localctx = new LoadContext(_ctx, getState());
		enterRule(_localctx, 1518, RULE_load);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(10271);
			match(LOAD);
			setState(10272);
			fileName();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class VacuumContext extends ParserRuleContext {
		public TerminalNode VACUUM() { return getToken(OpenGaussStatementParser.VACUUM, 0); }
		public VacuumRelationListContext vacuumRelationList() {
			return getRuleContext(VacuumRelationListContext.class,0);
		}
		public TerminalNode LP_() { return getToken(OpenGaussStatementParser.LP_, 0); }
		public VacAnalyzeOptionListContext vacAnalyzeOptionList() {
			return getRuleContext(VacAnalyzeOptionListContext.class,0);
		}
		public TerminalNode RP_() { return getToken(OpenGaussStatementParser.RP_, 0); }
		public TerminalNode FULL() { return getToken(OpenGaussStatementParser.FULL, 0); }
		public TerminalNode FREEZE() { return getToken(OpenGaussStatementParser.FREEZE, 0); }
		public TerminalNode VERBOSE() { return getToken(OpenGaussStatementParser.VERBOSE, 0); }
		public TerminalNode ANALYZE() { return getToken(OpenGaussStatementParser.ANALYZE, 0); }
		public VacuumContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_vacuum; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitVacuum(this);
			else return visitor.visitChildren(this);
		}
	}

	public final VacuumContext vacuum() throws RecognitionException {
		VacuumContext _localctx = new VacuumContext(_ctx, getState());
		enterRule(_localctx, 1520, RULE_vacuum);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(10274);
			match(VACUUM);
			setState(10291);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case EOF:
			case SEMI_:
			case UNICODE_ESCAPE:
			case INSERT:
			case UPDATE:
			case DELETE:
			case ALTER:
			case DROP:
			case TRUNCATE:
			case SCHEMA:
			case REVOKE:
			case ADD:
			case SET:
			case INDEX:
			case KEY:
			case POSITION:
			case FUNCTION:
			case TRIGGER:
			case PROCEDURE:
			case VIEW:
			case FULL:
			case IF:
			case BY:
			case BEGIN:
			case COMMIT:
			case ROLLBACK:
			case SAVEPOINT:
			case DOUBLE:
			case INTERVAL:
			case TIME:
			case TIMESTAMP:
			case YEAR:
			case MONTH:
			case DAY:
			case HOUR:
			case MINUTE:
			case SECOND:
			case CURRENT:
			case ENABLE:
			case DISABLE:
			case CALL:
			case PRESERVE:
			case DEFINER:
			case SQL:
			case CASCADED:
			case LOCAL:
			case CLOSE:
			case NEXT:
			case NAME:
			case NAMES:
			case TYPE:
			case TEXT:
			case REPEATABLE:
			case VARYING:
			case NATIONAL:
			case VALUE:
			case TIES:
			case CUBE:
			case SETS:
			case OTHERS:
			case AT:
			case MAXVALUE:
			case ADMIN:
			case ESCAPE:
			case EXCLUDE:
			case MOD:
			case PARTITION:
			case UNKNOWN:
			case ALWAYS:
			case CASCADE:
			case GENERATED:
			case ISOLATION:
			case LEVEL:
			case NO:
			case OPTION:
			case PRIVILEGES:
			case READ:
			case ROLE:
			case ROWS:
			case START:
			case TRANSACTION:
			case ACTION:
			case CACHE:
			case CHARACTERISTICS:
			case CLUSTER:
			case COMMENTS:
			case CONSTRAINTS:
			case CYCLE:
			case DATA:
			case DATABASE:
			case DEFAULTS:
			case DEFERRED:
			case DEPENDS:
			case DOMAIN:
			case EXCLUDING:
			case EXECUTE:
			case EXTENDED:
			case EXTENSION:
			case EXTERNAL:
			case FILTER:
			case FIRST:
			case FOLLOWING:
			case FORCE:
			case GLOBAL:
			case IDENTITY:
			case IMMEDIATE:
			case INCLUDING:
			case INCREMENT:
			case INDEXES:
			case INHERIT:
			case INHERITS:
			case INCLUDE:
			case LANGUAGE:
			case LARGE:
			case LAST:
			case LOGGED:
			case MAIN:
			case MATCH:
			case MINVALUE:
			case NOTHING:
			case NULLS:
			case OBJECT:
			case OIDS:
			case OVER:
			case OWNED:
			case OWNER:
			case PARTIAL:
			case PLAIN:
			case PRECEDING:
			case RANGE:
			case RENAME:
			case REPLICA:
			case RESET:
			case RESTART:
			case RESTRICT:
			case ROUTINE:
			case RULE:
			case SECURITY:
			case SEQUENCE:
			case SESSION:
			case SHOW:
			case SIMPLE:
			case STATISTICS:
			case STORAGE:
			case TABLESPACE:
			case TEMP:
			case TEMPORARY:
			case UNBOUNDED:
			case UNLOGGED:
			case VALID:
			case VALIDATE:
			case WITHIN:
			case WITHOUT:
			case ZONE:
			case OF:
			case UESCAPE:
			case GROUPS:
			case RECURSIVE:
			case INT2:
			case INT4:
			case FLOAT4:
			case BYTEA:
			case ENUM:
			case POINT:
			case LSEG:
			case BOX:
			case PATH:
			case POLYGON:
			case CIRCLE:
			case INET:
			case TSQUERY:
			case XML:
			case JSON:
			case INT4RANGE:
			case INT8RANGE:
			case NUMRANGE:
			case DATERANGE:
			case ORDINALITY:
			case NFC:
			case NFD:
			case NFKC:
			case NFKD:
			case REF:
			case PASSING:
			case VERSION:
			case YES:
			case STANDALONE:
			case MATERIALIZED:
			case OPERATOR:
			case SHARE:
			case ROLLUP:
			case DOCUMENT:
			case NORMALIZED:
			case NOWAIT:
			case LOCKED:
			case COLUMNS:
			case CONTENT:
			case STRIP:
			case WHITESPACE:
			case ANALYZE:
			case CONFLICT:
			case OVERRIDING:
			case SYSTEM:
			case ABORT:
			case ABSOLUTE:
			case ACCESS:
			case AFTER:
			case AGGREGATE:
			case ALSO:
			case ATTACH:
			case ATTRIBUTE:
			case BACKWARD:
			case BEFORE:
			case ASSERTION:
			case ASSIGNMENT:
			case CONTINUE:
			case CONVERSION:
			case COPY:
			case COST:
			case CSV:
			case CALLED:
			case CATALOG:
			case CHAIN:
			case CHECKPOINT:
			case CLASS:
			case CONFIGURATION:
			case COMMENT:
			case DETACH:
			case DICTIONARY:
			case EXPRESSION:
			case INSENSITIVE:
			case DISCARD:
			case OFF:
			case INSTEAD:
			case EXPLAIN:
			case INPUT:
			case INLINE:
			case PARALLEL:
			case LEAKPROOF:
			case COMMITTED:
			case ENCODING:
			case IMPLICIT:
			case DELIMITER:
			case CURSOR:
			case EACH:
			case EVENT:
			case DEALLOCATE:
			case CONNECTION:
			case DECLARE:
			case FAMILY:
			case FORWARD:
			case EXCLUSIVE:
			case FUNCTIONS:
			case LOCATION:
			case LABEL:
			case DELIMITERS:
			case HANDLER:
			case HEADER:
			case IMMUTABLE:
			case GRANTED:
			case HOLD:
			case MAPPING:
			case OLD:
			case METHOD:
			case LOAD:
			case LISTEN:
			case MODE:
			case MOVE:
			case PROCEDURAL:
			case PARSER:
			case PROCEDURES:
			case ENCRYPTED:
			case PUBLICATION:
			case PROGRAM:
			case REFERENCING:
			case PLANS:
			case REINDEX:
			case PRIOR:
			case PASSWORD:
			case RELATIVE:
			case QUOTE:
			case ROUTINES:
			case REPLACE:
			case SNAPSHOT:
			case REFRESH:
			case PREPARE:
			case OPTIONS:
			case IMPORT:
			case INVOKER:
			case NEW:
			case PREPARED:
			case SCROLL:
			case SEQUENCES:
			case SYSID:
			case REASSIGN:
			case SERVER:
			case SUBSCRIPTION:
			case SEARCH:
			case SCHEMAS:
			case RECHECK:
			case POLICY:
			case NOTIFY:
			case LOCK:
			case RELEASE:
			case SERIALIZABLE:
			case RETURNS:
			case STATEMENT:
			case STDIN:
			case STDOUT:
			case TABLES:
			case SUPPORT:
			case STABLE:
			case TEMPLATE:
			case UNENCRYPTED:
			case VIEWS:
			case UNCOMMITTED:
			case TRANSFORM:
			case UNLISTEN:
			case TRUSTED:
			case VALIDATOR:
			case UNTIL:
			case VACUUM:
			case VOLATILE:
			case STORED:
			case WRITE:
			case STRICT:
			case TYPES:
			case WRAPPER:
			case WORK:
			case FREEZE:
			case VERBOSE:
			case INT16:
			case INT1:
			case ELEM_CONTAINED_BY_RANGE:
			case IDENTIFIER_:
				{
				{
				setState(10276);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==FULL) {
					{
					setState(10275);
					match(FULL);
					}
				}

				setState(10279);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==FREEZE) {
					{
					setState(10278);
					match(FREEZE);
					}
				}

				setState(10282);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==VERBOSE) {
					{
					setState(10281);
					match(VERBOSE);
					}
				}

				setState(10285);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==ANALYZE) {
					{
					setState(10284);
					match(ANALYZE);
					}
				}

				}
				}
				break;
			case LP_:
				{
				{
				setState(10287);
				match(LP_);
				setState(10288);
				vacAnalyzeOptionList();
				setState(10289);
				match(RP_);
				}
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			setState(10294);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==UNICODE_ESCAPE || ((((_la - 81)) & ~0x3f) == 0 && ((1L << (_la - 81)) & ((1L << (INSERT - 81)) | (1L << (UPDATE - 81)) | (1L << (DELETE - 81)) | (1L << (ALTER - 81)) | (1L << (DROP - 81)) | (1L << (TRUNCATE - 81)) | (1L << (SCHEMA - 81)) | (1L << (REVOKE - 81)) | (1L << (ADD - 81)) | (1L << (SET - 81)) | (1L << (INDEX - 81)) | (1L << (KEY - 81)) | (1L << (POSITION - 81)) | (1L << (FUNCTION - 81)) | (1L << (TRIGGER - 81)) | (1L << (PROCEDURE - 81)) | (1L << (VIEW - 81)) | (1L << (IF - 81)))) != 0) || ((((_la - 151)) & ~0x3f) == 0 && ((1L << (_la - 151)) & ((1L << (BY - 151)) | (1L << (BEGIN - 151)) | (1L << (COMMIT - 151)) | (1L << (ROLLBACK - 151)) | (1L << (SAVEPOINT - 151)) | (1L << (DOUBLE - 151)) | (1L << (INTERVAL - 151)) | (1L << (TIME - 151)) | (1L << (TIMESTAMP - 151)) | (1L << (YEAR - 151)) | (1L << (MONTH - 151)) | (1L << (DAY - 151)) | (1L << (HOUR - 151)) | (1L << (MINUTE - 151)) | (1L << (SECOND - 151)) | (1L << (CURRENT - 151)) | (1L << (ENABLE - 151)) | (1L << (DISABLE - 151)) | (1L << (CALL - 151)) | (1L << (PRESERVE - 151)) | (1L << (DEFINER - 151)) | (1L << (SQL - 151)) | (1L << (CASCADED - 151)) | (1L << (LOCAL - 151)) | (1L << (CLOSE - 151)) | (1L << (NEXT - 151)) | (1L << (NAME - 151)) | (1L << (NAMES - 151)) | (1L << (TYPE - 151)) | (1L << (TEXT - 151)) | (1L << (REPEATABLE - 151)) | (1L << (VARYING - 151)) | (1L << (NATIONAL - 151)))) != 0) || ((((_la - 216)) & ~0x3f) == 0 && ((1L << (_la - 216)) & ((1L << (VALUE - 216)) | (1L << (TIES - 216)) | (1L << (CUBE - 216)) | (1L << (SETS - 216)) | (1L << (OTHERS - 216)) | (1L << (AT - 216)) | (1L << (MAXVALUE - 216)) | (1L << (ADMIN - 216)) | (1L << (ESCAPE - 216)) | (1L << (EXCLUDE - 216)) | (1L << (MOD - 216)) | (1L << (PARTITION - 216)) | (1L << (UNKNOWN - 216)) | (1L << (ALWAYS - 216)) | (1L << (CASCADE - 216)) | (1L << (GENERATED - 216)) | (1L << (ISOLATION - 216)) | (1L << (LEVEL - 216)) | (1L << (NO - 216)) | (1L << (OPTION - 216)) | (1L << (PRIVILEGES - 216)) | (1L << (READ - 216)) | (1L << (ROLE - 216)) | (1L << (ROWS - 216)) | (1L << (START - 216)) | (1L << (TRANSACTION - 216)) | (1L << (ACTION - 216)) | (1L << (CACHE - 216)) | (1L << (CHARACTERISTICS - 216)) | (1L << (CLUSTER - 216)) | (1L << (COMMENTS - 216)) | (1L << (CONSTRAINTS - 216)) | (1L << (CYCLE - 216)) | (1L << (DATA - 216)) | (1L << (DATABASE - 216)) | (1L << (DEFAULTS - 216)) | (1L << (DEFERRED - 216)))) != 0) || ((((_la - 280)) & ~0x3f) == 0 && ((1L << (_la - 280)) & ((1L << (DEPENDS - 280)) | (1L << (DOMAIN - 280)) | (1L << (EXCLUDING - 280)) | (1L << (EXECUTE - 280)) | (1L << (EXTENDED - 280)) | (1L << (EXTENSION - 280)) | (1L << (EXTERNAL - 280)) | (1L << (FILTER - 280)) | (1L << (FIRST - 280)) | (1L << (FOLLOWING - 280)) | (1L << (FORCE - 280)) | (1L << (GLOBAL - 280)) | (1L << (IDENTITY - 280)) | (1L << (IMMEDIATE - 280)) | (1L << (INCLUDING - 280)) | (1L << (INCREMENT - 280)) | (1L << (INDEXES - 280)) | (1L << (INHERIT - 280)) | (1L << (INHERITS - 280)) | (1L << (INCLUDE - 280)) | (1L << (LANGUAGE - 280)) | (1L << (LARGE - 280)) | (1L << (LAST - 280)) | (1L << (LOGGED - 280)) | (1L << (MAIN - 280)) | (1L << (MATCH - 280)) | (1L << (MINVALUE - 280)) | (1L << (NOTHING - 280)) | (1L << (NULLS - 280)) | (1L << (OBJECT - 280)) | (1L << (OIDS - 280)) | (1L << (OVER - 280)) | (1L << (OWNED - 280)) | (1L << (OWNER - 280)) | (1L << (PARTIAL - 280)) | (1L << (PLAIN - 280)) | (1L << (PRECEDING - 280)) | (1L << (RANGE - 280)) | (1L << (RENAME - 280)) | (1L << (REPLICA - 280)) | (1L << (RESET - 280)) | (1L << (RESTART - 280)) | (1L << (RESTRICT - 280)) | (1L << (ROUTINE - 280)) | (1L << (RULE - 280)) | (1L << (SECURITY - 280)) | (1L << (SEQUENCE - 280)) | (1L << (SESSION - 280)) | (1L << (SHOW - 280)) | (1L << (SIMPLE - 280)) | (1L << (STATISTICS - 280)) | (1L << (STORAGE - 280)) | (1L << (TABLESPACE - 280)) | (1L << (TEMP - 280)) | (1L << (TEMPORARY - 280)) | (1L << (UNBOUNDED - 280)) | (1L << (UNLOGGED - 280)) | (1L << (VALID - 280)))) != 0) || ((((_la - 344)) & ~0x3f) == 0 && ((1L << (_la - 344)) & ((1L << (VALIDATE - 344)) | (1L << (WITHIN - 344)) | (1L << (WITHOUT - 344)) | (1L << (ZONE - 344)) | (1L << (OF - 344)) | (1L << (UESCAPE - 344)) | (1L << (GROUPS - 344)) | (1L << (RECURSIVE - 344)) | (1L << (INT2 - 344)) | (1L << (INT4 - 344)) | (1L << (FLOAT4 - 344)) | (1L << (BYTEA - 344)) | (1L << (ENUM - 344)) | (1L << (POINT - 344)) | (1L << (LSEG - 344)) | (1L << (BOX - 344)) | (1L << (PATH - 344)) | (1L << (POLYGON - 344)) | (1L << (CIRCLE - 344)) | (1L << (INET - 344)) | (1L << (TSQUERY - 344)) | (1L << (XML - 344)) | (1L << (JSON - 344)) | (1L << (INT4RANGE - 344)) | (1L << (INT8RANGE - 344)) | (1L << (NUMRANGE - 344)) | (1L << (DATERANGE - 344)) | (1L << (ORDINALITY - 344)) | (1L << (NFC - 344)) | (1L << (NFD - 344)) | (1L << (NFKC - 344)))) != 0) || ((((_la - 408)) & ~0x3f) == 0 && ((1L << (_la - 408)) & ((1L << (NFKD - 408)) | (1L << (REF - 408)) | (1L << (PASSING - 408)) | (1L << (VERSION - 408)) | (1L << (YES - 408)) | (1L << (STANDALONE - 408)) | (1L << (MATERIALIZED - 408)) | (1L << (OPERATOR - 408)) | (1L << (SHARE - 408)) | (1L << (ROLLUP - 408)) | (1L << (DOCUMENT - 408)) | (1L << (NORMALIZED - 408)) | (1L << (NOWAIT - 408)) | (1L << (LOCKED - 408)) | (1L << (COLUMNS - 408)) | (1L << (CONTENT - 408)) | (1L << (STRIP - 408)) | (1L << (WHITESPACE - 408)) | (1L << (CONFLICT - 408)) | (1L << (OVERRIDING - 408)) | (1L << (SYSTEM - 408)) | (1L << (ABORT - 408)) | (1L << (ABSOLUTE - 408)) | (1L << (ACCESS - 408)) | (1L << (AFTER - 408)) | (1L << (AGGREGATE - 408)) | (1L << (ALSO - 408)) | (1L << (ATTACH - 408)) | (1L << (ATTRIBUTE - 408)) | (1L << (BACKWARD - 408)) | (1L << (BEFORE - 408)) | (1L << (ASSERTION - 408)) | (1L << (ASSIGNMENT - 408)) | (1L << (CONTINUE - 408)) | (1L << (CONVERSION - 408)) | (1L << (COPY - 408)) | (1L << (COST - 408)) | (1L << (CSV - 408)) | (1L << (CALLED - 408)) | (1L << (CATALOG - 408)) | (1L << (CHAIN - 408)) | (1L << (CHECKPOINT - 408)) | (1L << (CLASS - 408)) | (1L << (CONFIGURATION - 408)) | (1L << (COMMENT - 408)) | (1L << (DETACH - 408)))) != 0) || ((((_la - 472)) & ~0x3f) == 0 && ((1L << (_la - 472)) & ((1L << (DICTIONARY - 472)) | (1L << (EXPRESSION - 472)) | (1L << (INSENSITIVE - 472)) | (1L << (DISCARD - 472)) | (1L << (OFF - 472)) | (1L << (INSTEAD - 472)) | (1L << (EXPLAIN - 472)) | (1L << (INPUT - 472)) | (1L << (INLINE - 472)) | (1L << (PARALLEL - 472)) | (1L << (LEAKPROOF - 472)) | (1L << (COMMITTED - 472)) | (1L << (ENCODING - 472)) | (1L << (IMPLICIT - 472)) | (1L << (DELIMITER - 472)) | (1L << (CURSOR - 472)) | (1L << (EACH - 472)) | (1L << (EVENT - 472)) | (1L << (DEALLOCATE - 472)) | (1L << (CONNECTION - 472)) | (1L << (DECLARE - 472)) | (1L << (FAMILY - 472)) | (1L << (FORWARD - 472)) | (1L << (EXCLUSIVE - 472)) | (1L << (FUNCTIONS - 472)) | (1L << (LOCATION - 472)) | (1L << (LABEL - 472)) | (1L << (DELIMITERS - 472)) | (1L << (HANDLER - 472)) | (1L << (HEADER - 472)) | (1L << (IMMUTABLE - 472)) | (1L << (GRANTED - 472)) | (1L << (HOLD - 472)) | (1L << (MAPPING - 472)) | (1L << (OLD - 472)) | (1L << (METHOD - 472)) | (1L << (LOAD - 472)) | (1L << (LISTEN - 472)) | (1L << (MODE - 472)) | (1L << (MOVE - 472)) | (1L << (PROCEDURAL - 472)) | (1L << (PARSER - 472)) | (1L << (PROCEDURES - 472)) | (1L << (ENCRYPTED - 472)) | (1L << (PUBLICATION - 472)) | (1L << (PROGRAM - 472)) | (1L << (REFERENCING - 472)) | (1L << (PLANS - 472)) | (1L << (REINDEX - 472)) | (1L << (PRIOR - 472)) | (1L << (PASSWORD - 472)) | (1L << (RELATIVE - 472)) | (1L << (QUOTE - 472)) | (1L << (ROUTINES - 472)) | (1L << (REPLACE - 472)) | (1L << (SNAPSHOT - 472)) | (1L << (REFRESH - 472)) | (1L << (PREPARE - 472)) | (1L << (OPTIONS - 472)) | (1L << (IMPORT - 472)) | (1L << (INVOKER - 472)) | (1L << (NEW - 472)) | (1L << (PREPARED - 472)))) != 0) || ((((_la - 536)) & ~0x3f) == 0 && ((1L << (_la - 536)) & ((1L << (SCROLL - 536)) | (1L << (SEQUENCES - 536)) | (1L << (SYSID - 536)) | (1L << (REASSIGN - 536)) | (1L << (SERVER - 536)) | (1L << (SUBSCRIPTION - 536)) | (1L << (SEARCH - 536)) | (1L << (SCHEMAS - 536)) | (1L << (RECHECK - 536)) | (1L << (POLICY - 536)) | (1L << (NOTIFY - 536)) | (1L << (LOCK - 536)) | (1L << (RELEASE - 536)) | (1L << (SERIALIZABLE - 536)) | (1L << (RETURNS - 536)) | (1L << (STATEMENT - 536)) | (1L << (STDIN - 536)) | (1L << (STDOUT - 536)) | (1L << (TABLES - 536)) | (1L << (SUPPORT - 536)) | (1L << (STABLE - 536)) | (1L << (TEMPLATE - 536)) | (1L << (UNENCRYPTED - 536)) | (1L << (VIEWS - 536)) | (1L << (UNCOMMITTED - 536)) | (1L << (TRANSFORM - 536)) | (1L << (UNLISTEN - 536)) | (1L << (TRUSTED - 536)) | (1L << (VALIDATOR - 536)) | (1L << (UNTIL - 536)) | (1L << (VACUUM - 536)) | (1L << (VOLATILE - 536)) | (1L << (STORED - 536)) | (1L << (WRITE - 536)) | (1L << (STRICT - 536)) | (1L << (TYPES - 536)) | (1L << (WRAPPER - 536)) | (1L << (WORK - 536)) | (1L << (INT16 - 536)) | (1L << (INT1 - 536)) | (1L << (ELEM_CONTAINED_BY_RANGE - 536)) | (1L << (IDENTIFIER_ - 536)))) != 0)) {
				{
				setState(10293);
				vacuumRelationList();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class EmptyStatementContext extends ParserRuleContext {
		public EmptyStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_emptyStatement; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitEmptyStatement(this);
			else return visitor.visitChildren(this);
		}
	}

	public final EmptyStatementContext emptyStatement() throws RecognitionException {
		EmptyStatementContext _localctx = new EmptyStatementContext(_ctx, getState());
		enterRule(_localctx, 1522, RULE_emptyStatement);
		try {
			enterOuterAlt(_localctx, 1);
			{
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CallContext extends ParserRuleContext {
		public TerminalNode CALL() { return getToken(OpenGaussStatementParser.CALL, 0); }
		public FuncNameContext funcName() {
			return getRuleContext(FuncNameContext.class,0);
		}
		public TerminalNode LP_() { return getToken(OpenGaussStatementParser.LP_, 0); }
		public TerminalNode RP_() { return getToken(OpenGaussStatementParser.RP_, 0); }
		public CallClausesContext callClauses() {
			return getRuleContext(CallClausesContext.class,0);
		}
		public CallContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_call; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitCall(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CallContext call() throws RecognitionException {
		CallContext _localctx = new CallContext(_ctx, getState());
		enterRule(_localctx, 1524, RULE_call);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(10298);
			match(CALL);
			setState(10299);
			funcName();
			setState(10300);
			match(LP_);
			setState(10302);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << OR_) | (1L << TILDE_) | (1L << SIGNED_LEFT_SHIFT_) | (1L << SIGNED_RIGHT_SHIFT_) | (1L << PLUS_) | (1L << MINUS_) | (1L << ASTERISK_) | (1L << POUND_) | (1L << LP_) | (1L << QUESTION_) | (1L << DOLLAR_) | (1L << UNICODE_ESCAPE) | (1L << JSON_EXTRACT_) | (1L << JSON_EXTRACT_TEXT_) | (1L << JSON_PATH_EXTRACT_) | (1L << JSON_PATH_EXTRACT_TEXT_) | (1L << JSONB_CONTAIN_RIGHT_) | (1L << JSONB_CONTAIN_LEFT_) | (1L << JSONB_CONTAIN_ALL_TOP_KEY_) | (1L << JSONB_PATH_DELETE_) | (1L << JSONB_PATH_CONTAIN_ANY_VALUE_) | (1L << JSONB_PATH_PREDICATE_CHECK_) | (1L << GEOMETRIC_LENGTH_) | (1L << GEOMETRIC_DISTANCE_))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (GEOMETRIC_EXTEND_RIGHT_ - 64)) | (1L << (GEOMETRIC_EXTEND_LEFT_ - 64)) | (1L << (GEOMETRIC_STRICT_BELOW_ - 64)) | (1L << (GEOMETRIC_STRICT_ABOVE_ - 64)) | (1L << (GEOMETRIC_EXTEND_ABOVE_ - 64)) | (1L << (GEOMETRIC_EXTEND_BELOW_ - 64)) | (1L << (GEOMETRIC_BELOW_ - 64)) | (1L << (GEOMETRIC_ABOVE_ - 64)) | (1L << (GEOMETRIC_INTERSECT_ - 64)) | (1L << (GEOMETRIC_PERPENDICULAR_ - 64)) | (1L << (GEOMETRIC_SAME_AS_ - 64)) | (1L << (DN_ - 64)) | (1L << (CUBE_ROOT_ - 64)) | (1L << (INSERT - 64)) | (1L << (UPDATE - 64)) | (1L << (DELETE - 64)) | (1L << (ALTER - 64)) | (1L << (DROP - 64)) | (1L << (TRUNCATE - 64)) | (1L << (SCHEMA - 64)) | (1L << (REVOKE - 64)) | (1L << (ADD - 64)) | (1L << (SET - 64)) | (1L << (INDEX - 64)) | (1L << (UNIQUE - 64)) | (1L << (KEY - 64)) | (1L << (POSITION - 64)) | (1L << (FUNCTION - 64)) | (1L << (TRIGGER - 64)) | (1L << (PROCEDURE - 64)) | (1L << (VIEW - 64)) | (1L << (DISTINCT - 64)) | (1L << (CASE - 64)) | (1L << (CAST - 64)) | (1L << (TRIM - 64)) | (1L << (SUBSTRING - 64)) | (1L << (NATURAL - 64)) | (1L << (JOIN - 64)) | (1L << (FULL - 64)) | (1L << (INNER - 64)) | (1L << (OUTER - 64)) | (1L << (LEFT - 64)) | (1L << (RIGHT - 64)) | (1L << (CROSS - 64)))) != 0) || ((((_la - 131)) & ~0x3f) == 0 && ((1L << (_la - 131)) & ((1L << (IF - 131)) | (1L << (IS - 131)) | (1L << (NOT - 131)) | (1L << (NULL - 131)) | (1L << (TRUE - 131)) | (1L << (FALSE - 131)) | (1L << (EXISTS - 131)) | (1L << (ALL - 131)) | (1L << (LIKE - 131)) | (1L << (BY - 131)) | (1L << (BEGIN - 131)) | (1L << (COMMIT - 131)) | (1L << (ROLLBACK - 131)) | (1L << (SAVEPOINT - 131)) | (1L << (BOOLEAN - 131)) | (1L << (DOUBLE - 131)) | (1L << (CHAR - 131)) | (1L << (CHARACTER - 131)) | (1L << (ARRAY - 131)) | (1L << (INTERVAL - 131)) | (1L << (DATE - 131)) | (1L << (TIME - 131)) | (1L << (TIMESTAMP - 131)) | (1L << (LOCALTIME - 131)) | (1L << (LOCALTIMESTAMP - 131)) | (1L << (YEAR - 131)) | (1L << (MONTH - 131)) | (1L << (DAY - 131)) | (1L << (HOUR - 131)) | (1L << (MINUTE - 131)) | (1L << (SECOND - 131)) | (1L << (DEFAULT - 131)) | (1L << (CURRENT - 131)) | (1L << (ENABLE - 131)) | (1L << (DISABLE - 131)) | (1L << (CALL - 131)) | (1L << (PRESERVE - 131)) | (1L << (DEFINER - 131)) | (1L << (CURRENT_USER - 131)) | (1L << (SQL - 131)) | (1L << (CASCADED - 131)) | (1L << (LOCAL - 131)) | (1L << (CLOSE - 131)))) != 0) || ((((_la - 196)) & ~0x3f) == 0 && ((1L << (_la - 196)) & ((1L << (NEXT - 196)) | (1L << (NAME - 196)) | (1L << (COLLATION - 196)) | (1L << (NAMES - 196)) | (1L << (INTEGER - 196)) | (1L << (REAL - 196)) | (1L << (DECIMAL - 196)) | (1L << (TYPE - 196)) | (1L << (SMALLINT - 196)) | (1L << (BIGINT - 196)) | (1L << (NUMERIC - 196)) | (1L << (TEXT - 196)) | (1L << (REPEATABLE - 196)) | (1L << (CURRENT_DATE - 196)) | (1L << (CURRENT_TIME - 196)) | (1L << (CURRENT_TIMESTAMP - 196)) | (1L << (NULLIF - 196)) | (1L << (VARYING - 196)) | (1L << (NATIONAL - 196)) | (1L << (NCHAR - 196)) | (1L << (VALUE - 196)) | (1L << (COALESCE - 196)) | (1L << (TIES - 196)) | (1L << (CUBE - 196)) | (1L << (GROUPING - 196)) | (1L << (SETS - 196)) | (1L << (OTHERS - 196)) | (1L << (OVERLAPS - 196)) | (1L << (AT - 196)) | (1L << (DEC - 196)) | (1L << (MAXVALUE - 196)) | (1L << (ADMIN - 196)) | (1L << (BINARY - 196)) | (1L << (ESCAPE - 196)) | (1L << (EXCLUDE - 196)) | (1L << (MOD - 196)) | (1L << (PARTITION - 196)) | (1L << (ROW - 196)) | (1L << (UNKNOWN - 196)) | (1L << (ALWAYS - 196)) | (1L << (CASCADE - 196)) | (1L << (GENERATED - 196)) | (1L << (ISOLATION - 196)) | (1L << (LEVEL - 196)) | (1L << (NO - 196)) | (1L << (OPTION - 196)) | (1L << (PRIVILEGES - 196)) | (1L << (READ - 196)))) != 0) || ((((_la - 260)) & ~0x3f) == 0 && ((1L << (_la - 260)) & ((1L << (ROLE - 260)) | (1L << (ROWS - 260)) | (1L << (START - 260)) | (1L << (TRANSACTION - 260)) | (1L << (USER - 260)) | (1L << (ACTION - 260)) | (1L << (CACHE - 260)) | (1L << (CHARACTERISTICS - 260)) | (1L << (CLUSTER - 260)) | (1L << (COMMENTS - 260)) | (1L << (CONCURRENTLY - 260)) | (1L << (CONSTRAINTS - 260)) | (1L << (CYCLE - 260)) | (1L << (DATA - 260)) | (1L << (DATABASE - 260)) | (1L << (DEFAULTS - 260)) | (1L << (DEFERRED - 260)) | (1L << (DEPENDS - 260)) | (1L << (DOMAIN - 260)) | (1L << (EXCLUDING - 260)) | (1L << (EXECUTE - 260)) | (1L << (EXTENDED - 260)) | (1L << (EXTENSION - 260)) | (1L << (EXTERNAL - 260)) | (1L << (EXTRACT - 260)) | (1L << (FILTER - 260)) | (1L << (FIRST - 260)) | (1L << (FOLLOWING - 260)) | (1L << (FORCE - 260)) | (1L << (GLOBAL - 260)) | (1L << (IDENTITY - 260)) | (1L << (IMMEDIATE - 260)) | (1L << (INCLUDING - 260)) | (1L << (INCREMENT - 260)) | (1L << (INDEXES - 260)) | (1L << (INHERIT - 260)) | (1L << (INHERITS - 260)) | (1L << (INCLUDE - 260)) | (1L << (LANGUAGE - 260)) | (1L << (LARGE - 260)) | (1L << (LAST - 260)) | (1L << (LOGGED - 260)) | (1L << (MAIN - 260)) | (1L << (MATCH - 260)) | (1L << (MINVALUE - 260)) | (1L << (NOTHING - 260)) | (1L << (NULLS - 260)) | (1L << (OBJECT - 260)) | (1L << (OIDS - 260)) | (1L << (OVER - 260)) | (1L << (OWNED - 260)) | (1L << (OWNER - 260)) | (1L << (PARTIAL - 260)) | (1L << (PLAIN - 260)) | (1L << (PRECEDING - 260)) | (1L << (RANGE - 260)) | (1L << (RENAME - 260)) | (1L << (REPLICA - 260)) | (1L << (RESET - 260)))) != 0) || ((((_la - 324)) & ~0x3f) == 0 && ((1L << (_la - 324)) & ((1L << (RESTART - 324)) | (1L << (RESTRICT - 324)) | (1L << (ROUTINE - 324)) | (1L << (RULE - 324)) | (1L << (SECURITY - 324)) | (1L << (SEQUENCE - 324)) | (1L << (SESSION - 324)) | (1L << (SESSION_USER - 324)) | (1L << (SHOW - 324)) | (1L << (SIMPLE - 324)) | (1L << (STATISTICS - 324)) | (1L << (STORAGE - 324)) | (1L << (TABLESPACE - 324)) | (1L << (TEMP - 324)) | (1L << (TEMPORARY - 324)) | (1L << (UNBOUNDED - 324)) | (1L << (UNLOGGED - 324)) | (1L << (VALID - 324)) | (1L << (VALIDATE - 324)) | (1L << (WITHIN - 324)) | (1L << (WITHOUT - 324)) | (1L << (ZONE - 324)) | (1L << (OF - 324)) | (1L << (UESCAPE - 324)) | (1L << (GROUPS - 324)) | (1L << (RECURSIVE - 324)) | (1L << (INT - 324)) | (1L << (INT2 - 324)) | (1L << (INT4 - 324)) | (1L << (INT8 - 324)) | (1L << (FLOAT - 324)) | (1L << (FLOAT4 - 324)) | (1L << (FLOAT8 - 324)) | (1L << (VARCHAR - 324)) | (1L << (BYTEA - 324)) | (1L << (ENUM - 324)) | (1L << (POINT - 324)) | (1L << (LSEG - 324)) | (1L << (BOX - 324)) | (1L << (PATH - 324)) | (1L << (POLYGON - 324)) | (1L << (CIRCLE - 324)) | (1L << (INET - 324)) | (1L << (BIT - 324)) | (1L << (TSQUERY - 324)) | (1L << (XML - 324)) | (1L << (JSON - 324)) | (1L << (INT4RANGE - 324)) | (1L << (INT8RANGE - 324)) | (1L << (NUMRANGE - 324)) | (1L << (DATERANGE - 324)))) != 0) || ((((_la - 388)) & ~0x3f) == 0 && ((1L << (_la - 388)) & ((1L << (TABLESAMPLE - 388)) | (1L << (ORDINALITY - 388)) | (1L << (CURRENT_ROLE - 388)) | (1L << (CURRENT_CATALOG - 388)) | (1L << (CURRENT_SCHEMA - 388)) | (1L << (NORMALIZE - 388)) | (1L << (OVERLAY - 388)) | (1L << (XMLCONCAT - 388)) | (1L << (XMLELEMENT - 388)) | (1L << (XMLEXISTS - 388)) | (1L << (XMLFOREST - 388)) | (1L << (XMLPARSE - 388)) | (1L << (XMLPI - 388)) | (1L << (XMLROOT - 388)) | (1L << (XMLSERIALIZE - 388)) | (1L << (TREAT - 388)) | (1L << (NFC - 388)) | (1L << (NFD - 388)) | (1L << (NFKC - 388)) | (1L << (NFKD - 388)) | (1L << (REF - 388)) | (1L << (PASSING - 388)) | (1L << (VERSION - 388)) | (1L << (YES - 388)) | (1L << (STANDALONE - 388)) | (1L << (GREATEST - 388)) | (1L << (LEAST - 388)) | (1L << (MATERIALIZED - 388)) | (1L << (OPERATOR - 388)) | (1L << (SHARE - 388)) | (1L << (ROLLUP - 388)) | (1L << (ILIKE - 388)) | (1L << (SIMILAR - 388)) | (1L << (ISNULL - 388)) | (1L << (NOTNULL - 388)) | (1L << (DOCUMENT - 388)) | (1L << (NORMALIZED - 388)) | (1L << (VARIADIC - 388)) | (1L << (NOWAIT - 388)) | (1L << (LOCKED - 388)) | (1L << (COLUMNS - 388)) | (1L << (CONTENT - 388)) | (1L << (STRIP - 388)) | (1L << (WHITESPACE - 388)) | (1L << (CONFLICT - 388)) | (1L << (OVERRIDING - 388)) | (1L << (SYSTEM - 388)) | (1L << (ABORT - 388)) | (1L << (ABSOLUTE - 388)) | (1L << (ACCESS - 388)) | (1L << (AFTER - 388)) | (1L << (AGGREGATE - 388)))) != 0) || ((((_la - 452)) & ~0x3f) == 0 && ((1L << (_la - 452)) & ((1L << (ALSO - 452)) | (1L << (ATTACH - 452)) | (1L << (ATTRIBUTE - 452)) | (1L << (BACKWARD - 452)) | (1L << (BEFORE - 452)) | (1L << (ASSERTION - 452)) | (1L << (ASSIGNMENT - 452)) | (1L << (CONTINUE - 452)) | (1L << (CONVERSION - 452)) | (1L << (COPY - 452)) | (1L << (COST - 452)) | (1L << (CSV - 452)) | (1L << (CALLED - 452)) | (1L << (CATALOG - 452)) | (1L << (CHAIN - 452)) | (1L << (CHECKPOINT - 452)) | (1L << (CLASS - 452)) | (1L << (CONFIGURATION - 452)) | (1L << (COMMENT - 452)) | (1L << (DETACH - 452)) | (1L << (DICTIONARY - 452)) | (1L << (EXPRESSION - 452)) | (1L << (INSENSITIVE - 452)) | (1L << (DISCARD - 452)) | (1L << (OFF - 452)) | (1L << (INSTEAD - 452)) | (1L << (EXPLAIN - 452)) | (1L << (INPUT - 452)) | (1L << (INLINE - 452)) | (1L << (PARALLEL - 452)) | (1L << (LEAKPROOF - 452)) | (1L << (COMMITTED - 452)) | (1L << (ENCODING - 452)) | (1L << (IMPLICIT - 452)) | (1L << (DELIMITER - 452)) | (1L << (CURSOR - 452)) | (1L << (EACH - 452)) | (1L << (EVENT - 452)) | (1L << (DEALLOCATE - 452)) | (1L << (CONNECTION - 452)) | (1L << (DECLARE - 452)) | (1L << (FAMILY - 452)) | (1L << (FORWARD - 452)) | (1L << (EXCLUSIVE - 452)) | (1L << (FUNCTIONS - 452)) | (1L << (LOCATION - 452)) | (1L << (LABEL - 452)) | (1L << (DELIMITERS - 452)) | (1L << (HANDLER - 452)) | (1L << (HEADER - 452)) | (1L << (IMMUTABLE - 452)) | (1L << (GRANTED - 452)) | (1L << (HOLD - 452)) | (1L << (MAPPING - 452)) | (1L << (OLD - 452)) | (1L << (METHOD - 452)) | (1L << (LOAD - 452)) | (1L << (LISTEN - 452)) | (1L << (MODE - 452)) | (1L << (MOVE - 452)) | (1L << (PROCEDURAL - 452)) | (1L << (PARSER - 452)) | (1L << (PROCEDURES - 452)))) != 0) || ((((_la - 516)) & ~0x3f) == 0 && ((1L << (_la - 516)) & ((1L << (ENCRYPTED - 516)) | (1L << (PUBLICATION - 516)) | (1L << (PROGRAM - 516)) | (1L << (REFERENCING - 516)) | (1L << (PLANS - 516)) | (1L << (REINDEX - 516)) | (1L << (PRIOR - 516)) | (1L << (PASSWORD - 516)) | (1L << (RELATIVE - 516)) | (1L << (QUOTE - 516)) | (1L << (ROUTINES - 516)) | (1L << (REPLACE - 516)) | (1L << (SNAPSHOT - 516)) | (1L << (REFRESH - 516)) | (1L << (PREPARE - 516)) | (1L << (OPTIONS - 516)) | (1L << (IMPORT - 516)) | (1L << (INVOKER - 516)) | (1L << (NEW - 516)) | (1L << (PREPARED - 516)) | (1L << (SCROLL - 516)) | (1L << (SEQUENCES - 516)) | (1L << (SYSID - 516)) | (1L << (REASSIGN - 516)) | (1L << (SERVER - 516)) | (1L << (SUBSCRIPTION - 516)) | (1L << (SEARCH - 516)) | (1L << (SCHEMAS - 516)) | (1L << (RECHECK - 516)) | (1L << (POLICY - 516)) | (1L << (NOTIFY - 516)) | (1L << (LOCK - 516)) | (1L << (RELEASE - 516)) | (1L << (SERIALIZABLE - 516)) | (1L << (RETURNS - 516)) | (1L << (STATEMENT - 516)) | (1L << (STDIN - 516)) | (1L << (STDOUT - 516)) | (1L << (TABLES - 516)) | (1L << (SUPPORT - 516)) | (1L << (STABLE - 516)) | (1L << (TEMPLATE - 516)) | (1L << (UNENCRYPTED - 516)) | (1L << (VIEWS - 516)) | (1L << (UNCOMMITTED - 516)) | (1L << (TRANSFORM - 516)) | (1L << (UNLISTEN - 516)) | (1L << (TRUSTED - 516)) | (1L << (VALIDATOR - 516)) | (1L << (UNTIL - 516)) | (1L << (VACUUM - 516)) | (1L << (VOLATILE - 516)) | (1L << (STORED - 516)) | (1L << (WRITE - 516)) | (1L << (STRICT - 516)) | (1L << (TYPES - 516)) | (1L << (WRAPPER - 516)) | (1L << (WORK - 516)) | (1L << (FREEZE - 516)) | (1L << (AUTHORIZATION - 516)) | (1L << (VERBOSE - 516)) | (1L << (PARAM - 516)))) != 0) || ((((_la - 582)) & ~0x3f) == 0 && ((1L << (_la - 582)) & ((1L << (PREDICT - 582)) | (1L << (TS_REWRITE - 582)) | (1L << (INT16 - 582)) | (1L << (INT1 - 582)) | (1L << (ELEM_CONTAINED_BY_RANGE - 582)) | (1L << (LOWER_INF - 582)) | (1L << (UPPER_INF - 582)) | (1L << (ABBREV - 582)) | (1L << (SET_MASKLEN - 582)) | (1L << (TRUNC - 582)) | (1L << (IDENTIFIER_ - 582)) | (1L << (STRING_ - 582)) | (1L << (NUMBER_ - 582)))) != 0)) {
				{
				setState(10301);
				callClauses();
				}
			}

			setState(10304);
			match(RP_);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CallClausesContext extends ParserRuleContext {
		public FuncArgListContext funcArgList() {
			return getRuleContext(FuncArgListContext.class,0);
		}
		public SortClauseContext sortClause() {
			return getRuleContext(SortClauseContext.class,0);
		}
		public TerminalNode ALL() { return getToken(OpenGaussStatementParser.ALL, 0); }
		public TerminalNode DISTINCT() { return getToken(OpenGaussStatementParser.DISTINCT, 0); }
		public TerminalNode VARIADIC() { return getToken(OpenGaussStatementParser.VARIADIC, 0); }
		public FuncArgExprContext funcArgExpr() {
			return getRuleContext(FuncArgExprContext.class,0);
		}
		public TerminalNode COMMA_() { return getToken(OpenGaussStatementParser.COMMA_, 0); }
		public TerminalNode ASTERISK_() { return getToken(OpenGaussStatementParser.ASTERISK_, 0); }
		public CallClausesContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_callClauses; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof OpenGaussStatementVisitor ) return ((OpenGaussStatementVisitor)visitor).visitCallClauses(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CallClausesContext callClauses() throws RecognitionException {
		CallClausesContext _localctx = new CallClausesContext(_ctx, getState());
		enterRule(_localctx, 1526, RULE_callClauses);
		int _la;
		try {
			setState(10324);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,1009,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(10307);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==DISTINCT || _la==ALL) {
					{
					setState(10306);
					_la = _input.LA(1);
					if ( !(_la==DISTINCT || _la==ALL) ) {
					_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					}
				}

				setState(10309);
				funcArgList();
				setState(10311);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==ORDER) {
					{
					setState(10310);
					sortClause();
					}
				}

				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(10313);
				match(VARIADIC);
				setState(10314);
				funcArgExpr();
				setState(10315);
				sortClause();
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(10317);
				funcArgList();
				setState(10318);
				match(COMMA_);
				setState(10319);
				match(VARIADIC);
				setState(10320);
				funcArgExpr();
				setState(10321);
				sortClause();
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(10323);
				match(ASTERISK_);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public boolean sempred(RuleContext _localctx, int ruleIndex, int predIndex) {
		switch (ruleIndex) {
		case 24:
			return insertColumnList_sempred((InsertColumnListContext)_localctx, predIndex);
		case 29:
			return setClauseList_sempred((SetClauseListContext)_localctx, predIndex);
		case 32:
			return setTargetList_sempred((SetTargetListContext)_localctx, predIndex);
		case 40:
			return selectClauseN_sempred((SelectClauseNContext)_localctx, predIndex);
		case 51:
			return forLockingItems_sempred((ForLockingItemsContext)_localctx, predIndex);
		case 56:
			return qualifiedNameList_sempred((QualifiedNameListContext)_localctx, predIndex);
		case 58:
			return valuesClause_sempred((ValuesClauseContext)_localctx, predIndex);
		case 67:
			return targetList_sempred((TargetListContext)_localctx, predIndex);
		case 77:
			return windowDefinitionList_sempred((WindowDefinitionListContext)_localctx, predIndex);
		case 88:
			return fromList_sempred((FromListContext)_localctx, predIndex);
		case 89:
			return tableReference_sempred((TableReferenceContext)_localctx, predIndex);
		case 141:
			return aExpr_sempred((AExprContext)_localctx, predIndex);
		case 142:
			return bExpr_sempred((BExprContext)_localctx, predIndex);
		case 144:
			return indirection_sempred((IndirectionContext)_localctx, predIndex);
		case 145:
			return optIndirection_sempred((OptIndirectionContext)_localctx, predIndex);
		case 187:
			return xmlTableColumnOptionList_sempred((XmlTableColumnOptionListContext)_localctx, predIndex);
		case 200:
			return exprList_sempred((ExprListContext)_localctx, predIndex);
		case 213:
			return attrs_sempred((AttrsContext)_localctx, predIndex);
		case 221:
			return optArrayBounds_sempred((OptArrayBoundsContext)_localctx, predIndex);
		case 251:
			return nameList_sempred((NameListContext)_localctx, predIndex);
		case 286:
			return varName_sempred((VarNameContext)_localctx, predIndex);
		case 608:
			return tableLikeOptionList_sempred((TableLikeOptionListContext)_localctx, predIndex);
		}
		return true;
	}
	private boolean insertColumnList_sempred(InsertColumnListContext _localctx, int predIndex) {
		switch (predIndex) {
		case 0:
			return precpred(_ctx, 1);
		}
		return true;
	}
	private boolean setClauseList_sempred(SetClauseListContext _localctx, int predIndex) {
		switch (predIndex) {
		case 1:
			return precpred(_ctx, 1);
		}
		return true;
	}
	private boolean setTargetList_sempred(SetTargetListContext _localctx, int predIndex) {
		switch (predIndex) {
		case 2:
			return precpred(_ctx, 1);
		}
		return true;
	}
	private boolean selectClauseN_sempred(SelectClauseNContext _localctx, int predIndex) {
		switch (predIndex) {
		case 3:
			return precpred(_ctx, 2);
		case 4:
			return precpred(_ctx, 1);
		}
		return true;
	}
	private boolean forLockingItems_sempred(ForLockingItemsContext _localctx, int predIndex) {
		switch (predIndex) {
		case 5:
			return precpred(_ctx, 1);
		}
		return true;
	}
	private boolean qualifiedNameList_sempred(QualifiedNameListContext _localctx, int predIndex) {
		switch (predIndex) {
		case 6:
			return precpred(_ctx, 1);
		}
		return true;
	}
	private boolean valuesClause_sempred(ValuesClauseContext _localctx, int predIndex) {
		switch (predIndex) {
		case 7:
			return precpred(_ctx, 1);
		}
		return true;
	}
	private boolean targetList_sempred(TargetListContext _localctx, int predIndex) {
		switch (predIndex) {
		case 8:
			return precpred(_ctx, 1);
		}
		return true;
	}
	private boolean windowDefinitionList_sempred(WindowDefinitionListContext _localctx, int predIndex) {
		switch (predIndex) {
		case 9:
			return precpred(_ctx, 1);
		}
		return true;
	}
	private boolean fromList_sempred(FromListContext _localctx, int predIndex) {
		switch (predIndex) {
		case 10:
			return precpred(_ctx, 1);
		}
		return true;
	}
	private boolean tableReference_sempred(TableReferenceContext _localctx, int predIndex) {
		switch (predIndex) {
		case 11:
			return precpred(_ctx, 2);
		}
		return true;
	}
	private boolean aExpr_sempred(AExprContext _localctx, int predIndex) {
		switch (predIndex) {
		case 12:
			return precpred(_ctx, 57);
		case 13:
			return precpred(_ctx, 54);
		case 14:
			return precpred(_ctx, 53);
		case 15:
			return precpred(_ctx, 52);
		case 16:
			return precpred(_ctx, 51);
		case 17:
			return precpred(_ctx, 50);
		case 18:
			return precpred(_ctx, 49);
		case 19:
			return precpred(_ctx, 48);
		case 20:
			return precpred(_ctx, 45);
		case 21:
			return precpred(_ctx, 42);
		case 22:
			return precpred(_ctx, 41);
		case 23:
			return precpred(_ctx, 38);
		case 24:
			return precpred(_ctx, 37);
		case 25:
			return precpred(_ctx, 35);
		case 26:
			return precpred(_ctx, 34);
		case 27:
			return precpred(_ctx, 22);
		case 28:
			return precpred(_ctx, 21);
		case 29:
			return precpred(_ctx, 18);
		case 30:
			return precpred(_ctx, 17);
		case 31:
			return precpred(_ctx, 16);
		case 32:
			return precpred(_ctx, 15);
		case 33:
			return precpred(_ctx, 3);
		case 34:
			return precpred(_ctx, 2);
		case 35:
			return precpred(_ctx, 59);
		case 36:
			return precpred(_ctx, 58);
		case 37:
			return precpred(_ctx, 46);
		case 38:
			return precpred(_ctx, 39);
		case 39:
			return precpred(_ctx, 33);
		case 40:
			return precpred(_ctx, 32);
		case 41:
			return precpred(_ctx, 31);
		case 42:
			return precpred(_ctx, 30);
		case 43:
			return precpred(_ctx, 28);
		case 44:
			return precpred(_ctx, 27);
		case 45:
			return precpred(_ctx, 26);
		case 46:
			return precpred(_ctx, 25);
		case 47:
			return precpred(_ctx, 24);
		case 48:
			return precpred(_ctx, 23);
		case 49:
			return precpred(_ctx, 20);
		case 50:
			return precpred(_ctx, 19);
		case 51:
			return precpred(_ctx, 14);
		case 52:
			return precpred(_ctx, 13);
		case 53:
			return precpred(_ctx, 12);
		case 54:
			return precpred(_ctx, 11);
		case 55:
			return precpred(_ctx, 9);
		case 56:
			return precpred(_ctx, 8);
		case 57:
			return precpred(_ctx, 7);
		case 58:
			return precpred(_ctx, 6);
		case 59:
			return precpred(_ctx, 5);
		case 60:
			return precpred(_ctx, 4);
		}
		return true;
	}
	private boolean bExpr_sempred(BExprContext _localctx, int predIndex) {
		switch (predIndex) {
		case 61:
			return precpred(_ctx, 9);
		case 62:
			return precpred(_ctx, 6);
		case 63:
			return precpred(_ctx, 5);
		case 64:
			return precpred(_ctx, 12);
		case 65:
			return precpred(_ctx, 7);
		case 66:
			return precpred(_ctx, 4);
		case 67:
			return precpred(_ctx, 3);
		case 68:
			return precpred(_ctx, 2);
		case 69:
			return precpred(_ctx, 1);
		}
		return true;
	}
	private boolean indirection_sempred(IndirectionContext _localctx, int predIndex) {
		switch (predIndex) {
		case 70:
			return precpred(_ctx, 1);
		}
		return true;
	}
	private boolean optIndirection_sempred(OptIndirectionContext _localctx, int predIndex) {
		switch (predIndex) {
		case 71:
			return precpred(_ctx, 2);
		}
		return true;
	}
	private boolean xmlTableColumnOptionList_sempred(XmlTableColumnOptionListContext _localctx, int predIndex) {
		switch (predIndex) {
		case 72:
			return precpred(_ctx, 1);
		}
		return true;
	}
	private boolean exprList_sempred(ExprListContext _localctx, int predIndex) {
		switch (predIndex) {
		case 73:
			return precpred(_ctx, 1);
		}
		return true;
	}
	private boolean attrs_sempred(AttrsContext _localctx, int predIndex) {
		switch (predIndex) {
		case 74:
			return precpred(_ctx, 1);
		}
		return true;
	}
	private boolean optArrayBounds_sempred(OptArrayBoundsContext _localctx, int predIndex) {
		switch (predIndex) {
		case 75:
			return precpred(_ctx, 3);
		case 76:
			return precpred(_ctx, 2);
		}
		return true;
	}
	private boolean nameList_sempred(NameListContext _localctx, int predIndex) {
		switch (predIndex) {
		case 77:
			return precpred(_ctx, 1);
		}
		return true;
	}
	private boolean varName_sempred(VarNameContext _localctx, int predIndex) {
		switch (predIndex) {
		case 78:
			return precpred(_ctx, 1);
		}
		return true;
	}
	private boolean tableLikeOptionList_sempred(TableLikeOptionListContext _localctx, int predIndex) {
		switch (predIndex) {
		case 79:
			return precpred(_ctx, 2);
		}
		return true;
	}

	private static final String _serializedATNSegment0 =
		"\u0004\u0001\u0258\u2857\u0002\u0000\u0007\u0000\u0002\u0001\u0007\u0001"+
		"\u0002\u0002\u0007\u0002\u0002\u0003\u0007\u0003\u0002\u0004\u0007\u0004"+
		"\u0002\u0005\u0007\u0005\u0002\u0006\u0007\u0006\u0002\u0007\u0007\u0007"+
		"\u0002\b\u0007\b\u0002\t\u0007\t\u0002\n\u0007\n\u0002\u000b\u0007\u000b"+
		"\u0002\f\u0007\f\u0002\r\u0007\r\u0002\u000e\u0007\u000e\u0002\u000f\u0007"+
		"\u000f\u0002\u0010\u0007\u0010\u0002\u0011\u0007\u0011\u0002\u0012\u0007"+
		"\u0012\u0002\u0013\u0007\u0013\u0002\u0014\u0007\u0014\u0002\u0015\u0007"+
		"\u0015\u0002\u0016\u0007\u0016\u0002\u0017\u0007\u0017\u0002\u0018\u0007"+
		"\u0018\u0002\u0019\u0007\u0019\u0002\u001a\u0007\u001a\u0002\u001b\u0007"+
		"\u001b\u0002\u001c\u0007\u001c\u0002\u001d\u0007\u001d\u0002\u001e\u0007"+
		"\u001e\u0002\u001f\u0007\u001f\u0002 \u0007 \u0002!\u0007!\u0002\"\u0007"+
		"\"\u0002#\u0007#\u0002$\u0007$\u0002%\u0007%\u0002&\u0007&\u0002\'\u0007"+
		"\'\u0002(\u0007(\u0002)\u0007)\u0002*\u0007*\u0002+\u0007+\u0002,\u0007"+
		",\u0002-\u0007-\u0002.\u0007.\u0002/\u0007/\u00020\u00070\u00021\u0007"+
		"1\u00022\u00072\u00023\u00073\u00024\u00074\u00025\u00075\u00026\u0007"+
		"6\u00027\u00077\u00028\u00078\u00029\u00079\u0002:\u0007:\u0002;\u0007"+
		";\u0002<\u0007<\u0002=\u0007=\u0002>\u0007>\u0002?\u0007?\u0002@\u0007"+
		"@\u0002A\u0007A\u0002B\u0007B\u0002C\u0007C\u0002D\u0007D\u0002E\u0007"+
		"E\u0002F\u0007F\u0002G\u0007G\u0002H\u0007H\u0002I\u0007I\u0002J\u0007"+
		"J\u0002K\u0007K\u0002L\u0007L\u0002M\u0007M\u0002N\u0007N\u0002O\u0007"+
		"O\u0002P\u0007P\u0002Q\u0007Q\u0002R\u0007R\u0002S\u0007S\u0002T\u0007"+
		"T\u0002U\u0007U\u0002V\u0007V\u0002W\u0007W\u0002X\u0007X\u0002Y\u0007"+
		"Y\u0002Z\u0007Z\u0002[\u0007[\u0002\\\u0007\\\u0002]\u0007]\u0002^\u0007"+
		"^\u0002_\u0007_\u0002`\u0007`\u0002a\u0007a\u0002b\u0007b\u0002c\u0007"+
		"c\u0002d\u0007d\u0002e\u0007e\u0002f\u0007f\u0002g\u0007g\u0002h\u0007"+
		"h\u0002i\u0007i\u0002j\u0007j\u0002k\u0007k\u0002l\u0007l\u0002m\u0007"+
		"m\u0002n\u0007n\u0002o\u0007o\u0002p\u0007p\u0002q\u0007q\u0002r\u0007"+
		"r\u0002s\u0007s\u0002t\u0007t\u0002u\u0007u\u0002v\u0007v\u0002w\u0007"+
		"w\u0002x\u0007x\u0002y\u0007y\u0002z\u0007z\u0002{\u0007{\u0002|\u0007"+
		"|\u0002}\u0007}\u0002~\u0007~\u0002\u007f\u0007\u007f\u0002\u0080\u0007"+
		"\u0080\u0002\u0081\u0007\u0081\u0002\u0082\u0007\u0082\u0002\u0083\u0007"+
		"\u0083\u0002\u0084\u0007\u0084\u0002\u0085\u0007\u0085\u0002\u0086\u0007"+
		"\u0086\u0002\u0087\u0007\u0087\u0002\u0088\u0007\u0088\u0002\u0089\u0007"+
		"\u0089\u0002\u008a\u0007\u008a\u0002\u008b\u0007\u008b\u0002\u008c\u0007"+
		"\u008c\u0002\u008d\u0007\u008d\u0002\u008e\u0007\u008e\u0002\u008f\u0007"+
		"\u008f\u0002\u0090\u0007\u0090\u0002\u0091\u0007\u0091\u0002\u0092\u0007"+
		"\u0092\u0002\u0093\u0007\u0093\u0002\u0094\u0007\u0094\u0002\u0095\u0007"+
		"\u0095\u0002\u0096\u0007\u0096\u0002\u0097\u0007\u0097\u0002\u0098\u0007"+
		"\u0098\u0002\u0099\u0007\u0099\u0002\u009a\u0007\u009a\u0002\u009b\u0007"+
		"\u009b\u0002\u009c\u0007\u009c\u0002\u009d\u0007\u009d\u0002\u009e\u0007"+
		"\u009e\u0002\u009f\u0007\u009f\u0002\u00a0\u0007\u00a0\u0002\u00a1\u0007"+
		"\u00a1\u0002\u00a2\u0007\u00a2\u0002\u00a3\u0007\u00a3\u0002\u00a4\u0007"+
		"\u00a4\u0002\u00a5\u0007\u00a5\u0002\u00a6\u0007\u00a6\u0002\u00a7\u0007"+
		"\u00a7\u0002\u00a8\u0007\u00a8\u0002\u00a9\u0007\u00a9\u0002\u00aa\u0007"+
		"\u00aa\u0002\u00ab\u0007\u00ab\u0002\u00ac\u0007\u00ac\u0002\u00ad\u0007"+
		"\u00ad\u0002\u00ae\u0007\u00ae\u0002\u00af\u0007\u00af\u0002\u00b0\u0007"+
		"\u00b0\u0002\u00b1\u0007\u00b1\u0002\u00b2\u0007\u00b2\u0002\u00b3\u0007"+
		"\u00b3\u0002\u00b4\u0007\u00b4\u0002\u00b5\u0007\u00b5\u0002\u00b6\u0007"+
		"\u00b6\u0002\u00b7\u0007\u00b7\u0002\u00b8\u0007\u00b8\u0002\u00b9\u0007"+
		"\u00b9\u0002\u00ba\u0007\u00ba\u0002\u00bb\u0007\u00bb\u0002\u00bc\u0007"+
		"\u00bc\u0002\u00bd\u0007\u00bd\u0002\u00be\u0007\u00be\u0002\u00bf\u0007"+
		"\u00bf\u0002\u00c0\u0007\u00c0\u0002\u00c1\u0007\u00c1\u0002\u00c2\u0007"+
		"\u00c2\u0002\u00c3\u0007\u00c3\u0002\u00c4\u0007\u00c4\u0002\u00c5\u0007"+
		"\u00c5\u0002\u00c6\u0007\u00c6\u0002\u00c7\u0007\u00c7\u0002\u00c8\u0007"+
		"\u00c8\u0002\u00c9\u0007\u00c9\u0002\u00ca\u0007\u00ca\u0002\u00cb\u0007"+
		"\u00cb\u0002\u00cc\u0007\u00cc\u0002\u00cd\u0007\u00cd\u0002\u00ce\u0007"+
		"\u00ce\u0002\u00cf\u0007\u00cf\u0002\u00d0\u0007\u00d0\u0002\u00d1\u0007"+
		"\u00d1\u0002\u00d2\u0007\u00d2\u0002\u00d3\u0007\u00d3\u0002\u00d4\u0007"+
		"\u00d4\u0002\u00d5\u0007\u00d5\u0002\u00d6\u0007\u00d6\u0002\u00d7\u0007"+
		"\u00d7\u0002\u00d8\u0007\u00d8\u0002\u00d9\u0007\u00d9\u0002\u00da\u0007"+
		"\u00da\u0002\u00db\u0007\u00db\u0002\u00dc\u0007\u00dc\u0002\u00dd\u0007"+
		"\u00dd\u0002\u00de\u0007\u00de\u0002\u00df\u0007\u00df\u0002\u00e0\u0007"+
		"\u00e0\u0002\u00e1\u0007\u00e1\u0002\u00e2\u0007\u00e2\u0002\u00e3\u0007"+
		"\u00e3\u0002\u00e4\u0007\u00e4\u0002\u00e5\u0007\u00e5\u0002\u00e6\u0007"+
		"\u00e6\u0002\u00e7\u0007\u00e7\u0002\u00e8\u0007\u00e8\u0002\u00e9\u0007"+
		"\u00e9\u0002\u00ea\u0007\u00ea\u0002\u00eb\u0007\u00eb\u0002\u00ec\u0007"+
		"\u00ec\u0002\u00ed\u0007\u00ed\u0002\u00ee\u0007\u00ee\u0002\u00ef\u0007"+
		"\u00ef\u0002\u00f0\u0007\u00f0\u0002\u00f1\u0007\u00f1\u0002\u00f2\u0007"+
		"\u00f2\u0002\u00f3\u0007\u00f3\u0002\u00f4\u0007\u00f4\u0002\u00f5\u0007"+
		"\u00f5\u0002\u00f6\u0007\u00f6\u0002\u00f7\u0007\u00f7\u0002\u00f8\u0007"+
		"\u00f8\u0002\u00f9\u0007\u00f9\u0002\u00fa\u0007\u00fa\u0002\u00fb\u0007"+
		"\u00fb\u0002\u00fc\u0007\u00fc\u0002\u00fd\u0007\u00fd\u0002\u00fe\u0007"+
		"\u00fe\u0002\u00ff\u0007\u00ff\u0002\u0100\u0007\u0100\u0002\u0101\u0007"+
		"\u0101\u0002\u0102\u0007\u0102\u0002\u0103\u0007\u0103\u0002\u0104\u0007"+
		"\u0104\u0002\u0105\u0007\u0105\u0002\u0106\u0007\u0106\u0002\u0107\u0007"+
		"\u0107\u0002\u0108\u0007\u0108\u0002\u0109\u0007\u0109\u0002\u010a\u0007"+
		"\u010a\u0002\u010b\u0007\u010b\u0002\u010c\u0007\u010c\u0002\u010d\u0007"+
		"\u010d\u0002\u010e\u0007\u010e\u0002\u010f\u0007\u010f\u0002\u0110\u0007"+
		"\u0110\u0002\u0111\u0007\u0111\u0002\u0112\u0007\u0112\u0002\u0113\u0007"+
		"\u0113\u0002\u0114\u0007\u0114\u0002\u0115\u0007\u0115\u0002\u0116\u0007"+
		"\u0116\u0002\u0117\u0007\u0117\u0002\u0118\u0007\u0118\u0002\u0119\u0007"+
		"\u0119\u0002\u011a\u0007\u011a\u0002\u011b\u0007\u011b\u0002\u011c\u0007"+
		"\u011c\u0002\u011d\u0007\u011d\u0002\u011e\u0007\u011e\u0002\u011f\u0007"+
		"\u011f\u0002\u0120\u0007\u0120\u0002\u0121\u0007\u0121\u0002\u0122\u0007"+
		"\u0122\u0002\u0123\u0007\u0123\u0002\u0124\u0007\u0124\u0002\u0125\u0007"+
		"\u0125\u0002\u0126\u0007\u0126\u0002\u0127\u0007\u0127\u0002\u0128\u0007"+
		"\u0128\u0002\u0129\u0007\u0129\u0002\u012a\u0007\u012a\u0002\u012b\u0007"+
		"\u012b\u0002\u012c\u0007\u012c\u0002\u012d\u0007\u012d\u0002\u012e\u0007"+
		"\u012e\u0002\u012f\u0007\u012f\u0002\u0130\u0007\u0130\u0002\u0131\u0007"+
		"\u0131\u0002\u0132\u0007\u0132\u0002\u0133\u0007\u0133\u0002\u0134\u0007"+
		"\u0134\u0002\u0135\u0007\u0135\u0002\u0136\u0007\u0136\u0002\u0137\u0007"+
		"\u0137\u0002\u0138\u0007\u0138\u0002\u0139\u0007\u0139\u0002\u013a\u0007"+
		"\u013a\u0002\u013b\u0007\u013b\u0002\u013c\u0007\u013c\u0002\u013d\u0007"+
		"\u013d\u0002\u013e\u0007\u013e\u0002\u013f\u0007\u013f\u0002\u0140\u0007"+
		"\u0140\u0002\u0141\u0007\u0141\u0002\u0142\u0007\u0142\u0002\u0143\u0007"+
		"\u0143\u0002\u0144\u0007\u0144\u0002\u0145\u0007\u0145\u0002\u0146\u0007"+
		"\u0146\u0002\u0147\u0007\u0147\u0002\u0148\u0007\u0148\u0002\u0149\u0007"+
		"\u0149\u0002\u014a\u0007\u014a\u0002\u014b\u0007\u014b\u0002\u014c\u0007"+
		"\u014c\u0002\u014d\u0007\u014d\u0002\u014e\u0007\u014e\u0002\u014f\u0007"+
		"\u014f\u0002\u0150\u0007\u0150\u0002\u0151\u0007\u0151\u0002\u0152\u0007"+
		"\u0152\u0002\u0153\u0007\u0153\u0002\u0154\u0007\u0154\u0002\u0155\u0007"+
		"\u0155\u0002\u0156\u0007\u0156\u0002\u0157\u0007\u0157\u0002\u0158\u0007"+
		"\u0158\u0002\u0159\u0007\u0159\u0002\u015a\u0007\u015a\u0002\u015b\u0007"+
		"\u015b\u0002\u015c\u0007\u015c\u0002\u015d\u0007\u015d\u0002\u015e\u0007"+
		"\u015e\u0002\u015f\u0007\u015f\u0002\u0160\u0007\u0160\u0002\u0161\u0007"+
		"\u0161\u0002\u0162\u0007\u0162\u0002\u0163\u0007\u0163\u0002\u0164\u0007"+
		"\u0164\u0002\u0165\u0007\u0165\u0002\u0166\u0007\u0166\u0002\u0167\u0007"+
		"\u0167\u0002\u0168\u0007\u0168\u0002\u0169\u0007\u0169\u0002\u016a\u0007"+
		"\u016a\u0002\u016b\u0007\u016b\u0002\u016c\u0007\u016c\u0002\u016d\u0007"+
		"\u016d\u0002\u016e\u0007\u016e\u0002\u016f\u0007\u016f\u0002\u0170\u0007"+
		"\u0170\u0002\u0171\u0007\u0171\u0002\u0172\u0007\u0172\u0002\u0173\u0007"+
		"\u0173\u0002\u0174\u0007\u0174\u0002\u0175\u0007\u0175\u0002\u0176\u0007"+
		"\u0176\u0002\u0177\u0007\u0177\u0002\u0178\u0007\u0178\u0002\u0179\u0007"+
		"\u0179\u0002\u017a\u0007\u017a\u0002\u017b\u0007\u017b\u0002\u017c\u0007"+
		"\u017c\u0002\u017d\u0007\u017d\u0002\u017e\u0007\u017e\u0002\u017f\u0007"+
		"\u017f\u0002\u0180\u0007\u0180\u0002\u0181\u0007\u0181\u0002\u0182\u0007"+
		"\u0182\u0002\u0183\u0007\u0183\u0002\u0184\u0007\u0184\u0002\u0185\u0007"+
		"\u0185\u0002\u0186\u0007\u0186\u0002\u0187\u0007\u0187\u0002\u0188\u0007"+
		"\u0188\u0002\u0189\u0007\u0189\u0002\u018a\u0007\u018a\u0002\u018b\u0007"+
		"\u018b\u0002\u018c\u0007\u018c\u0002\u018d\u0007\u018d\u0002\u018e\u0007"+
		"\u018e\u0002\u018f\u0007\u018f\u0002\u0190\u0007\u0190\u0002\u0191\u0007"+
		"\u0191\u0002\u0192\u0007\u0192\u0002\u0193\u0007\u0193\u0002\u0194\u0007"+
		"\u0194\u0002\u0195\u0007\u0195\u0002\u0196\u0007\u0196\u0002\u0197\u0007"+
		"\u0197\u0002\u0198\u0007\u0198\u0002\u0199\u0007\u0199\u0002\u019a\u0007"+
		"\u019a\u0002\u019b\u0007\u019b\u0002\u019c\u0007\u019c\u0002\u019d\u0007"+
		"\u019d\u0002\u019e\u0007\u019e\u0002\u019f\u0007\u019f\u0002\u01a0\u0007"+
		"\u01a0\u0002\u01a1\u0007\u01a1\u0002\u01a2\u0007\u01a2\u0002\u01a3\u0007"+
		"\u01a3\u0002\u01a4\u0007\u01a4\u0002\u01a5\u0007\u01a5\u0002\u01a6\u0007"+
		"\u01a6\u0002\u01a7\u0007\u01a7\u0002\u01a8\u0007\u01a8\u0002\u01a9\u0007"+
		"\u01a9\u0002\u01aa\u0007\u01aa\u0002\u01ab\u0007\u01ab\u0002\u01ac\u0007"+
		"\u01ac\u0002\u01ad\u0007\u01ad\u0002\u01ae\u0007\u01ae\u0002\u01af\u0007"+
		"\u01af\u0002\u01b0\u0007\u01b0\u0002\u01b1\u0007\u01b1\u0002\u01b2\u0007"+
		"\u01b2\u0002\u01b3\u0007\u01b3\u0002\u01b4\u0007\u01b4\u0002\u01b5\u0007"+
		"\u01b5\u0002\u01b6\u0007\u01b6\u0002\u01b7\u0007\u01b7\u0002\u01b8\u0007"+
		"\u01b8\u0002\u01b9\u0007\u01b9\u0002\u01ba\u0007\u01ba\u0002\u01bb\u0007"+
		"\u01bb\u0002\u01bc\u0007\u01bc\u0002\u01bd\u0007\u01bd\u0002\u01be\u0007"+
		"\u01be\u0002\u01bf\u0007\u01bf\u0002\u01c0\u0007\u01c0\u0002\u01c1\u0007"+
		"\u01c1\u0002\u01c2\u0007\u01c2\u0002\u01c3\u0007\u01c3\u0002\u01c4\u0007"+
		"\u01c4\u0002\u01c5\u0007\u01c5\u0002\u01c6\u0007\u01c6\u0002\u01c7\u0007"+
		"\u01c7\u0002\u01c8\u0007\u01c8\u0002\u01c9\u0007\u01c9\u0002\u01ca\u0007"+
		"\u01ca\u0002\u01cb\u0007\u01cb\u0002\u01cc\u0007\u01cc\u0002\u01cd\u0007"+
		"\u01cd\u0002\u01ce\u0007\u01ce\u0002\u01cf\u0007\u01cf\u0002\u01d0\u0007"+
		"\u01d0\u0002\u01d1\u0007\u01d1\u0002\u01d2\u0007\u01d2\u0002\u01d3\u0007"+
		"\u01d3\u0002\u01d4\u0007\u01d4\u0002\u01d5\u0007\u01d5\u0002\u01d6\u0007"+
		"\u01d6\u0002\u01d7\u0007\u01d7\u0002\u01d8\u0007\u01d8\u0002\u01d9\u0007"+
		"\u01d9\u0002\u01da\u0007\u01da\u0002\u01db\u0007\u01db\u0002\u01dc\u0007"+
		"\u01dc\u0002\u01dd\u0007\u01dd\u0002\u01de\u0007\u01de\u0002\u01df\u0007"+
		"\u01df\u0002\u01e0\u0007\u01e0\u0002\u01e1\u0007\u01e1\u0002\u01e2\u0007"+
		"\u01e2\u0002\u01e3\u0007\u01e3\u0002\u01e4\u0007\u01e4\u0002\u01e5\u0007"+
		"\u01e5\u0002\u01e6\u0007\u01e6\u0002\u01e7\u0007\u01e7\u0002\u01e8\u0007"+
		"\u01e8\u0002\u01e9\u0007\u01e9\u0002\u01ea\u0007\u01ea\u0002\u01eb\u0007"+
		"\u01eb\u0002\u01ec\u0007\u01ec\u0002\u01ed\u0007\u01ed\u0002\u01ee\u0007"+
		"\u01ee\u0002\u01ef\u0007\u01ef\u0002\u01f0\u0007\u01f0\u0002\u01f1\u0007"+
		"\u01f1\u0002\u01f2\u0007\u01f2\u0002\u01f3\u0007\u01f3\u0002\u01f4\u0007"+
		"\u01f4\u0002\u01f5\u0007\u01f5\u0002\u01f6\u0007\u01f6\u0002\u01f7\u0007"+
		"\u01f7\u0002\u01f8\u0007\u01f8\u0002\u01f9\u0007\u01f9\u0002\u01fa\u0007"+
		"\u01fa\u0002\u01fb\u0007\u01fb\u0002\u01fc\u0007\u01fc\u0002\u01fd\u0007"+
		"\u01fd\u0002\u01fe\u0007\u01fe\u0002\u01ff\u0007\u01ff\u0002\u0200\u0007"+
		"\u0200\u0002\u0201\u0007\u0201\u0002\u0202\u0007\u0202\u0002\u0203\u0007"+
		"\u0203\u0002\u0204\u0007\u0204\u0002\u0205\u0007\u0205\u0002\u0206\u0007"+
		"\u0206\u0002\u0207\u0007\u0207\u0002\u0208\u0007\u0208\u0002\u0209\u0007"+
		"\u0209\u0002\u020a\u0007\u020a\u0002\u020b\u0007\u020b\u0002\u020c\u0007"+
		"\u020c\u0002\u020d\u0007\u020d\u0002\u020e\u0007\u020e\u0002\u020f\u0007"+
		"\u020f\u0002\u0210\u0007\u0210\u0002\u0211\u0007\u0211\u0002\u0212\u0007"+
		"\u0212\u0002\u0213\u0007\u0213\u0002\u0214\u0007\u0214\u0002\u0215\u0007"+
		"\u0215\u0002\u0216\u0007\u0216\u0002\u0217\u0007\u0217\u0002\u0218\u0007"+
		"\u0218\u0002\u0219\u0007\u0219\u0002\u021a\u0007\u021a\u0002\u021b\u0007"+
		"\u021b\u0002\u021c\u0007\u021c\u0002\u021d\u0007\u021d\u0002\u021e\u0007"+
		"\u021e\u0002\u021f\u0007\u021f\u0002\u0220\u0007\u0220\u0002\u0221\u0007"+
		"\u0221\u0002\u0222\u0007\u0222\u0002\u0223\u0007\u0223\u0002\u0224\u0007"+
		"\u0224\u0002\u0225\u0007\u0225\u0002\u0226\u0007\u0226\u0002\u0227\u0007"+
		"\u0227\u0002\u0228\u0007\u0228\u0002\u0229\u0007\u0229\u0002\u022a\u0007"+
		"\u022a\u0002\u022b\u0007\u022b\u0002\u022c\u0007\u022c\u0002\u022d\u0007"+
		"\u022d\u0002\u022e\u0007\u022e\u0002\u022f\u0007\u022f\u0002\u0230\u0007"+
		"\u0230\u0002\u0231\u0007\u0231\u0002\u0232\u0007\u0232\u0002\u0233\u0007"+
		"\u0233\u0002\u0234\u0007\u0234\u0002\u0235\u0007\u0235\u0002\u0236\u0007"+
		"\u0236\u0002\u0237\u0007\u0237\u0002\u0238\u0007\u0238\u0002\u0239\u0007"+
		"\u0239\u0002\u023a\u0007\u023a\u0002\u023b\u0007\u023b\u0002\u023c\u0007"+
		"\u023c\u0002\u023d\u0007\u023d\u0002\u023e\u0007\u023e\u0002\u023f\u0007"+
		"\u023f\u0002\u0240\u0007\u0240\u0002\u0241\u0007\u0241\u0002\u0242\u0007"+
		"\u0242\u0002\u0243\u0007\u0243\u0002\u0244\u0007\u0244\u0002\u0245\u0007"+
		"\u0245\u0002\u0246\u0007\u0246\u0002\u0247\u0007\u0247\u0002\u0248\u0007"+
		"\u0248\u0002\u0249\u0007\u0249\u0002\u024a\u0007\u024a\u0002\u024b\u0007"+
		"\u024b\u0002\u024c\u0007\u024c\u0002\u024d\u0007\u024d\u0002\u024e\u0007"+
		"\u024e\u0002\u024f\u0007\u024f\u0002\u0250\u0007\u0250\u0002\u0251\u0007"+
		"\u0251\u0002\u0252\u0007\u0252\u0002\u0253\u0007\u0253\u0002\u0254\u0007"+
		"\u0254\u0002\u0255\u0007\u0255\u0002\u0256\u0007\u0256\u0002\u0257\u0007"+
		"\u0257\u0002\u0258\u0007\u0258\u0002\u0259\u0007\u0259\u0002\u025a\u0007"+
		"\u025a\u0002\u025b\u0007\u025b\u0002\u025c\u0007\u025c\u0002\u025d\u0007"+
		"\u025d\u0002\u025e\u0007\u025e\u0002\u025f\u0007\u025f\u0002\u0260\u0007"+
		"\u0260\u0002\u0261\u0007\u0261\u0002\u0262\u0007\u0262\u0002\u0263\u0007"+
		"\u0263\u0002\u0264\u0007\u0264\u0002\u0265\u0007\u0265\u0002\u0266\u0007"+
		"\u0266\u0002\u0267\u0007\u0267\u0002\u0268\u0007\u0268\u0002\u0269\u0007"+
		"\u0269\u0002\u026a\u0007\u026a\u0002\u026b\u0007\u026b\u0002\u026c\u0007"+
		"\u026c\u0002\u026d\u0007\u026d\u0002\u026e\u0007\u026e\u0002\u026f\u0007"+
		"\u026f\u0002\u0270\u0007\u0270\u0002\u0271\u0007\u0271\u0002\u0272\u0007"+
		"\u0272\u0002\u0273\u0007\u0273\u0002\u0274\u0007\u0274\u0002\u0275\u0007"+
		"\u0275\u0002\u0276\u0007\u0276\u0002\u0277\u0007\u0277\u0002\u0278\u0007"+
		"\u0278\u0002\u0279\u0007\u0279\u0002\u027a\u0007\u027a\u0002\u027b\u0007"+
		"\u027b\u0002\u027c\u0007\u027c\u0002\u027d\u0007\u027d\u0002\u027e\u0007"+
		"\u027e\u0002\u027f\u0007\u027f\u0002\u0280\u0007\u0280\u0002\u0281\u0007"+
		"\u0281\u0002\u0282\u0007\u0282\u0002\u0283\u0007\u0283\u0002\u0284\u0007"+
		"\u0284\u0002\u0285\u0007\u0285\u0002\u0286\u0007\u0286\u0002\u0287\u0007"+
		"\u0287\u0002\u0288\u0007\u0288\u0002\u0289\u0007\u0289\u0002\u028a\u0007"+
		"\u028a\u0002\u028b\u0007\u028b\u0002\u028c\u0007\u028c\u0002\u028d\u0007"+
		"\u028d\u0002\u028e\u0007\u028e\u0002\u028f\u0007\u028f\u0002\u0290\u0007"+
		"\u0290\u0002\u0291\u0007\u0291\u0002\u0292\u0007\u0292\u0002\u0293\u0007"+
		"\u0293\u0002\u0294\u0007\u0294\u0002\u0295\u0007\u0295\u0002\u0296\u0007"+
		"\u0296\u0002\u0297\u0007\u0297\u0002\u0298\u0007\u0298\u0002\u0299\u0007"+
		"\u0299\u0002\u029a\u0007\u029a\u0002\u029b\u0007\u029b\u0002\u029c\u0007"+
		"\u029c\u0002\u029d\u0007\u029d\u0002\u029e\u0007\u029e\u0002\u029f\u0007"+
		"\u029f\u0002\u02a0\u0007\u02a0\u0002\u02a1\u0007\u02a1\u0002\u02a2\u0007"+
		"\u02a2\u0002\u02a3\u0007\u02a3\u0002\u02a4\u0007\u02a4\u0002\u02a5\u0007"+
		"\u02a5\u0002\u02a6\u0007\u02a6\u0002\u02a7\u0007\u02a7\u0002\u02a8\u0007"+
		"\u02a8\u0002\u02a9\u0007\u02a9\u0002\u02aa\u0007\u02aa\u0002\u02ab\u0007"+
		"\u02ab\u0002\u02ac\u0007\u02ac\u0002\u02ad\u0007\u02ad\u0002\u02ae\u0007"+
		"\u02ae\u0002\u02af\u0007\u02af\u0002\u02b0\u0007\u02b0\u0002\u02b1\u0007"+
		"\u02b1\u0002\u02b2\u0007\u02b2\u0002\u02b3\u0007\u02b3\u0002\u02b4\u0007"+
		"\u02b4\u0002\u02b5\u0007\u02b5\u0002\u02b6\u0007\u02b6\u0002\u02b7\u0007"+
		"\u02b7\u0002\u02b8\u0007\u02b8\u0002\u02b9\u0007\u02b9\u0002\u02ba\u0007"+
		"\u02ba\u0002\u02bb\u0007\u02bb\u0002\u02bc\u0007\u02bc\u0002\u02bd\u0007"+
		"\u02bd\u0002\u02be\u0007\u02be\u0002\u02bf\u0007\u02bf\u0002\u02c0\u0007"+
		"\u02c0\u0002\u02c1\u0007\u02c1\u0002\u02c2\u0007\u02c2\u0002\u02c3\u0007"+
		"\u02c3\u0002\u02c4\u0007\u02c4\u0002\u02c5\u0007\u02c5\u0002\u02c6\u0007"+
		"\u02c6\u0002\u02c7\u0007\u02c7\u0002\u02c8\u0007\u02c8\u0002\u02c9\u0007"+
		"\u02c9\u0002\u02ca\u0007\u02ca\u0002\u02cb\u0007\u02cb\u0002\u02cc\u0007"+
		"\u02cc\u0002\u02cd\u0007\u02cd\u0002\u02ce\u0007\u02ce\u0002\u02cf\u0007"+
		"\u02cf\u0002\u02d0\u0007\u02d0\u0002\u02d1\u0007\u02d1\u0002\u02d2\u0007"+
		"\u02d2\u0002\u02d3\u0007\u02d3\u0002\u02d4\u0007\u02d4\u0002\u02d5\u0007"+
		"\u02d5\u0002\u02d6\u0007\u02d6\u0002\u02d7\u0007\u02d7\u0002\u02d8\u0007"+
		"\u02d8\u0002\u02d9\u0007\u02d9\u0002\u02da\u0007\u02da\u0002\u02db\u0007"+
		"\u02db\u0002\u02dc\u0007\u02dc\u0002\u02dd\u0007\u02dd\u0002\u02de\u0007"+
		"\u02de\u0002\u02df\u0007\u02df\u0002\u02e0\u0007\u02e0\u0002\u02e1\u0007"+
		"\u02e1\u0002\u02e2\u0007\u02e2\u0002\u02e3\u0007\u02e3\u0002\u02e4\u0007"+
		"\u02e4\u0002\u02e5\u0007\u02e5\u0002\u02e6\u0007\u02e6\u0002\u02e7\u0007"+
		"\u02e7\u0002\u02e8\u0007\u02e8\u0002\u02e9\u0007\u02e9\u0002\u02ea\u0007"+
		"\u02ea\u0002\u02eb\u0007\u02eb\u0002\u02ec\u0007\u02ec\u0002\u02ed\u0007"+
		"\u02ed\u0002\u02ee\u0007\u02ee\u0002\u02ef\u0007\u02ef\u0002\u02f0\u0007"+
		"\u02f0\u0002\u02f1\u0007\u02f1\u0002\u02f2\u0007\u02f2\u0002\u02f3\u0007"+
		"\u02f3\u0002\u02f4\u0007\u02f4\u0002\u02f5\u0007\u02f5\u0002\u02f6\u0007"+
		"\u02f6\u0002\u02f7\u0007\u02f7\u0002\u02f8\u0007\u02f8\u0002\u02f9\u0007"+
		"\u02f9\u0002\u02fa\u0007\u02fa\u0002\u02fb\u0007\u02fb\u0001\u0000\u0001"+
		"\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001"+
		"\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001"+
		"\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001"+
		"\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001"+
		"\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001"+
		"\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001"+
		"\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001"+
		"\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001"+
		"\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001"+
		"\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001"+
		"\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001"+
		"\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001"+
		"\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001"+
		"\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001"+
		"\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001"+
		"\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001"+
		"\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001"+
		"\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001"+
		"\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001"+
		"\u0000\u0001\u0000\u0001\u0000\u0003\u0000\u066f\b\u0000\u0001\u0000\u0003"+
		"\u0000\u0672\b\u0000\u0001\u0000\u0001\u0000\u0001\u0001\u0001\u0001\u0001"+
		"\u0001\u0001\u0001\u0003\u0001\u067a\b\u0001\u0001\u0001\u0001\u0001\u0001"+
		"\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0003\u0001\u0682\b\u0001\u0001"+
		"\u0002\u0001\u0002\u0003\u0002\u0686\b\u0002\u0001\u0002\u0003\u0002\u0689"+
		"\b\u0002\u0001\u0003\u0001\u0003\u0003\u0003\u068d\b\u0003\u0001\u0003"+
		"\u0001\u0003\u0003\u0003\u0691\b\u0003\u0001\u0003\u0003\u0003\u0694\b"+
		"\u0003\u0001\u0004\u0001\u0004\u0001\u0004\u0001\u0005\u0001\u0005\u0003"+
		"\u0005\u069b\b\u0005\u0001\u0005\u0001\u0005\u0003\u0005\u069f\b\u0005"+
		"\u0001\u0005\u0003\u0005\u06a2\b\u0005\u0001\u0006\u0001\u0006\u0001\u0006"+
		"\u0003\u0006\u06a7\b\u0006\u0001\u0007\u0001\u0007\u0003\u0007\u06ab\b"+
		"\u0007\u0001\u0007\u0001\u0007\u0003\u0007\u06af\b\u0007\u0001\u0007\u0003"+
		"\u0007\u06b2\b\u0007\u0001\b\u0001\b\u0003\b\u06b6\b\b\u0001\b\u0001\b"+
		"\u0003\b\u06ba\b\b\u0001\b\u0003\b\u06bd\b\b\u0001\t\u0001\t\u0003\t\u06c1"+
		"\b\t\u0001\t\u0001\t\u0001\n\u0001\n\u0003\n\u06c7\b\n\u0001\n\u0001\n"+
		"\u0003\n\u06cb\b\n\u0001\n\u0001\n\u0001\u000b\u0001\u000b\u0001\u000b"+
		"\u0001\u000b\u0001\f\u0001\f\u0001\f\u0001\f\u0001\r\u0001\r\u0001\r\u0001"+
		"\r\u0001\u000e\u0001\u000e\u0001\u000e\u0001\u000e\u0001\u000e\u0001\u000f"+
		"\u0001\u000f\u0001\u0010\u0001\u0010\u0003\u0010\u06e4\b\u0010\u0001\u0011"+
		"\u0001\u0011\u0001\u0012\u0001\u0012\u0003\u0012\u06ea\b\u0012\u0001\u0012"+
		"\u0001\u0012\u0001\u0012\u0001\u0012\u0001\u0012\u0003\u0012\u06f1\b\u0012"+
		"\u0001\u0012\u0003\u0012\u06f4\b\u0012\u0001\u0013\u0001\u0013\u0001\u0013"+
		"\u0001\u0013\u0001\u0013\u0001\u0013\u0001\u0013\u0001\u0013\u0001\u0013"+
		"\u0001\u0013\u0001\u0013\u0001\u0013\u0001\u0013\u0001\u0013\u0001\u0013"+
		"\u0001\u0013\u0003\u0013\u0706\b\u0013\u0001\u0014\u0003\u0014\u0709\b"+
		"\u0014\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0014\u0003"+
		"\u0014\u0710\b\u0014\u0001\u0014\u0003\u0014\u0713\b\u0014\u0001\u0015"+
		"\u0001\u0015\u0001\u0015\u0001\u0015\u0001\u0015\u0003\u0015\u071a\b\u0015"+
		"\u0001\u0016\u0001\u0016\u0001\u0016\u0001\u0016\u0001\u0016\u0001\u0016"+
		"\u0001\u0016\u0001\u0016\u0001\u0016\u0001\u0016\u0001\u0016\u0001\u0016"+
		"\u0001\u0016\u0001\u0016\u0001\u0016\u0001\u0016\u0001\u0016\u0001\u0016"+
		"\u0001\u0016\u0001\u0016\u0001\u0016\u0003\u0016\u0731\b\u0016\u0001\u0017"+
		"\u0001\u0017\u0001\u0018\u0001\u0018\u0001\u0018\u0001\u0018\u0001\u0018"+
		"\u0001\u0018\u0005\u0018\u073b\b\u0018\n\u0018\f\u0018\u073e\t\u0018\u0001"+
		"\u0019\u0001\u0019\u0001\u0019\u0001\u001a\u0001\u001a\u0001\u001a\u0001"+
		"\u001a\u0001\u001a\u0001\u001a\u0001\u001a\u0005\u001a\u074a\b\u001a\n"+
		"\u001a\f\u001a\u074d\t\u001a\u0001\u001a\u0001\u001a\u0001\u001a\u0001"+
		"\u001a\u0001\u001a\u0003\u001a\u0754\b\u001a\u0001\u001b\u0001\u001b\u0001"+
		"\u001b\u0001\u001b\u0001\u001b\u0001\u001b\u0001\u001b\u0001\u001b\u0001"+
		"\u001b\u0001\u001b\u0001\u001b\u0003\u001b\u0761\b\u001b\u0001\u001c\u0003"+
		"\u001c\u0764\b\u001c\u0001\u001c\u0001\u001c\u0001\u001c\u0001\u001c\u0001"+
		"\u001c\u0003\u001c\u076b\b\u001c\u0001\u001c\u0003\u001c\u076e\b\u001c"+
		"\u0001\u001c\u0003\u001c\u0771\b\u001c\u0001\u001d\u0001\u001d\u0001\u001d"+
		"\u0001\u001d\u0001\u001d\u0001\u001d\u0005\u001d\u0779\b\u001d\n\u001d"+
		"\f\u001d\u077c\t\u001d\u0001\u001e\u0001\u001e\u0001\u001e\u0001\u001e"+
		"\u0001\u001e\u0001\u001e\u0001\u001e\u0001\u001e\u0001\u001e\u0001\u001e"+
		"\u0003\u001e\u0788\b\u001e\u0001\u001f\u0001\u001f\u0001\u001f\u0003\u001f"+
		"\u078d\b\u001f\u0001 \u0001 \u0001 \u0001 \u0001 \u0001 \u0005 \u0795"+
		"\b \n \f \u0798\t \u0001!\u0001!\u0001!\u0001\"\u0003\"\u079e\b\"\u0001"+
		"\"\u0001\"\u0001\"\u0001\"\u0003\"\u07a4\b\"\u0001\"\u0003\"\u07a7\b\""+
		"\u0001\"\u0003\"\u07aa\b\"\u0001#\u0001#\u0001#\u0001#\u0001#\u0001#\u0001"+
		"#\u0001#\u0003#\u07b4\b#\u0001$\u0001$\u0001$\u0001%\u0001%\u0003%\u07bb"+
		"\b%\u0001&\u0001&\u0001&\u0001&\u0001&\u0001&\u0001&\u0001&\u0003&\u07c5"+
		"\b&\u0001\'\u0001\'\u0003\'\u07c9\b\'\u0001\'\u0001\'\u0003\'\u07cd\b"+
		"\'\u0001\'\u0001\'\u0003\'\u07d1\b\'\u0003\'\u07d3\b\'\u0001\'\u0001\'"+
		"\u0001\'\u0001\'\u0001\'\u0001\'\u0001\'\u0001\'\u0001\'\u0001\'\u0003"+
		"\'\u07df\b\'\u0001\'\u0001\'\u0003\'\u07e3\b\'\u0001\'\u0001\'\u0001\'"+
		"\u0003\'\u07e8\b\'\u0001\'\u0001\'\u0003\'\u07ec\b\'\u0003\'\u07ee\b\'"+
		"\u0001(\u0001(\u0001(\u0003(\u07f3\b(\u0001(\u0001(\u0001(\u0003(\u07f8"+
		"\b(\u0001(\u0001(\u0001(\u0001(\u0003(\u07fe\b(\u0001(\u0005(\u0801\b"+
		"(\n(\f(\u0804\t(\u0001)\u0001)\u0003)\u0808\b)\u0001)\u0003)\u080b\b)"+
		"\u0001)\u0003)\u080e\b)\u0001)\u0003)\u0811\b)\u0001)\u0003)\u0814\b)"+
		"\u0001)\u0003)\u0817\b)\u0001)\u0003)\u081a\b)\u0001)\u0003)\u081d\b)"+
		"\u0001)\u0001)\u0001)\u0001)\u0003)\u0823\b)\u0001)\u0003)\u0826\b)\u0001"+
		")\u0003)\u0829\b)\u0001)\u0003)\u082c\b)\u0001)\u0003)\u082f\b)\u0001"+
		")\u0003)\u0832\b)\u0001)\u0001)\u0001)\u0003)\u0837\b)\u0001*\u0001*\u0001"+
		"*\u0001*\u0001*\u0003*\u083e\b*\u0001+\u0001+\u0001+\u0001,\u0001,\u0003"+
		",\u0845\b,\u0001,\u0001,\u0001,\u0003,\u084a\b,\u0001,\u0001,\u0001,\u0001"+
		",\u0003,\u0850\b,\u0001,\u0001,\u0001,\u0001,\u0003,\u0856\b,\u0001,\u0001"+
		",\u0001,\u0001,\u0003,\u085c\b,\u0001,\u0001,\u0001,\u0001,\u0003,\u0862"+
		"\b,\u0001,\u0001,\u0001,\u0003,\u0867\b,\u0001,\u0001,\u0003,\u086b\b"+
		",\u0001,\u0001,\u0003,\u086f\b,\u0001-\u0001-\u0001-\u0005-\u0874\b-\n"+
		"-\f-\u0877\t-\u0001.\u0001.\u0001.\u0001.\u0001.\u0001.\u0001.\u0001."+
		"\u0001/\u0001/\u0001/\u0001/\u0003/\u0885\b/\u00010\u00010\u00010\u0001"+
		"0\u00010\u00030\u088c\b0\u00011\u00011\u00011\u00011\u00031\u0892\b1\u0001"+
		"2\u00012\u00012\u00012\u00032\u0898\b2\u00013\u00013\u00013\u00013\u0001"+
		"3\u00053\u089f\b3\n3\f3\u08a2\t3\u00014\u00014\u00034\u08a6\b4\u00014"+
		"\u00034\u08a9\b4\u00015\u00015\u00015\u00035\u08ae\b5\u00016\u00016\u0001"+
		"6\u00016\u00016\u00016\u00016\u00016\u00016\u00016\u00016\u00036\u08bb"+
		"\b6\u00017\u00017\u00017\u00018\u00018\u00018\u00018\u00018\u00018\u0005"+
		"8\u08c6\b8\n8\f8\u08c9\t8\u00019\u00019\u00039\u08cd\b9\u00019\u00019"+
		"\u00039\u08d1\b9\u00039\u08d3\b9\u0001:\u0001:\u0001:\u0001:\u0001:\u0001"+
		":\u0001:\u0001:\u0001:\u0001:\u0001:\u0001:\u0005:\u08e1\b:\n:\f:\u08e4"+
		"\t:\u0001;\u0001;\u0001;\u0001;\u0001;\u0001;\u0001;\u0001;\u0001;\u0001"+
		";\u0003;\u08f0\b;\u0001;\u0001;\u0001;\u0003;\u08f5\b;\u0001<\u0001<\u0001"+
		"<\u0003<\u08fa\b<\u0001=\u0001=\u0003=\u08fe\b=\u0001>\u0001>\u0001?\u0001"+
		"?\u0001@\u0001@\u0001A\u0001A\u0001B\u0001B\u0001B\u0003B\u090b\bB\u0001"+
		"C\u0001C\u0001C\u0001C\u0001C\u0001C\u0005C\u0913\bC\nC\fC\u0916\tC\u0001"+
		"D\u0001D\u0001D\u0001D\u0001D\u0003D\u091d\bD\u0001D\u0003D\u0920\bD\u0001"+
		"D\u0003D\u0923\bD\u0001E\u0001E\u0001E\u0001E\u0001F\u0001F\u0001F\u0005"+
		"F\u092c\bF\nF\fF\u092f\tF\u0001G\u0001G\u0001G\u0001G\u0001G\u0003G\u0936"+
		"\bG\u0001H\u0001H\u0001H\u0001I\u0001I\u0001I\u0001I\u0001I\u0001J\u0001"+
		"J\u0001J\u0001J\u0001J\u0001K\u0001K\u0001K\u0001K\u0001K\u0001K\u0001"+
		"L\u0001L\u0001L\u0001M\u0001M\u0001M\u0001M\u0001M\u0001M\u0005M\u0954"+
		"\bM\nM\fM\u0957\tM\u0001N\u0001N\u0001N\u0001N\u0001O\u0001O\u0003O\u095f"+
		"\bO\u0001O\u0003O\u0962\bO\u0001O\u0003O\u0965\bO\u0001O\u0003O\u0968"+
		"\bO\u0001O\u0001O\u0001P\u0001P\u0001Q\u0001Q\u0001Q\u0001Q\u0001R\u0001"+
		"R\u0001R\u0001R\u0001R\u0001R\u0001R\u0001R\u0001R\u0001R\u0001R\u0001"+
		"R\u0003R\u097e\bR\u0001S\u0001S\u0001S\u0001S\u0001S\u0001S\u0003S\u0986"+
		"\bS\u0001T\u0001T\u0001T\u0001T\u0001T\u0001T\u0001T\u0001T\u0001T\u0001"+
		"T\u0001T\u0001T\u0003T\u0994\bT\u0001U\u0001U\u0001U\u0001U\u0001U\u0001"+
		"U\u0001U\u0001U\u0001U\u0001U\u0001U\u0003U\u09a1\bU\u0001V\u0001V\u0003"+
		"V\u09a5\bV\u0001W\u0001W\u0001W\u0001X\u0001X\u0001X\u0001X\u0001X\u0001"+
		"X\u0005X\u09b0\bX\nX\fX\u09b3\tX\u0001Y\u0001Y\u0001Y\u0003Y\u09b8\bY"+
		"\u0001Y\u0001Y\u0003Y\u09bc\bY\u0001Y\u0001Y\u0001Y\u0001Y\u0003Y\u09c2"+
		"\bY\u0001Y\u0001Y\u0001Y\u0003Y\u09c7\bY\u0001Y\u0001Y\u0003Y\u09cb\b"+
		"Y\u0001Y\u0001Y\u0001Y\u0003Y\u09d0\bY\u0001Y\u0001Y\u0003Y\u09d4\bY\u0001"+
		"Y\u0001Y\u0001Y\u0003Y\u09d9\bY\u0001Y\u0001Y\u0001Y\u0001Y\u0001Y\u0003"+
		"Y\u09e0\bY\u0003Y\u09e2\bY\u0001Y\u0001Y\u0005Y\u09e6\bY\nY\fY\u09e9\t"+
		"Y\u0001Z\u0001Z\u0001Z\u0001Z\u0001Z\u0001Z\u0001Z\u0001Z\u0001Z\u0001"+
		"Z\u0001Z\u0001Z\u0001Z\u0001Z\u0003Z\u09f9\bZ\u0001[\u0001[\u0001[\u0001"+
		"\\\u0003\\\u09ff\b\\\u0001\\\u0001\\\u0001]\u0001]\u0003]\u0a05\b]\u0001"+
		"]\u0001]\u0001^\u0001^\u0003^\u0a0b\b^\u0001^\u0001^\u0001^\u0001^\u0003"+
		"^\u0a11\b^\u0001^\u0003^\u0a14\b^\u0001_\u0001_\u0001_\u0001_\u0001_\u0001"+
		"_\u0001_\u0003_\u0a1d\b_\u0001`\u0001`\u0001`\u0001`\u0001`\u0001`\u0001"+
		"`\u0001`\u0001`\u0001`\u0001`\u0003`\u0a2a\b`\u0001a\u0001a\u0001a\u0001"+
		"b\u0001b\u0001b\u0001b\u0001b\u0003b\u0a34\bb\u0001c\u0001c\u0001c\u0001"+
		"d\u0001d\u0001d\u0001e\u0004e\u0a3d\be\u000be\fe\u0a3e\u0001f\u0001f\u0001"+
		"f\u0003f\u0a44\bf\u0001g\u0001g\u0003g\u0a48\bg\u0001g\u0001g\u0001g\u0001"+
		"g\u0001g\u0003g\u0a4f\bg\u0001g\u0001g\u0003g\u0a53\bg\u0001g\u0001g\u0003"+
		"g\u0a57\bg\u0001g\u0003g\u0a5a\bg\u0001g\u0001g\u0003g\u0a5e\bg\u0001"+
		"g\u0001g\u0001g\u0001g\u0001g\u0001g\u0003g\u0a66\bg\u0001g\u0001g\u0003"+
		"g\u0a6a\bg\u0001g\u0001g\u0003g\u0a6e\bg\u0001h\u0001h\u0001h\u0001h\u0001"+
		"h\u0003h\u0a75\bh\u0001i\u0001i\u0001i\u0005i\u0a7a\bi\ni\fi\u0a7d\ti"+
		"\u0001j\u0001j\u0001j\u0001k\u0001k\u0001k\u0001k\u0001k\u0001k\u0001"+
		"k\u0003k\u0a89\bk\u0001l\u0001l\u0001l\u0005l\u0a8e\bl\nl\fl\u0a91\tl"+
		"\u0001m\u0001m\u0001n\u0005n\u0a96\bn\nn\fn\u0a99\tn\u0001o\u0001o\u0001"+
		"o\u0001o\u0003o\u0a9f\bo\u0001o\u0001o\u0001o\u0003o\u0aa4\bo\u0001o\u0001"+
		"o\u0001o\u0001o\u0001o\u0003o\u0aab\bo\u0001o\u0001o\u0001o\u0003o\u0ab0"+
		"\bo\u0001o\u0001o\u0001o\u0001o\u0001o\u0001o\u0001o\u0001o\u0001o\u0001"+
		"o\u0001o\u0001o\u0001o\u0001o\u0001o\u0001o\u0003o\u0ac2\bo\u0001p\u0003"+
		"p\u0ac5\bp\u0001p\u0001p\u0001p\u0001q\u0001q\u0003q\u0acc\bq\u0001q\u0001"+
		"q\u0003q\u0ad0\bq\u0001r\u0001r\u0001s\u0003s\u0ad5\bs\u0001s\u0001s\u0003"+
		"s\u0ad9\bs\u0001t\u0001t\u0001t\u0001u\u0003u\u0adf\bu\u0001u\u0001u\u0003"+
		"u\u0ae3\bu\u0001u\u0003u\u0ae6\bu\u0001v\u0001v\u0001v\u0001w\u0001w\u0001"+
		"x\u0001x\u0001y\u0001y\u0001z\u0001z\u0001{\u0001{\u0001{\u0003{\u0af6"+
		"\b{\u0001{\u0001{\u0001|\u0001|\u0001|\u0003|\u0afd\b|\u0001|\u0001|\u0001"+
		"}\u0001}\u0001}\u0003}\u0b04\b}\u0001}\u0001}\u0001~\u0001~\u0001\u007f"+
		"\u0001\u007f\u0001\u0080\u0001\u0080\u0001\u0081\u0003\u0081\u0b0f\b\u0081"+
		"\u0001\u0081\u0001\u0081\u0001\u0081\u0005\u0081\u0b14\b\u0081\n\u0081"+
		"\f\u0081\u0b17\t\u0081\u0001\u0081\u0003\u0081\u0b1a\b\u0081\u0001\u0082"+
		"\u0001\u0082\u0001\u0082\u0001\u0082\u0005\u0082\u0b20\b\u0082\n\u0082"+
		"\f\u0082\u0b23\t\u0082\u0001\u0082\u0001\u0082\u0001\u0083\u0001\u0083"+
		"\u0003\u0083\u0b29\b\u0083\u0001\u0084\u0001\u0084\u0001\u0085\u0001\u0085"+
		"\u0001\u0086\u0003\u0086\u0b30\b\u0086\u0001\u0086\u0001\u0086\u0001\u0087"+
		"\u0001\u0087\u0001\u0088\u0001\u0088\u0001\u0089\u0001\u0089\u0001\u008a"+
		"\u0001\u008a\u0001\u008b\u0001\u008b\u0001\u008b\u0001\u008b\u0001\u008b"+
		"\u0001\u008b\u0001\u008b\u0001\u008b\u0001\u008b\u0001\u008b\u0001\u008b"+
		"\u0001\u008b\u0001\u008b\u0001\u008b\u0001\u008b\u0001\u008b\u0001\u008b"+
		"\u0001\u008b\u0001\u008b\u0001\u008b\u0001\u008b\u0001\u008b\u0001\u008b"+
		"\u0003\u008b\u0b53\b\u008b\u0001\u008c\u0001\u008c\u0001\u008d\u0001\u008d"+
		"\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008d"+
		"\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008d"+
		"\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008d"+
		"\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008d\u0003\u008d\u0b6f\b\u008d"+
		"\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008d"+
		"\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008d"+
		"\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008d"+
		"\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008d"+
		"\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008d"+
		"\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008d"+
		"\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008d"+
		"\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008d"+
		"\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008d"+
		"\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008d"+
		"\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008d"+
		"\u0001\u008d\u0001\u008d\u0003\u008d\u0bb5\b\u008d\u0001\u008d\u0001\u008d"+
		"\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008d"+
		"\u0003\u008d\u0bbf\b\u008d\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008d"+
		"\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008d"+
		"\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008d"+
		"\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008d"+
		"\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008d"+
		"\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008d"+
		"\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008d"+
		"\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008d"+
		"\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008d"+
		"\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008d"+
		"\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008d"+
		"\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008d"+
		"\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008d"+
		"\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008d"+
		"\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008d"+
		"\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008d"+
		"\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008d"+
		"\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008d"+
		"\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008d"+
		"\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008d"+
		"\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008d"+
		"\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008d\u0005\u008d\u0c41\b\u008d"+
		"\n\u008d\f\u008d\u0c44\t\u008d\u0001\u008e\u0001\u008e\u0001\u008e\u0001"+
		"\u008e\u0001\u008e\u0001\u008e\u0001\u008e\u0001\u008e\u0001\u008e\u0003"+
		"\u008e\u0c4f\b\u008e\u0001\u008e\u0001\u008e\u0001\u008e\u0001\u008e\u0001"+
		"\u008e\u0001\u008e\u0001\u008e\u0001\u008e\u0001\u008e\u0001\u008e\u0001"+
		"\u008e\u0001\u008e\u0001\u008e\u0001\u008e\u0001\u008e\u0001\u008e\u0001"+
		"\u008e\u0001\u008e\u0001\u008e\u0001\u008e\u0001\u008e\u0001\u008e\u0001"+
		"\u008e\u0001\u008e\u0001\u008e\u0001\u008e\u0001\u008e\u0001\u008e\u0001"+
		"\u008e\u0001\u008e\u0001\u008e\u0001\u008e\u0001\u008e\u0001\u008e\u0001"+
		"\u008e\u0001\u008e\u0001\u008e\u0001\u008e\u0001\u008e\u0001\u008e\u0001"+
		"\u008e\u0001\u008e\u0005\u008e\u0c7b\b\u008e\n\u008e\f\u008e\u0c7e\t\u008e"+
		"\u0001\u008f\u0001\u008f\u0001\u008f\u0001\u008f\u0001\u008f\u0003\u008f"+
		"\u0c85\b\u008f\u0001\u008f\u0001\u008f\u0001\u008f\u0001\u008f\u0001\u008f"+
		"\u0001\u008f\u0001\u008f\u0001\u008f\u0001\u008f\u0001\u008f\u0001\u008f"+
		"\u0001\u008f\u0001\u008f\u0001\u008f\u0001\u008f\u0001\u008f\u0001\u008f"+
		"\u0001\u008f\u0001\u008f\u0001\u008f\u0001\u008f\u0001\u008f\u0001\u008f"+
		"\u0001\u008f\u0003\u008f\u0c9f\b\u008f\u0001\u0090\u0001\u0090\u0001\u0090"+
		"\u0001\u0090\u0001\u0090\u0005\u0090\u0ca6\b\u0090\n\u0090\f\u0090\u0ca9"+
		"\t\u0090\u0001\u0091\u0001\u0091\u0001\u0091\u0005\u0091\u0cae\b\u0091"+
		"\n\u0091\f\u0091\u0cb1\t\u0091\u0001\u0092\u0001\u0092\u0001\u0092\u0001"+
		"\u0092\u0001\u0092\u0001\u0092\u0001\u0092\u0001\u0092\u0001\u0092\u0001"+
		"\u0092\u0003\u0092\u0cbd\b\u0092\u0001\u0092\u0001\u0092\u0003\u0092\u0cc1"+
		"\b\u0092\u0001\u0092\u0003\u0092\u0cc4\b\u0092\u0001\u0093\u0001\u0093"+
		"\u0001\u0094\u0001\u0094\u0001\u0094\u0001\u0094\u0001\u0094\u0003\u0094"+
		"\u0ccd\b\u0094\u0001\u0095\u0001\u0095\u0003\u0095\u0cd1\b\u0095\u0001"+
		"\u0095\u0001\u0095\u0003\u0095\u0cd5\b\u0095\u0001\u0095\u0001\u0095\u0001"+
		"\u0096\u0004\u0096\u0cda\b\u0096\u000b\u0096\f\u0096\u0cdb\u0001\u0097"+
		"\u0001\u0097\u0001\u0097\u0001\u0097\u0001\u0097\u0001\u0098\u0001\u0098"+
		"\u0001\u0098\u0001\u0099\u0001\u0099\u0001\u009a\u0001\u009a\u0001\u009a"+
		"\u0001\u009a\u0003\u009a\u0cec\b\u009a\u0001\u009b\u0001\u009b\u0001\u009b"+
		"\u0001\u009b\u0001\u009b\u0001\u009b\u0001\u009b\u0003\u009b\u0cf5\b\u009b"+
		"\u0001\u009c\u0001\u009c\u0001\u009c\u0001\u009c\u0001\u009c\u0001\u009c"+
		"\u0001\u009c\u0001\u009c\u0001\u009c\u0001\u009c\u0001\u009c\u0001\u009c"+
		"\u0003\u009c\u0d03\b\u009c\u0001\u009d\u0001\u009d\u0003\u009d\u0d07\b"+
		"\u009d\u0001\u009e\u0004\u009e\u0d0a\b\u009e\u000b\u009e\f\u009e\u0d0b"+
		"\u0001\u009f\u0001\u009f\u0001\u00a0\u0001\u00a0\u0001\u00a0\u0001\u00a0"+
		"\u0001\u00a0\u0001\u00a0\u0001\u00a0\u0001\u00a0\u0001\u00a0\u0001\u00a0"+
		"\u0001\u00a0\u0001\u00a0\u0001\u00a0\u0001\u00a0\u0001\u00a0\u0003\u00a0"+
		"\u0d1f\b\u00a0\u0001\u00a1\u0001\u00a1\u0001\u00a1\u0001\u00a1\u0001\u00a1"+
		"\u0001\u00a1\u0001\u00a1\u0001\u00a1\u0001\u00a1\u0001\u00a1\u0001\u00a1"+
		"\u0001\u00a1\u0001\u00a1\u0001\u00a1\u0001\u00a1\u0001\u00a1\u0001\u00a1"+
		"\u0001\u00a1\u0001\u00a1\u0001\u00a1\u0003\u00a1\u0d35\b\u00a1\u0001\u00a2"+
		"\u0001\u00a2\u0001\u00a2\u0001\u00a2\u0001\u00a2\u0001\u00a2\u0003\u00a2"+
		"\u0d3d\b\u00a2\u0001\u00a3\u0001\u00a3\u0001\u00a4\u0001\u00a4\u0001\u00a4"+
		"\u0001\u00a4\u0001\u00a4\u0003\u00a4\u0d46\b\u00a4\u0001\u00a5\u0001\u00a5"+
		"\u0001\u00a5\u0001\u00a5\u0001\u00a5\u0001\u00a5\u0001\u00a5\u0001\u00a5"+
		"\u0001\u00a5\u0001\u00a5\u0003\u00a5\u0d52\b\u00a5\u0001\u00a6\u0001\u00a6"+
		"\u0001\u00a6\u0001\u00a6\u0001\u00a6\u0001\u00a6\u0001\u00a6\u0001\u00a6"+
		"\u0001\u00a6\u0001\u00a6\u0001\u00a6\u0001\u00a6\u0001\u00a6\u0001\u00a6"+
		"\u0003\u00a6\u0d62\b\u00a6\u0001\u00a7\u0001\u00a7\u0001\u00a7\u0001\u00a7"+
		"\u0001\u00a7\u0001\u00a7\u0001\u00a7\u0001\u00a7\u0003\u00a7\u0d6c\b\u00a7"+
		"\u0001\u00a8\u0001\u00a8\u0001\u00a8\u0001\u00a8\u0001\u00a8\u0001\u00a8"+
		"\u0001\u00a9\u0001\u00a9\u0001\u00aa\u0001\u00aa\u0001\u00aa\u0001\u00aa"+
		"\u0001\u00aa\u0001\u00aa\u0001\u00aa\u0001\u00aa\u0001\u00aa\u0001\u00aa"+
		"\u0003\u00aa\u0d80\b\u00aa\u0001\u00ab\u0001\u00ab\u0001\u00ab\u0005\u00ab"+
		"\u0d85\b\u00ab\n\u00ab\f\u00ab\u0d88\t\u00ab\u0001\u00ac\u0001\u00ac\u0001"+
		"\u00ac\u0005\u00ac\u0d8d\b\u00ac\n\u00ac\f\u00ac\u0d90\t\u00ac\u0001\u00ad"+
		"\u0001\u00ad\u0001\u00ae\u0001\u00ae\u0001\u00ae\u0001\u00ae\u0001\u00ae"+
		"\u0001\u00ae\u0001\u00ae\u0001\u00ae\u0001\u00ae\u0003\u00ae\u0d9d\b\u00ae"+
		"\u0001\u00af\u0001\u00af\u0001\u00af\u0005\u00af\u0da2\b\u00af\n\u00af"+
		"\f\u00af\u0da5\t\u00af\u0001\u00b0\u0001\u00b0\u0001\u00b0\u0001\u00b0"+
		"\u0001\u00b0\u0001\u00b0\u0001\u00b0\u0001\u00b0\u0003\u00b0\u0daf\b\u00b0"+
		"\u0001\u00b0\u0001\u00b0\u0001\u00b0\u0001\u00b0\u0001\u00b0\u0001\u00b0"+
		"\u0001\u00b0\u0003\u00b0\u0db8\b\u00b0\u0001\u00b0\u0001\u00b0\u0001\u00b0"+
		"\u0001\u00b0\u0001\u00b0\u0001\u00b0\u0001\u00b0\u0001\u00b0\u0001\u00b0"+
		"\u0003\u00b0\u0dc3\b\u00b0\u0001\u00b0\u0001\u00b0\u0001\u00b0\u0001\u00b0"+
		"\u0001\u00b0\u0001\u00b0\u0001\u00b0\u0003\u00b0\u0dcc\b\u00b0\u0001\u00b0"+
		"\u0001\u00b0\u0001\u00b0\u0001\u00b0\u0001\u00b0\u0001\u00b0\u0001\u00b0"+
		"\u0003\u00b0\u0dd5\b\u00b0\u0001\u00b0\u0001\u00b0\u0001\u00b0\u0001\u00b0"+
		"\u0001\u00b0\u0001\u00b0\u0001\u00b0\u0003\u00b0\u0dde\b\u00b0\u0001\u00b1"+
		"\u0001\u00b1\u0001\u00b1\u0001\u00b1\u0003\u00b1\u0de4\b\u00b1\u0001\u00b2"+
		"\u0001\u00b2\u0001\u00b2\u0001\u00b2\u0001\u00b2\u0001\u00b2\u0001\u00b2"+
		"\u0001\u00b2\u0001\u00b2\u0003\u00b2\u0def\b\u00b2\u0001\u00b2\u0001\u00b2"+
		"\u0001\u00b2\u0001\u00b2\u0001\u00b2\u0001\u00b2\u0001\u00b2\u0001\u00b2"+
		"\u0001\u00b2\u0003\u00b2\u0dfa\b\u00b2\u0001\u00b3\u0003\u00b3\u0dfd\b"+
		"\u00b3\u0001\u00b3\u0001\u00b3\u0001\u00b4\u0001\u00b4\u0001\u00b4\u0001"+
		"\u00b4\u0003\u00b4\u0e05\b\u00b4\u0001\u00b5\u0001\u00b5\u0001\u00b6\u0001"+
		"\u00b6\u0001\u00b6\u0003\u00b6\u0e0c\b\u00b6\u0001\u00b7\u0001\u00b7\u0003"+
		"\u00b7\u0e10\b\u00b7\u0001\u00b7\u0001\u00b7\u0001\u00b7\u0001\u00b7\u0001"+
		"\u00b7\u0001\u00b7\u0003\u00b7\u0e18\b\u00b7\u0003\u00b7\u0e1a\b\u00b7"+
		"\u0001\u00b8\u0001\u00b8\u0001\u00b8\u0001\u00b8\u0001\u00b8\u0001\u00b8"+
		"\u0001\u00b8\u0001\u00b8\u0001\u00b8\u0001\u00b8\u0001\u00b8\u0001\u00b8"+
		"\u0001\u00b8\u0001\u00b8\u0001\u00b8\u0001\u00b8\u0001\u00b8\u0001\u00b8"+
		"\u0001\u00b8\u0001\u00b8\u0001\u00b8\u0003\u00b8\u0e31\b\u00b8\u0001\u00b9"+
		"\u0001\u00b9\u0001\u00b9\u0005\u00b9\u0e36\b\u00b9\n\u00b9\f\u00b9\u0e39"+
		"\t\u00b9\u0001\u00ba\u0001\u00ba\u0001\u00ba\u0001\u00ba\u0001\u00ba\u0001"+
		"\u00ba\u0001\u00ba\u0001\u00ba\u0001\u00ba\u0001\u00ba\u0001\u00ba\u0003"+
		"\u00ba\u0e46\b\u00ba\u0001\u00bb\u0001\u00bb\u0001\u00bb\u0001\u00bb\u0001"+
		"\u00bb\u0005\u00bb\u0e4d\b\u00bb\n\u00bb\f\u00bb\u0e50\t\u00bb\u0001\u00bc"+
		"\u0001\u00bc\u0001\u00bc\u0001\u00bc\u0001\u00bc\u0001\u00bc\u0001\u00bc"+
		"\u0001\u00bc\u0003\u00bc\u0e5a\b\u00bc\u0001\u00bd\u0001\u00bd\u0001\u00bd"+
		"\u0005\u00bd\u0e5f\b\u00bd\n\u00bd\f\u00bd\u0e62\t\u00bd\u0001\u00be\u0001"+
		"\u00be\u0001\u00be\u0001\u00be\u0001\u00be\u0001\u00be\u0003\u00be\u0e6a"+
		"\b\u00be\u0001\u00bf\u0001\u00bf\u0003\u00bf\u0e6e\b\u00bf\u0001\u00bf"+
		"\u0003\u00bf\u0e71\b\u00bf\u0001\u00bf\u0003\u00bf\u0e74\b\u00bf\u0001"+
		"\u00bf\u0003\u00bf\u0e77\b\u00bf\u0001\u00c0\u0001\u00c0\u0001\u00c0\u0001"+
		"\u00c0\u0001\u00c0\u0001\u00c0\u0001\u00c1\u0001\u00c1\u0001\u00c1\u0001"+
		"\u00c1\u0001\u00c1\u0001\u00c1\u0001\u00c2\u0001\u00c2\u0003\u00c2\u0e87"+
		"\b\u00c2\u0001\u00c3\u0001\u00c3\u0001\u00c3\u0001\u00c4\u0001\u00c4\u0001"+
		"\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001"+
		"\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001"+
		"\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001"+
		"\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001"+
		"\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001"+
		"\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001"+
		"\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0003\u00c4\u0eb7"+
		"\b\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001"+
		"\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001"+
		"\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001"+
		"\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001"+
		"\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001"+
		"\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001"+
		"\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001"+
		"\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001"+
		"\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001"+
		"\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001"+
		"\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001"+
		"\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001"+
		"\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001"+
		"\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001"+
		"\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001"+
		"\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001"+
		"\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001"+
		"\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001"+
		"\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001"+
		"\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001"+
		"\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001"+
		"\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001"+
		"\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001"+
		"\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001"+
		"\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001"+
		"\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0003"+
		"\u00c4\u0f54\b\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001"+
		"\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001"+
		"\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001"+
		"\u00c4\u0001\u00c4\u0005\u00c4\u0f68\b\u00c4\n\u00c4\f\u00c4\u0f6b\t\u00c4"+
		"\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4"+
		"\u0001\u00c4\u0003\u00c4\u0f74\b\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4"+
		"\u0001\u00c4\u0003\u00c4\u0f7a\b\u00c4\u0005\u00c4\u0f7c\b\u00c4\n\u00c4"+
		"\f\u00c4\u0f7f\t\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4"+
		"\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4"+
		"\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4"+
		"\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4"+
		"\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0003\u00c4\u0f9b\b\u00c4"+
		"\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4"+
		"\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4"+
		"\u0001\u00c4\u0001\u00c4\u0003\u00c4\u0fab\b\u00c4\u0001\u00c5\u0001\u00c5"+
		"\u0001\u00c5\u0001\u00c5\u0001\u00c5\u0001\u00c5\u0001\u00c5\u0001\u00c5"+
		"\u0001\u00c5\u0001\u00c5\u0001\u00c5\u0001\u00c5\u0001\u00c5\u0001\u00c5"+
		"\u0001\u00c5\u0001\u00c5\u0001\u00c5\u0001\u00c5\u0001\u00c5\u0001\u00c5"+
		"\u0001\u00c5\u0001\u00c5\u0001\u00c5\u0001\u00c5\u0001\u00c5\u0001\u00c5"+
		"\u0001\u00c5\u0003\u00c5\u0fc8\b\u00c5\u0001\u00c6\u0001\u00c6\u0001\u00c6"+
		"\u0001\u00c6\u0001\u00c6\u0001\u00c6\u0001\u00c6\u0001\u00c6\u0001\u00c6"+
		"\u0001\u00c6\u0001\u00c6\u0001\u00c6\u0001\u00c6\u0003\u00c6\u0fd7\b\u00c6"+
		"\u0001\u00c7\u0001\u00c7\u0001\u00c7\u0001\u00c7\u0003\u00c7\u0fdd\b\u00c7"+
		"\u0001\u00c8\u0001\u00c8\u0001\u00c8\u0001\u00c8\u0001\u00c8\u0001\u00c8"+
		"\u0005\u00c8\u0fe5\b\u00c8\n\u00c8\f\u00c8\u0fe8\t\u00c8\u0001\u00c9\u0001"+
		"\u00c9\u0001\u00c9\u0001\u00c9\u0001\u00ca\u0001\u00ca\u0001\u00ca\u0001"+
		"\u00ca\u0001\u00ca\u0001\u00ca\u0001\u00ca\u0003\u00ca\u0ff5\b\u00ca\u0001"+
		"\u00cb\u0001\u00cb\u0003\u00cb\u0ff9\b\u00cb\u0001\u00cb\u0001\u00cb\u0001"+
		"\u00cb\u0003\u00cb\u0ffe\b\u00cb\u0003\u00cb\u1000\b\u00cb\u0001\u00cc"+
		"\u0001\u00cc\u0001\u00cc\u0001\u00cc\u0001\u00cd\u0001\u00cd\u0001\u00cd"+
		"\u0001\u00cd\u0001\u00cd\u0001\u00cd\u0001\u00cd\u0001\u00cd\u0001\u00cd"+
		"\u0001\u00cd\u0001\u00cd\u0003\u00cd\u1011\b\u00cd\u0001\u00cd\u0001\u00cd"+
		"\u0003\u00cd\u1015\b\u00cd\u0001\u00cd\u0001\u00cd\u0003\u00cd\u1019\b"+
		"\u00cd\u0001\u00cd\u0001\u00cd\u0001\u00cd\u0001\u00cd\u0001\u00cd\u0001"+
		"\u00cd\u0003\u00cd\u1021\b\u00cd\u0001\u00ce\u0001\u00ce\u0001\u00ce\u0001"+
		"\u00ce\u0001\u00ce\u0003\u00ce\u1028\b\u00ce\u0001\u00ce\u0001\u00ce\u0003"+
		"\u00ce\u102c\b\u00ce\u0001\u00ce\u0001\u00ce\u0001\u00ce\u0001\u00ce\u0001"+
		"\u00ce\u0003\u00ce\u1033\b\u00ce\u0001\u00ce\u0001\u00ce\u0003\u00ce\u1037"+
		"\b\u00ce\u0001\u00ce\u0003\u00ce\u103a\b\u00ce\u0001\u00cf\u0001\u00cf"+
		"\u0001\u00cf\u0001\u00cf\u0001\u00cf\u0001\u00cf\u0003\u00cf\u1042\b\u00cf"+
		"\u0001\u00d0\u0001\u00d0\u0003\u00d0\u1046\b\u00d0\u0001\u00d1\u0001\u00d1"+
		"\u0001\u00d1\u0001\u00d1\u0001\u00d1\u0001\u00d2\u0001\u00d2\u0001\u00d3"+
		"\u0001\u00d3\u0003\u00d3\u1051\b\u00d3\u0001\u00d3\u0001\u00d3\u0003\u00d3"+
		"\u1055\b\u00d3\u0001\u00d3\u0001\u00d3\u0001\u00d3\u0001\u00d3\u0003\u00d3"+
		"\u105b\b\u00d3\u0001\u00d3\u0001\u00d3\u0001\u00d3\u0003\u00d3\u1060\b"+
		"\u00d3\u0001\u00d3\u0001\u00d3\u0003\u00d3\u1064\b\u00d3\u0003\u00d3\u1066"+
		"\b\u00d3\u0001\u00d4\u0001\u00d4\u0001\u00d4\u0001\u00d4\u0003\u00d4\u106c"+
		"\b\u00d4\u0001\u00d5\u0001\u00d5\u0001\u00d5\u0001\u00d5\u0001\u00d5\u0001"+
		"\u00d5\u0001\u00d5\u0005\u00d5\u1075\b\u00d5\n\u00d5\f\u00d5\u1078\t\u00d5"+
		"\u0001\u00d6\u0001\u00d6\u0001\u00d7\u0001\u00d7\u0001\u00d7\u0001\u00d7"+
		"\u0003\u00d7\u1080\b\u00d7\u0001\u00d8\u0001\u00d8\u0003\u00d8\u1084\b"+
		"\u00d8\u0001\u00d9\u0001\u00d9\u0003\u00d9\u1088\b\u00d9\u0001\u00d9\u0001"+
		"\u00d9\u0001\u00d9\u0001\u00d9\u0001\u00da\u0001\u00da\u0003\u00da\u1090"+
		"\b\u00da\u0001\u00db\u0001\u00db\u0001\u00dc\u0001\u00dc\u0001\u00dc\u0001"+
		"\u00dc\u0001\u00dc\u0001\u00dc\u0001\u00dc\u0001\u00dc\u0001\u00dc\u0001"+
		"\u00dc\u0001\u00dc\u0001\u00dc\u0001\u00dc\u0001\u00dc\u0001\u00dc\u0001"+
		"\u00dc\u0001\u00dc\u0001\u00dc\u0001\u00dc\u0001\u00dc\u0001\u00dc\u0001"+
		"\u00dc\u0001\u00dc\u0001\u00dc\u0001\u00dc\u0001\u00dc\u0001\u00dc\u0001"+
		"\u00dc\u0003\u00dc\u10b0\b\u00dc\u0001\u00dd\u0001\u00dd\u0001\u00dd\u0001"+
		"\u00dd\u0001\u00dd\u0001\u00dd\u0001\u00dd\u0001\u00dd\u0005\u00dd\u10ba"+
		"\b\u00dd\n\u00dd\f\u00dd\u10bd\t\u00dd\u0001\u00de\u0001\u00de\u0001\u00de"+
		"\u0001\u00de\u0001\u00de\u0003\u00de\u10c4\b\u00de\u0001\u00df\u0001\u00df"+
		"\u0001\u00e0\u0001\u00e0\u0001\u00e0\u0001\u00e0\u0001\u00e0\u0001\u00e0"+
		"\u0001\u00e0\u0003\u00e0\u10cf\b\u00e0\u0001\u00e1\u0001\u00e1\u0001\u00e1"+
		"\u0001\u00e1\u0001\u00e1\u0001\u00e1\u0001\u00e1\u0001\u00e1\u0001\u00e1"+
		"\u0003\u00e1\u10da\b\u00e1\u0001\u00e2\u0001\u00e2\u0001\u00e2\u0001\u00e3"+
		"\u0001\u00e3\u0001\u00e3\u0001\u00e4\u0001\u00e4\u0001\u00e4\u0001\u00e5"+
		"\u0001\u00e5\u0001\u00e5\u0001\u00e5\u0001\u00e5\u0003\u00e5\u10ea\b\u00e5"+
		"\u0001\u00e6\u0001\u00e6\u0001\u00e6\u0001\u00e6\u0001\u00e6\u0001\u00e6"+
		"\u0001\u00e6\u0001\u00e6\u0001\u00e6\u0001\u00e6\u0001\u00e6\u0001\u00e6"+
		"\u0001\u00e6\u0001\u00e6\u0001\u00e6\u0001\u00e6\u0003\u00e6\u10fc\b\u00e6"+
		"\u0001\u00e7\u0001\u00e7\u0001\u00e7\u0001\u00e7\u0001\u00e7\u0001\u00e8"+
		"\u0001\u00e8\u0001\u00e8\u0005\u00e8\u1106\b\u00e8\n\u00e8\f\u00e8\u1109"+
		"\t\u00e8\u0001\u00e9\u0001\u00e9\u0001\u00e9\u0001\u00e9\u0001\u00e9\u0003"+
		"\u00e9\u1110\b\u00e9\u0001\u00ea\u0001\u00ea\u0001\u00ea\u0001\u00ea\u0001"+
		"\u00ea\u0001\u00ea\u0001\u00ea\u0001\u00ea\u0001\u00ea\u0001\u00ea\u0001"+
		"\u00ea\u0001\u00ea\u0001\u00ea\u0001\u00ea\u0001\u00ea\u0003\u00ea\u1121"+
		"\b\u00ea\u0001\u00eb\u0001\u00eb\u0001\u00eb\u0001\u00eb\u0003\u00eb\u1127"+
		"\b\u00eb\u0001\u00ec\u0001\u00ec\u0001\u00ed\u0001\u00ed\u0001\u00ed\u0001"+
		"\u00ed\u0001\u00ed\u0003\u00ed\u1130\b\u00ed\u0001\u00ee\u0001\u00ee\u0001"+
		"\u00ee\u0001\u00ee\u0001\u00ee\u0003\u00ee\u1137\b\u00ee\u0001\u00ef\u0001"+
		"\u00ef\u0001\u00ef\u0001\u00ef\u0001\u00ef\u0001\u00ef\u0001\u00ef\u0001"+
		"\u00ef\u0001\u00ef\u0001\u00ef\u0003\u00ef\u1143\b\u00ef\u0001\u00f0\u0001"+
		"\u00f0\u0001\u00f0\u0001\u00f1\u0001\u00f1\u0001\u00f1\u0005\u00f1\u114b"+
		"\b\u00f1\n\u00f1\f\u00f1\u114e\t\u00f1\u0001\u00f2\u0001\u00f2\u0001\u00f2"+
		"\u0001\u00f2\u0001\u00f2\u0001\u00f3\u0001\u00f3\u0001\u00f3\u0005\u00f3"+
		"\u1158\b\u00f3\n\u00f3\f\u00f3\u115b\t\u00f3\u0001\u00f4\u0001\u00f4\u0001"+
		"\u00f4\u0003\u00f4\u1160\b\u00f4\u0001\u00f5\u0001\u00f5\u0003\u00f5\u1164"+
		"\b\u00f5\u0001\u00f5\u0001\u00f5\u0001\u00f6\u0001\u00f6\u0001\u00f6\u0001"+
		"\u00f6\u0003\u00f6\u116c\b\u00f6\u0001\u00f7\u0001\u00f7\u0001\u00f7\u0001"+
		"\u00f7\u0001\u00f7\u0001\u00f7\u0001\u00f7\u0001\u00f7\u0001\u00f7\u0001"+
		"\u00f7\u0001\u00f7\u0001\u00f7\u0001\u00f7\u0001\u00f7\u0003\u00f7\u117c"+
		"\b\u00f7\u0001\u00f8\u0001\u00f8\u0001\u00f9\u0001\u00f9\u0001\u00fa\u0001"+
		"\u00fa\u0001\u00fb\u0001\u00fb\u0001\u00fb\u0001\u00fb\u0001\u00fb\u0001"+
		"\u00fb\u0005\u00fb\u118a\b\u00fb\n\u00fb\f\u00fb\u118d\t\u00fb\u0001\u00fc"+
		"\u0001\u00fc\u0001\u00fc\u0001\u00fc\u0001\u00fc\u0001\u00fc\u0001\u00fc"+
		"\u0001\u00fc\u0001\u00fc\u0001\u00fc\u0001\u00fc\u0001\u00fc\u0001\u00fc"+
		"\u0001\u00fc\u0001\u00fc\u0001\u00fc\u0001\u00fc\u0003\u00fc\u11a0\b\u00fc"+
		"\u0001\u00fd\u0001\u00fd\u0001\u00fd\u0001\u00fd\u0001\u00fd\u0001\u00fd"+
		"\u0003\u00fd\u11a8\b\u00fd\u0001\u00fe\u0001\u00fe\u0001\u00fe\u0001\u00fe"+
		"\u0001\u00fe\u0001\u00ff\u0001\u00ff\u0001\u0100\u0001\u0100\u0001\u0100"+
		"\u0001\u0100\u0001\u0101\u0001\u0101\u0001\u0101\u0005\u0101\u11b8\b\u0101"+
		"\n\u0101\f\u0101\u11bb\t\u0101\u0001\u0102\u0001\u0102\u0001\u0102\u0001"+
		"\u0102\u0003\u0102\u11c1\b\u0102\u0001\u0102\u0001\u0102\u0003\u0102\u11c5"+
		"\b\u0102\u0001\u0102\u0003\u0102\u11c8\b\u0102\u0003\u0102\u11ca\b\u0102"+
		"\u0001\u0103\u0001\u0103\u0001\u0103\u0001\u0103\u0003\u0103\u11d0\b\u0103"+
		"\u0001\u0104\u0001\u0104\u0001\u0104\u0001\u0104\u0001\u0104\u0001\u0104"+
		"\u0001\u0104\u0003\u0104\u11d9\b\u0104\u0001\u0105\u0001\u0105\u0001\u0106"+
		"\u0001\u0106\u0001\u0106\u0001\u0106\u0003\u0106\u11e1\b\u0106\u0001\u0107"+
		"\u0001\u0107\u0001\u0108\u0001\u0108\u0001\u0108\u0005\u0108\u11e8\b\u0108"+
		"\n\u0108\f\u0108\u11eb\t\u0108\u0001\u0109\u0003\u0109\u11ee\b\u0109\u0001"+
		"\u0109\u0001\u0109\u0003\u0109\u11f2\b\u0109\u0001\u0109\u0003\u0109\u11f5"+
		"\b\u0109\u0001\u0109\u0003\u0109\u11f8\b\u0109\u0001\u0109\u0001\u0109"+
		"\u0001\u0109\u0003\u0109\u11fd\b\u0109\u0001\u0109\u0003\u0109\u1200\b"+
		"\u0109\u0003\u0109\u1202\b\u0109\u0001\u010a\u0001\u010a\u0001\u010a\u0001"+
		"\u010a\u0001\u010a\u0001\u010a\u0001\u010a\u0001\u010a\u0001\u010a\u0001"+
		"\u010a\u0001\u010a\u0003\u010a\u120f\b\u010a\u0001\u010b\u0001\u010b\u0001"+
		"\u010b\u0001\u010c\u0001\u010c\u0003\u010c\u1216\b\u010c\u0001\u010d\u0001"+
		"\u010d\u0001\u010d\u0001\u010d\u0001\u010e\u0001\u010e\u0001\u010e\u0005"+
		"\u010e\u121f\b\u010e\n\u010e\f\u010e\u1222\t\u010e\u0001\u010f\u0001\u010f"+
		"\u0001\u010f\u0001\u010f\u0001\u010f\u0001\u010f\u0001\u010f\u0001\u010f"+
		"\u0001\u010f\u0001\u010f\u0001\u010f\u0001\u010f\u0001\u010f\u0001\u010f"+
		"\u0001\u010f\u0003\u010f\u1233\b\u010f\u0001\u0110\u0001\u0110\u0001\u0110"+
		"\u0001\u0110\u0001\u0110\u0001\u0110\u0003\u0110\u123b\b\u0110\u0001\u0111"+
		"\u0001\u0111\u0001\u0111\u0001\u0111\u0001\u0111\u0001\u0111\u0001\u0111"+
		"\u0001\u0111\u0001\u0111\u0001\u0111\u0001\u0111\u0001\u0111\u0003\u0111"+
		"\u1249\b\u0111\u0001\u0112\u0001\u0112\u0003\u0112\u124d\b\u0112\u0001"+
		"\u0112\u0003\u0112\u1250\b\u0112\u0001\u0112\u0003\u0112\u1253\b\u0112"+
		"\u0001\u0112\u0001\u0112\u0001\u0112\u0001\u0112\u0001\u0112\u0005\u0112"+
		"\u125a\b\u0112\n\u0112\f\u0112\u125d\t\u0112\u0001\u0112\u0001\u0112\u0003"+
		"\u0112\u1261\b\u0112\u0001\u0112\u0003\u0112\u1264\b\u0112\u0003\u0112"+
		"\u1266\b\u0112\u0001\u0113\u0001\u0113\u0001\u0113\u0001\u0113\u0001\u0113"+
		"\u0001\u0113\u0001\u0113\u0001\u0113\u0001\u0113\u0001\u0113\u0001\u0113"+
		"\u0001\u0113\u0001\u0113\u0001\u0113\u0001\u0113\u0001\u0113\u0001\u0113"+
		"\u0001\u0113\u0001\u0113\u0001\u0113\u0001\u0113\u0001\u0113\u0001\u0113"+
		"\u0001\u0113\u0001\u0113\u0001\u0113\u0001\u0113\u0001\u0113\u0001\u0113"+
		"\u0001\u0113\u0001\u0113\u0001\u0113\u0001\u0113\u0001\u0113\u0001\u0113"+
		"\u0001\u0113\u0001\u0113\u0001\u0113\u0001\u0113\u0001\u0113\u0001\u0113"+
		"\u0001\u0113\u0001\u0113\u0001\u0113\u0001\u0113\u0001\u0113\u0001\u0113"+
		"\u0001\u0113\u0001\u0113\u0001\u0113\u0001\u0113\u0001\u0113\u0001\u0113"+
		"\u0001\u0113\u0001\u0113\u0001\u0113\u0001\u0113\u0003\u0113\u12a1\b\u0113"+
		"\u0001\u0114\u0001\u0114\u0001\u0114\u0001\u0114\u0003\u0114\u12a7\b\u0114"+
		"\u0001\u0114\u0001\u0114\u0001\u0115\u0001\u0115\u0001\u0115\u0003\u0115"+
		"\u12ae\b\u0115\u0001\u0115\u0001\u0115\u0001\u0116\u0001\u0116\u0001\u0116"+
		"\u0003\u0116\u12b5\b\u0116\u0001\u0117\u0001\u0117\u0001\u0117\u0005\u0117"+
		"\u12ba\b\u0117\n\u0117\f\u0117\u12bd\t\u0117\u0001\u0118\u0001\u0118\u0001"+
		"\u0118\u0001\u0118\u0001\u0118\u0003\u0118\u12c4\b\u0118\u0001\u0119\u0001"+
		"\u0119\u0001\u0119\u0001\u0119\u0001\u0119\u0003\u0119\u12cb\b\u0119\u0001"+
		"\u011a\u0001\u011a\u0001\u011a\u0001\u011a\u0003\u011a\u12d1\b\u011a\u0001"+
		"\u011b\u0001\u011b\u0001\u011c\u0001\u011c\u0001\u011d\u0001\u011d\u0001"+
		"\u011d\u0001\u011d\u0003\u011d\u12db\b\u011d\u0001\u011e\u0001\u011e\u0001"+
		"\u011e\u0001\u011e\u0001\u011e\u0001\u011e\u0005\u011e\u12e3\b\u011e\n"+
		"\u011e\f\u011e\u12e6\t\u011e\u0001\u011f\u0001\u011f\u0001\u011f\u0005"+
		"\u011f\u12eb\b\u011f\n\u011f\f\u011f\u12ee\t\u011f\u0001\u0120\u0001\u0120"+
		"\u0003\u0120\u12f2\b\u0120\u0001\u0121\u0001\u0121\u0001\u0121\u0001\u0121"+
		"\u0001\u0121\u0001\u0121\u0001\u0121\u0001\u0121\u0001\u0121\u0001\u0121"+
		"\u0001\u0121\u0001\u0121\u0001\u0121\u0003\u0121\u1301\b\u0121\u0001\u0122"+
		"\u0001\u0122\u0001\u0122\u0001\u0122\u0001\u0122\u0003\u0122\u1308\b\u0122"+
		"\u0001\u0123\u0001\u0123\u0001\u0123\u0001\u0123\u0001\u0123\u0001\u0123"+
		"\u0001\u0123\u0003\u0123\u1311\b\u0123\u0001\u0124\u0001\u0124\u0001\u0124"+
		"\u0003\u0124\u1316\b\u0124\u0001\u0124\u0001\u0124\u0001\u0125\u0005\u0125"+
		"\u131b\b\u0125\n\u0125\f\u0125\u131e\t\u0125\u0001\u0126\u0001\u0126\u0001"+
		"\u0126\u0001\u0126\u0001\u0126\u0001\u0126\u0001\u0126\u0001\u0126\u0003"+
		"\u0126\u1328\b\u0126\u0001\u0127\u0001\u0127\u0001\u0127\u0001\u0127\u0001"+
		"\u0127\u0001\u0127\u0001\u0127\u0003\u0127\u1331\b\u0127\u0001\u0128\u0001"+
		"\u0128\u0001\u0128\u0001\u0128\u0001\u0128\u0001\u0128\u0003\u0128\u1339"+
		"\b\u0128\u0001\u0128\u0001\u0128\u0001\u0128\u0001\u0128\u0001\u0128\u0003"+
		"\u0128\u1340\b\u0128\u0001\u0128\u0001\u0128\u0001\u0128\u0001\u0128\u0001"+
		"\u0128\u0001\u0128\u0003\u0128\u1348\b\u0128\u0001\u0128\u0001\u0128\u0001"+
		"\u0128\u0001\u0128\u0001\u0128\u0001\u0128\u0001\u0128\u0003\u0128\u1351"+
		"\b\u0128\u0001\u0128\u0001\u0128\u0001\u0128\u0001\u0128\u0001\u0128\u0001"+
		"\u0128\u0001\u0128\u0001\u0128\u0001\u0128\u0001\u0128\u0001\u0128\u0003"+
		"\u0128\u135e\b\u0128\u0001\u0128\u0003\u0128\u1361\b\u0128\u0001\u0128"+
		"\u0003\u0128\u1364\b\u0128\u0003\u0128\u1366\b\u0128\u0001\u0129\u0001"+
		"\u0129\u0001\u0129\u0001\u0129\u0001\u012a\u0004\u012a\u136d\b\u012a\u000b"+
		"\u012a\f\u012a\u136e\u0001\u012b\u0001\u012b\u0001\u012b\u0001\u012b\u0001"+
		"\u012b\u0001\u012b\u0001\u012b\u0001\u012b\u0001\u012b\u0003\u012b\u137a"+
		"\b\u012b\u0001\u012b\u0001\u012b\u0001\u012b\u0001\u012b\u0001\u012b\u0001"+
		"\u012b\u0001\u012b\u0001\u012b\u0001\u012b\u0001\u012b\u0001\u012b\u0001"+
		"\u012b\u0001\u012b\u0001\u012b\u0001\u012b\u0001\u012b\u0001\u012b\u0003"+
		"\u012b\u138d\b\u012b\u0001\u012b\u0001\u012b\u0001\u012b\u0001\u012b\u0003"+
		"\u012b\u1393\b\u012b\u0001\u012b\u0003\u012b\u1396\b\u012b\u0001\u012c"+
		"\u0001\u012c\u0001\u012c\u0001\u012c\u0001\u012d\u0001\u012d\u0001\u012e"+
		"\u0001\u012e\u0001\u012e\u0005\u012e\u13a1\b\u012e\n\u012e\f\u012e\u13a4"+
		"\t\u012e\u0001\u012f\u0001\u012f\u0001\u012f\u0003\u012f\u13a9\b\u012f"+
		"\u0001\u0130\u0001\u0130\u0001\u0130\u0001\u0131\u0001\u0131\u0001\u0131"+
		"\u0001\u0131\u0001\u0131\u0001\u0132\u0001\u0132\u0001\u0132\u0001\u0132"+
		"\u0001\u0133\u0001\u0133\u0001\u0133\u0005\u0133\u13ba\b\u0133\n\u0133"+
		"\f\u0133\u13bd\t\u0133\u0001\u0134\u0001\u0134\u0001\u0134\u0001\u0134"+
		"\u0001\u0134\u0003\u0134\u13c4\b\u0134\u0001\u0135\u0001\u0135\u0001\u0135"+
		"\u0001\u0135\u0001\u0135\u0003\u0135\u13cb\b\u0135\u0001\u0136\u0001\u0136"+
		"\u0001\u0136\u0001\u0136\u0001\u0136\u0001\u0136\u0001\u0136\u0001\u0136"+
		"\u0003\u0136\u13d5\b\u0136\u0001\u0137\u0001\u0137\u0001\u0137\u0001\u0137"+
		"\u0001\u0138\u0001\u0138\u0001\u0138\u0001\u0138\u0001\u0139\u0001\u0139"+
		"\u0001\u0139\u0001\u0139\u0001\u0139\u0001\u0139\u0001\u0139\u0001\u0139"+
		"\u0003\u0139\u13e7\b\u0139\u0001\u013a\u0001\u013a\u0001\u013a\u0001\u013a"+
		"\u0001\u013a\u0001\u013a\u0003\u013a\u13ef\b\u013a\u0001\u013b\u0001\u013b"+
		"\u0001\u013b\u0001\u013b\u0001\u013b\u0001\u013c\u0001\u013c\u0001\u013c"+
		"\u0005\u013c\u13f9\b\u013c\n\u013c\f\u013c\u13fc\t\u013c\u0001\u013d\u0001"+
		"\u013d\u0001\u013d\u0001\u013e\u0001\u013e\u0001\u013f\u0001\u013f\u0001"+
		"\u0140\u0001\u0140\u0001\u0140\u0001\u0140\u0001\u0140\u0001\u0140\u0003"+
		"\u0140\u140b\b\u0140\u0001\u0141\u0001\u0141\u0001\u0141\u0001\u0141\u0001"+
		"\u0141\u0001\u0141\u0001\u0141\u0001\u0141\u0001\u0141\u0001\u0141\u0001"+
		"\u0141\u0001\u0141\u0001\u0141\u0001\u0141\u0001\u0141\u0001\u0141\u0001"+
		"\u0141\u0001\u0141\u0001\u0141\u0001\u0141\u0001\u0141\u0001\u0141\u0003"+
		"\u0141\u1423\b\u0141\u0001\u0142\u0001\u0142\u0001\u0142\u0001\u0142\u0001"+
		"\u0142\u0001\u0142\u0001\u0142\u0001\u0142\u0001\u0142\u0001\u0142\u0001"+
		"\u0142\u0001\u0142\u0001\u0142\u0001\u0142\u0001\u0142\u0003\u0142\u1434"+
		"\b\u0142\u0001\u0143\u0001\u0143\u0001\u0143\u0001\u0143\u0001\u0143\u0001"+
		"\u0143\u0003\u0143\u143c\b\u0143\u0001\u0144\u0001\u0144\u0001\u0144\u0005"+
		"\u0144\u1441\b\u0144\n\u0144\f\u0144\u1444\t\u0144\u0001\u0145\u0001\u0145"+
		"\u0003\u0145\u1448\b\u0145\u0001\u0146\u0001\u0146\u0001\u0147\u0001\u0147"+
		"\u0001\u0147\u0005\u0147\u144f\b\u0147\n\u0147\f\u0147\u1452\t\u0147\u0001"+
		"\u0148\u0001\u0148\u0001\u0148\u0003\u0148\u1457\b\u0148\u0001\u0149\u0001"+
		"\u0149\u0001\u0149\u0001\u0149\u0001\u0149\u0001\u0149\u0001\u0149\u0001"+
		"\u0149\u0003\u0149\u1461\b\u0149\u0001\u014a\u0001\u014a\u0003\u014a\u1465"+
		"\b\u014a\u0001\u014a\u0005\u014a\u1468\b\u014a\n\u014a\f\u014a\u146b\t"+
		"\u014a\u0001\u014b\u0001\u014b\u0001\u014b\u0001\u014b\u0001\u014b\u0001"+
		"\u014b\u0001\u014b\u0001\u014b\u0001\u014b\u0001\u014b\u0003\u014b\u1477"+
		"\b\u014b\u0001\u014c\u0001\u014c\u0001\u014c\u0001\u014c\u0001\u014c\u0001"+
		"\u014c\u0001\u014c\u0001\u014c\u0001\u014c\u0001\u014c\u0001\u014c\u0001"+
		"\u014c\u0001\u014c\u0001\u014c\u0003\u014c\u1487\b\u014c\u0001\u014c\u0001"+
		"\u014c\u0001\u014c\u0001\u014c\u0001\u014c\u0001\u014c\u0001\u014c\u0001"+
		"\u014c\u0001\u014c\u0001\u014c\u0001\u014c\u0001\u014c\u0001\u014c\u0001"+
		"\u014c\u0001\u014c\u0001\u014c\u0003\u014c\u1499\b\u014c\u0001\u014d\u0001"+
		"\u014d\u0001\u014e\u0001\u014e\u0001\u014e\u0001\u014e\u0003\u014e\u14a1"+
		"\b\u014e\u0001\u014f\u0001\u014f\u0001\u014f\u0001\u0150\u0001\u0150\u0001"+
		"\u0150\u0001\u0150\u0001\u0150\u0001\u0150\u0001\u0150\u0001\u0150\u0003"+
		"\u0150\u14ae\b\u0150\u0001\u0151\u0001\u0151\u0003\u0151\u14b2\b\u0151"+
		"\u0001\u0152\u0001\u0152\u0001\u0152\u0005\u0152\u14b7\b\u0152\n\u0152"+
		"\f\u0152\u14ba\t\u0152\u0001\u0153\u0001\u0153\u0001\u0153\u0001\u0153"+
		"\u0001\u0153\u0001\u0153\u0001\u0153\u0001\u0153\u0001\u0153\u0001\u0153"+
		"\u0001\u0153\u0001\u0153\u0001\u0153\u0001\u0153\u0001\u0153\u0001\u0153"+
		"\u0001\u0153\u0001\u0153\u0001\u0153\u0001\u0153\u0001\u0153\u0001\u0153"+
		"\u0001\u0153\u0001\u0153\u0001\u0153\u0001\u0153\u0001\u0153\u0001\u0153"+
		"\u0001\u0153\u0001\u0153\u0001\u0153\u0001\u0153\u0001\u0153\u0001\u0153"+
		"\u0001\u0153\u0003\u0153\u14df\b\u0153\u0001\u0154\u0001\u0154\u0001\u0154"+
		"\u0003\u0154\u14e4\b\u0154\u0001\u0155\u0001\u0155\u0001\u0156\u0001\u0156"+
		"\u0001\u0157\u0001\u0157\u0001\u0157\u0005\u0157\u14ed\b\u0157\n\u0157"+
		"\f\u0157\u14f0\t\u0157\u0001\u0158\u0001\u0158\u0001\u0158\u0001\u0158"+
		"\u0001\u0159\u0001\u0159\u0001\u0159\u0001\u015a\u0001\u015a\u0001\u015a"+
		"\u0003\u015a\u14fc\b\u015a\u0001\u015b\u0001\u015b\u0003\u015b\u1500\b"+
		"\u015b\u0001\u015b\u0001\u015b\u0003\u015b\u1504\b\u015b\u0001\u015b\u0003"+
		"\u015b\u1507\b\u015b\u0001\u015c\u0001\u015c\u0001\u015c\u0001\u015c\u0001"+
		"\u015d\u0001\u015d\u0001\u015d\u0001\u015d\u0003\u015d\u1511\b\u015d\u0001"+
		"\u015d\u0005\u015d\u1514\b\u015d\n\u015d\f\u015d\u1517\t\u015d\u0001\u015e"+
		"\u0001\u015e\u0001\u015e\u0001\u015e\u0001\u015e\u0001\u015e\u0001\u015e"+
		"\u0001\u015e\u0001\u015e\u0001\u015e\u0001\u015e\u0001\u015e\u0001\u015e"+
		"\u0003\u015e\u1526\b\u015e\u0001\u015f\u0001\u015f\u0001\u015f\u0001\u015f"+
		"\u0001\u015f\u0001\u015f\u0001\u015f\u0001\u015f\u0001\u015f\u0001\u015f"+
		"\u0001\u015f\u0001\u015f\u0001\u015f\u0001\u015f\u0001\u015f\u0001\u015f"+
		"\u0001\u015f\u0001\u015f\u0001\u015f\u0001\u015f\u0003\u015f\u153c\b\u015f"+
		"\u0001\u0160\u0001\u0160\u0001\u0161\u0001\u0161\u0001\u0161\u0003\u0161"+
		"\u1543\b\u0161\u0001\u0161\u0001\u0161\u0003\u0161\u1547\b\u0161\u0001"+
		"\u0162\u0001\u0162\u0001\u0162\u0001\u0162\u0001\u0163\u0001\u0163\u0003"+
		"\u0163\u154f\b\u0163\u0001\u0163\u0001\u0163\u0001\u0163\u0001\u0163\u0001"+
		"\u0163\u0001\u0163\u0003\u0163\u1557\b\u0163\u0001\u0163\u0001\u0163\u0001"+
		"\u0163\u0001\u0163\u0001\u0163\u0001\u0163\u0003\u0163\u155f\b\u0163\u0001"+
		"\u0163\u0001\u0163\u0001\u0163\u0001\u0163\u0001\u0163\u0001\u0163\u0003"+
		"\u0163\u1567\b\u0163\u0001\u0164\u0005\u0164\u156a\b\u0164\n\u0164\f\u0164"+
		"\u156d\t\u0164\u0001\u0165\u0001\u0165\u0001\u0165\u0001\u0165\u0003\u0165"+
		"\u1573\b\u0165\u0001\u0165\u0005\u0165\u1576\b\u0165\n\u0165\f\u0165\u1579"+
		"\t\u0165\u0001\u0166\u0001\u0166\u0001\u0166\u0003\u0166\u157e\b\u0166"+
		"\u0001\u0166\u0001\u0166\u0001\u0167\u0001\u0167\u0001\u0167\u0001\u0167"+
		"\u0001\u0168\u0001\u0168\u0001\u0168\u0001\u0168\u0003\u0168\u158a\b\u0168"+
		"\u0001\u0168\u0005\u0168\u158d\b\u0168\n\u0168\f\u0168\u1590\t\u0168\u0001"+
		"\u0169\u0001\u0169\u0001\u0169\u0003\u0169\u1595\b\u0169\u0001\u0169\u0001"+
		"\u0169\u0001\u016a\u0001\u016a\u0001\u016a\u0001\u016a\u0001\u016a\u0001"+
		"\u016a\u0001\u016a\u0001\u016b\u0001\u016b\u0001\u016b\u0001\u016b\u0003"+
		"\u016b\u15a4\b\u016b\u0001\u016b\u0001\u016b\u0001\u016b\u0001\u016b\u0001"+
		"\u016b\u0001\u016b\u0001\u016b\u0001\u016b\u0003\u016b\u15ae\b\u016b\u0001"+
		"\u016b\u0001\u016b\u0001\u016b\u0001\u016b\u0001\u016b\u0001\u016b\u0001"+
		"\u016b\u0003\u016b\u15b7\b\u016b\u0001\u016b\u0001\u016b\u0003\u016b\u15bb"+
		"\b\u016b\u0001\u016b\u0001\u016b\u0003\u016b\u15bf\b\u016b\u0001\u016b"+
		"\u0003\u016b\u15c2\b\u016b\u0001\u016b\u0003\u016b\u15c5\b\u016b\u0001"+
		"\u016b\u0003\u016b\u15c8\b\u016b\u0001\u016b\u0003\u016b\u15cb\b\u016b"+
		"\u0001\u016b\u0001\u016b\u0001\u016b\u0003\u016b\u15d0\b\u016b\u0003\u016b"+
		"\u15d2\b\u016b\u0001\u016b\u0001\u016b\u0001\u016b\u0001\u016b\u0003\u016b"+
		"\u15d8\b\u016b\u0003\u016b\u15da\b\u016b\u0001\u016c\u0001\u016c\u0001"+
		"\u016c\u0001\u016c\u0001\u016d\u0001\u016d\u0001\u016d\u0001\u016d\u0001"+
		"\u016d\u0001\u016d\u0001\u016d\u0001\u016d\u0001\u016d\u0001\u016d\u0001"+
		"\u016d\u0001\u016d\u0001\u016d\u0001\u016d\u0001\u016d\u0001\u016d\u0001"+
		"\u016d\u0001\u016d\u0001\u016d\u0001\u016d\u0001\u016d\u0001\u016d\u0001"+
		"\u016d\u0001\u016d\u0001\u016d\u0001\u016d\u0003\u016d\u15fa\b\u016d\u0001"+
		"\u016e\u0001\u016e\u0001\u016e\u0005\u016e\u15ff\b\u016e\n\u016e\f\u016e"+
		"\u1602\t\u016e\u0001\u016f\u0001\u016f\u0001\u016f\u0001\u0170\u0001\u0170"+
		"\u0001\u0170\u0005\u0170\u160a\b\u0170\n\u0170\f\u0170\u160d\t\u0170\u0001"+
		"\u0171\u0001\u0171\u0003\u0171\u1611\b\u0171\u0001\u0172\u0001\u0172\u0001"+
		"\u0172\u0003\u0172\u1616\b\u0172\u0001\u0172\u0001\u0172\u0001\u0173\u0001"+
		"\u0173\u0001\u0173\u0001\u0173\u0001\u0173\u0003\u0173\u161f\b\u0173\u0001"+
		"\u0174\u0001\u0174\u0001\u0174\u0001\u0175\u0001\u0175\u0001\u0175\u0001"+
		"\u0175\u0001\u0175\u0001\u0175\u0001\u0175\u0003\u0175\u162b\b\u0175\u0001"+
		"\u0176\u0001\u0176\u0001\u0176\u0001\u0176\u0003\u0176\u1631\b\u0176\u0001"+
		"\u0177\u0001\u0177\u0001\u0177\u0001\u0178\u0001\u0178\u0001\u0178\u0003"+
		"\u0178\u1639\b\u0178\u0001\u0179\u0001\u0179\u0001\u0179\u0001\u0179\u0001"+
		"\u0179\u0003\u0179\u1640\b\u0179\u0001\u0179\u0003\u0179\u1643\b\u0179"+
		"\u0001\u0179\u0001\u0179\u0001\u0179\u0001\u0179\u0003\u0179\u1649\b\u0179"+
		"\u0001\u0179\u0001\u0179\u0001\u0179\u0001\u0179\u0003\u0179\u164f\b\u0179"+
		"\u0001\u0179\u0001\u0179\u0003\u0179\u1653\b\u0179\u0001\u0179\u0003\u0179"+
		"\u1656\b\u0179\u0001\u0179\u0003\u0179\u1659\b\u0179\u0001\u017a\u0001"+
		"\u017a\u0001\u017a\u0001\u017a\u0001\u017a\u0001\u017b\u0001\u017b\u0001"+
		"\u017b\u0005\u017b\u1663\b\u017b\n\u017b\f\u017b\u1666\t\u017b\u0001\u017c"+
		"\u0001\u017c\u0001\u017c\u0001\u017d\u0001\u017d\u0001\u017d\u0001\u017d"+
		"\u0003\u017d\u166f\b\u017d\u0001\u017d\u0005\u017d\u1672\b\u017d\n\u017d"+
		"\f\u017d\u1675\t\u017d\u0001\u017e\u0001\u017e\u0001\u017e\u0003\u017e"+
		"\u167a\b\u017e\u0001\u017e\u0003\u017e\u167d\b\u017e\u0001\u017e\u0003"+
		"\u017e\u1680\b\u017e\u0001\u017e\u0001\u017e\u0001\u017e\u0001\u017e\u0001"+
		"\u017e\u0001\u017e\u0005\u017e\u1688\b\u017e\n\u017e\f\u017e\u168b\t\u017e"+
		"\u0003\u017e\u168d\b\u017e\u0001\u017e\u0003\u017e\u1690\b\u017e\u0001"+
		"\u017e\u0001\u017e\u0003\u017e\u1694\b\u017e\u0001\u017e\u0001\u017e\u0001"+
		"\u017e\u0001\u017e\u0003\u017e\u169a\b\u017e\u0001\u017e\u0001\u017e\u0003"+
		"\u017e\u169e\b\u017e\u0001\u017f\u0001\u017f\u0001\u017f\u0003\u017f\u16a3"+
		"\b\u017f\u0001\u017f\u0001\u017f\u0001\u0180\u0001\u0180\u0001\u0180\u0003"+
		"\u0180\u16aa\b\u0180\u0001\u0180\u0001\u0180\u0001\u0181\u0001\u0181\u0003"+
		"\u0181\u16b0\b\u0181\u0001\u0181\u0001\u0181\u0001\u0181\u0003\u0181\u16b5"+
		"\b\u0181\u0001\u0182\u0001\u0182\u0001\u0182\u0001\u0182\u0001\u0182\u0001"+
		"\u0182\u0001\u0182\u0001\u0182\u0003\u0182\u16bf\b\u0182\u0001\u0183\u0001"+
		"\u0183\u0001\u0183\u0003\u0183\u16c4\b\u0183\u0001\u0183\u0001\u0183\u0001"+
		"\u0183\u0001\u0183\u0001\u0183\u0001\u0183\u0001\u0183\u0001\u0183\u0001"+
		"\u0183\u0001\u0183\u0001\u0183\u0003\u0183\u16d1\b\u0183\u0001\u0183\u0001"+
		"\u0183\u0001\u0183\u0001\u0183\u0003\u0183\u16d7\b\u0183\u0003\u0183\u16d9"+
		"\b\u0183\u0001\u0184\u0001\u0184\u0001\u0184\u0003\u0184\u16de\b\u0184"+
		"\u0001\u0184\u0001\u0184\u0001\u0184\u0003\u0184\u16e3\b\u0184\u0001\u0184"+
		"\u0001\u0184\u0001\u0184\u0001\u0185\u0001\u0185\u0001\u0185\u0003\u0185"+
		"\u16eb\b\u0185\u0001\u0185\u0001\u0185\u0003\u0185\u16ef\b\u0185\u0001"+
		"\u0186\u0001\u0186\u0001\u0187\u0001\u0187\u0001\u0187\u0001\u0187\u0003"+
		"\u0187\u16f7\b\u0187\u0001\u0187\u0001\u0187\u0003\u0187\u16fb\b\u0187"+
		"\u0001\u0188\u0001\u0188\u0001\u0189\u0001\u0189\u0003\u0189\u1701\b\u0189"+
		"\u0001\u0189\u0001\u0189\u0001\u0189\u0003\u0189\u1706\b\u0189\u0001\u0189"+
		"\u0003\u0189\u1709\b\u0189\u0001\u018a\u0001\u018a\u0001\u018a\u0001\u018a"+
		"\u0003\u018a\u170f\b\u018a\u0001\u018b\u0003\u018b\u1712\b\u018b\u0001"+
		"\u018b\u0001\u018b\u0003\u018b\u1716\b\u018b\u0001\u018c\u0001\u018c\u0001"+
		"\u018c\u0001\u018c\u0005\u018c\u171c\b\u018c\n\u018c\f\u018c\u171f\t\u018c"+
		"\u0003\u018c\u1721\b\u018c\u0001\u018c\u0001\u018c\u0001\u018d\u0001\u018d"+
		"\u0001\u018d\u0001\u018d\u0001\u018d\u0005\u018d\u172a\b\u018d\n\u018d"+
		"\f\u018d\u172d\t\u018d\u0003\u018d\u172f\b\u018d\u0001\u018e\u0001\u018e"+
		"\u0001\u018e\u0003\u018e\u1734\b\u018e\u0001\u018e\u0005\u018e\u1737\b"+
		"\u018e\n\u018e\f\u018e\u173a\t\u018e\u0001\u018f\u0003\u018f\u173d\b\u018f"+
		"\u0001\u018f\u0001\u018f\u0001\u018f\u0001\u0190\u0001\u0190\u0001\u0190"+
		"\u0001\u0191\u0003\u0191\u1746\b\u0191\u0001\u0191\u0001\u0191\u0001\u0191"+
		"\u0001\u0191\u0001\u0191\u0001\u0191\u0001\u0191\u0001\u0191\u0001\u0191"+
		"\u0001\u0191\u0001\u0191\u0001\u0191\u0001\u0191\u0001\u0191\u0001\u0191"+
		"\u0001\u0191\u0003\u0191\u1758\b\u0191\u0001\u0191\u0001\u0191\u0001\u0191"+
		"\u0001\u0191\u0001\u0191\u0001\u0191\u0003\u0191\u1760\b\u0191\u0001\u0191"+
		"\u0001\u0191\u0001\u0191\u0001\u0191\u0001\u0191\u0001\u0191\u0001\u0191"+
		"\u0001\u0191\u0003\u0191\u176a\b\u0191\u0001\u0191\u0001\u0191\u0001\u0191"+
		"\u0001\u0191\u0001\u0191\u0001\u0191\u0003\u0191\u1772\b\u0191\u0001\u0191"+
		"\u0001\u0191\u0001\u0191\u0005\u0191\u1777\b\u0191\n\u0191\f\u0191\u177a"+
		"\t\u0191\u0003\u0191\u177c\b\u0191\u0001\u0192\u0001\u0192\u0001\u0192"+
		"\u0001\u0192\u0003\u0192\u1782\b\u0192\u0001\u0193\u0001\u0193\u0003\u0193"+
		"\u1786\b\u0193\u0001\u0194\u0004\u0194\u1789\b\u0194\u000b\u0194\f\u0194"+
		"\u178a\u0001\u0195\u0001\u0195\u0003\u0195\u178f\b\u0195\u0001\u0195\u0001"+
		"\u0195\u0001\u0195\u0003\u0195\u1794\b\u0195\u0001\u0195\u0001\u0195\u0001"+
		"\u0195\u0001\u0195\u0001\u0195\u0001\u0195\u0001\u0195\u0001\u0195\u0001"+
		"\u0195\u0001\u0195\u0001\u0195\u0001\u0195\u0001\u0195\u0001\u0195\u0001"+
		"\u0195\u0001\u0195\u0003\u0195\u17a6\b\u0195\u0001\u0196\u0001\u0196\u0001"+
		"\u0196\u0001\u0196\u0003\u0196\u17ac\b\u0196\u0001\u0196\u0001\u0196\u0001"+
		"\u0196\u0001\u0196\u0003\u0196\u17b2\b\u0196\u0001\u0197\u0001\u0197\u0001"+
		"\u0197\u0001\u0197\u0001\u0197\u0001\u0197\u0003\u0197\u17ba\b\u0197\u0001"+
		"\u0198\u0003\u0198\u17bd\b\u0198\u0001\u0198\u0003\u0198\u17c0\b\u0198"+
		"\u0001\u0198\u0001\u0198\u0003\u0198\u17c4\b\u0198\u0001\u0199\u0001\u0199"+
		"\u0001\u0199\u0001\u019a\u0003\u019a\u17ca\b\u019a\u0001\u019a\u0001\u019a"+
		"\u0001\u019a\u0001\u019b\u0001\u019b\u0001\u019b\u0001\u019b\u0001\u019b"+
		"\u0001\u019b\u0001\u019b\u0001\u019b\u0001\u019b\u0001\u019b\u0001\u019b"+
		"\u0001\u019b\u0003\u019b\u17db\b\u019b\u0001\u019b\u0001\u019b\u0001\u019b"+
		"\u0001\u019b\u0001\u019b\u0003\u019b\u17e2\b\u019b\u0001\u019b\u0001\u019b"+
		"\u0001\u019b\u0001\u019b\u0001\u019b\u0001\u019b\u0003\u019b\u17ea\b\u019b"+
		"\u0001\u019b\u0001\u019b\u0001\u019b\u0001\u019b\u0001\u019b\u0001\u019b"+
		"\u0003\u019b\u17f2\b\u019b\u0001\u019b\u0001\u019b\u0001\u019b\u0005\u019b"+
		"\u17f7\b\u019b\n\u019b\f\u019b\u17fa\t\u019b\u0003\u019b\u17fc\b\u019b"+
		"\u0001\u019c\u0001\u019c\u0001\u019c\u0001\u019c\u0001\u019c\u0001\u019d"+
		"\u0001\u019d\u0001\u019d\u0005\u019d\u1806\b\u019d\n\u019d\f\u019d\u1809"+
		"\t\u019d\u0001\u019e\u0001\u019e\u0001\u019e\u0001\u019e\u0001\u019e\u0001"+
		"\u019e\u0001\u019e\u0001\u019e\u0001\u019e\u0001\u019e\u0001\u019e\u0003"+
		"\u019e\u1816\b\u019e\u0001\u019f\u0001\u019f\u0003\u019f\u181a\b\u019f"+
		"\u0001\u01a0\u0001\u01a0\u0001\u01a0\u0001\u01a0\u0001\u01a0\u0001\u01a0"+
		"\u0001\u01a0\u0001\u01a0\u0003\u01a0\u1824\b\u01a0\u0001\u01a0\u0005\u01a0"+
		"\u1827\b\u01a0\n\u01a0\f\u01a0\u182a\t\u01a0\u0001\u01a1\u0001\u01a1\u0001"+
		"\u01a1\u0005\u01a1\u182f\b\u01a1\n\u01a1\f\u01a1\u1832\t\u01a1\u0001\u01a2"+
		"\u0001\u01a2\u0001\u01a2\u0003\u01a2\u1837\b\u01a2\u0001\u01a2\u0003\u01a2"+
		"\u183a\b\u01a2\u0001\u01a2\u0001\u01a2\u0001\u01a2\u0001\u01a2\u0001\u01a2"+
		"\u0003\u01a2\u1841\b\u01a2\u0001\u01a2\u0003\u01a2\u1844\b\u01a2\u0001"+
		"\u01a2\u0001\u01a2\u0001\u01a2\u0001\u01a2\u0001\u01a2\u0001\u01a2\u0001"+
		"\u01a2\u0001\u01a2\u0001\u01a2\u0001\u01a2\u0003\u01a2\u1850\b\u01a2\u0001"+
		"\u01a2\u0003\u01a2\u1853\b\u01a2\u0003\u01a2\u1855\b\u01a2\u0001\u01a3"+
		"\u0001\u01a3\u0003\u01a3\u1859\b\u01a3\u0001\u01a4\u0001\u01a4\u0003\u01a4"+
		"\u185d\b\u01a4\u0001\u01a5\u0003\u01a5\u1860\b\u01a5\u0001\u01a6\u0003"+
		"\u01a6\u1863\b\u01a6\u0001\u01a7\u0003\u01a7\u1866\b\u01a7\u0001\u01a8"+
		"\u0001\u01a8\u0003\u01a8\u186a\b\u01a8\u0001\u01a9\u0003\u01a9\u186d\b"+
		"\u01a9\u0001\u01aa\u0001\u01aa\u0001\u01aa\u0001\u01aa\u0001\u01aa\u0001"+
		"\u01aa\u0001\u01aa\u0001\u01aa\u0003\u01aa\u1877\b\u01aa\u0001\u01ab\u0001"+
		"\u01ab\u0001\u01ab\u0001\u01ab\u0001\u01ab\u0001\u01ab\u0001\u01ab\u0001"+
		"\u01ab\u0003\u01ab\u1881\b\u01ab\u0001\u01ac\u0001\u01ac\u0001\u01ac\u0001"+
		"\u01ac\u0001\u01ac\u0003\u01ac\u1888\b\u01ac\u0001\u01ad\u0001\u01ad\u0001"+
		"\u01ad\u0001\u01ad\u0001\u01ae\u0001\u01ae\u0001\u01ae\u0001\u01ae\u0001"+
		"\u01af\u0001\u01af\u0001\u01af\u0001\u01af\u0001\u01af\u0001\u01b0\u0001"+
		"\u01b0\u0001\u01b0\u0003\u01b0\u189a\b\u01b0\u0001\u01b0\u0001\u01b0\u0001"+
		"\u01b0\u0001\u01b0\u0003\u01b0\u18a0\b\u01b0\u0001\u01b1\u0001\u01b1\u0001"+
		"\u01b1\u0005\u01b1\u18a5\b\u01b1\n\u01b1\f\u01b1\u18a8\t\u01b1\u0001\u01b2"+
		"\u0001\u01b2\u0003\u01b2\u18ac\b\u01b2\u0001\u01b3\u0001\u01b3\u0001\u01b3"+
		"\u0005\u01b3\u18b1\b\u01b3\n\u01b3\f\u01b3\u18b4\t\u01b3\u0001\u01b4\u0001"+
		"\u01b4\u0001\u01b4\u0001\u01b4\u0001\u01b4\u0001\u01b4\u0001\u01b4\u0001"+
		"\u01b4\u0001\u01b4\u0001\u01b4\u0001\u01b4\u0001\u01b4\u0003\u01b4\u18c2"+
		"\b\u01b4\u0001\u01b4\u0001\u01b4\u0001\u01b4\u0001\u01b4\u0001\u01b4\u0001"+
		"\u01b4\u0001\u01b4\u0001\u01b4\u0001\u01b4\u0001\u01b4\u0001\u01b4\u0001"+
		"\u01b4\u0001\u01b4\u0001\u01b4\u0003\u01b4\u18d2\b\u01b4\u0001\u01b4\u0003"+
		"\u01b4\u18d5\b\u01b4\u0001\u01b4\u0001\u01b4\u0001\u01b4\u0001\u01b4\u0001"+
		"\u01b4\u0001\u01b4\u0001\u01b4\u0001\u01b4\u0001\u01b4\u0001\u01b4\u0001"+
		"\u01b4\u0001\u01b4\u0001\u01b4\u0001\u01b4\u0001\u01b4\u0001\u01b4\u0001"+
		"\u01b4\u0001\u01b4\u0001\u01b4\u0001\u01b4\u0001\u01b4\u0001\u01b4\u0005"+
		"\u01b4\u18ed\b\u01b4\n\u01b4\f\u01b4\u18f0\t\u01b4\u0001\u01b4\u0001\u01b4"+
		"\u0001\u01b4\u0001\u01b4\u0001\u01b4\u0001\u01b4\u0001\u01b4\u0005\u01b4"+
		"\u18f9\b\u01b4\n\u01b4\f\u01b4\u18fc\t\u01b4\u0001\u01b4\u0001\u01b4\u0001"+
		"\u01b4\u0001\u01b4\u0001\u01b4\u0001\u01b4\u0001\u01b4\u0001\u01b4\u0001"+
		"\u01b4\u0001\u01b4\u0001\u01b4\u0001\u01b4\u0001\u01b4\u0001\u01b4\u0001"+
		"\u01b4\u0001\u01b4\u0003\u01b4\u190e\b\u01b4\u0001\u01b4\u0001\u01b4\u0001"+
		"\u01b4\u0001\u01b4\u0001\u01b4\u0001\u01b4\u0001\u01b4\u0001\u01b4\u0003"+
		"\u01b4\u1918\b\u01b4\u0003\u01b4\u191a\b\u01b4\u0001\u01b5\u0001\u01b5"+
		"\u0003\u01b5\u191e\b\u01b5\u0001\u01b5\u0003\u01b5\u1921\b\u01b5\u0001"+
		"\u01b5\u0001\u01b5\u0001\u01b6\u0001\u01b6\u0003\u01b6\u1927\b\u01b6\u0001"+
		"\u01b6\u0003\u01b6\u192a\b\u01b6\u0001\u01b6\u0001\u01b6\u0003\u01b6\u192e"+
		"\b\u01b6\u0001\u01b7\u0001\u01b7\u0001\u01b7\u0003\u01b7\u1933\b\u01b7"+
		"\u0001\u01b7\u0001\u01b7\u0001\u01b7\u0003\u01b7\u1938\b\u01b7\u0001\u01b7"+
		"\u0001\u01b7\u0003\u01b7\u193c\b\u01b7\u0001\u01b7\u0001\u01b7\u0001\u01b7"+
		"\u0001\u01b7\u0001\u01b7\u0001\u01b7\u0001\u01b7\u0001\u01b7\u0001\u01b7"+
		"\u0001\u01b7\u0001\u01b7\u0001\u01b7\u0001\u01b7\u0001\u01b7\u0001\u01b7"+
		"\u0001\u01b7\u0001\u01b7\u0001\u01b7\u0001\u01b7\u0001\u01b7\u0003\u01b7"+
		"\u1952\b\u01b7\u0001\u01b7\u0001\u01b7\u0001\u01b7\u0001\u01b7\u0001\u01b7"+
		"\u0001\u01b7\u0003\u01b7\u195a\b\u01b7\u0001\u01b7\u0001\u01b7\u0001\u01b7"+
		"\u0005\u01b7\u195f\b\u01b7\n\u01b7\f\u01b7\u1962\t\u01b7\u0001\u01b7\u0001"+
		"\u01b7\u0001\u01b7\u0001\u01b7\u0003\u01b7\u1968\b\u01b7\u0001\u01b7\u0001"+
		"\u01b7\u0001\u01b7\u0001\u01b7\u0001\u01b7\u0001\u01b7\u0001\u01b7\u0001"+
		"\u01b7\u0001\u01b7\u0001\u01b7\u0001\u01b7\u0001\u01b7\u0001\u01b7\u0001"+
		"\u01b7\u0001\u01b7\u0001\u01b7\u0001\u01b7\u0001\u01b7\u0001\u01b7\u0001"+
		"\u01b7\u0001\u01b7\u0001\u01b7\u0003\u01b7\u1980\b\u01b7\u0001\u01b8\u0001"+
		"\u01b8\u0003\u01b8\u1984\b\u01b8\u0001\u01b8\u0001\u01b8\u0001\u01b9\u0001"+
		"\u01b9\u0001\u01b9\u0001\u01b9\u0001\u01b9\u0003\u01b9\u198d\b\u01b9\u0001"+
		"\u01b9\u0003\u01b9\u1990\b\u01b9\u0001\u01b9\u0001\u01b9\u0003\u01b9\u1994"+
		"\b\u01b9\u0001\u01b9\u0003\u01b9\u1997\b\u01b9\u0003\u01b9\u1999\b\u01b9"+
		"\u0001\u01ba\u0001\u01ba\u0001\u01ba\u0005\u01ba\u199e\b\u01ba\n\u01ba"+
		"\f\u01ba\u19a1\t\u01ba\u0001\u01bb\u0001\u01bb\u0001\u01bb\u0001\u01bb"+
		"\u0001\u01bc\u0001\u01bc\u0001\u01bc\u0001\u01bc\u0003\u01bc\u19ab\b\u01bc"+
		"\u0001\u01bc\u0003\u01bc\u19ae\b\u01bc\u0001\u01bd\u0001\u01bd\u0003\u01bd"+
		"\u19b2\b\u01bd\u0001\u01bd\u0001\u01bd\u0003\u01bd\u19b6\b\u01bd\u0001"+
		"\u01bd\u0001\u01bd\u0001\u01bd\u0001\u01bd\u0001\u01bd\u0001\u01be\u0001"+
		"\u01be\u0001\u01be\u0001\u01be\u0001\u01be\u0001\u01bf\u0001\u01bf\u0001"+
		"\u01bf\u0001\u01bf\u0001\u01c0\u0001\u01c0\u0001\u01c0\u0003\u01c0\u19c9"+
		"\b\u01c0\u0001\u01c0\u0001\u01c0\u0003\u01c0\u19cd\b\u01c0\u0001\u01c1"+
		"\u0001\u01c1\u0001\u01c1\u0001\u01c1\u0001\u01c2\u0001\u01c2\u0001\u01c3"+
		"\u0001\u01c3\u0003\u01c3\u19d7\b\u01c3\u0001\u01c3\u0001\u01c3\u0001\u01c3"+
		"\u0001\u01c3\u0001\u01c4\u0001\u01c4\u0001\u01c4\u0001\u01c4\u0001\u01c4"+
		"\u0001\u01c4\u0001\u01c5\u0001\u01c5\u0001\u01c5\u0001\u01c5\u0001\u01c6"+
		"\u0001\u01c6\u0001\u01c6\u0005\u01c6\u19ea\b\u01c6\n\u01c6\f\u01c6\u19ed"+
		"\t\u01c6\u0001\u01c7\u0001\u01c7\u0001\u01c7\u0001\u01c7\u0001\u01c7\u0001"+
		"\u01c8\u0003\u01c8\u19f5\b\u01c8\u0001\u01c8\u0003\u01c8\u19f8\b\u01c8"+
		"\u0001\u01c8\u0001\u01c8\u0001\u01c8\u0001\u01c8\u0001\u01c8\u0001\u01c8"+
		"\u0001\u01c8\u0001\u01c8\u0001\u01c8\u0001\u01c8\u0003\u01c8\u1a04\b\u01c8"+
		"\u0001\u01c9\u0004\u01c9\u1a07\b\u01c9\u000b\u01c9\f\u01c9\u1a08\u0001"+
		"\u01ca\u0001\u01ca\u0003\u01ca\u1a0d\b\u01ca\u0001\u01ca\u0001\u01ca\u0001"+
		"\u01ca\u0001\u01ca\u0003\u01ca\u1a13\b\u01ca\u0001\u01ca\u0001\u01ca\u0001"+
		"\u01ca\u0001\u01ca\u0003\u01ca\u1a19\b\u01ca\u0001\u01ca\u0001\u01ca\u0003"+
		"\u01ca\u1a1d\b\u01ca\u0001\u01cb\u0001\u01cb\u0001\u01cb\u0005\u01cb\u1a22"+
		"\b\u01cb\n\u01cb\f\u01cb\u1a25\t\u01cb\u0001\u01cc\u0001\u01cc\u0003\u01cc"+
		"\u1a29\b\u01cc\u0001\u01cc\u0003\u01cc\u1a2c\b\u01cc\u0001\u01cc\u0001"+
		"\u01cc\u0001\u01cc\u0003\u01cc\u1a31\b\u01cc\u0001\u01cc\u0001\u01cc\u0001"+
		"\u01cc\u0001\u01cc\u0001\u01cc\u0003\u01cc\u1a38\b\u01cc\u0001\u01cc\u0001"+
		"\u01cc\u0001\u01cc\u0001\u01cc\u0001\u01cc\u0001\u01cc\u0001\u01cc\u0003"+
		"\u01cc\u1a41\b\u01cc\u0001\u01cc\u0001\u01cc\u0001\u01cc\u0001\u01cc\u0001"+
		"\u01cc\u0001\u01cc\u0001\u01cc\u0003\u01cc\u1a4a\b\u01cc\u0001\u01cc\u0001"+
		"\u01cc\u0001\u01cc\u0001\u01cc\u0001\u01cc\u0001\u01cc\u0001\u01cc\u0003"+
		"\u01cc\u1a53\b\u01cc\u0001\u01cc\u0001\u01cc\u0001\u01cc\u0001\u01cc\u0001"+
		"\u01cc\u0001\u01cc\u0003\u01cc\u1a5b\b\u01cc\u0001\u01cc\u0001\u01cc\u0001"+
		"\u01cc\u0001\u01cc\u0001\u01cc\u0001\u01cc\u0003\u01cc\u1a63\b\u01cc\u0001"+
		"\u01cc\u0001\u01cc\u0001\u01cc\u0001\u01cc\u0001\u01cc\u0001\u01cc\u0003"+
		"\u01cc\u1a6b\b\u01cc\u0001\u01cc\u0001\u01cc\u0001\u01cc\u0001\u01cc\u0001"+
		"\u01cc\u0001\u01cc\u0001\u01cc\u0003\u01cc\u1a74\b\u01cc\u0001\u01cc\u0001"+
		"\u01cc\u0001\u01cc\u0001\u01cc\u0001\u01cc\u0001\u01cc\u0001\u01cc\u0003"+
		"\u01cc\u1a7d\b\u01cc\u0001\u01cc\u0001\u01cc\u0003\u01cc\u1a81\b\u01cc"+
		"\u0001\u01cc\u0001\u01cc\u0001\u01cc\u0001\u01cc\u0001\u01cc\u0003\u01cc"+
		"\u1a88\b\u01cc\u0001\u01cc\u0001\u01cc\u0001\u01cc\u0001\u01cc\u0001\u01cc"+
		"\u0001\u01cc\u0003\u01cc\u1a90\b\u01cc\u0001\u01cc\u0001\u01cc\u0001\u01cc"+
		"\u0001\u01cc\u0001\u01cc\u0001\u01cc\u0001\u01cc\u0003\u01cc\u1a99\b\u01cc"+
		"\u0001\u01cc\u0001\u01cc\u0001\u01cc\u0003\u01cc\u1a9e\b\u01cc\u0001\u01cc"+
		"\u0001\u01cc\u0003\u01cc\u1aa2\b\u01cc\u0001\u01cc\u0001\u01cc\u0003\u01cc"+
		"\u1aa6\b\u01cc\u0001\u01cc\u0001\u01cc\u0003\u01cc\u1aaa\b\u01cc\u0001"+
		"\u01cc\u0001\u01cc\u0003\u01cc\u1aae\b\u01cc\u0001\u01cc\u0001\u01cc\u0001"+
		"\u01cc\u0003\u01cc\u1ab3\b\u01cc\u0001\u01cc\u0003\u01cc\u1ab6\b\u01cc"+
		"\u0001\u01cc\u0001\u01cc\u0003\u01cc\u1aba\b\u01cc\u0001\u01cc\u0001\u01cc"+
		"\u0001\u01cc\u0001\u01cc\u0001\u01cc\u0001\u01cc\u0001\u01cc\u0003\u01cc"+
		"\u1ac3\b\u01cc\u0001\u01cc\u0001\u01cc\u0001\u01cc\u0001\u01cc\u0001\u01cc"+
		"\u0001\u01cc\u0001\u01cc\u0001\u01cc\u0001\u01cc\u0001\u01cc\u0001\u01cc"+
		"\u0001\u01cc\u0001\u01cc\u0003\u01cc\u1ad2\b\u01cc\u0001\u01cc\u0001\u01cc"+
		"\u0001\u01cc\u0001\u01cc\u0003\u01cc\u1ad8\b\u01cc\u0001\u01cc\u0001\u01cc"+
		"\u0001\u01cc\u0001\u01cc\u0001\u01cc\u0001\u01cc\u0001\u01cc\u0001\u01cc"+
		"\u0001\u01cc\u0001\u01cc\u0001\u01cc\u0001\u01cc\u0001\u01cc\u0001\u01cc"+
		"\u0001\u01cc\u0001\u01cc\u0001\u01cc\u0001\u01cc\u0001\u01cc\u0001\u01cc"+
		"\u0001\u01cc\u0001\u01cc\u0001\u01cc\u0001\u01cc\u0001\u01cc\u0001\u01cc"+
		"\u0001\u01cc\u0001\u01cc\u0001\u01cc\u0001\u01cc\u0001\u01cc\u0001\u01cc"+
		"\u0001\u01cc\u0001\u01cc\u0001\u01cc\u0001\u01cc\u0001\u01cc\u0001\u01cc"+
		"\u0001\u01cc\u0001\u01cc\u0001\u01cc\u0001\u01cc\u0001\u01cc\u0001\u01cc"+
		"\u0001\u01cc\u0001\u01cc\u0001\u01cc\u0001\u01cc\u0001\u01cc\u0001\u01cc"+
		"\u0001\u01cc\u0001\u01cc\u0001\u01cc\u0001\u01cc\u0001\u01cc\u0001\u01cc"+
		"\u0001\u01cc\u0001\u01cc\u0001\u01cc\u0001\u01cc\u0001\u01cc\u0001\u01cc"+
		"\u0001\u01cc\u0001\u01cc\u0001\u01cc\u0001\u01cc\u0001\u01cc\u0001\u01cc"+
		"\u0001\u01cc\u0001\u01cc\u0001\u01cc\u0001\u01cc\u0001\u01cc\u0001\u01cc"+
		"\u0001\u01cc\u0001\u01cc\u0001\u01cc\u0001\u01cc\u0001\u01cc\u0001\u01cc"+
		"\u0001\u01cc\u0001\u01cc\u0001\u01cc\u0001\u01cc\u0001\u01cc\u0001\u01cc"+
		"\u0001\u01cc\u0001\u01cc\u0001\u01cc\u0001\u01cc\u0001\u01cc\u0001\u01cc"+
		"\u0001\u01cc\u0003\u01cc\u1b37\b\u01cc\u0001\u01cd\u0005\u01cd\u1b3a\b"+
		"\u01cd\n\u01cd\f\u01cd\u1b3d\t\u01cd\u0001\u01ce\u0001\u01ce\u0001\u01ce"+
		"\u0001\u01ce\u0001\u01ce\u0001\u01ce\u0001\u01ce\u0001\u01ce\u0001\u01ce"+
		"\u0001\u01ce\u0001\u01ce\u0003\u01ce\u1b4a\b\u01ce\u0001\u01cf\u0001\u01cf"+
		"\u0001\u01cf\u0001\u01cf\u0001\u01cf\u0001\u01d0\u0001\u01d0\u0001\u01d0"+
		"\u0005\u01d0\u1b54\b\u01d0\n\u01d0\f\u01d0\u1b57\t\u01d0\u0001\u01d1\u0001"+
		"\u01d1\u0001\u01d1\u0001\u01d1\u0001\u01d1\u0001\u01d1\u0001\u01d1\u0003"+
		"\u01d1\u1b60\b\u01d1\u0001\u01d2\u0001\u01d2\u0001\u01d2\u0001\u01d3\u0001"+
		"\u01d3\u0001\u01d3\u0001\u01d4\u0004\u01d4\u1b69\b\u01d4\u000b\u01d4\f"+
		"\u01d4\u1b6a\u0001\u01d5\u0001\u01d5\u0001\u01d5\u0003\u01d5\u1b70\b\u01d5"+
		"\u0001\u01d5\u0001\u01d5\u0001\u01d5\u0001\u01d5\u0001\u01d5\u0001\u01d5"+
		"\u0003\u01d5\u1b78\b\u01d5\u0001\u01d6\u0001\u01d6\u0001\u01d6\u0001\u01d6"+
		"\u0001\u01d6\u0003\u01d6\u1b7f\b\u01d6\u0001\u01d7\u0001\u01d7\u0001\u01d7"+
		"\u0001\u01d7\u0001\u01d8\u0001\u01d8\u0001\u01d8\u0001\u01d8\u0001\u01d8"+
		"\u0001\u01d8\u0001\u01d8\u0001\u01d8\u0001\u01d9\u0001\u01d9\u0001\u01d9"+
		"\u0001\u01d9\u0001\u01d9\u0001\u01d9\u0001\u01d9\u0001\u01d9\u0001\u01d9"+
		"\u0003\u01d9\u1b96\b\u01d9\u0001\u01da\u0001\u01da\u0001\u01da\u0001\u01da"+
		"\u0001\u01da\u0001\u01da\u0001\u01da\u0001\u01da\u0001\u01db\u0001\u01db"+
		"\u0001\u01db\u0003\u01db\u1ba3\b\u01db\u0001\u01dc\u0001\u01dc\u0001\u01dc"+
		"\u0005\u01dc\u1ba8\b\u01dc\n\u01dc\f\u01dc\u1bab\t\u01dc\u0001\u01dd\u0001"+
		"\u01dd\u0001\u01dd\u0001\u01dd\u0003\u01dd\u1bb1\b\u01dd\u0001\u01dd\u0003"+
		"\u01dd\u1bb4\b\u01dd\u0001\u01dd\u0001\u01dd\u0001\u01dd\u0001\u01dd\u0003"+
		"\u01dd\u1bba\b\u01dd\u0001\u01dd\u0003\u01dd\u1bbd\b\u01dd\u0001\u01dd"+
		"\u0001\u01dd\u0001\u01dd\u0001\u01dd\u0001\u01dd\u0001\u01dd\u0001\u01dd"+
		"\u0001\u01dd\u0001\u01dd\u0001\u01dd\u0001\u01dd\u0001\u01dd\u0003\u01dd"+
		"\u1bcb\b\u01dd\u0001\u01de\u0001\u01de\u0001\u01de\u0001\u01de\u0001\u01de"+
		"\u0001\u01de\u0003\u01de\u1bd3\b\u01de\u0001\u01df\u0001\u01df\u0001\u01df"+
		"\u0001\u01df\u0001\u01df\u0001\u01df\u0001\u01df\u0001\u01df\u0001\u01df"+
		"\u0001\u01df\u0001\u01df\u0001\u01df\u0001\u01df\u0001\u01df\u0001\u01df"+
		"\u0001\u01df\u0003\u01df\u1be5\b\u01df\u0001\u01e0\u0001\u01e0\u0001\u01e0"+
		"\u0005\u01e0\u1bea\b\u01e0\n\u01e0\f\u01e0\u1bed\t\u01e0\u0001\u01e1\u0001"+
		"\u01e1\u0001\u01e1\u0001\u01e1\u0003\u01e1\u1bf3\b\u01e1\u0001\u01e2\u0001"+
		"\u01e2\u0001\u01e2\u0001\u01e2\u0001\u01e2\u0003\u01e2\u1bfa\b\u01e2\u0001"+
		"\u01e3\u0001\u01e3\u0001\u01e3\u0001\u01e4\u0001\u01e4\u0001\u01e4\u0001"+
		"\u01e4\u0001\u01e4\u0001\u01e5\u0001\u01e5\u0001\u01e5\u0001\u01e6\u0001"+
		"\u01e6\u0001\u01e6\u0001\u01e6\u0001\u01e6\u0001\u01e6\u0001\u01e6\u0001"+
		"\u01e6\u0001\u01e6\u0001\u01e6\u0001\u01e6\u0001\u01e6\u0001\u01e6\u0001"+
		"\u01e6\u0001\u01e6\u0001\u01e6\u0001\u01e6\u0001\u01e6\u0001\u01e6\u0001"+
		"\u01e6\u0003\u01e6\u1c1b\b\u01e6\u0001\u01e7\u0001\u01e7\u0001\u01e7\u0005"+
		"\u01e7\u1c20\b\u01e7\n\u01e7\f\u01e7\u1c23\t\u01e7\u0001\u01e8\u0001\u01e8"+
		"\u0001\u01e9\u0001\u01e9\u0001\u01e9\u0001\u01e9\u0001\u01e9\u0001\u01e9"+
		"\u0001\u01e9\u0001\u01e9\u0001\u01e9\u0003\u01e9\u1c30\b\u01e9\u0001\u01ea"+
		"\u0001\u01ea\u0001\u01ea\u0001\u01ea\u0001\u01ea\u0001\u01eb\u0001\u01eb"+
		"\u0001\u01eb\u0001\u01eb\u0001\u01eb\u0001\u01eb\u0001\u01eb\u0001\u01eb"+
		"\u0001\u01eb\u0001\u01eb\u0001\u01eb\u0003\u01eb\u1c42\b\u01eb\u0001\u01ec"+
		"\u0001\u01ec\u0001\u01ec\u0001\u01ec\u0001\u01ec\u0001\u01ec\u0001\u01ec"+
		"\u0001\u01ed\u0001\u01ed\u0001\u01ed\u0001\u01ed\u0001\u01ed\u0001\u01ed"+
		"\u0001\u01ed\u0001\u01ee\u0001\u01ee\u0001\u01ee\u0001\u01ee\u0001\u01ee"+
		"\u0001\u01ef\u0001\u01ef\u0001\u01ef\u0001\u01ef\u0001\u01ef\u0001\u01ef"+
		"\u0001\u01ef\u0001\u01ef\u0001\u01ef\u0003\u01ef\u1c60\b\u01ef\u0001\u01f0"+
		"\u0001\u01f0\u0001\u01f0\u0001\u01f0\u0003\u01f0\u1c66\b\u01f0\u0001\u01f0"+
		"\u0001\u01f0\u0001\u01f1\u0001\u01f1\u0001\u01f1\u0001\u01f1\u0001\u01f1"+
		"\u0001\u01f1\u0001\u01f1\u0003\u01f1\u1c71\b\u01f1\u0001\u01f1\u0001\u01f1"+
		"\u0001\u01f1\u0001\u01f1\u0001\u01f1\u0001\u01f1\u0001\u01f1\u0003\u01f1"+
		"\u1c7a\b\u01f1\u0001\u01f1\u0001\u01f1\u0001\u01f1\u0001\u01f1\u0001\u01f1"+
		"\u0001\u01f1\u0001\u01f1\u0001\u01f1\u0001\u01f1\u0001\u01f1\u0003\u01f1"+
		"\u1c86\b\u01f1\u0003\u01f1\u1c88\b\u01f1\u0001\u01f2\u0001\u01f2\u0001"+
		"\u01f2\u0001\u01f2\u0001\u01f3\u0001\u01f3\u0001\u01f3\u0005\u01f3\u1c91"+
		"\b\u01f3\n\u01f3\f\u01f3\u1c94\t\u01f3\u0001\u01f4\u0003\u01f4\u1c97\b"+
		"\u01f4\u0001\u01f4\u0001\u01f4\u0001\u01f5\u0001\u01f5\u0001\u01f6\u0001"+
		"\u01f6\u0001\u01f6\u0001\u01f6\u0001\u01f6\u0001\u01f6\u0001\u01f6\u0001"+
		"\u01f6\u0001\u01f6\u0001\u01f6\u0001\u01f6\u0001\u01f6\u0001\u01f6\u0001"+
		"\u01f6\u0001\u01f6\u0003\u01f6\u1cac\b\u01f6\u0001\u01f7\u0001\u01f7\u0001"+
		"\u01f7\u0005\u01f7\u1cb1\b\u01f7\n\u01f7\f\u01f7\u1cb4\t\u01f7\u0001\u01f8"+
		"\u0001\u01f8\u0003\u01f8\u1cb8\b\u01f8\u0001\u01f8\u0001\u01f8\u0003\u01f8"+
		"\u1cbc\b\u01f8\u0001\u01f8\u0001\u01f8\u0003\u01f8\u1cc0\b\u01f8\u0001"+
		"\u01f8\u0001\u01f8\u0003\u01f8\u1cc4\b\u01f8\u0003\u01f8\u1cc6\b\u01f8"+
		"\u0001\u01f9\u0004\u01f9\u1cc9\b\u01f9\u000b\u01f9\f\u01f9\u1cca\u0001"+
		"\u01fa\u0001\u01fa\u0001\u01fa\u0001\u01fa\u0001\u01fa\u0001\u01fa\u0003"+
		"\u01fa\u1cd3\b\u01fa\u0001\u01fb\u0001\u01fb\u0001\u01fc\u0001\u01fc\u0001"+
		"\u01fc\u0001\u01fc\u0001\u01fd\u0001\u01fd\u0001\u01fd\u0001\u01fd\u0001"+
		"\u01fd\u0001\u01fd\u0001\u01fd\u0001\u01fd\u0001\u01fd\u0001\u01fd\u0003"+
		"\u01fd\u1ce5\b\u01fd\u0001\u01fd\u0001\u01fd\u0001\u01fd\u0001\u01fd\u0003"+
		"\u01fd\u1ceb\b\u01fd\u0001\u01fd\u0001\u01fd\u0003\u01fd\u1cef\b\u01fd"+
		"\u0001\u01fd\u0001\u01fd\u0001\u01fd\u0001\u01fd\u0001\u01fd\u0001\u01fd"+
		"\u0001\u01fd\u0001\u01fd\u0001\u01fd\u0001\u01fd\u0001\u01fd\u0001\u01fd"+
		"\u0001\u01fd\u0001\u01fd\u0001\u01fd\u0001\u01fd\u0001\u01fd\u0001\u01fd"+
		"\u0001\u01fd\u0001\u01fd\u0001\u01fd\u0001\u01fd\u0001\u01fd\u0001\u01fd"+
		"\u0001\u01fd\u0001\u01fd\u0001\u01fd\u0001\u01fd\u0001\u01fd\u0001\u01fd"+
		"\u0003\u01fd\u1d0f\b\u01fd\u0001\u01fe\u0001\u01fe\u0001\u01fe\u0001\u01fe"+
		"\u0001\u01fe\u0001\u01fe\u0001\u01ff\u0001\u01ff\u0001\u01ff\u0001\u01ff"+
		"\u0001\u01ff\u0001\u01ff\u0001\u01ff\u0001\u01ff\u0001\u01ff\u0003\u01ff"+
		"\u1d20\b\u01ff\u0001\u0200\u0001\u0200\u0001\u0201\u0001\u0201\u0001\u0201"+
		"\u0001\u0201\u0001\u0201\u0001\u0202\u0001\u0202\u0001\u0202\u0003\u0202"+
		"\u1d2c\b\u0202\u0001\u0202\u0001\u0202\u0001\u0202\u0001\u0202\u0001\u0202"+
		"\u0001\u0203\u0001\u0203\u0001\u0203\u0001\u0203\u0001\u0203\u0001\u0203"+
		"\u0001\u0203\u0001\u0203\u0001\u0203\u0001\u0203\u0001\u0203\u0001\u0203"+
		"\u0001\u0203\u0001\u0203\u0001\u0203\u0001\u0203\u0001\u0203\u0001\u0203"+
		"\u0001\u0203\u0001\u0203\u0001\u0203\u0001\u0203\u0001\u0203\u0001\u0203"+
		"\u0001\u0203\u0001\u0203\u0001\u0203\u0001\u0203\u0001\u0203\u0001\u0203"+
		"\u0001\u0203\u0003\u0203\u1d52\b\u0203\u0001\u0203\u0001\u0203\u0001\u0203"+
		"\u0001\u0203\u0001\u0203\u0001\u0203\u0001\u0203\u0001\u0203\u0001\u0203"+
		"\u0001\u0203\u0001\u0203\u0001\u0203\u0001\u0203\u0001\u0203\u0001\u0203"+
		"\u0001\u0203\u0001\u0203\u0001\u0203\u0001\u0203\u0001\u0203\u0001\u0203"+
		"\u0001\u0203\u0001\u0203\u0001\u0203\u0001\u0203\u0001\u0203\u0001\u0203"+
		"\u0001\u0203\u0001\u0203\u0001\u0203\u0001\u0203\u0001\u0203\u0001\u0203"+
		"\u0001\u0203\u0001\u0203\u0001\u0203\u0001\u0203\u0001\u0203\u0001\u0203"+
		"\u0001\u0203\u0001\u0203\u0001\u0203\u0001\u0203\u0001\u0203\u0001\u0203"+
		"\u0001\u0203\u0001\u0203\u0001\u0203\u0001\u0203\u0001\u0203\u0001\u0203"+
		"\u0001\u0203\u0001\u0203\u0001\u0203\u0001\u0203\u0001\u0203\u0001\u0203"+
		"\u0001\u0203\u0001\u0203\u0001\u0203\u0001\u0203\u0001\u0203\u0001\u0203"+
		"\u0001\u0203\u0001\u0203\u0001\u0203\u0001\u0203\u0001\u0203\u0001\u0203"+
		"\u0001\u0203\u0001\u0203\u0001\u0203\u0001\u0203\u0001\u0203\u0001\u0203"+
		"\u0001\u0203\u0001\u0203\u0001\u0203\u0001\u0203\u0001\u0203\u0001\u0203"+
		"\u0001\u0203\u0001\u0203\u0003\u0203\u1da7\b\u0203\u0001\u0204\u0001\u0204"+
		"\u0001\u0204\u0001\u0204\u0001\u0204\u0001\u0204\u0001\u0204\u0001\u0204"+
		"\u0003\u0204\u1db1\b\u0204\u0001\u0205\u0001\u0205\u0001\u0205\u0001\u0205"+
		"\u0001\u0205\u0001\u0205\u0003\u0205\u1db9\b\u0205\u0001\u0206\u0001\u0206"+
		"\u0001\u0206\u0001\u0207\u0005\u0207\u1dbf\b\u0207\n\u0207\f\u0207\u1dc2"+
		"\t\u0207\u0001\u0208\u0001\u0208\u0001\u0208\u0003\u0208\u1dc7\b\u0208"+
		"\u0001\u0209\u0001\u0209\u0001\u0209\u0001\u0209\u0001\u0209\u0001\u0209"+
		"\u0001\u0209\u0001\u020a\u0003\u020a\u1dd1\b\u020a\u0001\u020a\u0001\u020a"+
		"\u0001\u020a\u0001\u020a\u0001\u020a\u0001\u020a\u0001\u020a\u0001\u020a"+
		"\u0003\u020a\u1ddb\b\u020a\u0001\u020b\u0004\u020b\u1dde\b\u020b\u000b"+
		"\u020b\f\u020b\u1ddf\u0001\u020c\u0001\u020c\u0001\u020c\u0001\u020c\u0001"+
		"\u020c\u0001\u020c\u0001\u020c\u0001\u020c\u0003\u020c\u1dea\b\u020c\u0001"+
		"\u020d\u0001\u020d\u0001\u020e\u0001\u020e\u0001\u020e\u0001\u020e\u0001"+
		"\u020f\u0001\u020f\u0001\u020f\u0001\u020f\u0001\u020f\u0001\u020f\u0001"+
		"\u020f\u0001\u020f\u0001\u020f\u0001\u020f\u0003\u020f\u1dfc\b\u020f\u0001"+
		"\u0210\u0001\u0210\u0003\u0210\u1e00\b\u0210\u0001\u0210\u0001\u0210\u0001"+
		"\u0210\u0001\u0210\u0001\u0210\u0001\u0210\u0001\u0210\u0001\u0210\u0001"+
		"\u0210\u0001\u0210\u0003\u0210\u1e0c\b\u0210\u0003\u0210\u1e0e\b\u0210"+
		"\u0001\u0211\u0001\u0211\u0001\u0211\u0001\u0211\u0001\u0211\u0001\u0211"+
		"\u0001\u0211\u0001\u0211\u0001\u0211\u0003\u0211\u1e19\b\u0211\u0001\u0212"+
		"\u0001\u0212\u0001\u0212\u0001\u0212\u0001\u0212\u0001\u0213\u0003\u0213"+
		"\u1e21\b\u0213\u0001\u0213\u0001\u0213\u0001\u0213\u0001\u0213\u0001\u0213"+
		"\u0001\u0213\u0001\u0213\u0001\u0213\u0001\u0213\u0001\u0213\u0003\u0213"+
		"\u1e2d\b\u0213\u0001\u0213\u0001\u0213\u0001\u0213\u0003\u0213\u1e32\b"+
		"\u0213\u0001\u0213\u0001\u0213\u0001\u0213\u0001\u0213\u0001\u0213\u0003"+
		"\u0213\u1e39\b\u0213\u0001\u0213\u0001\u0213\u0001\u0213\u0001\u0213\u0001"+
		"\u0213\u0001\u0213\u0003\u0213\u1e41\b\u0213\u0001\u0213\u0001\u0213\u0001"+
		"\u0213\u0001\u0213\u0001\u0213\u0001\u0213\u0001\u0213\u0001\u0213\u0001"+
		"\u0213\u0001\u0213\u0001\u0213\u0001\u0213\u0001\u0213\u0001\u0213\u0001"+
		"\u0213\u0001\u0213\u0001\u0213\u0003\u0213\u1e54\b\u0213\u0003\u0213\u1e56"+
		"\b\u0213\u0001\u0214\u0001\u0214\u0001\u0214\u0001\u0214\u0001\u0214\u0001"+
		"\u0214\u0001\u0214\u0001\u0214\u0003\u0214\u1e60\b\u0214\u0001\u0214\u0001"+
		"\u0214\u0001\u0214\u0001\u0215\u0001\u0215\u0001\u0215\u0001\u0215\u0001"+
		"\u0215\u0001\u0215\u0001\u0215\u0003\u0215\u1e6c\b\u0215\u0001\u0215\u0001"+
		"\u0215\u0001\u0215\u0001\u0216\u0005\u0216\u1e72\b\u0216\n\u0216\f\u0216"+
		"\u1e75\t\u0216\u0001\u0217\u0001\u0217\u0001\u0217\u0003\u0217\u1e7a\b"+
		"\u0217\u0001\u0218\u0001\u0218\u0001\u0218\u0001\u0218\u0001\u0219\u0001"+
		"\u0219\u0003\u0219\u1e82\b\u0219\u0001\u0219\u0001\u0219\u0001\u0219\u0003"+
		"\u0219\u1e87\b\u0219\u0001\u0219\u0001\u0219\u0001\u0219\u0001\u0219\u0001"+
		"\u0219\u0001\u0219\u0001\u0219\u0001\u0219\u0003\u0219\u1e91\b\u0219\u0001"+
		"\u021a\u0001\u021a\u0003\u021a\u1e95\b\u021a\u0001\u021a\u0001\u021a\u0001"+
		"\u021a\u0003\u021a\u1e9a\b\u021a\u0001\u021a\u0001\u021a\u0003\u021a\u1e9e"+
		"\b\u021a\u0001\u021b\u0001\u021b\u0001\u021b\u0001\u021b\u0003\u021b\u1ea4"+
		"\b\u021b\u0001\u021b\u0001\u021b\u0001\u021b\u0001\u021b\u0001\u021b\u0001"+
		"\u021b\u0003\u021b\u1eac\b\u021b\u0001\u021c\u0001\u021c\u0001\u021c\u0003"+
		"\u021c\u1eb1\b\u021c\u0001\u021c\u0001\u021c\u0001\u021c\u0001\u021c\u0001"+
		"\u021c\u0001\u021d\u0001\u021d\u0003\u021d\u1eba\b\u021d\u0001\u021d\u0001"+
		"\u021d\u0001\u021d\u0001\u021d\u0001\u021d\u0003\u021d\u1ec1\b\u021d\u0001"+
		"\u021d\u0001\u021d\u0001\u021d\u0001\u021d\u0001\u021d\u0001\u021d\u0003"+
		"\u021d\u1ec9\b\u021d\u0001\u021d\u0001\u021d\u0001\u021d\u0003\u021d\u1ece"+
		"\b\u021d\u0001\u021e\u0001\u021e\u0001\u021e\u0001\u021e\u0001\u021e\u0001"+
		"\u021f\u0001\u021f\u0003\u021f\u1ed7\b\u021f\u0001\u021f\u0001\u021f\u0001"+
		"\u021f\u0001\u021f\u0003\u021f\u1edd\b\u021f\u0001\u021f\u0001\u021f\u0001"+
		"\u021f\u0001\u021f\u0001\u021f\u0001\u021f\u0001\u021f\u0001\u021f\u0001"+
		"\u021f\u0001\u021f\u0003\u021f\u1ee9\b\u021f\u0001\u0220\u0004\u0220\u1eec"+
		"\b\u0220\u000b\u0220\f\u0220\u1eed\u0001\u0221\u0001\u0221\u0001\u0221"+
		"\u0001\u0221\u0001\u0221\u0001\u0222\u0001\u0222\u0003\u0222\u1ef7\b\u0222"+
		"\u0001\u0222\u0001\u0222\u0001\u0222\u0001\u0222\u0003\u0222\u1efd\b\u0222"+
		"\u0001\u0222\u0001\u0222\u0001\u0222\u0001\u0222\u0001\u0222\u0001\u0222"+
		"\u0001\u0222\u0001\u0222\u0001\u0222\u0001\u0222\u0003\u0222\u1f09\b\u0222"+
		"\u0001\u0223\u0001\u0223\u0001\u0223\u0001\u0223\u0001\u0223\u0001\u0223"+
		"\u0001\u0223\u0001\u0223\u0001\u0223\u0001\u0223\u0001\u0223\u0001\u0223"+
		"\u0001\u0223\u0001\u0223\u0003\u0223\u1f19\b\u0223\u0001\u0224\u0001\u0224"+
		"\u0001\u0224\u0001\u0224\u0001\u0224\u0001\u0225\u0001\u0225\u0001\u0225"+
		"\u0001\u0225\u0001\u0225\u0001\u0225\u0001\u0225\u0001\u0225\u0001\u0225"+
		"\u0001\u0226\u0001\u0226\u0001\u0226\u0003\u0226\u1f2c\b\u0226\u0001\u0226"+
		"\u0001\u0226\u0001\u0226\u0001\u0227\u0001\u0227\u0001\u0227\u0001\u0227"+
		"\u0001\u0227\u0001\u0227\u0001\u0227\u0001\u0227\u0003\u0227\u1f39\b\u0227"+
		"\u0001\u0228\u0001\u0228\u0001\u0228\u0001\u0228\u0001\u0228\u0001\u0228"+
		"\u0001\u0228\u0001\u0228\u0001\u0228\u0001\u0228\u0001\u0228\u0001\u0228"+
		"\u0001\u0228\u0001\u0228\u0003\u0228\u1f49\b\u0228\u0001\u0229\u0001\u0229"+
		"\u0001\u0229\u0001\u022a\u0001\u022a\u0001\u022a\u0003\u022a\u1f51\b\u022a"+
		"\u0001\u022a\u0001\u022a\u0001\u022a\u0001\u022a\u0001\u022a\u0001\u022a"+
		"\u0001\u022a\u0001\u022a\u0001\u022a\u0001\u022a\u0001\u022a\u0001\u022a"+
		"\u0001\u022a\u0001\u022a\u0001\u022a\u0001\u022a\u0001\u022a\u0001\u022a"+
		"\u0001\u022a\u0001\u022a\u0003\u022a\u1f67\b\u022a\u0001\u022b\u0001\u022b"+
		"\u0001\u022b\u0001\u022b\u0001\u022b\u0001\u022b\u0001\u022b\u0001\u022b"+
		"\u0001\u022b\u0001\u022b\u0001\u022b\u0001\u022b\u0001\u022b\u0001\u022b"+
		"\u0001\u022b\u0001\u022b\u0001\u022b\u0003\u022b\u1f7a\b\u022b\u0001\u022b"+
		"\u0001\u022b\u0001\u022b\u0001\u022b\u0001\u022b\u0003\u022b\u1f81\b\u022b"+
		"\u0001\u022b\u0003\u022b\u1f84\b\u022b\u0001\u022c\u0001\u022c\u0001\u022c"+
		"\u0005\u022c\u1f89\b\u022c\n\u022c\f\u022c\u1f8c\t\u022c\u0001\u022d\u0001"+
		"\u022d\u0001\u022e\u0001\u022e\u0001\u022e\u0001\u022e\u0001\u022e\u0001"+
		"\u022e\u0003\u022e\u1f96\b\u022e\u0001\u022f\u0001\u022f\u0001\u022f\u0001"+
		"\u022f\u0001\u022f\u0001\u022f\u0001\u022f\u0001\u022f\u0001\u022f\u0001"+
		"\u022f\u0001\u022f\u0001\u022f\u0003\u022f\u1fa4\b\u022f\u0001\u0230\u0001"+
		"\u0230\u0001\u0230\u0001\u0230\u0001\u0230\u0001\u0230\u0001\u0230\u0001"+
		"\u0231\u0001\u0231\u0001\u0231\u0001\u0231\u0001\u0231\u0001\u0231\u0001"+
		"\u0231\u0001\u0231\u0001\u0231\u0001\u0231\u0001\u0231\u0001\u0231\u0001"+
		"\u0231\u0001\u0231\u0003\u0231\u1fbb\b\u0231\u0001\u0231\u0001\u0231\u0001"+
		"\u0231\u0001\u0231\u0001\u0231\u0001\u0231\u0003\u0231\u1fc3\b\u0231\u0001"+
		"\u0231\u0001\u0231\u0001\u0231\u0001\u0231\u0001\u0231\u0001\u0231\u0001"+
		"\u0231\u0001\u0231\u0003\u0231\u1fcd\b\u0231\u0001\u0231\u0001\u0231\u0003"+
		"\u0231\u1fd1\b\u0231\u0001\u0232\u0001\u0232\u0001\u0232\u0005\u0232\u1fd6"+
		"\b\u0232\n\u0232\f\u0232\u1fd9\t\u0232\u0001\u0233\u0001\u0233\u0001\u0233"+
		"\u0001\u0233\u0001\u0233\u0001\u0233\u0001\u0233\u0001\u0233\u0001\u0233"+
		"\u0001\u0233\u0001\u0233\u0001\u0233\u0001\u0233\u0001\u0233\u0001\u0233"+
		"\u0003\u0233\u1fea\b\u0233\u0001\u0234\u0001\u0234\u0001\u0234\u0001\u0234"+
		"\u0001\u0234\u0001\u0234\u0001\u0234\u0001\u0234\u0001\u0234\u0001\u0234"+
		"\u0001\u0234\u0001\u0234\u0003\u0234\u1ff8\b\u0234\u0001\u0235\u0001\u0235"+
		"\u0001\u0235\u0001\u0235\u0001\u0235\u0001\u0235\u0001\u0235\u0001\u0235"+
		"\u0001\u0235\u0001\u0235\u0001\u0235\u0001\u0235\u0003\u0235\u2006\b\u0235"+
		"\u0001\u0236\u0001\u0236\u0001\u0236\u0001\u0236\u0001\u0236\u0001\u0236"+
		"\u0001\u0236\u0001\u0236\u0001\u0236\u0003\u0236\u2011\b\u0236\u0001\u0236"+
		"\u0001\u0236\u0001\u0236\u0001\u0236\u0003\u0236\u2017\b\u0236\u0001\u0237"+
		"\u0001\u0237\u0001\u0237\u0001\u0237\u0001\u0237\u0001\u0238\u0001\u0238"+
		"\u0001\u0238\u0001\u0238\u0003\u0238\u2022\b\u0238\u0001\u0238\u0001\u0238"+
		"\u0001\u0238\u0003\u0238\u2027\b\u0238\u0001\u0238\u0001\u0238\u0001\u0238"+
		"\u0001\u0238\u0001\u0238\u0001\u0238\u0001\u0238\u0001\u0238\u0001\u0238"+
		"\u0001\u0238\u0001\u0238\u0001\u0238\u0001\u0238\u0001\u0238\u0003\u0238"+
		"\u2037\b\u0238\u0001\u0238\u0001\u0238\u0001\u0238\u0001\u0238\u0001\u0238"+
		"\u0001\u0238\u0003\u0238\u203f\b\u0238\u0001\u0239\u0001\u0239\u0001\u0239"+
		"\u0003\u0239\u2044\b\u0239\u0001\u023a\u0001\u023a\u0001\u023a\u0001\u023a"+
		"\u0003\u023a\u204a\b\u023a\u0001\u023a\u0001\u023a\u0001\u023a\u0003\u023a"+
		"\u204f\b\u023a\u0001\u023a\u0001\u023a\u0003\u023a\u2053\b\u023a\u0001"+
		"\u023a\u0001\u023a\u0001\u023a\u0001\u023a\u0003\u023a\u2059\b\u023a\u0001"+
		"\u023a\u0001\u023a\u0001\u023a\u0003\u023a\u205e\b\u023a\u0001\u023a\u0003"+
		"\u023a\u2061\b\u023a\u0003\u023a\u2063\b\u023a\u0001\u023b\u0001\u023b"+
		"\u0001\u023b\u0001\u023b\u0001\u023b\u0001\u023b\u0001\u023b\u0001\u023b"+
		"\u0001\u023b\u0001\u023c\u0001\u023c\u0003\u023c\u2070\b\u023c\u0001\u023d"+
		"\u0001\u023d\u0001\u023d\u0003\u023d\u2075\b\u023d\u0001\u023d\u0001\u023d"+
		"\u0001\u023d\u0001\u023e\u0001\u023e\u0001\u023e\u0001\u023e\u0001\u023e"+
		"\u0001\u023e\u0003\u023e\u2080\b\u023e\u0001\u023e\u0001\u023e\u0001\u023e"+
		"\u0001\u023e\u0001\u023e\u0001\u023e\u0001\u023e\u0003\u023e\u2089\b\u023e"+
		"\u0001\u023f\u0001\u023f\u0001\u023f\u0003\u023f\u208e\b\u023f\u0001\u0240"+
		"\u0001\u0240\u0003\u0240\u2092\b\u0240\u0001\u0240\u0001\u0240\u0003\u0240"+
		"\u2096\b\u0240\u0001\u0240\u0001\u0240\u0001\u0240\u0001\u0240\u0003\u0240"+
		"\u209c\b\u0240\u0001\u0241\u0001\u0241\u0001\u0241\u0001\u0242\u0001\u0242"+
		"\u0001\u0242\u0001\u0242\u0001\u0243\u0001\u0243\u0001\u0243\u0001\u0243"+
		"\u0001\u0243\u0001\u0243\u0001\u0243\u0001\u0243\u0001\u0243\u0001\u0243"+
		"\u0001\u0243\u0001\u0243\u0001\u0243\u0001\u0243\u0001\u0243\u0001\u0243"+
		"\u0001\u0243\u0001\u0243\u0001\u0243\u0001\u0243\u0001\u0243\u0001\u0243"+
		"\u0001\u0243\u0001\u0243\u0001\u0243\u0001\u0243\u0001\u0243\u0001\u0243"+
		"\u0001\u0243\u0001\u0243\u0001\u0243\u0001\u0243\u0001\u0243\u0001\u0243"+
		"\u0001\u0243\u0001\u0243\u0001\u0243\u0001\u0243\u0001\u0243\u0001\u0243"+
		"\u0001\u0243\u0001\u0243\u0001\u0243\u0001\u0243\u0001\u0243\u0001\u0243"+
		"\u0001\u0243\u0001\u0243\u0001\u0243\u0001\u0243\u0001\u0243\u0001\u0243"+
		"\u0001\u0243\u0001\u0243\u0001\u0243\u0001\u0243\u0001\u0243\u0001\u0243"+
		"\u0001\u0243\u0001\u0243\u0001\u0243\u0001\u0243\u0001\u0243\u0001\u0243"+
		"\u0001\u0243\u0001\u0243\u0001\u0243\u0001\u0243\u0001\u0243\u0001\u0243"+
		"\u0001\u0243\u0001\u0243\u0001\u0243\u0001\u0243\u0001\u0243\u0001\u0243"+
		"\u0001\u0243\u0001\u0243\u0001\u0243\u0001\u0243\u0001\u0243\u0001\u0243"+
		"\u0001\u0243\u0001\u0243\u0001\u0243\u0001\u0243\u0001\u0243\u0001\u0243"+
		"\u0001\u0243\u0001\u0243\u0001\u0243\u0001\u0243\u0001\u0243\u0001\u0243"+
		"\u0001\u0243\u0001\u0243\u0001\u0243\u0001\u0243\u0001\u0243\u0001\u0243"+
		"\u0001\u0243\u0001\u0243\u0001\u0243\u0001\u0243\u0001\u0243\u0001\u0243"+
		"\u0001\u0243\u0001\u0243\u0001\u0243\u0001\u0243\u0001\u0243\u0003\u0243"+
		"\u2114\b\u0243\u0001\u0244\u0001\u0244\u0001\u0245\u0001\u0245\u0001\u0245"+
		"\u0001\u0245\u0001\u0245\u0003\u0245\u211d\b\u0245\u0001\u0246\u0001\u0246"+
		"\u0001\u0246\u0001\u0246\u0001\u0246\u0001\u0246\u0001\u0246\u0001\u0246"+
		"\u0001\u0246\u0003\u0246\u2128\b\u0246\u0001\u0246\u0001\u0246\u0001\u0246"+
		"\u0001\u0246\u0003\u0246\u212e\b\u0246\u0001\u0247\u0001\u0247\u0001\u0247"+
		"\u0001\u0247\u0001\u0247\u0001\u0247\u0001\u0247\u0001\u0247\u0001\u0247"+
		"\u0001\u0247\u0001\u0247\u0001\u0247\u0001\u0247\u0001\u0247\u0001\u0247"+
		"\u0001\u0247\u0001\u0247\u0001\u0247\u0001\u0247\u0001\u0247\u0001\u0247"+
		"\u0001\u0247\u0001\u0247\u0003\u0247\u2147\b\u0247\u0001\u0248\u0001\u0248"+
		"\u0001\u0249\u0001\u0249\u0001\u0249\u0001\u0249\u0001\u0249\u0001\u0249"+
		"\u0001\u0249\u0001\u0249\u0001\u0249\u0001\u024a\u0001\u024a\u0001\u024a"+
		"\u0001\u024a\u0001\u024a\u0001\u024a\u0001\u024a\u0003\u024a\u215b\b\u024a"+
		"\u0001\u024b\u0001\u024b\u0001\u024b\u0001\u024b\u0001\u024c\u0001\u024c"+
		"\u0001\u024c\u0005\u024c\u2164\b\u024c\n\u024c\f\u024c\u2167\t\u024c\u0001"+
		"\u024d\u0001\u024d\u0001\u024d\u0001\u024d\u0001\u024e\u0001\u024e\u0001"+
		"\u024e\u0001\u024e\u0001\u024e\u0001\u024e\u0001\u024e\u0001\u024e\u0001"+
		"\u024e\u0001\u024e\u0001\u024e\u0001\u024e\u0003\u024e\u2179\b\u024e\u0001"+
		"\u024e\u0001\u024e\u0001\u024e\u0001\u024e\u0001\u024e\u0001\u024e\u0003"+
		"\u024e\u2181\b\u024e\u0001\u024e\u0003\u024e\u2184\b\u024e\u0001\u024f"+
		"\u0001\u024f\u0001\u024f\u0001\u0250\u0001\u0250\u0001\u0250\u0003\u0250"+
		"\u218c\b\u0250\u0001\u0250\u0001\u0250\u0001\u0250\u0001\u0250\u0001\u0250"+
		"\u0001\u0250\u0001\u0250\u0003\u0250\u2195\b\u0250\u0001\u0251\u0001\u0251"+
		"\u0003\u0251\u2199\b\u0251\u0001\u0251\u0001\u0251\u0001\u0251\u0001\u0251"+
		"\u0001\u0251\u0001\u0251\u0001\u0251\u0001\u0251\u0001\u0251\u0001\u0252"+
		"\u0001\u0252\u0001\u0252\u0001\u0252\u0003\u0252\u21a8\b\u0252\u0001\u0252"+
		"\u0001\u0252\u0001\u0252\u0001\u0253\u0001\u0253\u0001\u0253\u0001\u0253"+
		"\u0001\u0253\u0001\u0253\u0001\u0253\u0001\u0253\u0003\u0253\u21b5\b\u0253"+
		"\u0001\u0253\u0001\u0253\u0001\u0253\u0001\u0253\u0001\u0253\u0001\u0253"+
		"\u0001\u0254\u0001\u0254\u0001\u0254\u0005\u0254\u21c0\b\u0254\n\u0254"+
		"\f\u0254\u21c3\t\u0254\u0001\u0255\u0001\u0255\u0001\u0255\u0001\u0255"+
		"\u0001\u0255\u0001\u0255\u0001\u0256\u0001\u0256\u0001\u0256\u0005\u0256"+
		"\u21ce\b\u0256\n\u0256\f\u0256\u21d1\t\u0256\u0001\u0257\u0001\u0257\u0001"+
		"\u0257\u0003\u0257\u21d6\b\u0257\u0001\u0257\u0001\u0257\u0003\u0257\u21da"+
		"\b\u0257\u0001\u0257\u0001\u0257\u0001\u0258\u0005\u0258\u21df\b\u0258"+
		"\n\u0258\f\u0258\u21e2\t\u0258\u0001\u0259\u0001\u0259\u0001\u0259\u0001"+
		"\u0259\u0001\u0259\u0001\u0259\u0001\u0259\u0003\u0259\u21eb\b\u0259\u0001"+
		"\u025a\u0001\u025a\u0001\u025a\u0001\u025a\u0001\u025a\u0001\u025a\u0003"+
		"\u025a\u21f3\b\u025a\u0001\u025a\u0003\u025a\u21f6\b\u025a\u0001\u025b"+
		"\u0001\u025b\u0001\u025b\u0001\u025b\u0001\u025b\u0001\u025c\u0003\u025c"+
		"\u21fe\b\u025c\u0001\u025c\u0001\u025c\u0001\u025c\u0003\u025c\u2203\b"+
		"\u025c\u0001\u025c\u0001\u025c\u0001\u025c\u0001\u025c\u0001\u025c\u0001"+
		"\u025c\u0003\u025c\u220b\b\u025c\u0001\u025c\u0001\u025c\u0001\u025c\u0003"+
		"\u025c\u2210\b\u025c\u0001\u025c\u0003\u025c\u2213\b\u025c\u0001\u025c"+
		"\u0001\u025c\u0001\u025c\u0001\u025c\u0001\u025c\u0001\u025c\u0001\u025c"+
		"\u0001\u025c\u0003\u025c\u221d\b\u025c\u0001\u025c\u0001\u025c\u0001\u025c"+
		"\u0001\u025c\u0003\u025c\u2223\b\u025c\u0003\u025c\u2225\b\u025c\u0001"+
		"\u025d\u0001\u025d\u0001\u025d\u0005\u025d\u222a\b\u025d\n\u025d\f\u025d"+
		"\u222d\t\u025d\u0001\u025e\u0001\u025e\u0001\u025e\u0003\u025e\u2232\b"+
		"\u025e\u0001\u025f\u0001\u025f\u0001\u025f\u0001\u025f\u0001\u0260\u0001"+
		"\u0260\u0001\u0260\u0001\u0260\u0005\u0260\u223c\b\u0260\n\u0260\f\u0260"+
		"\u223f\t\u0260\u0001\u0261\u0001\u0261\u0001\u0262\u0001\u0262\u0001\u0262"+
		"\u0003\u0262\u2246\b\u0262\u0001\u0262\u0001\u0262\u0001\u0262\u0001\u0262"+
		"\u0001\u0262\u0001\u0262\u0001\u0262\u0001\u0262\u0001\u0262\u0001\u0262"+
		"\u0001\u0262\u0001\u0262\u0001\u0262\u0001\u0262\u0001\u0262\u0003\u0262"+
		"\u2257\b\u0262\u0001\u0263\u0001\u0263\u0001\u0263\u0005\u0263\u225c\b"+
		"\u0263\n\u0263\f\u0263\u225f\t\u0263\u0001\u0264\u0001\u0264\u0001\u0264"+
		"\u0001\u0265\u0004\u0265\u2265\b\u0265\u000b\u0265\f\u0265\u2266\u0001"+
		"\u0266\u0001\u0266\u0001\u0266\u0001\u0266\u0001\u0266\u0001\u0266\u0001"+
		"\u0266\u0001\u0266\u0003\u0266\u2271\b\u0266\u0001\u0267\u0001\u0267\u0001"+
		"\u0267\u0001\u0267\u0001\u0267\u0001\u0267\u0001\u0267\u0001\u0267\u0001"+
		"\u0268\u0001\u0268\u0001\u0268\u0001\u0268\u0001\u0268\u0003\u0268\u2280"+
		"\b\u0268\u0003\u0268\u2282\b\u0268\u0001\u0269\u0001\u0269\u0001\u026a"+
		"\u0001\u026a\u0003\u026a\u2288\b\u026a\u0001\u026a\u0001\u026a\u0001\u026b"+
		"\u0001\u026b\u0001\u026b\u0005\u026b\u228f\b\u026b\n\u026b\f\u026b\u2292"+
		"\t\u026b\u0001\u026c\u0001\u026c\u0001\u026c\u0001\u026c\u0001\u026c\u0001"+
		"\u026c\u0001\u026c\u0001\u026c\u0001\u026c\u0003\u026c\u229d\b\u026c\u0001"+
		"\u026d\u0001\u026d\u0001\u026d\u0003\u026d\u22a2\b\u026d\u0001\u026d\u0003"+
		"\u026d\u22a5\b\u026d\u0001\u026d\u0003\u026d\u22a8\b\u026d\u0001\u026d"+
		"\u0001\u026d\u0001\u026d\u0001\u026d\u0001\u026d\u0001\u026d\u0003\u026d"+
		"\u22b0\b\u026d\u0001\u026d\u0003\u026d\u22b3\b\u026d\u0001\u026d\u0001"+
		"\u026d\u0001\u026d\u0001\u026d\u0003\u026d\u22b9\b\u026d\u0001\u026e\u0001"+
		"\u026e\u0001\u026e\u0001\u026e\u0001\u026e\u0001\u026e\u0001\u026e\u0001"+
		"\u026e\u0001\u026e\u0001\u026e\u0001\u026e\u0001\u026e\u0001\u026e\u0001"+
		"\u026e\u0001\u026e\u0001\u026e\u0001\u026e\u0003\u026e\u22cc\b\u026e\u0001"+
		"\u026f\u0001\u026f\u0001\u026f\u0001\u026f\u0003\u026f\u22d2\b\u026f\u0001"+
		"\u0270\u0001\u0270\u0001\u0270\u0001\u0270\u0001\u0270\u0001\u0270\u0001"+
		"\u0270\u0003\u0270\u22db\b\u0270\u0001\u0270\u0001\u0270\u0003\u0270\u22df"+
		"\b\u0270\u0001\u0270\u0001\u0270\u0003\u0270\u22e3\b\u0270\u0001\u0270"+
		"\u0001\u0270\u0001\u0270\u0001\u0270\u0001\u0270\u0003\u0270\u22ea\b\u0270"+
		"\u0001\u0270\u0001\u0270\u0001\u0270\u0001\u0270\u0001\u0270\u0001\u0270"+
		"\u0003\u0270\u22f2\b\u0270\u0001\u0271\u0001\u0271\u0001\u0271\u0003\u0271"+
		"\u22f7\b\u0271\u0001\u0271\u0001\u0271\u0001\u0271\u0001\u0271\u0001\u0271"+
		"\u0001\u0272\u0001\u0272\u0001\u0272\u0001\u0272\u0003\u0272\u2302\b\u0272"+
		"\u0001\u0272\u0001\u0272\u0003\u0272\u2306\b\u0272\u0001\u0273\u0001\u0273"+
		"\u0001\u0273\u0001\u0273\u0001\u0273\u0001\u0273\u0003\u0273\u230e\b\u0273"+
		"\u0001\u0274\u0001\u0274\u0001\u0274\u0003\u0274\u2313\b\u0274\u0001\u0274"+
		"\u0001\u0274\u0001\u0274\u0001\u0274\u0001\u0274\u0001\u0274\u0001\u0274"+
		"\u0001\u0274\u0001\u0274\u0003\u0274\u231e\b\u0274\u0001\u0274\u0001\u0274"+
		"\u0003\u0274\u2322\b\u0274\u0001\u0274\u0001\u0274\u0001\u0275\u0001\u0275"+
		"\u0001\u0275\u0001\u0275\u0001\u0275\u0001\u0275\u0003\u0275\u232c\b\u0275"+
		"\u0001\u0276\u0001\u0276\u0001\u0276\u0001\u0276\u0001\u0276\u0003\u0276"+
		"\u2333\b\u0276\u0001\u0277\u0003\u0277\u2336\b\u0277\u0001\u0277\u0001"+
		"\u0277\u0003\u0277\u233a\b\u0277\u0005\u0277\u233c\b\u0277\n\u0277\f\u0277"+
		"\u233f\t\u0277\u0001\u0278\u0001\u0278\u0001\u0278\u0001\u0278\u0003\u0278"+
		"\u2345\b\u0278\u0001\u0279\u0001\u0279\u0001\u0279\u0001\u0279\u0001\u0279"+
		"\u0001\u0279\u0001\u0279\u0001\u0279\u0003\u0279\u234f\b\u0279\u0001\u0279"+
		"\u0003\u0279\u2352\b\u0279\u0001\u0279\u0003\u0279\u2355\b\u0279\u0001"+
		"\u0279\u0001\u0279\u0001\u0279\u0001\u0279\u0001\u0279\u0003\u0279\u235c"+
		"\b\u0279\u0001\u0279\u0001\u0279\u0001\u0279\u0001\u0279\u0001\u0279\u0001"+
		"\u0279\u0001\u0279\u0003\u0279\u2365\b\u0279\u0001\u0279\u0001\u0279\u0001"+
		"\u0279\u0001\u0279\u0001\u0279\u0001\u0279\u0001\u0279\u0001\u0279\u0001"+
		"\u0279\u0001\u0279\u0001\u0279\u0001\u0279\u0003\u0279\u2373\b\u0279\u0001"+
		"\u027a\u0001\u027a\u0001\u027a\u0005\u027a\u2378\b\u027a\n\u027a\f\u027a"+
		"\u237b\t\u027a\u0001\u027b\u0001\u027b\u0001\u027b\u0001\u027b\u0001\u027b"+
		"\u0001\u027b\u0001\u027b\u0003\u027b\u2384\b\u027b\u0001\u027c\u0001\u027c"+
		"\u0001\u027c\u0001\u027c\u0003\u027c\u238a\b\u027c\u0001\u027d\u0001\u027d"+
		"\u0001\u027d\u0005\u027d\u238f\b\u027d\n\u027d\f\u027d\u2392\t\u027d\u0001"+
		"\u027e\u0001\u027e\u0001\u027e\u0003\u027e\u2397\b\u027e\u0001\u027f\u0001"+
		"\u027f\u0001\u027f\u0001\u027f\u0001\u027f\u0001\u0280\u0001\u0280\u0003"+
		"\u0280\u23a0\b\u0280\u0001\u0280\u0001\u0280\u0001\u0281\u0001\u0281\u0001"+
		"\u0281\u0001\u0282\u0004\u0282\u23a8\b\u0282\u000b\u0282\f\u0282\u23a9"+
		"\u0001\u0283\u0001\u0283\u0001\u0283\u0003\u0283\u23af\b\u0283\u0001\u0283"+
		"\u0001\u0283\u0001\u0284\u0001\u0284\u0001\u0285\u0001\u0285\u0001\u0286"+
		"\u0001\u0286\u0001\u0287\u0001\u0287\u0003\u0287\u23bb\b\u0287\u0001\u0287"+
		"\u0001\u0287\u0003\u0287\u23bf\b\u0287\u0001\u0287\u0001\u0287\u0003\u0287"+
		"\u23c3\b\u0287\u0001\u0288\u0003\u0288\u23c6\b\u0288\u0001\u0288\u0001"+
		"\u0288\u0003\u0288\u23ca\b\u0288\u0001\u0289\u0001\u0289\u0001\u0289\u0003"+
		"\u0289\u23cf\b\u0289\u0001\u0289\u0001\u0289\u0001\u0289\u0003\u0289\u23d4"+
		"\b\u0289\u0001\u0289\u0003\u0289\u23d7\b\u0289\u0001\u0289\u0001\u0289"+
		"\u0001\u0289\u0001\u0289\u0001\u0289\u0001\u0289\u0001\u028a\u0001\u028a"+
		"\u0001\u028a\u0003\u028a\u23e2\b\u028a\u0001\u028a\u0001\u028a\u0001\u028a"+
		"\u0001\u028a\u0001\u028a\u0001\u028a\u0001\u028a\u0001\u028b\u0001\u028b"+
		"\u0001\u028b\u0001\u028b\u0001\u028b\u0001\u028b\u0001\u028b\u0001\u028b"+
		"\u0001\u028b\u0003\u028b\u23f4\b\u028b\u0001\u028c\u0001\u028c\u0001\u028c"+
		"\u0001\u028c\u0001\u028c\u0003\u028c\u23fb\b\u028c\u0001\u028c\u0003\u028c"+
		"\u23fe\b\u028c\u0001\u028c\u0001\u028c\u0001\u028c\u0001\u028c\u0003\u028c"+
		"\u2404\b\u028c\u0001\u028c\u0001\u028c\u0003\u028c\u2408\b\u028c\u0001"+
		"\u028c\u0003\u028c\u240b\b\u028c\u0001\u028d\u0001\u028d\u0001\u028d\u0001"+
		"\u028d\u0001\u028d\u0001\u028d\u0001\u028d\u0001\u028e\u0001\u028e\u0001"+
		"\u028e\u0003\u028e\u2417\b\u028e\u0001\u028e\u0001\u028e\u0001\u028e\u0001"+
		"\u028e\u0001\u028e\u0001\u028e\u0001\u028e\u0001\u028e\u0001\u028e\u0001"+
		"\u028f\u0001\u028f\u0001\u028f\u0001\u028f\u0001\u028f\u0001\u0290\u0003"+
		"\u0290\u2428\b\u0290\u0001\u0290\u0001\u0290\u0001\u0290\u0003\u0290\u242d"+
		"\b\u0290\u0001\u0290\u0001\u0290\u0001\u0290\u0001\u0290\u0001\u0290\u0003"+
		"\u0290\u2434\b\u0290\u0001\u0290\u0001\u0290\u0001\u0290\u0001\u0290\u0003"+
		"\u0290\u243a\b\u0290\u0001\u0291\u0001\u0291\u0001\u0291\u0005\u0291\u243f"+
		"\b\u0291\n\u0291\f\u0291\u2442\t\u0291\u0001\u0292\u0001\u0292\u0001\u0292"+
		"\u0001\u0292\u0003\u0292\u2448\b\u0292\u0001\u0292\u0001\u0292\u0001\u0292"+
		"\u0001\u0292\u0001\u0292\u0001\u0292\u0001\u0293\u0001\u0293\u0001\u0293"+
		"\u0001\u0294\u0001\u0294\u0001\u0294\u0001\u0294\u0003\u0294\u2457\b\u0294"+
		"\u0001\u0294\u0001\u0294\u0003\u0294\u245b\b\u0294\u0001\u0295\u0001\u0295"+
		"\u0001\u0295\u0003\u0295\u2460\b\u0295\u0001\u0295\u0001\u0295\u0003\u0295"+
		"\u2464\b\u0295\u0001\u0296\u0001\u0296\u0001\u0296\u0005\u0296\u2469\b"+
		"\u0296\n\u0296\f\u0296\u246c\t\u0296\u0001\u0297\u0001\u0297\u0001\u0297"+
		"\u0003\u0297\u2471\b\u0297\u0001\u0297\u0001\u0297\u0001\u0297\u0001\u0297"+
		"\u0001\u0297\u0001\u0297\u0003\u0297\u2479\b\u0297\u0001\u0298\u0001\u0298"+
		"\u0001\u0298\u0003\u0298\u247e\b\u0298\u0001\u0298\u0001\u0298\u0003\u0298"+
		"\u2482\b\u0298\u0001\u0299\u0001\u0299\u0001\u0299\u0003\u0299\u2487\b"+
		"\u0299\u0001\u0299\u0001\u0299\u0003\u0299\u248b\b\u0299\u0001\u029a\u0001"+
		"\u029a\u0001\u029a\u0003\u029a\u2490\b\u029a\u0001\u029a\u0001\u029a\u0003"+
		"\u029a\u2494\b\u029a\u0001\u029b\u0001\u029b\u0001\u029b\u0001\u029b\u0003"+
		"\u029b\u249a\b\u029b\u0001\u029b\u0001\u029b\u0003\u029b\u249e\b\u029b"+
		"\u0001\u029c\u0001\u029c\u0001\u029c\u0003\u029c\u24a3\b\u029c\u0001\u029c"+
		"\u0001\u029c\u0003\u029c\u24a7\b\u029c\u0001\u029d\u0001\u029d\u0001\u029d"+
		"\u0001\u029d\u0001\u029d\u0003\u029d\u24ae\b\u029d\u0001\u029d\u0001\u029d"+
		"\u0003\u029d\u24b2\b\u029d\u0001\u029e\u0001\u029e\u0001\u029e\u0001\u029e"+
		"\u0003\u029e\u24b8\b\u029e\u0001\u029e\u0001\u029e\u0001\u029e\u0005\u029e"+
		"\u24bd\b\u029e\n\u029e\f\u029e\u24c0\t\u029e\u0001\u029e\u0003\u029e\u24c3"+
		"\b\u029e\u0001\u029f\u0001\u029f\u0001\u029f\u0003\u029f\u24c8\b\u029f"+
		"\u0001\u029f\u0001\u029f\u0003\u029f\u24cc\b\u029f\u0001\u02a0\u0001\u02a0"+
		"\u0001\u02a0\u0005\u02a0\u24d1\b\u02a0\n\u02a0\f\u02a0\u24d4\t\u02a0\u0001"+
		"\u02a1\u0001\u02a1\u0003\u02a1\u24d8\b\u02a1\u0001\u02a1\u0001\u02a1\u0003"+
		"\u02a1\u24dc\b\u02a1\u0001\u02a1\u0001\u02a1\u0003\u02a1\u24e0\b\u02a1"+
		"\u0001\u02a2\u0001\u02a2\u0001\u02a2\u0001\u02a2\u0003\u02a2\u24e6\b\u02a2"+
		"\u0001\u02a2\u0001\u02a2\u0003\u02a2\u24ea\b\u02a2\u0001\u02a3\u0001\u02a3"+
		"\u0001\u02a3\u0003\u02a3\u24ef\b\u02a3\u0001\u02a3\u0001\u02a3\u0003\u02a3"+
		"\u24f3\b\u02a3\u0001\u02a4\u0001\u02a4\u0001\u02a4\u0005\u02a4\u24f8\b"+
		"\u02a4\n\u02a4\f\u02a4\u24fb\t\u02a4\u0001\u02a5\u0001\u02a5\u0001\u02a5"+
		"\u0001\u02a5\u0003\u02a5\u2501\b\u02a5\u0001\u02a5\u0001\u02a5\u0001\u02a5"+
		"\u0001\u02a5\u0003\u02a5\u2507\b\u02a5\u0001\u02a6\u0001\u02a6\u0001\u02a6"+
		"\u0001\u02a6\u0003\u02a6\u250d\b\u02a6\u0001\u02a6\u0001\u02a6\u0001\u02a6"+
		"\u0001\u02a6\u0003\u02a6\u2513\b\u02a6\u0001\u02a7\u0001\u02a7\u0001\u02a7"+
		"\u0001\u02a7\u0001\u02a7\u0003\u02a7\u251a\b\u02a7\u0001\u02a8\u0001\u02a8"+
		"\u0001\u02a8\u0003\u02a8\u251f\b\u02a8\u0001\u02a8\u0001\u02a8\u0001\u02a8"+
		"\u0001\u02a8\u0003\u02a8\u2525\b\u02a8\u0001\u02a9\u0001\u02a9\u0001\u02a9"+
		"\u0003\u02a9\u252a\b\u02a9\u0001\u02a9\u0001\u02a9\u0003\u02a9\u252e\b"+
		"\u02a9\u0001\u02aa\u0001\u02aa\u0001\u02aa\u0003\u02aa\u2533\b\u02aa\u0001"+
		"\u02aa\u0001\u02aa\u0003\u02aa\u2537\b\u02aa\u0001\u02ab\u0001\u02ab\u0001"+
		"\u02ab\u0003\u02ab\u253c\b\u02ab\u0001\u02ab\u0001\u02ab\u0003\u02ab\u2540"+
		"\b\u02ab\u0001\u02ac\u0001\u02ac\u0001\u02ac\u0003\u02ac\u2545\b\u02ac"+
		"\u0001\u02ac\u0001\u02ac\u0001\u02ac\u0001\u02ac\u0003\u02ac\u254b\b\u02ac"+
		"\u0001\u02ad\u0001\u02ad\u0001\u02ad\u0003\u02ad\u2550\b\u02ad\u0001\u02ad"+
		"\u0001\u02ad\u0003\u02ad\u2554\b\u02ad\u0001\u02ae\u0001\u02ae\u0001\u02ae"+
		"\u0003\u02ae\u2559\b\u02ae\u0001\u02ae\u0001\u02ae\u0003\u02ae\u255d\b"+
		"\u02ae\u0001\u02af\u0001\u02af\u0001\u02af\u0003\u02af\u2562\b\u02af\u0001"+
		"\u02af\u0001\u02af\u0003\u02af\u2566\b\u02af\u0001\u02b0\u0001\u02b0\u0001"+
		"\u02b0\u0003\u02b0\u256b\b\u02b0\u0001\u02b0\u0001\u02b0\u0001\u02b1\u0001"+
		"\u02b1\u0001\u02b1\u0003\u02b1\u2572\b\u02b1\u0001\u02b1\u0001\u02b1\u0003"+
		"\u02b1\u2576\b\u02b1\u0001\u02b2\u0001\u02b2\u0001\u02b2\u0003\u02b2\u257b"+
		"\b\u02b2\u0001\u02b2\u0001\u02b2\u0001\u02b3\u0001\u02b3\u0001\u02b3\u0001"+
		"\u02b3\u0001\u02b3\u0003\u02b3\u2584\b\u02b3\u0001\u02b3\u0001\u02b3\u0003"+
		"\u02b3\u2588\b\u02b3\u0001\u02b4\u0001\u02b4\u0001\u02b4\u0003\u02b4\u258d"+
		"\b\u02b4\u0001\u02b4\u0001\u02b4\u0001\u02b4\u0001\u02b4\u0001\u02b4\u0003"+
		"\u02b4\u2594\b\u02b4\u0001\u02b5\u0001\u02b5\u0001\u02b5\u0003\u02b5\u2599"+
		"\b\u02b5\u0001\u02b5\u0001\u02b5\u0001\u02b5\u0001\u02b5\u0003\u02b5\u259f"+
		"\b\u02b5\u0001\u02b6\u0001\u02b6\u0001\u02b6\u0003\u02b6\u25a4\b\u02b6"+
		"\u0001\u02b6\u0001\u02b6\u0003\u02b6\u25a8\b\u02b6\u0001\u02b7\u0001\u02b7"+
		"\u0001\u02b7\u0001\u02b7\u0003\u02b7\u25ae\b\u02b7\u0001\u02b7\u0001\u02b7"+
		"\u0001\u02b7\u0001\u02b7\u0001\u02b7\u0001\u02b8\u0001\u02b8\u0001\u02b8"+
		"\u0003\u02b8\u25b8\b\u02b8\u0001\u02b8\u0001\u02b8\u0003\u02b8\u25bc\b"+
		"\u02b8\u0001\u02b9\u0001\u02b9\u0001\u02b9\u0001\u02b9\u0001\u02b9\u0003"+
		"\u02b9\u25c3\b\u02b9\u0001\u02b9\u0001\u02b9\u0001\u02b9\u0001\u02b9\u0001"+
		"\u02b9\u0001\u02b9\u0003\u02b9\u25cb\b\u02b9\u0001\u02ba\u0001\u02ba\u0001"+
		"\u02ba\u0001\u02ba\u0001\u02ba\u0001\u02bb\u0001\u02bb\u0001\u02bb\u0003"+
		"\u02bb\u25d5\b\u02bb\u0001\u02bc\u0001\u02bc\u0001\u02bc\u0001\u02bd\u0001"+
		"\u02bd\u0003\u02bd\u25dc\b\u02bd\u0001\u02bd\u0003\u02bd\u25df\b\u02bd"+
		"\u0001\u02bd\u0001\u02bd\u0001\u02be\u0001\u02be\u0001\u02be\u0003\u02be"+
		"\u25e6\b\u02be\u0001\u02be\u0001\u02be\u0001\u02be\u0001\u02bf\u0001\u02bf"+
		"\u0003\u02bf\u25ed\b\u02bf\u0001\u02bf\u0001\u02bf\u0003\u02bf\u25f1\b"+
		"\u02bf\u0001\u02c0\u0001\u02c0\u0001\u02c0\u0001\u02c0\u0001\u02c1\u0001"+
		"\u02c1\u0001\u02c1\u0001\u02c1\u0003\u02c1\u25fb\b\u02c1\u0001\u02c1\u0001"+
		"\u02c1\u0003\u02c1\u25ff\b\u02c1\u0001\u02c2\u0001\u02c2\u0001\u02c2\u0001"+
		"\u02c3\u0001\u02c3\u0003\u02c3\u2606\b\u02c3\u0001\u02c3\u0001\u02c3\u0001"+
		"\u02c3\u0001\u02c3\u0003\u02c3\u260c\b\u02c3\u0001\u02c3\u0001\u02c3\u0001"+
		"\u02c3\u0001\u02c3\u0001\u02c3\u0001\u02c3\u0001\u02c3\u0003\u02c3\u2615"+
		"\b\u02c3\u0001\u02c3\u0001\u02c3\u0001\u02c3\u0001\u02c3\u0001\u02c3\u0001"+
		"\u02c3\u0001\u02c3\u0003\u02c3\u261e\b\u02c3\u0001\u02c3\u0001\u02c3\u0003"+
		"\u02c3\u2622\b\u02c3\u0001\u02c4\u0001\u02c4\u0001\u02c4\u0005\u02c4\u2627"+
		"\b\u02c4\n\u02c4\f\u02c4\u262a\t\u02c4\u0001\u02c5\u0001\u02c5\u0001\u02c6"+
		"\u0001\u02c6\u0001\u02c7\u0001\u02c7\u0001\u02c8\u0001\u02c8\u0001\u02c8"+
		"\u0001\u02c8\u0003\u02c8\u2636\b\u02c8\u0001\u02c8\u0001\u02c8\u0001\u02c8"+
		"\u0001\u02c9\u0001\u02c9\u0001\u02c9\u0001\u02c9\u0001\u02c9\u0003\u02c9"+
		"\u2640\b\u02c9\u0001\u02c9\u0001\u02c9\u0001\u02c9\u0001\u02c9\u0001\u02c9"+
		"\u0001\u02c9\u0001\u02c9\u0001\u02c9\u0003\u02c9\u264a\b\u02c9\u0001\u02ca"+
		"\u0001\u02ca\u0001\u02ca\u0001\u02ca\u0001\u02ca\u0001\u02cb\u0001\u02cb"+
		"\u0001\u02cb\u0001\u02cb\u0001\u02cb\u0003\u02cb\u2656\b\u02cb\u0001\u02cb"+
		"\u0001\u02cb\u0001\u02cb\u0001\u02cb\u0001\u02cb\u0001\u02cb\u0001\u02cb"+
		"\u0003\u02cb\u265f\b\u02cb\u0001\u02cb\u0001\u02cb\u0001\u02cb\u0001\u02cc"+
		"\u0001\u02cc\u0001\u02cc\u0001\u02cc\u0001\u02cc\u0001\u02cc\u0001\u02cc"+
		"\u0001\u02cd\u0001\u02cd\u0001\u02cd\u0001\u02cd\u0001\u02cd\u0001\u02cd"+
		"\u0001\u02cd\u0001\u02cd\u0001\u02cd\u0001\u02cd\u0001\u02ce\u0001\u02ce"+
		"\u0001\u02cf\u0001\u02cf\u0001\u02cf\u0001\u02cf\u0001\u02cf\u0001\u02cf"+
		"\u0001\u02cf\u0001\u02cf\u0001\u02cf\u0001\u02cf\u0001\u02cf\u0001\u02cf"+
		"\u0001\u02cf\u0001\u02cf\u0003\u02cf\u2685\b\u02cf\u0001\u02d0\u0001\u02d0"+
		"\u0001\u02d0\u0003\u02d0\u268a\b\u02d0\u0001\u02d1\u0001\u02d1\u0001\u02d1"+
		"\u0003\u02d1\u268f\b\u02d1\u0001\u02d1\u0001\u02d1\u0001\u02d2\u0003\u02d2"+
		"\u2694\b\u02d2\u0001\u02d2\u0001\u02d2\u0001\u02d2\u0001\u02d2\u0001\u02d2"+
		"\u0001\u02d2\u0001\u02d2\u0003\u02d2\u269d\b\u02d2\u0001\u02d3\u0005\u02d3"+
		"\u26a0\b\u02d3\n\u02d3\f\u02d3\u26a3\t\u02d3\u0001\u02d4\u0001\u02d4\u0001"+
		"\u02d4\u0001\u02d4\u0001\u02d4\u0001\u02d4\u0003\u02d4\u26ab\b\u02d4\u0001"+
		"\u02d5\u0001\u02d5\u0001\u02d5\u0001\u02d5\u0001\u02d5\u0001\u02d5\u0001"+
		"\u02d5\u0001\u02d5\u0003\u02d5\u26b5\b\u02d5\u0001\u02d6\u0001\u02d6\u0001"+
		"\u02d6\u0001\u02d6\u0001\u02d6\u0001\u02d6\u0003\u02d6\u26bd\b\u02d6\u0001"+
		"\u02d6\u0001\u02d6\u0001\u02d6\u0003\u02d6\u26c2\b\u02d6\u0001\u02d7\u0001"+
		"\u02d7\u0003\u02d7\u26c6\b\u02d7\u0001\u02d7\u0001\u02d7\u0001\u02d7\u0003"+
		"\u02d7\u26cb\b\u02d7\u0005\u02d7\u26cd\b\u02d7\n\u02d7\f\u02d7\u26d0\t"+
		"\u02d7\u0001\u02d8\u0001\u02d8\u0001\u02d8\u0001\u02d8\u0001\u02d8\u0001"+
		"\u02d8\u0001\u02d8\u0001\u02d8\u0001\u02d8\u0001\u02d8\u0001\u02d8\u0001"+
		"\u02d8\u0001\u02d8\u0001\u02d8\u0001\u02d8\u0001\u02d8\u0001\u02d8\u0001"+
		"\u02d8\u0001\u02d8\u0001\u02d8\u0001\u02d8\u0001\u02d8\u0001\u02d8\u0001"+
		"\u02d8\u0003\u02d8\u26ea\b\u02d8\u0001\u02d8\u0001\u02d8\u0001\u02d8\u0001"+
		"\u02d8\u0001\u02d8\u0001\u02d8\u0001\u02d8\u0001\u02d8\u0001\u02d8\u0001"+
		"\u02d8\u0001\u02d8\u0001\u02d8\u0001\u02d8\u0001\u02d8\u0001\u02d8\u0001"+
		"\u02d8\u0001\u02d8\u0001\u02d8\u0001\u02d8\u0001\u02d8\u0001\u02d8\u0001"+
		"\u02d8\u0001\u02d8\u0001\u02d8\u0001\u02d8\u0001\u02d8\u0001\u02d8\u0001"+
		"\u02d8\u0001\u02d8\u0001\u02d8\u0001\u02d8\u0001\u02d8\u0001\u02d8\u0001"+
		"\u02d8\u0001\u02d8\u0001\u02d8\u0001\u02d8\u0003\u02d8\u2711\b\u02d8\u0001"+
		"\u02d9\u0001\u02d9\u0001\u02d9\u0005\u02d9\u2716\b\u02d9\n\u02d9\f\u02d9"+
		"\u2719\t\u02d9\u0001\u02da\u0001\u02da\u0001\u02da\u0001\u02da\u0001\u02da"+
		"\u0001\u02da\u0001\u02da\u0001\u02da\u0001\u02da\u0001\u02da\u0001\u02da"+
		"\u0003\u02da\u2726\b\u02da\u0001\u02db\u0001\u02db\u0001\u02dc\u0001\u02dc"+
		"\u0001\u02dc\u0001\u02dc\u0001\u02dc\u0001\u02dc\u0001\u02dc\u0001\u02dc"+
		"\u0001\u02dc\u0001\u02dc\u0001\u02dc\u0001\u02dc\u0001\u02dc\u0001\u02dc"+
		"\u0001\u02dc\u0003\u02dc\u2739\b\u02dc\u0003\u02dc\u273b\b\u02dc\u0001"+
		"\u02dd\u0001\u02dd\u0001\u02dd\u0003\u02dd\u2740\b\u02dd\u0001\u02dd\u0001"+
		"\u02dd\u0001\u02dd\u0001\u02dd\u0001\u02dd\u0001\u02de\u0001\u02de\u0001"+
		"\u02de\u0001\u02de\u0001\u02de\u0001\u02de\u0001\u02de\u0001\u02de\u0001"+
		"\u02de\u0003\u02de\u2750\b\u02de\u0001\u02df\u0001\u02df\u0001\u02df\u0003"+
		"\u02df\u2755\b\u02df\u0001\u02df\u0001\u02df\u0003\u02df\u2759\b\u02df"+
		"\u0001\u02e0\u0001\u02e0\u0003\u02e0\u275d\b\u02e0\u0001\u02e0\u0003\u02e0"+
		"\u2760\b\u02e0\u0001\u02e0\u0001\u02e0\u0001\u02e1\u0001\u02e1\u0001\u02e1"+
		"\u0001\u02e1\u0001\u02e1\u0001\u02e1\u0001\u02e1\u0001\u02e2\u0001\u02e2"+
		"\u0001\u02e2\u0001\u02e2\u0001\u02e2\u0001\u02e2\u0001\u02e2\u0001\u02e2"+
		"\u0001\u02e2\u0001\u02e2\u0001\u02e2\u0001\u02e2\u0001\u02e2\u0001\u02e2"+
		"\u0001\u02e2\u0001\u02e2\u0001\u02e2\u0001\u02e2\u0001\u02e2\u0001\u02e2"+
		"\u0003\u02e2\u277f\b\u02e2\u0001\u02e3\u0001\u02e3\u0001\u02e3\u0001\u02e3"+
		"\u0001\u02e3\u0001\u02e3\u0001\u02e3\u0001\u02e3\u0001\u02e3\u0001\u02e3"+
		"\u0003\u02e3\u278b\b\u02e3\u0001\u02e4\u0001\u02e4\u0003\u02e4\u278f\b"+
		"\u02e4\u0001\u02e4\u0001\u02e4\u0001\u02e4\u0001\u02e4\u0001\u02e4\u0001"+
		"\u02e4\u0001\u02e4\u0001\u02e4\u0001\u02e4\u0001\u02e4\u0001\u02e4\u0001"+
		"\u02e4\u0001\u02e4\u0001\u02e4\u0001\u02e4\u0003\u02e4\u27a0\b\u02e4\u0001"+
		"\u02e4\u0001\u02e4\u0001\u02e4\u0001\u02e4\u0001\u02e4\u0001\u02e4\u0001"+
		"\u02e4\u0001\u02e4\u0001\u02e4\u0001\u02e4\u0001\u02e4\u0001\u02e4\u0001"+
		"\u02e4\u0003\u02e4\u27af\b\u02e4\u0001\u02e5\u0001\u02e5\u0001\u02e6\u0001"+
		"\u02e6\u0001\u02e6\u0001\u02e6\u0001\u02e6\u0003\u02e6\u27b8\b\u02e6\u0001"+
		"\u02e7\u0001\u02e7\u0001\u02e7\u0001\u02e7\u0003\u02e7\u27be\b\u02e7\u0001"+
		"\u02e8\u0001\u02e8\u0001\u02e8\u0003\u02e8\u27c3\b\u02e8\u0001\u02e9\u0001"+
		"\u02e9\u0001\u02e9\u0003\u02e9\u27c8\b\u02e9\u0001\u02e9\u0001\u02e9\u0001"+
		"\u02e9\u0001\u02e9\u0001\u02e9\u0001\u02e9\u0003\u02e9\u27d0\b\u02e9\u0001"+
		"\u02e9\u0001\u02e9\u0001\u02ea\u0001\u02ea\u0001\u02ea\u0001\u02ea\u0001"+
		"\u02ea\u0001\u02ea\u0001\u02ea\u0001\u02ea\u0003\u02ea\u27dc\b\u02ea\u0001"+
		"\u02eb\u0001\u02eb\u0001\u02eb\u0005\u02eb\u27e1\b\u02eb\n\u02eb\f\u02eb"+
		"\u27e4\t\u02eb\u0001\u02ec\u0001\u02ec\u0003\u02ec\u27e8\b\u02ec\u0001"+
		"\u02ed\u0001\u02ed\u0003\u02ed\u27ec\b\u02ed\u0001\u02ee\u0001\u02ee\u0003"+
		"\u02ee\u27f0\b\u02ee\u0001\u02ef\u0001\u02ef\u0001\u02f0\u0001\u02f0\u0003"+
		"\u02f0\u27f6\b\u02f0\u0001\u02f0\u0001\u02f0\u0001\u02f0\u0001\u02f0\u0003"+
		"\u02f0\u27fc\b\u02f0\u0001\u02f0\u0003\u02f0\u27ff\b\u02f0\u0001\u02f1"+
		"\u0001\u02f1\u0001\u02f1\u0005\u02f1\u2804\b\u02f1\n\u02f1\f\u02f1\u2807"+
		"\t\u02f1\u0001\u02f2\u0001\u02f2\u0001\u02f2\u0001\u02f3\u0001\u02f3\u0001"+
		"\u02f3\u0005\u02f3\u280f\b\u02f3\n\u02f3\f\u02f3\u2812\t\u02f3\u0001\u02f4"+
		"\u0001\u02f4\u0003\u02f4\u2816\b\u02f4\u0001\u02f5\u0001\u02f5\u0003\u02f5"+
		"\u281a\b\u02f5\u0001\u02f6\u0001\u02f6\u0003\u02f6\u281e\b\u02f6\u0001"+
		"\u02f7\u0001\u02f7\u0001\u02f7\u0001\u02f8\u0001\u02f8\u0003\u02f8\u2825"+
		"\b\u02f8\u0001\u02f8\u0003\u02f8\u2828\b\u02f8\u0001\u02f8\u0003\u02f8"+
		"\u282b\b\u02f8\u0001\u02f8\u0003\u02f8\u282e\b\u02f8\u0001\u02f8\u0001"+
		"\u02f8\u0001\u02f8\u0001\u02f8\u0003\u02f8\u2834\b\u02f8\u0001\u02f8\u0003"+
		"\u02f8\u2837\b\u02f8\u0001\u02f9\u0001\u02f9\u0001\u02fa\u0001\u02fa\u0001"+
		"\u02fa\u0001\u02fa\u0003\u02fa\u283f\b\u02fa\u0001\u02fa\u0001\u02fa\u0001"+
		"\u02fb\u0003\u02fb\u2844\b\u02fb\u0001\u02fb\u0001\u02fb\u0003\u02fb\u2848"+
		"\b\u02fb\u0001\u02fb\u0001\u02fb\u0001\u02fb\u0001\u02fb\u0001\u02fb\u0001"+
		"\u02fb\u0001\u02fb\u0001\u02fb\u0001\u02fb\u0001\u02fb\u0001\u02fb\u0003"+
		"\u02fb\u2855\b\u02fb\u0001\u02fb\u0000\u00160:@Pfpt\u0086\u009a\u00b0"+
		"\u00b2\u011a\u011c\u0120\u0122\u0176\u0190\u01aa\u01ba\u01f6\u023c\u04c0"+
		"\u02fc\u0000\u0002\u0004\u0006\b\n\f\u000e\u0010\u0012\u0014\u0016\u0018"+
		"\u001a\u001c\u001e \"$&(*,.02468:<";
	private static final String _serializedATNSegment1 =
		">@BDFHJLNPRTVXZ\\^`bdfhjlnprtvxz|~\u0080\u0082\u0084\u0086\u0088\u008a"+
		"\u008c\u008e\u0090\u0092\u0094\u0096\u0098\u009a\u009c\u009e\u00a0\u00a2"+
		"\u00a4\u00a6\u00a8\u00aa\u00ac\u00ae\u00b0\u00b2\u00b4\u00b6\u00b8\u00ba"+
		"\u00bc\u00be\u00c0\u00c2\u00c4\u00c6\u00c8\u00ca\u00cc\u00ce\u00d0\u00d2"+
		"\u00d4\u00d6\u00d8\u00da\u00dc\u00de\u00e0\u00e2\u00e4\u00e6\u00e8\u00ea"+
		"\u00ec\u00ee\u00f0\u00f2\u00f4\u00f6\u00f8\u00fa\u00fc\u00fe\u0100\u0102"+
		"\u0104\u0106\u0108\u010a\u010c\u010e\u0110\u0112\u0114\u0116\u0118\u011a"+
		"\u011c\u011e\u0120\u0122\u0124\u0126\u0128\u012a\u012c\u012e\u0130\u0132"+
		"\u0134\u0136\u0138\u013a\u013c\u013e\u0140\u0142\u0144\u0146\u0148\u014a"+
		"\u014c\u014e\u0150\u0152\u0154\u0156\u0158\u015a\u015c\u015e\u0160\u0162"+
		"\u0164\u0166\u0168\u016a\u016c\u016e\u0170\u0172\u0174\u0176\u0178\u017a"+
		"\u017c\u017e\u0180\u0182\u0184\u0186\u0188\u018a\u018c\u018e\u0190\u0192"+
		"\u0194\u0196\u0198\u019a\u019c\u019e\u01a0\u01a2\u01a4\u01a6\u01a8\u01aa"+
		"\u01ac\u01ae\u01b0\u01b2\u01b4\u01b6\u01b8\u01ba\u01bc\u01be\u01c0\u01c2"+
		"\u01c4\u01c6\u01c8\u01ca\u01cc\u01ce\u01d0\u01d2\u01d4\u01d6\u01d8\u01da"+
		"\u01dc\u01de\u01e0\u01e2\u01e4\u01e6\u01e8\u01ea\u01ec\u01ee\u01f0\u01f2"+
		"\u01f4\u01f6\u01f8\u01fa\u01fc\u01fe\u0200\u0202\u0204\u0206\u0208\u020a"+
		"\u020c\u020e\u0210\u0212\u0214\u0216\u0218\u021a\u021c\u021e\u0220\u0222"+
		"\u0224\u0226\u0228\u022a\u022c\u022e\u0230\u0232\u0234\u0236\u0238\u023a"+
		"\u023c\u023e\u0240\u0242\u0244\u0246\u0248\u024a\u024c\u024e\u0250\u0252"+
		"\u0254\u0256\u0258\u025a\u025c\u025e\u0260\u0262\u0264\u0266\u0268\u026a"+
		"\u026c\u026e\u0270\u0272\u0274\u0276\u0278\u027a\u027c\u027e\u0280\u0282"+
		"\u0284\u0286\u0288\u028a\u028c\u028e\u0290\u0292\u0294\u0296\u0298\u029a"+
		"\u029c\u029e\u02a0\u02a2\u02a4\u02a6\u02a8\u02aa\u02ac\u02ae\u02b0\u02b2"+
		"\u02b4\u02b6\u02b8\u02ba\u02bc\u02be\u02c0\u02c2\u02c4\u02c6\u02c8\u02ca"+
		"\u02cc\u02ce\u02d0\u02d2\u02d4\u02d6\u02d8\u02da\u02dc\u02de\u02e0\u02e2"+
		"\u02e4\u02e6\u02e8\u02ea\u02ec\u02ee\u02f0\u02f2\u02f4\u02f6\u02f8\u02fa"+
		"\u02fc\u02fe\u0300\u0302\u0304\u0306\u0308\u030a\u030c\u030e\u0310\u0312"+
		"\u0314\u0316\u0318\u031a\u031c\u031e\u0320\u0322\u0324\u0326\u0328\u032a"+
		"\u032c\u032e\u0330\u0332\u0334\u0336\u0338\u033a\u033c\u033e\u0340\u0342"+
		"\u0344\u0346\u0348\u034a\u034c\u034e\u0350\u0352\u0354\u0356\u0358\u035a"+
		"\u035c\u035e\u0360\u0362\u0364\u0366\u0368\u036a\u036c\u036e\u0370\u0372"+
		"\u0374\u0376\u0378\u037a\u037c\u037e\u0380\u0382\u0384\u0386\u0388\u038a"+
		"\u038c\u038e\u0390\u0392\u0394\u0396\u0398\u039a\u039c\u039e\u03a0\u03a2"+
		"\u03a4\u03a6\u03a8\u03aa\u03ac\u03ae\u03b0\u03b2\u03b4\u03b6\u03b8\u03ba"+
		"\u03bc\u03be\u03c0\u03c2\u03c4\u03c6\u03c8\u03ca\u03cc\u03ce\u03d0\u03d2"+
		"\u03d4\u03d6\u03d8\u03da\u03dc\u03de\u03e0\u03e2\u03e4\u03e6\u03e8\u03ea"+
		"\u03ec\u03ee\u03f0\u03f2\u03f4\u03f6\u03f8\u03fa\u03fc\u03fe\u0400\u0402"+
		"\u0404\u0406\u0408\u040a\u040c\u040e\u0410\u0412\u0414\u0416\u0418\u041a"+
		"\u041c\u041e\u0420\u0422\u0424\u0426\u0428\u042a\u042c\u042e\u0430\u0432"+
		"\u0434\u0436\u0438\u043a\u043c\u043e\u0440\u0442\u0444\u0446\u0448\u044a"+
		"\u044c\u044e\u0450\u0452\u0454\u0456\u0458\u045a\u045c\u045e\u0460\u0462"+
		"\u0464\u0466\u0468\u046a\u046c\u046e\u0470\u0472\u0474\u0476\u0478\u047a"+
		"\u047c\u047e\u0480\u0482\u0484\u0486\u0488\u048a\u048c\u048e\u0490\u0492"+
		"\u0494\u0496\u0498\u049a\u049c\u049e\u04a0\u04a2\u04a4\u04a6\u04a8\u04aa"+
		"\u04ac\u04ae\u04b0\u04b2\u04b4\u04b6\u04b8\u04ba\u04bc\u04be\u04c0\u04c2"+
		"\u04c4\u04c6\u04c8\u04ca\u04cc\u04ce\u04d0\u04d2\u04d4\u04d6\u04d8\u04da"+
		"\u04dc\u04de\u04e0\u04e2\u04e4\u04e6\u04e8\u04ea\u04ec\u04ee\u04f0\u04f2"+
		"\u04f4\u04f6\u04f8\u04fa\u04fc\u04fe\u0500\u0502\u0504\u0506\u0508\u050a"+
		"\u050c\u050e\u0510\u0512\u0514\u0516\u0518\u051a\u051c\u051e\u0520\u0522"+
		"\u0524\u0526\u0528\u052a\u052c\u052e\u0530\u0532\u0534\u0536\u0538\u053a"+
		"\u053c\u053e\u0540\u0542\u0544\u0546\u0548\u054a\u054c\u054e\u0550\u0552"+
		"\u0554\u0556\u0558\u055a\u055c\u055e\u0560\u0562\u0564\u0566\u0568\u056a"+
		"\u056c\u056e\u0570\u0572\u0574\u0576\u0578\u057a\u057c\u057e\u0580\u0582"+
		"\u0584\u0586\u0588\u058a\u058c\u058e\u0590\u0592\u0594\u0596\u0598\u059a"+
		"\u059c\u059e\u05a0\u05a2\u05a4\u05a6\u05a8\u05aa\u05ac\u05ae\u05b0\u05b2"+
		"\u05b4\u05b6\u05b8\u05ba\u05bc\u05be\u05c0\u05c2\u05c4\u05c6\u05c8\u05ca"+
		"\u05cc\u05ce\u05d0\u05d2\u05d4\u05d6\u05d8\u05da\u05dc\u05de\u05e0\u05e2"+
		"\u05e4\u05e6\u05e8\u05ea\u05ec\u05ee\u05f0\u05f2\u05f4\u05f6\u0000I\u0002"+
		"\u0000\u0107\u0107\u023d\u023d\u0002\u0000\u0117\u0117\u0126\u0126\u0002"+
		"\u0000\u0108\u0108\u01be\u01be\u0003\u0000nn\u00de\u00de\u00e0\u00e0\u0002"+
		"\u0000\u00f7\u00f7\u0105\u0105\u0002\u0000\u00c4\u00c4\u0121\u0121\u0002"+
		"\u0000yy|}\u0002\u0000vv\u0087\u0087\u0002\u0000\u0228\u0229\u0254\u0254"+
		")\u0000PPTTYY]^`ckkmoqsvv\u007f\u0082\u0084\u0089\u008b\u008e\u0091\u0093"+
		"\u0095\u0096\u0098\u009c\u00a5\u00a5\u00aa\u00ab\u00b5\u00b5\u00bc\u00bc"+
		"\u00be\u00be\u00d1\u00d3\u00d9\u00db\u00dd\u00de\u00e2\u00e2\u00e6\u00e6"+
		"\u00e9\u00e9\u00ec\u00ec\u00f7\u00f7\u00fb\u00fb\u0103\u0103\u0108\u0108"+
		"\u010d\u010d\u0116\u0116\u012c\u012c\u0139\u0139\u014c\u014c\u0186\u0187"+
		"\u01a9\u01a9\u01ac\u01ad\u01b6\u01b8\u01ba\u01bb?\u0000QSUXZ\\__degj\u0083"+
		"\u0083\u0097\u0097\u009d\u00a0\u00a2\u00a2\u00a6\u00a6\u00a8\u00a9\u00ac"+
		"\u00ac\u00ae\u00ae\u00b0\u00b3\u00b6\u00b9\u00bb\u00bb\u00bd\u00bd\u00bf"+
		"\u00c2\u00c4\u00c5\u00c7\u00c7\u00cb\u00cb\u00cf\u00d0\u00d5\u00d6\u00d8"+
		"\u00d8\u00e1\u00e1\u00e3\u00e3\u00e5\u00e5\u00e7\u00e7\u00ea\u00ea\u00ef"+
		"\u00ef\u00f1\u00f1\u00f3\u00f6\u00f8\u00fa\u00fc\u0102\u0104\u0107\u0109"+
		"\u010c\u010e\u010e\u0111\u0115\u0117\u011e\u0120\u012b\u012d\u0138\u013a"+
		"\u0146\u0148\u014b\u014d\u0155\u0157\u015f\u0161\u0162\u0165\u0165\u016b"+
		"\u016d\u016f\u0173\u0175\u0175\u017b\u0180\u0183\u0183\u0185\u0185\u0195"+
		"\u0198\u019a\u019e\u01a1\u01a4\u01aa\u01ab\u01ae\u01af\u01b1\u01b4\u01bc"+
		"\u01d8\u01da\u023d\u0249\u024b\u000b\u0000w~\u008a\u008a\u0094\u0094\u00c6"+
		"\u00c6\u00e8\u00e8\u00f2\u00f2\u010f\u010f\u0184\u0184\u0188\u0188\u01a5"+
		"\u01a8\u023e\u0240\u0002\u0000\u0004\u0004\u0088\u0088\u0002\u0000\u0005"+
		"\u0005\u0089\u0089\u0002\u0000\u0018\u0018\u001a\u001e\u0002\u0000\n\u000b"+
		"KL\u0001\u0000\u0004J\u0004\u0000\f\r\u000f\u0012\u0018\u0018\u001a\u001e"+
		"\u0001\u0000\u0098\u0099\u0002\u0000\u0092\u0093\u00e9\u00e9\u0001\u0000"+
		"\u000f\u0010\u0001\u0000\u024c\u024d\u0001\u0000\u0174\u0175\u0001\u0000"+
		"\u0195\u0198\u0002\u0000\u01aa\u01aa\u01b2\u01b2\u0002\u0000oo\u0092\u0092"+
		"\u0001\u0000\u00a3\u00a4\u001c\u0000eflltu\u008f\u0090\u00a1\u00a1\u00a3"+
		"\u00a4\u00a6\u00a6\u00a8\u00a9\u00c8\u00ca\u00cc\u00ce\u00d4\u00d4\u00d6"+
		"\u00d7\u00dc\u00dc\u00e4\u00e4\u00eb\u00eb\u00f7\u00f7\u011f\u011f\u0160"+
		"\u0160\u0164\u0164\u016a\u016a\u0178\u0178\u018a\u0194\u0199\u0199\u019f"+
		"\u01a0\u01b0\u01b0\u01b5\u01b5\u01b9\u01b9\u0243\u0244\u0002\u0000\u00b5"+
		"\u00b5\u0254\u0254\u0002\u0000\u0018\u0018\u0087\u0087\u0002\u0000PS\u0092"+
		"\u0092\u0001\u0000PS\u0002\u0000\u00fa\u00fa\u0145\u0145\u0002\u0000Y"+
		"Y\u00f1\u00f1\u0001\u0000\u0152\u0153\u0002\u0000\u00c1\u00c1\u00fa\u00fa"+
		"\u0002\u0000\u00c1\u00c1\u0124\u0124\u0001\u0000RS\u0002\u0000\u008c\u008c"+
		"\u00b5\u00b5\u0002\u0000\u011a\u011a\u0127\u0127\u0007\u0000\u0092\u0092"+
		"\u010e\u010e\u0111\u0111\u0115\u0115\u0125\u0125\u0129\u0129\u014f\u0150"+
		"\u0001\u0000\u00b7\u00b8\u0002\u0000\u00f9\u00f9\u0142\u0142\u0002\u0000"+
		"mm\u015a\u015a\u0002\u0000\u0131\u0131\u0155\u0155\u0002\u0000VV\\\\\u0004"+
		"\u0000\u011c\u011c\u011e\u011e\u0132\u0132\u013e\u013e\u0002\u0000VV["+
		"[\u0006\u0000\u01f1\u01f1\u020e\u020e\u0219\u0219\u021f\u021f\u022a\u022a"+
		"\u023b\u023b\u0002\u0000\u0104\u0104\u0108\u0108\u0002\u0000\u01d4\u01d4"+
		"\u01ee\u01ee\u0002\u0000VV[\\\u0002\u0000\u008c\u008c\u0254\u0254\u0002"+
		"\u0000UU[[\u0002\u0000\u01c2\u01c2\u01c8\u01c8\u0003\u0000hh\u0148\u0148"+
		"\u0221\u0221\u0002\u0000]]__\u0002\u0000\u01ca\u01ca\u01e6\u01e6\u0002"+
		"\u0000ggii\b\u0000\u0092\u0092\u00fc\u00fc\u010e\u010e\u0111\u0111\u0115"+
		"\u0115\u0125\u0125\u0129\u0129\u014f\u0150\u0002\u0000\u01c4\u01c4\u01de"+
		"\u01de\u0002\u0000\u00f7\u00f7\u0227\u0227\u0002\u0000]]\u00f7\u00f7\u0002"+
		"\u0000\u01fb\u01fb\u0216\u0216\u0004\u0000\u01d5\u01d5\u01d8\u01d8\u0202"+
		"\u0202\u022d\u022d\u0004\u0000\u0092\u0092\u0152\u0153\u0208\u0208\u0219"+
		"\u0219\u0002\u0000vv\u0091\u0091\u0003\u0000XX\u0114\u0114\u01be\u01be"+
		"\u0002\u0000\u00cb\u00cb\u0119\u0119\u0002\u0000gg\u01c3\u01c3\u0002\u0000"+
		"ii\u0146\u0146\u0002\u0000\u00c1\u00c1\u014b\u014b\u0001\u0000\u01ba\u01bb"+
		"\u2d35\u0000\u066e\u0001\u0000\u0000\u0000\u0002\u0681\u0001\u0000\u0000"+
		"\u0000\u0004\u0683\u0001\u0000\u0000\u0000\u0006\u068a\u0001\u0000\u0000"+
		"\u0000\b\u0695\u0001\u0000\u0000\u0000\n\u0698\u0001\u0000\u0000\u0000"+
		"\f\u06a3\u0001\u0000\u0000\u0000\u000e\u06a8\u0001\u0000\u0000\u0000\u0010"+
		"\u06b3\u0001\u0000\u0000\u0000\u0012\u06be\u0001\u0000\u0000\u0000\u0014"+
		"\u06c4\u0001\u0000\u0000\u0000\u0016\u06ce\u0001\u0000\u0000\u0000\u0018"+
		"\u06d2\u0001\u0000\u0000\u0000\u001a\u06d6\u0001\u0000\u0000\u0000\u001c"+
		"\u06da\u0001\u0000\u0000\u0000\u001e\u06df\u0001\u0000\u0000\u0000 \u06e3"+
		"\u0001\u0000\u0000\u0000\"\u06e5\u0001\u0000\u0000\u0000$\u06e7\u0001"+
		"\u0000\u0000\u0000&\u0705\u0001\u0000\u0000\u0000(\u0708\u0001\u0000\u0000"+
		"\u0000*\u0719\u0001\u0000\u0000\u0000,\u0730\u0001\u0000\u0000\u0000."+
		"\u0732\u0001\u0000\u0000\u00000\u0734\u0001\u0000\u0000\u00002\u073f\u0001"+
		"\u0000\u0000\u00004\u0753\u0001\u0000\u0000\u00006\u0760\u0001\u0000\u0000"+
		"\u00008\u0763\u0001\u0000\u0000\u0000:\u0772\u0001\u0000\u0000\u0000<"+
		"\u0787\u0001\u0000\u0000\u0000>\u0789\u0001\u0000\u0000\u0000@\u078e\u0001"+
		"\u0000\u0000\u0000B\u0799\u0001\u0000\u0000\u0000D\u079d\u0001\u0000\u0000"+
		"\u0000F\u07b3\u0001\u0000\u0000\u0000H\u07b5\u0001\u0000\u0000\u0000J"+
		"\u07ba\u0001\u0000\u0000\u0000L\u07c4\u0001\u0000\u0000\u0000N\u07ed\u0001"+
		"\u0000\u0000\u0000P\u07f2\u0001\u0000\u0000\u0000R\u0836\u0001\u0000\u0000"+
		"\u0000T\u083d\u0001\u0000\u0000\u0000V\u083f\u0001\u0000\u0000\u0000X"+
		"\u086e\u0001\u0000\u0000\u0000Z\u0870\u0001\u0000\u0000\u0000\\\u0878"+
		"\u0001\u0000\u0000\u0000^\u0884\u0001\u0000\u0000\u0000`\u088b\u0001\u0000"+
		"\u0000\u0000b\u0891\u0001\u0000\u0000\u0000d\u0897\u0001\u0000\u0000\u0000"+
		"f\u0899\u0001\u0000\u0000\u0000h\u08a3\u0001\u0000\u0000\u0000j\u08ad"+
		"\u0001\u0000\u0000\u0000l\u08ba\u0001\u0000\u0000\u0000n\u08bc\u0001\u0000"+
		"\u0000\u0000p\u08bf\u0001\u0000\u0000\u0000r\u08d2\u0001\u0000\u0000\u0000"+
		"t\u08d4\u0001\u0000\u0000\u0000v\u08f4\u0001\u0000\u0000\u0000x\u08f6"+
		"\u0001\u0000\u0000\u0000z\u08fd\u0001\u0000\u0000\u0000|\u08ff\u0001\u0000"+
		"\u0000\u0000~\u0901\u0001\u0000\u0000\u0000\u0080\u0903\u0001\u0000\u0000"+
		"\u0000\u0082\u0905\u0001\u0000\u0000\u0000\u0084\u090a\u0001\u0000\u0000"+
		"\u0000\u0086\u090c\u0001\u0000\u0000\u0000\u0088\u0922\u0001\u0000\u0000"+
		"\u0000\u008a\u0924\u0001\u0000\u0000\u0000\u008c\u0928\u0001\u0000\u0000"+
		"\u0000\u008e\u0935\u0001\u0000\u0000\u0000\u0090\u0937\u0001\u0000\u0000"+
		"\u0000\u0092\u093a\u0001\u0000\u0000\u0000\u0094\u093f\u0001\u0000\u0000"+
		"\u0000\u0096\u0944\u0001\u0000\u0000\u0000\u0098\u094a\u0001\u0000\u0000"+
		"\u0000\u009a\u094d\u0001\u0000\u0000\u0000\u009c\u0958\u0001\u0000\u0000"+
		"\u0000\u009e\u095c\u0001\u0000\u0000\u0000\u00a0\u096b\u0001\u0000\u0000"+
		"\u0000\u00a2\u096d\u0001\u0000\u0000\u0000\u00a4\u097d\u0001\u0000\u0000"+
		"\u0000\u00a6\u0985\u0001\u0000\u0000\u0000\u00a8\u0993\u0001\u0000\u0000"+
		"\u0000\u00aa\u09a0\u0001\u0000\u0000\u0000\u00ac\u09a4\u0001\u0000\u0000"+
		"\u0000\u00ae\u09a6\u0001\u0000\u0000\u0000\u00b0\u09a9\u0001\u0000\u0000"+
		"\u0000\u00b2\u09e1\u0001\u0000\u0000\u0000\u00b4\u09f8\u0001\u0000\u0000"+
		"\u0000\u00b6\u09fa\u0001\u0000\u0000\u0000\u00b8\u09fe\u0001\u0000\u0000"+
		"\u0000\u00ba\u0a02\u0001\u0000\u0000\u0000\u00bc\u0a13\u0001\u0000\u0000"+
		"\u0000\u00be\u0a1c\u0001\u0000\u0000\u0000\u00c0\u0a29\u0001\u0000\u0000"+
		"\u0000\u00c2\u0a2b\u0001\u0000\u0000\u0000\u00c4\u0a33\u0001\u0000\u0000"+
		"\u0000\u00c6\u0a35\u0001\u0000\u0000\u0000\u00c8\u0a38\u0001\u0000\u0000"+
		"\u0000\u00ca\u0a3c\u0001\u0000\u0000\u0000\u00cc\u0a43\u0001\u0000\u0000"+
		"\u0000\u00ce\u0a6d\u0001\u0000\u0000\u0000\u00d0\u0a74\u0001\u0000\u0000"+
		"\u0000\u00d2\u0a76\u0001\u0000\u0000\u0000\u00d4\u0a7e\u0001\u0000\u0000"+
		"\u0000\u00d6\u0a88\u0001\u0000\u0000\u0000\u00d8\u0a8a\u0001\u0000\u0000"+
		"\u0000\u00da\u0a92\u0001\u0000\u0000\u0000\u00dc\u0a97\u0001\u0000\u0000"+
		"\u0000\u00de\u0ac1\u0001\u0000\u0000\u0000\u00e0\u0ac4\u0001\u0000\u0000"+
		"\u0000\u00e2\u0acf\u0001\u0000\u0000\u0000\u00e4\u0ad1\u0001\u0000\u0000"+
		"\u0000\u00e6\u0ad4\u0001\u0000\u0000\u0000\u00e8\u0ada\u0001\u0000\u0000"+
		"\u0000\u00ea\u0ae5\u0001\u0000\u0000\u0000\u00ec\u0ae7\u0001\u0000\u0000"+
		"\u0000\u00ee\u0aea\u0001\u0000\u0000\u0000\u00f0\u0aec\u0001\u0000\u0000"+
		"\u0000\u00f2\u0aee\u0001\u0000\u0000\u0000\u00f4\u0af0\u0001\u0000\u0000"+
		"\u0000\u00f6\u0af5\u0001\u0000\u0000\u0000\u00f8\u0afc\u0001\u0000\u0000"+
		"\u0000\u00fa\u0b03\u0001\u0000\u0000\u0000\u00fc\u0b07\u0001\u0000\u0000"+
		"\u0000\u00fe\u0b09\u0001\u0000\u0000\u0000\u0100\u0b0b\u0001\u0000\u0000"+
		"\u0000\u0102\u0b0e\u0001\u0000\u0000\u0000\u0104\u0b1b\u0001\u0000\u0000"+
		"\u0000\u0106\u0b28\u0001\u0000\u0000\u0000\u0108\u0b2a\u0001\u0000\u0000"+
		"\u0000\u010a\u0b2c\u0001\u0000\u0000\u0000\u010c\u0b2f\u0001\u0000\u0000"+
		"\u0000\u010e\u0b33\u0001\u0000\u0000\u0000\u0110\u0b35\u0001\u0000\u0000"+
		"\u0000\u0112\u0b37\u0001\u0000\u0000\u0000\u0114\u0b39\u0001\u0000\u0000"+
		"\u0000\u0116\u0b52\u0001\u0000\u0000\u0000\u0118\u0b54\u0001\u0000\u0000"+
		"\u0000\u011a\u0b6e\u0001\u0000\u0000\u0000\u011c\u0c4e\u0001\u0000\u0000"+
		"\u0000\u011e\u0c9e\u0001\u0000\u0000\u0000\u0120\u0ca0\u0001\u0000\u0000"+
		"\u0000\u0122\u0caa\u0001\u0000\u0000\u0000\u0124\u0cc3\u0001\u0000\u0000"+
		"\u0000\u0126\u0cc5\u0001\u0000\u0000\u0000\u0128\u0ccc\u0001\u0000\u0000"+
		"\u0000\u012a\u0cce\u0001\u0000\u0000\u0000\u012c\u0cd9\u0001\u0000\u0000"+
		"\u0000\u012e\u0cdd\u0001\u0000\u0000\u0000\u0130\u0ce2\u0001\u0000\u0000"+
		"\u0000\u0132\u0ce5\u0001\u0000\u0000\u0000\u0134\u0ceb\u0001\u0000\u0000"+
		"\u0000\u0136\u0cf4\u0001\u0000\u0000\u0000\u0138\u0d02\u0001\u0000\u0000"+
		"\u0000\u013a\u0d06\u0001\u0000\u0000\u0000\u013c\u0d09\u0001\u0000\u0000"+
		"\u0000\u013e\u0d0d\u0001\u0000\u0000\u0000\u0140\u0d1e\u0001\u0000\u0000"+
		"\u0000\u0142\u0d34\u0001\u0000\u0000\u0000\u0144\u0d3c\u0001\u0000\u0000"+
		"\u0000\u0146\u0d3e\u0001\u0000\u0000\u0000\u0148\u0d45\u0001\u0000\u0000"+
		"\u0000\u014a\u0d51\u0001\u0000\u0000\u0000\u014c\u0d61\u0001\u0000\u0000"+
		"\u0000\u014e\u0d6b\u0001\u0000\u0000\u0000\u0150\u0d6d\u0001\u0000\u0000"+
		"\u0000\u0152\u0d73\u0001\u0000\u0000\u0000\u0154\u0d7f\u0001\u0000\u0000"+
		"\u0000\u0156\u0d81\u0001\u0000\u0000\u0000\u0158\u0d89\u0001\u0000\u0000"+
		"\u0000\u015a\u0d91\u0001\u0000\u0000\u0000\u015c\u0d9c\u0001\u0000\u0000"+
		"\u0000\u015e\u0d9e\u0001\u0000\u0000\u0000\u0160\u0ddd\u0001\u0000\u0000"+
		"\u0000\u0162\u0de3\u0001\u0000\u0000\u0000\u0164\u0df9\u0001\u0000\u0000"+
		"\u0000\u0166\u0dfc\u0001\u0000\u0000\u0000\u0168\u0e04\u0001\u0000\u0000"+
		"\u0000\u016a\u0e06\u0001\u0000\u0000\u0000\u016c\u0e0b\u0001\u0000\u0000"+
		"\u0000\u016e\u0e19\u0001\u0000\u0000\u0000\u0170\u0e30\u0001\u0000\u0000"+
		"\u0000\u0172\u0e32\u0001\u0000\u0000\u0000\u0174\u0e45\u0001\u0000\u0000"+
		"\u0000\u0176\u0e47\u0001\u0000\u0000\u0000\u0178\u0e59\u0001\u0000\u0000"+
		"\u0000\u017a\u0e5b\u0001\u0000\u0000\u0000\u017c\u0e69\u0001\u0000\u0000"+
		"\u0000\u017e\u0e76\u0001\u0000\u0000\u0000\u0180\u0e78\u0001\u0000\u0000"+
		"\u0000\u0182\u0e7e\u0001\u0000\u0000\u0000\u0184\u0e86\u0001\u0000\u0000"+
		"\u0000\u0186\u0e88\u0001\u0000\u0000\u0000\u0188\u0faa\u0001\u0000\u0000"+
		"\u0000\u018a\u0fc7\u0001\u0000\u0000\u0000\u018c\u0fd6\u0001\u0000\u0000"+
		"\u0000\u018e\u0fdc\u0001\u0000\u0000\u0000\u0190\u0fde\u0001\u0000\u0000"+
		"\u0000\u0192\u0fe9\u0001\u0000\u0000\u0000\u0194\u0ff4\u0001\u0000\u0000"+
		"\u0000\u0196\u0fff\u0001\u0000\u0000\u0000\u0198\u1001\u0001\u0000\u0000"+
		"\u0000\u019a\u1020\u0001\u0000\u0000\u0000\u019c\u1039\u0001\u0000\u0000"+
		"\u0000\u019e\u1041\u0001\u0000\u0000\u0000\u01a0\u1045\u0001\u0000\u0000"+
		"\u0000\u01a2\u1047\u0001\u0000\u0000\u0000\u01a4\u104c\u0001\u0000\u0000"+
		"\u0000\u01a6\u1065\u0001\u0000\u0000\u0000\u01a8\u106b\u0001\u0000\u0000"+
		"\u0000\u01aa\u106d\u0001\u0000\u0000\u0000\u01ac\u1079\u0001\u0000\u0000"+
		"\u0000\u01ae\u107f\u0001\u0000\u0000\u0000\u01b0\u1083\u0001\u0000\u0000"+
		"\u0000\u01b2\u1085\u0001\u0000\u0000\u0000\u01b4\u108d\u0001\u0000\u0000"+
		"\u0000\u01b6\u1091\u0001\u0000\u0000\u0000\u01b8\u10af\u0001\u0000\u0000"+
		"\u0000\u01ba\u10b1\u0001\u0000\u0000\u0000\u01bc\u10c3\u0001\u0000\u0000"+
		"\u0000\u01be\u10c5\u0001\u0000\u0000\u0000\u01c0\u10ce\u0001\u0000\u0000"+
		"\u0000\u01c2\u10d9\u0001\u0000\u0000\u0000\u01c4\u10db\u0001\u0000\u0000"+
		"\u0000\u01c6\u10de\u0001\u0000\u0000\u0000\u01c8\u10e1\u0001\u0000\u0000"+
		"\u0000\u01ca\u10e9\u0001\u0000\u0000\u0000\u01cc\u10fb\u0001\u0000\u0000"+
		"\u0000\u01ce\u10fd\u0001\u0000\u0000\u0000\u01d0\u1102\u0001\u0000\u0000"+
		"\u0000\u01d2\u110f\u0001\u0000\u0000\u0000\u01d4\u1120\u0001\u0000\u0000"+
		"\u0000\u01d6\u1126\u0001\u0000\u0000\u0000\u01d8\u1128\u0001\u0000\u0000"+
		"\u0000\u01da\u112f\u0001\u0000\u0000\u0000\u01dc\u1136\u0001\u0000\u0000"+
		"\u0000\u01de\u1142\u0001\u0000\u0000\u0000\u01e0\u1144\u0001\u0000\u0000"+
		"\u0000\u01e2\u1147\u0001\u0000\u0000\u0000\u01e4\u114f\u0001\u0000\u0000"+
		"\u0000\u01e6\u1154\u0001\u0000\u0000\u0000\u01e8\u115c\u0001\u0000\u0000"+
		"\u0000\u01ea\u1161\u0001\u0000\u0000\u0000\u01ec\u116b\u0001\u0000\u0000"+
		"\u0000\u01ee\u117b\u0001\u0000\u0000\u0000\u01f0\u117d\u0001\u0000\u0000"+
		"\u0000\u01f2\u117f\u0001\u0000\u0000\u0000\u01f4\u1181\u0001\u0000\u0000"+
		"\u0000\u01f6\u1183\u0001\u0000\u0000\u0000\u01f8\u119f\u0001\u0000\u0000"+
		"\u0000\u01fa\u11a1\u0001\u0000\u0000\u0000\u01fc\u11a9\u0001\u0000\u0000"+
		"\u0000\u01fe\u11ae\u0001\u0000\u0000\u0000\u0200\u11b0\u0001\u0000\u0000"+
		"\u0000\u0202\u11b4\u0001\u0000\u0000\u0000\u0204\u11c9\u0001\u0000\u0000"+
		"\u0000\u0206\u11cf\u0001\u0000\u0000\u0000\u0208\u11d8\u0001\u0000\u0000"+
		"\u0000\u020a\u11da\u0001\u0000\u0000\u0000\u020c\u11e0\u0001\u0000\u0000"+
		"\u0000\u020e\u11e2\u0001\u0000\u0000\u0000\u0210\u11e4\u0001\u0000\u0000"+
		"\u0000\u0212\u1201\u0001\u0000\u0000\u0000\u0214\u120e\u0001\u0000\u0000"+
		"\u0000\u0216\u1210\u0001\u0000\u0000\u0000\u0218\u1215\u0001\u0000\u0000"+
		"\u0000\u021a\u1217\u0001\u0000\u0000\u0000\u021c\u121b\u0001\u0000\u0000"+
		"\u0000\u021e\u1232\u0001\u0000\u0000\u0000\u0220\u123a\u0001\u0000\u0000"+
		"\u0000\u0222\u1248\u0001\u0000\u0000\u0000\u0224\u1265\u0001\u0000\u0000"+
		"\u0000\u0226\u12a0\u0001\u0000\u0000\u0000\u0228\u12a2\u0001\u0000\u0000"+
		"\u0000\u022a\u12aa\u0001\u0000\u0000\u0000\u022c\u12b1\u0001\u0000\u0000"+
		"\u0000\u022e\u12b6\u0001\u0000\u0000\u0000\u0230\u12c3\u0001\u0000\u0000"+
		"\u0000\u0232\u12ca\u0001\u0000\u0000\u0000\u0234\u12d0\u0001\u0000\u0000"+
		"\u0000\u0236\u12d2\u0001\u0000\u0000\u0000\u0238\u12d4\u0001\u0000\u0000"+
		"\u0000\u023a\u12da\u0001\u0000\u0000\u0000\u023c\u12dc\u0001\u0000\u0000"+
		"\u0000\u023e\u12e7\u0001\u0000\u0000\u0000\u0240\u12f1\u0001\u0000\u0000"+
		"\u0000\u0242\u1300\u0001\u0000\u0000\u0000\u0244\u1307\u0001\u0000\u0000"+
		"\u0000\u0246\u1310\u0001\u0000\u0000\u0000\u0248\u1312\u0001\u0000\u0000"+
		"\u0000\u024a\u131c\u0001\u0000\u0000\u0000\u024c\u1327\u0001\u0000\u0000"+
		"\u0000\u024e\u1330\u0001\u0000\u0000\u0000\u0250\u1365\u0001\u0000\u0000"+
		"\u0000\u0252\u1367\u0001\u0000\u0000\u0000\u0254\u136c\u0001\u0000\u0000"+
		"\u0000\u0256\u1395\u0001\u0000\u0000\u0000\u0258\u1397\u0001\u0000\u0000"+
		"\u0000\u025a\u139b\u0001\u0000\u0000\u0000\u025c\u139d\u0001\u0000\u0000"+
		"\u0000\u025e\u13a8\u0001\u0000\u0000\u0000\u0260\u13aa\u0001\u0000\u0000"+
		"\u0000\u0262\u13ad\u0001\u0000\u0000\u0000\u0264\u13b2\u0001\u0000\u0000"+
		"\u0000\u0266\u13b6\u0001\u0000\u0000\u0000\u0268\u13c3\u0001\u0000\u0000"+
		"\u0000\u026a\u13ca\u0001\u0000\u0000\u0000\u026c\u13d4\u0001\u0000\u0000"+
		"\u0000\u026e\u13d6\u0001\u0000\u0000\u0000\u0270\u13da\u0001\u0000\u0000"+
		"\u0000\u0272\u13e6\u0001\u0000\u0000\u0000\u0274\u13ee\u0001\u0000\u0000"+
		"\u0000\u0276\u13f0\u0001\u0000\u0000\u0000\u0278\u13f5\u0001\u0000\u0000"+
		"\u0000\u027a\u13fd\u0001\u0000\u0000\u0000\u027c\u1400\u0001\u0000\u0000"+
		"\u0000\u027e\u1402\u0001\u0000\u0000\u0000\u0280\u140a\u0001\u0000\u0000"+
		"\u0000\u0282\u1422\u0001\u0000\u0000\u0000\u0284\u1433\u0001\u0000\u0000"+
		"\u0000\u0286\u143b\u0001\u0000\u0000\u0000\u0288\u143d\u0001\u0000\u0000"+
		"\u0000\u028a\u1447\u0001\u0000\u0000\u0000\u028c\u1449\u0001\u0000\u0000"+
		"\u0000\u028e\u144b\u0001\u0000\u0000\u0000\u0290\u1456\u0001\u0000\u0000"+
		"\u0000\u0292\u1460\u0001\u0000\u0000\u0000\u0294\u1462\u0001\u0000\u0000"+
		"\u0000\u0296\u1476\u0001\u0000\u0000\u0000\u0298\u1498\u0001\u0000\u0000"+
		"\u0000\u029a\u149a\u0001\u0000\u0000\u0000\u029c\u149c\u0001\u0000\u0000"+
		"\u0000\u029e\u14a2\u0001\u0000\u0000\u0000\u02a0\u14ad\u0001\u0000\u0000"+
		"\u0000\u02a2\u14b1\u0001\u0000\u0000\u0000\u02a4\u14b3\u0001\u0000\u0000"+
		"\u0000\u02a6\u14de\u0001\u0000\u0000\u0000\u02a8\u14e3\u0001\u0000\u0000"+
		"\u0000\u02aa\u14e5\u0001\u0000\u0000\u0000\u02ac\u14e7\u0001\u0000\u0000"+
		"\u0000\u02ae\u14e9\u0001\u0000\u0000\u0000\u02b0\u14f1\u0001\u0000\u0000"+
		"\u0000\u02b2\u14f5\u0001\u0000\u0000\u0000\u02b4\u14f8\u0001\u0000\u0000"+
		"\u0000\u02b6\u14fd\u0001\u0000\u0000\u0000\u02b8\u1508\u0001\u0000\u0000"+
		"\u0000\u02ba\u150c\u0001\u0000\u0000\u0000\u02bc\u1525\u0001\u0000\u0000"+
		"\u0000\u02be\u153b\u0001\u0000\u0000\u0000\u02c0\u153d\u0001\u0000\u0000"+
		"\u0000\u02c2\u153f\u0001\u0000\u0000\u0000\u02c4\u1548\u0001\u0000\u0000"+
		"\u0000\u02c6\u1566\u0001\u0000\u0000\u0000\u02c8\u156b\u0001\u0000\u0000"+
		"\u0000\u02ca\u156e\u0001\u0000\u0000\u0000\u02cc\u157a\u0001\u0000\u0000"+
		"\u0000\u02ce\u1581\u0001\u0000\u0000\u0000\u02d0\u1585\u0001\u0000\u0000"+
		"\u0000\u02d2\u1591\u0001\u0000\u0000\u0000\u02d4\u1598\u0001\u0000\u0000"+
		"\u0000\u02d6\u159f\u0001\u0000\u0000\u0000\u02d8\u15db\u0001\u0000\u0000"+
		"\u0000\u02da\u15f9\u0001\u0000\u0000\u0000\u02dc\u15fb\u0001\u0000\u0000"+
		"\u0000\u02de\u1603\u0001\u0000\u0000\u0000\u02e0\u1606\u0001\u0000\u0000"+
		"\u0000\u02e2\u1610\u0001\u0000\u0000\u0000\u02e4\u1612\u0001\u0000\u0000"+
		"\u0000\u02e6\u161e\u0001\u0000\u0000\u0000\u02e8\u1620\u0001\u0000\u0000"+
		"\u0000\u02ea\u1623\u0001\u0000\u0000\u0000\u02ec\u1630\u0001\u0000\u0000"+
		"\u0000\u02ee\u1632\u0001\u0000\u0000\u0000\u02f0\u1638\u0001\u0000\u0000"+
		"\u0000\u02f2\u163a\u0001\u0000\u0000\u0000\u02f4\u165a\u0001\u0000\u0000"+
		"\u0000\u02f6\u165f\u0001\u0000\u0000\u0000\u02f8\u1667\u0001\u0000\u0000"+
		"\u0000\u02fa\u166a\u0001\u0000\u0000\u0000\u02fc\u1676\u0001\u0000\u0000"+
		"\u0000\u02fe\u169f\u0001\u0000\u0000\u0000\u0300\u16a6\u0001\u0000\u0000"+
		"\u0000\u0302\u16ad\u0001\u0000\u0000\u0000\u0304\u16be\u0001\u0000\u0000"+
		"\u0000\u0306\u16c0\u0001\u0000\u0000\u0000\u0308\u16da\u0001\u0000\u0000"+
		"\u0000\u030a\u16e7\u0001\u0000\u0000\u0000\u030c\u16f0\u0001\u0000\u0000"+
		"\u0000\u030e\u16f2\u0001\u0000\u0000\u0000\u0310\u16fc\u0001\u0000\u0000"+
		"\u0000\u0312\u16fe\u0001\u0000\u0000\u0000\u0314\u170e\u0001\u0000\u0000"+
		"\u0000\u0316\u1715\u0001\u0000\u0000\u0000\u0318\u1717\u0001\u0000\u0000"+
		"\u0000\u031a\u172e\u0001\u0000\u0000\u0000\u031c\u1730\u0001\u0000\u0000"+
		"\u0000\u031e\u173c\u0001\u0000\u0000\u0000\u0320\u1741\u0001\u0000\u0000"+
		"\u0000\u0322\u177b\u0001\u0000\u0000\u0000\u0324\u177d\u0001\u0000\u0000"+
		"\u0000\u0326\u1785\u0001\u0000\u0000\u0000\u0328\u1788\u0001\u0000\u0000"+
		"\u0000\u032a\u17a5\u0001\u0000\u0000\u0000\u032c\u17b1\u0001\u0000\u0000"+
		"\u0000\u032e\u17b9\u0001\u0000\u0000\u0000\u0330\u17bf\u0001\u0000\u0000"+
		"\u0000\u0332\u17c5\u0001\u0000\u0000\u0000\u0334\u17c9\u0001\u0000\u0000"+
		"\u0000\u0336\u17fb\u0001\u0000\u0000\u0000\u0338\u17fd\u0001\u0000\u0000"+
		"\u0000\u033a\u1802\u0001\u0000\u0000\u0000\u033c\u1815\u0001\u0000\u0000"+
		"\u0000\u033e\u1819\u0001\u0000\u0000\u0000\u0340\u181b\u0001\u0000\u0000"+
		"\u0000\u0342\u182b\u0001\u0000\u0000\u0000\u0344\u1854\u0001\u0000\u0000"+
		"\u0000\u0346\u1858\u0001\u0000\u0000\u0000\u0348\u185c\u0001\u0000\u0000"+
		"\u0000\u034a\u185f\u0001\u0000\u0000\u0000\u034c\u1862\u0001\u0000\u0000"+
		"\u0000\u034e\u1865\u0001\u0000\u0000\u0000\u0350\u1869\u0001\u0000\u0000"+
		"\u0000\u0352\u186c\u0001\u0000\u0000\u0000\u0354\u1876\u0001\u0000\u0000"+
		"\u0000\u0356\u1880\u0001\u0000\u0000\u0000\u0358\u1887\u0001\u0000\u0000"+
		"\u0000\u035a\u1889\u0001\u0000\u0000\u0000\u035c\u188d\u0001\u0000\u0000"+
		"\u0000\u035e\u1891\u0001\u0000\u0000\u0000\u0360\u1899\u0001\u0000\u0000"+
		"\u0000\u0362\u18a1\u0001\u0000\u0000\u0000\u0364\u18a9\u0001\u0000\u0000"+
		"\u0000\u0366\u18ad\u0001\u0000\u0000\u0000\u0368\u1919\u0001\u0000\u0000"+
		"\u0000\u036a\u191b\u0001\u0000\u0000\u0000\u036c\u1924\u0001\u0000\u0000"+
		"\u0000\u036e\u197f\u0001\u0000\u0000\u0000\u0370\u1981\u0001\u0000\u0000"+
		"\u0000\u0372\u1998\u0001\u0000\u0000\u0000\u0374\u199a\u0001\u0000\u0000"+
		"\u0000\u0376\u19a2\u0001\u0000\u0000\u0000\u0378\u19a6\u0001\u0000\u0000"+
		"\u0000\u037a\u19b1\u0001\u0000\u0000\u0000\u037c\u19bc\u0001\u0000\u0000"+
		"\u0000\u037e\u19c1\u0001\u0000\u0000\u0000\u0380\u19c5\u0001\u0000\u0000"+
		"\u0000\u0382\u19ce\u0001\u0000\u0000\u0000\u0384\u19d2\u0001\u0000\u0000"+
		"\u0000\u0386\u19d4\u0001\u0000\u0000\u0000\u0388\u19dc\u0001\u0000\u0000"+
		"\u0000\u038a\u19e2\u0001\u0000\u0000\u0000\u038c\u19e6\u0001\u0000\u0000"+
		"\u0000\u038e\u19ee\u0001\u0000\u0000\u0000\u0390\u1a03\u0001\u0000\u0000"+
		"\u0000\u0392\u1a06\u0001\u0000\u0000\u0000\u0394\u1a1c\u0001\u0000\u0000"+
		"\u0000\u0396\u1a1e\u0001\u0000\u0000\u0000\u0398\u1b36\u0001\u0000\u0000"+
		"\u0000\u039a\u1b3b\u0001\u0000\u0000\u0000\u039c\u1b49\u0001\u0000\u0000"+
		"\u0000\u039e\u1b4b\u0001\u0000\u0000\u0000\u03a0\u1b50\u0001\u0000\u0000"+
		"\u0000\u03a2\u1b5f\u0001\u0000\u0000\u0000\u03a4\u1b61\u0001\u0000\u0000"+
		"\u0000\u03a6\u1b64\u0001\u0000\u0000\u0000\u03a8\u1b68\u0001\u0000\u0000"+
		"\u0000\u03aa\u1b77\u0001\u0000\u0000\u0000\u03ac\u1b7e\u0001\u0000\u0000"+
		"\u0000\u03ae\u1b80\u0001\u0000\u0000\u0000\u03b0\u1b84\u0001\u0000\u0000"+
		"\u0000\u03b2\u1b95\u0001\u0000\u0000\u0000\u03b4\u1b97\u0001\u0000\u0000"+
		"\u0000\u03b6\u1ba2\u0001\u0000\u0000\u0000\u03b8\u1ba4\u0001\u0000\u0000"+
		"\u0000\u03ba\u1bca\u0001\u0000\u0000\u0000\u03bc\u1bd2\u0001\u0000\u0000"+
		"\u0000\u03be\u1be4\u0001\u0000\u0000\u0000\u03c0\u1be6\u0001\u0000\u0000"+
		"\u0000\u03c2\u1bee\u0001\u0000\u0000\u0000\u03c4\u1bf9\u0001\u0000\u0000"+
		"\u0000\u03c6\u1bfb\u0001\u0000\u0000\u0000\u03c8\u1bfe\u0001\u0000\u0000"+
		"\u0000\u03ca\u1c03\u0001\u0000\u0000\u0000\u03cc\u1c1a\u0001\u0000\u0000"+
		"\u0000\u03ce\u1c1c\u0001\u0000\u0000\u0000\u03d0\u1c24\u0001\u0000\u0000"+
		"\u0000\u03d2\u1c2f\u0001\u0000\u0000\u0000\u03d4\u1c31\u0001\u0000\u0000"+
		"\u0000\u03d6\u1c41\u0001\u0000\u0000\u0000\u03d8\u1c43\u0001\u0000\u0000"+
		"\u0000\u03da\u1c4a\u0001\u0000\u0000\u0000\u03dc\u1c51\u0001\u0000\u0000"+
		"\u0000\u03de\u1c5f\u0001\u0000\u0000\u0000\u03e0\u1c61\u0001\u0000\u0000"+
		"\u0000\u03e2\u1c87\u0001\u0000\u0000\u0000\u03e4\u1c89\u0001\u0000\u0000"+
		"\u0000\u03e6\u1c8d\u0001\u0000\u0000\u0000\u03e8\u1c96\u0001\u0000\u0000"+
		"\u0000\u03ea\u1c9a\u0001\u0000\u0000\u0000\u03ec\u1cab\u0001\u0000\u0000"+
		"\u0000\u03ee\u1cad\u0001\u0000\u0000\u0000\u03f0\u1cc5\u0001\u0000\u0000"+
		"\u0000\u03f2\u1cc8\u0001\u0000\u0000\u0000\u03f4\u1cd2\u0001\u0000\u0000"+
		"\u0000\u03f6\u1cd4\u0001\u0000\u0000\u0000\u03f8\u1cd6\u0001\u0000\u0000"+
		"\u0000\u03fa\u1d0e\u0001\u0000\u0000\u0000\u03fc\u1d10\u0001\u0000\u0000"+
		"\u0000\u03fe\u1d1f\u0001\u0000\u0000\u0000\u0400\u1d21\u0001\u0000\u0000"+
		"\u0000\u0402\u1d23\u0001\u0000\u0000\u0000\u0404\u1d28\u0001\u0000\u0000"+
		"\u0000\u0406\u1da6\u0001\u0000\u0000\u0000\u0408\u1db0\u0001\u0000\u0000"+
		"\u0000\u040a\u1db8\u0001\u0000\u0000\u0000\u040c\u1dba\u0001\u0000\u0000"+
		"\u0000\u040e\u1dc0\u0001\u0000\u0000\u0000\u0410\u1dc3\u0001\u0000\u0000"+
		"\u0000\u0412\u1dc8\u0001\u0000\u0000\u0000\u0414\u1dda\u0001\u0000\u0000"+
		"\u0000\u0416\u1ddd\u0001\u0000\u0000\u0000\u0418\u1de9\u0001\u0000\u0000"+
		"\u0000\u041a\u1deb\u0001\u0000\u0000\u0000\u041c\u1ded\u0001\u0000\u0000"+
		"\u0000\u041e\u1dfb\u0001\u0000\u0000\u0000\u0420\u1dfd\u0001\u0000\u0000"+
		"\u0000\u0422\u1e0f\u0001\u0000\u0000\u0000\u0424\u1e1a\u0001\u0000\u0000"+
		"\u0000\u0426\u1e55\u0001\u0000\u0000\u0000\u0428\u1e57\u0001\u0000\u0000"+
		"\u0000\u042a\u1e64\u0001\u0000\u0000\u0000\u042c\u1e73\u0001\u0000\u0000"+
		"\u0000\u042e\u1e79\u0001\u0000\u0000\u0000\u0430\u1e7b\u0001\u0000\u0000"+
		"\u0000\u0432\u1e7f\u0001\u0000\u0000\u0000\u0434\u1e92\u0001\u0000\u0000"+
		"\u0000\u0436\u1e9f\u0001\u0000\u0000\u0000\u0438\u1ead\u0001\u0000\u0000"+
		"\u0000\u043a\u1ecd\u0001\u0000\u0000\u0000\u043c\u1ecf\u0001\u0000\u0000"+
		"\u0000\u043e\u1ee8\u0001\u0000\u0000\u0000\u0440\u1eeb\u0001\u0000\u0000"+
		"\u0000\u0442\u1eef\u0001\u0000\u0000\u0000\u0444\u1f08\u0001\u0000\u0000"+
		"\u0000\u0446\u1f0a\u0001\u0000\u0000\u0000\u0448\u1f1a\u0001\u0000\u0000"+
		"\u0000\u044a\u1f1f\u0001\u0000\u0000\u0000\u044c\u1f28\u0001\u0000\u0000"+
		"\u0000\u044e\u1f38\u0001\u0000\u0000\u0000\u0450\u1f3a\u0001\u0000\u0000"+
		"\u0000\u0452\u1f4a\u0001\u0000\u0000\u0000\u0454\u1f4d\u0001\u0000\u0000"+
		"\u0000\u0456\u1f68\u0001\u0000\u0000\u0000\u0458\u1f85\u0001\u0000\u0000"+
		"\u0000\u045a\u1f8d\u0001\u0000\u0000\u0000\u045c\u1f8f\u0001\u0000\u0000"+
		"\u0000\u045e\u1f97\u0001\u0000\u0000\u0000\u0460\u1fa5\u0001\u0000\u0000"+
		"\u0000\u0462\u1fd0\u0001\u0000\u0000\u0000\u0464\u1fd2\u0001\u0000\u0000"+
		"\u0000\u0466\u1fda\u0001\u0000\u0000\u0000\u0468\u1feb\u0001\u0000\u0000"+
		"\u0000\u046a\u1ff9\u0001\u0000\u0000\u0000\u046c\u2007\u0001\u0000\u0000"+
		"\u0000\u046e\u2018\u0001\u0000\u0000\u0000\u0470\u203e\u0001\u0000\u0000"+
		"\u0000\u0472\u2040\u0001\u0000\u0000\u0000\u0474\u2062\u0001\u0000\u0000"+
		"\u0000\u0476\u2064\u0001\u0000\u0000\u0000\u0478\u206f\u0001\u0000\u0000"+
		"\u0000\u047a\u2071\u0001\u0000\u0000\u0000\u047c\u2088\u0001\u0000\u0000"+
		"\u0000\u047e\u208a\u0001\u0000\u0000\u0000\u0480\u208f\u0001\u0000\u0000"+
		"\u0000\u0482\u209d\u0001\u0000\u0000\u0000\u0484\u20a0\u0001\u0000\u0000"+
		"\u0000\u0486\u2113\u0001\u0000\u0000\u0000\u0488\u2115\u0001\u0000\u0000"+
		"\u0000\u048a\u211c\u0001\u0000\u0000\u0000\u048c\u212d\u0001\u0000\u0000"+
		"\u0000\u048e\u2146\u0001\u0000\u0000\u0000\u0490\u2148\u0001\u0000\u0000"+
		"\u0000\u0492\u214a\u0001\u0000\u0000\u0000\u0494\u2153\u0001\u0000\u0000"+
		"\u0000\u0496\u215c\u0001\u0000\u0000\u0000\u0498\u2160\u0001\u0000\u0000"+
		"\u0000\u049a\u2168\u0001\u0000\u0000\u0000\u049c\u216c\u0001\u0000\u0000"+
		"\u0000\u049e\u2185\u0001\u0000\u0000\u0000\u04a0\u2188\u0001\u0000\u0000"+
		"\u0000\u04a2\u2196\u0001\u0000\u0000\u0000\u04a4\u21a3\u0001\u0000\u0000"+
		"\u0000\u04a6\u21ac\u0001\u0000\u0000\u0000\u04a8\u21bc\u0001\u0000\u0000"+
		"\u0000\u04aa\u21c4\u0001\u0000\u0000\u0000\u04ac\u21ca\u0001\u0000\u0000"+
		"\u0000\u04ae\u21d2\u0001\u0000\u0000\u0000\u04b0\u21e0\u0001\u0000\u0000"+
		"\u0000\u04b2\u21ea\u0001\u0000\u0000\u0000\u04b4\u21ec\u0001\u0000\u0000"+
		"\u0000\u04b6\u21f7\u0001\u0000\u0000\u0000\u04b8\u2224\u0001\u0000\u0000"+
		"\u0000\u04ba\u2226\u0001\u0000\u0000\u0000\u04bc\u2231\u0001\u0000\u0000"+
		"\u0000\u04be\u2233\u0001\u0000\u0000\u0000\u04c0\u2237\u0001\u0000\u0000"+
		"\u0000\u04c2\u2240\u0001\u0000\u0000\u0000\u04c4\u2242\u0001\u0000\u0000"+
		"\u0000\u04c6\u2258\u0001\u0000\u0000\u0000\u04c8\u2260\u0001\u0000\u0000"+
		"\u0000\u04ca\u2264\u0001\u0000\u0000\u0000\u04cc\u2270\u0001\u0000\u0000"+
		"\u0000\u04ce\u2272\u0001\u0000\u0000\u0000\u04d0\u2281\u0001\u0000\u0000"+
		"\u0000\u04d2\u2283\u0001\u0000\u0000\u0000\u04d4\u2285\u0001\u0000\u0000"+
		"\u0000\u04d6\u228b\u0001\u0000\u0000\u0000\u04d8\u229c\u0001\u0000\u0000"+
		"\u0000\u04da\u229e\u0001\u0000\u0000\u0000\u04dc\u22cb\u0001\u0000\u0000"+
		"\u0000\u04de\u22d1\u0001\u0000\u0000\u0000\u04e0\u22d3\u0001\u0000\u0000"+
		"\u0000\u04e2\u22f3\u0001\u0000\u0000\u0000\u04e4\u22fd\u0001\u0000\u0000"+
		"\u0000\u04e6\u230d\u0001\u0000\u0000\u0000\u04e8\u230f\u0001\u0000\u0000"+
		"\u0000\u04ea\u232b\u0001\u0000\u0000\u0000\u04ec\u2332\u0001\u0000\u0000"+
		"\u0000\u04ee\u2335\u0001\u0000\u0000\u0000\u04f0\u2340\u0001\u0000\u0000"+
		"\u0000\u04f2\u2372\u0001\u0000\u0000\u0000\u04f4\u2374\u0001\u0000\u0000"+
		"\u0000\u04f6\u2383\u0001\u0000\u0000\u0000\u04f8\u2389\u0001\u0000\u0000"+
		"\u0000\u04fa\u238b\u0001\u0000\u0000\u0000\u04fc\u2396\u0001\u0000\u0000"+
		"\u0000\u04fe\u2398\u0001\u0000\u0000\u0000\u0500\u239d\u0001\u0000\u0000"+
		"\u0000\u0502\u23a3\u0001\u0000\u0000\u0000\u0504\u23a7\u0001\u0000\u0000"+
		"\u0000\u0506\u23ab\u0001\u0000\u0000\u0000\u0508\u23b2\u0001\u0000\u0000"+
		"\u0000\u050a\u23b4\u0001\u0000\u0000\u0000\u050c\u23b6\u0001\u0000\u0000"+
		"\u0000\u050e\u23b8\u0001\u0000\u0000\u0000\u0510\u23c9\u0001\u0000\u0000"+
		"\u0000\u0512\u23cb\u0001\u0000\u0000\u0000\u0514\u23de\u0001\u0000\u0000"+
		"\u0000\u0516\u23ea\u0001\u0000\u0000\u0000\u0518\u23f5\u0001\u0000\u0000"+
		"\u0000\u051a\u240c\u0001\u0000\u0000\u0000\u051c\u2413\u0001\u0000\u0000"+
		"\u0000\u051e\u2421\u0001\u0000\u0000\u0000\u0520\u2439\u0001\u0000\u0000"+
		"\u0000\u0522\u243b\u0001\u0000\u0000\u0000\u0524\u2443\u0001\u0000\u0000"+
		"\u0000\u0526\u244f\u0001\u0000\u0000\u0000\u0528\u2452\u0001\u0000\u0000"+
		"\u0000\u052a\u245c\u0001\u0000\u0000\u0000\u052c\u2465\u0001\u0000\u0000"+
		"\u0000\u052e\u246d\u0001\u0000\u0000\u0000\u0530\u247a\u0001\u0000\u0000"+
		"\u0000\u0532\u2483\u0001\u0000\u0000\u0000\u0534\u248c\u0001\u0000\u0000"+
		"\u0000\u0536\u2495\u0001\u0000\u0000\u0000\u0538\u249f\u0001\u0000\u0000"+
		"\u0000\u053a\u24a8\u0001\u0000\u0000\u0000\u053c\u24b3\u0001\u0000\u0000"+
		"\u0000\u053e\u24c4\u0001\u0000\u0000\u0000\u0540\u24cd\u0001\u0000\u0000"+
		"\u0000\u0542\u24d5\u0001\u0000\u0000\u0000\u0544\u24e1\u0001\u0000\u0000"+
		"\u0000\u0546\u24eb\u0001\u0000\u0000\u0000\u0548\u24f4\u0001\u0000\u0000"+
		"\u0000\u054a\u24fc\u0001\u0000\u0000\u0000\u054c\u2508\u0001\u0000\u0000"+
		"\u0000\u054e\u2514\u0001\u0000\u0000\u0000\u0550\u251b\u0001\u0000\u0000"+
		"\u0000\u0552\u2526\u0001\u0000\u0000\u0000\u0554\u252f\u0001\u0000\u0000"+
		"\u0000\u0556\u2538\u0001\u0000\u0000\u0000\u0558\u2541\u0001\u0000\u0000"+
		"\u0000\u055a\u254c\u0001\u0000\u0000\u0000\u055c\u2555\u0001\u0000\u0000"+
		"\u0000\u055e\u255e\u0001\u0000\u0000\u0000\u0560\u2567\u0001\u0000\u0000"+
		"\u0000\u0562\u256e\u0001\u0000\u0000\u0000\u0564\u2577\u0001\u0000\u0000"+
		"\u0000\u0566\u257e\u0001\u0000\u0000\u0000\u0568\u2589\u0001\u0000\u0000"+
		"\u0000\u056a\u2595\u0001\u0000\u0000\u0000\u056c\u25a0\u0001\u0000\u0000"+
		"\u0000\u056e\u25a9\u0001\u0000\u0000\u0000\u0570\u25b4\u0001\u0000\u0000"+
		"\u0000\u0572\u25bd\u0001\u0000\u0000\u0000\u0574\u25cc\u0001\u0000\u0000"+
		"\u0000\u0576\u25d4\u0001\u0000\u0000\u0000\u0578\u25d6\u0001\u0000\u0000"+
		"\u0000\u057a\u25d9\u0001\u0000\u0000\u0000\u057c\u25e2\u0001\u0000\u0000"+
		"\u0000\u057e\u25ea\u0001\u0000\u0000\u0000\u0580\u25f2\u0001\u0000\u0000"+
		"\u0000\u0582\u25f6\u0001\u0000\u0000\u0000\u0584\u2600\u0001\u0000\u0000"+
		"\u0000\u0586\u2621\u0001\u0000\u0000\u0000\u0588\u2623\u0001\u0000\u0000"+
		"\u0000\u058a\u262b\u0001\u0000\u0000\u0000\u058c\u262d\u0001\u0000\u0000"+
		"\u0000\u058e\u262f\u0001\u0000\u0000\u0000\u0590\u2631\u0001\u0000\u0000"+
		"\u0000\u0592\u2649\u0001\u0000\u0000\u0000\u0594\u264b\u0001\u0000\u0000"+
		"\u0000\u0596\u2650\u0001\u0000\u0000\u0000\u0598\u2663\u0001\u0000\u0000"+
		"\u0000\u059a\u266a\u0001\u0000\u0000\u0000\u059c\u2674\u0001\u0000\u0000"+
		"\u0000\u059e\u2684\u0001\u0000\u0000\u0000\u05a0\u2686\u0001\u0000\u0000"+
		"\u0000\u05a2\u268b\u0001\u0000\u0000\u0000\u05a4\u269c\u0001\u0000\u0000"+
		"\u0000\u05a6\u26a1\u0001\u0000\u0000\u0000\u05a8\u26aa\u0001\u0000\u0000"+
		"\u0000\u05aa\u26ac\u0001\u0000\u0000\u0000\u05ac\u26b6\u0001\u0000\u0000"+
		"\u0000\u05ae\u26c3\u0001\u0000\u0000\u0000\u05b0\u2710\u0001\u0000\u0000"+
		"\u0000\u05b2\u2712\u0001\u0000\u0000\u0000\u05b4\u2725\u0001\u0000\u0000"+
		"\u0000\u05b6\u2727\u0001\u0000\u0000\u0000\u05b8\u273a\u0001\u0000\u0000"+
		"\u0000\u05ba\u273c\u0001\u0000\u0000\u0000\u05bc\u2746\u0001\u0000\u0000"+
		"\u0000\u05be\u2751\u0001\u0000\u0000\u0000\u05c0\u275a\u0001\u0000\u0000"+
		"\u0000\u05c2\u2763\u0001\u0000\u0000\u0000\u05c4\u277e\u0001\u0000\u0000"+
		"\u0000\u05c6\u2780\u0001\u0000\u0000\u0000\u05c8\u278c\u0001\u0000\u0000"+
		"\u0000\u05ca\u27b0\u0001\u0000\u0000\u0000\u05cc\u27b2\u0001\u0000\u0000"+
		"\u0000\u05ce\u27b9\u0001\u0000\u0000\u0000\u05d0\u27bf\u0001\u0000\u0000"+
		"\u0000\u05d2\u27c4\u0001\u0000\u0000\u0000\u05d4\u27db\u0001\u0000\u0000"+
		"\u0000\u05d6\u27dd\u0001\u0000\u0000\u0000\u05d8\u27e5\u0001\u0000\u0000"+
		"\u0000\u05da\u27eb\u0001\u0000\u0000\u0000\u05dc\u27ef\u0001\u0000\u0000"+
		"\u0000\u05de\u27f1\u0001\u0000\u0000\u0000\u05e0\u27f3\u0001\u0000\u0000"+
		"\u0000\u05e2\u2800\u0001\u0000\u0000\u0000\u05e4\u2808\u0001\u0000\u0000"+
		"\u0000\u05e6\u280b\u0001\u0000\u0000\u0000\u05e8\u2813\u0001\u0000\u0000"+
		"\u0000\u05ea\u2819\u0001\u0000\u0000\u0000\u05ec\u281d\u0001\u0000\u0000"+
		"\u0000\u05ee\u281f\u0001\u0000\u0000\u0000\u05f0\u2822\u0001\u0000\u0000"+
		"\u0000\u05f2\u2838\u0001\u0000\u0000\u0000\u05f4\u283a\u0001\u0000\u0000"+
		"\u0000\u05f6\u2854\u0001\u0000\u0000\u0000\u05f8\u066f\u0003J%\u0000\u05f9"+
		"\u066f\u0003(\u0014\u0000\u05fa\u066f\u00038\u001c\u0000\u05fb\u066f\u0003"+
		"D\"\u0000\u05fc\u066f\u0003\u02f2\u0179\u0000\u05fd\u066f\u0003\u0308"+
		"\u0184\u0000\u05fe\u066f\u0003\u030e\u0187\u0000\u05ff\u066f\u0003\u02d6"+
		"\u016b\u0000\u0600\u066f\u0003\u0306\u0183\u0000\u0601\u066f\u0003\u030a"+
		"\u0185\u0000\u0602\u066f\u0003\u0312\u0189\u0000\u0603\u066f\u0003\u0002"+
		"\u0001\u0000\u0604\u066f\u0003\u0004\u0002\u0000\u0605\u066f\u0003\f\u0006"+
		"\u0000\u0606\u066f\u0003\u000e\u0007\u0000\u0607\u066f\u0003\u0006\u0003"+
		"\u0000\u0608\u066f\u0003\u0018\f\u0000\u0609\u066f\u0003\u0010\b\u0000"+
		"\u060a\u066f\u0003\u001a\r\u0000\u060b\u066f\u0003\n\u0005\u0000\u060c"+
		"\u066f\u0003\b\u0004\u0000\u060d\u066f\u0003\u0012\t\u0000\u060e\u066f"+
		"\u0003\u0014\n\u0000\u060f\u066f\u0003\u02b4\u015a\u0000\u0610\u066f\u0003"+
		"\u02b6\u015b\u0000\u0611\u066f\u0003\u02ba\u015d\u0000\u0612\u066f\u0003"+
		"\u02c2\u0161\u0000\u0613\u066f\u0003\u02c4\u0162\u0000\u0614\u066f\u0003"+
		"\u02ca\u0165\u0000\u0615\u066f\u0003\u02cc\u0166\u0000\u0616\u066f\u0003"+
		"\u02ce\u0167\u0000\u0617\u066f\u0003\u05c6\u02e3\u0000\u0618\u066f\u0003"+
		"\u05c8\u02e4\u0000\u0619\u066f\u0003\u05d0\u02e8\u0000\u061a\u066f\u0003"+
		"\u05f4\u02fa\u0000\u061b\u066f\u0003\u03c8\u01e4\u0000\u061c\u066f\u0003"+
		"\u0442\u0221\u0000\u061d\u066f\u0003\u038e\u01c7\u0000\u061e\u066f\u0003"+
		"\u03f8\u01fc\u0000\u061f\u066f\u0003\u03e0\u01f0\u0000\u0620\u066f\u0003"+
		"\u0590\u02c8\u0000\u0621\u066f\u0003\u041c\u020e\u0000\u0622\u066f\u0003"+
		"\u0424\u0212\u0000\u0623\u066f\u0003\u043c\u021e\u0000\u0624\u066f\u0003"+
		"\u0450\u0228\u0000\u0625\u066f\u0003\u044c\u0226\u0000\u0626\u066f\u0003"+
		"\u047a\u023d\u0000\u0627\u066f\u0003\u0484\u0242\u0000\u0628\u066f\u0003"+
		"\u02fa\u017d\u0000\u0629\u066f\u0003\u04c4\u0262\u0000\u062a\u066f\u0003"+
		"\u04e2\u0271\u0000\u062b\u066f\u0003\u0512\u0289\u0000\u062c\u066f\u0003"+
		"\u04f2\u0279\u0000\u062d\u066f\u0003\u02fc\u017e\u0000\u062e\u066f\u0003"+
		"\u050e\u0287\u0000\u062f\u066f\u0003\u04a4\u0252\u0000\u0630\u066f\u0003"+
		"\u04e8\u0274\u0000\u0631\u066f\u0003\u05a2\u02d1\u0000\u0632\u066f\u0003"+
		"\u05bc\u02de\u0000\u0633\u066f\u0003\u05be\u02df\u0000\u0634\u066f\u0003"+
		"\u051e\u028f\u0000\u0635\u066f\u0003\u056c\u02b6\u0000\u0636\u066f\u0003"+
		"\u051a\u028d\u0000\u0637\u066f\u0003\u02fe\u017f\u0000\u0638\u066f\u0003"+
		"\u053e\u029f\u0000\u0639\u066f\u0003\u0552\u02a9\u0000\u063a\u066f\u0003"+
		"\u0558\u02ac\u0000\u063b\u066f\u0003\u055e\u02af\u0000\u063c\u066f\u0003"+
		"\u056a\u02b5\u0000\u063d\u066f\u0003\u0570\u02b8\u0000\u063e\u066f\u0003"+
		"\u055a\u02ad\u0000\u063f\u066f\u0003\u0534\u029a\u0000\u0640\u066f\u0003"+
		"\u05f0\u02f8\u0000\u0641\u066f\u0003\u057c\u02be\u0000\u0642\u066f\u0003"+
		"\u0430\u0218\u0000\u0643\u066f\u0003\u057e\u02bf\u0000\u0644\u066f\u0003"+
		"\u05d2\u02e9\u0000\u0645\u066f\u0003\u05e0\u02f0\u0000\u0646\u066f\u0003"+
		"\u05ee\u02f7\u0000\u0647\u066f\u0003\u0518\u028c\u0000\u0648\u066f\u0003"+
		"\u045e\u022f\u0000\u0649\u066f\u0003\u0564\u02b2\u0000\u064a\u066f\u0003"+
		"\u001c\u000e\u0000\u064b\u066f\u0003\u00ceg\u0000\u064c\u066f\u0003\u04da"+
		"\u026d\u0000\u064d\u066f\u0003\u0420\u0210\u0000\u064e\u066f\u0003\u0542"+
		"\u02a1\u0000\u064f\u066f\u0003\u04a2\u0251\u0000\u0650\u066f\u0003\u03dc"+
		"\u01ee\u0000\u0651\u066f\u0003\u0532\u0299\u0000\u0652\u066f\u0003\u0466"+
		"\u0233\u0000\u0653\u066f\u0003\u046a\u0235\u0000\u0654\u066f\u0003\u0468"+
		"\u0234\u0000\u0655\u066f\u0003\u04ae\u0257\u0000\u0656\u066f\u0003\u0402"+
		"\u0201\u0000\u0657\u066f\u0003\u0538\u029c\u0000\u0658\u066f\u0003\u0566"+
		"\u02b3\u0000\u0659\u066f\u0003\u0404\u0202\u0000\u065a\u066f\u0003\u03d8"+
		"\u01ec\u0000\u065b\u066f\u0003\u055c\u02ae\u0000\u065c\u066f\u0003\u0428"+
		"\u0214\u0000\u065d\u066f\u0003\u042a\u0215\u0000\u065e\u066f\u0003\u047e"+
		"\u023f\u0000\u065f\u066f\u0003\u057a\u02bd\u0000\u0660\u066f\u0003\u05c0"+
		"\u02e0\u0000\u0661\u066f\u0003\u05ba\u02dd\u0000\u0662\u066f\u0003\u03da"+
		"\u01ed\u0000\u0663\u066f\u0003\u0300\u0180\u0000\u0664\u066f\u0003\u049c"+
		"\u024e\u0000\u0665\u066f\u0003\u052e\u0297\u0000\u0666\u066f\u0003\u044a"+
		"\u0225\u0000\u0667\u066f\u0003\"\u0011\u0000\u0668\u066f\u0003\u046e\u0237"+
		"\u0000\u0669\u066f\u0003\u04e4\u0272\u0000\u066a\u066f\u0003\u0554\u02aa"+
		"\u0000\u066b\u066f\u0003\u0494\u024a\u0000\u066c\u066f\u0003\u05c2\u02e1"+
		"\u0000\u066d\u066f\u0003\u05f2\u02f9\u0000\u066e\u05f8\u0001\u0000\u0000"+
		"\u0000\u066e\u05f9\u0001\u0000\u0000\u0000\u066e\u05fa\u0001\u0000\u0000"+
		"\u0000\u066e\u05fb\u0001\u0000\u0000\u0000\u066e\u05fc\u0001\u0000\u0000"+
		"\u0000\u066e\u05fd\u0001\u0000\u0000\u0000\u066e\u05fe\u0001\u0000\u0000"+
		"\u0000\u066e\u05ff\u0001\u0000\u0000\u0000\u066e\u0600\u0001\u0000\u0000"+
		"\u0000\u066e\u0601\u0001\u0000\u0000\u0000\u066e\u0602\u0001\u0000\u0000"+
		"\u0000\u066e\u0603\u0001\u0000\u0000\u0000\u066e\u0604\u0001\u0000\u0000"+
		"\u0000\u066e\u0605\u0001\u0000\u0000\u0000\u066e\u0606\u0001\u0000\u0000"+
		"\u0000\u066e\u0607\u0001\u0000\u0000\u0000\u066e\u0608\u0001\u0000\u0000"+
		"\u0000\u066e\u0609\u0001\u0000\u0000\u0000\u066e\u060a\u0001\u0000\u0000"+
		"\u0000\u066e\u060b\u0001\u0000\u0000\u0000\u066e\u060c\u0001\u0000\u0000"+
		"\u0000\u066e\u060d\u0001\u0000\u0000\u0000\u066e\u060e\u0001\u0000\u0000"+
		"\u0000\u066e\u060f\u0001\u0000\u0000\u0000\u066e\u0610\u0001\u0000\u0000"+
		"\u0000\u066e\u0611\u0001\u0000\u0000\u0000\u066e\u0612\u0001\u0000\u0000"+
		"\u0000\u066e\u0613\u0001\u0000\u0000\u0000\u066e\u0614\u0001\u0000\u0000"+
		"\u0000\u066e\u0615\u0001\u0000\u0000\u0000\u066e\u0616\u0001\u0000\u0000"+
		"\u0000\u066e\u0617\u0001\u0000\u0000\u0000\u066e\u0618\u0001\u0000\u0000"+
		"\u0000\u066e\u0619\u0001\u0000\u0000\u0000\u066e\u061a\u0001\u0000\u0000"+
		"\u0000\u066e\u061b\u0001\u0000\u0000\u0000\u066e\u061c\u0001\u0000\u0000"+
		"\u0000\u066e\u061d\u0001\u0000\u0000\u0000\u066e\u061e\u0001\u0000\u0000"+
		"\u0000\u066e\u061f\u0001\u0000\u0000\u0000\u066e\u0620\u0001\u0000\u0000"+
		"\u0000\u066e\u0621\u0001\u0000\u0000\u0000\u066e\u0622\u0001\u0000\u0000"+
		"\u0000\u066e\u0623\u0001\u0000\u0000\u0000\u066e\u0624\u0001\u0000\u0000"+
		"\u0000\u066e\u0625\u0001\u0000\u0000\u0000\u066e\u0626\u0001\u0000\u0000"+
		"\u0000\u066e\u0627\u0001\u0000\u0000\u0000\u066e\u0628\u0001\u0000\u0000"+
		"\u0000\u066e\u0629\u0001\u0000\u0000\u0000\u066e\u062a\u0001\u0000\u0000"+
		"\u0000\u066e\u062b\u0001\u0000\u0000\u0000\u066e\u062c\u0001\u0000\u0000"+
		"\u0000\u066e\u062d\u0001\u0000\u0000\u0000\u066e\u062e\u0001\u0000\u0000"+
		"\u0000\u066e\u062f\u0001\u0000\u0000\u0000\u066e\u0630\u0001\u0000\u0000"+
		"\u0000\u066e\u0631\u0001\u0000\u0000\u0000\u066e\u0632\u0001\u0000\u0000"+
		"\u0000\u066e\u0633\u0001\u0000\u0000\u0000\u066e\u0634\u0001\u0000\u0000"+
		"\u0000\u066e\u0635\u0001\u0000\u0000\u0000\u066e\u0636\u0001\u0000\u0000"+
		"\u0000\u066e\u0637\u0001\u0000\u0000\u0000\u066e\u0638\u0001\u0000\u0000"+
		"\u0000\u066e\u0639\u0001\u0000\u0000\u0000\u066e\u063a\u0001\u0000\u0000"+
		"\u0000\u066e\u063b\u0001\u0000\u0000\u0000\u066e\u063c\u0001\u0000\u0000"+
		"\u0000\u066e\u063d\u0001\u0000\u0000\u0000\u066e\u063e\u0001\u0000\u0000"+
		"\u0000\u066e\u063f\u0001\u0000\u0000\u0000\u066e\u0640\u0001\u0000\u0000"+
		"\u0000\u066e\u0641\u0001\u0000\u0000\u0000\u066e\u0642\u0001\u0000\u0000"+
		"\u0000\u066e\u0643\u0001\u0000\u0000\u0000\u066e\u0644\u0001\u0000\u0000"+
		"\u0000\u066e\u0645\u0001\u0000\u0000\u0000\u066e\u0646\u0001\u0000\u0000"+
		"\u0000\u066e\u0647\u0001\u0000\u0000\u0000\u066e\u0648\u0001\u0000\u0000"+
		"\u0000\u066e\u0649\u0001\u0000\u0000\u0000\u066e\u064a\u0001\u0000\u0000"+
		"\u0000\u066e\u064b\u0001\u0000\u0000\u0000\u066e\u064c\u0001\u0000\u0000"+
		"\u0000\u066e\u064d\u0001\u0000\u0000\u0000\u066e\u064e\u0001\u0000\u0000"+
		"\u0000\u066e\u064f\u0001\u0000\u0000\u0000\u066e\u0650\u0001\u0000\u0000"+
		"\u0000\u066e\u0651\u0001\u0000\u0000\u0000\u066e\u0652\u0001\u0000\u0000"+
		"\u0000\u066e\u0653\u0001\u0000\u0000\u0000\u066e\u0654\u0001\u0000\u0000"+
		"\u0000\u066e\u0655\u0001\u0000\u0000\u0000\u066e\u0656\u0001\u0000\u0000"+
		"\u0000\u066e\u0657\u0001\u0000\u0000\u0000\u066e\u0658\u0001\u0000\u0000"+
		"\u0000\u066e\u0659\u0001\u0000\u0000\u0000\u066e\u065a\u0001\u0000\u0000"+
		"\u0000\u066e\u065b\u0001\u0000\u0000\u0000\u066e\u065c\u0001\u0000\u0000"+
		"\u0000\u066e\u065d\u0001\u0000\u0000\u0000\u066e\u065e\u0001\u0000\u0000"+
		"\u0000\u066e\u065f\u0001\u0000\u0000\u0000\u066e\u0660\u0001\u0000\u0000"+
		"\u0000\u066e\u0661\u0001\u0000\u0000\u0000\u066e\u0662\u0001\u0000\u0000"+
		"\u0000\u066e\u0663\u0001\u0000\u0000\u0000\u066e\u0664\u0001\u0000\u0000"+
		"\u0000\u066e\u0665\u0001\u0000\u0000\u0000\u066e\u0666\u0001\u0000\u0000"+
		"\u0000\u066e\u0667\u0001\u0000\u0000\u0000\u066e\u0668\u0001\u0000\u0000"+
		"\u0000\u066e\u0669\u0001\u0000\u0000\u0000\u066e\u066a\u0001\u0000\u0000"+
		"\u0000\u066e\u066b\u0001\u0000\u0000\u0000\u066e\u066c\u0001\u0000\u0000"+
		"\u0000\u066e\u066d\u0001\u0000\u0000\u0000\u066f\u0671\u0001\u0000\u0000"+
		"\u0000\u0670\u0672\u0005-\u0000\u0000\u0671\u0670\u0001\u0000\u0000\u0000"+
		"\u0671\u0672\u0001\u0000\u0000\u0000\u0672\u0673\u0001\u0000\u0000\u0000"+
		"\u0673\u0674\u0005\u0000\u0000\u0001\u0674\u0001\u0001\u0000\u0000\u0000"+
		"\u0675\u0679\u0005\\\u0000\u0000\u0676\u0677\u0005\u014b\u0000\u0000\u0677"+
		"\u0678\u0005\u010b\u0000\u0000\u0678\u067a\u0005\u0081\u0000\u0000\u0679"+
		"\u0676\u0001\u0000\u0000\u0000\u0679\u067a\u0001\u0000\u0000\u0000\u067a"+
		"\u067b\u0001\u0000\u0000\u0000\u067b\u067c\u0005\u0107\u0000\u0000\u067c"+
		"\u0682\u0003\u0294\u014a\u0000\u067d\u067e\u0005\\\u0000\u0000\u067e\u067f"+
		"\u0005\u0107\u0000\u0000\u067f\u0680\u0005\u0210\u0000\u0000\u0680\u0682"+
		"\u0005\u0254\u0000\u0000\u0681\u0675\u0001\u0000\u0000\u0000\u0681\u067d"+
		"\u0001\u0000\u0000\u0000\u0682\u0003\u0001\u0000\u0000\u0000\u0683\u0685"+
		"\u0005\u009d\u0000\u0000\u0684\u0686\u0007\u0000\u0000\u0000\u0685\u0684"+
		"\u0001\u0000\u0000\u0000\u0685\u0686\u0001\u0000\u0000\u0000\u0686\u0688"+
		"\u0001\u0000\u0000\u0000\u0687\u0689\u0003\u0294\u014a\u0000\u0688\u0687"+
		"\u0001\u0000\u0000\u0000\u0688\u0689\u0001\u0000\u0000\u0000\u0689\u0005"+
		"\u0001\u0000\u0000\u0000\u068a\u068c\u0005\u009e\u0000\u0000\u068b\u068d"+
		"\u0007\u0000\u0000\u0000\u068c\u068b\u0001\u0000\u0000\u0000\u068c\u068d"+
		"\u0001\u0000\u0000\u0000\u068d\u0693\u0001\u0000\u0000\u0000\u068e\u0690"+
		"\u0005\u0088\u0000\u0000\u068f\u0691\u0005\u00ff\u0000\u0000\u0690\u068f"+
		"\u0001\u0000\u0000\u0000\u0690\u0691\u0001\u0000\u0000\u0000\u0691\u0692"+
		"\u0001\u0000\u0000\u0000\u0692\u0694\u0005\u01d2\u0000\u0000\u0693\u068e"+
		"\u0001\u0000\u0000\u0000\u0693\u0694\u0001\u0000\u0000\u0000\u0694\u0007"+
		"\u0001\u0000\u0000\u0000\u0695\u0696\u0005\u00a0\u0000\u0000\u0696\u0697"+
		"\u0003\u016a\u00b5\u0000\u0697\t\u0001\u0000\u0000\u0000\u0698\u069a\u0005"+
		"\u01bf\u0000\u0000\u0699\u069b\u0007\u0000\u0000\u0000\u069a\u0699\u0001"+
		"\u0000\u0000\u0000\u069a\u069b\u0001\u0000\u0000\u0000\u069b\u06a1\u0001"+
		"\u0000\u0000\u0000\u069c\u069e\u0005\u0088\u0000\u0000\u069d\u069f\u0005"+
		"\u00ff\u0000\u0000\u069e\u069d\u0001\u0000\u0000\u0000\u069e\u069f\u0001"+
		"\u0000\u0000\u0000\u069f\u06a0\u0001\u0000\u0000\u0000\u06a0\u06a2\u0005"+
		"\u01d2\u0000\u0000\u06a1\u069c\u0001\u0000\u0000\u0000\u06a1\u06a2\u0001"+
		"\u0000\u0000\u0000\u06a2\u000b\u0001\u0000\u0000\u0000\u06a3\u06a4\u0005"+
		"\u0106\u0000\u0000\u06a4\u06a6\u0005\u0107\u0000\u0000\u06a5\u06a7\u0003"+
		"\u0294\u014a\u0000\u06a6\u06a5\u0001\u0000\u0000\u0000\u06a6\u06a7\u0001"+
		"\u0000\u0000\u0000\u06a7\r\u0001\u0000\u0000\u0000\u06a8\u06aa\u0005\u00ec"+
		"\u0000\u0000\u06a9\u06ab\u0007\u0000\u0000\u0000\u06aa\u06a9\u0001\u0000"+
		"\u0000\u0000\u06aa\u06ab\u0001\u0000\u0000\u0000\u06ab\u06b1\u0001\u0000"+
		"\u0000\u0000\u06ac\u06ae\u0005\u0088\u0000\u0000\u06ad\u06af\u0005\u00ff"+
		"\u0000\u0000\u06ae\u06ad\u0001\u0000\u0000\u0000\u06ae\u06af\u0001\u0000"+
		"\u0000\u0000\u06af\u06b0\u0001\u0000\u0000\u0000\u06b0\u06b2\u0005\u01d2"+
		"\u0000\u0000\u06b1\u06ac\u0001\u0000\u0000\u0000\u06b1\u06b2\u0001\u0000"+
		"\u0000\u0000\u06b2\u000f\u0001\u0000\u0000\u0000\u06b3\u06b5\u0005\u009f"+
		"\u0000\u0000\u06b4\u06b6\u0007\u0000\u0000\u0000\u06b5\u06b4\u0001\u0000"+
		"\u0000\u0000\u06b5\u06b6\u0001\u0000\u0000\u0000\u06b6\u06bc\u0001\u0000"+
		"\u0000\u0000\u06b7\u06b9\u0005\u0088\u0000\u0000\u06b8\u06ba\u0005\u00ff"+
		"\u0000\u0000\u06b9\u06b8\u0001\u0000\u0000\u0000\u06b9\u06ba\u0001\u0000"+
		"\u0000\u0000\u06ba\u06bb\u0001\u0000\u0000\u0000\u06bb\u06bd\u0005\u01d2"+
		"\u0000\u0000\u06bc\u06b7\u0001\u0000\u0000\u0000\u06bc\u06bd\u0001\u0000"+
		"\u0000\u0000\u06bd\u0011\u0001\u0000\u0000\u0000\u06be\u06c0\u0005\u0224"+
		"\u0000\u0000\u06bf\u06c1\u0005\u00a0\u0000\u0000\u06c0\u06bf\u0001\u0000"+
		"\u0000\u0000\u06c0\u06c1\u0001\u0000\u0000\u0000\u06c1\u06c2\u0001\u0000"+
		"\u0000\u0000\u06c2\u06c3\u0003\u016a\u00b5\u0000\u06c3\u0013\u0001\u0000"+
		"\u0000\u0000\u06c4\u06c6\u0005\u009f\u0000\u0000\u06c5\u06c7\u0007\u0000"+
		"\u0000\u0000\u06c6\u06c5\u0001\u0000\u0000\u0000\u06c6\u06c7\u0001\u0000"+
		"\u0000\u0000\u06c7\u06c8\u0001\u0000\u0000\u0000\u06c8\u06ca\u0005\u0087"+
		"\u0000\u0000\u06c9\u06cb\u0005\u00a0\u0000\u0000\u06ca\u06c9\u0001\u0000"+
		"\u0000\u0000\u06ca\u06cb\u0001\u0000\u0000\u0000\u06cb\u06cc\u0001\u0000"+
		"\u0000\u0000\u06cc\u06cd\u0003\u016a\u00b5\u0000\u06cd\u0015\u0001\u0000"+
		"\u0000\u0000\u06ce\u06cf\u0005\u0212\u0000\u0000\u06cf\u06d0\u0005\u0107"+
		"\u0000\u0000\u06d0\u06d1\u0005\u0254\u0000\u0000\u06d1\u0017\u0001\u0000"+
		"\u0000\u0000\u06d2\u06d3\u0005\u009e\u0000\u0000\u06d3\u06d4\u0005\u0217"+
		"\u0000\u0000\u06d4\u06d5\u0005\u0254\u0000\u0000\u06d5\u0019\u0001\u0000"+
		"\u0000\u0000\u06d6\u06d7\u0005\u009f\u0000\u0000\u06d7\u06d8\u0005\u0217"+
		"\u0000\u0000\u06d8\u06d9\u0005\u0254\u0000\u0000\u06d9\u001b\u0001\u0000"+
		"\u0000\u0000\u06da\u06db\u0005\\\u0000\u0000\u06db\u06dc\u0005\u0111\u0000"+
		"\u0000\u06dc\u06dd\u0003 \u0010\u0000\u06dd\u06de\u0003\u001e\u000f\u0000"+
		"\u06de\u001d\u0001\u0000\u0000\u0000\u06df\u06e0\u0007\u0001\u0000\u0000"+
		"\u06e0\u001f\u0001\u0000\u0000\u0000\u06e1\u06e4\u0005\u0092\u0000\u0000"+
		"\u06e2\u06e4\u0003p8\u0000\u06e3\u06e1\u0001\u0000\u0000\u0000\u06e3\u06e2"+
		"\u0001\u0000\u0000\u0000\u06e4!\u0001\u0000\u0000\u0000\u06e5\u06e6\u0005"+
		"\u01d3\u0000\u0000\u06e6#\u0001\u0000\u0000\u0000\u06e7\u06e9\u0005\u0223"+
		"\u0000\u0000\u06e8\u06ea\u0005]\u0000\u0000\u06e9\u06e8\u0001\u0000\u0000"+
		"\u0000\u06e9\u06ea\u0001\u0000\u0000\u0000\u06ea\u06eb\u0001\u0000\u0000"+
		"\u0000\u06eb\u06f0\u0003\u02a4\u0152\u0000\u06ec\u06ed\u0005\u0091\u0000"+
		"\u0000\u06ed\u06ee\u0003&\u0013\u0000\u06ee\u06ef\u0005\u01ff\u0000\u0000"+
		"\u06ef\u06f1\u0001\u0000\u0000\u0000\u06f0\u06ec\u0001\u0000\u0000\u0000"+
		"\u06f0\u06f1\u0001\u0000\u0000\u0000\u06f1\u06f3\u0001\u0000\u0000\u0000"+
		"\u06f2\u06f4\u0005\u01ae\u0000\u0000\u06f3\u06f2\u0001\u0000\u0000\u0000"+
		"\u06f3\u06f4\u0001\u0000\u0000\u0000\u06f4%\u0001\u0000\u0000\u0000\u06f5"+
		"\u06f6\u0005\u01c1\u0000\u0000\u06f6\u0706\u0005\u01a3\u0000\u0000\u06f7"+
		"\u06f8\u0005\u00f7\u0000\u0000\u06f8\u0706\u0005\u01a3\u0000\u0000\u06f9"+
		"\u06fa\u0005\u00f7\u0000\u0000\u06fa\u0706\u0005\u01f0\u0000\u0000\u06fb"+
		"\u06fc\u0005\u01a3\u0000\u0000\u06fc\u06fd\u0005R\u0000\u0000\u06fd\u0706"+
		"\u0005\u01f0\u0000\u0000\u06fe\u0706\u0005\u01a3\u0000\u0000\u06ff\u0700"+
		"\u0005\u01a3\u0000\u0000\u0700\u0701\u0005\u00f7\u0000\u0000\u0701\u0706"+
		"\u0005\u01f0\u0000\u0000\u0702\u0706\u0005\u01f0\u0000\u0000\u0703\u0704"+
		"\u0005\u01c1\u0000\u0000\u0704\u0706\u0005\u01f0\u0000\u0000\u0705\u06f5"+
		"\u0001\u0000\u0000\u0000\u0705\u06f7\u0001\u0000\u0000\u0000\u0705\u06f9"+
		"\u0001\u0000\u0000\u0000\u0705\u06fb\u0001\u0000\u0000\u0000\u0705\u06fe"+
		"\u0001\u0000\u0000\u0000\u0705\u06ff\u0001\u0000\u0000\u0000\u0705\u0702"+
		"\u0001\u0000\u0000\u0000\u0705\u0703\u0001\u0000\u0000\u0000\u0706\'\u0001"+
		"\u0000\u0000\u0000\u0707\u0709\u0003T*\u0000\u0708\u0707\u0001\u0000\u0000"+
		"\u0000\u0708\u0709\u0001\u0000\u0000\u0000\u0709\u070a\u0001\u0000\u0000"+
		"\u0000\u070a\u070b\u0005Q\u0000\u0000\u070b\u070c\u0005k\u0000\u0000\u070c"+
		"\u070d\u0003*\u0015\u0000\u070d\u070f\u0003,\u0016\u0000\u070e\u0710\u0003"+
		"4\u001a\u0000\u070f\u070e\u0001\u0000\u0000\u0000\u070f\u0710\u0001\u0000"+
		"\u0000\u0000\u0710\u0712\u0001\u0000\u0000\u0000\u0711\u0713\u0003B!\u0000"+
		"\u0712\u0711\u0001\u0000\u0000\u0000\u0712\u0713\u0001\u0000\u0000\u0000"+
		"\u0713)\u0001\u0000\u0000\u0000\u0714\u071a\u0003\u0168\u00b4\u0000\u0715"+
		"\u0716\u0003\u0168\u00b4\u0000\u0716\u0717\u0005\u0081\u0000\u0000\u0717"+
		"\u0718\u0003\u016a\u00b5\u0000\u0718\u071a\u0001\u0000\u0000\u0000\u0719"+
		"\u0714\u0001\u0000\u0000\u0000\u0719\u0715\u0001\u0000\u0000\u0000\u071a"+
		"+\u0001\u0000\u0000\u0000\u071b\u0731\u0003J%\u0000\u071c\u071d\u0005"+
		"\u01bd\u0000\u0000\u071d\u071e\u0003.\u0017\u0000\u071e\u071f\u0005\u00d8"+
		"\u0000\u0000\u071f\u0720\u0003J%\u0000\u0720\u0731\u0001\u0000\u0000\u0000"+
		"\u0721\u0722\u0005 \u0000\u0000\u0722\u0723\u00030\u0018\u0000\u0723\u0724"+
		"\u0005!\u0000\u0000\u0724\u0725\u0003J%\u0000\u0725\u0731\u0001\u0000"+
		"\u0000\u0000\u0726\u0727\u0005 \u0000\u0000\u0727\u0728\u00030\u0018\u0000"+
		"\u0728\u0729\u0005!\u0000\u0000\u0729\u072a\u0005\u01bd\u0000\u0000\u072a"+
		"\u072b\u0003.\u0017\u0000\u072b\u072c\u0005\u00d8\u0000\u0000\u072c\u072d"+
		"\u0003J%\u0000\u072d\u0731\u0001\u0000\u0000\u0000\u072e\u072f\u0005\u00b5"+
		"\u0000\u0000\u072f\u0731\u0005l\u0000\u0000\u0730\u071b\u0001\u0000\u0000"+
		"\u0000\u0730\u071c\u0001\u0000\u0000\u0000\u0730\u0721\u0001\u0000\u0000"+
		"\u0000\u0730\u0726\u0001\u0000\u0000\u0000\u0730\u072e\u0001\u0000\u0000"+
		"\u0000\u0731-\u0001\u0000\u0000\u0000\u0732\u0733\u0007\u0002\u0000\u0000"+
		"\u0733/\u0001\u0000\u0000\u0000\u0734\u0735\u0006\u0018\uffff\uffff\u0000"+
		"\u0735\u0736\u00032\u0019\u0000\u0736\u073c\u0001\u0000\u0000\u0000\u0737"+
		"\u0738\n\u0001\u0000\u0000\u0738\u0739\u0005&\u0000\u0000\u0739\u073b"+
		"\u00032\u0019\u0000\u073a\u0737\u0001\u0000\u0000\u0000\u073b\u073e\u0001"+
		"\u0000\u0000\u0000\u073c\u073a\u0001\u0000\u0000\u0000\u073c\u073d\u0001"+
		"\u0000\u0000\u0000\u073d1\u0001\u0000\u0000\u0000\u073e\u073c\u0001\u0000"+
		"\u0000\u0000\u073f\u0740\u0003\u016a\u00b5\u0000\u0740\u0741\u0003\u0122"+
		"\u0091\u0000\u07413\u0001\u0000\u0000\u0000\u0742\u0743\u0005\u0082\u0000"+
		"\u0000\u0743\u0744\u0005\u0245\u0000\u0000\u0744\u0745\u0005d\u0000\u0000"+
		"\u0745\u0746\u0005R\u0000\u0000\u0746\u074b\u00036\u001b\u0000\u0747\u0748"+
		"\u0005&\u0000\u0000\u0748\u074a\u00036\u001b\u0000\u0749\u0747\u0001\u0000"+
		"\u0000\u0000\u074a\u074d\u0001\u0000\u0000\u0000\u074b\u0749\u0001\u0000"+
		"\u0000\u0000\u074b\u074c\u0001\u0000\u0000\u0000\u074c\u0754\u0001\u0000"+
		"\u0000\u0000\u074d\u074b\u0001\u0000\u0000\u0000\u074e\u074f\u0005\u0082"+
		"\u0000\u0000\u074f\u0750\u0005\u0245\u0000\u0000\u0750\u0751\u0005d\u0000"+
		"\u0000\u0751\u0752\u0005R\u0000\u0000\u0752\u0754\u0005\u0135\u0000\u0000"+
		"\u0753\u0742\u0001\u0000\u0000\u0000\u0753\u074e\u0001\u0000\u0000\u0000"+
		"\u07545\u0001\u0000\u0000\u0000\u0755\u0756\u0003>\u001f\u0000\u0756\u0757"+
		"\u0005\u0018\u0000\u0000\u0757\u0758\u0003\u011a\u008d\u0000\u0758\u0761"+
		"\u0001\u0000\u0000\u0000\u0759\u075a\u0003>\u001f\u0000\u075a\u075b\u0005"+
		"\u0018\u0000\u0000\u075b\u075c\u0005l\u0000\u0000\u075c\u075d\u0005 \u0000"+
		"\u0000\u075d\u075e\u0003\u00fe\u007f\u0000\u075e\u075f\u0005!\u0000\u0000"+
		"\u075f\u0761\u0001\u0000\u0000\u0000\u0760\u0755\u0001\u0000\u0000\u0000"+
		"\u0760\u0759\u0001\u0000\u0000\u0000\u07617\u0001\u0000\u0000\u0000\u0762"+
		"\u0764\u0003T*\u0000\u0763\u0762\u0001\u0000\u0000\u0000\u0763\u0764\u0001"+
		"\u0000\u0000\u0000\u0764\u0765\u0001\u0000\u0000\u0000\u0765\u0766\u0005"+
		"R\u0000\u0000\u0766\u0767\u0003F#\u0000\u0767\u0768\u0005\\\u0000\u0000"+
		"\u0768\u076a\u0003:\u001d\u0000\u0769\u076b\u0003\u00aeW\u0000\u076a\u0769"+
		"\u0001\u0000\u0000\u0000\u076a\u076b\u0001\u0000\u0000\u0000\u076b\u076d"+
		"\u0001\u0000\u0000\u0000\u076c\u076e\u0003\u00c4b\u0000\u076d\u076c\u0001"+
		"\u0000\u0000\u0000\u076d\u076e\u0001\u0000\u0000\u0000\u076e\u0770\u0001"+
		"\u0000\u0000\u0000\u076f\u0771\u0003B!\u0000\u0770\u076f\u0001\u0000\u0000"+
		"\u0000\u0770\u0771\u0001\u0000\u0000\u0000\u07719\u0001\u0000\u0000\u0000"+
		"\u0772\u0773\u0006\u001d\uffff\uffff\u0000\u0773\u0774\u0003<\u001e\u0000"+
		"\u0774\u077a\u0001\u0000\u0000\u0000\u0775\u0776\n\u0001\u0000\u0000\u0776"+
		"\u0777\u0005&\u0000\u0000\u0777\u0779\u0003<\u001e\u0000\u0778\u0775\u0001"+
		"\u0000\u0000\u0000\u0779\u077c\u0001\u0000\u0000\u0000\u077a\u0778\u0001"+
		"\u0000\u0000\u0000\u077a\u077b\u0001\u0000\u0000\u0000\u077b;\u0001\u0000"+
		"\u0000\u0000\u077c\u077a\u0001\u0000\u0000\u0000\u077d\u077e\u0003>\u001f"+
		"\u0000\u077e\u077f\u0005\u0018\u0000\u0000\u077f\u0780\u0003\u011a\u008d"+
		"\u0000\u0780\u0788\u0001\u0000\u0000\u0000\u0781\u0782\u0005 \u0000\u0000"+
		"\u0782\u0783\u0003@ \u0000\u0783\u0784\u0005!\u0000\u0000\u0784\u0785"+
		"\u0005\u0018\u0000\u0000\u0785\u0786\u0003\u011a\u008d\u0000\u0786\u0788"+
		"\u0001\u0000\u0000\u0000\u0787\u077d\u0001\u0000\u0000\u0000\u0787\u0781"+
		"\u0001\u0000\u0000\u0000\u0788=\u0001\u0000\u0000\u0000\u0789\u078c\u0003"+
		"\u016a\u00b5\u0000\u078a\u078b\u0005\u0014\u0000\u0000\u078b\u078d\u0003"+
		"\u016a\u00b5\u0000\u078c\u078a\u0001\u0000\u0000\u0000\u078c\u078d\u0001"+
		"\u0000\u0000\u0000\u078d?\u0001\u0000\u0000\u0000\u078e\u078f\u0006 \uffff"+
		"\uffff\u0000\u078f\u0790\u0003>\u001f\u0000\u0790\u0796\u0001\u0000\u0000"+
		"\u0000\u0791\u0792\n\u0001\u0000\u0000\u0792\u0793\u0005&\u0000\u0000"+
		"\u0793\u0795\u0003>\u001f\u0000\u0794\u0791\u0001\u0000\u0000\u0000\u0795"+
		"\u0798\u0001\u0000\u0000\u0000\u0796\u0794\u0001\u0000\u0000\u0000\u0796"+
		"\u0797\u0001\u0000\u0000\u0000\u0797A\u0001\u0000\u0000\u0000\u0798\u0796"+
		"\u0001\u0000\u0000\u0000\u0799\u079a\u0005\u01b7\u0000\u0000\u079a\u079b"+
		"\u0003\u0086C\u0000\u079bC\u0001\u0000\u0000\u0000\u079c\u079e\u0003T"+
		"*\u0000\u079d\u079c\u0001\u0000\u0000\u0000\u079d\u079e\u0001\u0000\u0000"+
		"\u0000\u079e\u079f\u0001\u0000\u0000\u0000\u079f\u07a0\u0005S\u0000\u0000"+
		"\u07a0\u07a1\u0005v\u0000\u0000\u07a1\u07a3\u0003F#\u0000\u07a2\u07a4"+
		"\u0003H$\u0000\u07a3\u07a2\u0001\u0000\u0000\u0000\u07a3\u07a4\u0001\u0000"+
		"\u0000\u0000\u07a4\u07a6\u0001\u0000\u0000\u0000\u07a5\u07a7\u0003\u00c4"+
		"b\u0000\u07a6\u07a5\u0001\u0000\u0000\u0000\u07a6\u07a7\u0001\u0000\u0000"+
		"\u0000\u07a7\u07a9\u0001\u0000\u0000\u0000\u07a8\u07aa\u0003B!\u0000\u07a9"+
		"\u07a8\u0001\u0000\u0000\u0000\u07a9\u07aa\u0001\u0000\u0000\u0000\u07aa"+
		"E\u0001\u0000\u0000\u0000\u07ab\u07b4\u0003\u00c0`\u0000\u07ac\u07ad\u0003"+
		"\u00c0`\u0000\u07ad\u07ae\u0003\u016a\u00b5\u0000\u07ae\u07b4\u0001\u0000"+
		"\u0000\u0000\u07af\u07b0\u0003\u00c0`\u0000\u07b0\u07b1\u0005\u0081\u0000"+
		"\u0000\u07b1\u07b2\u0003\u016a\u00b5\u0000\u07b2\u07b4\u0001\u0000\u0000"+
		"\u0000\u07b3\u07ab\u0001\u0000\u0000\u0000\u07b3\u07ac\u0001\u0000\u0000"+
		"\u0000\u07b3\u07af\u0001\u0000\u0000\u0000\u07b4G\u0001\u0000\u0000\u0000"+
		"\u07b5\u07b6\u0005\u007f\u0000\u0000\u07b6\u07b7\u0003\u00b0X\u0000\u07b7"+
		"I\u0001\u0000\u0000\u0000\u07b8\u07bb\u0003N\'\u0000\u07b9\u07bb\u0003"+
		"L&\u0000\u07ba\u07b8\u0001\u0000\u0000\u0000\u07ba\u07b9\u0001\u0000\u0000"+
		"\u0000\u07bbK\u0001\u0000\u0000\u0000\u07bc\u07bd\u0005 \u0000\u0000\u07bd"+
		"\u07be\u0003N\'\u0000\u07be\u07bf\u0005!\u0000\u0000\u07bf\u07c5\u0001"+
		"\u0000\u0000\u0000\u07c0\u07c1\u0005 \u0000\u0000\u07c1\u07c2\u0003L&"+
		"\u0000\u07c2\u07c3\u0005!\u0000\u0000\u07c3\u07c5\u0001\u0000\u0000\u0000"+
		"\u07c4\u07bc\u0001\u0000\u0000\u0000\u07c4\u07c0\u0001\u0000\u0000\u0000"+
		"\u07c5M\u0001\u0000\u0000\u0000\u07c6\u07c8\u0003P(\u0000\u07c7\u07c9"+
		"\u0003\u0200\u0100\u0000\u07c8\u07c7\u0001\u0000\u0000\u0000\u07c8\u07c9"+
		"\u0001\u0000\u0000\u0000\u07c9\u07d2\u0001\u0000\u0000\u0000\u07ca\u07cc"+
		"\u0003d2\u0000\u07cb\u07cd\u0003r9\u0000\u07cc\u07cb\u0001\u0000\u0000"+
		"\u0000\u07cc\u07cd\u0001\u0000\u0000\u0000\u07cd\u07d3\u0001\u0000\u0000"+
		"\u0000\u07ce\u07d0\u0003r9\u0000\u07cf\u07d1\u0003d2\u0000\u07d0\u07cf"+
		"\u0001\u0000\u0000\u0000\u07d0\u07d1\u0001\u0000\u0000\u0000\u07d1\u07d3"+
		"\u0001\u0000\u0000\u0000\u07d2\u07ca\u0001\u0000\u0000\u0000\u07d2\u07ce"+
		"\u0001\u0000\u0000\u0000\u07d2\u07d3\u0001\u0000\u0000\u0000\u07d3\u07ee"+
		"\u0001\u0000\u0000\u0000\u07d4\u07d5\u0003T*\u0000\u07d5\u07d6\u0003P"+
		"(\u0000\u07d6\u07ee\u0001\u0000\u0000\u0000\u07d7\u07d8\u0003T*\u0000"+
		"\u07d8\u07d9\u0003P(\u0000\u07d9\u07da\u0003\u0200\u0100\u0000\u07da\u07ee"+
		"\u0001\u0000\u0000\u0000\u07db\u07dc\u0003T*\u0000\u07dc\u07de\u0003P"+
		"(\u0000\u07dd\u07df\u0003\u0200\u0100\u0000\u07de\u07dd\u0001\u0000\u0000"+
		"\u0000\u07de\u07df\u0001\u0000\u0000\u0000\u07df\u07e0\u0001\u0000\u0000"+
		"\u0000\u07e0\u07e2\u0003d2\u0000\u07e1\u07e3\u0003r9\u0000\u07e2\u07e1"+
		"\u0001\u0000\u0000\u0000\u07e2\u07e3\u0001\u0000\u0000\u0000\u07e3\u07ee"+
		"\u0001\u0000\u0000\u0000\u07e4\u07e5\u0003T*\u0000\u07e5\u07e7\u0003P"+
		"(\u0000\u07e6\u07e8\u0003\u0200\u0100\u0000\u07e7\u07e6\u0001\u0000\u0000"+
		"\u0000\u07e7\u07e8\u0001\u0000\u0000\u0000\u07e8\u07e9\u0001\u0000\u0000"+
		"\u0000\u07e9\u07eb\u0003r9\u0000\u07ea\u07ec\u0003d2\u0000\u07eb\u07ea"+
		"\u0001\u0000\u0000\u0000\u07eb\u07ec\u0001\u0000\u0000\u0000\u07ec\u07ee"+
		"\u0001\u0000\u0000\u0000\u07ed\u07c6\u0001\u0000\u0000\u0000\u07ed\u07d4"+
		"\u0001\u0000\u0000\u0000\u07ed\u07d7\u0001\u0000\u0000\u0000\u07ed\u07db"+
		"\u0001\u0000\u0000\u0000\u07ed\u07e4\u0001\u0000\u0000\u0000\u07eeO\u0001"+
		"\u0000\u0000\u0000\u07ef\u07f0\u0006(\uffff\uffff\u0000\u07f0\u07f3\u0003"+
		"R)\u0000\u07f1\u07f3\u0003L&\u0000\u07f2\u07ef\u0001\u0000\u0000\u0000"+
		"\u07f2\u07f1\u0001\u0000\u0000\u0000\u07f3\u0802\u0001\u0000\u0000\u0000"+
		"\u07f4\u07f5\n\u0002\u0000\u0000\u07f5\u07f7\u0005\u00dd\u0000\u0000\u07f6"+
		"\u07f8\u0003\u01fe\u00ff\u0000\u07f7\u07f6\u0001\u0000\u0000\u0000\u07f7"+
		"\u07f8\u0001\u0000\u0000\u0000\u07f8\u07f9\u0001\u0000\u0000\u0000\u07f9"+
		"\u0801\u0003P(\u0003\u07fa\u07fb\n\u0001\u0000\u0000\u07fb\u07fd\u0007"+
		"\u0003\u0000\u0000\u07fc\u07fe\u0003\u01fe\u00ff\u0000\u07fd\u07fc\u0001"+
		"\u0000\u0000\u0000\u07fd\u07fe\u0001\u0000\u0000\u0000\u07fe\u07ff\u0001"+
		"\u0000\u0000\u0000\u07ff\u0801\u0003P(\u0002\u0800\u07f4\u0001\u0000\u0000"+
		"\u0000\u0800\u07fa\u0001\u0000\u0000\u0000\u0801\u0804\u0001\u0000\u0000"+
		"\u0000\u0802\u0800\u0001\u0000\u0000\u0000\u0802\u0803\u0001\u0000\u0000"+
		"\u0000\u0803Q\u0001\u0000\u0000\u0000\u0804\u0802\u0001\u0000\u0000\u0000"+
		"\u0805\u0807\u0005P\u0000\u0000\u0806\u0808\u0005\u0092\u0000\u0000\u0807"+
		"\u0806\u0001\u0000\u0000\u0000\u0807\u0808\u0001\u0000\u0000\u0000\u0808"+
		"\u080a\u0001\u0000\u0000\u0000\u0809\u080b\u0003\u0086C\u0000\u080a\u0809"+
		"\u0001\u0000\u0000\u0000\u080a\u080b\u0001\u0000\u0000\u0000\u080b\u080d"+
		"\u0001\u0000\u0000\u0000\u080c\u080e\u0003V+\u0000\u080d\u080c\u0001\u0000"+
		"\u0000\u0000\u080d\u080e\u0001\u0000\u0000\u0000\u080e\u0810\u0001\u0000"+
		"\u0000\u0000\u080f\u0811\u0003\u00aeW\u0000\u0810\u080f\u0001\u0000\u0000"+
		"\u0000\u0810\u0811\u0001\u0000\u0000\u0000\u0811\u0813\u0001\u0000\u0000"+
		"\u0000\u0812\u0814\u0003\u00c2a\u0000\u0813\u0812\u0001\u0000\u0000\u0000"+
		"\u0813\u0814\u0001\u0000\u0000\u0000\u0814\u0816\u0001\u0000\u0000\u0000"+
		"\u0815\u0817\u0003\u008aE\u0000\u0816\u0815\u0001\u0000\u0000\u0000\u0816"+
		"\u0817\u0001\u0000\u0000\u0000\u0817\u0819\u0001\u0000\u0000\u0000\u0818"+
		"\u081a\u0003\u00c6c\u0000\u0819\u0818\u0001\u0000\u0000\u0000\u0819\u081a"+
		"\u0001\u0000\u0000\u0000\u081a\u081c\u0001\u0000\u0000\u0000\u081b\u081d"+
		"\u0003\u0098L\u0000\u081c\u081b\u0001\u0000\u0000\u0000\u081c\u081d\u0001"+
		"\u0000\u0000\u0000\u081d\u0837\u0001\u0000\u0000\u0000\u081e\u081f\u0005"+
		"P\u0000\u0000\u081f\u0820\u0003\u0208\u0104\u0000\u0820\u0822\u0003\u0086"+
		"C\u0000\u0821\u0823\u0003V+\u0000\u0822\u0821\u0001\u0000\u0000\u0000"+
		"\u0822\u0823\u0001\u0000\u0000\u0000\u0823\u0825\u0001\u0000\u0000\u0000"+
		"\u0824\u0826\u0003\u00aeW\u0000\u0825\u0824\u0001\u0000\u0000\u0000\u0825"+
		"\u0826\u0001\u0000\u0000\u0000\u0826\u0828\u0001\u0000\u0000\u0000\u0827"+
		"\u0829\u0003\u00c2a\u0000\u0828\u0827\u0001\u0000\u0000\u0000\u0828\u0829"+
		"\u0001\u0000\u0000\u0000\u0829\u082b\u0001\u0000\u0000\u0000\u082a\u082c"+
		"\u0003\u008aE\u0000\u082b\u082a\u0001\u0000\u0000\u0000\u082b\u082c\u0001"+
		"\u0000\u0000\u0000\u082c\u082e\u0001\u0000\u0000\u0000\u082d\u082f\u0003"+
		"\u00c6c\u0000\u082e\u082d\u0001\u0000\u0000\u0000\u082e\u082f\u0001\u0000"+
		"\u0000\u0000\u082f\u0831\u0001\u0000\u0000\u0000\u0830\u0832\u0003\u0098"+
		"L\u0000\u0831\u0830\u0001\u0000\u0000\u0000\u0831\u0832\u0001\u0000\u0000"+
		"\u0000\u0832\u0837\u0001\u0000\u0000\u0000\u0833\u0837\u0003t:\u0000\u0834"+
		"\u0835\u0005]\u0000\u0000\u0835\u0837\u0003\u00c0`\u0000\u0836\u0805\u0001"+
		"\u0000\u0000\u0000\u0836\u081e\u0001\u0000\u0000\u0000\u0836\u0833\u0001"+
		"\u0000\u0000\u0000\u0836\u0834\u0001\u0000\u0000\u0000\u0837S\u0001\u0000"+
		"\u0000\u0000\u0838\u0839\u0005m\u0000\u0000\u0839\u083e\u0003Z-\u0000"+
		"\u083a\u083b\u0005m\u0000\u0000\u083b\u083c\u0005\u015f\u0000\u0000\u083c"+
		"\u083e\u0003Z-\u0000\u083d\u0838\u0001\u0000\u0000\u0000\u083d\u083a\u0001"+
		"\u0000\u0000\u0000\u083eU\u0001\u0000\u0000\u0000\u083f\u0840\u0005k\u0000"+
		"\u0000\u0840\u0841\u0003X,\u0000\u0841W\u0001\u0000\u0000\u0000\u0842"+
		"\u0844\u0005\u0153\u0000\u0000\u0843\u0845\u0005]\u0000\u0000\u0844\u0843"+
		"\u0001\u0000\u0000\u0000\u0844\u0845\u0001\u0000\u0000\u0000\u0845\u0846"+
		"\u0001\u0000\u0000\u0000\u0846\u086f\u0003\u0168\u00b4\u0000\u0847\u0849"+
		"\u0005\u0152\u0000\u0000\u0848\u084a\u0005]\u0000\u0000\u0849\u0848\u0001"+
		"\u0000\u0000\u0000\u0849\u084a\u0001\u0000\u0000\u0000\u084a\u084b\u0001"+
		"\u0000\u0000\u0000\u084b\u086f\u0003\u0168\u00b4\u0000\u084c\u084d\u0005"+
		"\u00c1\u0000\u0000\u084d\u084f\u0005\u0153\u0000\u0000\u084e\u0850\u0005"+
		"]\u0000\u0000\u084f\u084e\u0001\u0000\u0000\u0000\u084f\u0850\u0001\u0000"+
		"\u0000\u0000\u0850\u0851\u0001\u0000\u0000\u0000\u0851\u086f\u0003\u0168"+
		"\u00b4\u0000\u0852\u0853\u0005\u00c1\u0000\u0000\u0853\u0855\u0005\u0152"+
		"\u0000\u0000\u0854\u0856\u0005]\u0000\u0000\u0855\u0854\u0001\u0000\u0000"+
		"\u0000\u0855\u0856\u0001\u0000\u0000\u0000\u0856\u0857\u0001\u0000\u0000"+
		"\u0000\u0857\u086f\u0003\u0168\u00b4\u0000\u0858\u0859\u0005\u0124\u0000"+
		"\u0000\u0859\u085b\u0005\u0153\u0000\u0000\u085a\u085c\u0005]\u0000\u0000"+
		"\u085b\u085a\u0001\u0000\u0000\u0000\u085b\u085c\u0001\u0000\u0000\u0000"+
		"\u085c\u085d\u0001\u0000\u0000\u0000\u085d\u086f\u0003\u0168\u00b4\u0000"+
		"\u085e\u085f\u0005\u0124\u0000\u0000\u085f\u0861\u0005\u0152\u0000\u0000"+
		"\u0860\u0862\u0005]\u0000\u0000\u0861\u0860\u0001\u0000\u0000\u0000\u0861"+
		"\u0862\u0001\u0000\u0000\u0000\u0862\u0863\u0001\u0000\u0000\u0000\u0863"+
		"\u086f\u0003\u0168\u00b4\u0000\u0864\u0866\u0005\u0155\u0000\u0000\u0865"+
		"\u0867\u0005]\u0000\u0000\u0866\u0865\u0001\u0000\u0000\u0000\u0866\u0867"+
		"\u0001\u0000\u0000\u0000\u0867\u0868\u0001\u0000\u0000\u0000\u0868\u086f"+
		"\u0003\u0168\u00b4\u0000\u0869\u086b\u0005]\u0000\u0000\u086a\u0869\u0001"+
		"\u0000\u0000\u0000\u086a\u086b\u0001\u0000\u0000\u0000\u086b\u086c\u0001"+
		"\u0000\u0000\u0000\u086c\u086f\u0003\u0168\u00b4\u0000\u086d\u086f\u0003"+
		"\u0168\u00b4\u0000\u086e\u0842\u0001\u0000\u0000\u0000\u086e\u0847\u0001"+
		"\u0000\u0000\u0000\u086e\u084c\u0001\u0000\u0000\u0000\u086e\u0852\u0001"+
		"\u0000\u0000\u0000\u086e\u0858\u0001\u0000\u0000\u0000\u086e\u085e\u0001"+
		"\u0000\u0000\u0000\u086e\u0864\u0001\u0000\u0000\u0000\u086e\u086a\u0001"+
		"\u0000\u0000\u0000\u086e\u086d\u0001\u0000\u0000\u0000\u086fY\u0001\u0000"+
		"\u0000\u0000\u0870\u0875\u0003\\.\u0000\u0871\u0872\u0005&\u0000\u0000"+
		"\u0872\u0874\u0003\\.\u0000\u0873\u0871\u0001\u0000\u0000\u0000\u0874"+
		"\u0877\u0001\u0000\u0000\u0000\u0875\u0873\u0001\u0000\u0000\u0000\u0875"+
		"\u0876\u0001\u0000\u0000\u0000\u0876[\u0001\u0000\u0000\u0000\u0877\u0875"+
		"\u0001\u0000\u0000\u0000\u0878\u0879\u0003\u00acV\u0000\u0879\u087a\u0003"+
		"`0\u0000\u087a\u087b\u0005\u0081\u0000\u0000\u087b\u087c\u0003^/\u0000"+
		"\u087c\u087d\u0005 \u0000\u0000\u087d\u087e\u0003b1\u0000\u087e\u087f"+
		"\u0005!\u0000\u0000\u087f]\u0001\u0000\u0000\u0000\u0880\u0885\u0005\u01a1"+
		"\u0000\u0000\u0881\u0882\u0005\u008b\u0000\u0000\u0882\u0885\u0005\u01a1"+
		"\u0000\u0000\u0883\u0885\u0001\u0000\u0000\u0000\u0884\u0880\u0001\u0000"+
		"\u0000\u0000\u0884\u0881\u0001\u0000\u0000\u0000\u0884\u0883\u0001\u0000"+
		"\u0000\u0000\u0885_\u0001\u0000\u0000\u0000\u0886\u0887\u0005 \u0000\u0000"+
		"\u0887\u0888\u0003\u01f6\u00fb\u0000\u0888\u0889\u0005!\u0000\u0000\u0889"+
		"\u088c\u0001\u0000\u0000\u0000\u088a\u088c\u0001\u0000\u0000\u0000\u088b"+
		"\u0886\u0001\u0000\u0000\u0000\u088b\u088a\u0001\u0000\u0000\u0000\u088c"+
		"a\u0001\u0000\u0000\u0000\u088d\u0892\u0003J%\u0000\u088e\u0892\u0003"+
		"(\u0014\u0000\u088f\u0892\u00038\u001c\u0000\u0890\u0892\u0003D\"\u0000"+
		"\u0891\u088d\u0001\u0000\u0000\u0000\u0891\u088e\u0001\u0000\u0000\u0000"+
		"\u0891\u088f\u0001\u0000\u0000\u0000\u0891\u0890\u0001\u0000\u0000\u0000"+
		"\u0892c\u0001\u0000\u0000\u0000\u0893\u0898\u0003f3\u0000\u0894\u0895"+
		"\u0005\u0086\u0000\u0000\u0895\u0896\u0005\u0102\u0000\u0000\u0896\u0898"+
		"\u0005\u0139\u0000\u0000\u0897\u0893\u0001\u0000\u0000\u0000\u0897\u0894"+
		"\u0001\u0000\u0000\u0000\u0898e\u0001\u0000\u0000\u0000\u0899\u089a\u0006"+
		"3\uffff\uffff\u0000\u089a\u089b\u0003h4\u0000\u089b\u08a0\u0001\u0000"+
		"\u0000\u0000\u089c\u089d\n\u0001\u0000\u0000\u089d\u089f\u0003h4\u0000"+
		"\u089e\u089c\u0001\u0000\u0000\u0000\u089f\u08a2\u0001\u0000\u0000\u0000"+
		"\u08a0\u089e\u0001\u0000\u0000\u0000\u08a0\u08a1\u0001\u0000\u0000\u0000"+
		"\u08a1g\u0001\u0000\u0000\u0000\u08a2\u08a0\u0001\u0000\u0000\u0000\u08a3"+
		"\u08a5\u0003l6\u0000\u08a4\u08a6\u0003n7\u0000\u08a5\u08a4\u0001\u0000"+
		"\u0000\u0000\u08a5\u08a6\u0001\u0000\u0000\u0000\u08a6\u08a8\u0001\u0000"+
		"\u0000\u0000\u08a7\u08a9\u0003j5\u0000\u08a8\u08a7\u0001\u0000\u0000\u0000"+
		"\u08a8\u08a9\u0001\u0000\u0000\u0000\u08a9i\u0001\u0000\u0000\u0000\u08aa"+
		"\u08ae\u0005\u01ae\u0000\u0000\u08ab\u08ac\u0005\u0001\u0000\u0000\u08ac"+
		"\u08ae\u0005\u01af\u0000\u0000\u08ad\u08aa\u0001\u0000\u0000\u0000\u08ad"+
		"\u08ab\u0001\u0000\u0000\u0000\u08aek\u0001\u0000\u0000\u0000\u08af\u08b0"+
		"\u0005\u0086\u0000\u0000\u08b0\u08bb\u0005R\u0000\u0000\u08b1\u08b2\u0005"+
		"\u0086\u0000\u0000\u08b2\u08b3\u0005\u00ff\u0000\u0000\u08b3\u08b4\u0005"+
		"d\u0000\u0000\u08b4\u08bb\u0005R\u0000\u0000\u08b5\u08b6\u0005\u0086\u0000"+
		"\u0000\u08b6\u08bb\u0005\u01a3\u0000\u0000\u08b7\u08b8\u0005\u0086\u0000"+
		"\u0000\u08b8\u08b9\u0005d\u0000\u0000\u08b9\u08bb\u0005\u01a3\u0000\u0000"+
		"\u08ba\u08af\u0001\u0000\u0000\u0000\u08ba\u08b1\u0001\u0000\u0000\u0000"+
		"\u08ba\u08b5\u0001\u0000\u0000\u0000\u08ba\u08b7\u0001\u0000\u0000\u0000"+
		"\u08bbm\u0001\u0000\u0000\u0000\u08bc\u08bd\u0005\u015c\u0000\u0000\u08bd"+
		"\u08be\u0003p8\u0000\u08beo\u0001\u0000\u0000\u0000\u08bf\u08c0\u0006"+
		"8\uffff\uffff\u0000\u08c0\u08c1\u0003\u0168\u00b4\u0000\u08c1\u08c7\u0001"+
		"\u0000\u0000\u0000\u08c2\u08c3\n\u0001\u0000\u0000\u08c3\u08c4\u0005&"+
		"\u0000\u0000\u08c4\u08c6\u0003\u0168\u00b4\u0000\u08c5\u08c2\u0001\u0000"+
		"\u0000\u0000\u08c6\u08c9\u0001\u0000\u0000\u0000\u08c7\u08c5\u0001\u0000"+
		"\u0000\u0000\u08c7\u08c8\u0001\u0000\u0000\u0000\u08c8q\u0001\u0000\u0000"+
		"\u0000\u08c9\u08c7\u0001\u0000\u0000\u0000\u08ca\u08cc\u0003v;\u0000\u08cb"+
		"\u08cd\u0003x<\u0000\u08cc\u08cb\u0001\u0000\u0000\u0000\u08cc\u08cd\u0001"+
		"\u0000\u0000\u0000\u08cd\u08d3\u0001\u0000\u0000\u0000\u08ce\u08d0\u0003"+
		"x<\u0000\u08cf\u08d1\u0003v;\u0000\u08d0\u08cf\u0001\u0000\u0000\u0000"+
		"\u08d0\u08d1\u0001\u0000\u0000\u0000\u08d1\u08d3\u0001\u0000\u0000\u0000"+
		"\u08d2\u08ca\u0001\u0000\u0000\u0000\u08d2\u08ce\u0001\u0000\u0000\u0000"+
		"\u08d3s\u0001\u0000\u0000\u0000\u08d4\u08d5\u0006:\uffff\uffff\u0000\u08d5"+
		"\u08d6\u0005l\u0000\u0000\u08d6\u08d7\u0005 \u0000\u0000\u08d7\u08d8\u0003"+
		"\u0190\u00c8\u0000\u08d8\u08d9\u0005!\u0000\u0000\u08d9\u08e2\u0001\u0000"+
		"\u0000\u0000\u08da\u08db\n\u0001\u0000\u0000\u08db\u08dc\u0005&\u0000"+
		"\u0000\u08dc\u08dd\u0005 \u0000\u0000\u08dd\u08de\u0003\u0190\u00c8\u0000"+
		"\u08de\u08df\u0005!\u0000\u0000\u08df\u08e1\u0001\u0000\u0000\u0000\u08e0"+
		"\u08da\u0001\u0000\u0000\u0000\u08e1\u08e4\u0001\u0000\u0000\u0000\u08e2"+
		"\u08e0\u0001\u0000\u0000\u0000\u08e2\u08e3\u0001\u0000\u0000\u0000\u08e3"+
		"u\u0001\u0000\u0000\u0000\u08e4\u08e2\u0001\u0000\u0000\u0000\u08e5\u08e6"+
		"\u0005\u009b\u0000\u0000\u08e6\u08f5\u0003z=\u0000\u08e7\u08e8\u0005\u009b"+
		"\u0000\u0000\u08e8\u08e9\u0003|>\u0000\u08e9\u08ea\u0005&\u0000\u0000"+
		"\u08ea\u08eb\u0003z=\u0000\u08eb\u08f5\u0001\u0000\u0000\u0000\u08ec\u08ed"+
		"\u0005\u00e2\u0000\u0000\u08ed\u08ef\u0003\u0082A\u0000\u08ee\u08f0\u0003"+
		"~?\u0000\u08ef\u08ee\u0001\u0000\u0000\u0000\u08ef\u08f0\u0001\u0000\u0000"+
		"\u0000\u08f0\u08f1\u0001\u0000\u0000\u0000\u08f1\u08f2\u0003\u0080@\u0000"+
		"\u08f2\u08f3\u0003\u0084B\u0000\u08f3\u08f5\u0001\u0000\u0000\u0000\u08f4"+
		"\u08e5\u0001\u0000\u0000\u0000\u08f4\u08e7\u0001\u0000\u0000\u0000\u08f4"+
		"\u08ec\u0001\u0000\u0000\u0000\u08f5w\u0001\u0000\u0000\u0000\u08f6\u08f7"+
		"\u0005\u009c\u0000\u0000\u08f7\u08f9\u0003|>\u0000\u08f8\u08fa\u0003\u0080"+
		"@\u0000\u08f9\u08f8\u0001\u0000\u0000\u0000\u08f9\u08fa\u0001\u0000\u0000"+
		"\u0000\u08fay\u0001\u0000\u0000\u0000\u08fb\u08fe\u0003\u011e\u008f\u0000"+
		"\u08fc\u08fe\u0005\u0092\u0000\u0000\u08fd\u08fb\u0001\u0000\u0000\u0000"+
		"\u08fd\u08fc\u0001\u0000\u0000\u0000\u08fe{\u0001\u0000\u0000\u0000\u08ff"+
		"\u0900\u0003\u011e\u008f\u0000\u0900}\u0001\u0000\u0000\u0000\u0901\u0902"+
		"\u0003\u011e\u008f\u0000\u0902\u007f\u0001\u0000\u0000\u0000\u0903\u0904"+
		"\u0007\u0004\u0000\u0000\u0904\u0081\u0001\u0000\u0000\u0000\u0905\u0906"+
		"\u0007\u0005\u0000\u0000\u0906\u0083\u0001\u0000\u0000\u0000\u0907\u090b"+
		"\u0005\u0139\u0000\u0000\u0908\u0909\u0005m\u0000\u0000\u0909\u090b\u0005"+
		"\u00e1\u0000\u0000\u090a\u0907\u0001\u0000\u0000\u0000\u090a\u0908\u0001"+
		"\u0000\u0000\u0000\u090b\u0085\u0001\u0000\u0000\u0000\u090c\u090d\u0006"+
		"C\uffff\uffff\u0000\u090d\u090e\u0003\u0088D\u0000\u090e\u0914\u0001\u0000"+
		"\u0000\u0000\u090f\u0910\n\u0001\u0000\u0000\u0910\u0911\u0005&\u0000"+
		"\u0000\u0911\u0913\u0003\u0088D\u0000\u0912\u090f\u0001\u0000\u0000\u0000"+
		"\u0913\u0916\u0001\u0000\u0000\u0000\u0914\u0912\u0001\u0000\u0000\u0000"+
		"\u0914\u0915\u0001\u0000\u0000\u0000\u0915\u0087\u0001\u0000\u0000\u0000"+
		"\u0916\u0914\u0001\u0000\u0000\u0000\u0917\u0918\u0003\u016a\u00b5\u0000"+
		"\u0918\u0919\u0005\u0015\u0000\u0000\u0919\u0923\u0001\u0000\u0000\u0000"+
		"\u091a\u091c\u0003\u011a\u008d\u0000\u091b\u091d\u0005\u0081\u0000\u0000"+
		"\u091c\u091b\u0001\u0000\u0000\u0000\u091c\u091d\u0001\u0000\u0000\u0000"+
		"\u091d\u091f\u0001\u0000\u0000\u0000\u091e\u0920\u0003\u00eau\u0000\u091f"+
		"\u091e\u0001\u0000\u0000\u0000\u091f\u0920\u0001\u0000\u0000\u0000\u0920"+
		"\u0923\u0001\u0000\u0000\u0000\u0921\u0923\u0005\u0011\u0000\u0000\u0922"+
		"\u0917\u0001\u0000\u0000\u0000\u0922\u091a\u0001\u0000\u0000\u0000\u0922"+
		"\u0921\u0001\u0000\u0000\u0000\u0923\u0089\u0001\u0000\u0000\u0000\u0924"+
		"\u0925\u0005\u0096\u0000\u0000\u0925\u0926\u0005\u0097\u0000\u0000\u0926"+
		"\u0927\u0003\u008cF\u0000\u0927\u008b\u0001\u0000\u0000\u0000\u0928\u092d"+
		"\u0003\u008eG\u0000\u0929\u092a\u0005&\u0000\u0000\u092a\u092c\u0003\u008e"+
		"G\u0000\u092b\u0929\u0001\u0000\u0000\u0000\u092c\u092f\u0001\u0000\u0000"+
		"\u0000\u092d\u092b\u0001\u0000\u0000\u0000\u092d\u092e\u0001\u0000\u0000"+
		"\u0000\u092e\u008d\u0001\u0000\u0000\u0000\u092f\u092d\u0001\u0000\u0000"+
		"\u0000\u0930\u0936\u0003\u011a\u008d\u0000\u0931\u0936\u0003\u0090H\u0000"+
		"\u0932\u0936\u0003\u0094J\u0000\u0933\u0936\u0003\u0092I\u0000\u0934\u0936"+
		"\u0003\u0096K\u0000\u0935\u0930\u0001\u0000\u0000\u0000\u0935\u0931\u0001"+
		"\u0000\u0000\u0000\u0935\u0932\u0001\u0000\u0000\u0000\u0935\u0933\u0001"+
		"\u0000\u0000\u0000\u0935\u0934\u0001\u0000\u0000\u0000\u0936\u008f\u0001"+
		"\u0000\u0000\u0000\u0937\u0938\u0005 \u0000\u0000\u0938\u0939\u0005!\u0000"+
		"\u0000\u0939\u0091\u0001\u0000\u0000\u0000\u093a\u093b\u0005\u01a4\u0000"+
		"\u0000\u093b\u093c\u0005 \u0000\u0000\u093c\u093d\u0003\u0190\u00c8\u0000"+
		"\u093d\u093e\u0005!\u0000\u0000\u093e\u0093\u0001\u0000\u0000\u0000\u093f"+
		"\u0940\u0005\u00e3\u0000\u0000\u0940\u0941\u0005 \u0000\u0000\u0941\u0942"+
		"\u0003\u0190\u00c8\u0000\u0942\u0943\u0005!\u0000\u0000\u0943\u0095\u0001"+
		"\u0000\u0000\u0000\u0944\u0945\u0005\u00e4\u0000\u0000\u0945\u0946\u0005"+
		"\u00e5\u0000\u0000\u0946\u0947\u0005 \u0000\u0000\u0947\u0948\u0003\u008c"+
		"F\u0000\u0948\u0949\u0005!\u0000\u0000\u0949\u0097\u0001\u0000\u0000\u0000"+
		"\u094a\u094b\u0005\u00e6\u0000\u0000\u094b\u094c\u0003\u009aM\u0000\u094c"+
		"\u0099\u0001\u0000\u0000\u0000\u094d\u094e\u0006M\uffff\uffff\u0000\u094e"+
		"\u094f\u0003\u009cN\u0000\u094f\u0955\u0001\u0000\u0000\u0000\u0950\u0951"+
		"\n\u0001\u0000\u0000\u0951\u0952\u0005&\u0000\u0000\u0952\u0954\u0003"+
		"\u009cN\u0000\u0953\u0950\u0001\u0000\u0000\u0000\u0954\u0957\u0001\u0000"+
		"\u0000\u0000\u0955\u0953\u0001\u0000\u0000\u0000\u0955\u0956\u0001\u0000"+
		"\u0000\u0000\u0956\u009b\u0001\u0000\u0000\u0000\u0957\u0955\u0001\u0000"+
		"\u0000\u0000\u0958\u0959\u0003\u016a\u00b5\u0000\u0959\u095a\u0005\u0081"+
		"\u0000\u0000\u095a\u095b\u0003\u009eO\u0000\u095b\u009d\u0001\u0000\u0000"+
		"\u0000\u095c\u095e\u0005 \u0000\u0000\u095d\u095f\u0003\u00a0P\u0000\u095e"+
		"\u095d\u0001\u0000\u0000\u0000\u095e\u095f\u0001\u0000\u0000\u0000\u095f"+
		"\u0961\u0001\u0000\u0000\u0000\u0960\u0962\u0003\u00a2Q\u0000\u0961\u0960"+
		"\u0001\u0000\u0000\u0000\u0961\u0962\u0001\u0000\u0000\u0000\u0962\u0964"+
		"\u0001\u0000\u0000\u0000\u0963\u0965\u0003\u0200\u0100\u0000\u0964\u0963"+
		"\u0001\u0000\u0000\u0000\u0964\u0965\u0001\u0000\u0000\u0000\u0965\u0967"+
		"\u0001\u0000\u0000\u0000\u0966\u0968\u0003\u00a4R\u0000\u0967\u0966\u0001"+
		"\u0000\u0000\u0000\u0967\u0968\u0001\u0000\u0000\u0000\u0968\u0969\u0001"+
		"\u0000\u0000\u0000\u0969\u096a\u0005!\u0000\u0000\u096a\u009f\u0001\u0000"+
		"\u0000\u0000\u096b\u096c\u0003\u016a\u00b5\u0000\u096c\u00a1\u0001\u0000"+
		"\u0000\u0000\u096d\u096e\u0005\u00f6\u0000\u0000\u096e\u096f\u0005\u0097"+
		"\u0000\u0000\u096f\u0970\u0003\u0190\u00c8\u0000\u0970\u00a3\u0001\u0000"+
		"\u0000\u0000\u0971\u0972\u0005\u0140\u0000\u0000\u0972\u0973\u0003\u00a6"+
		"S\u0000\u0973\u0974\u0003\u00aaU\u0000\u0974\u097e\u0001\u0000\u0000\u0000"+
		"\u0975\u0976\u0005\u0105\u0000\u0000\u0976\u0977\u0003\u00a6S\u0000\u0977"+
		"\u0978\u0003\u00aaU\u0000\u0978\u097e\u0001\u0000\u0000\u0000\u0979\u097a"+
		"\u0005\u015e\u0000\u0000\u097a\u097b\u0003\u00a6S\u0000\u097b\u097c\u0003"+
		"\u00aaU\u0000\u097c\u097e\u0001\u0000\u0000\u0000\u097d\u0971\u0001\u0000"+
		"\u0000\u0000\u097d\u0975\u0001\u0000\u0000\u0000\u097d\u0979\u0001\u0000"+
		"\u0000\u0000\u097e\u00a5\u0001\u0000\u0000\u0000\u097f\u0986\u0003\u00a8"+
		"T\u0000\u0980\u0981\u0005\u0090\u0000\u0000\u0981\u0982\u0003\u00a8T\u0000"+
		"\u0982\u0983\u0005\u0088\u0000\u0000\u0983\u0984\u0003\u00a8T\u0000\u0984"+
		"\u0986\u0001\u0000\u0000\u0000\u0985\u097f\u0001\u0000\u0000\u0000\u0985"+
		"\u0980\u0001\u0000\u0000\u0000\u0986\u00a7\u0001\u0000\u0000\u0000\u0987"+
		"\u0988\u0005\u0154\u0000\u0000\u0988\u0994\u0005\u013f\u0000\u0000\u0989"+
		"\u098a\u0005\u0154\u0000\u0000\u098a\u0994\u0005\u0122\u0000\u0000\u098b"+
		"\u098c\u0005\u00b6\u0000\u0000\u098c\u0994\u0005\u00f7\u0000\u0000\u098d"+
		"\u098e\u0003\u011a\u008d\u0000\u098e\u098f\u0005\u013f\u0000\u0000\u098f"+
		"\u0994\u0001\u0000\u0000\u0000\u0990\u0991\u0003\u011a\u008d\u0000\u0991"+
		"\u0992\u0005\u0122\u0000\u0000\u0992\u0994\u0001\u0000\u0000\u0000\u0993"+
		"\u0987\u0001\u0000\u0000\u0000\u0993\u0989\u0001\u0000\u0000\u0000\u0993"+
		"\u098b\u0001\u0000\u0000\u0000\u0993\u098d\u0001\u0000\u0000\u0000\u0993"+
		"\u0990\u0001\u0000\u0000\u0000\u0994\u00a9\u0001\u0000\u0000\u0000\u0995"+
		"\u0996\u0005\u00f4\u0000\u0000\u0996\u0997\u0005\u00b6\u0000\u0000\u0997"+
		"\u09a1\u0005\u00f7\u0000\u0000\u0998\u0999\u0005\u00f4\u0000\u0000\u0999"+
		"\u09a1\u0005\u0096\u0000\u0000\u099a\u099b\u0005\u00f4\u0000\u0000\u099b"+
		"\u09a1\u0005\u00e1\u0000\u0000\u099c\u099d\u0005\u00f4\u0000\u0000\u099d"+
		"\u099e\u0005\u00ff\u0000\u0000\u099e\u09a1\u0005\u00e7\u0000\u0000\u099f"+
		"\u09a1\u0001\u0000\u0000\u0000\u09a0\u0995\u0001\u0000\u0000\u0000\u09a0"+
		"\u0998\u0001\u0000\u0000\u0000\u09a0\u099a\u0001\u0000\u0000\u0000\u09a0"+
		"\u099c\u0001\u0000\u0000\u0000\u09a0\u099f\u0001\u0000\u0000\u0000\u09a1"+
		"\u00ab\u0001\u0000\u0000\u0000\u09a2\u09a5\u0003\u00eau\u0000\u09a3\u09a5"+
		"\u0005\u0254\u0000\u0000\u09a4\u09a2\u0001\u0000\u0000\u0000\u09a4\u09a3"+
		"\u0001\u0000\u0000\u0000\u09a5\u00ad\u0001\u0000\u0000\u0000\u09a6\u09a7"+
		"\u0005v\u0000\u0000\u09a7\u09a8\u0003\u00b0X\u0000\u09a8\u00af\u0001\u0000"+
		"\u0000\u0000\u09a9\u09aa\u0006X\uffff\uffff\u0000\u09aa\u09ab\u0003\u00b2"+
		"Y\u0000\u09ab\u09b1\u0001\u0000\u0000\u0000\u09ac\u09ad\n\u0001\u0000"+
		"\u0000\u09ad\u09ae\u0005&\u0000\u0000\u09ae\u09b0\u0003\u00b2Y\u0000\u09af"+
		"\u09ac\u0001\u0000\u0000\u0000\u09b0\u09b3\u0001\u0000\u0000\u0000\u09b1"+
		"\u09af\u0001\u0000\u0000\u0000\u09b1\u09b2\u0001\u0000\u0000\u0000\u09b2"+
		"\u00b1\u0001\u0000\u0000\u0000\u09b3\u09b1\u0001\u0000\u0000\u0000\u09b4"+
		"\u09b5\u0006Y\uffff\uffff\u0000\u09b5\u09b7\u0003\u00c0`\u0000\u09b6\u09b8"+
		"\u0003\u01ee\u00f7\u0000\u09b7\u09b6\u0001\u0000\u0000\u0000\u09b7\u09b8"+
		"\u0001\u0000\u0000\u0000\u09b8\u09e2\u0001\u0000\u0000\u0000\u09b9\u09bb"+
		"\u0003\u00c0`\u0000\u09ba\u09bc\u0003\u01ee\u00f7\u0000\u09bb\u09ba\u0001"+
		"\u0000\u0000\u0000\u09bb\u09bc\u0001\u0000\u0000\u0000\u09bc\u09bd\u0001"+
		"\u0000\u0000\u0000\u09bd\u09be\u0003\u01fa\u00fd\u0000\u09be\u09e2\u0001"+
		"\u0000\u0000\u0000\u09bf\u09c1\u0003\u016e\u00b7\u0000\u09c0\u09c2\u0003"+
		"\u01f8\u00fc\u0000\u09c1\u09c0\u0001\u0000\u0000\u0000\u09c1\u09c2\u0001"+
		"\u0000\u0000\u0000\u09c2\u09e2\u0001\u0000\u0000\u0000\u09c3\u09c4\u0005"+
		"\u01b8\u0000\u0000\u09c4\u09c6\u0003\u016e\u00b7\u0000\u09c5\u09c7\u0003"+
		"\u01f8\u00fc\u0000\u09c6\u09c5\u0001\u0000\u0000\u0000\u09c6\u09c7\u0001"+
		"\u0000\u0000\u0000\u09c7\u09e2\u0001\u0000\u0000\u0000\u09c8\u09ca\u0003"+
		"\u0170\u00b8\u0000\u09c9\u09cb\u0003\u01ee\u00f7\u0000\u09ca\u09c9\u0001"+
		"\u0000\u0000\u0000\u09ca\u09cb\u0001\u0000\u0000\u0000\u09cb\u09e2\u0001"+
		"\u0000\u0000\u0000\u09cc\u09cd\u0005\u01b8\u0000\u0000\u09cd\u09cf\u0003"+
		"\u0170\u00b8\u0000\u09ce\u09d0\u0003\u01ee\u00f7\u0000\u09cf\u09ce\u0001"+
		"\u0000\u0000\u0000\u09cf\u09d0\u0001\u0000\u0000\u0000\u09d0\u09e2\u0001"+
		"\u0000\u0000\u0000\u09d1\u09d3\u0003L&\u0000\u09d2\u09d4\u0003\u01ee\u00f7"+
		"\u0000\u09d3\u09d2\u0001\u0000\u0000\u0000\u09d3\u09d4\u0001\u0000\u0000"+
		"\u0000\u09d4\u09e2\u0001\u0000\u0000\u0000\u09d5\u09d6\u0005\u01b8\u0000"+
		"\u0000\u09d6\u09d8\u0003L&\u0000\u09d7\u09d9\u0003\u01ee\u00f7\u0000\u09d8"+
		"\u09d7\u0001\u0000\u0000\u0000\u09d8\u09d9\u0001\u0000\u0000\u0000\u09d9"+
		"\u09e2\u0001\u0000\u0000\u0000\u09da\u09db\u0005 \u0000\u0000\u09db\u09dc"+
		"\u0003\u00b2Y\u0000\u09dc\u09dd\u0003\u00b4Z\u0000\u09dd\u09df\u0005!"+
		"\u0000\u0000\u09de\u09e0\u0003\u01ee\u00f7\u0000\u09df\u09de\u0001\u0000"+
		"\u0000\u0000\u09df\u09e0\u0001\u0000\u0000\u0000\u09e0\u09e2\u0001\u0000"+
		"\u0000\u0000\u09e1\u09b4\u0001\u0000\u0000\u0000\u09e1\u09b9\u0001\u0000"+
		"\u0000\u0000\u09e1\u09bf\u0001\u0000\u0000\u0000\u09e1\u09c3\u0001\u0000"+
		"\u0000\u0000\u09e1\u09c8\u0001\u0000\u0000\u0000\u09e1\u09cc\u0001\u0000"+
		"\u0000\u0000\u09e1\u09d1\u0001\u0000\u0000\u0000\u09e1\u09d5\u0001\u0000"+
		"\u0000\u0000\u09e1\u09da\u0001\u0000\u0000\u0000\u09e2\u09e7\u0001\u0000"+
		"\u0000\u0000\u09e3\u09e4\n\u0002\u0000\u0000\u09e4\u09e6\u0003\u00b4Z"+
		"\u0000\u09e5\u09e3\u0001\u0000\u0000\u0000\u09e6\u09e9\u0001\u0000\u0000"+
		"\u0000\u09e7\u09e5\u0001\u0000\u0000\u0000\u09e7\u09e8\u0001\u0000\u0000"+
		"\u0000\u09e8\u00b3\u0001\u0000\u0000\u0000\u09e9\u09e7\u0001\u0000\u0000"+
		"\u0000\u09ea\u09eb\u0003\u00b6[\u0000\u09eb\u09ec\u0003\u00b2Y\u0000\u09ec"+
		"\u09f9\u0001\u0000\u0000\u0000\u09ed\u09ee\u0003\u00b8\\\u0000\u09ee\u09ef"+
		"\u0003\u00b2Y\u0000\u09ef\u09f0\u0003\u00be_\u0000\u09f0\u09f9\u0001\u0000"+
		"\u0000\u0000\u09f1\u09f2\u0003\u00ba]\u0000\u09f2\u09f3\u0003\u00b2Y\u0000"+
		"\u09f3\u09f4\u0003\u00be_\u0000\u09f4\u09f9\u0001\u0000\u0000\u0000\u09f5"+
		"\u09f6\u0003\u00bc^\u0000\u09f6\u09f7\u0003\u00b2Y\u0000\u09f7\u09f9\u0001"+
		"\u0000\u0000\u0000\u09f8\u09ea\u0001\u0000\u0000\u0000\u09f8\u09ed\u0001"+
		"\u0000\u0000\u0000\u09f8\u09f1\u0001\u0000\u0000\u0000\u09f8\u09f5\u0001"+
		"\u0000\u0000\u0000\u09f9\u00b5\u0001\u0000\u0000\u0000\u09fa\u09fb\u0005"+
		"~\u0000\u0000\u09fb\u09fc\u0005x\u0000\u0000\u09fc\u00b7\u0001\u0000\u0000"+
		"\u0000\u09fd\u09ff\u0005z\u0000\u0000\u09fe\u09fd\u0001\u0000\u0000\u0000"+
		"\u09fe\u09ff\u0001\u0000\u0000\u0000\u09ff\u0a00\u0001\u0000\u0000\u0000"+
		"\u0a00\u0a01\u0005x\u0000\u0000\u0a01\u00b9\u0001\u0000\u0000\u0000\u0a02"+
		"\u0a04\u0007\u0006\u0000\u0000\u0a03\u0a05\u0005{\u0000\u0000\u0a04\u0a03"+
		"\u0001\u0000\u0000\u0000\u0a04\u0a05\u0001\u0000\u0000\u0000\u0a05\u0a06"+
		"\u0001\u0000\u0000\u0000\u0a06\u0a07\u0005x\u0000\u0000\u0a07\u00bb\u0001"+
		"\u0000\u0000\u0000\u0a08\u0a0a\u0005w\u0000\u0000\u0a09\u0a0b\u0005z\u0000"+
		"\u0000\u0a0a\u0a09\u0001\u0000\u0000\u0000\u0a0a\u0a0b\u0001\u0000\u0000"+
		"\u0000\u0a0b\u0a0c\u0001\u0000\u0000\u0000\u0a0c\u0a14\u0005x\u0000\u0000"+
		"\u0a0d\u0a0e\u0005w\u0000\u0000\u0a0e\u0a10\u0007\u0006\u0000\u0000\u0a0f"+
		"\u0a11\u0005{\u0000\u0000\u0a10\u0a0f\u0001\u0000\u0000\u0000\u0a10\u0a11"+
		"\u0001\u0000\u0000\u0000\u0a11\u0a12\u0001\u0000\u0000\u0000\u0a12\u0a14"+
		"\u0005x\u0000\u0000\u0a13\u0a08\u0001\u0000\u0000\u0000\u0a13\u0a0d\u0001"+
		"\u0000\u0000\u0000\u0a14\u00bd\u0001\u0000\u0000\u0000\u0a15\u0a16\u0005"+
		"\u007f\u0000\u0000\u0a16\u0a17\u0005 \u0000\u0000\u0a17\u0a18\u0003\u01f6"+
		"\u00fb\u0000\u0a18\u0a19\u0005!\u0000\u0000\u0a19\u0a1d\u0001\u0000\u0000"+
		"\u0000\u0a1a\u0a1b\u0005\u0082\u0000\u0000\u0a1b\u0a1d\u0003\u011a\u008d"+
		"\u0000\u0a1c\u0a15\u0001\u0000\u0000\u0000\u0a1c\u0a1a\u0001\u0000\u0000"+
		"\u0000\u0a1d\u00bf\u0001\u0000\u0000\u0000\u0a1e\u0a2a\u0003\u0168\u00b4"+
		"\u0000\u0a1f\u0a20\u0003\u0168\u00b4\u0000\u0a20\u0a21\u0005\u0011\u0000"+
		"\u0000\u0a21\u0a2a\u0001\u0000\u0000\u0000\u0a22\u0a23\u0005\u0139\u0000"+
		"\u0000\u0a23\u0a2a\u0003\u0168\u00b4\u0000\u0a24\u0a25\u0005\u0139\u0000"+
		"\u0000\u0a25\u0a26\u0005 \u0000\u0000\u0a26\u0a27\u0003\u0168\u00b4\u0000"+
		"\u0a27\u0a28\u0005!\u0000\u0000\u0a28\u0a2a\u0001\u0000\u0000\u0000\u0a29"+
		"\u0a1e\u0001\u0000\u0000\u0000\u0a29\u0a1f\u0001\u0000\u0000\u0000\u0a29"+
		"\u0a22\u0001\u0000\u0000\u0000\u0a29\u0a24\u0001\u0000\u0000\u0000\u0a2a"+
		"\u00c1\u0001\u0000\u0000\u0000\u0a2b\u0a2c\u0005\u0080\u0000\u0000\u0a2c"+
		"\u0a2d\u0003\u011a\u008d\u0000\u0a2d\u00c3\u0001\u0000\u0000\u0000\u0a2e"+
		"\u0a34\u0003\u00c2a\u0000\u0a2f\u0a30\u0005\u0080\u0000\u0000\u0a30\u0a31"+
		"\u0005\u00b6\u0000\u0000\u0a31\u0a32\u0005\u015c\u0000\u0000\u0a32\u0a34"+
		"\u0003\u0118\u008c\u0000\u0a33\u0a2e\u0001\u0000\u0000\u0000\u0a33\u0a2f"+
		"\u0001\u0000\u0000\u0000\u0a34\u00c5\u0001\u0000\u0000\u0000\u0a35\u0a36"+
		"\u0005\u009a\u0000\u0000\u0a36\u0a37\u0003\u011a\u008d\u0000\u0a37\u00c7"+
		"\u0001\u0000\u0000\u0000\u0a38\u0a39\u0005\u00bc\u0000\u0000\u0a39\u0a3a"+
		"\u0003\u00cae\u0000\u0a3a\u00c9\u0001\u0000\u0000\u0000\u0a3b\u0a3d\u0003"+
		"\u00ccf\u0000\u0a3c\u0a3b\u0001\u0000\u0000\u0000\u0a3d\u0a3e\u0001\u0000"+
		"\u0000\u0000\u0a3e\u0a3c\u0001\u0000\u0000\u0000\u0a3e\u0a3f\u0001\u0000"+
		"\u0000\u0000\u0a3f\u00cb\u0001\u0000\u0000\u0000\u0a40\u0a44\u0005\u0254"+
		"\u0000\u0000\u0a41\u0a42\u0005\u012e\u0000\u0000\u0a42\u0a44\u0003\u028a"+
		"\u0145\u0000\u0a43\u0a40\u0001\u0000\u0000\u0000\u0a43\u0a41\u0001\u0000"+
		"\u0000\u0000\u0a44\u00cd\u0001\u0000\u0000\u0000\u0a45\u0a47\u0005\u01cd"+
		"\u0000\u0000\u0a46\u0a48\u0005\u00f2\u0000\u0000\u0a47\u0a46\u0001\u0000"+
		"\u0000\u0000\u0a47\u0a48\u0001\u0000\u0000\u0000\u0a48\u0a49\u0001\u0000"+
		"\u0000\u0000\u0a49\u0a4e\u0003\u0168\u00b4\u0000\u0a4a\u0a4b\u0005 \u0000"+
		"\u0000\u0a4b\u0a4c\u0003\u025c\u012e\u0000\u0a4c\u0a4d\u0005!\u0000\u0000"+
		"\u0a4d\u0a4f\u0001\u0000\u0000\u0000\u0a4e\u0a4a\u0001\u0000\u0000\u0000"+
		"\u0a4e\u0a4f\u0001\u0000\u0000\u0000\u0a4f\u0a50\u0001\u0000\u0000\u0000"+
		"\u0a50\u0a52\u0007\u0007\u0000\u0000\u0a51\u0a53\u0005\u0206\u0000\u0000"+
		"\u0a52\u0a51\u0001\u0000\u0000\u0000\u0a52\u0a53\u0001\u0000\u0000\u0000"+
		"\u0a53\u0a54\u0001\u0000\u0000\u0000\u0a54\u0a56\u0007\b\u0000\u0000\u0a55"+
		"\u0a57\u0003\u00e0p\u0000\u0a56\u0a55\u0001\u0000\u0000\u0000\u0a56\u0a57"+
		"\u0001\u0000\u0000\u0000\u0a57\u0a59\u0001\u0000\u0000\u0000\u0a58\u0a5a"+
		"\u0005m\u0000\u0000\u0a59\u0a58\u0001\u0000\u0000\u0000\u0a59\u0a5a\u0001"+
		"\u0000\u0000\u0000\u0a5a\u0a5b\u0001\u0000\u0000\u0000\u0a5b\u0a5d\u0003"+
		"\u00d0h\u0000\u0a5c\u0a5e\u0003\u00c2a\u0000\u0a5d\u0a5c\u0001\u0000\u0000"+
		"\u0000\u0a5d\u0a5e\u0001\u0000\u0000\u0000\u0a5e\u0a6e\u0001\u0000\u0000"+
		"\u0000\u0a5f\u0a60\u0005\u01cd\u0000\u0000\u0a60\u0a61\u0005 \u0000\u0000"+
		"\u0a61\u0a62\u0003b1\u0000\u0a62\u0a63\u0005!\u0000\u0000\u0a63\u0a65"+
		"\u0005\u0087\u0000\u0000\u0a64\u0a66\u0005\u0206\u0000\u0000\u0a65\u0a64"+
		"\u0001\u0000\u0000\u0000\u0a65\u0a66\u0001\u0000\u0000\u0000\u0a66\u0a67"+
		"\u0001\u0000\u0000\u0000\u0a67\u0a69\u0007\b\u0000\u0000\u0a68\u0a6a\u0005"+
		"m\u0000\u0000\u0a69\u0a68\u0001\u0000\u0000\u0000\u0a69\u0a6a\u0001\u0000"+
		"\u0000\u0000\u0a6a\u0a6b\u0001\u0000\u0000\u0000\u0a6b\u0a6c\u0003\u00d0"+
		"h\u0000\u0a6c\u0a6e\u0001\u0000\u0000\u0000\u0a6d\u0a45\u0001\u0000\u0000"+
		"\u0000\u0a6d\u0a5f\u0001\u0000\u0000\u0000\u0a6e\u00cf\u0001\u0000\u0000"+
		"\u0000\u0a6f\u0a75\u0003\u00dcn\u0000\u0a70\u0a71\u0005 \u0000\u0000\u0a71"+
		"\u0a72\u0003\u00d2i\u0000\u0a72\u0a73\u0005!\u0000\u0000\u0a73\u0a75\u0001"+
		"\u0000\u0000\u0000\u0a74\u0a6f\u0001\u0000\u0000\u0000\u0a74\u0a70\u0001"+
		"\u0000\u0000\u0000\u0a75\u00d1\u0001\u0000\u0000\u0000\u0a76\u0a7b\u0003"+
		"\u00d4j\u0000\u0a77\u0a78\u0005&\u0000\u0000\u0a78\u0a7a\u0003\u00d4j"+
		"\u0000\u0a79\u0a77\u0001\u0000\u0000\u0000\u0a7a\u0a7d\u0001\u0000\u0000"+
		"\u0000\u0a7b\u0a79\u0001\u0000\u0000\u0000\u0a7b\u0a7c\u0001\u0000\u0000"+
		"\u0000\u0a7c\u00d3\u0001\u0000\u0000\u0000\u0a7d\u0a7b\u0001\u0000\u0000"+
		"\u0000\u0a7e\u0a7f\u0003\u026a\u0135\u0000\u0a7f\u0a80\u0003\u00d6k\u0000"+
		"\u0a80\u00d5\u0001\u0000\u0000\u0000\u0a81\u0a89\u0003\u0232\u0119\u0000"+
		"\u0a82\u0a89\u0003\u0244\u0122\u0000\u0a83\u0a89\u0005\u0011\u0000\u0000"+
		"\u0a84\u0a85\u0005 \u0000\u0000\u0a85\u0a86\u0003\u00d8l\u0000\u0a86\u0a87"+
		"\u0005!\u0000\u0000\u0a87\u0a89\u0001\u0000\u0000\u0000\u0a88\u0a81\u0001"+
		"\u0000\u0000\u0000\u0a88\u0a82\u0001\u0000\u0000\u0000\u0a88\u0a83\u0001"+
		"\u0000\u0000\u0000\u0a88\u0a84\u0001\u0000\u0000\u0000\u0a89\u00d7\u0001"+
		"\u0000\u0000\u0000\u0a8a\u0a8f\u0003\u00dam\u0000\u0a8b\u0a8c\u0005&\u0000"+
		"\u0000\u0a8c\u0a8e\u0003\u00dam\u0000\u0a8d\u0a8b\u0001\u0000\u0000\u0000"+
		"\u0a8e\u0a91\u0001\u0000\u0000\u0000\u0a8f\u0a8d\u0001\u0000\u0000\u0000"+
		"\u0a8f\u0a90\u0001\u0000\u0000\u0000\u0a90\u00d9\u0001\u0000\u0000\u0000"+
		"\u0a91\u0a8f\u0001\u0000\u0000\u0000\u0a92\u0a93\u0003\u0232\u0119\u0000"+
		"\u0a93\u00db\u0001\u0000\u0000\u0000\u0a94\u0a96\u0003\u00deo\u0000\u0a95"+
		"\u0a94\u0001\u0000\u0000\u0000\u0a96\u0a99\u0001\u0000\u0000\u0000\u0a97"+
		"\u0a95\u0001\u0000\u0000\u0000\u0a97\u0a98\u0001\u0000\u0000\u0000\u0a98"+
		"\u00dd\u0001\u0000\u0000\u0000\u0a99\u0a97\u0001\u0000\u0000\u0000\u0a9a"+
		"\u0ac2\u0005\u00f2\u0000\u0000\u0a9b\u0ac2\u0005\u023e\u0000\u0000\u0a9c"+
		"\u0a9e\u0005\u01e7\u0000\u0000\u0a9d\u0a9f\u0005\u0081\u0000\u0000\u0a9e"+
		"\u0a9d\u0001\u0000\u0000\u0000\u0a9e\u0a9f\u0001\u0000\u0000\u0000\u0a9f"+
		"\u0aa0\u0001\u0000\u0000\u0000\u0aa0\u0ac2\u0005\u0254\u0000\u0000\u0aa1"+
		"\u0aa3\u0005\u008c\u0000\u0000\u0aa2\u0aa4\u0005\u0081\u0000\u0000\u0aa3"+
		"\u0aa2\u0001\u0000\u0000\u0000\u0aa3\u0aa4\u0001\u0000\u0000\u0000\u0aa4"+
		"\u0aa5\u0001\u0000\u0000\u0000\u0aa5\u0ac2\u0005\u0254\u0000\u0000\u0aa6"+
		"\u0ac2\u0005\u01cf\u0000\u0000\u0aa7\u0ac2\u0005\u01f6\u0000\u0000\u0aa8"+
		"\u0aaa\u0005\u020d\u0000\u0000\u0aa9\u0aab\u0005\u0081\u0000\u0000\u0aaa"+
		"\u0aa9\u0001\u0000\u0000\u0000\u0aaa\u0aab\u0001\u0000\u0000\u0000\u0aab"+
		"\u0aac\u0001\u0000\u0000\u0000\u0aac\u0ac2\u0005\u0254\u0000\u0000\u0aad"+
		"\u0aaf\u0005\u00f3\u0000\u0000\u0aae\u0ab0\u0005\u0081\u0000\u0000\u0aaf"+
		"\u0aae\u0001\u0000\u0000\u0000\u0aaf\u0ab0\u0001\u0000\u0000\u0000\u0ab0"+
		"\u0ab1\u0001\u0000\u0000\u0000\u0ab1\u0ac2\u0005\u0254\u0000\u0000\u0ab2"+
		"\u0ab3\u0005\u0123\u0000\u0000\u0ab3\u0ab4\u0005\u020d\u0000\u0000\u0ab4"+
		"\u0ac2\u0003\u025c\u012e\u0000\u0ab5\u0ab6\u0005\u0123\u0000\u0000\u0ab6"+
		"\u0ab7\u0005\u020d\u0000\u0000\u0ab7\u0ac2\u0005\u0011\u0000\u0000\u0ab8"+
		"\u0ab9\u0005\u0123\u0000\u0000\u0ab9\u0aba\u0005\u008b\u0000\u0000\u0aba"+
		"\u0abb\u0005\u008c\u0000\u0000\u0abb\u0ac2\u0003\u025c\u012e\u0000\u0abc"+
		"\u0abd\u0005\u0123\u0000\u0000\u0abd\u0abe\u0005\u008c\u0000\u0000\u0abe"+
		"\u0ac2\u0003\u025c\u012e\u0000\u0abf\u0ac0\u0005\u01e5\u0000\u0000\u0ac0"+
		"\u0ac2\u0005\u0254\u0000\u0000\u0ac1\u0a9a\u0001\u0000\u0000\u0000\u0ac1"+
		"\u0a9b\u0001\u0000\u0000\u0000\u0ac1\u0a9c\u0001\u0000\u0000\u0000\u0ac1"+
		"\u0aa1\u0001\u0000\u0000\u0000\u0ac1\u0aa6\u0001\u0000\u0000\u0000\u0ac1"+
		"\u0aa7\u0001\u0000\u0000\u0000\u0ac1\u0aa8\u0001\u0000\u0000\u0000\u0ac1"+
		"\u0aad\u0001\u0000\u0000\u0000\u0ac1\u0ab2\u0001\u0000\u0000\u0000\u0ac1"+
		"\u0ab5\u0001\u0000\u0000\u0000\u0ac1\u0ab8\u0001\u0000\u0000\u0000\u0ac1"+
		"\u0abc\u0001\u0000\u0000\u0000\u0ac1\u0abf\u0001\u0000\u0000\u0000\u0ac2"+
		"\u00df\u0001\u0000\u0000\u0000\u0ac3\u0ac5\u0005\u007f\u0000\u0000\u0ac4"+
		"\u0ac3\u0001\u0000\u0000\u0000\u0ac4\u0ac5\u0001\u0000\u0000\u0000\u0ac5"+
		"\u0ac6\u0001\u0000\u0000\u0000\u0ac6\u0ac7\u0005\u01f4\u0000\u0000\u0ac7"+
		"\u0ac8\u0005\u0254\u0000\u0000\u0ac8\u00e1\u0001\u0000\u0000\u0000\u0ac9"+
		"\u0acb\u0005*\u0000\u0000\u0aca\u0acc\u0003\u00e8t\u0000\u0acb\u0aca\u0001"+
		"\u0000\u0000\u0000\u0acb\u0acc\u0001\u0000\u0000\u0000\u0acc\u0ad0\u0001"+
		"\u0000\u0000\u0000\u0acd\u0ace\u0005+\u0000\u0000\u0ace\u0ad0\u0005\u0255"+
		"\u0000\u0000\u0acf\u0ac9\u0001\u0000\u0000\u0000\u0acf\u0acd\u0001\u0000"+
		"\u0000\u0000\u0ad0\u00e3\u0001\u0000\u0000\u0000\u0ad1\u0ad2\u0007\t\u0000"+
		"\u0000\u0ad2\u00e5\u0001\u0000\u0000\u0000\u0ad3\u0ad5\u0005\u0010\u0000"+
		"\u0000\u0ad4\u0ad3\u0001\u0000\u0000\u0000\u0ad4\u0ad5\u0001\u0000\u0000"+
		"\u0000\u0ad5\u0ad6\u0001\u0000\u0000\u0000\u0ad6\u0ad8\u0005\u0255\u0000"+
		"\u0000\u0ad7\u0ad9\u0003\u00e8t\u0000\u0ad8\u0ad7\u0001\u0000\u0000\u0000"+
		"\u0ad8\u0ad9\u0001\u0000\u0000\u0000\u0ad9\u00e7\u0001\u0000\u0000\u0000"+
		"\u0ada\u0adb\u00050\u0000\u0000\u0adb\u0adc\u0005\u0253\u0000\u0000\u0adc"+
		"\u00e9\u0001\u0000\u0000\u0000\u0add\u0adf\u00053\u0000\u0000\u0ade\u0add"+
		"\u0001\u0000\u0000\u0000\u0ade\u0adf\u0001\u0000\u0000\u0000\u0adf\u0ae0"+
		"\u0001\u0000\u0000\u0000\u0ae0\u0ae2\u0005\u0253\u0000\u0000\u0ae1\u0ae3"+
		"\u0003\u00ecv\u0000\u0ae2\u0ae1\u0001\u0000\u0000\u0000\u0ae2\u0ae3\u0001"+
		"\u0000\u0000\u0000\u0ae3\u0ae6\u0001\u0000\u0000\u0000\u0ae4\u0ae6\u0003"+
		"\u00eew\u0000\u0ae5\u0ade\u0001\u0000\u0000\u0000\u0ae5\u0ae4\u0001\u0000"+
		"\u0000\u0000\u0ae6\u00eb\u0001\u0000\u0000\u0000\u0ae7\u0ae8\u0005\u015d"+
		"\u0000\u0000\u0ae8\u0ae9\u0005\u0254\u0000\u0000\u0ae9\u00ed\u0001\u0000"+
		"\u0000\u0000\u0aea\u0aeb\u0007\n\u0000\u0000\u0aeb\u00ef\u0001\u0000\u0000"+
		"\u0000\u0aec\u0aed\u0007\u000b\u0000\u0000\u0aed\u00f1\u0001\u0000\u0000"+
		"\u0000\u0aee\u0aef\u0003\u00eau\u0000\u0aef\u00f3\u0001\u0000\u0000\u0000"+
		"\u0af0\u0af1\u0003\u00eau\u0000\u0af1\u00f5\u0001\u0000\u0000\u0000\u0af2"+
		"\u0af3\u0003\u00fc~\u0000\u0af3\u0af4\u0005\u0014\u0000\u0000\u0af4\u0af6"+
		"\u0001\u0000\u0000\u0000\u0af5\u0af2\u0001\u0000\u0000\u0000\u0af5\u0af6"+
		"\u0001\u0000\u0000\u0000\u0af6\u0af7\u0001\u0000\u0000\u0000\u0af7\u0af8"+
		"\u0003\u00eau\u0000\u0af8\u00f7\u0001\u0000\u0000\u0000\u0af9\u0afa\u0003"+
		"\u00fc~\u0000\u0afa\u0afb\u0005\u0014\u0000\u0000\u0afb\u0afd\u0001\u0000"+
		"\u0000\u0000\u0afc\u0af9\u0001\u0000\u0000\u0000\u0afc\u0afd\u0001\u0000"+
		"\u0000\u0000\u0afd\u0afe\u0001\u0000\u0000\u0000\u0afe\u0aff\u0003\u00fe"+
		"\u007f\u0000\u0aff\u00f9\u0001\u0000\u0000\u0000\u0b00\u0b01\u0003\u00fc"+
		"~\u0000\u0b01\u0b02\u0005\u0014\u0000\u0000\u0b02\u0b04\u0001\u0000\u0000"+
		"\u0000\u0b03\u0b00\u0001\u0000\u0000\u0000\u0b03\u0b04\u0001\u0000\u0000"+
		"\u0000\u0b04\u0b05\u0001\u0000\u0000\u0000\u0b05\u0b06\u0003\u00fe\u007f"+
		"\u0000\u0b06\u00fb\u0001\u0000\u0000\u0000\u0b07\u0b08\u0003\u00eau\u0000"+
		"\u0b08\u00fd\u0001\u0000\u0000\u0000\u0b09\u0b0a\u0003\u00eau\u0000\u0b0a"+
		"\u00ff\u0001\u0000\u0000\u0000\u0b0b\u0b0c\u0003\u00eau\u0000\u0b0c\u0101"+
		"\u0001\u0000\u0000\u0000\u0b0d\u0b0f\u0005 \u0000\u0000\u0b0e\u0b0d\u0001"+
		"\u0000\u0000\u0000\u0b0e\u0b0f\u0001\u0000\u0000\u0000\u0b0f\u0b10\u0001"+
		"\u0000\u0000\u0000\u0b10\u0b15\u0003\u00f8|\u0000\u0b11\u0b12\u0005&\u0000"+
		"\u0000\u0b12\u0b14\u0003\u00f8|\u0000\u0b13\u0b11\u0001\u0000\u0000\u0000"+
		"\u0b14\u0b17\u0001\u0000\u0000\u0000\u0b15\u0b13\u0001\u0000\u0000\u0000"+
		"\u0b15\u0b16\u0001\u0000\u0000\u0000\u0b16\u0b19\u0001\u0000\u0000\u0000"+
		"\u0b17\u0b15\u0001\u0000\u0000\u0000\u0b18\u0b1a\u0005!\u0000\u0000\u0b19"+
		"\u0b18\u0001\u0000\u0000\u0000\u0b19\u0b1a\u0001\u0000\u0000\u0000\u0b1a"+
		"\u0103\u0001\u0000\u0000\u0000\u0b1b\u0b1c\u0005 \u0000\u0000\u0b1c\u0b21"+
		"\u0003\u00fa}\u0000\u0b1d\u0b1e\u0005&\u0000\u0000\u0b1e\u0b20\u0003\u00fa"+
		"}\u0000\u0b1f\u0b1d\u0001\u0000\u0000\u0000\u0b20\u0b23\u0001\u0000\u0000"+
		"\u0000\u0b21\u0b1f\u0001\u0000\u0000\u0000\u0b21\u0b22\u0001\u0000\u0000"+
		"\u0000\u0b22\u0b24\u0001\u0000\u0000\u0000\u0b23\u0b21\u0001\u0000\u0000"+
		"\u0000\u0b24\u0b25\u0005!\u0000\u0000\u0b25\u0105\u0001\u0000\u0000\u0000"+
		"\u0b26\u0b29\u0005\u0254\u0000\u0000\u0b27\u0b29\u0003\u00eau\u0000\u0b28"+
		"\u0b26\u0001\u0000\u0000\u0000\u0b28\u0b27\u0001\u0000\u0000\u0000\u0b29"+
		"\u0107\u0001\u0000\u0000\u0000\u0b2a\u0b2b\u0003\u00eau\u0000\u0b2b\u0109"+
		"\u0001\u0000\u0000\u0000\u0b2c\u0b2d\u0003\u00eau\u0000\u0b2d\u010b\u0001"+
		"\u0000\u0000\u0000\u0b2e\u0b30\u0005a\u0000\u0000\u0b2f\u0b2e\u0001\u0000"+
		"\u0000\u0000\u0b2f\u0b30\u0001\u0000\u0000\u0000\u0b30\u0b31\u0001\u0000"+
		"\u0000\u0000\u0b31\u0b32\u0005d\u0000\u0000\u0b32\u010d\u0001\u0000\u0000"+
		"\u0000\u0b33\u0b34\u0007\f\u0000\u0000\u0b34\u010f\u0001\u0000\u0000\u0000"+
		"\u0b35\u0b36\u0007\r\u0000\u0000\u0b36\u0111\u0001\u0000\u0000\u0000\u0b37"+
		"\u0b38\u0007\u000e\u0000\u0000\u0b38\u0113\u0001\u0000\u0000\u0000\u0b39"+
		"\u0b3a\u0007\u000f\u0000\u0000\u0b3a\u0115\u0001\u0000\u0000\u0000\u0b3b"+
		"\u0b53\u0005\u0094\u0000\u0000\u0b3c\u0b53\u0005.\u0000\u0000\u0b3d\u0b3e"+
		"\u0005\u008b\u0000\u0000\u0b3e\u0b53\u0005\u0094\u0000\u0000\u0b3f\u0b53"+
		"\u0005/\u0000\u0000\u0b40\u0b53\u0005\u01a5\u0000\u0000\u0b41\u0b53\u0005"+
		"1\u0000\u0000\u0b42\u0b43\u0005\u008b\u0000\u0000\u0b43\u0b53\u0005\u01a5"+
		"\u0000\u0000\u0b44\u0b53\u00052\u0000\u0000\u0b45\u0b46\u0005\u01a6\u0000"+
		"\u0000\u0b46\u0b53\u0005\u0087\u0000\u0000\u0b47\u0b48\u0005\u008b\u0000"+
		"\u0000\u0b48\u0b49\u0005\u01a6\u0000\u0000\u0b49\u0b53\u0005\u0087\u0000"+
		"\u0000\u0b4a\u0b53\u0005\u0007\u0000\u0000\u0b4b\u0b4c\u0005\u0006\u0000"+
		"\u0000\u0b4c\u0b53\u0005\u0007\u0000\u0000\u0b4d\u0b4e\u0005\u0007\u0000"+
		"\u0000\u0b4e\u0b53\u0005\u0011\u0000\u0000\u0b4f\u0b50\u0005\u0006\u0000"+
		"\u0000\u0b50\u0b51\u0005\u0007\u0000\u0000\u0b51\u0b53\u0005\u0011\u0000"+
		"\u0000\u0b52\u0b3b\u0001\u0000\u0000\u0000\u0b52\u0b3c\u0001\u0000\u0000"+
		"\u0000\u0b52\u0b3d\u0001\u0000\u0000\u0000\u0b52\u0b3f\u0001\u0000\u0000"+
		"\u0000\u0b52\u0b40\u0001\u0000\u0000\u0000\u0b52\u0b41\u0001\u0000\u0000"+
		"\u0000\u0b52\u0b42\u0001\u0000\u0000\u0000\u0b52\u0b44\u0001\u0000\u0000"+
		"\u0000\u0b52\u0b45\u0001\u0000\u0000\u0000\u0b52\u0b47\u0001\u0000\u0000"+
		"\u0000\u0b52\u0b4a\u0001\u0000\u0000\u0000\u0b52\u0b4b\u0001\u0000\u0000"+
		"\u0000\u0b52\u0b4d\u0001\u0000\u0000\u0000\u0b52\u0b4f\u0001\u0000\u0000"+
		"\u0000\u0b53\u0117\u0001\u0000\u0000\u0000\u0b54\u0b55\u0003\u00fe\u007f"+
		"\u0000\u0b55\u0119\u0001\u0000\u0000\u0000\u0b56\u0b57\u0006\u008d\uffff"+
		"\uffff\u0000\u0b57\u0b6f\u0003\u011e\u008f\u0000\u0b58\u0b59\u0005\u000f"+
		"\u0000\u0000\u0b59\u0b6f\u0003\u011a\u008d8\u0b5a\u0b5b\u0005\u0010\u0000"+
		"\u0000\u0b5b\u0b6f\u0003\u011a\u008d7\u0b5c\u0b5d\u0005M\u0000\u0000\u0b5d"+
		"\u0b6f\u0003\u011a\u008d/\u0b5e\u0b5f\u0005\u0007\u0000\u0000\u0b5f\u0b6f"+
		"\u0003\u011a\u008d,\u0b60\u0b61\u0005N\u0000\u0000\u0b61\u0b6f\u0003\u011a"+
		"\u008d+\u0b62\u0b63\u0003\u0136\u009b\u0000\u0b63\u0b64\u0003\u011a\u008d"+
		"(\u0b64\u0b6f\u0001\u0000\u0000\u0000\u0b65\u0b66\u0005\u008b\u0000\u0000"+
		"\u0b66\u0b6f\u0003\u011a\u008d$\u0b67\u0b68\u0003\u014c\u00a6\u0000\u0b68"+
		"\u0b69\u0005\u00e8\u0000\u0000\u0b69\u0b6a\u0003\u014c\u00a6\u0000\u0b6a"+
		"\u0b6f\u0001\u0000\u0000\u0000\u0b6b\u0b6c\u0005b\u0000\u0000\u0b6c\u0b6f"+
		"\u0003L&\u0000\u0b6d\u0b6f\u0005\u00b5\u0000\u0000\u0b6e\u0b56\u0001\u0000"+
		"\u0000\u0000\u0b6e\u0b58\u0001\u0000\u0000\u0000\u0b6e\u0b5a\u0001\u0000"+
		"\u0000\u0000\u0b6e\u0b5c\u0001\u0000\u0000\u0000\u0b6e\u0b5e\u0001\u0000"+
		"\u0000\u0000\u0b6e\u0b60\u0001\u0000\u0000\u0000\u0b6e\u0b62\u0001\u0000"+
		"\u0000\u0000\u0b6e\u0b65\u0001\u0000\u0000\u0000\u0b6e\u0b67\u0001\u0000"+
		"\u0000\u0000\u0b6e\u0b6b\u0001\u0000\u0000\u0000\u0b6e\u0b6d\u0001\u0000"+
		"\u0000\u0000\u0b6f\u0c42\u0001\u0000\u0000\u0000\u0b70\u0b71\n9\u0000"+
		"\u0000\u0b71\u0b72\u0005\u00ea\u0000\u0000\u0b72\u0b73\u0005\u00a8\u0000"+
		"\u0000\u0b73\u0b74\u0005\u015b\u0000\u0000\u0b74\u0c41\u0003\u011a\u008d"+
		":\u0b75\u0b76\n6\u0000\u0000\u0b76\u0b77\u0005\u000f\u0000\u0000\u0b77"+
		"\u0c41\u0003\u011a\u008d7\u0b78\u0b79\n5\u0000\u0000\u0b79\u0b7a\u0005"+
		"\u0010\u0000\u0000\u0b7a\u0c41\u0003\u011a\u008d6\u0b7b\u0b7c\n4\u0000"+
		"\u0000\u0b7c\u0b7d\u0005\u0011\u0000\u0000\u0b7d\u0c41\u0003\u011a\u008d"+
		"5\u0b7e\u0b7f\n3\u0000\u0000\u0b7f\u0b80\u0005\u0012\u0000\u0000\u0b80"+
		"\u0c41\u0003\u011a\u008d4\u0b81\u0b82\n2\u0000\u0000\u0b82\u0b83\u0005"+
		"\r\u0000\u0000\u0b83\u0c41\u0003\u011a\u008d3\u0b84\u0b85\n1\u0000\u0000"+
		"\u0b85\u0b86\u0005\f\u0000\u0000\u0b86\u0c41\u0003\u011a\u008d2\u0b87"+
		"\u0b88\n0\u0000\u0000\u0b88\u0b89\u0005\t\u0000\u0000\u0b89\u0c41\u0003"+
		"\u011a\u008d1\u0b8a\u0b8b\n-\u0000\u0000\u0b8b\u0b8c\u0005\u001f\u0000"+
		"\u0000\u0b8c\u0c41\u0003\u011a\u008d.\u0b8d\u0b8e\n*\u0000\u0000\u0b8e"+
		"\u0b8f\u0005\b\u0000\u0000\u0b8f\u0c41\u0003\u011a\u008d+\u0b90\u0b91"+
		"\n)\u0000\u0000\u0b91\u0b92\u0003\u0136\u009b\u0000\u0b92\u0b93\u0003"+
		"\u011a\u008d*\u0b93\u0c41\u0001\u0000\u0000\u0000\u0b94\u0b95\n&\u0000"+
		"\u0000\u0b95\u0b96\u0003\u0112\u0089\u0000\u0b96\u0b97\u0003\u011a\u008d"+
		"\'\u0b97\u0c41\u0001\u0000\u0000\u0000\u0b98\u0b99\n%\u0000\u0000\u0b99"+
		"\u0b9a\u0003\u0114\u008a\u0000\u0b9a\u0b9b\u0003\u011a\u008d&\u0b9b\u0c41"+
		"\u0001\u0000\u0000\u0000\u0b9c\u0b9d\n#\u0000\u0000\u0b9d\u0b9e\u0003"+
		"\u0116\u008b\u0000\u0b9e\u0b9f\u0003\u011a\u008d\u0000\u0b9f\u0ba0\u0005"+
		"\u00f3\u0000\u0000\u0ba0\u0ba1\u0003\u011a\u008d$\u0ba1\u0c41\u0001\u0000"+
		"\u0000\u0000\u0ba2\u0ba3\n\"\u0000\u0000\u0ba3\u0ba4\u0003\u0116\u008b"+
		"\u0000\u0ba4\u0ba5\u0003\u011a\u008d#\u0ba5\u0c41\u0001\u0000\u0000\u0000"+
		"\u0ba6\u0ba7\n\u0016\u0000\u0000\u0ba7\u0ba8\u0005\u008a\u0000\u0000\u0ba8"+
		"\u0ba9\u0005o\u0000\u0000\u0ba9\u0baa\u0005v\u0000\u0000\u0baa\u0c41\u0003"+
		"\u011a\u008d\u0017\u0bab\u0bac\n\u0015\u0000\u0000\u0bac\u0bad\u0005\u008a"+
		"\u0000\u0000\u0bad\u0bae\u0005\u008b\u0000\u0000\u0bae\u0baf\u0005o\u0000"+
		"\u0000\u0baf\u0bb0\u0005v\u0000\u0000\u0bb0\u0c41\u0003\u011a\u008d\u0016"+
		"\u0bb1\u0bb2\n\u0012\u0000\u0000\u0bb2\u0bb4\u0005\u0090\u0000\u0000\u0bb3"+
		"\u0bb5\u0005\u01ac\u0000\u0000\u0bb4\u0bb3\u0001\u0000\u0000\u0000\u0bb4"+
		"\u0bb5\u0001\u0000\u0000\u0000\u0bb5\u0bb6\u0001\u0000\u0000\u0000\u0bb6"+
		"\u0bb7\u0003\u011c\u008e\u0000\u0bb7\u0bb8\u0005\u0088\u0000\u0000\u0bb8"+
		"\u0bb9\u0003\u011a\u008d\u0013\u0bb9\u0c41\u0001\u0000\u0000\u0000\u0bba"+
		"\u0bbb\n\u0011\u0000\u0000\u0bbb\u0bbc\u0005\u008b\u0000\u0000\u0bbc\u0bbe"+
		"\u0005\u0090\u0000\u0000\u0bbd\u0bbf\u0005\u01ac\u0000\u0000\u0bbe\u0bbd"+
		"\u0001\u0000\u0000\u0000\u0bbe\u0bbf\u0001\u0000\u0000\u0000\u0bbf\u0bc0"+
		"\u0001\u0000\u0000\u0000\u0bc0\u0bc1\u0003\u011c\u008e\u0000\u0bc1\u0bc2"+
		"\u0005\u0088\u0000\u0000\u0bc2\u0bc3\u0003\u011a\u008d\u0012\u0bc3\u0c41"+
		"\u0001\u0000\u0000\u0000\u0bc4\u0bc5\n\u0010\u0000\u0000\u0bc5\u0bc6\u0005"+
		"\u0090\u0000\u0000\u0bc6\u0bc7\u0005\u01a9\u0000\u0000\u0bc7\u0bc8\u0003"+
		"\u011c\u008e\u0000\u0bc8\u0bc9\u0005\u0088\u0000\u0000\u0bc9\u0bca\u0003"+
		"\u011a\u008d\u0011\u0bca\u0c41\u0001\u0000\u0000\u0000\u0bcb\u0bcc\n\u000f"+
		"\u0000\u0000\u0bcc\u0bcd\u0005\u008b\u0000\u0000\u0bcd\u0bce\u0005\u0090"+
		"\u0000\u0000\u0bce\u0bcf\u0005\u01a9\u0000\u0000\u0bcf\u0bd0\u0003\u011c"+
		"\u008e\u0000\u0bd0\u0bd1\u0005\u0088\u0000\u0000\u0bd1\u0bd2\u0003\u011a"+
		"\u008d\u0010\u0bd2\u0c41\u0001\u0000\u0000\u0000\u0bd3\u0bd4\n\u0003\u0000"+
		"\u0000\u0bd4\u0bd5\u0003\u010e\u0087\u0000\u0bd5\u0bd6\u0003\u011a\u008d"+
		"\u0004\u0bd6\u0c41\u0001\u0000\u0000\u0000\u0bd7\u0bd8\n\u0002\u0000\u0000"+
		"\u0bd8\u0bd9\u0003\u0110\u0088\u0000\u0bd9\u0bda\u0003\u011a\u008d\u0003"+
		"\u0bda\u0c41\u0001\u0000\u0000\u0000\u0bdb\u0bdc\n;\u0000\u0000\u0bdc"+
		"\u0bdd\u00050\u0000\u0000\u0bdd\u0c41\u0003\u018a\u00c5\u0000\u0bde\u0bdf"+
		"\n:\u0000\u0000\u0bdf\u0be0\u0005\u010d\u0000\u0000\u0be0\u0c41\u0003"+
		"\u01ec\u00f6\u0000\u0be1\u0be2\n.\u0000\u0000\u0be2\u0c41\u0005\u0006"+
		"\u0000\u0000\u0be3\u0be4\n\'\u0000\u0000\u0be4\u0c41\u0003\u0136\u009b"+
		"\u0000\u0be5\u0be6\n!\u0000\u0000\u0be6\u0be7\u0005\u008a\u0000\u0000"+
		"\u0be7\u0c41\u0005\u008c\u0000\u0000\u0be8\u0be9\n \u0000\u0000\u0be9"+
		"\u0c41\u0005\u01a7\u0000\u0000\u0bea\u0beb\n\u001f\u0000\u0000\u0beb\u0bec"+
		"\u0005\u008a\u0000\u0000\u0bec\u0bed\u0005\u008b\u0000\u0000\u0bed\u0c41"+
		"\u0005\u008c\u0000\u0000\u0bee\u0bef\n\u001e\u0000\u0000\u0bef\u0c41\u0005"+
		"\u01a8\u0000\u0000\u0bf0\u0bf1\n\u001c\u0000\u0000\u0bf1\u0bf2\u0005\u008a"+
		"\u0000\u0000\u0bf2\u0c41\u0005\u008d\u0000\u0000\u0bf3\u0bf4\n\u001b\u0000"+
		"\u0000\u0bf4\u0bf5\u0005\u008a\u0000\u0000\u0bf5\u0bf6\u0005\u008b\u0000"+
		"\u0000\u0bf6\u0c41\u0005\u008d\u0000\u0000\u0bf7\u0bf8\n\u001a\u0000\u0000"+
		"\u0bf8\u0bf9\u0005\u008a\u0000\u0000\u0bf9\u0c41\u0005\u008e\u0000\u0000"+
		"\u0bfa\u0bfb\n\u0019\u0000\u0000\u0bfb\u0bfc\u0005\u008a\u0000\u0000\u0bfc"+
		"\u0bfd\u0005\u008b\u0000\u0000\u0bfd\u0c41\u0005\u008e\u0000\u0000\u0bfe"+
		"\u0bff\n\u0018\u0000\u0000\u0bff\u0c00\u0005\u008a\u0000\u0000\u0c00\u0c41"+
		"\u0005\u00f8\u0000\u0000\u0c01\u0c02\n\u0017\u0000\u0000\u0c02\u0c03\u0005"+
		"\u008a\u0000\u0000\u0c03\u0c04\u0005\u008b\u0000\u0000\u0c04\u0c41\u0005"+
		"\u00f8\u0000\u0000\u0c05\u0c06\n\u0014\u0000\u0000\u0c06\u0c07\u0005\u008a"+
		"\u0000\u0000\u0c07\u0c08\u0005\u015c\u0000\u0000\u0c08\u0c09\u0005 \u0000"+
		"\u0000\u0c09\u0c0a\u0003\u015e\u00af\u0000\u0c0a\u0c0b\u0005!\u0000\u0000"+
		"\u0c0b\u0c41\u0001\u0000\u0000\u0000\u0c0c\u0c0d\n\u0013\u0000\u0000\u0c0d"+
		"\u0c0e\u0005\u008a\u0000\u0000\u0c0e\u0c0f\u0005\u008b\u0000\u0000\u0c0f"+
		"\u0c10\u0005\u015c\u0000\u0000\u0c10\u0c11\u0005 \u0000\u0000\u0c11\u0c12"+
		"\u0003\u015e\u00af\u0000\u0c12\u0c13\u0005!\u0000\u0000\u0c13\u0c41\u0001"+
		"\u0000\u0000\u0000\u0c14\u0c15\n\u000e\u0000\u0000\u0c15\u0c16\u0005\u0091"+
		"\u0000\u0000\u0c16\u0c41\u0003\u0128\u0094\u0000\u0c17\u0c18\n\r\u0000"+
		"\u0000\u0c18\u0c19\u0005\u008b\u0000\u0000\u0c19\u0c1a\u0005\u0091\u0000"+
		"\u0000\u0c1a\u0c41\u0003\u0128\u0094\u0000\u0c1b\u0c1c\n\f\u0000\u0000"+
		"\u0c1c\u0c1d\u0003\u0138\u009c\u0000\u0c1d\u0c1e\u0003\u0152\u00a9\u0000"+
		"\u0c1e\u0c1f\u0003L&\u0000\u0c1f\u0c41\u0001\u0000\u0000\u0000\u0c20\u0c21"+
		"\n\u000b\u0000\u0000\u0c21\u0c22\u0003\u0138\u009c\u0000\u0c22\u0c23\u0003"+
		"\u0152\u00a9\u0000\u0c23\u0c24\u0005 \u0000\u0000\u0c24\u0c25\u0003\u011a"+
		"\u008d\u0000\u0c25\u0c26\u0005!\u0000\u0000\u0c26\u0c41\u0001\u0000\u0000"+
		"\u0000\u0c27\u0c28\n\t\u0000\u0000\u0c28\u0c29\u0005\u008a\u0000\u0000"+
		"\u0c29\u0c41\u0005\u01aa\u0000\u0000\u0c2a\u0c2b\n\b\u0000\u0000\u0c2b"+
		"\u0c2c\u0005\u008a\u0000\u0000\u0c2c\u0c2d\u0005\u008b\u0000\u0000\u0c2d"+
		"\u0c41\u0005\u01aa\u0000\u0000\u0c2e\u0c2f\n\u0007\u0000\u0000\u0c2f\u0c30"+
		"\u0005\u008a\u0000\u0000\u0c30\u0c41\u0005\u01ab\u0000\u0000\u0c31\u0c32"+
		"\n\u0006\u0000\u0000\u0c32\u0c33\u0005\u008a\u0000\u0000\u0c33\u0c34\u0003"+
		"\u01be\u00df\u0000\u0c34\u0c35\u0005\u01ab\u0000\u0000\u0c35\u0c41\u0001"+
		"\u0000\u0000\u0000\u0c36\u0c37\n\u0005\u0000\u0000\u0c37\u0c38\u0005\u008a"+
		"\u0000\u0000\u0c38\u0c39\u0005\u008b\u0000\u0000\u0c39\u0c41\u0005\u01ab"+
		"\u0000\u0000\u0c3a\u0c3b\n\u0004\u0000\u0000\u0c3b\u0c3c\u0005\u008a\u0000"+
		"\u0000\u0c3c\u0c3d\u0005\u008b\u0000\u0000\u0c3d\u0c3e\u0003\u01be\u00df"+
		"\u0000\u0c3e\u0c3f\u0005\u01ab\u0000\u0000\u0c3f\u0c41\u0001\u0000\u0000"+
		"\u0000\u0c40\u0b70\u0001\u0000\u0000\u0000\u0c40\u0b75\u0001\u0000\u0000"+
		"\u0000\u0c40\u0b78\u0001\u0000\u0000\u0000\u0c40\u0b7b\u0001\u0000\u0000"+
		"\u0000\u0c40\u0b7e\u0001\u0000\u0000\u0000\u0c40\u0b81\u0001\u0000\u0000"+
		"\u0000\u0c40\u0b84\u0001\u0000\u0000\u0000\u0c40\u0b87\u0001\u0000\u0000"+
		"\u0000\u0c40\u0b8a\u0001\u0000\u0000\u0000\u0c40\u0b8d\u0001\u0000\u0000"+
		"\u0000\u0c40\u0b90\u0001\u0000\u0000\u0000\u0c40\u0b94\u0001\u0000\u0000"+
		"\u0000\u0c40\u0b98\u0001\u0000\u0000\u0000\u0c40\u0b9c\u0001\u0000\u0000"+
		"\u0000\u0c40\u0ba2\u0001\u0000\u0000\u0000\u0c40\u0ba6\u0001\u0000\u0000"+
		"\u0000\u0c40\u0bab\u0001\u0000\u0000\u0000\u0c40\u0bb1\u0001\u0000\u0000"+
		"\u0000\u0c40\u0bba\u0001\u0000\u0000\u0000\u0c40\u0bc4\u0001\u0000\u0000"+
		"\u0000\u0c40\u0bcb\u0001\u0000\u0000\u0000\u0c40\u0bd3\u0001\u0000\u0000"+
		"\u0000\u0c40\u0bd7\u0001\u0000\u0000\u0000\u0c40\u0bdb\u0001\u0000\u0000"+
		"\u0000\u0c40\u0bde\u0001\u0000\u0000\u0000\u0c40\u0be1\u0001\u0000\u0000"+
		"\u0000\u0c40\u0be3\u0001\u0000\u0000\u0000\u0c40\u0be5\u0001\u0000\u0000"+
		"\u0000\u0c40\u0be8\u0001\u0000\u0000\u0000\u0c40\u0bea\u0001\u0000\u0000"+
		"\u0000\u0c40\u0bee\u0001\u0000\u0000\u0000\u0c40\u0bf0\u0001\u0000\u0000"+
		"\u0000\u0c40\u0bf3\u0001\u0000\u0000\u0000\u0c40\u0bf7\u0001\u0000\u0000"+
		"\u0000\u0c40\u0bfa\u0001\u0000\u0000\u0000\u0c40\u0bfe\u0001\u0000\u0000"+
		"\u0000\u0c40\u0c01\u0001\u0000\u0000\u0000\u0c40\u0c05\u0001\u0000\u0000"+
		"\u0000\u0c40\u0c0c\u0001\u0000\u0000\u0000\u0c40\u0c14\u0001\u0000\u0000"+
		"\u0000\u0c40\u0c17\u0001\u0000\u0000\u0000\u0c40\u0c1b\u0001\u0000\u0000"+
		"\u0000\u0c40\u0c20\u0001\u0000\u0000\u0000\u0c40\u0c27\u0001\u0000\u0000"+
		"\u0000\u0c40\u0c2a\u0001\u0000\u0000\u0000\u0c40\u0c2e\u0001\u0000\u0000"+
		"\u0000\u0c40\u0c31\u0001\u0000\u0000\u0000\u0c40\u0c36\u0001\u0000\u0000"+
		"\u0000\u0c40\u0c3a\u0001\u0000\u0000\u0000\u0c41\u0c44\u0001\u0000\u0000"+
		"\u0000\u0c42\u0c40\u0001\u0000\u0000\u0000\u0c42\u0c43\u0001\u0000\u0000"+
		"\u0000\u0c43\u011b\u0001\u0000\u0000\u0000\u0c44\u0c42\u0001\u0000\u0000"+
		"\u0000\u0c45\u0c46\u0006\u008e\uffff\uffff\u0000\u0c46\u0c4f\u0003\u011e"+
		"\u008f\u0000\u0c47\u0c48\u0005\u000f\u0000\u0000\u0c48\u0c4f\u0003\u011c"+
		"\u008e\u000b\u0c49\u0c4a\u0005\u0010\u0000\u0000\u0c4a\u0c4f\u0003\u011c"+
		"\u008e\n\u0c4b\u0c4c\u0003\u0136\u009b\u0000\u0c4c\u0c4d\u0003\u011c\u008e"+
		"\b\u0c4d\u0c4f\u0001\u0000\u0000\u0000\u0c4e\u0c45\u0001\u0000\u0000\u0000"+
		"\u0c4e\u0c47\u0001\u0000\u0000\u0000\u0c4e\u0c49\u0001\u0000\u0000\u0000"+
		"\u0c4e\u0c4b\u0001\u0000\u0000\u0000\u0c4f\u0c7c\u0001\u0000\u0000\u0000"+
		"\u0c50\u0c51\n\t\u0000\u0000\u0c51\u0c52\u0003\u0136\u009b\u0000\u0c52"+
		"\u0c53\u0003\u011c\u008e\n\u0c53\u0c7b\u0001\u0000\u0000\u0000\u0c54\u0c55"+
		"\n\u0006\u0000\u0000\u0c55\u0c56\u0005\u008a\u0000\u0000\u0c56\u0c57\u0005"+
		"o\u0000\u0000\u0c57\u0c58\u0005v\u0000\u0000\u0c58\u0c7b\u0003\u011c\u008e"+
		"\u0007\u0c59\u0c5a\n\u0005\u0000\u0000\u0c5a\u0c5b\u0005\u008a\u0000\u0000"+
		"\u0c5b\u0c5c\u0005\u008b\u0000\u0000\u0c5c\u0c5d\u0005o\u0000\u0000\u0c5d"+
		"\u0c5e\u0005v\u0000\u0000\u0c5e\u0c7b\u0003\u011c\u008e\u0006\u0c5f\u0c60"+
		"\n\f\u0000\u0000\u0c60\u0c61\u00050\u0000\u0000\u0c61\u0c7b\u0003\u018a"+
		"\u00c5\u0000\u0c62\u0c63\n\u0007\u0000\u0000\u0c63\u0c7b\u0003\u0136\u009b"+
		"\u0000\u0c64\u0c65\n\u0004\u0000\u0000\u0c65\u0c66\u0005\u008a\u0000\u0000"+
		"\u0c66\u0c67\u0005\u015c\u0000\u0000\u0c67\u0c68\u0005 \u0000\u0000\u0c68"+
		"\u0c69\u0003\u015e\u00af\u0000\u0c69\u0c6a\u0005!\u0000\u0000\u0c6a\u0c7b"+
		"\u0001\u0000\u0000\u0000\u0c6b\u0c6c\n\u0003\u0000\u0000\u0c6c\u0c6d\u0005"+
		"\u008a\u0000\u0000\u0c6d\u0c6e\u0005\u008b\u0000\u0000\u0c6e\u0c6f\u0005"+
		"\u015c\u0000\u0000\u0c6f\u0c70\u0005 \u0000\u0000\u0c70\u0c71\u0003\u015e"+
		"\u00af\u0000\u0c71\u0c72\u0005!\u0000\u0000\u0c72\u0c7b\u0001\u0000\u0000"+
		"\u0000\u0c73\u0c74\n\u0002\u0000\u0000\u0c74\u0c75\u0005\u008a\u0000\u0000"+
		"\u0c75\u0c7b\u0005\u01aa\u0000\u0000\u0c76\u0c77\n\u0001\u0000\u0000\u0c77"+
		"\u0c78\u0005\u008a\u0000\u0000\u0c78\u0c79\u0005\u008b\u0000\u0000\u0c79"+
		"\u0c7b\u0005\u01aa\u0000\u0000\u0c7a\u0c50\u0001\u0000\u0000\u0000\u0c7a"+
		"\u0c54\u0001\u0000\u0000\u0000\u0c7a\u0c59\u0001\u0000\u0000\u0000\u0c7a"+
		"\u0c5f\u0001\u0000\u0000\u0000\u0c7a\u0c62\u0001\u0000\u0000\u0000\u0c7a"+
		"\u0c64\u0001\u0000\u0000\u0000\u0c7a\u0c6b\u0001\u0000\u0000\u0000\u0c7a"+
		"\u0c73\u0001\u0000\u0000\u0000\u0c7a\u0c76\u0001\u0000\u0000\u0000\u0c7b"+
		"\u0c7e\u0001\u0000\u0000\u0000\u0c7c\u0c7a\u0001\u0000\u0000\u0000\u0c7c"+
		"\u0c7d\u0001\u0000\u0000\u0000\u0c7d\u011d\u0001\u0000\u0000\u0000\u0c7e"+
		"\u0c7c\u0001\u0000\u0000\u0000\u0c7f\u0c9f\u0003\u00e2q\u0000\u0c80\u0c9f"+
		"\u0003\u0134\u009a\u0000\u0c81\u0c9f\u0003\u0164\u00b2\u0000\u0c82\u0c84"+
		"\u0005\u0242\u0000\u0000\u0c83\u0c85\u0003\u0124\u0092\u0000\u0c84\u0c83"+
		"\u0001\u0000\u0000\u0000\u0c84\u0c85\u0001\u0000\u0000\u0000\u0c85\u0c9f"+
		"\u0001\u0000\u0000\u0000\u0c86\u0c87\u0005 \u0000\u0000\u0c87\u0c88\u0003"+
		"\u011a\u008d\u0000\u0c88\u0c89\u0005!\u0000\u0000\u0c89\u0c8a\u0003\u0122"+
		"\u0091\u0000\u0c8a\u0c9f\u0001\u0000\u0000\u0000\u0c8b\u0c9f\u0003\u012a"+
		"\u0095\u0000\u0c8c\u0c9f\u0003\u017e\u00bf\u0000\u0c8d\u0c9f\u0003L&\u0000"+
		"\u0c8e\u0c8f\u0003L&\u0000\u0c8f\u0c90\u0003\u0120\u0090\u0000\u0c90\u0c9f"+
		"\u0001\u0000\u0000\u0000\u0c91\u0c92\u0005\u008f\u0000\u0000\u0c92\u0c9f"+
		"\u0003L&\u0000\u0c93\u0c94\u0005\u00a5\u0000\u0000\u0c94\u0c9f\u0003L"+
		"&\u0000\u0c95\u0c96\u0005\u00a5\u0000\u0000\u0c96\u0c9f\u0003\u0154\u00aa"+
		"\u0000\u0c97\u0c9f\u0003\u014e\u00a7\u0000\u0c98\u0c9f\u0003\u0150\u00a8"+
		"\u0000\u0c99\u0c9a\u0005\u00e4\u0000\u0000\u0c9a\u0c9b\u0005 \u0000\u0000"+
		"\u0c9b\u0c9c\u0003\u0190\u00c8\u0000\u0c9c\u0c9d\u0005!\u0000\u0000\u0c9d"+
		"\u0c9f\u0001\u0000\u0000\u0000\u0c9e\u0c7f\u0001\u0000\u0000\u0000\u0c9e"+
		"\u0c80\u0001\u0000\u0000\u0000\u0c9e\u0c81\u0001\u0000\u0000\u0000\u0c9e"+
		"\u0c82\u0001\u0000\u0000\u0000\u0c9e\u0c86\u0001\u0000\u0000\u0000\u0c9e"+
		"\u0c8b\u0001\u0000\u0000\u0000\u0c9e\u0c8c\u0001\u0000\u0000\u0000\u0c9e"+
		"\u0c8d\u0001\u0000\u0000\u0000\u0c9e\u0c8e\u0001\u0000\u0000\u0000\u0c9e"+
		"\u0c91\u0001\u0000\u0000\u0000\u0c9e\u0c93\u0001\u0000\u0000\u0000\u0c9e"+
		"\u0c95\u0001\u0000\u0000\u0000\u0c9e\u0c97\u0001\u0000\u0000\u0000\u0c9e"+
		"\u0c98\u0001\u0000\u0000\u0000\u0c9e\u0c99\u0001\u0000\u0000\u0000\u0c9f"+
		"\u011f\u0001\u0000\u0000\u0000\u0ca0\u0ca1\u0006\u0090\uffff\uffff\u0000"+
		"\u0ca1\u0ca2\u0003\u0124\u0092\u0000\u0ca2\u0ca7\u0001\u0000\u0000\u0000"+
		"\u0ca3\u0ca4\n\u0001\u0000\u0000\u0ca4\u0ca6\u0003\u0124\u0092\u0000\u0ca5"+
		"\u0ca3\u0001\u0000\u0000\u0000\u0ca6\u0ca9\u0001\u0000\u0000\u0000\u0ca7"+
		"\u0ca5\u0001\u0000\u0000\u0000\u0ca7\u0ca8\u0001\u0000\u0000\u0000\u0ca8"+
		"\u0121\u0001\u0000\u0000\u0000\u0ca9\u0ca7\u0001\u0000\u0000\u0000\u0caa"+
		"\u0caf\u0006\u0091\uffff\uffff\u0000\u0cab\u0cac\n\u0002\u0000\u0000\u0cac"+
		"\u0cae\u0003\u0124\u0092\u0000\u0cad\u0cab\u0001\u0000\u0000\u0000\u0cae"+
		"\u0cb1\u0001\u0000\u0000\u0000\u0caf\u0cad\u0001\u0000\u0000\u0000\u0caf"+
		"\u0cb0\u0001\u0000\u0000\u0000\u0cb0\u0123\u0001\u0000\u0000\u0000\u0cb1"+
		"\u0caf\u0001\u0000\u0000\u0000\u0cb2\u0cb3\u0005\u0014\u0000\u0000\u0cb3"+
		"\u0cc4\u0003\u01ac\u00d6\u0000\u0cb4\u0cb5\u0005\u0014\u0000\u0000\u0cb5"+
		"\u0cc4\u0005\u0011\u0000\u0000\u0cb6\u0cb7\u0005$\u0000\u0000\u0cb7\u0cb8"+
		"\u0003\u011a\u008d\u0000\u0cb8\u0cb9\u0005%\u0000\u0000\u0cb9\u0cc4\u0001"+
		"\u0000\u0000\u0000\u0cba\u0cbc\u0005$\u0000\u0000\u0cbb\u0cbd\u0003\u0126"+
		"\u0093\u0000\u0cbc\u0cbb\u0001\u0000\u0000\u0000\u0cbc\u0cbd\u0001\u0000"+
		"\u0000\u0000\u0cbd\u0cbe\u0001\u0000\u0000\u0000\u0cbe\u0cc0\u0005\u000e"+
		"\u0000\u0000\u0cbf\u0cc1\u0003\u0126\u0093\u0000\u0cc0\u0cbf\u0001\u0000"+
		"\u0000\u0000\u0cc0\u0cc1\u0001\u0000\u0000\u0000\u0cc1\u0cc2\u0001\u0000"+
		"\u0000\u0000\u0cc2\u0cc4\u0005%\u0000\u0000\u0cc3\u0cb2\u0001\u0000\u0000"+
		"\u0000\u0cc3\u0cb4\u0001\u0000\u0000\u0000\u0cc3\u0cb6\u0001\u0000\u0000"+
		"\u0000\u0cc3\u0cba\u0001\u0000\u0000\u0000\u0cc4\u0125\u0001\u0000\u0000"+
		"\u0000\u0cc5\u0cc6\u0003\u011a\u008d\u0000\u0cc6\u0127\u0001\u0000\u0000"+
		"\u0000\u0cc7\u0ccd\u0003L&\u0000\u0cc8\u0cc9\u0005 \u0000\u0000\u0cc9"+
		"\u0cca\u0003\u0190\u00c8\u0000\u0cca\u0ccb\u0005!\u0000\u0000\u0ccb\u0ccd"+
		"\u0001\u0000\u0000\u0000\u0ccc\u0cc7\u0001\u0000\u0000\u0000\u0ccc\u0cc8"+
		"\u0001\u0000\u0000\u0000\u0ccd\u0129\u0001\u0000\u0000\u0000\u0cce\u0cd0"+
		"\u0005q\u0000\u0000\u0ccf\u0cd1\u0003\u0132\u0099\u0000\u0cd0\u0ccf\u0001"+
		"\u0000\u0000\u0000\u0cd0\u0cd1\u0001\u0000\u0000\u0000\u0cd1\u0cd2\u0001"+
		"\u0000\u0000\u0000\u0cd2\u0cd4\u0003\u012c\u0096\u0000\u0cd3\u0cd5\u0003"+
		"\u0130\u0098\u0000\u0cd4\u0cd3\u0001\u0000\u0000\u0000\u0cd4\u0cd5\u0001"+
		"\u0000\u0000\u0000\u0cd5\u0cd6\u0001\u0000\u0000\u0000\u0cd6\u0cd7\u0005"+
		"\u00ec\u0000\u0000\u0cd7\u012b\u0001\u0000\u0000\u0000\u0cd8\u0cda\u0003"+
		"\u012e\u0097\u0000\u0cd9\u0cd8\u0001\u0000\u0000\u0000\u0cda\u0cdb\u0001"+
		"\u0000\u0000\u0000\u0cdb\u0cd9\u0001\u0000\u0000\u0000\u0cdb\u0cdc\u0001"+
		"\u0000\u0000\u0000\u0cdc\u012d\u0001\u0000\u0000\u0000\u0cdd\u0cde\u0005"+
		"r\u0000\u0000\u0cde\u0cdf\u0003\u011a\u008d\u0000\u0cdf\u0ce0\u0005\u0085"+
		"\u0000\u0000\u0ce0\u0ce1\u0003\u011a\u008d\u0000\u0ce1\u012f\u0001\u0000"+
		"\u0000\u0000\u0ce2\u0ce3\u0005\u0084\u0000\u0000\u0ce3\u0ce4\u0003\u011a"+
		"\u008d\u0000\u0ce4\u0131\u0001\u0000\u0000\u0000\u0ce5\u0ce6\u0003\u011a"+
		"\u008d\u0000\u0ce6\u0133\u0001\u0000\u0000\u0000\u0ce7\u0cec\u0003\u016a"+
		"\u00b5\u0000\u0ce8\u0ce9\u0003\u016a\u00b5\u0000\u0ce9\u0cea\u0003\u0120"+
		"\u0090\u0000\u0cea\u0cec\u0001\u0000\u0000\u0000\u0ceb\u0ce7\u0001\u0000"+
		"\u0000\u0000\u0ceb\u0ce8\u0001\u0000\u0000\u0000\u0cec\u0135\u0001\u0000"+
		"\u0000\u0000\u0ced\u0cf5\u0003\u0140\u00a0\u0000\u0cee\u0cf5\u0003\u0142"+
		"\u00a1\u0000\u0cef\u0cf0\u0005\u01a2\u0000\u0000\u0cf0\u0cf1\u0005 \u0000"+
		"\u0000\u0cf1\u0cf2\u0003\u0148\u00a4\u0000\u0cf2\u0cf3\u0005!\u0000\u0000"+
		"\u0cf3\u0cf5\u0001\u0000\u0000\u0000\u0cf4\u0ced\u0001\u0000\u0000\u0000"+
		"\u0cf4\u0cee\u0001\u0000\u0000\u0000\u0cf4\u0cef\u0001\u0000\u0000\u0000"+
		"\u0cf5\u0137\u0001\u0000\u0000\u0000\u0cf6\u0d03\u0003\u013a\u009d\u0000"+
		"\u0cf7\u0cf8\u0005\u01a2\u0000\u0000\u0cf8\u0cf9\u0005 \u0000\u0000\u0cf9"+
		"\u0cfa\u0003\u0148\u00a4\u0000\u0cfa\u0cfb\u0005!\u0000\u0000\u0cfb\u0d03"+
		"\u0001\u0000\u0000\u0000\u0cfc\u0d03\u0005\u0094\u0000\u0000\u0cfd\u0cfe"+
		"\u0005\u008b\u0000\u0000\u0cfe\u0d03\u0005\u0094\u0000\u0000\u0cff\u0d03"+
		"\u0005\u0007\u0000\u0000\u0d00\u0d01\u0005\u0006\u0000\u0000\u0d01\u0d03"+
		"\u0005\u0007\u0000\u0000\u0d02\u0cf6\u0001\u0000\u0000\u0000\u0d02\u0cf7"+
		"\u0001\u0000\u0000\u0000\u0d02\u0cfc\u0001\u0000\u0000\u0000\u0d02\u0cfd"+
		"\u0001\u0000\u0000\u0000\u0d02\u0cff\u0001\u0000\u0000\u0000\u0d02\u0d00"+
		"\u0001\u0000\u0000\u0000\u0d03\u0139\u0001\u0000\u0000\u0000\u0d04\u0d07"+
		"\u0003\u013c\u009e\u0000\u0d05\u0d07\u0003\u013e\u009f\u0000\u0d06\u0d04"+
		"\u0001\u0000\u0000\u0000\u0d06\u0d05\u0001\u0000\u0000\u0000\u0d07\u013b"+
		"\u0001\u0000\u0000\u0000\u0d08\u0d0a\u0007\u0010\u0000\u0000\u0d09\u0d08"+
		"\u0001\u0000\u0000\u0000\u0d0a\u0d0b\u0001\u0000\u0000\u0000\u0d0b\u0d09"+
		"\u0001\u0000\u0000\u0000\u0d0b\u0d0c\u0001\u0000\u0000\u0000\u0d0c\u013d"+
		"\u0001\u0000\u0000\u0000\u0d0d\u0d0e\u0007\u0011\u0000\u0000\u0d0e\u013f"+
		"\u0001\u0000\u0000\u0000\u0d0f\u0d1f\u00054\u0000\u0000\u0d10\u0d1f\u0005"+
		"5\u0000\u0000\u0d11\u0d1f\u00056\u0000\u0000\u0d12\u0d1f\u00057\u0000"+
		"\u0000\u0d13\u0d1f\u00058\u0000\u0000\u0d14\u0d1f\u00059\u0000\u0000\u0d15"+
		"\u0d1f\u0005*\u0000\u0000\u0d16\u0d17\u0005*\u0000\u0000\u0d17\u0d1f\u0005"+
		"\b\u0000\u0000\u0d18\u0d1f\u0005:\u0000\u0000\u0d19\u0d1f\u0005\u0005"+
		"\u0000\u0000\u0d1a\u0d1f\u0005\u0010\u0000\u0000\u0d1b\u0d1f\u0005;\u0000"+
		"\u0000\u0d1c\u0d1f\u0005<\u0000\u0000\u0d1d\u0d1f\u0005=\u0000\u0000\u0d1e"+
		"\u0d0f\u0001\u0000\u0000\u0000\u0d1e\u0d10\u0001\u0000\u0000\u0000\u0d1e"+
		"\u0d11\u0001\u0000\u0000\u0000\u0d1e\u0d12\u0001\u0000\u0000\u0000\u0d1e"+
		"\u0d13\u0001\u0000\u0000\u0000\u0d1e\u0d14\u0001\u0000\u0000\u0000\u0d1e"+
		"\u0d15\u0001\u0000\u0000\u0000\u0d1e\u0d16\u0001\u0000\u0000\u0000\u0d1e"+
		"\u0d18\u0001\u0000\u0000\u0000\u0d1e\u0d19\u0001\u0000\u0000\u0000\u0d1e"+
		"\u0d1a\u0001\u0000\u0000\u0000\u0d1e\u0d1b\u0001\u0000\u0000\u0000\u0d1e"+
		"\u0d1c\u0001\u0000\u0000\u0000\u0d1e\u0d1d\u0001\u0000\u0000\u0000\u0d1f"+
		"\u0141\u0001\u0000\u0000\u0000\u0d20\u0d35\u0005>\u0000\u0000\u0d21\u0d35"+
		"\u0005?\u0000\u0000\u0d22\u0d35\u0005@\u0000\u0000\u0d23\u0d35\u0005A"+
		"\u0000\u0000\u0d24\u0d35\u0005B\u0000\u0000\u0d25\u0d35\u0005C\u0000\u0000"+
		"\u0d26\u0d35\u0005D\u0000\u0000\u0d27\u0d35\u0005E\u0000\u0000\u0d28\u0d35"+
		"\u0005F\u0000\u0000\u0d29\u0d35\u0005G\u0000\u0000\u0d2a\u0d35\u0005H"+
		"\u0000\u0000\u0d2b\u0d35\u0005I\u0000\u0000\u0d2c\u0d35\u0005J\u0000\u0000"+
		"\u0d2d\u0d2e\u0005*\u0000\u0000\u0d2e\u0d35\u0005\u0010\u0000\u0000\u0d2f"+
		"\u0d30\u0005*\u0000\u0000\u0d30\u0d35\u0005\u0005\u0000\u0000\u0d31\u0d35"+
		"\u0005\u001f\u0000\u0000\u0d32\u0d35\u0005\n\u0000\u0000\u0d33\u0d35\u0005"+
		"\u000b\u0000\u0000\u0d34\u0d20\u0001\u0000\u0000\u0000\u0d34\u0d21\u0001"+
		"\u0000\u0000\u0000\u0d34\u0d22\u0001\u0000\u0000\u0000\u0d34\u0d23\u0001"+
		"\u0000\u0000\u0000\u0d34\u0d24\u0001\u0000\u0000\u0000\u0d34\u0d25\u0001"+
		"\u0000\u0000\u0000\u0d34\u0d26\u0001\u0000\u0000\u0000\u0d34\u0d27\u0001"+
		"\u0000\u0000\u0000\u0d34\u0d28\u0001\u0000\u0000\u0000\u0d34\u0d29\u0001"+
		"\u0000\u0000\u0000\u0d34\u0d2a\u0001\u0000\u0000\u0000\u0d34\u0d2b\u0001"+
		"\u0000\u0000\u0000\u0d34\u0d2c\u0001\u0000\u0000\u0000\u0d34\u0d2d\u0001"+
		"\u0000\u0000\u0000\u0d34\u0d2f\u0001\u0000\u0000\u0000\u0d34\u0d31\u0001"+
		"\u0000\u0000\u0000\u0d34\u0d32\u0001\u0000\u0000\u0000\u0d34\u0d33\u0001"+
		"\u0000\u0000\u0000\u0d35\u0143\u0001\u0000\u0000\u0000\u0d36\u0d3d\u0003"+
		"\u013a\u009d\u0000\u0d37\u0d38\u0005\u01a2\u0000\u0000\u0d38\u0d39\u0005"+
		" \u0000\u0000\u0d39\u0d3a\u0003\u0148\u00a4\u0000\u0d3a\u0d3b\u0005!\u0000"+
		"\u0000\u0d3b\u0d3d\u0001\u0000\u0000\u0000\u0d3c\u0d36\u0001\u0000\u0000"+
		"\u0000\u0d3c\u0d37\u0001\u0000\u0000\u0000\u0d3d\u0145\u0001\u0000\u0000"+
		"\u0000\u0d3e\u0d3f\u0007\u0012\u0000\u0000\u0d3f\u0147\u0001\u0000\u0000"+
		"\u0000\u0d40\u0d46\u0003\u013a\u009d\u0000\u0d41\u0d42\u0003\u016a\u00b5"+
		"\u0000\u0d42\u0d43\u0005\u0014\u0000\u0000\u0d43\u0d44\u0003\u0148\u00a4"+
		"\u0000\u0d44\u0d46\u0001\u0000\u0000\u0000\u0d45\u0d40\u0001\u0000\u0000"+
		"\u0000\u0d45\u0d41\u0001\u0000\u0000\u0000\u0d46\u0149\u0001\u0000\u0000"+
		"\u0000\u0d47\u0d48\u0005\u00f4\u0000\u0000\u0d48\u0d49\u0005\u00b6\u0000"+
		"\u0000\u0d49\u0d52\u0005\u00f7\u0000\u0000\u0d4a\u0d4b\u0005\u00f4\u0000"+
		"\u0000\u0d4b\u0d52\u0005\u0096\u0000\u0000\u0d4c\u0d4d\u0005\u00f4\u0000"+
		"\u0000\u0d4d\u0d52\u0005\u00e1\u0000\u0000\u0d4e\u0d4f\u0005\u00f4\u0000"+
		"\u0000\u0d4f\u0d50\u0005\u00ff\u0000\u0000\u0d50\u0d52\u0005\u00e7\u0000"+
		"\u0000\u0d51\u0d47\u0001\u0000\u0000\u0000\u0d51\u0d4a\u0001\u0000\u0000"+
		"\u0000\u0d51\u0d4c\u0001\u0000\u0000\u0000\u0d51\u0d4e\u0001\u0000\u0000"+
		"\u0000\u0d52\u014b\u0001\u0000\u0000\u0000\u0d53\u0d54\u0005\u00f7\u0000"+
		"\u0000\u0d54\u0d55\u0005 \u0000\u0000\u0d55\u0d56\u0003\u0190\u00c8\u0000"+
		"\u0d56\u0d57\u0005!\u0000\u0000\u0d57\u0d62\u0001\u0000\u0000\u0000\u0d58"+
		"\u0d59\u0005\u00f7\u0000\u0000\u0d59\u0d5a\u0005 \u0000\u0000\u0d5a\u0d62"+
		"\u0005!\u0000\u0000\u0d5b\u0d5c\u0005 \u0000\u0000\u0d5c\u0d5d\u0003\u0190"+
		"\u00c8\u0000\u0d5d\u0d5e\u0005&\u0000\u0000\u0d5e\u0d5f\u0003\u011a\u008d"+
		"\u0000\u0d5f\u0d60\u0005!\u0000\u0000\u0d60\u0d62\u0001\u0000\u0000\u0000"+
		"\u0d61\u0d53\u0001\u0000\u0000\u0000\u0d61\u0d58\u0001\u0000\u0000\u0000"+
		"\u0d61\u0d5b\u0001\u0000\u0000\u0000\u0d62\u014d\u0001\u0000\u0000\u0000"+
		"\u0d63\u0d64\u0005\u00f7\u0000\u0000\u0d64\u0d65\u0005 \u0000\u0000\u0d65"+
		"\u0d66\u0003\u0190\u00c8\u0000\u0d66\u0d67\u0005!\u0000\u0000\u0d67\u0d6c"+
		"\u0001\u0000\u0000\u0000\u0d68\u0d69\u0005\u00f7\u0000\u0000\u0d69\u0d6a"+
		"\u0005 \u0000\u0000\u0d6a\u0d6c\u0005!\u0000\u0000\u0d6b\u0d63\u0001\u0000"+
		"\u0000\u0000\u0d6b\u0d68\u0001\u0000\u0000\u0000\u0d6c\u014f\u0001\u0000"+
		"\u0000\u0000\u0d6d\u0d6e\u0005 \u0000\u0000\u0d6e\u0d6f\u0003\u0190\u00c8"+
		"\u0000\u0d6f\u0d70\u0005&\u0000\u0000\u0d70\u0d71\u0003\u011a\u008d\u0000"+
		"\u0d71\u0d72\u0005!\u0000\u0000\u0d72\u0151\u0001\u0000\u0000\u0000\u0d73"+
		"\u0d74\u0007\u0013\u0000\u0000\u0d74\u0153\u0001\u0000\u0000\u0000\u0d75"+
		"\u0d76\u0005$\u0000\u0000\u0d76\u0d77\u0003\u0190\u00c8\u0000\u0d77\u0d78"+
		"\u0005%\u0000\u0000\u0d78\u0d80\u0001\u0000\u0000\u0000\u0d79\u0d7a\u0005"+
		"$\u0000\u0000\u0d7a\u0d7b\u0003\u0156\u00ab\u0000\u0d7b\u0d7c\u0005%\u0000"+
		"\u0000\u0d7c\u0d80\u0001\u0000\u0000\u0000\u0d7d\u0d7e\u0005$\u0000\u0000"+
		"\u0d7e\u0d80\u0005%\u0000\u0000\u0d7f\u0d75\u0001\u0000\u0000\u0000\u0d7f"+
		"\u0d79\u0001\u0000\u0000\u0000\u0d7f\u0d7d\u0001\u0000\u0000\u0000\u0d80"+
		"\u0155\u0001\u0000\u0000\u0000\u0d81\u0d86\u0003\u0154\u00aa\u0000\u0d82"+
		"\u0d83\u0005&\u0000\u0000\u0d83\u0d85\u0003\u0154\u00aa\u0000\u0d84\u0d82"+
		"\u0001\u0000\u0000\u0000\u0d85\u0d88\u0001\u0000\u0000\u0000\u0d86\u0d84"+
		"\u0001\u0000\u0000\u0000\u0d86\u0d87\u0001\u0000\u0000\u0000\u0d87\u0157"+
		"\u0001\u0000\u0000\u0000\u0d88\u0d86\u0001\u0000\u0000\u0000\u0d89\u0d8e"+
		"\u0003\u015c\u00ae\u0000\u0d8a\u0d8b\u0005&\u0000\u0000\u0d8b\u0d8d\u0003"+
		"\u015c\u00ae\u0000\u0d8c\u0d8a\u0001\u0000\u0000\u0000\u0d8d\u0d90\u0001"+
		"\u0000\u0000\u0000\u0d8e\u0d8c\u0001\u0000\u0000\u0000\u0d8e\u0d8f\u0001"+
		"\u0000\u0000\u0000\u0d8f\u0159\u0001\u0000\u0000\u0000\u0d90\u0d8e\u0001"+
		"\u0000\u0000\u0000\u0d91\u0d92\u0003\u016c\u00b6\u0000\u0d92\u015b\u0001"+
		"\u0000\u0000\u0000\u0d93\u0d9d\u0003\u011a\u008d\u0000\u0d94\u0d95\u0003"+
		"\u015a\u00ad\u0000\u0d95\u0d96\u0005\u0019\u0000\u0000\u0d96\u0d97\u0003"+
		"\u011a\u008d\u0000\u0d97\u0d9d\u0001\u0000\u0000\u0000\u0d98\u0d99\u0003"+
		"\u015a\u00ad\u0000\u0d99\u0d9a\u0005\u001c\u0000\u0000\u0d9a\u0d9b\u0003"+
		"\u011a\u008d\u0000\u0d9b\u0d9d\u0001\u0000\u0000\u0000\u0d9c\u0d93\u0001"+
		"\u0000\u0000\u0000\u0d9c\u0d94\u0001\u0000\u0000\u0000\u0d9c\u0d98\u0001"+
		"\u0000\u0000\u0000\u0d9d\u015d\u0001\u0000\u0000\u0000\u0d9e\u0da3\u0003"+
		"\u018a\u00c5\u0000\u0d9f\u0da0\u0005&\u0000\u0000\u0da0\u0da2\u0003\u018a"+
		"\u00c5\u0000\u0da1\u0d9f\u0001\u0000\u0000\u0000\u0da2\u0da5\u0001\u0000"+
		"\u0000\u0000\u0da3\u0da1\u0001\u0000\u0000\u0000\u0da3\u0da4\u0001\u0000"+
		"\u0000\u0000\u0da4\u015f\u0001\u0000\u0000\u0000\u0da5\u0da3\u0001\u0000"+
		"\u0000\u0000\u0da6\u0da7\u0003\u0162\u00b1\u0000\u0da7\u0da8\u0005 \u0000"+
		"\u0000\u0da8\u0da9\u0005!\u0000\u0000\u0da9\u0dde\u0001\u0000\u0000\u0000"+
		"\u0daa\u0dab\u0003\u0162\u00b1\u0000\u0dab\u0dac\u0005 \u0000\u0000\u0dac"+
		"\u0dae\u0003\u0158\u00ac\u0000\u0dad\u0daf\u0003\u0200\u0100\u0000\u0dae"+
		"\u0dad\u0001\u0000\u0000\u0000\u0dae\u0daf\u0001\u0000\u0000\u0000\u0daf"+
		"\u0db0\u0001\u0000\u0000\u0000\u0db0\u0db1\u0005!\u0000\u0000\u0db1\u0dde"+
		"\u0001\u0000\u0000\u0000\u0db2\u0db3\u0003\u0162\u00b1\u0000\u0db3\u0db4"+
		"\u0005 \u0000\u0000\u0db4\u0db5\u0005\u01ad\u0000\u0000\u0db5\u0db7\u0003"+
		"\u015c\u00ae\u0000\u0db6\u0db8\u0003\u0200\u0100\u0000\u0db7\u0db6\u0001"+
		"\u0000\u0000\u0000\u0db7\u0db8\u0001\u0000\u0000\u0000\u0db8\u0db9\u0001"+
		"\u0000\u0000\u0000\u0db9\u0dba\u0005!\u0000\u0000\u0dba\u0dde\u0001\u0000"+
		"\u0000\u0000\u0dbb\u0dbc\u0003\u0162\u00b1\u0000\u0dbc\u0dbd\u0005 \u0000"+
		"\u0000\u0dbd\u0dbe\u0003\u0158\u00ac\u0000\u0dbe\u0dbf\u0005&\u0000\u0000"+
		"\u0dbf\u0dc0\u0005\u01ad\u0000\u0000\u0dc0\u0dc2\u0003\u015c\u00ae\u0000"+
		"\u0dc1\u0dc3\u0003\u0200\u0100\u0000\u0dc2\u0dc1\u0001\u0000\u0000\u0000"+
		"\u0dc2\u0dc3\u0001\u0000\u0000\u0000\u0dc3\u0dc4\u0001\u0000\u0000\u0000"+
		"\u0dc4\u0dc5\u0005!\u0000\u0000\u0dc5\u0dde\u0001\u0000\u0000\u0000\u0dc6"+
		"\u0dc7\u0003\u0162\u00b1\u0000\u0dc7\u0dc8\u0005 \u0000\u0000\u0dc8\u0dc9"+
		"\u0005\u0092\u0000\u0000\u0dc9\u0dcb\u0003\u0158\u00ac\u0000\u0dca\u0dcc"+
		"\u0003\u0200\u0100\u0000\u0dcb\u0dca\u0001\u0000\u0000\u0000\u0dcb\u0dcc"+
		"\u0001\u0000\u0000\u0000\u0dcc\u0dcd\u0001\u0000\u0000\u0000\u0dcd\u0dce"+
		"\u0005!\u0000\u0000\u0dce\u0dde\u0001\u0000\u0000\u0000\u0dcf\u0dd0\u0003"+
		"\u0162\u00b1\u0000\u0dd0\u0dd1\u0005 \u0000\u0000\u0dd1\u0dd2\u0005o\u0000"+
		"\u0000\u0dd2\u0dd4\u0003\u0158\u00ac\u0000\u0dd3\u0dd5\u0003\u0200\u0100"+
		"\u0000\u0dd4\u0dd3\u0001\u0000\u0000\u0000\u0dd4\u0dd5\u0001\u0000\u0000"+
		"\u0000\u0dd5\u0dd6\u0001\u0000\u0000\u0000\u0dd6\u0dd7\u0005!\u0000\u0000"+
		"\u0dd7\u0dde\u0001\u0000\u0000\u0000\u0dd8\u0dd9\u0003\u0162\u00b1\u0000"+
		"\u0dd9\u0dda\u0005 \u0000\u0000\u0dda\u0ddb\u0005\u0011\u0000\u0000\u0ddb"+
		"\u0ddc\u0005!\u0000\u0000\u0ddc\u0dde\u0001\u0000\u0000\u0000\u0ddd\u0da6"+
		"\u0001\u0000\u0000\u0000\u0ddd\u0daa\u0001\u0000\u0000\u0000\u0ddd\u0db2"+
		"\u0001\u0000\u0000\u0000\u0ddd\u0dbb\u0001\u0000\u0000\u0000\u0ddd\u0dc6"+
		"\u0001\u0000\u0000\u0000\u0ddd\u0dcf\u0001\u0000\u0000\u0000\u0ddd\u0dd8"+
		"\u0001\u0000\u0000\u0000\u0dde\u0161\u0001\u0000\u0000\u0000\u0ddf\u0de4"+
		"\u0003\u016c\u00b6\u0000\u0de0\u0de1\u0003\u016a\u00b5\u0000\u0de1\u0de2"+
		"\u0003\u0120\u0090\u0000\u0de2\u0de4\u0001\u0000\u0000\u0000\u0de3\u0ddf"+
		"\u0001\u0000\u0000\u0000\u0de3\u0de0\u0001\u0000\u0000\u0000\u0de4\u0163"+
		"\u0001\u0000\u0000\u0000\u0de5\u0dfa\u0003\u0166\u00b3\u0000\u0de6\u0dfa"+
		"\u0005\u0254\u0000\u0000\u0de7\u0de8\u0003\u0162\u00b1\u0000\u0de8\u0de9"+
		"\u0005\u0254\u0000\u0000\u0de9\u0dfa\u0001\u0000\u0000\u0000\u0dea\u0deb"+
		"\u0003\u0162\u00b1\u0000\u0deb\u0dec\u0005 \u0000\u0000\u0dec\u0dee\u0003"+
		"\u0158\u00ac\u0000\u0ded\u0def\u0003\u0200\u0100\u0000\u0dee\u0ded\u0001"+
		"\u0000\u0000\u0000\u0dee\u0def\u0001\u0000\u0000\u0000\u0def\u0df0\u0001"+
		"\u0000\u0000\u0000\u0df0\u0df1\u0005!\u0000\u0000\u0df1\u0df2\u0005\u0254"+
		"\u0000\u0000\u0df2\u0dfa\u0001\u0000\u0000\u0000\u0df3\u0df4\u0003\u018e"+
		"\u00c7\u0000\u0df4\u0df5\u0005\u0254\u0000\u0000\u0df5\u0dfa\u0001\u0000"+
		"\u0000\u0000\u0df6\u0dfa\u0005\u008d\u0000\u0000\u0df7\u0dfa\u0005\u008e"+
		"\u0000\u0000\u0df8\u0dfa\u0005\u008c\u0000\u0000\u0df9\u0de5\u0001\u0000"+
		"\u0000\u0000\u0df9\u0de6\u0001\u0000\u0000\u0000\u0df9\u0de7\u0001\u0000"+
		"\u0000\u0000\u0df9\u0dea\u0001\u0000\u0000\u0000\u0df9\u0df3\u0001\u0000"+
		"\u0000\u0000\u0df9\u0df6\u0001\u0000\u0000\u0000\u0df9\u0df7\u0001\u0000"+
		"\u0000\u0000\u0df9\u0df8\u0001\u0000\u0000\u0000\u0dfa\u0165\u0001\u0000"+
		"\u0000\u0000\u0dfb\u0dfd\u0007\u0014\u0000\u0000\u0dfc\u0dfb\u0001\u0000"+
		"\u0000\u0000\u0dfc\u0dfd\u0001\u0000\u0000\u0000\u0dfd\u0dfe\u0001\u0000"+
		"\u0000\u0000\u0dfe\u0dff\u0005\u0255\u0000\u0000\u0dff\u0167\u0001\u0000"+
		"\u0000\u0000\u0e00\u0e05\u0003\u016a\u00b5\u0000\u0e01\u0e02\u0003\u016a"+
		"\u00b5\u0000\u0e02\u0e03\u0003\u0120\u0090\u0000\u0e03\u0e05\u0001\u0000"+
		"\u0000\u0000\u0e04\u0e00\u0001\u0000\u0000\u0000\u0e04\u0e01\u0001\u0000"+
		"\u0000\u0000\u0e05\u0169\u0001\u0000\u0000\u0000\u0e06\u0e07\u0003\u00ea"+
		"u\u0000\u0e07\u016b\u0001\u0000\u0000\u0000\u0e08\u0e0c\u0003\u00eau\u0000"+
		"\u0e09\u0e0c\u0003\u00eew\u0000\u0e0a\u0e0c\u0003\u00f0x\u0000\u0e0b\u0e08"+
		"\u0001\u0000\u0000\u0000\u0e0b\u0e09\u0001\u0000\u0000\u0000\u0e0b\u0e0a"+
		"\u0001\u0000\u0000\u0000\u0e0c\u016d\u0001\u0000\u0000\u0000\u0e0d\u0e0f"+
		"\u0003\u0184\u00c2\u0000\u0e0e\u0e10\u0003\u0186\u00c3\u0000\u0e0f\u0e0e"+
		"\u0001\u0000\u0000\u0000\u0e0f\u0e10\u0001\u0000\u0000\u0000";
	private static final String _serializedATNSegment2 =
		"\u0e10\u0e1a\u0001\u0000\u0000\u0000\u0e11\u0e12\u0005\u0105\u0000\u0000"+
		"\u0e12\u0e13\u0005v\u0000\u0000\u0e13\u0e14\u0005 \u0000\u0000\u0e14\u0e15"+
		"\u0003\u01e2\u00f1\u0000\u0e15\u0e17\u0005!\u0000\u0000\u0e16\u0e18\u0003"+
		"\u0186\u00c3\u0000\u0e17\u0e16\u0001\u0000\u0000\u0000\u0e17\u0e18\u0001"+
		"\u0000\u0000\u0000\u0e18\u0e1a\u0001\u0000\u0000\u0000\u0e19\u0e0d\u0001"+
		"\u0000\u0000\u0000\u0e19\u0e11\u0001\u0000\u0000\u0000\u0e1a\u016f\u0001"+
		"\u0000\u0000\u0000\u0e1b\u0e1c\u0005\u01b0\u0000\u0000\u0e1c\u0e1d\u0005"+
		" \u0000\u0000\u0e1d\u0e1e\u0003\u011e\u008f\u0000\u0e1e\u0e1f\u0003\u01d4"+
		"\u00ea\u0000\u0e1f\u0e20\u0005\u01b1\u0000\u0000\u0e20\u0e21\u0003\u0172"+
		"\u00b9\u0000\u0e21\u0e22\u0005!\u0000\u0000\u0e22\u0e31\u0001\u0000\u0000"+
		"\u0000\u0e23\u0e24\u0005\u01b0\u0000\u0000\u0e24\u0e25\u0005 \u0000\u0000"+
		"\u0e25\u0e26\u0005\u01b5\u0000\u0000\u0e26\u0e27\u0005 \u0000\u0000\u0e27"+
		"\u0e28\u0003\u017a\u00bd\u0000\u0e28\u0e29\u0005!\u0000\u0000\u0e29\u0e2a"+
		"\u0005&\u0000\u0000\u0e2a\u0e2b\u0003\u011e\u008f\u0000\u0e2b\u0e2c\u0003"+
		"\u01d4\u00ea\u0000\u0e2c\u0e2d\u0005\u01b1\u0000\u0000\u0e2d\u0e2e\u0003"+
		"\u0172\u00b9\u0000\u0e2e\u0e2f\u0005!\u0000\u0000\u0e2f\u0e31\u0001\u0000"+
		"\u0000\u0000\u0e30\u0e1b\u0001\u0000\u0000\u0000\u0e30\u0e23\u0001\u0000"+
		"\u0000\u0000\u0e31\u0171\u0001\u0000\u0000\u0000\u0e32\u0e37\u0003\u0174"+
		"\u00ba\u0000\u0e33\u0e34\u0005&\u0000\u0000\u0e34\u0e36\u0003\u0174\u00ba"+
		"\u0000\u0e35\u0e33\u0001\u0000\u0000\u0000\u0e36\u0e39\u0001\u0000\u0000"+
		"\u0000\u0e37\u0e35\u0001\u0000\u0000\u0000\u0e37\u0e38\u0001\u0000\u0000"+
		"\u0000\u0e38\u0173\u0001\u0000\u0000\u0000\u0e39\u0e37\u0001\u0000\u0000"+
		"\u0000\u0e3a\u0e3b\u0003\u016a\u00b5\u0000\u0e3b\u0e3c\u0003\u018a\u00c5"+
		"\u0000\u0e3c\u0e46\u0001\u0000\u0000\u0000\u0e3d\u0e3e\u0003\u016a\u00b5"+
		"\u0000\u0e3e\u0e3f\u0003\u018a\u00c5\u0000\u0e3f\u0e40\u0003\u0176\u00bb"+
		"\u0000\u0e40\u0e46\u0001\u0000\u0000\u0000\u0e41\u0e42\u0003\u016a\u00b5"+
		"\u0000\u0e42\u0e43\u0005\u0086\u0000\u0000\u0e43\u0e44\u0005\u0185\u0000"+
		"\u0000\u0e44\u0e46\u0001\u0000\u0000\u0000\u0e45\u0e3a\u0001\u0000\u0000"+
		"\u0000\u0e45\u0e3d\u0001\u0000\u0000\u0000\u0e45\u0e41\u0001\u0000\u0000"+
		"\u0000\u0e46\u0175\u0001\u0000\u0000\u0000\u0e47\u0e48\u0006\u00bb\uffff"+
		"\uffff\u0000\u0e48\u0e49\u0003\u0178\u00bc\u0000\u0e49\u0e4e\u0001\u0000"+
		"\u0000\u0000\u0e4a\u0e4b\n\u0001\u0000\u0000\u0e4b\u0e4d\u0003\u0178\u00bc"+
		"\u0000\u0e4c\u0e4a\u0001\u0000\u0000\u0000\u0e4d\u0e50\u0001\u0000\u0000"+
		"\u0000\u0e4e\u0e4c\u0001\u0000\u0000\u0000\u0e4e\u0e4f\u0001\u0000\u0000"+
		"\u0000\u0e4f\u0177\u0001\u0000\u0000\u0000\u0e50\u0e4e\u0001\u0000\u0000"+
		"\u0000\u0e51\u0e52\u0003\u00eau\u0000\u0e52\u0e53\u0003\u011c\u008e\u0000"+
		"\u0e53\u0e5a\u0001\u0000\u0000\u0000\u0e54\u0e55\u0005\u00b5\u0000\u0000"+
		"\u0e55\u0e5a\u0003\u011c\u008e\u0000\u0e56\u0e57\u0005\u008b\u0000\u0000"+
		"\u0e57\u0e5a\u0005\u008c\u0000\u0000\u0e58\u0e5a\u0005\u008c\u0000\u0000"+
		"\u0e59\u0e51\u0001\u0000\u0000\u0000\u0e59\u0e54\u0001\u0000\u0000\u0000"+
		"\u0e59\u0e56\u0001\u0000\u0000\u0000\u0e59\u0e58\u0001\u0000\u0000\u0000"+
		"\u0e5a\u0179\u0001\u0000\u0000\u0000\u0e5b\u0e60\u0003\u017c\u00be\u0000"+
		"\u0e5c\u0e5d\u0005&\u0000\u0000\u0e5d\u0e5f\u0003\u017c\u00be\u0000\u0e5e"+
		"\u0e5c\u0001\u0000\u0000\u0000\u0e5f\u0e62\u0001\u0000\u0000\u0000\u0e60"+
		"\u0e5e\u0001\u0000\u0000\u0000\u0e60\u0e61\u0001\u0000\u0000\u0000\u0e61"+
		"\u017b\u0001\u0000\u0000\u0000\u0e62\u0e60\u0001\u0000\u0000\u0000\u0e63"+
		"\u0e64\u0003\u011c\u008e\u0000\u0e64\u0e65\u0005\u0081\u0000\u0000\u0e65"+
		"\u0e66\u0003\u00eau\u0000\u0e66\u0e6a\u0001\u0000\u0000\u0000\u0e67\u0e68"+
		"\u0005\u00b5\u0000\u0000\u0e68\u0e6a\u0003\u011c\u008e\u0000\u0e69\u0e63"+
		"\u0001\u0000\u0000\u0000\u0e69\u0e67\u0001\u0000\u0000\u0000\u0e6a\u017d"+
		"\u0001\u0000\u0000\u0000\u0e6b\u0e6d\u0003\u0160\u00b0\u0000\u0e6c\u0e6e"+
		"\u0003\u0180\u00c0\u0000\u0e6d\u0e6c\u0001\u0000\u0000\u0000\u0e6d\u0e6e"+
		"\u0001\u0000\u0000\u0000\u0e6e\u0e70\u0001\u0000\u0000\u0000\u0e6f\u0e71"+
		"\u0003\u0182\u00c1\u0000\u0e70\u0e6f\u0001\u0000\u0000\u0000\u0e70\u0e71"+
		"\u0001\u0000\u0000\u0000\u0e71\u0e73\u0001\u0000\u0000\u0000\u0e72\u0e74"+
		"\u0003\u020c\u0106\u0000\u0e73\u0e72\u0001\u0000\u0000\u0000\u0e73\u0e74"+
		"\u0001\u0000\u0000\u0000\u0e74\u0e77\u0001\u0000\u0000\u0000\u0e75\u0e77"+
		"\u0003\u0188\u00c4\u0000\u0e76\u0e6b\u0001\u0000\u0000\u0000\u0e76\u0e75"+
		"\u0001\u0000\u0000\u0000\u0e77\u017f\u0001\u0000\u0000\u0000\u0e78\u0e79"+
		"\u0005\u0159\u0000\u0000\u0e79\u0e7a\u0005\u0096\u0000\u0000\u0e7a\u0e7b"+
		"\u0005 \u0000\u0000\u0e7b\u0e7c\u0003\u0200\u0100\u0000\u0e7c\u0e7d\u0005"+
		"!\u0000\u0000\u0e7d\u0181\u0001\u0000\u0000\u0000\u0e7e\u0e7f\u0005\u0120"+
		"\u0000\u0000\u0e7f\u0e80\u0005 \u0000\u0000\u0e80\u0e81\u0005\u0080\u0000"+
		"\u0000\u0e81\u0e82\u0003\u011a\u008d\u0000\u0e82\u0e83\u0005!\u0000\u0000"+
		"\u0e83\u0183\u0001\u0000\u0000\u0000\u0e84\u0e87\u0003\u0160\u00b0\u0000"+
		"\u0e85\u0e87\u0003\u0188\u00c4\u0000\u0e86\u0e84\u0001\u0000\u0000\u0000"+
		"\u0e86\u0e85\u0001\u0000\u0000\u0000\u0e87\u0185\u0001\u0000\u0000\u0000"+
		"\u0e88\u0e89\u0005m\u0000\u0000\u0e89\u0e8a\u0005\u0185\u0000\u0000\u0e8a"+
		"\u0187\u0001\u0000\u0000\u0000\u0e8b\u0e8c\u0005\u00c6\u0000\u0000\u0e8c"+
		"\u0e8d\u0005\u0086\u0000\u0000\u0e8d\u0e8e\u0005 \u0000\u0000\u0e8e\u0e8f"+
		"\u0003\u011a\u008d\u0000\u0e8f\u0e90\u0005!\u0000\u0000\u0e90\u0fab\u0001"+
		"\u0000\u0000\u0000\u0e91\u0fab\u0005\u00d1\u0000\u0000\u0e92\u0fab\u0005"+
		"\u00d2\u0000\u0000\u0e93\u0e94\u0005\u00d2\u0000\u0000\u0e94\u0e95\u0005"+
		" \u0000\u0000\u0e95\u0e96\u0005\u0255\u0000\u0000\u0e96\u0fab\u0005!\u0000"+
		"\u0000\u0e97\u0fab\u0005\u00d3\u0000\u0000\u0e98\u0e99\u0005\u00d3\u0000"+
		"\u0000\u0e99\u0e9a\u0005 \u0000\u0000\u0e9a\u0e9b\u0005\u0255\u0000\u0000"+
		"\u0e9b\u0fab\u0005!\u0000\u0000\u0e9c\u0fab\u0005\u00aa\u0000\u0000\u0e9d"+
		"\u0e9e\u0005\u00aa\u0000\u0000\u0e9e\u0e9f\u0005 \u0000\u0000\u0e9f\u0ea0"+
		"\u0005\u0255\u0000\u0000\u0ea0\u0fab\u0005!\u0000\u0000\u0ea1\u0fab\u0005"+
		"\u00ab\u0000\u0000\u0ea2\u0ea3\u0005\u00ab\u0000\u0000\u0ea3\u0ea4\u0005"+
		" \u0000\u0000\u0ea4\u0ea5\u0005\u0255\u0000\u0000\u0ea5\u0fab\u0005!\u0000"+
		"\u0000\u0ea6\u0fab\u0005\u0186\u0000\u0000\u0ea7\u0fab\u0005\u00be\u0000"+
		"\u0000\u0ea8\u0fab\u0005\u014c\u0000\u0000\u0ea9\u0fab\u0005\u0108\u0000"+
		"\u0000\u0eaa\u0fab\u0005\u0187\u0000\u0000\u0eab\u0fab\u0005\u0188\u0000"+
		"\u0000\u0eac\u0ead\u0005s\u0000\u0000\u0ead\u0eae\u0005 \u0000\u0000\u0eae"+
		"\u0eaf\u0003\u011a\u008d\u0000\u0eaf\u0eb0\u0005\u0081\u0000\u0000\u0eb0"+
		"\u0eb1\u0003\u018a\u00c5\u0000\u0eb1\u0eb2\u0005!\u0000\u0000\u0eb2\u0fab"+
		"\u0001\u0000\u0000\u0000\u0eb3\u0eb4\u0005\u011f\u0000\u0000\u0eb4\u0eb6"+
		"\u0005 \u0000\u0000\u0eb5\u0eb7\u0003\u0192\u00c9\u0000\u0eb6\u0eb5\u0001"+
		"\u0000\u0000\u0000\u0eb6\u0eb7\u0001\u0000\u0000\u0000\u0eb7\u0eb8\u0001"+
		"\u0000\u0000\u0000\u0eb8\u0fab\u0005!\u0000\u0000\u0eb9\u0eba\u0005\u0189"+
		"\u0000\u0000\u0eba\u0ebb\u0005 \u0000\u0000\u0ebb\u0ebc\u0003\u011a\u008d"+
		"\u0000\u0ebc\u0ebd\u0005!\u0000\u0000\u0ebd\u0fab\u0001\u0000\u0000\u0000"+
		"\u0ebe\u0ebf\u0005\u0189\u0000\u0000\u0ebf\u0ec0\u0005 \u0000\u0000\u0ec0"+
		"\u0ec1\u0003\u011a\u008d\u0000\u0ec1\u0ec2\u0005&\u0000\u0000\u0ec2\u0ec3"+
		"\u0003\u01be\u00df\u0000\u0ec3\u0ec4\u0005!\u0000\u0000\u0ec4\u0fab\u0001"+
		"\u0000\u0000\u0000\u0ec5\u0ec6\u0005\u018a\u0000\u0000\u0ec6\u0ec7\u0005"+
		" \u0000\u0000\u0ec7\u0ec8\u0003\u01c2\u00e1\u0000\u0ec8\u0ec9\u0005!\u0000"+
		"\u0000\u0ec9\u0fab\u0001\u0000\u0000\u0000\u0eca\u0ecb\u0005e\u0000\u0000"+
		"\u0ecb\u0ecc\u0005 \u0000\u0000\u0ecc\u0ecd\u0003\u01ca\u00e5\u0000\u0ecd"+
		"\u0ece\u0005!\u0000\u0000\u0ece\u0fab\u0001\u0000\u0000\u0000\u0ecf\u0ed0"+
		"\u0005u\u0000\u0000\u0ed0\u0ed1\u0005 \u0000\u0000\u0ed1\u0ed2\u0003\u01cc"+
		"\u00e6\u0000\u0ed2\u0ed3\u0005!\u0000\u0000\u0ed3\u0fab\u0001\u0000\u0000"+
		"\u0000\u0ed4\u0ed5\u0005\u0193\u0000\u0000\u0ed5\u0ed6\u0005 \u0000\u0000"+
		"\u0ed6\u0ed7\u0003\u011a\u008d\u0000\u0ed7\u0ed8\u0005\u0081\u0000\u0000"+
		"\u0ed8\u0ed9\u0003\u018a\u00c5\u0000\u0ed9\u0eda\u0005!\u0000\u0000\u0eda"+
		"\u0fab\u0001\u0000\u0000\u0000\u0edb\u0edc\u0005t\u0000\u0000\u0edc\u0edd"+
		"\u0005 \u0000\u0000\u0edd\u0ede\u0005\u00d9\u0000\u0000\u0ede\u0edf\u0003"+
		"\u01c0\u00e0\u0000\u0edf\u0ee0\u0005!\u0000\u0000\u0ee0\u0fab\u0001\u0000"+
		"\u0000\u0000\u0ee1\u0ee2\u0005t\u0000\u0000\u0ee2\u0ee3\u0005 \u0000\u0000"+
		"\u0ee3\u0ee4\u0005\u00da\u0000\u0000\u0ee4\u0ee5\u0003\u01c0\u00e0\u0000"+
		"\u0ee5\u0ee6\u0005!\u0000\u0000\u0ee6\u0fab\u0001\u0000\u0000\u0000\u0ee7"+
		"\u0ee8\u0005t\u0000\u0000\u0ee8\u0ee9\u0005 \u0000\u0000\u0ee9\u0eea\u0005"+
		"\u00db\u0000\u0000\u0eea\u0eeb\u0003\u01c0\u00e0\u0000\u0eeb\u0eec\u0005"+
		"!\u0000\u0000\u0eec\u0fab\u0001\u0000\u0000\u0000\u0eed\u0eee\u0005t\u0000"+
		"\u0000\u0eee\u0eef\u0005 \u0000\u0000\u0eef\u0ef0\u0003\u01c0\u00e0\u0000"+
		"\u0ef0\u0ef1\u0005!\u0000\u0000\u0ef1\u0fab\u0001\u0000\u0000\u0000\u0ef2"+
		"\u0ef3\u0005\u00d4\u0000\u0000\u0ef3\u0ef4\u0005 \u0000\u0000\u0ef4\u0ef5"+
		"\u0003\u011a\u008d\u0000\u0ef5\u0ef6\u0005&\u0000\u0000\u0ef6\u0ef7\u0003"+
		"\u011a\u008d\u0000\u0ef7\u0ef8\u0005!\u0000\u0000\u0ef8\u0fab\u0001\u0000"+
		"\u0000\u0000\u0ef9\u0efa\u0005\u00dc\u0000\u0000\u0efa\u0efb\u0005 \u0000"+
		"\u0000\u0efb\u0efc\u0003\u0190\u00c8\u0000\u0efc\u0efd\u0005!\u0000\u0000"+
		"\u0efd\u0fab\u0001\u0000\u0000\u0000\u0efe\u0eff\u0005\u019f\u0000\u0000"+
		"\u0eff\u0f00\u0005 \u0000\u0000\u0f00\u0f01\u0003\u0190\u00c8\u0000\u0f01"+
		"\u0f02\u0005!\u0000\u0000\u0f02\u0fab\u0001\u0000\u0000\u0000\u0f03\u0f04"+
		"\u0005\u01a0\u0000\u0000\u0f04\u0f05\u0005 \u0000\u0000\u0f05\u0f06\u0003"+
		"\u0190\u00c8\u0000\u0f06\u0f07\u0005!\u0000\u0000\u0f07\u0fab\u0001\u0000"+
		"\u0000\u0000\u0f08\u0f09\u0005\u018b\u0000\u0000\u0f09\u0f0a\u0005 \u0000"+
		"\u0000\u0f0a\u0f0b\u0003\u0190\u00c8\u0000\u0f0b\u0f0c\u0005!\u0000\u0000"+
		"\u0f0c\u0fab\u0001\u0000\u0000\u0000\u0f0d\u0f0e\u0005\u018c\u0000\u0000"+
		"\u0f0e\u0f0f\u0005 \u0000\u0000\u0f0f\u0f10\u0005\u00c5\u0000\u0000\u0f10"+
		"\u0f11\u0003\u00eau\u0000\u0f11\u0f12\u0005!\u0000\u0000\u0f12\u0fab\u0001"+
		"\u0000\u0000\u0000\u0f13\u0f14\u0005\u018c\u0000\u0000\u0f14\u0f15\u0005"+
		" \u0000\u0000\u0f15\u0f16\u0005\u00c5\u0000\u0000\u0f16\u0f17\u0003\u00ea"+
		"u\u0000\u0f17\u0f18\u0005&\u0000\u0000\u0f18\u0f19\u0003\u01ce\u00e7\u0000"+
		"\u0f19\u0f1a\u0005!\u0000\u0000\u0f1a\u0fab\u0001\u0000\u0000\u0000\u0f1b"+
		"\u0f1c\u0005\u018c\u0000\u0000\u0f1c\u0f1d\u0005 \u0000\u0000\u0f1d\u0f1e"+
		"\u0005\u00c5\u0000\u0000\u0f1e\u0f1f\u0003\u00eau\u0000\u0f1f\u0f20\u0005"+
		"&\u0000\u0000\u0f20\u0f21\u0003\u0190\u00c8\u0000\u0f21\u0f22\u0005!\u0000"+
		"\u0000\u0f22\u0fab\u0001\u0000\u0000\u0000\u0f23\u0f24\u0005\u018c\u0000"+
		"\u0000\u0f24\u0f25\u0005 \u0000\u0000\u0f25\u0f26\u0005\u00c5\u0000\u0000"+
		"\u0f26\u0f27\u0003\u00eau\u0000\u0f27\u0f28\u0005&\u0000\u0000\u0f28\u0f29"+
		"\u0003\u01ce\u00e7\u0000\u0f29\u0f2a\u0005&\u0000\u0000\u0f2a\u0f2b\u0003"+
		"\u0190\u00c8\u0000\u0f2b\u0f2c\u0005!\u0000\u0000\u0f2c\u0fab\u0001\u0000"+
		"\u0000\u0000\u0f2d\u0f2e\u0005\u018d\u0000\u0000\u0f2e\u0f2f\u0005 \u0000"+
		"\u0000\u0f2f\u0f30\u0003\u011e\u008f\u0000\u0f30\u0f31\u0003\u01d4\u00ea"+
		"\u0000\u0f31\u0f32\u0005!\u0000\u0000\u0f32\u0fab\u0001\u0000\u0000\u0000"+
		"\u0f33\u0f34\u0005\u018e\u0000\u0000\u0f34\u0f35\u0005 \u0000\u0000\u0f35"+
		"\u0f36\u0003\u01d0\u00e8\u0000\u0f36\u0f37\u0005!\u0000\u0000\u0f37\u0fab"+
		"\u0001\u0000\u0000\u0000\u0f38\u0f39\u0005\u018f\u0000\u0000\u0f39\u0f3a"+
		"\u0005 \u0000\u0000\u0f3a\u0f3b\u0003\u01d8\u00ec\u0000\u0f3b\u0f3c\u0003"+
		"\u011a\u008d\u0000\u0f3c\u0f3d\u0003\u01da\u00ed\u0000\u0f3d\u0f3e\u0005"+
		"!\u0000\u0000\u0f3e\u0fab\u0001\u0000\u0000\u0000\u0f3f\u0f40\u0005\u0190"+
		"\u0000\u0000\u0f40\u0f41\u0005 \u0000\u0000\u0f41\u0f42\u0005\u00c5\u0000"+
		"\u0000\u0f42\u0f43\u0003\u00eau\u0000\u0f43\u0f44\u0005!\u0000\u0000\u0f44"+
		"\u0fab\u0001\u0000\u0000\u0000\u0f45\u0f46\u0005\u0190\u0000\u0000\u0f46"+
		"\u0f47\u0005 \u0000\u0000\u0f47\u0f48\u0005\u00c5\u0000\u0000\u0f48\u0f49"+
		"\u0003\u00eau\u0000\u0f49\u0f4a\u0005&\u0000\u0000\u0f4a\u0f4b\u0003\u011a"+
		"\u008d\u0000\u0f4b\u0f4c\u0005!\u0000\u0000\u0f4c\u0fab\u0001\u0000\u0000"+
		"\u0000\u0f4d\u0f4e\u0005\u0191\u0000\u0000\u0f4e\u0f4f\u0005 \u0000\u0000"+
		"\u0f4f\u0f50\u0003\u011a\u008d\u0000\u0f50\u0f51\u0005&\u0000\u0000\u0f51"+
		"\u0f53\u0003\u01dc\u00ee\u0000\u0f52\u0f54\u0003\u01de\u00ef\u0000\u0f53"+
		"\u0f52\u0001\u0000\u0000\u0000\u0f53\u0f54\u0001\u0000\u0000\u0000\u0f54"+
		"\u0f55\u0001\u0000\u0000\u0000\u0f55\u0f56\u0005!\u0000\u0000\u0f56\u0fab"+
		"\u0001\u0000\u0000\u0000\u0f57\u0f58\u0005\u0192\u0000\u0000\u0f58\u0f59"+
		"\u0005 \u0000\u0000\u0f59\u0f5a\u0003\u01d8\u00ec\u0000\u0f5a\u0f5b\u0003"+
		"\u011a\u008d\u0000\u0f5b\u0f5c\u0005\u0081\u0000\u0000\u0f5c\u0f5d\u0003"+
		"\u018c\u00c6\u0000\u0f5d\u0f5e\u0005!\u0000\u0000\u0f5e\u0fab\u0001\u0000"+
		"\u0000\u0000\u0f5f\u0f60\u0005\u0246\u0000\u0000\u0f60\u0f61\u0005\u0097"+
		"\u0000\u0000\u0f61\u0f62\u0003\u0100\u0080\u0000\u0f62\u0f63\u0005 \u0000"+
		"\u0000\u0f63\u0f64\u0005\u0247\u0000\u0000\u0f64\u0f69\u0003\u00fe\u007f"+
		"\u0000\u0f65\u0f66\u0005&\u0000\u0000\u0f66\u0f68\u0003\u00fe\u007f\u0000"+
		"\u0f67\u0f65\u0001\u0000\u0000\u0000\u0f68\u0f6b\u0001\u0000\u0000\u0000"+
		"\u0f69\u0f67\u0001\u0000\u0000\u0000\u0f69\u0f6a\u0001\u0000\u0000\u0000"+
		"\u0f6a\u0f6c\u0001\u0000\u0000\u0000\u0f6b\u0f69\u0001\u0000\u0000\u0000"+
		"\u0f6c\u0f6d\u0005!\u0000\u0000\u0f6d\u0fab\u0001\u0000\u0000\u0000\u0f6e"+
		"\u0f6f\u0005\u0248\u0000\u0000\u0f6f\u0f70\u0005 \u0000\u0000\u0f70\u0f73"+
		"\u0003\u011a\u008d\u0000\u0f71\u0f72\u00050\u0000\u0000\u0f72\u0f74\u0005"+
		"\u017b\u0000\u0000\u0f73\u0f71\u0001\u0000\u0000\u0000\u0f73\u0f74\u0001"+
		"\u0000\u0000\u0000\u0f74\u0f7d\u0001\u0000\u0000\u0000\u0f75\u0f76\u0005"+
		"&\u0000\u0000\u0f76\u0f79\u0003\u011a\u008d\u0000\u0f77\u0f78\u00050\u0000"+
		"\u0000\u0f78\u0f7a\u0005\u017b\u0000\u0000\u0f79\u0f77\u0001\u0000\u0000"+
		"\u0000\u0f79\u0f7a\u0001\u0000\u0000\u0000\u0f7a\u0f7c\u0001\u0000\u0000"+
		"\u0000\u0f7b\u0f75\u0001\u0000\u0000\u0000\u0f7c\u0f7f\u0001\u0000\u0000"+
		"\u0000\u0f7d\u0f7b\u0001\u0000\u0000\u0000\u0f7d\u0f7e\u0001\u0000\u0000"+
		"\u0000\u0f7e\u0f80\u0001\u0000\u0000\u0000\u0f7f\u0f7d\u0001\u0000\u0000"+
		"\u0000\u0f80\u0f81\u0005!\u0000\u0000\u0f81\u0fab\u0001\u0000\u0000\u0000"+
		"\u0f82\u0f83\u0005\u024b\u0000\u0000\u0f83\u0f84\u0005 \u0000\u0000\u0f84"+
		"\u0f85\u0003\u011a\u008d\u0000\u0f85\u0f86\u0005&\u0000\u0000\u0f86\u0f87"+
		"\u0003\u0224\u0112\u0000\u0f87\u0f88\u0005!\u0000\u0000\u0f88\u0fab\u0001"+
		"\u0000\u0000\u0000\u0f89\u0f8a\u0007\u0015\u0000\u0000\u0f8a\u0f8b\u0005"+
		" \u0000\u0000\u0f8b\u0f8c\u0003\u011a\u008d\u0000\u0f8c\u0f8d\u00050\u0000"+
		"\u0000\u0f8d\u0f8e\u0003\u00eau\u0000\u0f8e\u0f8f\u0005!\u0000\u0000\u0f8f"+
		"\u0fab\u0001\u0000\u0000\u0000\u0f90\u0f91\u0005\u024e\u0000\u0000\u0f91"+
		"\u0f92\u0005 \u0000\u0000\u0f92\u0f93\u0007\u0016\u0000\u0000\u0f93\u0f94"+
		"\u0005\u0254\u0000\u0000\u0f94\u0fab\u0005!\u0000\u0000\u0f95\u0f96\u0005"+
		"\u024f\u0000\u0000\u0f96\u0f97\u0005 \u0000\u0000\u0f97\u0f9a\u0005\u0254"+
		"\u0000\u0000\u0f98\u0f99\u00050\u0000\u0000\u0f99\u0f9b\u0005\u0174\u0000"+
		"\u0000\u0f9a\u0f98\u0001\u0000\u0000\u0000\u0f9a\u0f9b\u0001\u0000\u0000"+
		"\u0000\u0f9b\u0f9c\u0001\u0000\u0000\u0000\u0f9c\u0f9d\u0005&\u0000\u0000"+
		"\u0f9d\u0f9e\u0003\u00e6s\u0000\u0f9e\u0f9f\u0005!\u0000\u0000\u0f9f\u0fab"+
		"\u0001\u0000\u0000\u0000\u0fa0\u0fa1\u0005\u00cf\u0000\u0000\u0fa1\u0fa2"+
		"\u0005 \u0000\u0000\u0fa2\u0fa3\u0005\u0175\u0000\u0000\u0fa3\u0fa4\u0005"+
		"\u0254\u0000\u0000\u0fa4\u0fab\u0005!\u0000\u0000\u0fa5\u0fa6\u0005\u0250"+
		"\u0000\u0000\u0fa6\u0fa7\u0005 \u0000\u0000\u0fa7\u0fa8\u0005\u0176\u0000"+
		"\u0000\u0fa8\u0fa9\u0005\u0254\u0000\u0000\u0fa9\u0fab\u0005!\u0000\u0000"+
		"\u0faa\u0e8b\u0001\u0000\u0000\u0000\u0faa\u0e91\u0001\u0000\u0000\u0000"+
		"\u0faa\u0e92\u0001\u0000\u0000\u0000\u0faa\u0e93\u0001\u0000\u0000\u0000"+
		"\u0faa\u0e97\u0001\u0000\u0000\u0000\u0faa\u0e98\u0001\u0000\u0000\u0000"+
		"\u0faa\u0e9c\u0001\u0000\u0000\u0000\u0faa\u0e9d\u0001\u0000\u0000\u0000"+
		"\u0faa\u0ea1\u0001\u0000\u0000\u0000\u0faa\u0ea2\u0001\u0000\u0000\u0000"+
		"\u0faa\u0ea6\u0001\u0000\u0000\u0000\u0faa\u0ea7\u0001\u0000\u0000\u0000"+
		"\u0faa\u0ea8\u0001\u0000\u0000\u0000\u0faa\u0ea9\u0001\u0000\u0000\u0000"+
		"\u0faa\u0eaa\u0001\u0000\u0000\u0000\u0faa\u0eab\u0001\u0000\u0000\u0000"+
		"\u0faa\u0eac\u0001\u0000\u0000\u0000\u0faa\u0eb3\u0001\u0000\u0000\u0000"+
		"\u0faa\u0eb9\u0001\u0000\u0000\u0000\u0faa\u0ebe\u0001\u0000\u0000\u0000"+
		"\u0faa\u0ec5\u0001\u0000\u0000\u0000\u0faa\u0eca\u0001\u0000\u0000\u0000"+
		"\u0faa\u0ecf\u0001\u0000\u0000\u0000\u0faa\u0ed4\u0001\u0000\u0000\u0000"+
		"\u0faa\u0edb\u0001\u0000\u0000\u0000\u0faa\u0ee1\u0001\u0000\u0000\u0000"+
		"\u0faa\u0ee7\u0001\u0000\u0000\u0000\u0faa\u0eed\u0001\u0000\u0000\u0000"+
		"\u0faa\u0ef2\u0001\u0000\u0000\u0000\u0faa\u0ef9\u0001\u0000\u0000\u0000"+
		"\u0faa\u0efe\u0001\u0000\u0000\u0000\u0faa\u0f03\u0001\u0000\u0000\u0000"+
		"\u0faa\u0f08\u0001\u0000\u0000\u0000\u0faa\u0f0d\u0001\u0000\u0000\u0000"+
		"\u0faa\u0f13\u0001\u0000\u0000\u0000\u0faa\u0f1b\u0001\u0000\u0000\u0000"+
		"\u0faa\u0f23\u0001\u0000\u0000\u0000\u0faa\u0f2d\u0001\u0000\u0000\u0000"+
		"\u0faa\u0f33\u0001\u0000\u0000\u0000\u0faa\u0f38\u0001\u0000\u0000\u0000"+
		"\u0faa\u0f3f\u0001\u0000\u0000\u0000\u0faa\u0f45\u0001\u0000\u0000\u0000"+
		"\u0faa\u0f4d\u0001\u0000\u0000\u0000\u0faa\u0f57\u0001\u0000\u0000\u0000"+
		"\u0faa\u0f5f\u0001\u0000\u0000\u0000\u0faa\u0f6e\u0001\u0000\u0000\u0000"+
		"\u0faa\u0f82\u0001\u0000\u0000\u0000\u0faa\u0f89\u0001\u0000\u0000\u0000"+
		"\u0faa\u0f90\u0001\u0000\u0000\u0000\u0faa\u0f95\u0001\u0000\u0000\u0000"+
		"\u0faa\u0fa0\u0001\u0000\u0000\u0000\u0faa\u0fa5\u0001\u0000\u0000\u0000"+
		"\u0fab\u0189\u0001\u0000\u0000\u0000\u0fac\u0fad\u0003\u018c\u00c6\u0000"+
		"\u0fad\u0fae\u0003\u01ba\u00dd\u0000\u0fae\u0fc8\u0001\u0000\u0000\u0000"+
		"\u0faf\u0fb0\u0005\u0194\u0000\u0000\u0fb0\u0fb1\u0003\u018c\u00c6\u0000"+
		"\u0fb1\u0fb2\u0003\u01ba\u00dd\u0000\u0fb2\u0fc8\u0001\u0000\u0000\u0000"+
		"\u0fb3\u0fb4\u0003\u018c\u00c6\u0000\u0fb4\u0fb5\u0005\u00a5\u0000\u0000"+
		"\u0fb5\u0fb6\u0005$\u0000\u0000\u0fb6\u0fb7\u0005\u0255\u0000\u0000\u0fb7"+
		"\u0fb8\u0005%\u0000\u0000\u0fb8\u0fc8\u0001\u0000\u0000\u0000\u0fb9\u0fba"+
		"\u0005\u0194\u0000\u0000\u0fba\u0fbb\u0003\u018c\u00c6\u0000\u0fbb\u0fbc"+
		"\u0005\u00a5\u0000\u0000\u0fbc\u0fbd\u0005$\u0000\u0000\u0fbd\u0fbe\u0005"+
		"\u0255\u0000\u0000\u0fbe\u0fbf\u0005%\u0000\u0000\u0fbf\u0fc8\u0001\u0000"+
		"\u0000\u0000\u0fc0\u0fc1\u0003\u018c\u00c6\u0000\u0fc1\u0fc2\u0005\u00a5"+
		"\u0000\u0000\u0fc2\u0fc8\u0001\u0000\u0000\u0000\u0fc3\u0fc4\u0005\u0194"+
		"\u0000\u0000\u0fc4\u0fc5\u0003\u018c\u00c6\u0000\u0fc5\u0fc6\u0005\u00a5"+
		"\u0000\u0000\u0fc6\u0fc8\u0001\u0000\u0000\u0000\u0fc7\u0fac\u0001\u0000"+
		"\u0000\u0000\u0fc7\u0faf\u0001\u0000\u0000\u0000\u0fc7\u0fb3\u0001\u0000"+
		"\u0000\u0000\u0fc7\u0fb9\u0001\u0000\u0000\u0000\u0fc7\u0fc0\u0001\u0000"+
		"\u0000\u0000\u0fc7\u0fc3\u0001\u0000\u0000\u0000\u0fc8\u018b\u0001\u0000"+
		"\u0000\u0000\u0fc9\u0fd7\u0003\u0196\u00cb\u0000\u0fca\u0fd7\u0003\u019a"+
		"\u00cd\u0000\u0fcb\u0fd7\u0003\u01b0\u00d8\u0000\u0fcc\u0fd7\u0003\u01a0"+
		"\u00d0\u0000\u0fcd\u0fd7\u0003\u019c\u00ce\u0000\u0fce\u0fcf\u0003\u01b6"+
		"\u00db\u0000\u0fcf\u0fd0\u0003\u01b8\u00dc\u0000\u0fd0\u0fd7\u0001\u0000"+
		"\u0000\u0000\u0fd1\u0fd2\u0003\u01b6\u00db\u0000\u0fd2\u0fd3\u0005 \u0000"+
		"\u0000\u0fd3\u0fd4\u0005\u0255\u0000\u0000\u0fd4\u0fd5\u0005!\u0000\u0000"+
		"\u0fd5\u0fd7\u0001\u0000\u0000\u0000\u0fd6\u0fc9\u0001\u0000\u0000\u0000"+
		"\u0fd6\u0fca\u0001\u0000\u0000\u0000\u0fd6\u0fcb\u0001\u0000\u0000\u0000"+
		"\u0fd6\u0fcc\u0001\u0000\u0000\u0000\u0fd6\u0fcd\u0001\u0000\u0000\u0000"+
		"\u0fd6\u0fce\u0001\u0000\u0000\u0000\u0fd6\u0fd1\u0001\u0000\u0000\u0000"+
		"\u0fd7\u018d\u0001\u0000\u0000\u0000\u0fd8\u0fdd\u0003\u019a\u00cd\u0000"+
		"\u0fd9\u0fdd\u0003\u01b0\u00d8\u0000\u0fda\u0fdd\u0003\u01a0\u00d0\u0000"+
		"\u0fdb\u0fdd\u0003\u019c\u00ce\u0000\u0fdc\u0fd8\u0001\u0000\u0000\u0000"+
		"\u0fdc\u0fd9\u0001\u0000\u0000\u0000\u0fdc\u0fda\u0001\u0000\u0000\u0000"+
		"\u0fdc\u0fdb\u0001\u0000\u0000\u0000\u0fdd\u018f\u0001\u0000\u0000\u0000"+
		"\u0fde\u0fdf\u0006\u00c8\uffff\uffff\u0000\u0fdf\u0fe0\u0003\u011a\u008d"+
		"\u0000\u0fe0\u0fe6\u0001\u0000\u0000\u0000\u0fe1\u0fe2\n\u0001\u0000\u0000"+
		"\u0fe2\u0fe3\u0005&\u0000\u0000\u0fe3\u0fe5\u0003\u011a\u008d\u0000\u0fe4"+
		"\u0fe1\u0001\u0000\u0000\u0000\u0fe5\u0fe8\u0001\u0000\u0000\u0000\u0fe6"+
		"\u0fe4\u0001\u0000\u0000\u0000\u0fe6\u0fe7\u0001\u0000\u0000\u0000\u0fe7"+
		"\u0191\u0001\u0000\u0000\u0000\u0fe8\u0fe6\u0001\u0000\u0000\u0000\u0fe9"+
		"\u0fea\u0003\u0194\u00ca\u0000\u0fea\u0feb\u0005v\u0000\u0000\u0feb\u0fec"+
		"\u0003\u011a\u008d\u0000\u0fec\u0193\u0001\u0000\u0000\u0000\u0fed\u0ff5"+
		"\u0005\u00ac\u0000\u0000\u0fee\u0ff5\u0005\u00ae\u0000\u0000\u0fef\u0ff5"+
		"\u0005\u00b0\u0000\u0000\u0ff0\u0ff5\u0005\u00b1\u0000\u0000\u0ff1\u0ff5"+
		"\u0005\u00b2\u0000\u0000\u0ff2\u0ff5\u0005\u00b3\u0000\u0000\u0ff3\u0ff5"+
		"\u0003\u00eau\u0000\u0ff4\u0fed\u0001\u0000\u0000\u0000\u0ff4\u0fee\u0001"+
		"\u0000\u0000\u0000\u0ff4\u0fef\u0001\u0000\u0000\u0000\u0ff4\u0ff0\u0001"+
		"\u0000\u0000\u0000\u0ff4\u0ff1\u0001\u0000\u0000\u0000\u0ff4\u0ff2\u0001"+
		"\u0000\u0000\u0000\u0ff4\u0ff3\u0001\u0000\u0000\u0000\u0ff5\u0195\u0001"+
		"\u0000\u0000\u0000\u0ff6\u0ff8\u0003\u016c\u00b6\u0000\u0ff7\u0ff9\u0003"+
		"\u0198\u00cc\u0000\u0ff8\u0ff7\u0001\u0000\u0000\u0000\u0ff8\u0ff9\u0001"+
		"\u0000\u0000\u0000\u0ff9\u1000\u0001\u0000\u0000\u0000\u0ffa\u0ffb\u0003"+
		"\u016c\u00b6\u0000\u0ffb\u0ffd\u0003\u01aa\u00d5\u0000\u0ffc\u0ffe\u0003"+
		"\u0198\u00cc\u0000\u0ffd\u0ffc\u0001\u0000\u0000\u0000\u0ffd\u0ffe\u0001"+
		"\u0000\u0000\u0000\u0ffe\u1000\u0001\u0000\u0000\u0000\u0fff\u0ff6\u0001"+
		"\u0000\u0000\u0000\u0fff\u0ffa\u0001\u0000\u0000\u0000\u1000\u0197\u0001"+
		"\u0000\u0000\u0000\u1001\u1002\u0005 \u0000\u0000\u1002\u1003\u0003\u0190"+
		"\u00c8\u0000\u1003\u1004\u0005!\u0000\u0000\u1004\u0199\u0001\u0000\u0000"+
		"\u0000\u1005\u1021\u0005\u0160\u0000\u0000\u1006\u1021\u0005\u00c8\u0000"+
		"\u0000\u1007\u1021\u0005\u00cc\u0000\u0000\u1008\u1021\u0005\u00cd\u0000"+
		"\u0000\u1009\u1021\u0005\u00c9\u0000\u0000\u100a\u100b\u0005\u0164\u0000"+
		"\u0000\u100b\u1021\u0003\u01a8\u00d4\u0000\u100c\u100d\u0005\u00a2\u0000"+
		"\u0000\u100d\u1021\u0005f\u0000\u0000\u100e\u1010\u0005\u00ca\u0000\u0000"+
		"\u100f\u1011\u0003\u0198\u00cc\u0000\u1010\u100f\u0001\u0000\u0000\u0000"+
		"\u1010\u1011\u0001\u0000\u0000\u0000\u1011\u1021\u0001\u0000\u0000\u0000"+
		"\u1012\u1014\u0005\u00eb\u0000\u0000\u1013\u1015\u0003\u0198\u00cc\u0000"+
		"\u1014\u1013\u0001\u0000\u0000\u0000\u1014\u1015\u0001\u0000\u0000\u0000"+
		"\u1015\u1021\u0001\u0000\u0000\u0000\u1016\u1018\u0005\u00ce\u0000\u0000"+
		"\u1017\u1019\u0003\u0198\u00cc\u0000\u1018\u1017\u0001\u0000\u0000\u0000"+
		"\u1018\u1019\u0001\u0000\u0000\u0000\u1019\u1021\u0001\u0000\u0000\u0000"+
		"\u101a\u1021\u0005\u00a1\u0000\u0000\u101b\u1021\u0005\u0166\u0000\u0000"+
		"\u101c\u1021\u0005\u0165\u0000\u0000\u101d\u1021\u0005\u0161\u0000\u0000"+
		"\u101e\u1021\u0005\u0162\u0000\u0000\u101f\u1021\u0005\u0163\u0000\u0000"+
		"\u1020\u1005\u0001\u0000\u0000\u0000\u1020\u1006\u0001\u0000\u0000\u0000"+
		"\u1020\u1007\u0001\u0000\u0000\u0000\u1020\u1008\u0001\u0000\u0000\u0000"+
		"\u1020\u1009\u0001\u0000\u0000\u0000\u1020\u100a\u0001\u0000\u0000\u0000"+
		"\u1020\u100c\u0001\u0000\u0000\u0000\u1020\u100e\u0001\u0000\u0000\u0000"+
		"\u1020\u1012\u0001\u0000\u0000\u0000\u1020\u1016\u0001\u0000\u0000\u0000"+
		"\u1020\u101a\u0001\u0000\u0000\u0000\u1020\u101b\u0001\u0000\u0000\u0000"+
		"\u1020\u101c\u0001\u0000\u0000\u0000\u1020\u101d\u0001\u0000\u0000\u0000"+
		"\u1020\u101e\u0001\u0000\u0000\u0000\u1020\u101f\u0001\u0000\u0000\u0000"+
		"\u1021\u019b\u0001\u0000\u0000\u0000\u1022\u1023\u0005\u00a9\u0000\u0000"+
		"\u1023\u1024\u0005 \u0000\u0000\u1024\u1025\u0005\u0255\u0000\u0000\u1025"+
		"\u1027\u0005!\u0000\u0000\u1026\u1028\u0003\u019e\u00cf\u0000\u1027\u1026"+
		"\u0001\u0000\u0000\u0000\u1027\u1028\u0001\u0000\u0000\u0000\u1028\u103a"+
		"\u0001\u0000\u0000\u0000\u1029\u102b\u0005\u00a9\u0000\u0000\u102a\u102c"+
		"\u0003\u019e\u00cf\u0000\u102b\u102a\u0001\u0000\u0000\u0000\u102b\u102c"+
		"\u0001\u0000\u0000\u0000\u102c\u103a\u0001\u0000\u0000\u0000\u102d\u102e"+
		"\u0005\u00a8\u0000\u0000\u102e\u102f\u0005 \u0000\u0000\u102f\u1030\u0005"+
		"\u0255\u0000\u0000\u1030\u1032\u0005!\u0000\u0000\u1031\u1033\u0003\u019e"+
		"\u00cf\u0000\u1032\u1031\u0001\u0000\u0000\u0000\u1032\u1033\u0001\u0000"+
		"\u0000\u0000\u1033\u103a\u0001\u0000\u0000\u0000\u1034\u1036\u0005\u00a8"+
		"\u0000\u0000\u1035\u1037\u0003\u019e\u00cf\u0000\u1036\u1035\u0001\u0000"+
		"\u0000\u0000\u1036\u1037\u0001\u0000\u0000\u0000\u1037\u103a\u0001\u0000"+
		"\u0000\u0000\u1038\u103a\u0005\u00a7\u0000\u0000\u1039\u1022\u0001\u0000"+
		"\u0000\u0000\u1039\u1029\u0001\u0000\u0000\u0000\u1039\u102d\u0001\u0000"+
		"\u0000\u0000\u1039\u1034\u0001\u0000\u0000\u0000\u1039\u1038\u0001\u0000"+
		"\u0000\u0000\u103a\u019d\u0001\u0000\u0000\u0000\u103b\u103c\u0005m\u0000"+
		"\u0000\u103c\u103d\u0005\u00a8\u0000\u0000\u103d\u1042\u0005\u015b\u0000"+
		"\u0000\u103e\u103f\u0005\u015a\u0000\u0000\u103f\u1040\u0005\u00a8\u0000"+
		"\u0000\u1040\u1042\u0005\u015b\u0000\u0000\u1041\u103b\u0001\u0000\u0000"+
		"\u0000\u1041\u103e\u0001\u0000\u0000\u0000\u1042\u019f\u0001\u0000\u0000"+
		"\u0000\u1043\u1046\u0003\u01a2\u00d1\u0000\u1044\u1046\u0003\u01a4\u00d2"+
		"\u0000\u1045\u1043\u0001\u0000\u0000\u0000\u1045\u1044\u0001\u0000\u0000"+
		"\u0000\u1046\u01a1\u0001\u0000\u0000\u0000\u1047\u1048\u0003\u01a6\u00d3"+
		"\u0000\u1048\u1049\u0005 \u0000\u0000\u1049\u104a\u0005\u0255\u0000\u0000"+
		"\u104a\u104b\u0005!\u0000\u0000\u104b\u01a3\u0001\u0000\u0000\u0000\u104c"+
		"\u104d\u0003\u01a6\u00d3\u0000\u104d\u01a5\u0001\u0000\u0000\u0000\u104e"+
		"\u1050\u0005\u00a4\u0000\u0000\u104f\u1051\u0005\u00d5\u0000\u0000\u1050"+
		"\u104f\u0001\u0000\u0000\u0000\u1050\u1051\u0001\u0000\u0000\u0000\u1051"+
		"\u1066\u0001\u0000\u0000\u0000\u1052\u1054\u0005\u00a3\u0000\u0000\u1053"+
		"\u1055\u0005\u00d5\u0000\u0000\u1054\u1053\u0001\u0000\u0000\u0000\u1054"+
		"\u1055\u0001\u0000\u0000\u0000\u1055\u1066\u0001\u0000\u0000\u0000\u1056"+
		"\u1066\u0005\u016a\u0000\u0000\u1057\u1058\u0005\u00d6\u0000\u0000\u1058"+
		"\u105a\u0005\u00a4\u0000\u0000\u1059\u105b\u0005\u00d5\u0000\u0000\u105a"+
		"\u1059\u0001\u0000\u0000\u0000\u105a\u105b\u0001\u0000\u0000\u0000\u105b"+
		"\u1066\u0001\u0000\u0000\u0000\u105c\u105d\u0005\u00d6\u0000\u0000\u105d"+
		"\u105f\u0005\u00a3\u0000\u0000\u105e\u1060\u0005\u00d5\u0000\u0000\u105f"+
		"\u105e\u0001\u0000\u0000\u0000\u105f\u1060\u0001\u0000\u0000\u0000\u1060"+
		"\u1066\u0001\u0000\u0000\u0000\u1061\u1063\u0005\u00d7\u0000\u0000\u1062"+
		"\u1064\u0005\u00d5\u0000\u0000\u1063\u1062\u0001\u0000\u0000\u0000\u1063"+
		"\u1064\u0001\u0000\u0000\u0000\u1064\u1066\u0001\u0000\u0000\u0000\u1065"+
		"\u104e\u0001\u0000\u0000\u0000\u1065\u1052\u0001\u0000\u0000\u0000\u1065"+
		"\u1056\u0001\u0000\u0000\u0000\u1065\u1057\u0001\u0000\u0000\u0000\u1065"+
		"\u105c\u0001\u0000\u0000\u0000\u1065\u1061\u0001\u0000\u0000\u0000\u1066"+
		"\u01a7\u0001\u0000\u0000\u0000\u1067\u1068\u0005 \u0000\u0000\u1068\u1069"+
		"\u0005\u0255\u0000\u0000\u1069\u106c\u0005!\u0000\u0000\u106a\u106c\u0001"+
		"\u0000\u0000\u0000\u106b\u1067\u0001\u0000\u0000\u0000\u106b\u106a\u0001"+
		"\u0000\u0000\u0000\u106c\u01a9\u0001\u0000\u0000\u0000\u106d\u106e\u0006"+
		"\u00d5\uffff\uffff\u0000\u106e\u106f\u0005\u0014\u0000\u0000\u106f\u1070"+
		"\u0003\u01ac\u00d6\u0000\u1070\u1076\u0001\u0000\u0000\u0000\u1071\u1072"+
		"\n\u0001\u0000\u0000\u1072\u1073\u0005\u0014\u0000\u0000\u1073\u1075\u0003"+
		"\u01ac\u00d6\u0000\u1074\u1071\u0001\u0000\u0000\u0000\u1075\u1078\u0001"+
		"\u0000\u0000\u0000\u1076\u1074\u0001\u0000\u0000\u0000\u1076\u1077\u0001"+
		"\u0000\u0000\u0000\u1077\u01ab\u0001\u0000\u0000\u0000\u1078\u1076\u0001"+
		"\u0000\u0000\u0000\u1079\u107a\u0003\u01ae\u00d7\u0000\u107a\u01ad\u0001"+
		"\u0000\u0000\u0000\u107b\u1080\u0003\u00eau\u0000\u107c\u1080\u0003\u0236"+
		"\u011b\u0000\u107d\u1080\u0003\u00f0x\u0000\u107e\u1080\u0003\u00e4r\u0000"+
		"\u107f\u107b\u0001\u0000\u0000\u0000\u107f\u107c\u0001\u0000\u0000\u0000"+
		"\u107f\u107d\u0001\u0000\u0000\u0000\u107f\u107e\u0001\u0000\u0000\u0000"+
		"\u1080\u01af\u0001\u0000\u0000\u0000\u1081\u1084\u0003\u01b2\u00d9\u0000"+
		"\u1082\u1084\u0003\u01b4\u00da\u0000\u1083\u1081\u0001\u0000\u0000\u0000"+
		"\u1083\u1082\u0001\u0000\u0000\u0000\u1084\u01b1\u0001\u0000\u0000\u0000"+
		"\u1085\u1087\u0005\u0178\u0000\u0000\u1086\u1088\u0005\u00d5\u0000\u0000"+
		"\u1087\u1086\u0001\u0000\u0000\u0000\u1087\u1088\u0001\u0000\u0000\u0000"+
		"\u1088\u1089\u0001\u0000\u0000\u0000\u1089\u108a\u0005 \u0000\u0000\u108a"+
		"\u108b\u0003\u0190\u00c8\u0000\u108b\u108c\u0005!\u0000\u0000\u108c\u01b3"+
		"\u0001\u0000\u0000\u0000\u108d\u108f\u0005\u0178\u0000\u0000\u108e\u1090"+
		"\u0005\u00d5\u0000\u0000\u108f\u108e\u0001\u0000\u0000\u0000\u108f\u1090"+
		"\u0001\u0000\u0000\u0000\u1090\u01b5\u0001\u0000\u0000\u0000\u1091\u1092"+
		"\u0005\u00a6\u0000\u0000\u1092\u01b7\u0001\u0000\u0000\u0000\u1093\u10b0"+
		"\u0005\u00ac\u0000\u0000\u1094\u10b0\u0005\u00ae\u0000\u0000\u1095\u10b0"+
		"\u0005\u00b0\u0000\u0000\u1096\u10b0\u0005\u00b1\u0000\u0000\u1097\u10b0"+
		"\u0005\u00b2\u0000\u0000\u1098\u10b0\u0003\u01bc\u00de\u0000\u1099\u109a"+
		"\u0005\u00ac\u0000\u0000\u109a\u109b\u0005\u0087\u0000\u0000\u109b\u10b0"+
		"\u0005\u00ae\u0000\u0000\u109c\u109d\u0005\u00b0\u0000\u0000\u109d\u109e"+
		"\u0005\u0087\u0000\u0000\u109e\u10b0\u0005\u00b1\u0000\u0000\u109f\u10a0"+
		"\u0005\u00b0\u0000\u0000\u10a0\u10a1\u0005\u0087\u0000\u0000\u10a1\u10b0"+
		"\u0005\u00b2\u0000\u0000\u10a2\u10a3\u0005\u00b0\u0000\u0000\u10a3\u10a4"+
		"\u0005\u0087\u0000\u0000\u10a4\u10b0\u0003\u01bc\u00de\u0000\u10a5\u10a6"+
		"\u0005\u00b1\u0000\u0000\u10a6\u10a7\u0005\u0087\u0000\u0000\u10a7\u10b0"+
		"\u0005\u00b2\u0000\u0000\u10a8\u10a9\u0005\u00b1\u0000\u0000\u10a9\u10aa"+
		"\u0005\u0087\u0000\u0000\u10aa\u10b0\u0003\u01bc\u00de\u0000\u10ab\u10ac"+
		"\u0005\u00b2\u0000\u0000\u10ac\u10ad\u0005\u0087\u0000\u0000\u10ad\u10b0"+
		"\u0003\u01bc\u00de\u0000\u10ae\u10b0\u0001\u0000\u0000\u0000\u10af\u1093"+
		"\u0001\u0000\u0000\u0000\u10af\u1094\u0001\u0000\u0000\u0000\u10af\u1095"+
		"\u0001\u0000\u0000\u0000\u10af\u1096\u0001\u0000\u0000\u0000\u10af\u1097"+
		"\u0001\u0000\u0000\u0000\u10af\u1098\u0001\u0000\u0000\u0000\u10af\u1099"+
		"\u0001\u0000\u0000\u0000\u10af\u109c\u0001\u0000\u0000\u0000\u10af\u109f"+
		"\u0001\u0000\u0000\u0000\u10af\u10a2\u0001\u0000\u0000\u0000\u10af\u10a5"+
		"\u0001\u0000\u0000\u0000\u10af\u10a8\u0001\u0000\u0000\u0000\u10af\u10ab"+
		"\u0001\u0000\u0000\u0000\u10af\u10ae\u0001\u0000\u0000\u0000\u10b0\u01b9"+
		"\u0001\u0000\u0000\u0000\u10b1\u10bb\u0006\u00dd\uffff\uffff\u0000\u10b2"+
		"\u10b3\n\u0003\u0000\u0000\u10b3\u10b4\u0005$\u0000\u0000\u10b4\u10ba"+
		"\u0005%\u0000\u0000\u10b5\u10b6\n\u0002\u0000\u0000\u10b6\u10b7\u0005"+
		"$\u0000\u0000\u10b7\u10b8\u0005\u0255\u0000\u0000\u10b8\u10ba\u0005%\u0000"+
		"\u0000\u10b9\u10b2\u0001\u0000\u0000\u0000\u10b9\u10b5\u0001\u0000\u0000"+
		"\u0000\u10ba\u10bd\u0001\u0000\u0000\u0000\u10bb\u10b9\u0001\u0000\u0000"+
		"\u0000\u10bb\u10bc\u0001\u0000\u0000\u0000\u10bc\u01bb\u0001\u0000\u0000"+
		"\u0000\u10bd\u10bb\u0001\u0000\u0000\u0000\u10be\u10c4\u0005\u00b3\u0000"+
		"\u0000\u10bf\u10c0\u0005\u00b3\u0000\u0000\u10c0\u10c1\u0005 \u0000\u0000"+
		"\u10c1\u10c2\u0005\u0255\u0000\u0000\u10c2\u10c4\u0005!\u0000\u0000\u10c3"+
		"\u10be\u0001\u0000\u0000\u0000\u10c3\u10bf\u0001\u0000\u0000\u0000\u10c4"+
		"\u01bd\u0001\u0000\u0000\u0000\u10c5\u10c6\u0007\u0017\u0000\u0000\u10c6"+
		"\u01bf\u0001\u0000\u0000\u0000\u10c7\u10c8\u0003\u011a\u008d\u0000\u10c8"+
		"\u10c9\u0005v\u0000\u0000\u10c9\u10ca\u0003\u0190\u00c8\u0000\u10ca\u10cf"+
		"\u0001\u0000\u0000\u0000\u10cb\u10cc\u0005v\u0000\u0000\u10cc\u10cf\u0003"+
		"\u0190\u00c8\u0000\u10cd\u10cf\u0003\u0190\u00c8\u0000\u10ce\u10c7\u0001"+
		"\u0000\u0000\u0000\u10ce\u10cb\u0001\u0000\u0000\u0000\u10ce\u10cd\u0001"+
		"\u0000\u0000\u0000\u10cf\u01c1\u0001\u0000\u0000\u0000\u10d0\u10d1\u0003"+
		"\u011a\u008d\u0000\u10d1\u10d2\u0003\u01c4\u00e2\u0000\u10d2\u10d3\u0003"+
		"\u01c6\u00e3\u0000\u10d3\u10d4\u0003\u01c8\u00e4\u0000\u10d4\u10da\u0001"+
		"\u0000\u0000\u0000\u10d5\u10d6\u0003\u011a\u008d\u0000\u10d6\u10d7\u0003"+
		"\u01c4\u00e2\u0000\u10d7\u10d8\u0003\u01c6\u00e3\u0000\u10d8\u10da\u0001"+
		"\u0000\u0000\u0000\u10d9\u10d0\u0001\u0000\u0000\u0000\u10d9\u10d5\u0001"+
		"\u0000\u0000\u0000\u10da\u01c3\u0001\u0000\u0000\u0000\u10db\u10dc\u0005"+
		"\u01b6\u0000\u0000\u10dc\u10dd\u0003\u011a\u008d\u0000\u10dd\u01c5\u0001"+
		"\u0000\u0000\u0000\u10de\u10df\u0005v\u0000\u0000\u10df\u10e0\u0003\u011a"+
		"\u008d\u0000\u10e0\u01c7\u0001\u0000\u0000\u0000\u10e1\u10e2\u0005\u0086"+
		"\u0000\u0000\u10e2\u10e3\u0003\u011a\u008d\u0000\u10e3\u01c9\u0001\u0000"+
		"\u0000\u0000\u10e4\u10e5\u0003\u011c\u008e\u0000\u10e5\u10e6\u0005\u0091"+
		"\u0000\u0000\u10e6\u10e7\u0003\u011c\u008e\u0000\u10e7\u10ea\u0001\u0000"+
		"\u0000\u0000\u10e8\u10ea\u0001\u0000\u0000\u0000\u10e9\u10e4\u0001\u0000"+
		"\u0000\u0000\u10e9\u10e8\u0001\u0000\u0000\u0000\u10ea\u01cb\u0001\u0000"+
		"\u0000\u0000\u10eb\u10ec\u0003\u011a\u008d\u0000\u10ec\u10ed\u0003\u01c6"+
		"\u00e3\u0000\u10ed\u10ee\u0003\u01c8\u00e4\u0000\u10ee\u10fc\u0001\u0000"+
		"\u0000\u0000\u10ef\u10f0\u0003\u011a\u008d\u0000\u10f0\u10f1\u0003\u01c8"+
		"\u00e4\u0000\u10f1\u10f2\u0003\u01c6\u00e3\u0000\u10f2\u10fc\u0001\u0000"+
		"\u0000\u0000\u10f3\u10f4\u0003\u011a\u008d\u0000\u10f4\u10f5\u0003\u01c6"+
		"\u00e3\u0000\u10f5\u10fc\u0001\u0000\u0000\u0000\u10f6\u10f7\u0003\u011a"+
		"\u008d\u0000\u10f7\u10f8\u0003\u01c8\u00e4\u0000\u10f8\u10fc\u0001\u0000"+
		"\u0000\u0000\u10f9\u10fc\u0003\u0190\u00c8\u0000\u10fa\u10fc\u0001\u0000"+
		"\u0000\u0000\u10fb\u10eb\u0001\u0000\u0000\u0000\u10fb\u10ef\u0001\u0000"+
		"\u0000\u0000\u10fb\u10f3\u0001\u0000\u0000\u0000\u10fb\u10f6\u0001\u0000"+
		"\u0000\u0000\u10fb\u10f9\u0001\u0000\u0000\u0000\u10fb\u10fa\u0001\u0000"+
		"\u0000\u0000\u10fc\u01cd\u0001\u0000\u0000\u0000\u10fd\u10fe\u0005\u0199"+
		"\u0000\u0000\u10fe\u10ff\u0005 \u0000\u0000\u10ff\u1100\u0003\u01d0\u00e8"+
		"\u0000\u1100\u1101\u0005!\u0000\u0000\u1101\u01cf\u0001\u0000\u0000\u0000"+
		"\u1102\u1107\u0003\u01d2\u00e9\u0000\u1103\u1104\u0005&\u0000\u0000\u1104"+
		"\u1106\u0003\u01d2\u00e9\u0000\u1105\u1103\u0001\u0000\u0000\u0000\u1106"+
		"\u1109\u0001\u0000\u0000\u0000\u1107\u1105\u0001\u0000\u0000\u0000\u1107"+
		"\u1108\u0001\u0000\u0000\u0000\u1108\u01d1\u0001\u0000\u0000\u0000\u1109"+
		"\u1107\u0001\u0000\u0000\u0000\u110a\u110b\u0003\u011a\u008d\u0000\u110b"+
		"\u110c\u0005\u0081\u0000\u0000\u110c\u110d\u0003\u00eau\u0000\u110d\u1110"+
		"\u0001\u0000\u0000\u0000\u110e\u1110\u0003\u011a\u008d\u0000\u110f\u110a"+
		"\u0001\u0000\u0000\u0000\u110f\u110e\u0001\u0000\u0000\u0000\u1110\u01d3"+
		"\u0001\u0000\u0000\u0000\u1111\u1112\u0005\u019b\u0000\u0000\u1112\u1121"+
		"\u0003\u011e\u008f\u0000\u1113\u1114\u0005\u019b\u0000\u0000\u1114\u1115"+
		"\u0003\u011e\u008f\u0000\u1115\u1116\u0003\u01d6\u00eb\u0000\u1116\u1121"+
		"\u0001\u0000\u0000\u0000\u1117\u1118\u0005\u019b\u0000\u0000\u1118\u1119"+
		"\u0003\u01d6\u00eb\u0000\u1119\u111a\u0003\u011e\u008f\u0000\u111a\u1121"+
		"\u0001\u0000\u0000\u0000\u111b\u111c\u0005\u019b\u0000\u0000\u111c\u111d"+
		"\u0003\u01d6\u00eb\u0000\u111d\u111e\u0003\u011e\u008f\u0000\u111e\u111f"+
		"\u0003\u01d6\u00eb\u0000\u111f\u1121\u0001\u0000\u0000\u0000\u1120\u1111"+
		"\u0001\u0000\u0000\u0000\u1120\u1113\u0001\u0000\u0000\u0000\u1120\u1117"+
		"\u0001\u0000\u0000\u0000\u1120\u111b\u0001\u0000\u0000\u0000\u1121\u01d5"+
		"\u0001\u0000\u0000\u0000\u1122\u1123\u0005\u0097\u0000\u0000\u1123\u1127"+
		"\u0005\u019a\u0000\u0000\u1124\u1125\u0005\u0097\u0000\u0000\u1125\u1127"+
		"\u0005\u00d8\u0000\u0000\u1126\u1122\u0001\u0000\u0000\u0000\u1126\u1124"+
		"\u0001\u0000\u0000\u0000\u1127\u01d7\u0001\u0000\u0000\u0000\u1128\u1129"+
		"\u0007\u0018\u0000\u0000\u1129\u01d9\u0001\u0000\u0000\u0000\u112a\u112b"+
		"\u0005\u00bb\u0000\u0000\u112b\u1130\u0005\u01b4\u0000\u0000\u112c\u112d"+
		"\u0005\u01b3\u0000\u0000\u112d\u1130\u0005\u01b4\u0000\u0000\u112e\u1130"+
		"\u0001\u0000\u0000\u0000\u112f\u112a\u0001\u0000\u0000\u0000\u112f\u112c"+
		"\u0001\u0000\u0000\u0000\u112f\u112e\u0001\u0000\u0000\u0000\u1130\u01db"+
		"\u0001\u0000\u0000\u0000\u1131\u1132\u0005\u019c\u0000\u0000\u1132\u1137"+
		"\u0003\u011a\u008d\u0000\u1133\u1134\u0005\u019c\u0000\u0000\u1134\u1135"+
		"\u0005\u00ff\u0000\u0000\u1135\u1137\u0005\u00d8\u0000\u0000\u1136\u1131"+
		"\u0001\u0000\u0000\u0000\u1136\u1133\u0001\u0000\u0000\u0000\u1137\u01dd"+
		"\u0001\u0000\u0000\u0000\u1138\u1139\u0005&\u0000\u0000\u1139\u113a\u0005"+
		"\u019e\u0000\u0000\u113a\u1143\u0005\u019d\u0000\u0000\u113b\u113c\u0005"+
		"&\u0000\u0000\u113c\u113d\u0005\u019e\u0000\u0000\u113d\u1143\u0005\u00ff"+
		"\u0000\u0000\u113e\u113f\u0005&\u0000\u0000\u113f\u1140\u0005\u019e\u0000"+
		"\u0000\u1140\u1141\u0005\u00ff\u0000\u0000\u1141\u1143\u0005\u00d8\u0000"+
		"\u0000\u1142\u1138\u0001\u0000\u0000\u0000\u1142\u113b\u0001\u0000\u0000"+
		"\u0000\u1142\u113e\u0001\u0000\u0000\u0000\u1143\u01df\u0001\u0000\u0000"+
		"\u0000\u1144\u1145\u0003\u0184\u00c2\u0000\u1145\u1146\u0003\u01e4\u00f2"+
		"\u0000\u1146\u01e1\u0001\u0000\u0000\u0000\u1147\u114c\u0003\u01e0\u00f0"+
		"\u0000\u1148\u1149\u0005&\u0000\u0000\u1149\u114b\u0003\u01e0\u00f0\u0000"+
		"\u114a\u1148\u0001\u0000\u0000\u0000\u114b\u114e\u0001\u0000\u0000\u0000"+
		"\u114c\u114a\u0001\u0000\u0000\u0000\u114c\u114d\u0001\u0000\u0000\u0000"+
		"\u114d\u01e3\u0001\u0000\u0000\u0000\u114e\u114c\u0001\u0000\u0000\u0000"+
		"\u114f\u1150\u0005\u0081\u0000\u0000\u1150\u1151\u0005 \u0000\u0000\u1151"+
		"\u1152\u0003\u01e6\u00f3\u0000\u1152\u1153\u0005!\u0000\u0000\u1153\u01e5"+
		"\u0001\u0000\u0000\u0000\u1154\u1159\u0003\u01e8\u00f4\u0000\u1155\u1156"+
		"\u0005&\u0000\u0000\u1156\u1158\u0003\u01e8\u00f4\u0000\u1157\u1155\u0001"+
		"\u0000\u0000\u0000\u1158\u115b\u0001\u0000\u0000\u0000\u1159\u1157\u0001"+
		"\u0000\u0000\u0000\u1159\u115a\u0001\u0000\u0000\u0000\u115a\u01e7\u0001"+
		"\u0000\u0000\u0000\u115b\u1159\u0001\u0000\u0000\u0000\u115c\u115d\u0003"+
		"\u016a\u00b5\u0000\u115d\u115f\u0003\u018a\u00c5\u0000\u115e\u1160\u0003"+
		"\u01ea\u00f5\u0000\u115f\u115e\u0001\u0000\u0000\u0000\u115f\u1160\u0001"+
		"\u0000\u0000\u0000\u1160\u01e9\u0001\u0000\u0000\u0000\u1161\u1163\u0005"+
		"\u010d\u0000\u0000\u1162\u1164\u0005\u0018\u0000\u0000\u1163\u1162\u0001"+
		"\u0000\u0000\u0000\u1163\u1164\u0001\u0000\u0000\u0000\u1164\u1165\u0001"+
		"\u0000\u0000\u0000\u1165\u1166\u0003\u01ec\u00f6\u0000\u1166\u01eb\u0001"+
		"\u0000\u0000\u0000\u1167\u116c\u0003\u016a\u00b5\u0000\u1168\u1169\u0003"+
		"\u016a\u00b5\u0000\u1169\u116a\u0003\u01aa\u00d5\u0000\u116a\u116c\u0001"+
		"\u0000\u0000\u0000\u116b\u1167\u0001\u0000\u0000\u0000\u116b\u1168\u0001"+
		"\u0000\u0000\u0000\u116c\u01ed\u0001\u0000\u0000\u0000\u116d\u116e\u0005"+
		"\u0081\u0000\u0000\u116e\u116f\u0003\u016a\u00b5\u0000\u116f\u1170\u0005"+
		" \u0000\u0000\u1170\u1171\u0003\u01f6\u00fb\u0000\u1171\u1172\u0005!\u0000"+
		"\u0000\u1172\u117c\u0001\u0000\u0000\u0000\u1173\u1174\u0005\u0081\u0000"+
		"\u0000\u1174\u117c\u0003\u016a\u00b5\u0000\u1175\u1176\u0003\u016a\u00b5"+
		"\u0000\u1176\u1177\u0005 \u0000\u0000\u1177\u1178\u0003\u01f6\u00fb\u0000"+
		"\u1178\u1179\u0005!\u0000\u0000\u1179\u117c\u0001\u0000\u0000\u0000\u117a"+
		"\u117c\u0003\u016a\u00b5\u0000\u117b\u116d\u0001\u0000\u0000\u0000\u117b"+
		"\u1173\u0001\u0000\u0000\u0000\u117b\u1175\u0001\u0000\u0000\u0000\u117b"+
		"\u117a\u0001\u0000\u0000\u0000\u117c\u01ef\u0001\u0000\u0000\u0000\u117d"+
		"\u117e\u0003\u00fe\u007f\u0000\u117e\u01f1\u0001\u0000\u0000\u0000\u117f"+
		"\u1180\u0003\u00fe\u007f\u0000\u1180\u01f3\u0001\u0000\u0000\u0000\u1181"+
		"\u1182\u0005\u0254\u0000\u0000\u1182\u01f5\u0001\u0000\u0000\u0000\u1183"+
		"\u1184\u0006\u00fb\uffff\uffff\u0000\u1184\u1185\u0003\u00fe\u007f\u0000"+
		"\u1185\u118b\u0001\u0000\u0000\u0000\u1186\u1187\n\u0001\u0000\u0000\u1187"+
		"\u1188\u0005&\u0000\u0000\u1188\u118a\u0003\u00fe\u007f\u0000\u1189\u1186"+
		"\u0001\u0000\u0000\u0000\u118a\u118d\u0001\u0000\u0000\u0000\u118b\u1189"+
		"\u0001\u0000\u0000\u0000\u118b\u118c\u0001\u0000\u0000\u0000\u118c\u01f7"+
		"\u0001\u0000\u0000\u0000\u118d\u118b\u0001\u0000\u0000\u0000\u118e\u11a0"+
		"\u0003\u01ee\u00f7\u0000\u118f\u1190\u0005\u0081\u0000\u0000\u1190\u1191"+
		"\u0005 \u0000\u0000\u1191\u1192\u0003\u01e6\u00f3\u0000\u1192\u1193\u0005"+
		"!\u0000\u0000\u1193\u11a0\u0001\u0000\u0000\u0000\u1194\u1195\u0005\u0081"+
		"\u0000\u0000\u1195\u1196\u0003\u016a\u00b5\u0000\u1196\u1197\u0005 \u0000"+
		"\u0000\u1197\u1198\u0003\u01e6\u00f3\u0000\u1198\u1199\u0005!\u0000\u0000"+
		"\u1199\u11a0\u0001\u0000\u0000\u0000\u119a\u119b\u0003\u016a\u00b5\u0000"+
		"\u119b\u119c\u0005 \u0000\u0000\u119c\u119d\u0003\u01e6\u00f3\u0000\u119d"+
		"\u119e\u0005!\u0000\u0000\u119e\u11a0\u0001\u0000\u0000\u0000\u119f\u118e"+
		"\u0001\u0000\u0000\u0000\u119f\u118f\u0001\u0000\u0000\u0000\u119f\u1194"+
		"\u0001\u0000\u0000\u0000\u119f\u119a\u0001\u0000\u0000\u0000\u11a0\u01f9"+
		"\u0001\u0000\u0000\u0000\u11a1\u11a2\u0005\u0184\u0000\u0000\u11a2\u11a3"+
		"\u0003\u0162\u00b1\u0000\u11a3\u11a4\u0005 \u0000\u0000\u11a4\u11a5\u0003"+
		"\u0190\u00c8\u0000\u11a5\u11a7\u0005!\u0000\u0000\u11a6\u11a8\u0003\u01fc"+
		"\u00fe\u0000\u11a7\u11a6\u0001\u0000\u0000\u0000\u11a7\u11a8\u0001\u0000"+
		"\u0000\u0000\u11a8\u01fb\u0001\u0000\u0000\u0000\u11a9\u11aa\u0005\u00d0"+
		"\u0000\u0000\u11aa\u11ab\u0005 \u0000\u0000\u11ab\u11ac\u0003\u011a\u008d"+
		"\u0000\u11ac\u11ad\u0005!\u0000\u0000\u11ad\u01fd\u0001\u0000\u0000\u0000"+
		"\u11ae\u11af\u0007\u0019\u0000\u0000\u11af\u01ff\u0001\u0000\u0000\u0000"+
		"\u11b0\u11b1\u0005\u0095\u0000\u0000\u11b1\u11b2\u0005\u0097\u0000\u0000"+
		"\u11b2\u11b3\u0003\u0202\u0101\u0000\u11b3\u0201\u0001\u0000\u0000\u0000"+
		"\u11b4\u11b9\u0003\u0204\u0102\u0000\u11b5\u11b6\u0005&\u0000\u0000\u11b6"+
		"\u11b8\u0003\u0204\u0102\u0000\u11b7\u11b5\u0001\u0000\u0000\u0000\u11b8"+
		"\u11bb\u0001\u0000\u0000\u0000\u11b9\u11b7\u0001\u0000\u0000\u0000\u11b9"+
		"\u11ba\u0001\u0000\u0000\u0000\u11ba\u0203\u0001\u0000\u0000\u0000\u11bb"+
		"\u11b9\u0001\u0000\u0000\u0000\u11bc\u11bd\u0003\u011a\u008d\u0000\u11bd"+
		"\u11be\u0005\u007f\u0000\u0000\u11be\u11c0\u0003\u0144\u00a2\u0000\u11bf"+
		"\u11c1\u0003\u0206\u0103\u0000\u11c0\u11bf\u0001\u0000\u0000\u0000\u11c0"+
		"\u11c1\u0001\u0000\u0000\u0000\u11c1\u11ca\u0001\u0000\u0000\u0000\u11c2"+
		"\u11c4\u0003\u011a\u008d\u0000\u11c3\u11c5\u0003\u0146\u00a3\u0000\u11c4"+
		"\u11c3\u0001\u0000\u0000\u0000\u11c4\u11c5\u0001\u0000\u0000\u0000\u11c5"+
		"\u11c7\u0001\u0000\u0000\u0000\u11c6\u11c8\u0003\u0206\u0103\u0000\u11c7"+
		"\u11c6\u0001\u0000\u0000\u0000\u11c7\u11c8\u0001\u0000\u0000\u0000\u11c8"+
		"\u11ca\u0001\u0000\u0000\u0000\u11c9\u11bc\u0001\u0000\u0000\u0000\u11c9"+
		"\u11c2\u0001\u0000\u0000\u0000\u11ca\u0205\u0001\u0000\u0000\u0000\u11cb"+
		"\u11cc\u0005\u0136\u0000\u0000\u11cc\u11d0\u0005\u0121\u0000\u0000\u11cd"+
		"\u11ce\u0005\u0136\u0000\u0000\u11ce\u11d0\u0005\u0130\u0000\u0000\u11cf"+
		"\u11cb\u0001\u0000\u0000\u0000\u11cf\u11cd\u0001\u0000\u0000\u0000\u11d0"+
		"\u0207\u0001\u0000\u0000\u0000\u11d1\u11d9\u0005o\u0000\u0000\u11d2\u11d3"+
		"\u0005o\u0000\u0000\u11d3\u11d4\u0005\u0082\u0000\u0000\u11d4\u11d5\u0005"+
		" \u0000\u0000\u11d5\u11d6\u0003\u0190\u00c8\u0000\u11d6\u11d7\u0005!\u0000"+
		"\u0000\u11d7\u11d9\u0001\u0000\u0000\u0000\u11d8\u11d1\u0001\u0000\u0000"+
		"\u0000\u11d8\u11d2\u0001\u0000\u0000\u0000\u11d9\u0209\u0001\u0000\u0000"+
		"\u0000\u11da\u11db\u0005o\u0000\u0000\u11db\u020b\u0001\u0000\u0000\u0000"+
		"\u11dc\u11dd\u0005\u013a\u0000\u0000\u11dd\u11e1\u0003\u009eO\u0000\u11de"+
		"\u11df\u0005\u013a\u0000\u0000\u11df\u11e1\u0003\u016a\u00b5\u0000\u11e0"+
		"\u11dc\u0001\u0000\u0000\u0000\u11e0\u11de\u0001\u0000\u0000\u0000\u11e1"+
		"\u020d\u0001\u0000\u0000\u0000\u11e2\u11e3\u0003\u016a\u00b5\u0000\u11e3"+
		"\u020f\u0001\u0000\u0000\u0000\u11e4\u11e9\u0003\u0214\u010a\u0000\u11e5"+
		"\u11e6\u0005&\u0000\u0000\u11e6\u11e8\u0003\u0214\u010a\u0000\u11e7\u11e5"+
		"\u0001\u0000\u0000\u0000\u11e8\u11eb\u0001\u0000\u0000\u0000\u11e9\u11e7"+
		"\u0001\u0000\u0000\u0000\u11e9\u11ea\u0001\u0000\u0000\u0000\u11ea\u0211"+
		"\u0001\u0000\u0000\u0000\u11eb\u11e9\u0001\u0000\u0000\u0000\u11ec\u11ee"+
		"\u0003\u0216\u010b\u0000\u11ed\u11ec\u0001\u0000\u0000\u0000\u11ed\u11ee"+
		"\u0001\u0000\u0000\u0000\u11ee\u11ef\u0001\u0000\u0000\u0000\u11ef\u11f1"+
		"\u0003\u0218\u010c\u0000\u11f0\u11f2\u0003\u0146\u00a3\u0000\u11f1\u11f0"+
		"\u0001\u0000\u0000\u0000\u11f1\u11f2\u0001\u0000\u0000\u0000\u11f2\u11f4"+
		"\u0001\u0000\u0000\u0000\u11f3\u11f5\u0003\u0206\u0103\u0000\u11f4\u11f3"+
		"\u0001\u0000\u0000\u0000\u11f4\u11f5\u0001\u0000\u0000\u0000\u11f5\u1202"+
		"\u0001\u0000\u0000\u0000\u11f6\u11f8\u0003\u0216\u010b\u0000\u11f7\u11f6"+
		"\u0001\u0000\u0000\u0000\u11f7\u11f8\u0001\u0000\u0000\u0000\u11f8\u11f9"+
		"\u0001\u0000\u0000\u0000\u11f9\u11fa\u0003\u01ec\u00f6\u0000\u11fa\u11fc"+
		"\u0003\u021a\u010d\u0000\u11fb\u11fd\u0003\u0146\u00a3\u0000\u11fc\u11fb"+
		"\u0001\u0000\u0000\u0000\u11fc\u11fd\u0001\u0000\u0000\u0000\u11fd\u11ff"+
		"\u0001\u0000\u0000\u0000\u11fe\u1200\u0003\u0206\u0103\u0000\u11ff\u11fe"+
		"\u0001\u0000\u0000\u0000\u11ff\u1200\u0001\u0000\u0000\u0000\u1200\u1202"+
		"\u0001\u0000\u0000\u0000\u1201\u11ed\u0001\u0000\u0000\u0000\u1201\u11f7"+
		"\u0001\u0000\u0000\u0000\u1202\u0213\u0001\u0000\u0000\u0000\u1203\u1204"+
		"\u0003\u016a\u00b5\u0000\u1204\u1205\u0003\u0212\u0109\u0000\u1205\u120f"+
		"\u0001\u0000\u0000\u0000\u1206\u1207\u0003\u0184\u00c2\u0000\u1207\u1208"+
		"\u0003\u0212\u0109\u0000\u1208\u120f\u0001\u0000\u0000\u0000\u1209\u120a"+
		"\u0005 \u0000\u0000\u120a\u120b\u0003\u011a\u008d\u0000\u120b\u120c\u0005"+
		"!\u0000\u0000\u120c\u120d\u0003\u0212\u0109\u0000\u120d\u120f\u0001\u0000"+
		"\u0000\u0000\u120e\u1203\u0001\u0000\u0000\u0000\u120e\u1206\u0001\u0000"+
		"\u0000\u0000\u120e\u1209\u0001\u0000\u0000\u0000\u120f\u0215\u0001\u0000"+
		"\u0000\u0000\u1210\u1211\u0005\u010d\u0000\u0000\u1211\u1212\u0003\u01ec"+
		"\u00f6\u0000\u1212\u0217\u0001\u0000\u0000\u0000\u1213\u1216\u0003\u01ec"+
		"\u00f6\u0000\u1214\u1216\u0001\u0000\u0000\u0000\u1215\u1213\u0001\u0000"+
		"\u0000\u0000\u1215\u1214\u0001\u0000\u0000\u0000\u1216\u0219\u0001\u0000"+
		"\u0000\u0000\u1217\u1218\u0005 \u0000\u0000\u1218\u1219\u0003\u021c\u010e"+
		"\u0000\u1219\u121a\u0005!\u0000\u0000\u121a\u021b\u0001\u0000\u0000\u0000"+
		"\u121b\u1220\u0003\u021e\u010f\u0000\u121c\u121d\u0005&\u0000\u0000\u121d"+
		"\u121f\u0003\u021e\u010f\u0000\u121e\u121c\u0001\u0000\u0000\u0000\u121f"+
		"\u1222\u0001\u0000\u0000\u0000\u1220\u121e\u0001\u0000\u0000\u0000\u1220"+
		"\u1221\u0001\u0000\u0000\u0000\u1221\u021d\u0001\u0000\u0000\u0000\u1222"+
		"\u1220\u0001\u0000\u0000\u0000\u1223\u1224\u0003\u00acV\u0000\u1224\u1225"+
		"\u0005\u0018\u0000\u0000\u1225\u1226\u0003\u0220\u0110\u0000\u1226\u1233"+
		"\u0001\u0000\u0000\u0000\u1227\u1233\u0003\u00acV\u0000\u1228\u1229\u0003"+
		"\u00acV\u0000\u1229\u122a\u0005\u0014\u0000\u0000\u122a\u122b\u0003\u00ac"+
		"V\u0000\u122b\u122c\u0005\u0018\u0000\u0000\u122c\u122d\u0003\u0220\u0110"+
		"\u0000\u122d\u1233\u0001\u0000\u0000\u0000\u122e\u122f\u0003\u00acV\u0000"+
		"\u122f\u1230\u0005\u0014\u0000\u0000\u1230\u1231\u0003\u00acV\u0000\u1231"+
		"\u1233\u0001\u0000\u0000\u0000\u1232\u1223\u0001\u0000\u0000\u0000\u1232"+
		"\u1227\u0001\u0000\u0000\u0000\u1232\u1228\u0001\u0000\u0000\u0000\u1232"+
		"\u122e\u0001\u0000\u0000\u0000\u1233\u021f\u0001\u0000\u0000\u0000\u1234"+
		"\u123b\u0003\u0222\u0111\u0000\u1235\u123b\u0003\u00e4r\u0000\u1236\u123b"+
		"\u0003\u0144\u00a2\u0000\u1237\u123b\u0005\u0255\u0000\u0000\u1238\u123b"+
		"\u0005\u0254\u0000\u0000\u1239\u123b\u0005\u01b9\u0000\u0000\u123a\u1234"+
		"\u0001\u0000\u0000\u0000\u123a\u1235\u0001\u0000\u0000\u0000\u123a\u1236"+
		"\u0001\u0000\u0000\u0000\u123a\u1237\u0001\u0000\u0000\u0000\u123a\u1238"+
		"\u0001\u0000\u0000\u0000\u123a\u1239\u0001\u0000\u0000\u0000\u123b\u0221"+
		"\u0001\u0000\u0000\u0000\u123c\u1249\u0003\u018a\u00c5\u0000\u123d\u123e"+
		"\u0003\u016c\u00b6\u0000\u123e\u123f\u0003\u01aa\u00d5\u0000\u123f\u1240"+
		"\u0005\r\u0000\u0000\u1240\u1241\u0005\u00cb\u0000\u0000\u1241\u1249\u0001"+
		"\u0000\u0000\u0000\u1242\u1243\u0005\u0194\u0000\u0000\u1243\u1244\u0003"+
		"\u016c\u00b6\u0000\u1244\u1245\u0003\u01aa\u00d5\u0000\u1245\u1246\u0005"+
		"\r\u0000\u0000\u1246\u1247\u0005\u00cb\u0000\u0000\u1247\u1249\u0001\u0000"+
		"\u0000\u0000\u1248\u123c\u0001\u0000\u0000\u0000\u1248\u123d\u0001\u0000"+
		"\u0000\u0000\u1248\u1242\u0001\u0000\u0000\u0000\u1249\u0223\u0001\u0000"+
		"\u0000\u0000\u124a\u124c\u0003\u0226\u0113\u0000\u124b\u124d\u0003\u0228"+
		"\u0114\u0000\u124c\u124b\u0001\u0000\u0000\u0000\u124c\u124d\u0001\u0000"+
		"\u0000\u0000\u124d\u124f\u0001\u0000\u0000\u0000\u124e\u1250\u0003\u022a"+
		"\u0115\u0000\u124f\u124e\u0001\u0000\u0000\u0000\u124f\u1250\u0001\u0000"+
		"\u0000\u0000\u1250\u1252\u0001\u0000\u0000\u0000\u1251\u1253\u0003\u01ea"+
		"\u00f5\u0000\u1252\u1251\u0001\u0000\u0000\u0000\u1252\u1253\u0001\u0000"+
		"\u0000\u0000\u1253\u1266\u0001\u0000\u0000\u0000\u1254\u1255\u0003\u0226"+
		"\u0113\u0000\u1255\u1256\u0005 \u0000\u0000\u1256\u125b\u0005\u0254\u0000"+
		"\u0000\u1257\u1258\u0005&\u0000\u0000\u1258\u125a\u0005\u0254\u0000\u0000"+
		"\u1259\u1257\u0001\u0000\u0000\u0000\u125a\u125d\u0001\u0000\u0000\u0000"+
		"\u125b\u1259\u0001\u0000\u0000\u0000\u125b\u125c\u0001\u0000\u0000\u0000"+
		"\u125c\u125e\u0001\u0000\u0000\u0000\u125d\u125b\u0001\u0000\u0000\u0000"+
		"\u125e\u1260\u0005!\u0000\u0000\u125f\u1261\u0003\u022a\u0115\u0000\u1260"+
		"\u125f\u0001\u0000\u0000\u0000\u1260\u1261\u0001\u0000\u0000\u0000\u1261"+
		"\u1263\u0001\u0000\u0000\u0000\u1262\u1264\u0003\u01ea\u00f5\u0000\u1263"+
		"\u1262\u0001\u0000\u0000\u0000\u1263\u1264\u0001\u0000\u0000\u0000\u1264"+
		"\u1266\u0001\u0000\u0000\u0000\u1265\u124a\u0001\u0000\u0000\u0000\u1265"+
		"\u1254\u0001\u0000\u0000\u0000\u1266\u0225\u0001\u0000\u0000\u0000\u1267"+
		"\u12a1\u0005\u0160\u0000\u0000\u1268\u12a1\u0005\u0161\u0000\u0000\u1269"+
		"\u12a1\u0005\u0162\u0000\u0000\u126a\u12a1\u0005\u0163\u0000\u0000\u126b"+
		"\u12a1\u0005\u00cc\u0000\u0000\u126c\u12a1\u0005\u00c8\u0000\u0000\u126d"+
		"\u12a1\u0005\u00cd\u0000\u0000\u126e\u12a1\u0005\u00ca\u0000\u0000\u126f"+
		"\u12a1\u0005\u00ce\u0000\u0000\u1270\u12a1\u0005\u00c9\u0000\u0000\u1271"+
		"\u12a1\u0005\u0164\u0000\u0000\u1272\u12a1\u0005\u0165\u0000\u0000\u1273"+
		"\u12a1\u0005\u0166\u0000\u0000\u1274\u1275\u0005\u00a2\u0000\u0000\u1275"+
		"\u12a1\u0005f\u0000\u0000\u1276\u12a1\u0005\u0167\u0000\u0000\u1277\u12a1"+
		"\u0005\u0168\u0000\u0000\u1278\u12a1\u0005\u0169\u0000\u0000\u1279\u12a1"+
		"\u0005\u016a\u0000\u0000\u127a\u12a1\u0005\u00a4\u0000\u0000\u127b\u12a1"+
		"\u0005\u00a3\u0000\u0000\u127c\u12a1\u0005\u00cf\u0000\u0000\u127d\u12a1"+
		"\u0005\u00c5\u0000\u0000\u127e\u12a1\u0005\u016b\u0000\u0000\u127f\u12a1"+
		"\u0005\u00a9\u0000\u0000\u1280\u12a1\u0005\u00a7\u0000\u0000\u1281\u12a1"+
		"\u0005\u00a8\u0000\u0000\u1282\u12a1\u0005\u00a6\u0000\u0000\u1283\u12a1"+
		"\u0005\u00a1\u0000\u0000\u1284\u12a1\u0005\u016c\u0000\u0000\u1285\u12a1"+
		"\u0005\u016d\u0000\u0000\u1286\u12a1\u0005\u016e\u0000\u0000\u1287\u12a1"+
		"\u0005\u016f\u0000\u0000\u1288\u12a1\u0005\u0170\u0000\u0000\u1289\u12a1"+
		"\u0005\u0171\u0000\u0000\u128a\u12a1\u0005\u0172\u0000\u0000\u128b\u12a1"+
		"\u0005\u0173\u0000\u0000\u128c\u12a1\u0005\u0174\u0000\u0000\u128d\u12a1"+
		"\u0005\u0175\u0000\u0000\u128e\u12a1\u0005\u0176\u0000\u0000\u128f\u12a1"+
		"\u0005\u0177\u0000\u0000\u1290\u12a1\u0005\u0178\u0000\u0000\u1291\u12a1"+
		"\u0005\u0179\u0000\u0000\u1292\u12a1\u0005\u017a\u0000\u0000\u1293\u12a1"+
		"\u0005\u017b\u0000\u0000\u1294\u12a1\u0005\u017c\u0000\u0000\u1295\u12a1"+
		"\u0005\u017d\u0000\u0000\u1296\u12a1\u0005\u017e\u0000\u0000\u1297\u12a1"+
		"\u0005\u017f\u0000\u0000\u1298\u12a1\u0005\u0180\u0000\u0000\u1299\u12a1"+
		"\u0005\u0181\u0000\u0000\u129a\u12a1\u0005\u0182\u0000\u0000\u129b\u12a1"+
		"\u0005\u0183\u0000\u0000\u129c\u12a1\u0005\u00a5\u0000\u0000\u129d\u12a1"+
		"\u0003\u00eau\u0000\u129e\u12a1\u0003\u019c\u00ce\u0000\u129f\u12a1\u0003"+
		"\u018a\u00c5\u0000\u12a0\u1267\u0001\u0000\u0000\u0000\u12a0\u1268\u0001"+
		"\u0000\u0000\u0000\u12a0\u1269\u0001\u0000\u0000\u0000\u12a0\u126a\u0001"+
		"\u0000\u0000\u0000\u12a0\u126b\u0001\u0000\u0000\u0000\u12a0\u126c\u0001"+
		"\u0000\u0000\u0000\u12a0\u126d\u0001\u0000\u0000\u0000\u12a0\u126e\u0001"+
		"\u0000\u0000\u0000\u12a0\u126f\u0001\u0000\u0000\u0000\u12a0\u1270\u0001"+
		"\u0000\u0000\u0000\u12a0\u1271\u0001\u0000\u0000\u0000\u12a0\u1272\u0001"+
		"\u0000\u0000\u0000\u12a0\u1273\u0001\u0000\u0000\u0000\u12a0\u1274\u0001"+
		"\u0000\u0000\u0000\u12a0\u1276\u0001\u0000\u0000\u0000\u12a0\u1277\u0001"+
		"\u0000\u0000\u0000\u12a0\u1278\u0001\u0000\u0000\u0000\u12a0\u1279\u0001"+
		"\u0000\u0000\u0000\u12a0\u127a\u0001\u0000\u0000\u0000\u12a0\u127b\u0001"+
		"\u0000\u0000\u0000\u12a0\u127c\u0001\u0000\u0000\u0000\u12a0\u127d\u0001"+
		"\u0000\u0000\u0000\u12a0\u127e\u0001\u0000\u0000\u0000\u12a0\u127f\u0001"+
		"\u0000\u0000\u0000\u12a0\u1280\u0001\u0000\u0000\u0000\u12a0\u1281\u0001"+
		"\u0000\u0000\u0000\u12a0\u1282\u0001\u0000\u0000\u0000\u12a0\u1283\u0001"+
		"\u0000\u0000\u0000\u12a0\u1284\u0001\u0000\u0000\u0000\u12a0\u1285\u0001"+
		"\u0000\u0000\u0000\u12a0\u1286\u0001\u0000\u0000\u0000\u12a0\u1287\u0001"+
		"\u0000\u0000\u0000\u12a0\u1288\u0001\u0000\u0000\u0000\u12a0\u1289\u0001"+
		"\u0000\u0000\u0000\u12a0\u128a\u0001\u0000\u0000\u0000\u12a0\u128b\u0001"+
		"\u0000\u0000\u0000\u12a0\u128c\u0001\u0000\u0000\u0000\u12a0\u128d\u0001"+
		"\u0000\u0000\u0000\u12a0\u128e\u0001\u0000\u0000\u0000\u12a0\u128f\u0001"+
		"\u0000\u0000\u0000\u12a0\u1290\u0001\u0000\u0000\u0000\u12a0\u1291\u0001"+
		"\u0000\u0000\u0000\u12a0\u1292\u0001\u0000\u0000\u0000\u12a0\u1293\u0001"+
		"\u0000\u0000\u0000\u12a0\u1294\u0001\u0000\u0000\u0000\u12a0\u1295\u0001"+
		"\u0000\u0000\u0000\u12a0\u1296\u0001\u0000\u0000\u0000\u12a0\u1297\u0001"+
		"\u0000\u0000\u0000\u12a0\u1298\u0001\u0000\u0000\u0000\u12a0\u1299\u0001"+
		"\u0000\u0000\u0000\u12a0\u129a\u0001\u0000\u0000\u0000\u12a0\u129b\u0001"+
		"\u0000\u0000\u0000\u12a0\u129c\u0001\u0000\u0000\u0000\u12a0\u129d\u0001"+
		"\u0000\u0000\u0000\u12a0\u129e\u0001\u0000\u0000\u0000\u12a0\u129f\u0001"+
		"\u0000\u0000\u0000\u12a1\u0227\u0001\u0000\u0000\u0000\u12a2\u12a3\u0005"+
		" \u0000\u0000\u12a3\u12a6\u0005\u0255\u0000\u0000\u12a4\u12a5\u0005&\u0000"+
		"\u0000\u12a5\u12a7\u0005\u0255\u0000\u0000\u12a6\u12a4\u0001\u0000\u0000"+
		"\u0000\u12a6\u12a7\u0001\u0000\u0000\u0000\u12a7\u12a8\u0001\u0000\u0000"+
		"\u0000\u12a8\u12a9\u0005!\u0000\u0000\u12a9\u0229\u0001\u0000\u0000\u0000"+
		"\u12aa\u12ab\u0007\u001a\u0000\u0000\u12ab\u12ad\u0005\\\u0000\u0000\u12ac"+
		"\u12ae\u0005\u0018\u0000\u0000\u12ad\u12ac\u0001\u0000\u0000\u0000\u12ad"+
		"\u12ae\u0001\u0000\u0000\u0000\u12ae\u12af\u0001\u0000\u0000\u0000\u12af"+
		"\u12b0\u0003\u022c\u0116\u0000\u12b0\u022b\u0001\u0000\u0000\u0000\u12b1"+
		"\u12b4\u0003\u00eau\u0000\u12b2\u12b3\u0005\u0014\u0000\u0000\u12b3\u12b5"+
		"\u0003\u00eau\u0000\u12b4\u12b2\u0001\u0000\u0000\u0000\u12b4\u12b5\u0001"+
		"\u0000\u0000\u0000\u12b5\u022d\u0001\u0000\u0000\u0000\u12b6\u12bb\u0003"+
		"\u022c\u0116\u0000\u12b7\u12b8\u0005&\u0000\u0000\u12b8\u12ba\u0003\u022c"+
		"\u0116\u0000\u12b9\u12b7\u0001\u0000\u0000\u0000\u12ba\u12bd\u0001\u0000"+
		"\u0000\u0000\u12bb\u12b9\u0001\u0000\u0000\u0000\u12bb\u12bc\u0001\u0000"+
		"\u0000\u0000\u12bc\u022f\u0001\u0000\u0000\u0000\u12bd\u12bb\u0001\u0000"+
		"\u0000\u0000\u12be\u12c4\u0005\u0255\u0000\u0000\u12bf\u12c0\u0005\u000f"+
		"\u0000\u0000\u12c0\u12c4\u0005\u0255\u0000\u0000\u12c1\u12c2\u0005\u0010"+
		"\u0000\u0000\u12c2\u12c4\u0005\u0255\u0000\u0000\u12c3\u12be\u0001\u0000"+
		"\u0000\u0000\u12c3\u12bf\u0001\u0000\u0000\u0000\u12c3\u12c1\u0001\u0000"+
		"\u0000\u0000\u12c4\u0231\u0001\u0000\u0000\u0000\u12c5\u12cb\u0005\u008d"+
		"\u0000\u0000\u12c6\u12cb\u0005\u008e\u0000\u0000\u12c7\u12cb\u0005\u0082"+
		"\u0000\u0000\u12c8\u12cb\u0003\u0234\u011a\u0000\u12c9\u12cb\u0005\u0254"+
		"\u0000\u0000\u12ca\u12c5\u0001\u0000\u0000\u0000\u12ca\u12c6\u0001\u0000"+
		"\u0000\u0000\u12ca\u12c7\u0001\u0000\u0000\u0000\u12ca\u12c8\u0001\u0000"+
		"\u0000\u0000\u12ca\u12c9\u0001\u0000\u0000\u0000\u12cb\u0233\u0001\u0000"+
		"\u0000\u0000\u12cc\u12d1\u0003\u00eau\u0000\u12cd\u12d1\u0003\u00eew\u0000"+
		"\u12ce\u12d1\u0003\u0236\u011b\u0000\u12cf\u12d1\u0003\u00f0x\u0000\u12d0"+
		"\u12cc\u0001\u0000\u0000\u0000\u12d0\u12cd\u0001\u0000\u0000\u0000\u12d0"+
		"\u12ce\u0001\u0000\u0000\u0000\u12d0\u12cf\u0001\u0000\u0000\u0000\u12d1"+
		"\u0235\u0001\u0000\u0000\u0000\u12d2\u12d3\u0007\u001b\u0000\u0000\u12d3"+
		"\u0237\u0001\u0000\u0000\u0000\u12d4\u12d5\u0003\u016a\u00b5\u0000\u12d5"+
		"\u0239\u0001\u0000\u0000\u0000\u12d6\u12db\u0003\u00eau\u0000\u12d7\u12db"+
		"\u0003\u0234\u011a\u0000\u12d8\u12db\u0005\u00be\u0000\u0000\u12d9\u12db"+
		"\u0005\u014c\u0000\u0000\u12da\u12d6\u0001\u0000\u0000\u0000\u12da\u12d7"+
		"\u0001\u0000\u0000\u0000\u12da\u12d8\u0001\u0000\u0000\u0000\u12da\u12d9"+
		"\u0001\u0000\u0000\u0000\u12db\u023b\u0001\u0000\u0000\u0000\u12dc\u12dd"+
		"\u0006\u011e\uffff\uffff\u0000\u12dd\u12de\u0003\u016a\u00b5\u0000\u12de"+
		"\u12e4\u0001\u0000\u0000\u0000\u12df\u12e0\n\u0001\u0000\u0000\u12e0\u12e1"+
		"\u0005\u0014\u0000\u0000\u12e1\u12e3\u0003\u016a\u00b5\u0000\u12e2\u12df"+
		"\u0001\u0000\u0000\u0000\u12e3\u12e6\u0001\u0000\u0000\u0000\u12e4\u12e2"+
		"\u0001\u0000\u0000\u0000\u12e4\u12e5\u0001\u0000\u0000\u0000\u12e5\u023d"+
		"\u0001\u0000\u0000\u0000\u12e6\u12e4\u0001\u0000\u0000\u0000\u12e7\u12ec"+
		"\u0003\u0240\u0120\u0000\u12e8\u12e9\u0005&\u0000\u0000\u12e9\u12eb\u0003"+
		"\u0240\u0120\u0000\u12ea\u12e8\u0001\u0000\u0000\u0000\u12eb\u12ee\u0001"+
		"\u0000\u0000\u0000\u12ec\u12ea\u0001\u0000\u0000\u0000\u12ec\u12ed\u0001"+
		"\u0000\u0000\u0000\u12ed\u023f\u0001\u0000\u0000\u0000\u12ee\u12ec\u0001"+
		"\u0000\u0000\u0000\u12ef\u12f2\u0003\u0232\u0119\u0000\u12f0\u12f2\u0003"+
		"\u0244\u0122\u0000\u12f1\u12ef\u0001\u0000\u0000\u0000\u12f1\u12f0\u0001"+
		"\u0000\u0000\u0000\u12f2\u0241\u0001\u0000\u0000\u0000\u12f3\u1301\u0005"+
		"\u0254\u0000\u0000\u12f4\u1301\u0003\u00eau\u0000\u12f5\u12f6\u0005\u00a6"+
		"\u0000\u0000\u12f6\u12f7\u0005\u0254\u0000\u0000\u12f7\u1301\u0003\u01b8"+
		"\u00dc\u0000\u12f8\u12f9\u0005\u00a6\u0000\u0000\u12f9\u12fa\u0005 \u0000"+
		"\u0000\u12fa\u12fb\u0005\u0255\u0000\u0000\u12fb\u12fc\u0005!\u0000\u0000"+
		"\u12fc\u1301\u0005\u0254\u0000\u0000\u12fd\u1301\u0003\u0244\u0122\u0000"+
		"\u12fe\u1301\u0005\u00b5\u0000\u0000\u12ff\u1301\u0005\u00c1\u0000\u0000"+
		"\u1300\u12f3\u0001\u0000\u0000\u0000\u1300\u12f4\u0001\u0000\u0000\u0000"+
		"\u1300\u12f5\u0001\u0000\u0000\u0000\u1300\u12f8\u0001\u0000\u0000\u0000"+
		"\u1300\u12fd\u0001\u0000\u0000\u0000\u1300\u12fe\u0001\u0000\u0000\u0000"+
		"\u1300\u12ff\u0001\u0000\u0000\u0000\u1301\u0243\u0001\u0000\u0000\u0000"+
		"\u1302\u1308\u0005\u0255\u0000\u0000\u1303\u1304\u0005\u000f\u0000\u0000"+
		"\u1304\u1308\u0005\u0255\u0000\u0000\u1305\u1306\u0005\u0010\u0000\u0000"+
		"\u1306\u1308\u0005\u0255\u0000\u0000\u1307\u1302\u0001\u0000\u0000\u0000"+
		"\u1307\u1303\u0001\u0000\u0000\u0000\u1307\u1305\u0001\u0000\u0000\u0000"+
		"\u1308\u0245\u0001\u0000\u0000\u0000\u1309\u130a\u0005\u0102\u0000\u0000"+
		"\u130a\u1311\u0005\u0230\u0000\u0000\u130b\u130c\u0005\u0102\u0000\u0000"+
		"\u130c\u1311\u0005\u01e4\u0000\u0000\u130d\u130e\u0005\u00d0\u0000\u0000"+
		"\u130e\u1311\u0005\u0102\u0000\u0000\u130f\u1311\u0005\u0225\u0000\u0000"+
		"\u1310\u1309\u0001\u0000\u0000\u0000\u1310\u130b\u0001\u0000\u0000\u0000"+
		"\u1310\u130d\u0001\u0000\u0000\u0000\u1310\u130f\u0001\u0000\u0000\u0000"+
		"\u1311\u0247\u0001\u0000\u0000\u0000\u1312\u1313\u0003\u016a\u00b5\u0000"+
		"\u1313\u1315\u0003\u018a\u00c5\u0000\u1314\u1316\u0003\u0276\u013b\u0000"+
		"\u1315\u1314\u0001\u0000\u0000\u0000\u1315\u1316\u0001\u0000\u0000\u0000"+
		"\u1316\u1317\u0001\u0000\u0000\u0000\u1317\u1318\u0003\u024a\u0125\u0000"+
		"\u1318\u0249\u0001\u0000\u0000\u0000\u1319\u131b\u0003\u024c\u0126\u0000"+
		"\u131a\u1319\u0001\u0000\u0000\u0000\u131b\u131e\u0001\u0000\u0000\u0000"+
		"\u131c\u131a\u0001\u0000\u0000\u0000\u131c\u131d\u0001\u0000\u0000\u0000"+
		"\u131d\u024b\u0001\u0000\u0000\u0000\u131e\u131c\u0001\u0000\u0000\u0000"+
		"\u131f\u1320\u0005`\u0000\u0000\u1320\u1321\u0003\u00fe\u007f\u0000\u1321"+
		"\u1322\u0003\u0250\u0128\u0000\u1322\u1328\u0001\u0000\u0000\u0000\u1323"+
		"\u1328\u0003\u0250\u0128\u0000\u1324\u1328\u0003\u024e\u0127\u0000\u1325"+
		"\u1326\u0005\u010d\u0000\u0000\u1326\u1328\u0003\u01ec\u00f6\u0000\u1327"+
		"\u131f\u0001\u0000\u0000\u0000\u1327\u1323\u0001\u0000\u0000\u0000\u1327"+
		"\u1324\u0001\u0000\u0000\u0000\u1327\u1325\u0001\u0000\u0000\u0000\u1328"+
		"\u024d\u0001\u0000\u0000\u0000\u1329\u1331\u0005\u0116\u0000\u0000\u132a"+
		"\u132b\u0005\u008b\u0000\u0000\u132b\u1331\u0005\u0116\u0000\u0000\u132c"+
		"\u132d\u0005\u012c\u0000\u0000\u132d\u1331\u0005\u0117\u0000\u0000\u132e"+
		"\u132f\u0005\u012c\u0000\u0000\u132f\u1331\u0005\u0126\u0000\u0000\u1330"+
		"\u1329\u0001\u0000\u0000\u0000\u1330\u132a\u0001\u0000\u0000\u0000\u1330"+
		"\u132c\u0001\u0000\u0000\u0000\u1330\u132e\u0001\u0000\u0000\u0000\u1331"+
		"\u024f\u0001\u0000\u0000\u0000\u1332\u1333\u0005\u008b\u0000\u0000\u1333"+
		"\u1366\u0005\u008c\u0000\u0000\u1334\u1366\u0005\u008c\u0000\u0000\u1335"+
		"\u1338\u0005b\u0000\u0000\u1336\u1337\u0005m\u0000\u0000\u1337\u1339\u0003"+
		"\u0264\u0132\u0000\u1338\u1336\u0001\u0000\u0000\u0000\u1338\u1339\u0001"+
		"\u0000\u0000\u0000\u1339\u133a\u0001\u0000\u0000\u0000\u133a\u1366\u0003"+
		"\u0262\u0131\u0000\u133b\u133c\u0005a\u0000\u0000\u133c\u133f\u0005d\u0000"+
		"\u0000\u133d\u133e\u0005m\u0000\u0000\u133e\u1340\u0003\u0264\u0132\u0000"+
		"\u133f\u133d\u0001\u0000\u0000\u0000\u133f\u1340\u0001\u0000\u0000\u0000"+
		"\u1340\u1341\u0001\u0000\u0000\u0000\u1341\u1366\u0003\u0262\u0131\u0000"+
		"\u1342\u1343\u0005\u00fb\u0000\u0000\u1343\u1344\u0005 \u0000\u0000\u1344"+
		"\u1345\u0003\u011a\u008d\u0000\u1345\u1347\u0005!\u0000\u0000\u1346\u1348"+
		"\u0003\u0260\u0130\u0000\u1347\u1346\u0001\u0000\u0000\u0000\u1347\u1348"+
		"\u0001\u0000\u0000\u0000\u1348\u1366\u0001\u0000\u0000\u0000\u1349\u134a"+
		"\u0005\u00b5\u0000\u0000\u134a\u1366\u0003\u011c\u008e\u0000\u134b\u134c"+
		"\u0005\u00fc\u0000\u0000\u134c\u134d\u0003\u025e\u012f\u0000\u134d\u134e"+
		"\u0005\u0081\u0000\u0000\u134e\u1350\u0005\u0125\u0000\u0000\u134f\u1351"+
		"\u0003\u0252\u0129\u0000\u1350\u134f\u0001\u0000\u0000\u0000\u1350\u1351"+
		"\u0001\u0000\u0000\u0000\u1351\u1366\u0001\u0000\u0000\u0000\u1352\u1353"+
		"\u0005\u00fc\u0000\u0000\u1353\u1354\u0003\u025e\u012f\u0000\u1354\u1355"+
		"\u0005\u0081\u0000\u0000\u1355\u1356\u0005 \u0000\u0000\u1356\u1357\u0003"+
		"\u011a\u008d\u0000\u1357\u1358\u0005!\u0000\u0000\u1358\u1359\u0005\u0238"+
		"\u0000\u0000\u1359\u1366\u0001\u0000\u0000\u0000\u135a\u135b\u0005\u0103"+
		"\u0000\u0000\u135b\u135d\u0003\u0168\u00b4\u0000\u135c\u135e\u0003\u0258"+
		"\u012c\u0000\u135d\u135c\u0001\u0000\u0000\u0000\u135d\u135e\u0001\u0000"+
		"\u0000\u0000\u135e\u1360\u0001\u0000\u0000\u0000\u135f\u1361\u0003\u0274"+
		"\u013a\u0000\u1360\u135f\u0001\u0000\u0000\u0000\u1360\u1361\u0001\u0000"+
		"\u0000\u0000\u1361\u1363\u0001\u0000\u0000\u0000\u1362\u1364\u0003\u026c"+
		"\u0136\u0000\u1363\u1362\u0001\u0000\u0000\u0000\u1363\u1364\u0001\u0000"+
		"\u0000\u0000\u1364\u1366\u0001\u0000\u0000\u0000\u1365\u1332\u0001\u0000"+
		"\u0000\u0000\u1365\u1334\u0001\u0000\u0000\u0000\u1365\u1335\u0001\u0000"+
		"\u0000\u0000\u1365\u133b\u0001\u0000\u0000\u0000\u1365\u1342\u0001\u0000"+
		"\u0000\u0000\u1365\u1349\u0001\u0000\u0000\u0000\u1365\u134b\u0001\u0000"+
		"\u0000\u0000\u1365\u1352\u0001\u0000\u0000\u0000\u1365\u135a\u0001\u0000"+
		"\u0000\u0000\u1366\u0251\u0001\u0000\u0000\u0000\u1367\u1368\u0005 \u0000"+
		"\u0000\u1368\u1369\u0003\u0254\u012a\u0000\u1369\u136a\u0005!\u0000\u0000"+
		"\u136a\u0253\u0001\u0000\u0000\u0000\u136b\u136d\u0003\u0256\u012b\u0000"+
		"\u136c\u136b\u0001\u0000\u0000\u0000\u136d\u136e\u0001\u0000\u0000\u0000"+
		"\u136e\u136c\u0001\u0000\u0000\u0000\u136e\u136f\u0001\u0000\u0000\u0000"+
		"\u136f\u0255\u0001\u0000\u0000\u0000\u1370\u1371\u0005\u0081\u0000\u0000"+
		"\u1371\u1396\u0003\u018c\u00c6\u0000\u1372\u1373\u0005\u010a\u0000\u0000"+
		"\u1373\u1396\u0003\u0244\u0122\u0000\u1374\u1396\u0005\u0112\u0000\u0000"+
		"\u1375\u1376\u0005\u00ff\u0000\u0000\u1376\u1396\u0005\u0112\u0000\u0000"+
		"\u1377\u1379\u0005\u0128\u0000\u0000\u1378\u137a\u0005\u0097\u0000\u0000"+
		"\u1379\u1378\u0001\u0000\u0000\u0000\u1379\u137a\u0001\u0000\u0000\u0000"+
		"\u137a\u137b\u0001\u0000\u0000\u0000\u137b\u1396\u0003\u0244\u0122\u0000"+
		"\u137c\u137d\u0005\u00ef\u0000\u0000\u137d\u1396\u0003\u0244\u0122\u0000"+
		"\u137e\u137f\u0005\u0134\u0000\u0000\u137f\u1396\u0003\u0244\u0122\u0000"+
		"\u1380\u1381\u0005\u00ff\u0000\u0000\u1381\u1396\u0005\u00ef\u0000\u0000"+
		"\u1382\u1383\u0005\u00ff\u0000\u0000\u1383\u1396\u0005\u0134\u0000\u0000"+
		"\u1384\u1385\u0005\u013b\u0000\u0000\u1385\u1386\u0005\u0097\u0000\u0000"+
		"\u1386\u1396\u0003\u01ec\u00f6\u0000\u1387\u1388\u0005\u014a\u0000\u0000"+
		"\u1388\u1389\u0005\u00c5\u0000\u0000\u1389\u1396\u0003\u01ec\u00f6\u0000"+
		"\u138a\u138c\u0005\u0106\u0000\u0000\u138b\u138d\u0005m\u0000\u0000\u138c"+
		"\u138b\u0001\u0000\u0000\u0000\u138c\u138d\u0001\u0000\u0000\u0000\u138d"+
		"\u138e\u0001\u0000\u0000\u0000\u138e\u1396\u0003\u0244\u0122\u0000\u138f"+
		"\u1396\u0005\u0144\u0000\u0000\u1390\u1392\u0005\u0144\u0000\u0000\u1391"+
		"\u1393\u0005m\u0000\u0000\u1392\u1391\u0001\u0000\u0000\u0000\u1392\u1393"+
		"\u0001\u0000\u0000\u0000\u1393\u1394\u0001\u0000\u0000\u0000\u1394\u1396"+
		"\u0003\u0244\u0122\u0000\u1395\u1370\u0001\u0000\u0000\u0000\u1395\u1372"+
		"\u0001\u0000\u0000\u0000\u1395\u1374\u0001\u0000\u0000\u0000\u1395\u1375"+
		"\u0001\u0000\u0000\u0000\u1395\u1377\u0001\u0000\u0000\u0000\u1395\u137c"+
		"\u0001\u0000\u0000\u0000\u1395\u137e\u0001\u0000\u0000\u0000\u1395\u1380"+
		"\u0001\u0000\u0000\u0000\u1395\u1382\u0001\u0000\u0000\u0000\u1395\u1384"+
		"\u0001\u0000\u0000\u0000\u1395\u1387\u0001\u0000\u0000\u0000\u1395\u138a"+
		"\u0001\u0000\u0000\u0000\u1395\u138f\u0001\u0000\u0000\u0000\u1395\u1390"+
		"\u0001\u0000\u0000\u0000\u1396\u0257\u0001\u0000\u0000\u0000\u1397\u1398"+
		"\u0005 \u0000\u0000\u1398\u1399\u0003\u025c\u012e\u0000\u1399\u139a\u0005"+
		"!\u0000\u0000\u139a\u0259\u0001\u0000\u0000\u0000\u139b\u139c\u0003\u016a"+
		"\u00b5\u0000\u139c\u025b\u0001\u0000\u0000\u0000\u139d\u13a2\u0003\u025a"+
		"\u012d\u0000\u139e\u139f\u0005&\u0000\u0000\u139f\u13a1\u0003\u025a\u012d"+
		"\u0000\u13a0\u139e\u0001\u0000\u0000\u0000\u13a1\u13a4\u0001\u0000\u0000"+
		"\u0000\u13a2\u13a0\u0001\u0000\u0000\u0000\u13a2\u13a3\u0001\u0000\u0000"+
		"\u0000\u13a3\u025d\u0001\u0000\u0000\u0000\u13a4\u13a2\u0001\u0000\u0000"+
		"\u0000\u13a5\u13a9\u0005\u00f9\u0000\u0000\u13a6\u13a7\u0005\u0097\u0000"+
		"\u0000\u13a7\u13a9\u0005\u00b5\u0000\u0000\u13a8\u13a5\u0001\u0000\u0000"+
		"\u0000\u13a8\u13a6\u0001\u0000\u0000\u0000\u13a9\u025f\u0001\u0000\u0000"+
		"\u0000\u13aa\u13ab\u0005\u00ff\u0000\u0000\u13ab\u13ac\u0005\u012a\u0000"+
		"\u0000\u13ac\u0261\u0001\u0000\u0000\u0000\u13ad\u13ae\u0005\u007f\u0000"+
		"\u0000\u13ae\u13af\u0005_\u0000\u0000\u13af\u13b0\u0005\u0151\u0000\u0000"+
		"\u13b0\u13b1\u0003\u00fe\u007f\u0000\u13b1\u0263\u0001\u0000\u0000\u0000"+
		"\u13b2\u13b3\u0005 \u0000\u0000\u13b3\u13b4\u0003\u0266\u0133\u0000\u13b4"+
		"\u13b5\u0005!\u0000\u0000\u13b5\u0265\u0001\u0000\u0000\u0000\u13b6\u13bb"+
		"\u0003\u0268\u0134\u0000\u13b7\u13b8\u0005&\u0000\u0000\u13b8\u13ba\u0003"+
		"\u0268\u0134\u0000\u13b9\u13b7\u0001\u0000\u0000\u0000\u13ba\u13bd\u0001"+
		"\u0000\u0000\u0000\u13bb\u13b9\u0001\u0000\u0000\u0000\u13bb\u13bc\u0001"+
		"\u0000\u0000\u0000\u13bc\u0267\u0001\u0000\u0000\u0000\u13bd\u13bb\u0001"+
		"\u0000\u0000\u0000\u13be\u13bf\u0003\u026a\u0135\u0000\u13bf\u13c0\u0005"+
		"\u0018\u0000\u0000\u13c0\u13c1\u0003\u0220\u0110\u0000\u13c1\u13c4\u0001"+
		"\u0000\u0000\u0000\u13c2\u13c4\u0003\u026a\u0135\u0000\u13c3\u13be\u0001"+
		"\u0000\u0000\u0000\u13c3\u13c2\u0001\u0000\u0000\u0000\u13c4\u0269\u0001"+
		"\u0000\u0000\u0000\u13c5\u13cb\u0003\u00eau\u0000\u13c6\u13cb\u0003\u00ee"+
		"w\u0000\u13c7\u13cb\u0003\u0236\u011b\u0000\u13c8\u13cb\u0003\u00f0x\u0000"+
		"\u13c9\u13cb\u0003\u00e4r\u0000\u13ca\u13c5\u0001\u0000\u0000\u0000\u13ca"+
		"\u13c6\u0001\u0000\u0000\u0000\u13ca\u13c7\u0001\u0000\u0000\u0000\u13ca"+
		"\u13c8\u0001\u0000\u0000\u0000\u13ca\u13c9\u0001\u0000\u0000\u0000\u13cb"+
		"\u026b\u0001\u0000\u0000\u0000\u13cc\u13d5\u0003\u0270\u0138\u0000\u13cd"+
		"\u13d5\u0003\u026e\u0137\u0000\u13ce\u13cf\u0003\u0270\u0138\u0000\u13cf"+
		"\u13d0\u0003\u026e\u0137\u0000\u13d0\u13d5\u0001\u0000\u0000\u0000\u13d1"+
		"\u13d2\u0003\u026e\u0137\u0000\u13d2\u13d3\u0003\u0270\u0138\u0000\u13d3"+
		"\u13d5\u0001\u0000\u0000\u0000\u13d4\u13cc\u0001\u0000\u0000\u0000\u13d4"+
		"\u13cd\u0001\u0000\u0000\u0000\u13d4\u13ce\u0001\u0000\u0000\u0000\u13d4"+
		"\u13d1\u0001\u0000\u0000\u0000\u13d5\u026d\u0001\u0000\u0000\u0000\u13d6"+
		"\u13d7\u0005\u0082\u0000\u0000\u13d7\u13d8\u0005S\u0000\u0000\u13d8\u13d9"+
		"\u0003\u0272\u0139\u0000\u13d9\u026f\u0001\u0000\u0000\u0000\u13da\u13db"+
		"\u0005\u0082\u0000\u0000\u13db\u13dc\u0005R\u0000\u0000\u13dc\u13dd\u0003"+
		"\u0272\u0139\u0000\u13dd\u0271\u0001\u0000\u0000\u0000\u13de\u13df\u0005"+
		"\u00ff\u0000\u0000\u13df\u13e7\u0005\u0109\u0000\u0000\u13e0\u13e7\u0005"+
		"\u0145\u0000\u0000\u13e1\u13e7\u0005\u00fa\u0000\u0000\u13e2\u13e3\u0005"+
		"\\\u0000\u0000\u13e3\u13e7\u0005\u008c\u0000\u0000\u13e4\u13e5\u0005\\"+
		"\u0000\u0000\u13e5\u13e7\u0005\u00b5\u0000\u0000\u13e6\u13de\u0001\u0000"+
		"\u0000\u0000\u13e6\u13e0\u0001\u0000\u0000\u0000\u13e6\u13e1\u0001\u0000"+
		"\u0000\u0000\u13e6\u13e2\u0001\u0000\u0000\u0000\u13e6\u13e4\u0001\u0000"+
		"\u0000\u0000\u13e7\u0273\u0001\u0000\u0000\u0000\u13e8\u13e9\u0005\u0133"+
		"\u0000\u0000\u13e9\u13ef\u0005y\u0000\u0000\u13ea\u13eb\u0005\u0133\u0000"+
		"\u0000\u13eb\u13ef\u0005\u013d\u0000\u0000\u13ec\u13ed\u0005\u0133\u0000"+
		"\u0000\u13ed\u13ef\u0005\u014e\u0000\u0000\u13ee\u13e8\u0001\u0000\u0000"+
		"\u0000\u13ee\u13ea\u0001\u0000\u0000\u0000\u13ee\u13ec\u0001\u0000\u0000"+
		"\u0000\u13ef\u0275\u0001\u0000\u0000\u0000\u13f0\u13f1\u0005\u0213\u0000"+
		"\u0000\u13f1\u13f2\u0005 \u0000\u0000\u13f2\u13f3\u0003\u0278\u013c\u0000"+
		"\u13f3\u13f4\u0005!\u0000\u0000\u13f4\u0277\u0001\u0000\u0000\u0000\u13f5"+
		"\u13fa\u0003\u027a\u013d\u0000\u13f6\u13f7\u0005&\u0000\u0000\u13f7\u13f9"+
		"\u0003\u027a\u013d\u0000\u13f8\u13f6\u0001\u0000\u0000\u0000\u13f9\u13fc"+
		"\u0001\u0000\u0000\u0000\u13fa\u13f8\u0001\u0000\u0000\u0000\u13fa\u13fb"+
		"\u0001\u0000\u0000\u0000\u13fb\u0279\u0001\u0000\u0000\u0000\u13fc\u13fa"+
		"\u0001\u0000\u0000\u0000\u13fd\u13fe\u0003\u027e\u013f\u0000\u13fe\u13ff"+
		"\u0003\u027c\u013e\u0000\u13ff\u027b\u0001\u0000\u0000\u0000\u1400\u1401"+
		"\u0005\u0254\u0000\u0000\u1401\u027d\u0001\u0000\u0000\u0000\u1402\u1403"+
		"\u0003\u01ae\u00d7\u0000\u1403\u027f\u0001\u0000\u0000\u0000\u1404\u140b"+
		"\u0005\u0135\u0000\u0000\u1405\u140b\u0005y\u0000\u0000\u1406\u140b\u0005"+
		"\u00b5\u0000\u0000\u1407\u1408\u0005\u007f\u0000\u0000\u1408\u1409\u0005"+
		"_\u0000\u0000\u1409\u140b\u0003\u00fe\u007f\u0000\u140a\u1404\u0001\u0000"+
		"\u0000\u0000\u140a\u1405\u0001\u0000\u0000\u0000\u140a\u1406\u0001\u0000"+
		"\u0000\u0000\u140a\u1407\u0001\u0000\u0000\u0000\u140b\u0281\u0001\u0000"+
		"\u0000\u0000\u140c\u140d\u0005 \u0000\u0000\u140d\u140e\u0003\u018a\u00c5"+
		"\u0000\u140e\u140f\u0005!\u0000\u0000\u140f\u1423\u0001\u0000\u0000\u0000"+
		"\u1410\u1411\u0005 \u0000\u0000\u1411\u1412\u0003\u018a\u00c5\u0000\u1412"+
		"\u1413\u0005&\u0000\u0000\u1413\u1414\u0003\u018a\u00c5\u0000\u1414\u1415"+
		"\u0005!\u0000\u0000\u1415\u1423\u0001\u0000\u0000\u0000\u1416\u1417\u0005"+
		" \u0000\u0000\u1417\u1418\u0005\u01b9\u0000\u0000\u1418\u1419\u0005&\u0000"+
		"\u0000\u1419\u141a\u0003\u018a\u00c5\u0000\u141a\u141b\u0005!\u0000\u0000"+
		"\u141b\u1423\u0001\u0000\u0000\u0000\u141c\u141d\u0005 \u0000\u0000\u141d"+
		"\u141e\u0003\u018a\u00c5\u0000\u141e\u141f\u0005&\u0000\u0000\u141f\u1420"+
		"\u0005\u01b9\u0000\u0000\u1420\u1421\u0005!\u0000\u0000\u1421\u1423\u0001"+
		"\u0000\u0000\u0000\u1422\u140c\u0001\u0000\u0000\u0000\u1422\u1410\u0001"+
		"\u0000\u0000\u0000\u1422\u1416\u0001\u0000\u0000\u0000\u1422\u141c\u0001"+
		"\u0000\u0000\u0000\u1423\u0283\u0001\u0000\u0000\u0000\u1424\u1425\u0003"+
		"\u0286\u0143\u0000\u1425\u1426\u0003\u015a\u00ad\u0000\u1426\u1427\u0003"+
		"\u0222\u0111\u0000\u1427\u1434\u0001\u0000\u0000\u0000\u1428\u1429\u0003"+
		"\u015a\u00ad\u0000\u1429\u142a\u0003\u0286\u0143\u0000\u142a\u142b\u0003"+
		"\u0222\u0111\u0000\u142b\u1434\u0001\u0000\u0000\u0000\u142c\u142d\u0003"+
		"\u015a\u00ad\u0000\u142d\u142e\u0003\u0222\u0111\u0000\u142e\u1434\u0001"+
		"\u0000\u0000\u0000\u142f\u1430\u0003\u0286\u0143\u0000\u1430\u1431\u0003"+
		"\u0222\u0111\u0000\u1431\u1434\u0001\u0000\u0000\u0000\u1432\u1434\u0003"+
		"\u0222\u0111\u0000\u1433\u1424\u0001\u0000\u0000\u0000\u1433\u1428\u0001"+
		"\u0000\u0000\u0000\u1433\u142c\u0001\u0000\u0000\u0000\u1433\u142f\u0001"+
		"\u0000\u0000\u0000\u1433\u1432\u0001\u0000\u0000\u0000\u1434\u0285\u0001"+
		"\u0000\u0000\u0000\u1435\u143c\u0005\u0091\u0000\u0000\u1436\u143c\u0005"+
		"\u0243\u0000\u0000\u1437\u143c\u0005\u0244\u0000\u0000\u1438\u1439\u0005"+
		"\u0091\u0000\u0000\u1439\u143c\u0005\u0243\u0000\u0000\u143a\u143c\u0005"+
		"\u01ad\u0000\u0000\u143b\u1435\u0001\u0000\u0000\u0000\u143b\u1436\u0001"+
		"\u0000\u0000\u0000\u143b\u1437\u0001\u0000\u0000\u0000\u143b\u1438\u0001"+
		"\u0000\u0000\u0000\u143b\u143a\u0001\u0000\u0000\u0000\u143c\u0287\u0001"+
		"\u0000\u0000\u0000\u143d\u1442\u0003\u0284\u0142\u0000\u143e\u143f\u0005"+
		"&\u0000\u0000\u143f\u1441\u0003\u0284\u0142\u0000\u1440\u143e\u0001\u0000"+
		"\u0000\u0000\u1441\u1444\u0001\u0000\u0000\u0000\u1442\u1440\u0001\u0000"+
		"\u0000\u0000\u1442\u1443\u0001\u0000\u0000\u0000\u1443\u0289\u0001\u0000"+
		"\u0000\u0000\u1444\u1442\u0001\u0000\u0000\u0000\u1445\u1448\u0003\u0234"+
		"\u011a\u0000\u1446\u1448\u0005\u0254\u0000\u0000\u1447\u1445\u0001\u0000"+
		"\u0000\u0000\u1447\u1446\u0001\u0000\u0000\u0000\u1448\u028b\u0001\u0000"+
		"\u0000\u0000\u1449\u144a\u0005\u0254\u0000\u0000\u144a\u028d\u0001\u0000"+
		"\u0000\u0000\u144b\u1450\u0003\u023a\u011d\u0000\u144c\u144d\u0005&\u0000"+
		"\u0000\u144d\u144f\u0003\u023a\u011d\u0000\u144e\u144c\u0001\u0000\u0000"+
		"\u0000\u144f\u1452\u0001\u0000\u0000\u0000\u1450\u144e\u0001\u0000\u0000"+
		"\u0000\u1450\u1451\u0001\u0000\u0000\u0000\u1451\u028f\u0001\u0000\u0000"+
		"\u0000\u1452\u1450\u0001\u0000\u0000\u0000\u1453\u1454\u0005\\\u0000\u0000"+
		"\u1454\u1457\u0003\u0292\u0149\u0000\u1455\u1457\u0003\u029e\u014f\u0000"+
		"\u1456\u1453\u0001\u0000\u0000\u0000\u1456\u1455\u0001\u0000\u0000\u0000"+
		"\u1457\u0291\u0001\u0000\u0000\u0000\u1458\u1459\u0005\u0107\u0000\u0000"+
		"\u1459\u1461\u0003\u0294\u014a\u0000\u145a\u145b\u0005\u014b\u0000\u0000"+
		"\u145b\u145c\u0005\u010b\u0000\u0000\u145c\u145d\u0005\u0081\u0000\u0000"+
		"\u145d\u145e\u0005\u0107\u0000\u0000\u145e\u1461\u0003\u0294\u014a\u0000"+
		"\u145f\u1461\u0003\u0298\u014c\u0000\u1460\u1458\u0001\u0000\u0000\u0000"+
		"\u1460\u145a\u0001\u0000\u0000\u0000\u1460\u145f\u0001\u0000\u0000\u0000"+
		"\u1461\u0293\u0001\u0000\u0000\u0000\u1462\u1469\u0003\u0296\u014b\u0000"+
		"\u1463\u1465\u0005&\u0000\u0000\u1464\u1463\u0001\u0000\u0000\u0000\u1464"+
		"\u1465\u0001\u0000\u0000\u0000\u1465\u1466\u0001\u0000\u0000\u0000\u1466"+
		"\u1468\u0003\u0296\u014b\u0000\u1467\u1464\u0001\u0000\u0000\u0000\u1468"+
		"\u146b\u0001\u0000\u0000\u0000\u1469\u1467\u0001\u0000\u0000\u0000\u1469"+
		"\u146a\u0001\u0000\u0000\u0000\u146a\u0295\u0001\u0000\u0000\u0000\u146b"+
		"\u1469\u0001\u0000\u0000\u0000\u146c\u146d\u0005\u00fd\u0000\u0000\u146d"+
		"\u146e\u0005\u00fe\u0000\u0000\u146e\u1477\u0003\u0246\u0123\u0000\u146f"+
		"\u1470\u0005\u0102\u0000\u0000\u1470\u1477\u0005\u0139\u0000\u0000\u1471"+
		"\u1472\u0005\u0102\u0000\u0000\u1472\u1477\u0005\u0239\u0000\u0000\u1473"+
		"\u1477\u0005\u0116\u0000\u0000\u1474\u1475\u0005\u008b\u0000\u0000\u1475"+
		"\u1477\u0005\u0116\u0000\u0000\u1476\u146c\u0001\u0000\u0000\u0000\u1476"+
		"\u146f\u0001\u0000\u0000\u0000\u1476\u1471\u0001\u0000\u0000\u0000\u1476"+
		"\u1473\u0001\u0000\u0000\u0000\u1476\u1474\u0001\u0000\u0000\u0000\u1477"+
		"\u0297\u0001\u0000\u0000\u0000\u1478\u1499\u0003\u029c\u014e\u0000\u1479"+
		"\u147a\u0003\u023c\u011e\u0000\u147a\u147b\u0005v\u0000\u0000\u147b\u147c"+
		"\u0005\u00b6\u0000\u0000\u147c\u1499\u0001\u0000\u0000\u0000\u147d\u147e"+
		"\u0005\u00a8\u0000\u0000\u147e\u147f\u0005\u015b\u0000\u0000\u147f\u1499"+
		"\u0003\u0242\u0121\u0000\u1480\u1481\u0005\u01d1\u0000\u0000\u1481\u1499"+
		"\u0005\u0254\u0000\u0000\u1482\u1483\u0005X\u0000\u0000\u1483\u1499\u0005"+
		"\u0254\u0000\u0000\u1484\u1486\u0005\u00c7\u0000\u0000\u1485\u1487\u0003"+
		"\u029a\u014d\u0000\u1486\u1485\u0001\u0000\u0000\u0000\u1486\u1487\u0001"+
		"\u0000\u0000\u0000\u1487\u1499\u0001\u0000\u0000\u0000\u1488\u1489\u0005"+
		"\u0104\u0000\u0000\u1489\u1499\u0003\u0234\u011a\u0000\u148a\u1499\u0005"+
		"\u0254\u0000\u0000\u148b\u148c\u0005\u014b\u0000\u0000\u148c\u148d\u0005"+
		"\u023f\u0000\u0000\u148d\u1499\u0003\u0234\u011a\u0000\u148e\u1499\u0005"+
		"\u0254\u0000\u0000\u148f\u1490\u0005\u014b\u0000\u0000\u1490\u1491\u0005"+
		"\u023f\u0000\u0000\u1491\u1499\u0005\u00b5\u0000\u0000\u1492\u1493\u0005"+
		"\u017c\u0000\u0000\u1493\u1494\u0005\u0100\u0000\u0000\u1494\u1499\u0003"+
		"\u01d8\u00ec\u0000\u1495\u1496\u0005\u0107\u0000\u0000\u1496\u1497\u0005"+
		"\u0210\u0000\u0000\u1497\u1499\u0005\u0254\u0000\u0000\u1498\u1478\u0001"+
		"\u0000\u0000\u0000\u1498\u1479\u0001\u0000\u0000\u0000\u1498\u147d\u0001"+
		"\u0000\u0000\u0000\u1498\u1480\u0001\u0000\u0000\u0000\u1498\u1482\u0001"+
		"\u0000\u0000\u0000\u1498\u1484\u0001\u0000\u0000\u0000\u1498\u1488\u0001"+
		"\u0000\u0000\u0000\u1498\u148a\u0001\u0000\u0000\u0000\u1498\u148b\u0001"+
		"\u0000\u0000\u0000\u1498\u148e\u0001\u0000\u0000\u0000\u1498\u148f\u0001"+
		"\u0000\u0000\u0000\u1498\u1492\u0001\u0000\u0000\u0000\u1498\u1495\u0001"+
		"\u0000\u0000\u0000\u1499\u0299\u0001\u0000\u0000\u0000\u149a\u149b\u0007"+
		"\u001c\u0000\u0000\u149b\u029b\u0001\u0000\u0000\u0000\u149c\u149d\u0003"+
		"\u023c\u011e\u0000\u149d\u14a0\u0007\u001d\u0000\u0000\u149e\u14a1\u0003"+
		"\u023e\u011f\u0000\u149f\u14a1\u0005\u00b5\u0000\u0000\u14a0\u149e\u0001"+
		"\u0000\u0000\u0000\u14a0\u149f\u0001\u0000\u0000\u0000\u14a1\u029d\u0001"+
		"\u0000\u0000\u0000\u14a2\u14a3\u0005\u0143\u0000\u0000\u14a3\u14a4\u0003"+
		"\u02a0\u0150\u0000\u14a4\u029f\u0001\u0000\u0000\u0000\u14a5\u14ae\u0003"+
		"\u02a2\u0151\u0000\u14a6\u14a7\u0005\u00a8\u0000\u0000\u14a7\u14ae\u0005"+
		"\u015b\u0000\u0000\u14a8\u14a9\u0005\u0107\u0000\u0000\u14a9\u14aa\u0005"+
		"\u00fd\u0000\u0000\u14aa\u14ae\u0005\u00fe\u0000\u0000\u14ab\u14ac\u0005"+
		"\u014b\u0000\u0000\u14ac\u14ae\u0005\u023f\u0000\u0000\u14ad\u14a5\u0001"+
		"\u0000\u0000\u0000\u14ad\u14a6\u0001\u0000\u0000\u0000\u14ad\u14a8\u0001"+
		"\u0000\u0000\u0000\u14ad\u14ab\u0001\u0000\u0000\u0000\u14ae\u02a1\u0001"+
		"\u0000\u0000\u0000\u14af\u14b2\u0003\u023c\u011e\u0000\u14b0\u14b2\u0005"+
		"\u0092\u0000\u0000\u14b1\u14af\u0001\u0000\u0000\u0000\u14b1\u14b0\u0001"+
		"\u0000\u0000\u0000\u14b2\u02a3\u0001\u0000\u0000\u0000\u14b3\u14b8\u0003"+
		"\u00c0`\u0000\u14b4\u14b5\u0005&\u0000\u0000\u14b5\u14b7\u0003\u00c0`"+
		"\u0000\u14b6\u14b4\u0001\u0000\u0000\u0000\u14b7\u14ba\u0001\u0000\u0000"+
		"\u0000\u14b8\u14b6\u0001\u0000\u0000\u0000\u14b8\u14b9\u0001\u0000\u0000"+
		"\u0000\u14b9\u02a5\u0001\u0000\u0000\u0000\u14ba\u14b8\u0001\u0000\u0000"+
		"\u0000\u14bb\u14bc\u0005\u01d0\u0000\u0000\u14bc\u14bd\u0005\u0082\u0000"+
		"\u0000\u14bd\u14be\u0005\u008c\u0000\u0000\u14be\u14df\u0005\u01e0\u0000"+
		"\u0000\u14bf\u14c0\u0005\u0226\u0000\u0000\u14c0\u14c1\u0005\u008c\u0000"+
		"\u0000\u14c1\u14c2\u0005\u0082\u0000\u0000\u14c2\u14c3\u0005\u008c\u0000"+
		"\u0000\u14c3\u14df\u0005\u01e0\u0000\u0000\u14c4\u14df\u0005\u023a\u0000"+
		"\u0000\u14c5\u14df\u0005\u01f7\u0000\u0000\u14c6\u14df\u0005\u022c\u0000"+
		"\u0000\u14c7\u14df\u0005\u0237\u0000\u0000\u14c8\u14c9\u0005\u011e\u0000"+
		"\u0000\u14c9\u14ca\u0005\u0149\u0000\u0000\u14ca\u14df\u0005\u00bd\u0000"+
		"\u0000\u14cb\u14cc\u0005\u011e\u0000\u0000\u14cc\u14cd\u0005\u0149\u0000"+
		"\u0000\u14cd\u14df\u0005\u0215\u0000\u0000\u14ce\u14cf\u0005\u0149\u0000"+
		"\u0000\u14cf\u14df\u0005\u00bd\u0000\u0000\u14d0\u14d1\u0005\u0149\u0000"+
		"\u0000\u14d1\u14df\u0005\u0215\u0000\u0000\u14d2\u14df\u0005\u01e3\u0000"+
		"\u0000\u14d3\u14d4\u0005\u008b\u0000\u0000\u14d4\u14df\u0005\u01e3\u0000"+
		"\u0000\u14d5\u14d6\u0005\u01ce\u0000\u0000\u14d6\u14df\u0003\u0244\u0122"+
		"\u0000\u14d7\u14d8\u0005\u0105\u0000\u0000\u14d8\u14df\u0003\u0244\u0122"+
		"\u0000\u14d9\u14da\u0005\u022b\u0000\u0000\u14da\u14df\u0003\u01ec\u00f6"+
		"\u0000\u14db\u14df\u0003\u02a8\u0154\u0000\u14dc\u14dd\u0005\u01e2\u0000"+
		"\u0000\u14dd\u14df\u0003\u016a\u00b5\u0000\u14de\u14bb\u0001\u0000\u0000"+
		"\u0000\u14de\u14bf\u0001\u0000\u0000\u0000\u14de\u14c4\u0001\u0000\u0000"+
		"\u0000\u14de\u14c5\u0001\u0000\u0000\u0000\u14de\u14c6\u0001\u0000\u0000"+
		"\u0000\u14de\u14c7\u0001\u0000\u0000\u0000\u14de\u14c8\u0001\u0000\u0000"+
		"\u0000\u14de\u14cb\u0001\u0000\u0000\u0000\u14de\u14ce\u0001\u0000\u0000"+
		"\u0000\u14de\u14d0\u0001\u0000\u0000\u0000\u14de\u14d2\u0001\u0000\u0000"+
		"\u0000\u14de\u14d3\u0001\u0000\u0000\u0000\u14de\u14d5\u0001\u0000\u0000"+
		"\u0000\u14de\u14d7\u0001\u0000\u0000\u0000\u14de\u14d9\u0001\u0000\u0000"+
		"\u0000\u14de\u14db\u0001\u0000\u0000\u0000\u14de\u14dc\u0001\u0000\u0000"+
		"\u0000\u14df\u02a7\u0001\u0000\u0000\u0000\u14e0\u14e1\u0005\\\u0000\u0000"+
		"\u14e1\u14e4\u0003\u0298\u014c\u0000\u14e2\u14e4\u0003\u029e\u014f\u0000"+
		"\u14e3\u14e0\u0001\u0000\u0000\u0000\u14e3\u14e2\u0001\u0000\u0000\u0000"+
		"\u14e4\u02a9\u0001\u0000\u0000\u0000\u14e5\u14e6\u0007\u001e\u0000\u0000"+
		"\u14e6\u02ab\u0001\u0000\u0000\u0000\u14e7\u14e8\u0007\u001f\u0000\u0000"+
		"\u14e8\u02ad\u0001\u0000\u0000\u0000\u14e9\u14ee\u0003\u018a\u00c5\u0000"+
		"\u14ea\u14eb\u0005&\u0000\u0000\u14eb\u14ed\u0003\u018a\u00c5\u0000\u14ec"+
		"\u14ea\u0001\u0000\u0000\u0000\u14ed\u14f0\u0001\u0000\u0000\u0000\u14ee"+
		"\u14ec\u0001\u0000\u0000\u0000\u14ee\u14ef\u0001\u0000\u0000\u0000\u14ef"+
		"\u02af\u0001\u0000\u0000\u0000\u14f0\u14ee\u0001\u0000\u0000\u0000\u14f1"+
		"\u14f2\u0005\u0083\u0000\u0000\u14f2\u14f3\u0005\u008b\u0000\u0000\u14f3"+
		"\u14f4\u0005\u008f\u0000\u0000\u14f4\u02b1\u0001\u0000\u0000\u0000\u14f5"+
		"\u14f6\u0005\u0083\u0000\u0000\u14f6\u14f7\u0005\u008f\u0000\u0000\u14f7"+
		"\u02b3\u0001\u0000\u0000\u0000\u14f8\u14fb\u0005Y\u0000\u0000\u14f9\u14fc"+
		"\u0003\u05aa\u02d5\u0000\u14fa\u14fc\u0003\u05ac\u02d6\u0000\u14fb\u14f9"+
		"\u0001\u0000\u0000\u0000\u14fb\u14fa\u0001\u0000\u0000\u0000\u14fc\u02b5"+
		"\u0001\u0000\u0000\u0000\u14fd\u14ff\u0005Z\u0000\u0000\u14fe\u1500\u0003"+
		"\u02b8\u015c\u0000\u14ff\u14fe\u0001\u0000\u0000\u0000\u14ff\u1500\u0001"+
		"\u0000\u0000\u0000\u1500\u1503\u0001\u0000\u0000\u0000\u1501\u1504\u0003"+
		"\u05aa\u02d5\u0000\u1502\u1504\u0003\u05ac\u02d6\u0000\u1503\u1501\u0001"+
		"\u0000\u0000\u0000\u1503\u1502\u0001\u0000\u0000\u0000\u1504\u1506\u0001"+
		"\u0000\u0000\u0000\u1505\u1507\u0007 \u0000\u0000\u1506\u1505\u0001\u0000"+
		"\u0000\u0000\u1506\u1507\u0001\u0000\u0000\u0000\u1507\u02b7\u0001\u0000"+
		"\u0000\u0000\u1508\u1509\u0007!\u0000\u0000\u1509\u150a\u0005\u0100\u0000"+
		"\u0000\u150a\u150b\u0005\u0086\u0000\u0000\u150b\u02b9\u0001\u0000\u0000"+
		"\u0000\u150c\u150d\u0005T\u0000\u0000\u150d\u150e\u0005\u0108\u0000\u0000"+
		"\u150e\u1510\u0003\u023a\u011d\u0000\u150f\u1511\u0005m\u0000\u0000\u1510"+
		"\u150f\u0001\u0000\u0000\u0000\u1510\u1511\u0001\u0000\u0000\u0000\u1511"+
		"\u1515\u0001\u0000\u0000\u0000\u1512\u1514\u0003\u02bc\u015e\u0000\u1513"+
		"\u1512\u0001\u0000\u0000\u0000\u1514\u1517\u0001\u0000\u0000\u0000\u1515"+
		"\u1513\u0001\u0000\u0000\u0000\u1515\u1516\u0001\u0000\u0000\u0000\u1516"+
		"\u02bb\u0001\u0000\u0000\u0000\u1517\u1515\u0001\u0000\u0000\u0000\u1518"+
		"\u1526\u0003\u02be\u015f\u0000\u1519\u151a\u0005\u021a\u0000\u0000\u151a"+
		"\u1526\u0005\u0255\u0000\u0000\u151b\u151c\u0005\u00f1\u0000\u0000\u151c"+
		"\u1526\u0003\u028e\u0147\u0000\u151d\u151e\u0005\u0104\u0000\u0000\u151e"+
		"\u1526\u0003\u028e\u0147\u0000\u151f\u1520\u0005\u0091\u0000\u0000\u1520"+
		"\u1521\u0005\u0104\u0000\u0000\u1521\u1526\u0003\u028e\u0147\u0000\u1522"+
		"\u1523\u0005\u0091\u0000\u0000\u1523\u1524\u0005\u0096\u0000\u0000\u1524"+
		"\u1526\u0003\u028e\u0147\u0000\u1525\u1518\u0001\u0000\u0000\u0000\u1525"+
		"\u1519\u0001\u0000\u0000\u0000\u1525\u151b\u0001\u0000\u0000\u0000\u1525"+
		"\u151d\u0001\u0000\u0000\u0000\u1525\u151f\u0001\u0000\u0000\u0000\u1525"+
		"\u1522\u0001\u0000\u0000\u0000\u1526\u02bd\u0001\u0000\u0000\u0000\u1527"+
		"\u1528\u0005\u020b\u0000\u0000\u1528\u153c\u0005\u0254\u0000\u0000\u1529"+
		"\u152a\u0005\u020b\u0000\u0000\u152a\u153c\u0005\u008c\u0000\u0000\u152b"+
		"\u152c\u0005\u0204\u0000\u0000\u152c\u152d\u0005\u020b\u0000\u0000\u152d"+
		"\u153c\u0005\u0254\u0000\u0000\u152e\u152f\u0005\u022e\u0000\u0000\u152f"+
		"\u1530\u0005\u020b\u0000\u0000\u1530\u153c\u0005\u0254\u0000\u0000\u1531"+
		"\u153c\u0005\u012a\u0000\u0000\u1532\u1533\u0005\u01ec\u0000\u0000\u1533"+
		"\u1534\u0005\u009b\u0000\u0000\u1534\u153c\u0003\u0230\u0118\u0000\u1535"+
		"\u1536\u0005\u0157\u0000\u0000\u1536\u1537\u0005\u0235\u0000\u0000\u1537"+
		"\u153c\u0005\u0254\u0000\u0000\u1538\u1539\u0005\u0108\u0000\u0000\u1539"+
		"\u153c\u0003\u028e\u0147\u0000\u153a\u153c\u0003\u00eau\u0000\u153b\u1527"+
		"\u0001\u0000\u0000\u0000\u153b\u1529\u0001\u0000\u0000\u0000\u153b\u152b"+
		"\u0001\u0000\u0000\u0000\u153b\u152e\u0001\u0000\u0000\u0000\u153b\u1531"+
		"\u0001\u0000\u0000\u0000\u153b\u1532\u0001\u0000\u0000\u0000\u153b\u1535"+
		"\u0001\u0000\u0000\u0000\u153b\u1538\u0001\u0000\u0000\u0000\u153b\u153a"+
		"\u0001\u0000\u0000\u0000\u153c\u02bf\u0001\u0000\u0000\u0000\u153d\u153e"+
		"\u0007 \u0000\u0000\u153e\u02c1\u0001\u0000\u0000\u0000\u153f\u1540\u0005"+
		"V\u0000\u0000\u1540\u1542\u0005\u0108\u0000\u0000\u1541\u1543\u0003\u02b2"+
		"\u0159\u0000\u1542\u1541\u0001\u0000\u0000\u0000\u1542\u1543\u0001\u0000"+
		"\u0000\u0000\u1543\u1544\u0001\u0000\u0000\u0000\u1544\u1546\u0003\u01f6"+
		"\u00fb\u0000\u1545\u1547\u0003\u02c0\u0160\u0000\u1546\u1545\u0001\u0000"+
		"\u0000\u0000\u1546\u1547\u0001\u0000\u0000\u0000\u1547\u02c3\u0001\u0000"+
		"\u0000\u0000\u1548\u1549\u0005U\u0000\u0000\u1549\u154a\u0005\u0108\u0000"+
		"\u0000\u154a\u154b\u0003\u02c6\u0163\u0000\u154b\u02c5\u0001\u0000\u0000"+
		"\u0000\u154c\u154e\u0003\u023a\u011d\u0000\u154d\u154f\u0005m\u0000\u0000"+
		"\u154e\u154d\u0001\u0000\u0000\u0000\u154e\u154f\u0001\u0000\u0000\u0000"+
		"\u154f\u1550\u0001\u0000\u0000\u0000\u1550\u1551\u0003\u02c8\u0164\u0000"+
		"\u1551\u1567\u0001\u0000\u0000\u0000\u1552\u1556\u0003\u023a\u011d\u0000"+
		"\u1553\u1554\u0005\u0091\u0000\u0000\u1554\u1555\u0005\u0114\u0000\u0000"+
		"\u1555\u1557\u0003\u00fe\u007f\u0000\u1556\u1553\u0001\u0000\u0000\u0000"+
		"\u1556\u1557\u0001\u0000\u0000\u0000\u1557\u1558\u0001\u0000\u0000\u0000"+
		"\u1558\u1559\u0003\u0290\u0148\u0000\u1559\u1567\u0001\u0000\u0000\u0000"+
		"\u155a\u155e\u0005\u0092\u0000\u0000\u155b\u155c\u0005\u0091\u0000\u0000"+
		"\u155c\u155d\u0005\u0114\u0000\u0000\u155d\u155f\u0003\u00fe\u007f\u0000"+
		"\u155e\u155b\u0001\u0000\u0000\u0000\u155e\u155f\u0001\u0000\u0000\u0000"+
		"\u155f\u1560\u0001\u0000\u0000\u0000\u1560\u1567\u0003\u0290\u0148\u0000"+
		"\u1561\u1562\u0003\u023a\u011d\u0000\u1562\u1563\u0005\u0141\u0000\u0000"+
		"\u1563\u1564\u0005\u0087\u0000\u0000\u1564\u1565\u0003\u023a\u011d\u0000"+
		"\u1565\u1567\u0001\u0000\u0000\u0000\u1566\u154c\u0001\u0000\u0000\u0000"+
		"\u1566\u1552\u0001\u0000\u0000\u0000\u1566\u155a\u0001\u0000\u0000\u0000"+
		"\u1566\u1561\u0001\u0000\u0000\u0000\u1567\u02c7\u0001\u0000\u0000\u0000"+
		"\u1568\u156a\u0003\u02be\u015f\u0000\u1569\u1568\u0001\u0000\u0000\u0000"+
		"\u156a\u156d\u0001\u0000\u0000\u0000\u156b\u1569\u0001\u0000\u0000\u0000"+
		"\u156b\u156c\u0001\u0000\u0000\u0000\u156c\u02c9\u0001\u0000\u0000\u0000"+
		"\u156d\u156b\u0001\u0000\u0000\u0000\u156e\u156f\u0005T\u0000\u0000\u156f"+
		"\u1570\u0005\u0104\u0000\u0000\u1570\u1572\u0003\u023a\u011d\u0000\u1571"+
		"\u1573\u0005m\u0000\u0000\u1572\u1571\u0001\u0000\u0000\u0000\u1572\u1573"+
		"\u0001\u0000\u0000\u0000\u1573\u1577\u0001\u0000\u0000\u0000\u1574\u1576"+
		"\u0003\u02bc\u015e\u0000\u1575\u1574\u0001\u0000\u0000\u0000\u1576\u1579"+
		"\u0001\u0000\u0000\u0000\u1577\u1575\u0001\u0000\u0000\u0000\u1577\u1578"+
		"\u0001\u0000\u0000\u0000\u1578\u02cb\u0001\u0000\u0000\u0000\u1579\u1577"+
		"\u0001\u0000\u0000\u0000\u157a\u157b\u0005V\u0000\u0000\u157b\u157d\u0005"+
		"\u0104\u0000\u0000\u157c\u157e\u0003\u02b2\u0159\u0000\u157d\u157c\u0001"+
		"\u0000\u0000\u0000\u157d\u157e\u0001\u0000\u0000\u0000\u157e\u157f\u0001"+
		"\u0000\u0000\u0000\u157f\u1580\u0003\u028e\u0147\u0000\u1580\u02cd\u0001"+
		"\u0000\u0000\u0000\u1581\u1582\u0005U\u0000\u0000\u1582\u1583\u0005\u0104"+
		"\u0000\u0000\u1583\u1584\u0003\u02c6\u0163\u0000\u1584\u02cf\u0001\u0000"+
		"\u0000\u0000\u1585\u1586\u0005T\u0000\u0000\u1586\u1587\u0005\u0096\u0000"+
		"\u0000\u1587\u1589\u0003\u023a\u011d\u0000\u1588\u158a\u0005m\u0000\u0000"+
		"\u1589\u1588\u0001\u0000\u0000\u0000\u1589\u158a\u0001\u0000\u0000\u0000"+
		"\u158a\u158e\u0001\u0000\u0000\u0000\u158b\u158d\u0003\u02bc\u015e\u0000"+
		"\u158c\u158b\u0001\u0000\u0000\u0000\u158d\u1590\u0001\u0000\u0000\u0000"+
		"\u158e\u158c\u0001\u0000\u0000\u0000\u158e\u158f\u0001\u0000\u0000\u0000"+
		"\u158f\u02d1\u0001\u0000\u0000\u0000\u1590\u158e\u0001\u0000\u0000\u0000"+
		"\u1591\u1592\u0005V\u0000\u0000\u1592\u1594\u0005\u0096\u0000\u0000\u1593"+
		"\u1595\u0003\u02b2\u0159\u0000\u1594\u1593\u0001\u0000\u0000\u0000\u1594"+
		"\u1595\u0001\u0000\u0000\u0000\u1595\u1596\u0001\u0000\u0000\u0000\u1596"+
		"\u1597\u0003\u028e\u0147\u0000\u1597\u02d3\u0001\u0000\u0000\u0000\u1598"+
		"\u1599\u0005\u021b\u0000\u0000\u1599\u159a\u0005\u013b\u0000\u0000\u159a"+
		"\u159b\u0005\u0097\u0000\u0000\u159b\u159c\u0003\u028e\u0147\u0000\u159c"+
		"\u159d\u0005\u0087\u0000\u0000\u159d\u159e\u0003\u023a\u011d\u0000\u159e"+
		"\u02d5\u0001\u0000\u0000\u0000\u159f\u15a0\u0005T\u0000\u0000\u15a0\u15a1"+
		"\u0003\u0316\u018b\u0000\u15a1\u15a3\u0005]\u0000\u0000\u15a2\u15a4\u0003"+
		"\u02b0\u0158\u0000\u15a3\u15a2\u0001\u0000\u0000\u0000\u15a3\u15a4\u0001"+
		"\u0000\u0000\u0000\u15a4\u15a5\u0001\u0000\u0000\u0000\u15a5\u15ba\u0003"+
		"\u00f8|\u0000\u15a6\u15bb\u0003\u0318\u018c\u0000\u15a7\u15a8\u0005\u015c"+
		"\u0000\u0000\u15a8\u15ad\u0003\u01ec\u00f6\u0000\u15a9\u15aa\u0005 \u0000"+
		"\u0000\u15aa\u15ab\u0003\u02e0\u0170\u0000\u15ab\u15ac\u0005!\u0000\u0000"+
		"\u15ac\u15ae\u0001\u0000\u0000\u0000\u15ad\u15a9\u0001\u0000\u0000\u0000"+
		"\u15ad\u15ae\u0001\u0000\u0000\u0000\u15ae\u15bb\u0001\u0000\u0000\u0000"+
		"\u15af\u15b0\u0005\u00f6\u0000\u0000\u15b0\u15b1\u0005\u015c\u0000\u0000"+
		"\u15b1\u15b6\u0003\u0168\u00b4\u0000\u15b2\u15b3\u0005 \u0000\u0000\u15b3"+
		"\u15b4\u0003\u02e0\u0170\u0000\u15b4\u15b5\u0005!\u0000\u0000\u15b5\u15b7"+
		"\u0001\u0000\u0000\u0000\u15b6\u15b2\u0001\u0000\u0000\u0000\u15b6\u15b7"+
		"\u0001\u0000\u0000\u0000\u15b7\u15b8\u0001\u0000\u0000\u0000\u15b8\u15b9"+
		"\u0003\u02da\u016d\u0000\u15b9\u15bb\u0001\u0000\u0000\u0000\u15ba\u15a6"+
		"\u0001\u0000\u0000\u0000\u15ba\u15a7\u0001\u0000\u0000\u0000\u15ba\u15af"+
		"\u0001\u0000\u0000\u0000\u15bb\u15bc\u0001\u0000\u0000\u0000\u15bc\u15be"+
		"\u0003\u033e\u019f\u0000\u15bd\u15bf\u0003\u0340\u01a0\u0000\u15be\u15bd"+
		"\u0001\u0000\u0000\u0000\u15be\u15bf\u0001\u0000\u0000\u0000\u15bf\u15c1"+
		"\u0001\u0000\u0000\u0000\u15c0\u15c2\u0003\u02ee\u0177\u0000\u15c1\u15c0"+
		"\u0001\u0000\u0000\u0000\u15c1\u15c2\u0001\u0000\u0000\u0000\u15c2\u15c4"+
		"\u0001\u0000\u0000\u0000\u15c3\u15c5\u0003\u02ec\u0176\u0000\u15c4\u15c3"+
		"\u0001\u0000\u0000\u0000\u15c4\u15c5\u0001\u0000\u0000\u0000\u15c5\u15c7"+
		"\u0001\u0000\u0000\u0000\u15c6\u15c8\u0003\u02ea\u0175\u0000\u15c7\u15c6"+
		"\u0001\u0000\u0000\u0000\u15c7\u15c8\u0001\u0000\u0000\u0000\u15c8\u15ca"+
		"\u0001\u0000\u0000\u0000\u15c9\u15cb\u0003\u02e8\u0174\u0000\u15ca\u15c9"+
		"\u0001\u0000\u0000\u0000\u15ca\u15cb\u0001\u0000\u0000\u0000\u15cb\u15d1"+
		"\u0001\u0000\u0000\u0000\u15cc\u15cd\u0005\u0081\u0000\u0000\u15cd\u15cf"+
		"\u0003J%\u0000\u15ce\u15d0\u0003\u02e6\u0173\u0000\u15cf\u15ce\u0001\u0000"+
		"\u0000\u0000\u15cf\u15d0\u0001\u0000\u0000\u0000\u15d0\u15d2\u0001\u0000"+
		"\u0000\u0000\u15d1\u15cc\u0001\u0000\u0000\u0000\u15d1\u15d2\u0001\u0000"+
		"\u0000\u0000\u15d2\u15d9\u0001\u0000\u0000\u0000\u15d3\u15d4\u0005\u011b"+
		"\u0000\u0000\u15d4\u15d5\u0003\u00fe\u007f\u0000\u15d5\u15d7\u0003\u02d8"+
		"\u016c\u0000\u15d6\u15d8\u0003\u02e6\u0173\u0000\u15d7\u15d6\u0001\u0000"+
		"\u0000\u0000\u15d7\u15d8\u0001\u0000\u0000\u0000\u15d8\u15da\u0001\u0000"+
		"\u0000\u0000\u15d9\u15d3\u0001\u0000\u0000\u0000\u15d9\u15da\u0001\u0000"+
		"\u0000\u0000\u15da\u02d7\u0001\u0000\u0000\u0000\u15db\u15dc\u0005 \u0000"+
		"\u0000\u15dc\u15dd\u0003\u0190\u00c8\u0000\u15dd\u15de\u0005!\u0000\u0000"+
		"\u15de\u02d9\u0001\u0000\u0000\u0000\u15df\u15e0\u0005\u0086\u0000\u0000"+
		"\u15e0\u15e1\u0005l\u0000\u0000\u15e1\u15e2\u0005m\u0000\u0000\u15e2\u15e3"+
		"\u0005 \u0000\u0000\u15e3\u15e4\u0003\u02dc\u016e\u0000\u15e4\u15e5\u0005"+
		"!\u0000\u0000\u15e5\u15fa\u0001\u0000\u0000\u0000\u15e6\u15e7\u0005\u0086"+
		"\u0000\u0000\u15e7\u15e8\u0005l\u0000\u0000\u15e8\u15e9\u0005\u0091\u0000"+
		"\u0000\u15e9\u15ea\u0005 \u0000\u0000\u15ea\u15eb\u0003\u0190\u00c8\u0000"+
		"\u15eb\u15ec\u0005!\u0000\u0000\u15ec\u15fa\u0001\u0000\u0000\u0000\u15ed"+
		"\u15ee\u0005\u0086\u0000\u0000\u15ee\u15ef\u0005l\u0000\u0000\u15ef\u15f0"+
		"\u0005v\u0000\u0000\u15f0\u15f1\u0005 \u0000\u0000\u15f1\u15f2\u0003\u0190"+
		"\u00c8\u0000\u15f2\u15f3\u0005!\u0000\u0000\u15f3\u15f4\u0005\u0087\u0000"+
		"\u0000\u15f4\u15f5\u0005 \u0000\u0000\u15f5\u15f6\u0003\u0190\u00c8\u0000"+
		"\u15f6\u15f7\u0005!\u0000\u0000\u15f7\u15fa\u0001\u0000\u0000\u0000\u15f8"+
		"\u15fa\u0005\u00b5\u0000\u0000\u15f9\u15df\u0001\u0000\u0000\u0000\u15f9"+
		"\u15e6\u0001\u0000\u0000\u0000\u15f9\u15ed\u0001\u0000\u0000\u0000\u15f9"+
		"\u15f8\u0001\u0000\u0000\u0000\u15fa\u02db\u0001\u0000\u0000\u0000\u15fb"+
		"\u1600\u0003\u02de\u016f\u0000\u15fc\u15fd\u0005&\u0000\u0000\u15fd\u15ff"+
		"\u0003\u02de\u016f\u0000\u15fe\u15fc\u0001\u0000\u0000\u0000\u15ff\u1602"+
		"\u0001\u0000\u0000\u0000\u1600\u15fe\u0001\u0000\u0000\u0000\u1600\u1601"+
		"\u0001\u0000\u0000\u0000\u1601\u02dd\u0001\u0000\u0000\u0000\u1602\u1600"+
		"\u0001\u0000\u0000\u0000\u1603\u1604\u0003\u0234\u011a\u0000\u1604\u1605"+
		"\u0005\u0255\u0000\u0000\u1605\u02df\u0001\u0000\u0000\u0000\u1606\u160b"+
		"\u0003\u02e2\u0171\u0000\u1607\u1608\u0005&\u0000\u0000\u1608\u160a\u0003"+
		"\u02e2\u0171\u0000\u1609\u1607\u0001\u0000\u0000\u0000\u160a\u160d\u0001"+
		"\u0000\u0000\u0000\u160b\u1609\u0001\u0000\u0000\u0000\u160b\u160c\u0001"+
		"\u0000\u0000\u0000\u160c\u02e1\u0001\u0000\u0000\u0000\u160d\u160b\u0001"+
		"\u0000\u0000\u0000\u160e\u1611\u0003\u02e4\u0172\u0000\u160f\u1611\u0003"+
		"\u0334\u019a\u0000\u1610\u160e\u0001\u0000\u0000\u0000\u1610\u160f\u0001"+
		"\u0000\u0000\u0000\u1611\u02e3\u0001\u0000\u0000\u0000\u1612\u1615\u0003"+
		"\u016a\u00b5\u0000\u1613\u1614\u0005m\u0000\u0000\u1614\u1616\u0005\u0213"+
		"\u0000\u0000\u1615\u1613\u0001\u0000\u0000\u0000\u1615\u1616\u0001\u0000"+
		"\u0000\u0000\u1616\u1617\u0001\u0000\u0000\u0000\u1617\u1618\u0003\u024a"+
		"\u0125\u0000\u1618\u02e5\u0001\u0000\u0000\u0000\u1619\u161a\u0005m\u0000"+
		"\u0000\u161a\u161f\u0005\u0113\u0000\u0000\u161b\u161c\u0005m\u0000\u0000"+
		"\u161c\u161d\u0005\u00ff\u0000\u0000\u161d\u161f\u0005\u0113\u0000\u0000"+
		"\u161e\u1619\u0001\u0000\u0000\u0000\u161e\u161b\u0001\u0000\u0000\u0000"+
		"\u161f\u02e7\u0001\u0000\u0000\u0000\u1620\u1621\u0005\u0151\u0000\u0000"+
		"\u1621\u1622\u0003\u00fe\u007f\u0000\u1622\u02e9\u0001\u0000\u0000\u0000"+
		"\u1623\u1624\u0005\u0082\u0000\u0000\u1624\u162a\u0005\u009e\u0000\u0000"+
		"\u1625\u162b\u0005V\u0000\u0000\u1626\u1627\u0005S\u0000\u0000\u1627\u162b"+
		"\u0005\u0105\u0000\u0000\u1628\u1629\u0005\u00bb\u0000\u0000\u1629\u162b"+
		"\u0005\u0105\u0000\u0000\u162a\u1625\u0001\u0000\u0000\u0000\u162a\u1626"+
		"\u0001\u0000\u0000\u0000\u162a\u1628\u0001\u0000\u0000\u0000\u162b\u02eb"+
		"\u0001\u0000\u0000\u0000\u162c\u162d\u0005m\u0000\u0000\u162d\u1631\u0003"+
		"\u021a\u010d\u0000\u162e\u162f\u0005\u015a\u0000\u0000\u162f\u1631\u0005"+
		"\u0138\u0000\u0000\u1630\u162c\u0001\u0000\u0000\u0000\u1630\u162e\u0001"+
		"\u0000\u0000\u0000\u1631\u02ed\u0001\u0000\u0000\u0000\u1632\u1633\u0005"+
		"\u007f\u0000\u0000\u1633\u1634\u0003\u02f0\u0178\u0000\u1634\u02ef\u0001"+
		"\u0000\u0000\u0000\u1635\u1639\u0003\u00eau\u0000\u1636\u1639\u0003\u00ee"+
		"w\u0000\u1637\u1639\u0003\u0236\u011b\u0000\u1638\u1635\u0001\u0000\u0000"+
		"\u0000\u1638\u1636\u0001\u0000\u0000\u0000\u1638\u1637\u0001\u0000\u0000"+
		"\u0000\u1639\u02f1\u0001\u0000\u0000\u0000\u163a\u163b\u0005T\u0000\u0000"+
		"\u163b\u163c\u0003\u034a\u01a5\u0000\u163c\u163d\u0005_\u0000\u0000\u163d"+
		"\u1642\u0003\u034c\u01a6\u0000\u163e\u1640\u0003\u02b0\u0158\u0000\u163f"+
		"\u163e\u0001\u0000\u0000\u0000\u163f\u1640\u0001\u0000\u0000\u0000\u1640"+
		"\u1641\u0001\u0000\u0000\u0000\u1641\u1643\u0003\u0108\u0084\u0000\u1642"+
		"\u163f\u0001\u0000\u0000\u0000\u1642\u1643\u0001\u0000\u0000\u0000\u1643"+
		"\u1644\u0001\u0000\u0000\u0000\u1644\u1645\u0005\u0082\u0000\u0000\u1645"+
		"\u1646\u0003\u034e\u01a7\u0000\u1646\u1648\u0003\u00f8|\u0000\u1647\u1649"+
		"\u0003\u02f8\u017c\u0000\u1648\u1647\u0001\u0000\u0000\u0000\u1648\u1649"+
		"\u0001\u0000\u0000\u0000\u1649\u164a\u0001\u0000\u0000\u0000\u164a\u164b"+
		"\u0005 \u0000\u0000\u164b\u164c\u0003\u0210\u0108\u0000\u164c\u164e\u0005"+
		"!\u0000\u0000\u164d\u164f\u0003\u02f4\u017a\u0000\u164e\u164d\u0001\u0000"+
		"\u0000\u0000\u164e\u164f\u0001\u0000\u0000\u0000\u164f\u1652\u0001\u0000"+
		"\u0000\u0000\u1650\u1651\u0005m\u0000\u0000\u1651\u1653\u0003\u021a\u010d"+
		"\u0000\u1652\u1650\u0001\u0000\u0000\u0000\u1652\u1653\u0001\u0000\u0000"+
		"\u0000\u1653\u1655\u0001\u0000\u0000\u0000\u1654\u1656\u0003\u02e8\u0174"+
		"\u0000\u1655\u1654\u0001\u0000\u0000\u0000\u1655\u1656\u0001\u0000\u0000"+
		"\u0000\u1656\u1658\u0001\u0000\u0000\u0000\u1657\u1659\u0003\u00c2a\u0000"+
		"\u1658\u1657\u0001\u0000\u0000\u0000\u1658\u1659\u0001\u0000\u0000\u0000"+
		"\u1659\u02f3\u0001\u0000\u0000\u0000\u165a\u165b\u0005\u012d\u0000\u0000"+
		"\u165b\u165c\u0005 \u0000\u0000\u165c\u165d\u0003\u02f6\u017b\u0000\u165d"+
		"\u165e\u0005!\u0000\u0000\u165e\u02f5\u0001\u0000\u0000\u0000\u165f\u1664"+
		"\u0003\u0214\u010a\u0000\u1660\u1661\u0005&\u0000\u0000\u1661\u1663\u0003"+
		"\u0214\u010a\u0000\u1662\u1660\u0001\u0000\u0000\u0000\u1663\u1666\u0001"+
		"\u0000\u0000\u0000\u1664\u1662\u0001\u0000\u0000\u0000\u1664\u1665\u0001"+
		"\u0000\u0000\u0000\u1665\u02f7\u0001\u0000\u0000\u0000\u1666\u1664\u0001"+
		"\u0000\u0000\u0000\u1667\u1668\u0005\u007f\u0000\u0000\u1668\u1669\u0003"+
		"\u02f0\u0178\u0000\u1669\u02f9\u0001\u0000\u0000\u0000\u166a\u166b\u0005"+
		"T\u0000\u0000\u166b\u166c\u0005\u0114\u0000\u0000\u166c\u166e\u0003\u00fe"+
		"\u007f\u0000\u166d\u166f\u0005m\u0000\u0000\u166e\u166d\u0001\u0000\u0000"+
		"\u0000\u166e\u166f\u0001\u0000\u0000\u0000\u166f\u1673\u0001\u0000\u0000"+
		"\u0000\u1670\u1672\u0003\u0302\u0181\u0000\u1671\u1670\u0001\u0000\u0000"+
		"\u0000\u1672\u1675\u0001\u0000\u0000\u0000\u1673\u1671\u0001\u0000\u0000"+
		"\u0000\u1673\u1674\u0001\u0000\u0000\u0000\u1674\u02fb\u0001\u0000\u0000"+
		"\u0000\u1675\u1673\u0001\u0000\u0000\u0000\u1676\u1679\u0005T\u0000\u0000"+
		"\u1677\u1678\u0005\u0089\u0000\u0000\u1678\u167a\u0005\u020f\u0000\u0000"+
		"\u1679\u1677\u0001\u0000\u0000\u0000\u1679\u167a\u0001\u0000\u0000\u0000"+
		"\u167a\u167c\u0001\u0000\u0000\u0000\u167b\u167d\u0007\"\u0000\u0000\u167c"+
		"\u167b\u0001\u0000\u0000\u0000\u167c\u167d\u0001\u0000\u0000\u0000\u167d"+
		"\u167f\u0001\u0000\u0000\u0000\u167e\u1680\u0005\u015f\u0000\u0000\u167f"+
		"\u167e\u0001\u0000\u0000\u0000\u167f\u1680\u0001\u0000\u0000\u0000\u1680"+
		"\u1681\u0001\u0000\u0000\u0000\u1681\u1682\u0005j\u0000\u0000\u1682\u168f"+
		"\u0003\u0168\u00b4\u0000\u1683\u168c\u0005 \u0000\u0000\u1684\u1689\u0003"+
		"\u025c\u012e\u0000\u1685\u1686\u0005&\u0000\u0000\u1686\u1688\u0003\u025c"+
		"\u012e\u0000\u1687\u1685\u0001\u0000\u0000\u0000\u1688\u168b\u0001\u0000"+
		"\u0000\u0000\u1689\u1687\u0001\u0000\u0000\u0000\u1689\u168a\u0001\u0000"+
		"\u0000\u0000\u168a\u168d\u0001\u0000\u0000\u0000\u168b\u1689\u0001\u0000"+
		"\u0000\u0000\u168c\u1684\u0001\u0000\u0000\u0000\u168c\u168d\u0001\u0000"+
		"\u0000\u0000\u168d\u168e\u0001\u0000\u0000\u0000\u168e\u1690\u0005!\u0000"+
		"\u0000\u168f\u1683\u0001\u0000\u0000\u0000\u168f\u1690\u0001\u0000\u0000"+
		"\u0000\u1690\u1693\u0001\u0000\u0000\u0000\u1691\u1692\u0005m\u0000\u0000"+
		"\u1692\u1694\u0003\u021a\u010d\u0000\u1693\u1691\u0001\u0000\u0000\u0000"+
		"\u1693\u1694\u0001\u0000\u0000\u0000\u1694\u1695\u0001\u0000\u0000\u0000"+
		"\u1695\u1696\u0005\u0081\u0000\u0000\u1696\u169d\u0003J%\u0000\u1697\u1699"+
		"\u0005m\u0000\u0000\u1698\u169a\u0007#\u0000\u0000\u1699\u1698\u0001\u0000"+
		"\u0000\u0000\u1699\u169a\u0001\u0000\u0000\u0000\u169a\u169b\u0001\u0000"+
		"\u0000\u0000\u169b\u169c\u0005\u00fb\u0000\u0000\u169c\u169e\u0005\u0100"+
		"\u0000\u0000\u169d\u1697\u0001\u0000\u0000\u0000\u169d\u169e\u0001\u0000"+
		"\u0000\u0000\u169e\u02fd\u0001\u0000\u0000\u0000\u169f\u16a0\u0005V\u0000"+
		"\u0000\u16a0\u16a2\u0005\u0114\u0000\u0000\u16a1\u16a3\u0003\u02b2\u0159"+
		"\u0000\u16a2\u16a1\u0001\u0000\u0000\u0000\u16a2\u16a3\u0001\u0000\u0000"+
		"\u0000\u16a3\u16a4\u0001\u0000\u0000\u0000\u16a4\u16a5\u0003\u00fe\u007f"+
		"\u0000\u16a5\u02ff\u0001\u0000\u0000\u0000\u16a6\u16a7\u0005V\u0000\u0000"+
		"\u16a7\u16a9\u0005\u01d9\u0000\u0000\u16a8\u16aa\u0003\u02b2\u0159\u0000"+
		"\u16a9\u16a8\u0001\u0000\u0000\u0000\u16a9\u16aa\u0001\u0000\u0000\u0000"+
		"\u16aa\u16ab\u0001\u0000\u0000\u0000\u16ab\u16ac\u0003\u01f0\u00f8\u0000"+
		"\u16ac\u0301\u0001\u0000\u0000\u0000\u16ad\u16af\u0003\u0304\u0182\u0000"+
		"\u16ae\u16b0\u0005\u0018\u0000\u0000\u16af\u16ae\u0001\u0000\u0000\u0000"+
		"\u16af\u16b0\u0001\u0000\u0000\u0000\u16b0\u16b4\u0001\u0000\u0000\u0000"+
		"\u16b1\u16b5\u0003\u0230\u0118\u0000\u16b2\u16b5\u0003\u0232\u0119\u0000"+
		"\u16b3\u16b5\u0005\u00b5\u0000\u0000\u16b4\u16b1\u0001\u0000\u0000\u0000"+
		"\u16b4\u16b2\u0001\u0000\u0000\u0000\u16b4\u16b3\u0001\u0000\u0000\u0000"+
		"\u16b5\u0303\u0001\u0000\u0000\u0000\u16b6\u16bf\u0003\u00eau\u0000\u16b7"+
		"\u16b8\u0005\u01ec\u0000\u0000\u16b8\u16bf\u0005\u009b\u0000\u0000\u16b9"+
		"\u16bf\u0005\u01e5\u0000\u0000\u16ba\u16bf\u0005\u01f2\u0000\u0000\u16bb"+
		"\u16bf\u0005\u013c\u0000\u0000\u16bc\u16bf\u0005\u0151\u0000\u0000\u16bd"+
		"\u16bf\u0005\u022d\u0000\u0000\u16be\u16b6\u0001\u0000\u0000\u0000\u16be"+
		"\u16b7\u0001\u0000\u0000\u0000\u16be\u16b9\u0001\u0000\u0000\u0000\u16be"+
		"\u16ba\u0001\u0000\u0000\u0000\u16be\u16bb\u0001\u0000\u0000\u0000\u16be"+
		"\u16bc\u0001\u0000\u0000\u0000\u16be\u16bd\u0001\u0000\u0000\u0000\u16bf"+
		"\u0305\u0001\u0000\u0000\u0000\u16c0\u16c1\u0005U\u0000\u0000\u16c1\u16d8"+
		"\u0005]\u0000\u0000\u16c2\u16c4\u0003\u02b2\u0159\u0000\u16c3\u16c2\u0001"+
		"\u0000\u0000\u0000\u16c3\u16c4\u0001\u0000\u0000\u0000\u16c4\u16c5\u0001"+
		"\u0000\u0000\u0000\u16c5\u16c6\u0003\u034e\u01a7\u0000\u16c6\u16c7\u0003"+
		"\u0364\u01b2\u0000\u16c7\u16c8\u0003\u0354\u01aa\u0000\u16c8\u16d9\u0001"+
		"\u0000\u0000\u0000\u16c9\u16ca\u0005\u0092\u0000\u0000\u16ca\u16cb\u0005"+
		"\u0091\u0000\u0000\u16cb\u16cc\u0005\u0151\u0000\u0000\u16cc\u16d0\u0003"+
		"\u0364\u01b2\u0000\u16cd\u16ce\u0005\u013b\u0000\u0000\u16ce\u16cf\u0005"+
		"\u0097\u0000\u0000\u16cf\u16d1\u0003\u028e\u0147\u0000\u16d0\u16cd\u0001"+
		"\u0000\u0000\u0000\u16d0\u16d1\u0001\u0000\u0000\u0000\u16d1\u16d2\u0001"+
		"\u0000\u0000\u0000\u16d2\u16d3\u0005\\\u0000\u0000\u16d3\u16d4\u0005\u0151"+
		"\u0000\u0000\u16d4\u16d6\u0003\u00fe\u007f\u0000\u16d5\u16d7\u0005\u01ae"+
		"\u0000\u0000\u16d6\u16d5\u0001\u0000\u0000\u0000\u16d6\u16d7\u0001\u0000"+
		"\u0000\u0000\u16d7\u16d9\u0001\u0000\u0000\u0000\u16d8\u16c3\u0001\u0000"+
		"\u0000\u0000\u16d8\u16c9\u0001\u0000\u0000\u0000\u16d9\u0307\u0001\u0000"+
		"\u0000\u0000\u16da\u16db\u0005U\u0000\u0000\u16db\u16e2\u0005_\u0000\u0000"+
		"\u16dc\u16de\u0003\u02b2\u0159\u0000\u16dd\u16dc\u0001\u0000\u0000\u0000"+
		"\u16dd\u16de\u0001\u0000\u0000\u0000\u16de\u16e3\u0001\u0000\u0000\u0000"+
		"\u16df\u16e0\u0005\u0092\u0000\u0000\u16e0\u16e1\u0005\u0091\u0000\u0000"+
		"\u16e1\u16e3\u0005\u0151\u0000\u0000\u16e2\u16dd\u0001\u0000\u0000\u0000"+
		"\u16e2\u16df\u0001\u0000\u0000\u0000\u16e3\u16e4\u0001\u0000\u0000\u0000"+
		"\u16e4\u16e5\u0003\u0168\u00b4\u0000\u16e5\u16e6\u0003\u0358\u01ac\u0000"+
		"\u16e6\u0309\u0001\u0000\u0000\u0000\u16e7\u16e8\u0005V\u0000\u0000\u16e8"+
		"\u16ea\u0005]\u0000\u0000\u16e9\u16eb\u0003\u02b2\u0159\u0000\u16ea\u16e9"+
		"\u0001\u0000\u0000\u0000\u16ea\u16eb\u0001\u0000\u0000\u0000\u16eb\u16ec"+
		"\u0001\u0000\u0000\u0000\u16ec\u16ee\u0003\u0102\u0081\u0000\u16ed\u16ef"+
		"\u0003\u030c\u0186\u0000\u16ee\u16ed\u0001\u0000\u0000\u0000\u16ee\u16ef"+
		"\u0001\u0000\u0000\u0000\u16ef\u030b\u0001\u0000\u0000\u0000\u16f0\u16f1"+
		"\u0007 \u0000\u0000\u16f1\u030d\u0001\u0000\u0000\u0000\u16f2\u16f3\u0005"+
		"V\u0000\u0000\u16f3\u16f4\u0005_\u0000\u0000\u16f4\u16f6\u0003\u034c\u01a6"+
		"\u0000\u16f5\u16f7\u0003\u02b2\u0159\u0000\u16f6\u16f5\u0001\u0000\u0000"+
		"\u0000\u16f6\u16f7\u0001\u0000\u0000\u0000\u16f7\u16f8\u0001\u0000\u0000"+
		"\u0000\u16f8\u16fa\u0003p8\u0000\u16f9\u16fb\u0003\u0310\u0188\u0000\u16fa"+
		"\u16f9\u0001\u0000\u0000\u0000\u16fa\u16fb\u0001\u0000\u0000\u0000\u16fb"+
		"\u030f\u0001\u0000\u0000\u0000\u16fc\u16fd\u0007 \u0000\u0000\u16fd\u0311"+
		"\u0001\u0000\u0000\u0000\u16fe\u1700\u0005W\u0000\u0000\u16ff\u1701\u0005"+
		"]\u0000\u0000\u1700\u16ff\u0001\u0000\u0000\u0000\u1700\u1701\u0001\u0000"+
		"\u0000\u0000\u1701\u1702\u0001\u0000\u0000\u0000\u1702\u1703\u0003\u034e"+
		"\u01a7\u0000\u1703\u1705\u0003\u0362\u01b1\u0000\u1704\u1706\u0003\u0314"+
		"\u018a\u0000\u1705\u1704\u0001\u0000\u0000\u0000\u1705\u1706\u0001\u0000"+
		"\u0000\u0000\u1706\u1708\u0001\u0000\u0000\u0000\u1707\u1709\u0003\u030c"+
		"\u0186\u0000\u1708\u1707\u0001\u0000\u0000\u0000\u1708\u1709\u0001\u0000"+
		"\u0000\u0000\u1709\u0313\u0001\u0000\u0000\u0000\u170a\u170b\u0005\u01cb"+
		"\u0000\u0000\u170b\u170f\u0005\u0125\u0000\u0000\u170c\u170d\u0005\u0144"+
		"\u0000\u0000\u170d\u170f\u0005\u0125\u0000\u0000\u170e\u170a\u0001\u0000"+
		"\u0000\u0000\u170e\u170c\u0001\u0000\u0000\u0000\u170f\u0315\u0001\u0000"+
		"\u0000\u0000\u1710\u1712\u0007$\u0000\u0000\u1711\u1710\u0001\u0000\u0000"+
		"\u0000\u1711\u1712\u0001\u0000\u0000\u0000\u1712\u1713\u0001\u0000\u0000"+
		"\u0000\u1713\u1716\u0007\"\u0000\u0000\u1714\u1716\u0005\u0155\u0000\u0000"+
		"\u1715\u1711\u0001\u0000\u0000\u0000\u1715\u1714\u0001\u0000\u0000\u0000"+
		"\u1715\u1716\u0001\u0000\u0000\u0000\u1716\u0317\u0001\u0000\u0000\u0000"+
		"\u1717\u1720\u0005 \u0000\u0000\u1718\u171d\u0003\u031a\u018d\u0000\u1719"+
		"\u171a\u0005&\u0000\u0000\u171a\u171c\u0003\u031a\u018d\u0000\u171b\u1719"+
		"\u0001\u0000\u0000\u0000\u171c\u171f\u0001\u0000\u0000\u0000\u171d\u171b"+
		"\u0001\u0000\u0000\u0000\u171d\u171e\u0001\u0000\u0000\u0000\u171e\u1721"+
		"\u0001\u0000\u0000\u0000\u171f\u171d\u0001\u0000\u0000\u0000\u1720\u1718"+
		"\u0001\u0000\u0000\u0000\u1720\u1721\u0001\u0000\u0000\u0000\u1721\u1722"+
		"\u0001\u0000\u0000\u0000\u1722\u1723\u0005!\u0000\u0000\u1723\u0319\u0001"+
		"\u0000\u0000\u0000\u1724\u172f\u0003\u031c\u018e\u0000\u1725\u172f\u0003"+
		"\u0334\u019a\u0000\u1726\u1727\u0005\u0094\u0000\u0000\u1727\u172b\u0003"+
		"\u00f8|\u0000\u1728\u172a\u0003\u0332\u0199\u0000\u1729\u1728\u0001\u0000"+
		"\u0000\u0000\u172a\u172d\u0001\u0000\u0000\u0000\u172b\u1729\u0001\u0000"+
		"\u0000\u0000\u172b\u172c\u0001\u0000\u0000\u0000\u172c\u172f\u0001\u0000"+
		"\u0000\u0000\u172d\u172b\u0001\u0000\u0000\u0000\u172e\u1724\u0001\u0000"+
		"\u0000\u0000\u172e\u1725\u0001\u0000\u0000\u0000\u172e\u1726\u0001\u0000"+
		"\u0000\u0000\u172f\u031b\u0001\u0000\u0000\u0000\u1730\u1731\u0003\u00fa"+
		"}\u0000\u1731\u1733\u0003\u0224\u0112\u0000\u1732\u1734\u0003\u01ea\u00f5"+
		"\u0000\u1733\u1732\u0001\u0000\u0000\u0000\u1733\u1734\u0001\u0000\u0000"+
		"\u0000\u1734\u1738\u0001\u0000\u0000\u0000\u1735\u1737\u0003\u031e\u018f"+
		"\u0000\u1736\u1735\u0001\u0000\u0000\u0000\u1737\u173a\u0001\u0000\u0000"+
		"\u0000\u1738\u1736\u0001\u0000\u0000\u0000\u1738\u1739\u0001\u0000\u0000"+
		"\u0000\u1739\u031d\u0001\u0000\u0000\u0000\u173a\u1738\u0001\u0000\u0000"+
		"\u0000\u173b\u173d\u0003\u0320\u0190\u0000\u173c\u173b\u0001\u0000\u0000"+
		"\u0000\u173c\u173d\u0001\u0000\u0000\u0000\u173d\u173e\u0001\u0000\u0000"+
		"\u0000\u173e\u173f\u0003\u0322\u0191\u0000\u173f\u1740\u0003\u0330\u0198"+
		"\u0000\u1740\u031f\u0001\u0000\u0000\u0000\u1741\u1742\u0005`\u0000\u0000"+
		"\u1742\u1743\u0003\u010a\u0085\u0000\u1743\u0321\u0001\u0000\u0000\u0000"+
		"\u1744\u1746\u0005\u008b\u0000\u0000\u1745\u1744\u0001\u0000\u0000\u0000"+
		"\u1745\u1746\u0001\u0000\u0000\u0000\u1746\u1747\u0001\u0000\u0000\u0000"+
		"\u1747\u177c\u0005\u008c\u0000\u0000\u1748\u177c\u0003\u0324\u0192\u0000"+
		"\u1749\u174a\u0005\u00b5\u0000\u0000\u174a\u177c\u0003\u0326\u0193\u0000"+
		"\u174b\u174c\u0005\u00fc\u0000\u0000\u174c\u174d\u0005\u00f9\u0000\u0000"+
		"\u174d\u174e\u0005\u0081\u0000\u0000\u174e\u174f\u0005 \u0000\u0000\u174f"+
		"\u1750\u0003\u011a\u008d\u0000\u1750\u1751\u0005!\u0000\u0000\u1751\u1752"+
		"\u0005\u0238\u0000\u0000\u1752\u177c\u0001\u0000\u0000\u0000\u1753\u1757"+
		"\u0005\u00fc\u0000\u0000\u1754\u1758\u0005\u00f9\u0000\u0000\u1755\u1756"+
		"\u0005\u0097\u0000\u0000\u1756\u1758\u0005\u00b5\u0000\u0000\u1757\u1754"+
		"\u0001\u0000\u0000\u0000\u1757\u1755\u0001\u0000\u0000\u0000\u1758\u1759"+
		"\u0001\u0000\u0000\u0000\u1759\u175a\u0005\u0081\u0000\u0000\u175a\u175f"+
		"\u0005\u0125\u0000\u0000\u175b\u175c\u0005 \u0000\u0000\u175c\u175d\u0003"+
		"\u0328\u0194\u0000\u175d\u175e\u0005!\u0000\u0000\u175e\u1760\u0001\u0000"+
		"\u0000\u0000\u175f\u175b\u0001\u0000\u0000\u0000\u175f\u1760\u0001\u0000"+
		"\u0000\u0000\u1760\u177c\u0001\u0000\u0000\u0000\u1761\u1762\u0005b\u0000"+
		"\u0000\u1762\u177c\u0003\u032c\u0196\u0000\u1763\u1764\u0003\u010c\u0086"+
		"\u0000\u1764\u1765\u0003\u032c\u0196\u0000\u1765\u177c\u0001\u0000\u0000"+
		"\u0000\u1766\u1767\u0005\u0103\u0000\u0000\u1767\u1769\u0003\u00f8|\u0000"+
		"\u1768\u176a\u0003\u0104\u0082\u0000\u1769\u1768\u0001\u0000\u0000\u0000"+
		"\u1769\u176a\u0001\u0000\u0000\u0000\u176a\u1771\u0001\u0000\u0000\u0000"+
		"\u176b\u176c\u0005\u0133\u0000\u0000\u176c\u1772\u0005y\u0000\u0000\u176d"+
		"\u176e\u0005\u0133\u0000\u0000\u176e\u1772\u0005\u013d\u0000\u0000\u176f"+
		"\u1770\u0005\u0133\u0000\u0000\u1770\u1772\u0005\u014e\u0000\u0000\u1771"+
		"\u176b\u0001\u0000\u0000\u0000\u1771\u176d\u0001\u0000\u0000\u0000\u1771"+
		"\u176f\u0001\u0000\u0000\u0000\u1771\u1772\u0001\u0000\u0000\u0000\u1772"+
		"\u1778\u0001\u0000\u0000\u0000\u1773\u1774\u0005\u0082\u0000\u0000\u1774"+
		"\u1775\u0007%\u0000\u0000\u1775\u1777\u0003\u032e\u0197\u0000\u1776\u1773"+
		"\u0001\u0000\u0000\u0000\u1777\u177a\u0001\u0000\u0000\u0000\u1778\u1776"+
		"\u0001\u0000\u0000\u0000\u1778\u1779\u0001\u0000\u0000\u0000\u1779\u177c"+
		"\u0001\u0000\u0000\u0000\u177a\u1778\u0001\u0000\u0000\u0000\u177b\u1745"+
		"\u0001\u0000\u0000\u0000\u177b\u1748\u0001\u0000\u0000\u0000\u177b\u1749"+
		"\u0001\u0000\u0000\u0000\u177b\u174b\u0001\u0000\u0000\u0000\u177b\u1753"+
		"\u0001\u0000\u0000\u0000\u177b\u1761\u0001\u0000\u0000\u0000\u177b\u1763"+
		"\u0001\u0000\u0000\u0000\u177b\u1766\u0001\u0000\u0000\u0000\u177c\u0323"+
		"\u0001\u0000\u0000\u0000\u177d\u177e\u0005\u00fb\u0000\u0000\u177e\u1781"+
		"\u0003\u011a\u008d\u0000\u177f\u1780\u0005\u00ff\u0000\u0000\u1780\u1782"+
		"\u0005\u012a\u0000\u0000\u1781\u177f\u0001\u0000\u0000\u0000\u1781\u1782"+
		"\u0001\u0000\u0000\u0000\u1782\u0325\u0001\u0000\u0000\u0000\u1783\u1786"+
		"\u0005\u00d3\u0000\u0000\u1784\u1786\u0003\u011a\u008d\u0000\u1785\u1783"+
		"\u0001\u0000\u0000\u0000\u1785\u1784\u0001\u0000\u0000\u0000\u1786\u0327"+
		"\u0001\u0000\u0000\u0000\u1787\u1789\u0003\u032a\u0195\u0000\u1788\u1787"+
		"\u0001\u0000\u0000\u0000\u1789\u178a\u0001\u0000\u0000\u0000\u178a\u1788"+
		"\u0001\u0000\u0000\u0000\u178a\u178b\u0001\u0000\u0000\u0000\u178b\u0329"+
		"\u0001\u0000\u0000\u0000\u178c\u178e\u0005\u0106\u0000\u0000\u178d\u178f"+
		"\u0005m\u0000\u0000\u178e\u178d\u0001\u0000\u0000\u0000\u178e\u178f\u0001"+
		"\u0000\u0000\u0000\u178f\u1790\u0001\u0000\u0000\u0000\u1790\u17a6\u0005"+
		"\u0255\u0000\u0000\u1791\u1793\u0005\u0128\u0000\u0000\u1792\u1794\u0005"+
		"\u0097\u0000\u0000\u1793\u1792\u0001\u0000\u0000\u0000\u1793\u1794\u0001"+
		"\u0000\u0000\u0000\u1794\u1795\u0001\u0000\u0000\u0000\u1795\u17a6\u0005"+
		"\u0255\u0000\u0000\u1796\u1797\u0005\u00ef\u0000\u0000\u1797\u17a6\u0005"+
		"\u0255\u0000\u0000\u1798\u1799\u0005\u00ff\u0000\u0000\u1799\u17a6\u0005"+
		"\u00ef\u0000\u0000\u179a\u179b\u0005\u0134\u0000\u0000\u179b\u17a6\u0005"+
		"\u0255\u0000\u0000\u179c\u179d\u0005\u00ff\u0000\u0000\u179d\u17a6\u0005"+
		"\u0134\u0000\u0000\u179e\u17a6\u0005\u0112\u0000\u0000\u179f\u17a0\u0005"+
		"\u00ff\u0000\u0000\u17a0\u17a6\u0005\u0112\u0000\u0000\u17a1\u17a2\u0005"+
		"\u010a\u0000\u0000\u17a2\u17a6\u0005\u0255\u0000\u0000\u17a3\u17a4\u0005"+
		"\u013b\u0000\u0000\u17a4\u17a6\u0005\u0097\u0000\u0000\u17a5\u178c\u0001"+
		"\u0000\u0000\u0000\u17a5\u1791\u0001\u0000\u0000\u0000\u17a5\u1796\u0001"+
		"\u0000\u0000\u0000\u17a5\u1798\u0001\u0000\u0000\u0000\u17a5\u179a\u0001"+
		"\u0000\u0000\u0000\u17a5\u179c\u0001\u0000\u0000\u0000\u17a5\u179e\u0001"+
		"\u0000\u0000\u0000\u17a5\u179f\u0001\u0000\u0000\u0000\u17a5\u17a1\u0001"+
		"\u0000\u0000\u0000\u17a5\u17a3\u0001\u0000\u0000\u0000\u17a6\u032b\u0001"+
		"\u0000\u0000\u0000\u17a7\u17a8\u0005\u007f\u0000\u0000\u17a8\u17a9\u0005"+
		"_\u0000\u0000\u17a9\u17aa\u0005\u0151\u0000\u0000\u17aa\u17ac\u0003\u022c"+
		"\u0116\u0000\u17ab\u17a7\u0001\u0000\u0000\u0000\u17ab\u17ac\u0001\u0000"+
		"\u0000\u0000\u17ac\u17b2\u0001\u0000\u0000\u0000\u17ad\u17ae\u0005\u012d"+
		"\u0000\u0000\u17ae\u17b2\u0003\u0104\u0082\u0000\u17af\u17b0\u0005m\u0000"+
		"\u0000\u17b0\u17b2\u0003\u0264\u0132\u0000\u17b1\u17ab\u0001\u0000\u0000"+
		"\u0000\u17b1\u17ad\u0001\u0000\u0000\u0000\u17b1\u17af\u0001\u0000\u0000"+
		"\u0000\u17b2\u032d\u0001\u0000\u0000\u0000\u17b3\u17b4\u0005\u00ff\u0000"+
		"\u0000\u17b4\u17ba\u0005\u0109\u0000\u0000\u17b5\u17ba\u0005\u0145\u0000"+
		"\u0000\u17b6\u17ba\u0005\u00fa\u0000\u0000\u17b7\u17b8\u0005\\\u0000\u0000"+
		"\u17b8\u17ba\u0007&\u0000\u0000\u17b9\u17b3\u0001\u0000\u0000\u0000\u17b9"+
		"\u17b5\u0001\u0000\u0000\u0000\u17b9\u17b6\u0001\u0000\u0000\u0000\u17b9"+
		"\u17b7\u0001\u0000\u0000\u0000\u17ba\u032f\u0001\u0000\u0000\u0000\u17bb"+
		"\u17bd\u0005\u008b\u0000\u0000\u17bc\u17bb\u0001\u0000\u0000\u0000\u17bc"+
		"\u17bd\u0001\u0000\u0000\u0000\u17bd\u17be\u0001\u0000\u0000\u0000\u17be"+
		"\u17c0\u0005\u0116\u0000\u0000\u17bf\u17bc\u0001\u0000\u0000\u0000\u17bf"+
		"\u17c0\u0001\u0000\u0000\u0000\u17c0\u17c3\u0001\u0000\u0000\u0000\u17c1"+
		"\u17c2\u0005\u012c\u0000\u0000\u17c2\u17c4\u0007\u0001\u0000\u0000\u17c3"+
		"\u17c1\u0001\u0000\u0000\u0000\u17c3\u17c4\u0001\u0000\u0000\u0000\u17c4"+
		"\u0331\u0001\u0000\u0000\u0000\u17c5\u17c6\u0007\'\u0000\u0000\u17c6\u17c7"+
		"\u0007(\u0000\u0000\u17c7\u0333\u0001\u0000\u0000\u0000\u17c8\u17ca\u0003"+
		"\u0320\u0190\u0000\u17c9\u17c8\u0001\u0000\u0000\u0000\u17c9\u17ca\u0001"+
		"\u0000\u0000\u0000\u17ca\u17cb\u0001\u0000\u0000\u0000\u17cb\u17cc\u0003"+
		"\u0336\u019b\u0000\u17cc\u17cd\u0003\u0330\u0198\u0000\u17cd\u0335\u0001"+
		"\u0000\u0000\u0000\u17ce\u17fc\u0003\u0324\u0192\u0000\u17cf\u17d0\u0005"+
		"b\u0000\u0000\u17d0\u17d1\u0003\u0104\u0082\u0000\u17d1\u17d2\u0003\u032c"+
		"\u0196\u0000\u17d2\u17fc\u0001\u0000\u0000\u0000\u17d3\u17d4\u0003\u010c"+
		"\u0086\u0000\u17d4\u17d5\u0003\u0104\u0082\u0000\u17d5\u17d6\u0003\u032c"+
		"\u0196\u0000\u17d6\u17fc\u0001\u0000\u0000\u0000\u17d7\u17da\u0005\u00f4"+
		"\u0000\u0000\u17d8\u17d9\u0005\u007f\u0000\u0000\u17d9\u17db\u0003\u022c"+
		"\u0116\u0000\u17da\u17d8\u0001\u0000\u0000\u0000\u17da\u17db\u0001\u0000"+
		"\u0000\u0000\u17db\u17dc\u0001\u0000\u0000\u0000\u17dc\u17dd\u0005 \u0000"+
		"\u0000\u17dd\u17de\u0003\u033a\u019d\u0000\u17de\u17df\u0005!\u0000\u0000"+
		"\u17df\u17e1\u0003\u032c\u0196\u0000\u17e0\u17e2\u0003\u0338\u019c\u0000"+
		"\u17e1\u17e0\u0001\u0000\u0000\u0000\u17e1\u17e2\u0001\u0000\u0000\u0000"+
		"\u17e2\u17fc\u0001\u0000\u0000\u0000\u17e3\u17e4\u0005c\u0000\u0000\u17e4"+
		"\u17e5\u0005d\u0000\u0000\u17e5\u17e6\u0003\u0104\u0082\u0000\u17e6\u17e7"+
		"\u0005\u0103\u0000\u0000\u17e7\u17e9\u0003\u00f8|\u0000\u17e8\u17ea\u0003"+
		"\u0104\u0082\u0000\u17e9\u17e8\u0001\u0000\u0000\u0000\u17e9\u17ea\u0001"+
		"\u0000\u0000\u0000\u17ea\u17f1\u0001\u0000\u0000\u0000\u17eb\u17ec\u0005"+
		"\u0133\u0000\u0000\u17ec\u17f2\u0005y\u0000\u0000\u17ed\u17ee\u0005\u0133"+
		"\u0000\u0000\u17ee\u17f2\u0005\u013d\u0000\u0000\u17ef\u17f0\u0005\u0133"+
		"\u0000\u0000\u17f0\u17f2\u0005\u014e\u0000\u0000\u17f1\u17eb\u0001\u0000"+
		"\u0000\u0000\u17f1\u17ed\u0001\u0000\u0000\u0000\u17f1\u17ef\u0001\u0000"+
		"\u0000\u0000\u17f1\u17f2\u0001\u0000\u0000\u0000\u17f2\u17f8\u0001\u0000"+
		"\u0000\u0000\u17f3\u17f4\u0005\u0082\u0000\u0000\u17f4\u17f5\u0007%\u0000"+
		"\u0000\u17f5\u17f7\u0003\u032e\u0197\u0000\u17f6\u17f3\u0001\u0000\u0000"+
		"\u0000\u17f7\u17fa\u0001\u0000\u0000\u0000\u17f8\u17f6\u0001\u0000\u0000"+
		"\u0000\u17f8\u17f9\u0001\u0000\u0000\u0000\u17f9\u17fc\u0001\u0000\u0000"+
		"\u0000\u17fa\u17f8\u0001\u0000\u0000\u0000\u17fb\u17ce\u0001\u0000\u0000"+
		"\u0000\u17fb\u17cf\u0001\u0000\u0000\u0000\u17fb\u17d3\u0001\u0000\u0000"+
		"\u0000\u17fb\u17d7\u0001\u0000\u0000\u0000\u17fb\u17e3\u0001\u0000\u0000"+
		"\u0000\u17fc\u0337\u0001\u0000\u0000\u0000\u17fd\u17fe\u0005\u0080\u0000"+
		"\u0000\u17fe\u17ff\u0005 \u0000\u0000\u17ff\u1800\u0003\u011a\u008d\u0000"+
		"\u1800\u1801\u0005!\u0000\u0000\u1801\u0339\u0001\u0000\u0000\u0000\u1802"+
		"\u1807\u0003\u033c\u019e\u0000\u1803\u1804\u0005&\u0000\u0000\u1804\u1806"+
		"\u0003\u033c\u019e\u0000\u1805\u1803\u0001\u0000\u0000\u0000\u1806\u1809"+
		"\u0001\u0000\u0000\u0000\u1807\u1805\u0001\u0000\u0000\u0000\u1807\u1808"+
		"\u0001\u0000\u0000\u0000\u1808\u033b\u0001\u0000\u0000\u0000\u1809\u1807"+
		"\u0001\u0000\u0000\u0000\u180a\u180b\u0003\u0214\u010a\u0000\u180b\u180c"+
		"\u0005m\u0000\u0000\u180c\u180d\u0003\u0148\u00a4\u0000\u180d\u1816\u0001"+
		"\u0000\u0000\u0000\u180e\u180f\u0003\u0214\u010a\u0000\u180f\u1810\u0005"+
		"m\u0000\u0000\u1810\u1811\u0005\u01a2\u0000\u0000\u1811\u1812\u0005 \u0000"+
		"\u0000\u1812\u1813\u0003\u0148\u00a4\u0000\u1813\u1814\u0005!\u0000\u0000"+
		"\u1814\u1816\u0001\u0000\u0000\u0000\u1815\u180a\u0001\u0000\u0000\u0000"+
		"\u1815\u180e\u0001\u0000\u0000\u0000\u1816\u033d\u0001\u0000\u0000\u0000"+
		"\u1817\u1818\u0005\u012b\u0000\u0000\u1818\u181a\u0003\u0102\u0081\u0000"+
		"\u1819\u1817\u0001\u0000\u0000\u0000\u1819\u181a\u0001\u0000\u0000\u0000"+
		"\u181a\u033f\u0001\u0000\u0000\u0000\u181b\u181c\u0005\u00f6\u0000\u0000"+
		"\u181c\u181d\u0005\u0097\u0000\u0000\u181d\u181e\u0003\u0348\u01a4\u0000"+
		"\u181e\u181f\u0005 \u0000\u0000\u181f\u1820\u0003\u0342\u01a1\u0000\u1820"+
		"\u1828\u0005!\u0000\u0000\u1821\u1823\u0005 \u0000\u0000\u1822\u1824\u0003"+
		"\u0342\u01a1\u0000\u1823\u1822\u0001\u0000\u0000\u0000\u1823\u1824\u0001"+
		"\u0000\u0000\u0000\u1824\u1825\u0001\u0000\u0000\u0000\u1825\u1827\u0005"+
		"!\u0000\u0000\u1826\u1821\u0001\u0000\u0000\u0000\u1827\u182a\u0001\u0000"+
		"\u0000\u0000\u1828\u1826\u0001\u0000\u0000\u0000\u1828\u1829\u0001\u0000"+
		"\u0000\u0000\u1829\u0341\u0001\u0000\u0000\u0000\u182a\u1828\u0001\u0000"+
		"\u0000\u0000\u182b\u1830\u0003\u0344\u01a2\u0000\u182c\u182d\u0005&\u0000"+
		"\u0000\u182d\u182f\u0003\u0344\u01a2\u0000\u182e\u182c\u0001\u0000\u0000"+
		"\u0000\u182f\u1832\u0001\u0000\u0000\u0000\u1830\u182e\u0001\u0000\u0000"+
		"\u0000\u1830\u1831\u0001\u0000\u0000\u0000\u1831\u0343\u0001\u0000\u0000"+
		"\u0000\u1832\u1830\u0001\u0000\u0000\u0000\u1833\u1836\u0003\u016a\u00b5"+
		"\u0000\u1834\u1835\u0005\u010d\u0000\u0000\u1835\u1837\u0003\u01ec\u00f6"+
		"\u0000\u1836\u1834\u0001\u0000\u0000\u0000\u1836\u1837\u0001\u0000\u0000"+
		"\u0000\u1837\u1839\u0001\u0000\u0000\u0000\u1838\u183a\u0003\u01ec\u00f6"+
		"\u0000\u1839\u1838\u0001\u0000\u0000\u0000\u1839\u183a\u0001\u0000\u0000"+
		"\u0000\u183a\u1855\u0001\u0000\u0000\u0000\u183b\u183c\u0005 \u0000\u0000"+
		"\u183c\u183d\u0003\u011a\u008d\u0000\u183d\u1840\u0005!\u0000\u0000\u183e"+
		"\u183f\u0005\u010d\u0000\u0000\u183f\u1841\u0003\u01ec\u00f6\u0000\u1840"+
		"\u183e\u0001\u0000\u0000\u0000\u1840\u1841\u0001\u0000\u0000\u0000\u1841"+
		"\u1843\u0001\u0000\u0000\u0000\u1842\u1844\u0003\u01ec\u00f6\u0000\u1843"+
		"\u1842\u0001\u0000\u0000\u0000\u1843\u1844\u0001\u0000\u0000\u0000\u1844"+
		"\u1855\u0001\u0000\u0000\u0000\u1845\u1846\u0005\u00f6\u0000\u0000\u1846"+
		"\u1847\u0003\u01ec\u00f6\u0000\u1847\u1848\u0005l\u0000\u0000\u1848\u1849"+
		"\u0005\u00ed\u0000\u0000\u1849\u184a\u0005\u00ee\u0000\u0000\u184a\u184b"+
		"\u0003\u011a\u008d\u0000\u184b\u1855\u0001\u0000\u0000\u0000\u184c\u184f"+
		"\u0003\u0346\u01a3\u0000\u184d\u184e\u0005\u010d\u0000\u0000\u184e\u1850"+
		"\u0003\u01ec\u00f6\u0000\u184f\u184d\u0001\u0000\u0000\u0000\u184f\u1850"+
		"\u0001\u0000\u0000\u0000\u1850\u1852\u0001\u0000\u0000\u0000\u1851\u1853"+
		"\u0003\u01ec\u00f6\u0000\u1852\u1851\u0001\u0000\u0000\u0000\u1852\u1853"+
		"\u0001\u0000\u0000\u0000\u1853\u1855\u0001\u0000\u0000\u0000\u1854\u1833"+
		"\u0001\u0000\u0000\u0000\u1854\u183b\u0001\u0000\u0000\u0000\u1854\u1845"+
		"\u0001\u0000\u0000\u0000\u1854\u184c\u0001\u0000\u0000\u0000\u1855\u0345"+
		"\u0001\u0000\u0000\u0000\u1856\u1859\u0003\u0160\u00b0\u0000\u1857\u1859"+
		"\u0003\u0188\u00c4\u0000\u1858\u1856\u0001\u0000\u0000\u0000\u1858\u1857"+
		"\u0001\u0000\u0000\u0000\u1859\u0347\u0001\u0000\u0000\u0000\u185a\u185d"+
		"\u0003\u00eau\u0000\u185b\u185d\u0003\u00eew\u0000\u185c\u185a\u0001\u0000"+
		"\u0000\u0000\u185c\u185b\u0001\u0000\u0000\u0000\u185d\u0349\u0001\u0000"+
		"\u0000\u0000\u185e\u1860\u0005b\u0000\u0000\u185f\u185e\u0001\u0000\u0000"+
		"\u0000\u185f\u1860\u0001\u0000\u0000\u0000\u1860\u034b\u0001\u0000\u0000"+
		"\u0000\u1861\u1863\u0005\u010f\u0000\u0000\u1862\u1861\u0001\u0000\u0000"+
		"\u0000\u1862\u1863\u0001\u0000\u0000\u0000\u1863\u034d\u0001\u0000\u0000"+
		"\u0000\u1864\u1866\u0005\u0139\u0000\u0000\u1865\u1864\u0001\u0000\u0000"+
		"\u0000\u1865\u1866\u0001\u0000\u0000\u0000\u1866\u034f\u0001\u0000\u0000"+
		"\u0000\u1867\u186a\u0005\u0258\u0000\u0000\u1868\u186a\u0003\u00e6s\u0000"+
		"\u1869\u1867\u0001\u0000\u0000\u0000\u1869\u1868\u0001\u0000\u0000\u0000"+
		"\u186a\u0351\u0001\u0000\u0000\u0000\u186b\u186d\u0005\u0011\u0000\u0000"+
		"\u186c\u186b\u0001\u0000\u0000\u0000\u186c\u186d\u0001\u0000\u0000\u0000"+
		"\u186d\u0353\u0001\u0000\u0000\u0000\u186e\u1877\u0003\u0366\u01b3\u0000"+
		"\u186f\u1877\u0003\u0386\u01c3\u0000\u1870\u1877\u0003\u0388\u01c4\u0000"+
		"\u1871\u1877\u0003\u038a\u01c5\u0000\u1872\u1873\u0005\\\u0000\u0000\u1873"+
		"\u1874\u0005X\u0000\u0000\u1874\u1877\u0003\u00fe\u007f\u0000\u1875\u1877"+
		"\u0003\u0356\u01ab\u0000\u1876\u186e\u0001\u0000\u0000\u0000\u1876\u186f"+
		"\u0001\u0000\u0000\u0000\u1876\u1870\u0001\u0000\u0000\u0000\u1876\u1871"+
		"\u0001\u0000\u0000\u0000\u1876\u1872\u0001\u0000\u0000\u0000\u1876\u1875"+
		"\u0001\u0000\u0000\u0000\u1877\u0355\u0001\u0000\u0000\u0000\u1878\u1879"+
		"\u0005\u01c5\u0000\u0000\u1879\u187a\u0005\u00f6\u0000\u0000\u187a\u187b"+
		"\u0003\u0168\u00b4\u0000\u187b\u187c\u0003\u02da\u016d\u0000\u187c\u1881"+
		"\u0001\u0000\u0000\u0000\u187d\u187e\u0005\u01d7\u0000\u0000\u187e\u187f"+
		"\u0005\u00f6\u0000\u0000\u187f\u1881\u0003\u0168\u00b4\u0000\u1880\u1878"+
		"\u0001\u0000\u0000\u0000\u1880\u187d\u0001\u0000\u0000\u0000\u1881\u0357"+
		"\u0001\u0000\u0000\u0000\u1882\u1888\u0003\u035c\u01ae\u0000\u1883\u1888"+
		"\u0003\u035e\u01af\u0000\u1884\u1888\u0003\u0360\u01b0\u0000\u1885\u1888"+
		"\u0003\u0396\u01cb\u0000\u1886\u1888\u0003\u035a\u01ad\u0000\u1887\u1882"+
		"\u0001\u0000\u0000\u0000\u1887\u1883\u0001\u0000\u0000\u0000\u1887\u1884"+
		"\u0001\u0000\u0000\u0000\u1887\u1885\u0001\u0000\u0000\u0000\u1887\u1886"+
		"\u0001\u0000\u0000\u0000\u1888\u0359\u0001\u0000\u0000\u0000\u1889\u188a"+
		"\u0005\u01c5\u0000\u0000\u188a\u188b\u0005\u00f6\u0000\u0000\u188b\u188c"+
		"\u0003\u0168\u00b4\u0000\u188c\u035b\u0001\u0000\u0000\u0000\u188d\u188e"+
		"\u0005\u0141\u0000\u0000\u188e\u188f\u0005\u0087\u0000\u0000\u188f\u1890"+
		"\u0003\u0108\u0084\u0000\u1890\u035d\u0001\u0000\u0000\u0000\u1891\u1892"+
		"\u0005\u0118\u0000\u0000\u1892\u1893\u0005\u0082\u0000\u0000\u1893\u1894"+
		"\u0005\u011d\u0000\u0000\u1894\u1895\u0003\u022c\u0116\u0000\u1895\u035f"+
		"\u0001\u0000\u0000\u0000\u1896\u1897\u0005\u013b\u0000\u0000\u1897\u1898"+
		"\u0005\u0097\u0000\u0000\u1898\u189a\u0003\u022e\u0117\u0000\u1899\u1896"+
		"\u0001\u0000\u0000\u0000\u1899\u189a\u0001\u0000\u0000\u0000\u189a\u189b"+
		"\u0001\u0000\u0000\u0000\u189b\u189c\u0005\\\u0000\u0000\u189c\u189d\u0005"+
		"\u0151\u0000\u0000\u189d\u189f\u0003\u00fe\u007f\u0000\u189e\u18a0\u0005"+
		"\u01ae\u0000\u0000\u189f\u189e\u0001\u0000\u0000\u0000\u189f\u18a0\u0001"+
		"\u0000\u0000\u0000\u18a0\u0361\u0001\u0000\u0000\u0000\u18a1\u18a6\u0003"+
		"\u0364\u01b2\u0000\u18a2\u18a3\u0005&\u0000\u0000\u18a3\u18a5\u0003\u0364"+
		"\u01b2\u0000\u18a4\u18a2\u0001\u0000\u0000\u0000\u18a5\u18a8\u0001\u0000"+
		"\u0000\u0000\u18a6\u18a4\u0001\u0000\u0000\u0000\u18a6\u18a7\u0001\u0000"+
		"\u0000\u0000\u18a7\u0363\u0001\u0000\u0000\u0000\u18a8\u18a6\u0001\u0000"+
		"\u0000\u0000\u18a9\u18ab\u0003\u00f8|\u0000\u18aa\u18ac\u0005\u0011\u0000"+
		"\u0000\u18ab\u18aa\u0001\u0000\u0000\u0000\u18ab\u18ac\u0001\u0000\u0000"+
		"\u0000\u18ac\u0365\u0001\u0000\u0000\u0000\u18ad\u18b2\u0003\u0368\u01b4"+
		"\u0000\u18ae\u18af\u0005&\u0000\u0000\u18af\u18b1\u0003\u0368\u01b4\u0000"+
		"\u18b0\u18ae\u0001\u0000\u0000\u0000\u18b1\u18b4\u0001\u0000\u0000\u0000"+
		"\u18b2\u18b0\u0001\u0000\u0000\u0000\u18b2\u18b3\u0001\u0000\u0000\u0000"+
		"\u18b3\u0367\u0001\u0000\u0000\u0000\u18b4\u18b2\u0001\u0000\u0000\u0000"+
		"\u18b5\u191a\u0003\u036a\u01b5\u0000\u18b6\u191a\u0003\u036c\u01b6\u0000"+
		"\u18b7\u191a\u0003\u036e\u01b7\u0000\u18b8\u191a\u0003\u0378\u01bc\u0000"+
		"\u18b9\u191a\u0003\u037c\u01be\u0000\u18ba\u191a\u0003\u037e\u01bf\u0000"+
		"\u18bb\u191a\u0003\u0380\u01c0\u0000\u18bc\u18bd\u0007)\u0000\u0000\u18bd"+
		"\u18c1\u0005h\u0000\u0000\u18be\u18c2\u0003\u022c\u0116\u0000\u18bf\u18c2"+
		"\u0005\u0092\u0000\u0000\u18c0\u18c2\u0005\u0108\u0000\u0000\u18c1\u18be"+
		"\u0001\u0000\u0000\u0000\u18c1\u18bf\u0001\u0000\u0000\u0000\u18c1\u18c0"+
		"\u0001\u0000\u0000\u0000\u18c1\u18c2\u0001\u0000\u0000\u0000\u18c2\u191a"+
		"\u0001\u0000\u0000\u0000\u18c3\u18c4\u0005\u00b7\u0000\u0000\u18c4\u18c5"+
		"\u0007*\u0000\u0000\u18c5\u18c6\u0005h\u0000\u0000\u18c6\u191a\u0003\u022c"+
		"\u0116\u0000\u18c7\u18c8\u0007)\u0000\u0000\u18c8\u18c9\u0005\u0148\u0000"+
		"\u0000\u18c9\u191a\u0003\u022c\u0116\u0000\u18ca\u18cb\u0005\u00b7\u0000"+
		"\u0000\u18cb\u18cc\u0007*\u0000\u0000\u18cc\u18cd\u0005\u0148\u0000\u0000"+
		"\u18cd\u191a\u0003\u022c\u0116\u0000\u18ce\u18d5\u0005\u00b8\u0000\u0000"+
		"\u18cf\u18d5\u0005\u00b7\u0000\u0000\u18d0\u18d2\u0005\u00ff\u0000\u0000"+
		"\u18d1\u18d0\u0001\u0000\u0000\u0000\u18d1\u18d2\u0001\u0000\u0000\u0000"+
		"\u18d2\u18d3\u0001\u0000\u0000\u0000\u18d3\u18d5\u0005\u0123\u0000\u0000"+
		"\u18d4\u18ce\u0001\u0000\u0000\u0000\u18d4\u18cf\u0001\u0000\u0000\u0000"+
		"\u18d4\u18d1\u0001\u0000\u0000\u0000\u18d5\u18d6\u0001\u0000\u0000\u0000"+
		"\u18d6\u18d7\u0005\u00f7\u0000\u0000\u18d7\u18d8\u0005\u00fe\u0000\u0000"+
		"\u18d8\u191a\u0005\u0149\u0000\u0000\u18d9\u18da\u0005\u010c\u0000\u0000"+
		"\u18da\u18db\u0005\u0082\u0000\u0000\u18db\u191a\u0003\u0108\u0084\u0000"+
		"\u18dc\u18dd\u0005\\\u0000\u0000\u18dd\u18de\u0005\u015a\u0000\u0000\u18de"+
		"\u191a\u0005\u010c\u0000\u0000\u18df\u18e0\u0005\\\u0000\u0000\u18e0\u18e1"+
		"\u0007+\u0000\u0000\u18e1\u191a\u0005\u0138\u0000\u0000\u18e2\u18e3\u0005"+
		"\\\u0000\u0000\u18e3\u18e4\u0005\u0151\u0000\u0000\u18e4\u191a\u0003\u022c"+
		"\u0116\u0000\u18e5\u18e6\u0005\\\u0000\u0000\u18e6\u191a\u0007,\u0000"+
		"\u0000\u18e7\u18e8\u0005\\\u0000\u0000\u18e8\u18e9\u0005 \u0000\u0000"+
		"\u18e9\u18ee\u0003\u0382\u01c1\u0000\u18ea\u18eb\u0005&\u0000\u0000\u18eb"+
		"\u18ed\u0003\u0382\u01c1\u0000\u18ec\u18ea\u0001\u0000\u0000\u0000\u18ed"+
		"\u18f0\u0001\u0000\u0000\u0000\u18ee\u18ec\u0001\u0000\u0000\u0000\u18ee"+
		"\u18ef\u0001\u0000\u0000\u0000\u18ef\u18f1\u0001\u0000\u0000\u0000\u18f0"+
		"\u18ee\u0001\u0000\u0000\u0000\u18f1\u18f2\u0005!\u0000\u0000\u18f2\u191a"+
		"\u0001\u0000\u0000\u0000\u18f3\u18f4\u0005\u0143\u0000\u0000\u18f4\u18f5"+
		"\u0005 \u0000\u0000\u18f5\u18fa\u0003\u0384\u01c2\u0000\u18f6\u18f7\u0005"+
		"&\u0000\u0000\u18f7\u18f9\u0003\u0384\u01c2\u0000\u18f8\u18f6\u0001\u0000"+
		"\u0000\u0000\u18f9\u18fc\u0001\u0000\u0000\u0000\u18fa\u18f8\u0001\u0000"+
		"\u0000\u0000\u18fa\u18fb\u0001\u0000\u0000\u0000\u18fb\u18fd\u0001\u0000"+
		"\u0000\u0000\u18fc\u18fa\u0001\u0000\u0000\u0000\u18fd\u18fe\u0005!\u0000"+
		"\u0000\u18fe\u191a\u0001\u0000\u0000\u0000\u18ff\u1900\u0005\u012a\u0000"+
		"\u0000\u1900\u191a\u0003\u00f8|\u0000\u1901\u1902\u0005\u00ff\u0000\u0000"+
		"\u1902\u1903\u0005\u012a\u0000\u0000\u1903\u191a\u0003\u00f8|\u0000\u1904"+
		"\u1905\u0005\u015c\u0000\u0000\u1905\u191a\u0003\u0226\u0113\u0000\u1906"+
		"\u1907\u0005\u008b\u0000\u0000\u1907\u191a\u0005\u015c\u0000\u0000\u1908"+
		"\u1909\u0005\u013c\u0000\u0000\u1909\u190d\u0005\u0087\u0000\u0000\u190a"+
		"\u190e\u0003\u022c\u0116\u0000\u190b\u190e\u0005\u00be\u0000\u0000\u190c"+
		"\u190e\u0005\u014c\u0000\u0000\u190d\u190a\u0001\u0000\u0000\u0000\u190d"+
		"\u190b\u0001\u0000\u0000\u0000\u190d\u190c\u0001\u0000\u0000\u0000\u190e"+
		"\u191a\u0001\u0000\u0000\u0000\u190f\u1910\u0005\u0142\u0000\u0000\u1910"+
		"\u1917\u0005\u0125\u0000\u0000\u1911\u1918\u0005\u00b5\u0000\u0000\u1912"+
		"\u1913\u0005\u007f\u0000\u0000\u1913\u1914\u0005_\u0000\u0000\u1914\u1918"+
		"\u0003\u0108\u0084\u0000\u1915\u1918\u0005y\u0000\u0000\u1916\u1918\u0005"+
		"\u0135\u0000\u0000\u1917\u1911\u0001\u0000\u0000\u0000\u1917\u1912\u0001"+
		"\u0000\u0000\u0000\u1917\u1915\u0001\u0000\u0000\u0000\u1917\u1916\u0001"+
		"\u0000\u0000\u0000\u1918\u191a\u0001\u0000\u0000\u0000\u1919\u18b5\u0001"+
		"\u0000\u0000\u0000\u1919\u18b6\u0001\u0000\u0000\u0000\u1919\u18b7\u0001"+
		"\u0000\u0000\u0000\u1919\u18b8\u0001\u0000\u0000\u0000\u1919\u18b9\u0001"+
		"\u0000\u0000\u0000\u1919\u18ba\u0001\u0000\u0000\u0000\u1919\u18bb\u0001"+
		"\u0000\u0000\u0000\u1919\u18bc\u0001\u0000\u0000\u0000\u1919\u18c3\u0001"+
		"\u0000\u0000\u0000\u1919\u18c7\u0001\u0000\u0000\u0000\u1919\u18ca\u0001"+
		"\u0000\u0000\u0000\u1919\u18d4\u0001\u0000\u0000\u0000\u1919\u18d9\u0001"+
		"\u0000\u0000\u0000\u1919\u18dc\u0001\u0000\u0000\u0000\u1919\u18df\u0001"+
		"\u0000\u0000\u0000\u1919\u18e2\u0001\u0000\u0000\u0000\u1919\u18e5\u0001"+
		"\u0000\u0000\u0000\u1919\u18e7\u0001\u0000\u0000\u0000\u1919\u18f3\u0001"+
		"\u0000\u0000\u0000\u1919\u18ff\u0001\u0000\u0000\u0000\u1919\u1901\u0001"+
		"\u0000\u0000\u0000\u1919\u1904\u0001\u0000\u0000\u0000\u1919\u1906\u0001"+
		"\u0000\u0000\u0000\u1919\u1908\u0001\u0000\u0000\u0000\u1919\u190f\u0001"+
		"\u0000\u0000\u0000\u191a\u0369\u0001\u0000\u0000\u0000\u191b\u191d\u0005"+
		"[\u0000\u0000\u191c\u191e\u0005^\u0000\u0000\u191d\u191c\u0001\u0000\u0000"+
		"\u0000\u191d\u191e\u0001\u0000\u0000\u0000\u191e\u1920\u0001\u0000\u0000"+
		"\u0000\u191f\u1921\u0003\u02b0\u0158\u0000\u1920\u191f\u0001\u0000\u0000"+
		"\u0000\u1920\u1921\u0001\u0000\u0000\u0000\u1921\u1922\u0001\u0000\u0000"+
		"\u0000\u1922\u1923\u0003\u031c\u018e\u0000\u1923\u036b\u0001\u0000\u0000"+
		"\u0000\u1924\u1926\u0005V\u0000\u0000\u1925\u1927\u0005^\u0000\u0000\u1926"+
		"\u1925\u0001\u0000\u0000\u0000\u1926\u1927\u0001\u0000\u0000\u0000\u1927"+
		"\u1929\u0001\u0000\u0000\u0000\u1928\u192a\u0003\u02b2\u0159\u0000\u1929"+
		"\u1928\u0001\u0000\u0000\u0000\u1929\u192a\u0001\u0000\u0000\u0000\u192a"+
		"\u192b\u0001\u0000\u0000\u0000\u192b\u192d\u0003\u00fa}\u0000\u192c\u192e"+
		"\u0007 \u0000\u0000\u192d\u192c\u0001\u0000\u0000\u0000\u192d\u192e\u0001"+
		"\u0000\u0000\u0000\u192e\u036d\u0001\u0000\u0000\u0000\u192f\u1932\u0003"+
		"\u0370\u01b8\u0000\u1930\u1931\u0005\\\u0000\u0000\u1931\u1933\u0005\u0113"+
		"\u0000\u0000\u1932\u1930\u0001\u0000\u0000\u0000\u1932\u1933\u0001\u0000"+
		"\u0000\u0000\u1933\u1934\u0001\u0000\u0000\u0000\u1934\u1935\u0005\u00cb"+
		"\u0000\u0000\u1935\u1937\u0003\u0224\u0112\u0000\u1936\u1938\u0003\u01ea"+
		"\u00f5\u0000\u1937\u1936\u0001\u0000\u0000\u0000\u1937\u1938\u0001\u0000"+
		"\u0000\u0000\u1938\u193b\u0001\u0000\u0000\u0000\u1939\u193a\u0005\u007f"+
		"\u0000\u0000\u193a\u193c\u0003\u011a\u008d\u0000\u193b\u1939\u0001\u0000"+
		"\u0000\u0000\u193b\u193c\u0001\u0000\u0000\u0000\u193c\u1980\u0001\u0000"+
		"\u0000\u0000\u193d\u193e\u0003\u0370\u01b8\u0000\u193e\u193f\u0005\\\u0000"+
		"\u0000\u193f\u1940\u0005\u00b5\u0000\u0000\u1940\u1941\u0003\u011a\u008d"+
		"\u0000\u1941\u1980\u0001\u0000\u0000\u0000\u1942\u1943\u0003\u0370\u01b8"+
		"\u0000\u1943\u1944\u0005V\u0000\u0000\u1944\u1945\u0005\u00b5\u0000\u0000"+
		"\u1945\u1980\u0001\u0000\u0000\u0000\u1946\u1947\u0003\u0370\u01b8\u0000"+
		"\u1947\u1948\u0007-\u0000\u0000\u1948\u1949\u0005\u008b\u0000\u0000\u1949"+
		"\u194a\u0005\u008c\u0000\u0000\u194a\u1980\u0001\u0000\u0000\u0000\u194b"+
		"\u194c\u0003\u0370\u01b8\u0000\u194c\u194d\u0005[\u0000\u0000\u194d\u1951"+
		"\u0005\u00fc\u0000\u0000\u194e\u1952\u0005\u00f9\u0000\u0000\u194f\u1950"+
		"\u0005\u0097\u0000\u0000\u1950\u1952\u0005\u00b5\u0000\u0000\u1951\u194e"+
		"\u0001\u0000\u0000\u0000\u1951\u194f\u0001\u0000\u0000\u0000\u1952\u1953"+
		"\u0001\u0000\u0000\u0000\u1953\u1954\u0005\u0081\u0000\u0000\u1954\u1959"+
		"\u0005\u0125\u0000\u0000\u1955\u1956\u0005 \u0000\u0000\u1956\u1957\u0003"+
		"\u0328\u0194\u0000\u1957\u1958\u0005!\u0000\u0000\u1958\u195a\u0001\u0000"+
		"\u0000\u0000\u1959\u1955\u0001\u0000\u0000\u0000\u1959\u195a\u0001\u0000"+
		"\u0000\u0000\u195a\u1980\u0001\u0000\u0000\u0000\u195b\u195c\u0003\u0370"+
		"\u01b8\u0000\u195c\u1960\u0003\u0372\u01b9\u0000\u195d\u195f\u0003\u0372"+
		"\u01b9\u0000\u195e\u195d\u0001\u0000\u0000\u0000\u195f\u1962\u0001\u0000"+
		"\u0000\u0000\u1960\u195e\u0001\u0000\u0000\u0000\u1960\u1961\u0001\u0000"+
		"\u0000\u0000\u1961\u1980\u0001\u0000\u0000\u0000\u1962\u1960\u0001\u0000"+
		"\u0000\u0000\u1963\u1964\u0003\u0370\u01b8\u0000\u1964\u1965\u0005V\u0000"+
		"\u0000\u1965\u1967\u0005\u0125\u0000\u0000\u1966\u1968\u0003\u02b2\u0159"+
		"\u0000\u1967\u1966\u0001\u0000\u0000\u0000\u1967\u1968\u0001\u0000\u0000"+
		"\u0000\u1968\u1980\u0001\u0000\u0000\u0000\u1969\u196a\u0003\u0370\u01b8"+
		"\u0000\u196a\u196b\u0005\\\u0000\u0000\u196b\u196c\u0005\u014f\u0000\u0000"+
		"\u196c\u196d\u0005\u0255\u0000\u0000\u196d\u1980\u0001\u0000\u0000\u0000"+
		"\u196e\u196f\u0003\u0370\u01b8\u0000\u196f\u1970\u0005\\\u0000\u0000\u1970"+
		"\u1971\u0005 \u0000\u0000\u1971\u1972\u0003\u0374\u01ba\u0000\u1972\u1973"+
		"\u0005!\u0000\u0000\u1973\u1980\u0001\u0000\u0000\u0000\u1974\u1975\u0003"+
		"\u0370\u01b8\u0000\u1975\u1976\u0005\u0143\u0000\u0000\u1976\u1977\u0005"+
		" \u0000\u0000\u1977\u1978\u0003\u0374\u01ba\u0000\u1978\u1979\u0005!\u0000"+
		"\u0000\u1979\u1980\u0001\u0000\u0000\u0000\u197a\u197b\u0003\u0370\u01b8"+
		"\u0000\u197b\u197c\u0005\\\u0000\u0000\u197c\u197d\u0005\u0150\u0000\u0000"+
		"\u197d\u197e\u0007.\u0000\u0000\u197e\u1980\u0001\u0000\u0000\u0000\u197f"+
		"\u192f\u0001\u0000\u0000\u0000\u197f\u193d\u0001\u0000\u0000\u0000\u197f"+
		"\u1942\u0001\u0000\u0000\u0000\u197f\u1946\u0001\u0000\u0000\u0000\u197f"+
		"\u194b\u0001\u0000\u0000\u0000\u197f\u195b\u0001\u0000\u0000\u0000\u197f"+
		"\u1963\u0001\u0000\u0000\u0000\u197f\u1969\u0001\u0000\u0000\u0000\u197f"+
		"\u196e\u0001\u0000\u0000\u0000\u197f\u1974\u0001\u0000\u0000\u0000\u197f"+
		"\u197a\u0001\u0000\u0000\u0000\u1980\u036f\u0001\u0000\u0000\u0000\u1981"+
		"\u1983\u0005U\u0000\u0000\u1982\u1984\u0005^\u0000\u0000\u1983\u1982\u0001"+
		"\u0000\u0000\u0000\u1983\u1984\u0001\u0000\u0000\u0000\u1984\u1985\u0001"+
		"\u0000\u0000\u0000\u1985\u1986\u0003\u00fa}\u0000\u1986\u0371\u0001\u0000"+
		"\u0000\u0000\u1987\u198f\u0005\\\u0000\u0000\u1988\u198c\u0005\u00fc\u0000"+
		"\u0000\u1989\u198d\u0005\u00f9\u0000\u0000\u198a\u198b\u0005\u0097\u0000"+
		"\u0000\u198b\u198d\u0005\u00b5\u0000";
	private static final String _serializedATNSegment3 =
		"\u0000\u198c\u1989\u0001\u0000\u0000\u0000\u198c\u198a\u0001\u0000\u0000"+
		"\u0000\u198d\u1990\u0001\u0000\u0000\u0000\u198e\u1990\u0003\u032a\u0195"+
		"\u0000\u198f\u1988\u0001\u0000\u0000\u0000\u198f\u198e\u0001\u0000\u0000"+
		"\u0000\u1990\u1999\u0001\u0000\u0000\u0000\u1991\u1996\u0005\u0144\u0000"+
		"\u0000\u1992\u1994\u0005m\u0000\u0000\u1993\u1992\u0001\u0000\u0000\u0000"+
		"\u1993\u1994\u0001\u0000\u0000\u0000\u1994\u1995\u0001\u0000\u0000\u0000"+
		"\u1995\u1997\u0005\u0255\u0000\u0000\u1996\u1993\u0001\u0000\u0000\u0000"+
		"\u1996\u1997\u0001\u0000\u0000\u0000\u1997\u1999\u0001\u0000\u0000\u0000"+
		"\u1998\u1987\u0001\u0000\u0000\u0000\u1998\u1991\u0001\u0000\u0000\u0000"+
		"\u1999\u0373\u0001\u0000\u0000\u0000\u199a\u199f\u0003\u0376\u01bb\u0000"+
		"\u199b\u199c\u0005&\u0000\u0000\u199c\u199e\u0003\u0376\u01bb\u0000\u199d"+
		"\u199b\u0001\u0000\u0000\u0000\u199e\u19a1\u0001\u0000\u0000\u0000\u199f"+
		"\u199d\u0001\u0000\u0000\u0000\u199f\u19a0\u0001\u0000\u0000\u0000\u19a0"+
		"\u0375\u0001\u0000\u0000\u0000\u19a1\u199f\u0001\u0000\u0000\u0000\u19a2"+
		"\u19a3\u0005\u0253\u0000\u0000\u19a3\u19a4\u0005\u0018\u0000\u0000\u19a4"+
		"\u19a5\u0003\u011a\u008d\u0000\u19a5\u0377\u0001\u0000\u0000\u0000\u19a6"+
		"\u19ad\u0005[\u0000\u0000\u19a7\u19aa\u0003\u0334\u019a\u0000\u19a8\u19a9"+
		"\u0005\u008b\u0000\u0000\u19a9\u19ab\u0005\u0157\u0000\u0000\u19aa\u19a8"+
		"\u0001\u0000\u0000\u0000\u19aa\u19ab\u0001\u0000\u0000\u0000\u19ab\u19ae"+
		"\u0001\u0000\u0000\u0000\u19ac\u19ae\u0003\u037a\u01bd\u0000\u19ad\u19a7"+
		"\u0001\u0000\u0000\u0000\u19ad\u19ac\u0001\u0000\u0000\u0000\u19ae\u0379"+
		"\u0001\u0000\u0000\u0000\u19af\u19b0\u0005`\u0000\u0000\u19b0\u19b2\u0003"+
		"\u010a\u0085\u0000\u19b1\u19af\u0001\u0000\u0000\u0000\u19b1\u19b2\u0001"+
		"\u0000\u0000\u0000\u19b2\u19b5\u0001\u0000\u0000\u0000\u19b3\u19b6\u0005"+
		"b\u0000\u0000\u19b4\u19b6\u0003\u010c\u0086\u0000\u19b5\u19b3\u0001\u0000"+
		"\u0000\u0000\u19b5\u19b4\u0001\u0000\u0000\u0000\u19b6\u19b7\u0001\u0000"+
		"\u0000\u0000\u19b7\u19b8\u0005\u007f\u0000\u0000\u19b8\u19b9\u0005_\u0000"+
		"\u0000\u19b9\u19ba\u0003\u0108\u0084\u0000\u19ba\u19bb\u0003\u0330\u0198"+
		"\u0000\u19bb\u037b\u0001\u0000\u0000\u0000\u19bc\u19bd\u0005U\u0000\u0000"+
		"\u19bd\u19be\u0005`\u0000\u0000\u19be\u19bf\u0003\u010a\u0085\u0000\u19bf"+
		"\u19c0\u0003\u0330\u0198\u0000\u19c0\u037d\u0001\u0000\u0000\u0000\u19c1"+
		"\u19c2\u0005\u0158\u0000\u0000\u19c2\u19c3\u0005`\u0000\u0000\u19c3\u19c4"+
		"\u0003\u010a\u0085\u0000\u19c4\u037f\u0001\u0000\u0000\u0000\u19c5\u19c6"+
		"\u0005V\u0000\u0000\u19c6\u19c8\u0005`\u0000\u0000\u19c7\u19c9\u0003\u02b2"+
		"\u0159\u0000\u19c8\u19c7\u0001\u0000\u0000\u0000\u19c8\u19c9\u0001\u0000"+
		"\u0000\u0000\u19c9\u19ca\u0001\u0000\u0000\u0000\u19ca\u19cc\u0003\u010a"+
		"\u0085\u0000\u19cb\u19cd\u0007 \u0000\u0000\u19cc\u19cb\u0001\u0000\u0000"+
		"\u0000\u19cc\u19cd\u0001\u0000\u0000\u0000\u19cd\u0381\u0001\u0000\u0000"+
		"\u0000\u19ce\u19cf\u0003\u0384\u01c2\u0000\u19cf\u19d0\u0005\u0018\u0000"+
		"\u0000\u19d0\u19d1\u0003\u011a\u008d\u0000\u19d1\u0383\u0001\u0000\u0000"+
		"\u0000\u19d2\u19d3\u0005\u0253\u0000\u0000\u19d3\u0385\u0001\u0000\u0000"+
		"\u0000\u19d4\u19d6\u0005\u0141\u0000\u0000\u19d5\u19d7\u0005^\u0000\u0000"+
		"\u19d6\u19d5\u0001\u0000\u0000\u0000\u19d6\u19d7\u0001\u0000\u0000\u0000"+
		"\u19d7\u19d8\u0001\u0000\u0000\u0000\u19d8\u19d9\u0003\u00fa}\u0000\u19d9"+
		"\u19da\u0005\u0087\u0000\u0000\u19da\u19db\u0003\u00fa}\u0000\u19db\u0387"+
		"\u0001\u0000\u0000\u0000\u19dc\u19dd\u0005\u0141\u0000\u0000\u19dd\u19de"+
		"\u0005`\u0000\u0000\u19de\u19df\u0003\u022c\u0116\u0000\u19df\u19e0\u0005"+
		"\u0087\u0000\u0000\u19e0\u19e1\u0003\u022c\u0116\u0000\u19e1\u0389\u0001"+
		"\u0000\u0000\u0000\u19e2\u19e3\u0005\u0141\u0000\u0000\u19e3\u19e4\u0005"+
		"\u0087\u0000\u0000\u19e4\u19e5\u0003\u00eau\u0000\u19e5\u038b\u0001\u0000"+
		"\u0000\u0000\u19e6\u19eb\u0003\u0108\u0084\u0000\u19e7\u19e8\u0005&\u0000"+
		"\u0000\u19e8\u19ea\u0003\u0108\u0084\u0000\u19e9\u19e7\u0001\u0000\u0000"+
		"\u0000\u19ea\u19ed\u0001\u0000\u0000\u0000\u19eb\u19e9\u0001\u0000\u0000"+
		"\u0000\u19eb\u19ec\u0001\u0000\u0000\u0000\u19ec\u038d\u0001\u0000\u0000"+
		"\u0000\u19ed\u19eb\u0001\u0000\u0000\u0000\u19ee\u19ef\u0005U\u0000\u0000"+
		"\u19ef\u19f0\u0005\u0114\u0000\u0000\u19f0\u19f1\u0003\u0238\u011c\u0000"+
		"\u19f1\u19f2\u0003\u0390\u01c8\u0000\u19f2\u038f\u0001\u0000\u0000\u0000"+
		"\u19f3\u19f5\u0005m\u0000\u0000\u19f4\u19f3\u0001\u0000\u0000\u0000\u19f4"+
		"\u19f5\u0001\u0000\u0000\u0000\u19f5\u19f7\u0001\u0000\u0000\u0000\u19f6"+
		"\u19f8\u0003\u0392\u01c9\u0000\u19f7\u19f6\u0001\u0000\u0000\u0000\u19f7"+
		"\u19f8\u0001\u0000\u0000\u0000\u19f8\u1a04\u0001\u0000\u0000\u0000\u19f9"+
		"\u19fa\u0005\u0141\u0000\u0000\u19fa\u19fb\u0005\u0087\u0000\u0000\u19fb"+
		"\u1a04\u0003\u0238\u011c\u0000\u19fc\u19fd\u0005\u013c\u0000\u0000\u19fd"+
		"\u19fe\u0005\u0087\u0000\u0000\u19fe\u1a04\u0003\u023a\u011d\u0000\u19ff"+
		"\u1a00\u0005\\\u0000\u0000\u1a00\u1a01\u0005\u0151\u0000\u0000\u1a01\u1a04"+
		"\u0003\u00fe\u007f\u0000\u1a02\u1a04\u0003\u0290\u0148\u0000\u1a03\u19f4"+
		"\u0001\u0000\u0000\u0000\u1a03\u19f9\u0001\u0000\u0000\u0000\u1a03\u19fc"+
		"\u0001\u0000\u0000\u0000\u1a03\u19ff\u0001\u0000\u0000\u0000\u1a03\u1a02"+
		"\u0001\u0000\u0000\u0000\u1a04\u0391\u0001\u0000\u0000\u0000\u1a05\u1a07"+
		"\u0003\u0394\u01ca\u0000\u1a06\u1a05\u0001\u0000\u0000\u0000\u1a07\u1a08"+
		"\u0001\u0000\u0000\u0000\u1a08\u1a06\u0001\u0000\u0000\u0000\u1a08\u1a09"+
		"\u0001\u0000\u0000\u0000\u1a09\u0393\u0001\u0000\u0000\u0000\u1a0a\u1a0c"+
		"\u0003\u0304\u0182\u0000\u1a0b\u1a0d\u0005\u0018\u0000\u0000\u1a0c\u1a0b"+
		"\u0001\u0000\u0000\u0000\u1a0c\u1a0d\u0001\u0000\u0000\u0000\u1a0d\u1a0e"+
		"\u0001\u0000\u0000\u0000\u1a0e\u1a0f\u0003\u0230\u0118\u0000\u1a0f\u1a1d"+
		"\u0001\u0000\u0000\u0000\u1a10\u1a12\u0003\u0304\u0182\u0000\u1a11\u1a13"+
		"\u0005\u0018\u0000\u0000\u1a12\u1a11\u0001\u0000\u0000\u0000\u1a12\u1a13"+
		"\u0001\u0000\u0000\u0000\u1a13\u1a14\u0001\u0000\u0000\u0000\u1a14\u1a15"+
		"\u0003\u0232\u0119\u0000\u1a15\u1a1d\u0001\u0000\u0000\u0000\u1a16\u1a18"+
		"\u0003\u0304\u0182\u0000\u1a17\u1a19\u0005\u0018\u0000\u0000\u1a18\u1a17"+
		"\u0001\u0000\u0000\u0000\u1a18\u1a19\u0001\u0000\u0000\u0000\u1a19\u1a1a"+
		"\u0001\u0000\u0000\u0000\u1a1a\u1a1b\u0005\u00b5\u0000\u0000\u1a1b\u1a1d"+
		"\u0001\u0000\u0000\u0000\u1a1c\u1a0a\u0001\u0000\u0000\u0000\u1a1c\u1a10"+
		"\u0001\u0000\u0000\u0000\u1a1c\u1a16\u0001\u0000\u0000\u0000\u1a1d\u0395"+
		"\u0001\u0000\u0000\u0000\u1a1e\u1a23\u0003\u0398\u01cc\u0000\u1a1f\u1a20"+
		"\u0005&\u0000\u0000\u1a20\u1a22\u0003\u0398\u01cc\u0000\u1a21\u1a1f\u0001"+
		"\u0000\u0000\u0000\u1a22\u1a25\u0001\u0000\u0000\u0000\u1a23\u1a21\u0001"+
		"\u0000\u0000\u0000\u1a23\u1a24\u0001\u0000\u0000\u0000\u1a24\u0397\u0001"+
		"\u0000\u0000\u0000\u1a25\u1a23\u0001\u0000\u0000\u0000\u1a26\u1a28\u0005"+
		"[\u0000\u0000\u1a27\u1a29\u0005^\u0000\u0000\u1a28\u1a27\u0001\u0000\u0000"+
		"\u0000\u1a28\u1a29\u0001\u0000\u0000\u0000\u1a29\u1a2b\u0001\u0000\u0000"+
		"\u0000\u1a2a\u1a2c\u0003\u02b0\u0158\u0000\u1a2b\u1a2a\u0001\u0000\u0000"+
		"\u0000\u1a2b\u1a2c\u0001\u0000\u0000\u0000\u1a2c\u1a2d\u0001\u0000\u0000"+
		"\u0000\u1a2d\u1b37\u0003\u0248\u0124\u0000\u1a2e\u1a30\u0005U\u0000\u0000"+
		"\u1a2f\u1a31\u0005^\u0000\u0000\u1a30\u1a2f\u0001\u0000\u0000\u0000\u1a30"+
		"\u1a31\u0001\u0000\u0000\u0000\u1a31\u1a32\u0001\u0000\u0000\u0000\u1a32"+
		"\u1a33\u0003\u016a\u00b5\u0000\u1a33\u1a34\u0003\u03ac\u01d6\u0000\u1a34"+
		"\u1b37\u0001\u0000\u0000\u0000\u1a35\u1a37\u0005U\u0000\u0000\u1a36\u1a38"+
		"\u0005^\u0000\u0000\u1a37\u1a36\u0001\u0000\u0000\u0000\u1a37\u1a38\u0001"+
		"\u0000\u0000\u0000\u1a38\u1a39\u0001\u0000\u0000\u0000\u1a39\u1a3a\u0003"+
		"\u016a\u00b5\u0000\u1a3a\u1a3b\u0005V\u0000\u0000\u1a3b\u1a3c\u0005\u008b"+
		"\u0000\u0000\u1a3c\u1a3d\u0005\u008c\u0000\u0000\u1a3d\u1b37\u0001\u0000"+
		"\u0000\u0000\u1a3e\u1a40\u0005U\u0000\u0000\u1a3f\u1a41\u0005^\u0000\u0000"+
		"\u1a40\u1a3f\u0001\u0000\u0000\u0000\u1a40\u1a41\u0001\u0000\u0000\u0000"+
		"\u1a41\u1a42\u0001\u0000\u0000\u0000\u1a42\u1a43\u0003\u016a\u00b5\u0000"+
		"\u1a43\u1a44\u0005\\\u0000\u0000\u1a44\u1a45\u0005\u008b\u0000\u0000\u1a45"+
		"\u1a46\u0005\u008c\u0000\u0000\u1a46\u1b37\u0001\u0000\u0000\u0000\u1a47"+
		"\u1a49\u0005U\u0000\u0000\u1a48\u1a4a\u0005^\u0000\u0000\u1a49\u1a48\u0001"+
		"\u0000\u0000\u0000\u1a49\u1a4a\u0001\u0000\u0000\u0000\u1a4a\u1a4b\u0001"+
		"\u0000\u0000\u0000\u1a4b\u1a4c\u0003\u016a\u00b5\u0000\u1a4c\u1a4d\u0005"+
		"\\\u0000\u0000\u1a4d\u1a4e\u0005\u014f\u0000\u0000\u1a4e\u1a4f\u0003\u0230"+
		"\u0118\u0000\u1a4f\u1b37\u0001\u0000\u0000\u0000\u1a50\u1a52\u0005U\u0000"+
		"\u0000\u1a51\u1a53\u0005^\u0000\u0000\u1a52\u1a51\u0001\u0000\u0000\u0000"+
		"\u1a52\u1a53\u0001\u0000\u0000\u0000\u1a53\u1a54\u0001\u0000\u0000\u0000"+
		"\u1a54\u1a55\u0005\u0255\u0000\u0000\u1a55\u1a56\u0005\\\u0000\u0000\u1a56"+
		"\u1a57\u0005\u014f\u0000\u0000\u1a57\u1b37\u0003\u0230\u0118\u0000\u1a58"+
		"\u1a5a\u0005U\u0000\u0000\u1a59\u1a5b\u0005^\u0000\u0000\u1a5a\u1a59\u0001"+
		"\u0000\u0000\u0000\u1a5a\u1a5b\u0001\u0000\u0000\u0000\u1a5b\u1a5c\u0001"+
		"\u0000\u0000\u0000\u1a5c\u1a5d\u0003\u016a\u00b5\u0000\u1a5d\u1a5e\u0005"+
		"\\\u0000\u0000\u1a5e\u1a5f\u0003\u021a\u010d\u0000\u1a5f\u1b37\u0001\u0000"+
		"\u0000\u0000\u1a60\u1a62\u0005U\u0000\u0000\u1a61\u1a63\u0005^\u0000\u0000"+
		"\u1a62\u1a61\u0001\u0000\u0000\u0000\u1a62\u1a63\u0001\u0000\u0000\u0000"+
		"\u1a63\u1a64\u0001\u0000\u0000\u0000\u1a64\u1a65\u0003\u016a\u00b5\u0000"+
		"\u1a65\u1a66\u0005\u0143\u0000\u0000\u1a66\u1a67\u0003\u021a\u010d\u0000"+
		"\u1a67\u1b37\u0001\u0000\u0000\u0000\u1a68\u1a6a\u0005U\u0000\u0000\u1a69"+
		"\u1a6b\u0005^\u0000\u0000\u1a6a\u1a69\u0001\u0000\u0000\u0000\u1a6a\u1a6b"+
		"\u0001\u0000\u0000\u0000\u1a6b\u1a6c\u0001\u0000\u0000\u0000\u1a6c\u1a6d"+
		"\u0003\u016a\u00b5\u0000\u1a6d\u1a6e\u0005\\\u0000\u0000\u1a6e\u1a6f\u0005"+
		"\u0150\u0000\u0000\u1a6f\u1a70\u0003\u016a\u00b5\u0000\u1a70\u1b37\u0001"+
		"\u0000\u0000\u0000\u1a71\u1a73\u0005U\u0000\u0000\u1a72\u1a74\u0005^\u0000"+
		"\u0000\u1a73\u1a72\u0001\u0000\u0000\u0000\u1a73\u1a74\u0001\u0000\u0000"+
		"\u0000\u1a74\u1a75\u0001\u0000\u0000\u0000\u1a75\u1a76\u0003\u016a\u00b5"+
		"\u0000\u1a76\u1a77\u0005[\u0000\u0000\u1a77\u1a78\u0005\u00fc\u0000\u0000"+
		"\u1a78\u1a79\u0003\u025e\u012f\u0000\u1a79\u1a7a\u0005\u0081\u0000\u0000"+
		"\u1a7a\u1a7c\u0005\u0125\u0000\u0000\u1a7b\u1a7d\u0003\u0252\u0129\u0000"+
		"\u1a7c\u1a7b\u0001\u0000\u0000\u0000\u1a7c\u1a7d\u0001\u0000\u0000\u0000"+
		"\u1a7d\u1b37\u0001\u0000\u0000\u0000\u1a7e\u1a80\u0005U\u0000\u0000\u1a7f"+
		"\u1a81\u0005^\u0000\u0000\u1a80\u1a7f\u0001\u0000\u0000\u0000\u1a80\u1a81"+
		"\u0001\u0000\u0000\u0000\u1a81\u1a82\u0001\u0000\u0000\u0000\u1a82\u1a83"+
		"\u0003\u016a\u00b5\u0000\u1a83\u1a84\u0003\u03a8\u01d4\u0000\u1a84\u1b37"+
		"\u0001\u0000\u0000\u0000\u1a85\u1a87\u0005U\u0000\u0000\u1a86\u1a88\u0005"+
		"^\u0000\u0000\u1a87\u1a86\u0001\u0000\u0000\u0000\u1a87\u1a88\u0001\u0000"+
		"\u0000\u0000\u1a88\u1a89\u0001\u0000\u0000\u0000\u1a89\u1a8a\u0003\u016a"+
		"\u00b5\u0000\u1a8a\u1a8b\u0005V\u0000\u0000\u1a8b\u1a8c\u0005\u0125\u0000"+
		"\u0000\u1a8c\u1b37\u0001\u0000\u0000\u0000\u1a8d\u1a8f\u0005U\u0000\u0000"+
		"\u1a8e\u1a90\u0005^\u0000\u0000\u1a8f\u1a8e\u0001\u0000\u0000\u0000\u1a8f"+
		"\u1a90\u0001\u0000\u0000\u0000\u1a90\u1a91\u0001\u0000\u0000\u0000\u1a91"+
		"\u1a92\u0003\u016a\u00b5\u0000\u1a92\u1a93\u0005V\u0000\u0000\u1a93\u1a94"+
		"\u0005\u0125\u0000\u0000\u1a94\u1a95\u0003\u02b2\u0159\u0000\u1a95\u1b37"+
		"\u0001\u0000\u0000\u0000\u1a96\u1a98\u0005V\u0000\u0000\u1a97\u1a99\u0005"+
		"^\u0000\u0000\u1a98\u1a97\u0001\u0000\u0000\u0000\u1a98\u1a99\u0001\u0000"+
		"\u0000\u0000\u1a99\u1a9a\u0001\u0000\u0000\u0000\u1a9a\u1a9b\u0003\u02b2"+
		"\u0159\u0000\u1a9b\u1a9d\u0003\u016a\u00b5\u0000\u1a9c\u1a9e\u0003\u02c0"+
		"\u0160\u0000\u1a9d\u1a9c\u0001\u0000\u0000\u0000\u1a9d\u1a9e\u0001\u0000"+
		"\u0000\u0000\u1a9e\u1b37\u0001\u0000\u0000\u0000\u1a9f\u1aa1\u0005V\u0000"+
		"\u0000\u1aa0\u1aa2\u0005^\u0000\u0000\u1aa1\u1aa0\u0001\u0000\u0000\u0000"+
		"\u1aa1\u1aa2\u0001\u0000\u0000\u0000\u1aa2\u1aa3\u0001\u0000\u0000\u0000"+
		"\u1aa3\u1aa5\u0003\u016a\u00b5\u0000\u1aa4\u1aa6\u0003\u02c0\u0160\u0000"+
		"\u1aa5\u1aa4\u0001\u0000\u0000\u0000\u1aa5\u1aa6\u0001\u0000\u0000\u0000"+
		"\u1aa6\u1b37\u0001\u0000\u0000\u0000\u1aa7\u1aa9\u0005U\u0000\u0000\u1aa8"+
		"\u1aaa\u0005^\u0000\u0000\u1aa9\u1aa8\u0001\u0000\u0000\u0000\u1aa9\u1aaa"+
		"\u0001\u0000\u0000\u0000\u1aaa\u1aab\u0001\u0000\u0000\u0000\u1aab\u1aad"+
		"\u0003\u016a\u00b5\u0000\u1aac\u1aae\u0003\u03a6\u01d3\u0000\u1aad\u1aac"+
		"\u0001\u0000\u0000\u0000\u1aad\u1aae\u0001\u0000\u0000\u0000\u1aae\u1aaf"+
		"\u0001\u0000\u0000\u0000\u1aaf\u1ab0\u0005\u00cb\u0000\u0000\u1ab0\u1ab2"+
		"\u0003\u018a\u00c5\u0000\u1ab1\u1ab3\u0003\u01ea\u00f5\u0000\u1ab2\u1ab1"+
		"\u0001\u0000\u0000\u0000\u1ab2\u1ab3\u0001\u0000\u0000\u0000\u1ab3\u1ab5"+
		"\u0001\u0000\u0000\u0000\u1ab4\u1ab6\u0003\u03a4\u01d2\u0000\u1ab5\u1ab4"+
		"\u0001\u0000\u0000\u0000\u1ab5\u1ab6\u0001\u0000\u0000\u0000\u1ab6\u1b37"+
		"\u0001\u0000\u0000\u0000\u1ab7\u1ab9\u0005U\u0000\u0000\u1ab8\u1aba\u0005"+
		"^\u0000\u0000\u1ab9\u1ab8\u0001\u0000\u0000\u0000\u1ab9\u1aba\u0001\u0000"+
		"\u0000\u0000\u1aba\u1abb\u0001\u0000\u0000\u0000\u1abb\u1abc\u0003\u016a"+
		"\u00b5\u0000\u1abc\u1abd\u0003\u039e\u01cf\u0000\u1abd\u1b37\u0001\u0000"+
		"\u0000\u0000\u1abe\u1abf\u0005[\u0000\u0000\u1abf\u1ac2\u0003\u0334\u019a"+
		"\u0000\u1ac0\u1ac1\u0005\u008b\u0000\u0000\u1ac1\u1ac3\u0005\u0157\u0000"+
		"\u0000\u1ac2\u1ac0\u0001\u0000\u0000\u0000\u1ac2\u1ac3\u0001\u0000\u0000"+
		"\u0000\u1ac3\u1b37\u0001\u0000\u0000\u0000\u1ac4\u1ac5\u0005U\u0000\u0000"+
		"\u1ac5\u1ac6\u0005`\u0000\u0000\u1ac6\u1ac7\u0003\u00fe\u007f\u0000\u1ac7"+
		"\u1ac8\u0003\u039a\u01cd\u0000\u1ac8\u1b37\u0001\u0000\u0000\u0000\u1ac9"+
		"\u1aca\u0005\u0158\u0000\u0000\u1aca\u1acb\u0005`\u0000\u0000\u1acb\u1b37"+
		"\u0003\u00fe\u007f\u0000\u1acc\u1acd\u0005V\u0000\u0000\u1acd\u1ace\u0005"+
		"`\u0000\u0000\u1ace\u1acf\u0003\u02b2\u0159\u0000\u1acf\u1ad1\u0003\u00fe"+
		"\u007f\u0000\u1ad0\u1ad2\u0003\u02c0\u0160\u0000\u1ad1\u1ad0\u0001\u0000"+
		"\u0000\u0000\u1ad1\u1ad2\u0001\u0000\u0000\u0000\u1ad2\u1b37\u0001\u0000"+
		"\u0000\u0000\u1ad3\u1ad4\u0005V\u0000\u0000\u1ad4\u1ad5\u0005`\u0000\u0000"+
		"\u1ad5\u1ad7\u0003\u00fe\u007f\u0000\u1ad6\u1ad8\u0003\u02c0\u0160\u0000"+
		"\u1ad7\u1ad6\u0001\u0000\u0000\u0000\u1ad7\u1ad8\u0001\u0000\u0000\u0000"+
		"\u1ad8\u1b37\u0001\u0000\u0000\u0000\u1ad9\u1ada\u0005\\\u0000\u0000\u1ada"+
		"\u1adb\u0005\u015a\u0000\u0000\u1adb\u1b37\u0005\u0138\u0000\u0000\u1adc"+
		"\u1add\u0005\u010c\u0000\u0000\u1add\u1ade\u0005\u0082\u0000\u0000\u1ade"+
		"\u1b37\u0003\u00fe\u007f\u0000\u1adf\u1ae0\u0005\\\u0000\u0000\u1ae0\u1ae1"+
		"\u0005\u015a\u0000\u0000\u1ae1\u1b37\u0005\u010c\u0000\u0000\u1ae2\u1ae3"+
		"\u0005\\\u0000\u0000\u1ae3\u1b37\u0005\u0131\u0000\u0000\u1ae4\u1ae5\u0005"+
		"\\\u0000\u0000\u1ae5\u1b37\u0005\u0155\u0000\u0000\u1ae6\u1ae7\u0005\u00b7"+
		"\u0000\u0000\u1ae7\u1ae8\u0005h\u0000\u0000\u1ae8\u1b37\u0003\u00fe\u007f"+
		"\u0000\u1ae9\u1aea\u0005\u00b7\u0000\u0000\u1aea\u1aeb\u0005\u00f9\u0000"+
		"\u0000\u1aeb\u1aec\u0005h\u0000\u0000\u1aec\u1b37\u0003\u00fe\u007f\u0000"+
		"\u1aed\u1aee\u0005\u00b7\u0000\u0000\u1aee\u1aef\u0005\u0142\u0000\u0000"+
		"\u1aef\u1af0\u0005h\u0000\u0000\u1af0\u1b37\u0003\u00fe\u007f\u0000\u1af1"+
		"\u1af2\u0005\u00b7\u0000\u0000\u1af2\u1af3\u0005h\u0000\u0000\u1af3\u1b37"+
		"\u0005\u0092\u0000\u0000\u1af4\u1af5\u0005\u00b7\u0000\u0000\u1af5\u1af6"+
		"\u0005h\u0000\u0000\u1af6\u1b37\u0005\u0108\u0000\u0000\u1af7\u1af8\u0005"+
		"\u00b8\u0000\u0000\u1af8\u1af9\u0005h\u0000\u0000\u1af9\u1b37\u0003\u00fe"+
		"\u007f\u0000\u1afa\u1afb\u0005\u00b8\u0000\u0000\u1afb\u1afc\u0005h\u0000"+
		"\u0000\u1afc\u1b37\u0005\u0092\u0000\u0000\u1afd\u1afe\u0005\u00b8\u0000"+
		"\u0000\u1afe\u1aff\u0005h\u0000\u0000\u1aff\u1b37\u0005\u0108\u0000\u0000"+
		"\u1b00\u1b01\u0005\u00b7\u0000\u0000\u1b01\u1b02\u0005\u0148\u0000\u0000"+
		"\u1b02\u1b37\u0003\u00fe\u007f\u0000\u1b03\u1b04\u0005\u00b7\u0000\u0000"+
		"\u1b04\u1b05\u0005\u00f9\u0000\u0000\u1b05\u1b06\u0005\u0148\u0000\u0000"+
		"\u1b06\u1b37\u0003\u00fe\u007f\u0000\u1b07\u1b08\u0005\u00b7\u0000\u0000"+
		"\u1b08\u1b09\u0005\u0142\u0000\u0000\u1b09\u1b0a\u0005\u0148\u0000\u0000"+
		"\u1b0a\u1b37\u0003\u00fe\u007f\u0000\u1b0b\u1b0c\u0005\u00b8\u0000\u0000"+
		"\u1b0c\u1b0d\u0005\u0148\u0000\u0000\u1b0d\u1b37\u0003\u00fe\u007f\u0000"+
		"\u1b0e\u1b0f\u0005\u012a\u0000\u0000\u1b0f\u1b37\u0003\u0168\u00b4\u0000"+
		"\u1b10\u1b11\u0005\u00ff\u0000\u0000\u1b11\u1b12\u0005\u012a\u0000\u0000"+
		"\u1b12\u1b37\u0003\u0168\u00b4\u0000\u1b13\u1b14\u0005\u015c\u0000\u0000"+
		"\u1b14\u1b37\u0003\u01ec\u00f6\u0000\u1b15\u1b16\u0005\u008b\u0000\u0000"+
		"\u1b16\u1b37\u0005\u015c\u0000\u0000\u1b17\u1b18\u0005\u013c\u0000\u0000"+
		"\u1b18\u1b19\u0005\u0087\u0000\u0000\u1b19\u1b37\u0003\u023a\u011d\u0000"+
		"\u1b1a\u1b1b\u0005\\\u0000\u0000\u1b1b\u1b1c\u0005\u0151\u0000\u0000\u1b1c"+
		"\u1b37\u0003\u00fe\u007f\u0000\u1b1d\u1b1e\u0005\\\u0000\u0000\u1b1e\u1b37"+
		"\u0003\u021a\u010d\u0000\u1b1f\u1b20\u0005\u0143\u0000\u0000\u1b20\u1b37"+
		"\u0003\u021a\u010d\u0000\u1b21\u1b22\u0005\u0142\u0000\u0000\u1b22\u1b23"+
		"\u0005\u0125\u0000\u0000\u1b23\u1b37\u0003\u0280\u0140\u0000\u1b24\u1b25"+
		"\u0005\u00b7\u0000\u0000\u1b25\u1b26\u0005\u00f7\u0000\u0000\u1b26\u1b27"+
		"\u0005\u00fe\u0000\u0000\u1b27\u1b37\u0005\u0149\u0000\u0000\u1b28\u1b29"+
		"\u0005\u00b8\u0000\u0000\u1b29\u1b2a\u0005\u00f7\u0000\u0000\u1b2a\u1b2b"+
		"\u0005\u00fe\u0000\u0000\u1b2b\u1b37\u0005\u0149\u0000\u0000\u1b2c\u1b2d"+
		"\u0005\u0123\u0000\u0000\u1b2d\u1b2e\u0005\u00f7\u0000\u0000\u1b2e\u1b2f"+
		"\u0005\u00fe\u0000\u0000\u1b2f\u1b37\u0005\u0149\u0000\u0000\u1b30\u1b31"+
		"\u0005\u00ff\u0000\u0000\u1b31\u1b32\u0005\u0123\u0000\u0000\u1b32\u1b33"+
		"\u0005\u00f7\u0000\u0000\u1b33\u1b34\u0005\u00fe\u0000\u0000\u1b34\u1b37"+
		"\u0005\u0149\u0000\u0000\u1b35\u1b37\u0003\u039e\u01cf\u0000\u1b36\u1a26"+
		"\u0001\u0000\u0000\u0000\u1b36\u1a2e\u0001\u0000\u0000\u0000\u1b36\u1a35"+
		"\u0001\u0000\u0000\u0000\u1b36\u1a3e\u0001\u0000\u0000\u0000\u1b36\u1a47"+
		"\u0001\u0000\u0000\u0000\u1b36\u1a50\u0001\u0000\u0000\u0000\u1b36\u1a58"+
		"\u0001\u0000\u0000\u0000\u1b36\u1a60\u0001\u0000\u0000\u0000\u1b36\u1a68"+
		"\u0001\u0000\u0000\u0000\u1b36\u1a71\u0001\u0000\u0000\u0000\u1b36\u1a7e"+
		"\u0001\u0000\u0000\u0000\u1b36\u1a85\u0001\u0000\u0000\u0000\u1b36\u1a8d"+
		"\u0001\u0000\u0000\u0000\u1b36\u1a96\u0001\u0000\u0000\u0000\u1b36\u1a9f"+
		"\u0001\u0000\u0000\u0000\u1b36\u1aa7\u0001\u0000\u0000\u0000\u1b36\u1ab7"+
		"\u0001\u0000\u0000\u0000\u1b36\u1abe\u0001\u0000\u0000\u0000\u1b36\u1ac4"+
		"\u0001\u0000\u0000\u0000\u1b36\u1ac9\u0001\u0000\u0000\u0000\u1b36\u1acc"+
		"\u0001\u0000\u0000\u0000\u1b36\u1ad3\u0001\u0000\u0000\u0000\u1b36\u1ad9"+
		"\u0001\u0000\u0000\u0000\u1b36\u1adc\u0001\u0000\u0000\u0000\u1b36\u1adf"+
		"\u0001\u0000\u0000\u0000\u1b36\u1ae2\u0001\u0000\u0000\u0000\u1b36\u1ae4"+
		"\u0001\u0000\u0000\u0000\u1b36\u1ae6\u0001\u0000\u0000\u0000\u1b36\u1ae9"+
		"\u0001\u0000\u0000\u0000\u1b36\u1aed\u0001\u0000\u0000\u0000\u1b36\u1af1"+
		"\u0001\u0000\u0000\u0000\u1b36\u1af4\u0001\u0000\u0000\u0000\u1b36\u1af7"+
		"\u0001\u0000\u0000\u0000\u1b36\u1afa\u0001\u0000\u0000\u0000\u1b36\u1afd"+
		"\u0001\u0000\u0000\u0000\u1b36\u1b00\u0001\u0000\u0000\u0000\u1b36\u1b03"+
		"\u0001\u0000\u0000\u0000\u1b36\u1b07\u0001\u0000\u0000\u0000\u1b36\u1b0b"+
		"\u0001\u0000\u0000\u0000\u1b36\u1b0e\u0001\u0000\u0000\u0000\u1b36\u1b10"+
		"\u0001\u0000\u0000\u0000\u1b36\u1b13\u0001\u0000\u0000\u0000\u1b36\u1b15"+
		"\u0001\u0000\u0000\u0000\u1b36\u1b17\u0001\u0000\u0000\u0000\u1b36\u1b1a"+
		"\u0001\u0000\u0000\u0000\u1b36\u1b1d\u0001\u0000\u0000\u0000\u1b36\u1b1f"+
		"\u0001\u0000\u0000\u0000\u1b36\u1b21\u0001\u0000\u0000\u0000\u1b36\u1b24"+
		"\u0001\u0000\u0000\u0000\u1b36\u1b28\u0001\u0000\u0000\u0000\u1b36\u1b2c"+
		"\u0001\u0000\u0000\u0000\u1b36\u1b30\u0001\u0000\u0000\u0000\u1b36\u1b35"+
		"\u0001\u0000\u0000\u0000\u1b37\u0399\u0001\u0000\u0000\u0000\u1b38\u1b3a"+
		"\u0003\u039c\u01ce\u0000\u1b39\u1b38\u0001\u0000\u0000\u0000\u1b3a\u1b3d"+
		"\u0001\u0000\u0000\u0000\u1b3b\u1b39\u0001\u0000\u0000\u0000\u1b3b\u1b3c"+
		"\u0001\u0000\u0000\u0000\u1b3c\u039b\u0001\u0000\u0000\u0000\u1b3d\u1b3b"+
		"\u0001\u0000\u0000\u0000\u1b3e\u1b3f\u0005\u008b\u0000\u0000\u1b3f\u1b4a"+
		"\u0005\u0116\u0000\u0000\u1b40\u1b4a\u0005\u0116\u0000\u0000\u1b41\u1b42"+
		"\u0005\u012c\u0000\u0000\u1b42\u1b4a\u0005\u0126\u0000\u0000\u1b43\u1b44"+
		"\u0005\u012c\u0000\u0000\u1b44\u1b4a\u0005\u0117\u0000\u0000\u1b45\u1b46"+
		"\u0005\u008b\u0000\u0000\u1b46\u1b4a\u0005\u0157\u0000\u0000\u1b47\u1b48"+
		"\u0005\u00ff\u0000\u0000\u1b48\u1b4a\u0005\u012a\u0000\u0000\u1b49\u1b3e"+
		"\u0001\u0000\u0000\u0000\u1b49\u1b40\u0001\u0000\u0000\u0000\u1b49\u1b41"+
		"\u0001\u0000\u0000\u0000\u1b49\u1b43\u0001\u0000\u0000\u0000\u1b49\u1b45"+
		"\u0001\u0000\u0000\u0000\u1b49\u1b47\u0001\u0000\u0000\u0000\u1b4a\u039d"+
		"\u0001\u0000\u0000\u0000\u1b4b\u1b4c\u0005\u0213\u0000\u0000\u1b4c\u1b4d"+
		"\u0005 \u0000\u0000\u1b4d\u1b4e\u0003\u03a0\u01d0\u0000\u1b4e\u1b4f\u0005"+
		"!\u0000\u0000\u1b4f\u039f\u0001\u0000\u0000\u0000\u1b50\u1b55\u0003\u03a2"+
		"\u01d1\u0000\u1b51\u1b52\u0005&\u0000\u0000\u1b52\u1b54\u0003\u03a2\u01d1"+
		"\u0000\u1b53\u1b51\u0001\u0000\u0000\u0000\u1b54\u1b57\u0001\u0000\u0000"+
		"\u0000\u1b55\u1b53\u0001\u0000\u0000\u0000\u1b55\u1b56\u0001\u0000\u0000"+
		"\u0000\u1b56\u03a1\u0001\u0000\u0000\u0000\u1b57\u1b55\u0001\u0000\u0000"+
		"\u0000\u1b58\u1b60\u0003\u027a\u013d\u0000\u1b59\u1b5a\u0005\\\u0000\u0000"+
		"\u1b5a\u1b60\u0003\u027a\u013d\u0000\u1b5b\u1b5c\u0005[\u0000\u0000\u1b5c"+
		"\u1b60\u0003\u027a\u013d\u0000\u1b5d\u1b5e\u0005V\u0000\u0000\u1b5e\u1b60"+
		"\u0003\u027e\u013f\u0000\u1b5f\u1b58\u0001\u0000\u0000\u0000\u1b5f\u1b59"+
		"\u0001\u0000\u0000\u0000\u1b5f\u1b5b\u0001\u0000\u0000\u0000\u1b5f\u1b5d"+
		"\u0001\u0000\u0000\u0000\u1b60\u03a3\u0001\u0000\u0000\u0000\u1b61\u1b62"+
		"\u0005\u007f\u0000\u0000\u1b62\u1b63\u0003\u011a\u008d\u0000\u1b63\u03a5"+
		"\u0001\u0000\u0000\u0000\u1b64\u1b65\u0005\\\u0000\u0000\u1b65\u1b66\u0005"+
		"\u0113\u0000\u0000\u1b66\u03a7\u0001\u0000\u0000\u0000\u1b67\u1b69\u0003"+
		"\u03aa\u01d5\u0000\u1b68\u1b67\u0001\u0000\u0000\u0000\u1b69\u1b6a\u0001"+
		"\u0000\u0000\u0000\u1b6a\u1b68\u0001\u0000\u0000\u0000\u1b6a\u1b6b\u0001"+
		"\u0000\u0000\u0000\u1b6b\u03a9\u0001\u0000\u0000\u0000\u1b6c\u1b78\u0005"+
		"\u0144\u0000\u0000\u1b6d\u1b6f\u0005\u0144\u0000\u0000\u1b6e\u1b70\u0005"+
		"m\u0000\u0000\u1b6f\u1b6e\u0001\u0000\u0000\u0000\u1b6f\u1b70\u0001\u0000"+
		"\u0000\u0000\u1b70\u1b71\u0001\u0000\u0000\u0000\u1b71\u1b78\u0003\u0244"+
		"\u0122\u0000\u1b72\u1b73\u0005\\\u0000\u0000\u1b73\u1b78\u0003\u0256\u012b"+
		"\u0000\u1b74\u1b75\u0005\\\u0000\u0000\u1b75\u1b76\u0005\u00fc\u0000\u0000"+
		"\u1b76\u1b78\u0003\u025e\u012f\u0000\u1b77\u1b6c\u0001\u0000\u0000\u0000"+
		"\u1b77\u1b6d\u0001\u0000\u0000\u0000\u1b77\u1b72\u0001\u0000\u0000\u0000"+
		"\u1b77\u1b74\u0001\u0000\u0000\u0000\u1b78\u03ab\u0001\u0000\u0000\u0000"+
		"\u1b79\u1b7a\u0005\\\u0000\u0000\u1b7a\u1b7b\u0005\u00b5\u0000\u0000\u1b7b"+
		"\u1b7f\u0003\u011a\u008d\u0000\u1b7c\u1b7d\u0005V\u0000\u0000\u1b7d\u1b7f"+
		"\u0005\u00b5\u0000\u0000\u1b7e\u1b79\u0001\u0000\u0000\u0000\u1b7e\u1b7c"+
		"\u0001\u0000\u0000\u0000\u1b7f\u03ad\u0001\u0000\u0000\u0000\u1b80\u1b81"+
		"\u0005U\u0000\u0000\u1b81\u1b82\u0005\u01a2\u0000\u0000\u1b82\u1b83\u0003"+
		"\u03be\u01df\u0000\u1b83\u03af\u0001\u0000\u0000\u0000\u1b84\u1b85\u0005"+
		"U\u0000\u0000\u1b85\u1b86\u0005\u01a2\u0000\u0000\u1b86\u1b87\u0005\u01d4"+
		"\u0000\u0000\u1b87\u1b88\u0003\u01ec\u00f6\u0000\u1b88\u1b89\u0005\u007f"+
		"\u0000\u0000\u1b89\u1b8a\u0003\u00fe\u007f\u0000\u1b8a\u1b8b\u0003\u03b2"+
		"\u01d9\u0000\u1b8b\u03b1\u0001\u0000\u0000\u0000\u1b8c\u1b8d\u0005\u0141"+
		"\u0000\u0000\u1b8d\u1b8e\u0005\u0087\u0000\u0000\u1b8e\u1b96\u0003\u00fe"+
		"\u007f\u0000\u1b8f\u1b90\u0005\\\u0000\u0000\u1b90\u1b91\u0005X\u0000"+
		"\u0000\u1b91\u1b96\u0003\u00fe\u007f\u0000\u1b92\u1b93\u0005\u013c\u0000"+
		"\u0000\u1b93\u1b94\u0005\u0087\u0000\u0000\u1b94\u1b96\u0003\u023a\u011d"+
		"\u0000\u1b95\u1b8c\u0001\u0000\u0000\u0000\u1b95\u1b8f\u0001\u0000\u0000"+
		"\u0000\u1b95\u1b92\u0001\u0000\u0000\u0000\u1b96\u03b3\u0001\u0000\u0000"+
		"\u0000\u1b97\u1b98\u0005U\u0000\u0000\u1b98\u1b99\u0005\u01a2\u0000\u0000"+
		"\u1b99\u1b9a\u0005\u01ee\u0000\u0000\u1b9a\u1b9b\u0003\u01ec\u00f6\u0000"+
		"\u1b9b\u1b9c\u0005\u007f\u0000\u0000\u1b9c\u1b9d\u0003\u00fe\u007f\u0000"+
		"\u1b9d\u1b9e\u0003\u03b6\u01db\u0000\u1b9e\u03b5\u0001\u0000\u0000\u0000"+
		"\u1b9f\u1ba0\u0007/\u0000\u0000\u1ba0\u1ba3\u0003\u03b8\u01dc\u0000\u1ba1"+
		"\u1ba3\u0003\u03b2\u01d9\u0000\u1ba2\u1b9f\u0001\u0000\u0000\u0000\u1ba2"+
		"\u1ba1\u0001\u0000\u0000\u0000\u1ba3\u03b7\u0001\u0000\u0000\u0000\u1ba4"+
		"\u1ba9\u0003\u03ba\u01dd\u0000\u1ba5\u1ba6\u0005&\u0000\u0000\u1ba6\u1ba8"+
		"\u0003\u03ba\u01dd\u0000\u1ba7\u1ba5\u0001\u0000\u0000\u0000\u1ba8\u1bab"+
		"\u0001\u0000\u0000\u0000\u1ba9\u1ba7\u0001\u0000\u0000\u0000\u1ba9\u1baa"+
		"\u0001\u0000\u0000\u0000\u1baa\u03b9\u0001\u0000\u0000\u0000\u1bab\u1ba9"+
		"\u0001\u0000\u0000\u0000\u1bac\u1bad\u0005\u01a2\u0000\u0000\u1bad\u1bae"+
		"\u0005\u0255\u0000\u0000\u1bae\u1bb0\u0003\u0148\u00a4\u0000\u1baf\u1bb1"+
		"\u0003\u03bc\u01de\u0000\u1bb0\u1baf\u0001\u0000\u0000\u0000\u1bb0\u1bb1"+
		"\u0001\u0000\u0000\u0000\u1bb1\u1bb3\u0001\u0000\u0000\u0000\u1bb2\u1bb4"+
		"\u0005\u0220\u0000\u0000\u1bb3\u1bb2\u0001\u0000\u0000\u0000\u1bb3\u1bb4"+
		"\u0001\u0000\u0000\u0000\u1bb4\u1bcb\u0001\u0000\u0000\u0000\u1bb5\u1bb6"+
		"\u0005\u01a2\u0000\u0000\u1bb6\u1bb7\u0005\u0255\u0000\u0000\u1bb7\u1bb9"+
		"\u0003\u03c6\u01e3\u0000\u1bb8\u1bba\u0003\u03bc\u01de\u0000\u1bb9\u1bb8"+
		"\u0001\u0000\u0000\u0000\u1bb9\u1bba\u0001\u0000\u0000\u0000\u1bba\u1bbc"+
		"\u0001\u0000\u0000\u0000\u1bbb\u1bbd\u0005\u0220\u0000\u0000\u1bbc\u1bbb"+
		"\u0001\u0000\u0000\u0000\u1bbc\u1bbd\u0001\u0000\u0000\u0000\u1bbd\u1bcb"+
		"\u0001\u0000\u0000\u0000\u1bbe\u1bbf\u0005g\u0000\u0000\u1bbf\u1bc0\u0005"+
		"\u0255\u0000\u0000\u1bc0\u1bcb\u0003\u0408\u0204\u0000\u1bc1\u1bc2\u0005"+
		"g\u0000\u0000\u1bc2\u1bc3\u0005\u0255\u0000\u0000\u1bc3\u1bc4\u0005 \u0000"+
		"\u0000\u1bc4\u1bc5\u0003\u015e\u00af\u0000\u1bc5\u1bc6\u0005!\u0000\u0000"+
		"\u1bc6\u1bc7\u0003\u0408\u0204\u0000\u1bc7\u1bcb\u0001\u0000\u0000\u0000"+
		"\u1bc8\u1bc9\u0005\u0150\u0000\u0000\u1bc9\u1bcb\u0003\u018a\u00c5\u0000"+
		"\u1bca\u1bac\u0001\u0000\u0000\u0000\u1bca\u1bb5\u0001\u0000\u0000\u0000"+
		"\u1bca\u1bbe\u0001\u0000\u0000\u0000\u1bca\u1bc1\u0001\u0000\u0000\u0000"+
		"\u1bca\u1bc8\u0001\u0000\u0000\u0000\u1bcb\u03bb\u0001\u0000\u0000\u0000"+
		"\u1bcc\u1bcd\u0005\u0086\u0000\u0000\u1bcd\u1bd3\u0005\u021e\u0000\u0000"+
		"\u1bce\u1bcf\u0005\u0086\u0000\u0000\u1bcf\u1bd0\u0005\u0095\u0000\u0000"+
		"\u1bd0\u1bd1\u0005\u0097\u0000\u0000\u1bd1\u1bd3\u0003\u01ec\u00f6\u0000"+
		"\u1bd2\u1bcc\u0001\u0000\u0000\u0000\u1bd2\u1bce\u0001\u0000\u0000\u0000"+
		"\u1bd3\u03bd\u0001\u0000\u0000\u0000\u1bd4\u1bd5\u0003\u03c6\u01e3\u0000"+
		"\u1bd5\u1bd6\u0005\\\u0000\u0000\u1bd6\u1bd7\u0005X\u0000\u0000\u1bd7"+
		"\u1bd8\u0003\u00fe\u007f\u0000\u1bd8\u1be5\u0001\u0000\u0000\u0000\u1bd9"+
		"\u1bda\u0003\u03c6\u01e3\u0000\u1bda\u1bdb\u0005\\\u0000\u0000\u1bdb\u1bdc"+
		"\u0005 \u0000\u0000\u1bdc\u1bdd\u0003\u03c0\u01e0\u0000\u1bdd\u1bde\u0005"+
		"!\u0000\u0000\u1bde\u1be5\u0001\u0000\u0000\u0000\u1bdf\u1be0\u0003\u03c6"+
		"\u01e3\u0000\u1be0\u1be1\u0005\u013c\u0000\u0000\u1be1\u1be2\u0005\u0087"+
		"\u0000\u0000\u1be2\u1be3\u0003\u023a\u011d\u0000\u1be3\u1be5\u0001\u0000"+
		"\u0000\u0000\u1be4\u1bd4\u0001\u0000\u0000\u0000\u1be4\u1bd9\u0001\u0000"+
		"\u0000\u0000\u1be4\u1bdf\u0001\u0000\u0000\u0000\u1be5\u03bf\u0001\u0000"+
		"\u0000\u0000\u1be6\u1beb\u0003\u03c2\u01e1\u0000\u1be7\u1be8\u0005&\u0000"+
		"\u0000\u1be8\u1bea\u0003\u03c2\u01e1\u0000\u1be9\u1be7\u0001\u0000\u0000"+
		"\u0000\u1bea\u1bed\u0001\u0000\u0000\u0000\u1beb\u1be9\u0001\u0000\u0000"+
		"\u0000\u1beb\u1bec\u0001\u0000\u0000\u0000\u1bec\u03c1\u0001\u0000\u0000"+
		"\u0000\u1bed\u1beb\u0001\u0000\u0000\u0000\u1bee\u1bef\u0003\u026a\u0135"+
		"\u0000\u1bef\u1bf2\u0005\u0018\u0000\u0000\u1bf0\u1bf3\u0005\u01b9\u0000"+
		"\u0000\u1bf1\u1bf3\u0003\u03c4\u01e2\u0000\u1bf2\u1bf0\u0001\u0000\u0000"+
		"\u0000\u1bf2\u1bf1\u0001\u0000\u0000\u0000\u1bf3\u03c3\u0001\u0000\u0000"+
		"\u0000\u1bf4\u1bfa\u0003\u0222\u0111\u0000\u1bf5\u1bfa\u0003\u00e4r\u0000"+
		"\u1bf6\u1bfa\u0003\u0144\u00a2\u0000\u1bf7\u1bfa\u0003\u0244\u0122\u0000"+
		"\u1bf8\u1bfa\u0005\u0254\u0000\u0000\u1bf9\u1bf4\u0001\u0000\u0000\u0000"+
		"\u1bf9\u1bf5\u0001\u0000\u0000\u0000\u1bf9\u1bf6\u0001\u0000\u0000\u0000"+
		"\u1bf9\u1bf7\u0001\u0000\u0000\u0000\u1bf9\u1bf8\u0001\u0000\u0000\u0000"+
		"\u1bfa\u03c5\u0001\u0000\u0000\u0000\u1bfb\u1bfc\u0003\u0148\u00a4\u0000"+
		"\u1bfc\u1bfd\u0003\u0282\u0141\u0000\u1bfd\u03c7\u0001\u0000\u0000\u0000"+
		"\u1bfe\u1bff\u0005U\u0000\u0000\u1bff\u1c00\u0005\u01c3\u0000\u0000\u1c00"+
		"\u1c01\u0003\u03ca\u01e5\u0000\u1c01\u1c02\u0003\u03d2\u01e9\u0000\u1c02"+
		"\u03c9\u0001\u0000\u0000\u0000\u1c03\u1c04\u0003\u0162\u00b1\u0000\u1c04"+
		"\u1c05\u0003\u03cc\u01e6\u0000\u1c05\u03cb\u0001\u0000\u0000\u0000\u1c06"+
		"\u1c07\u0005 \u0000\u0000\u1c07\u1c08\u0005\u0011\u0000\u0000\u1c08\u1c1b"+
		"\u0005!\u0000\u0000\u1c09\u1c0a\u0005 \u0000\u0000\u1c0a\u1c0b\u0003\u03ce"+
		"\u01e7\u0000\u1c0b\u1c0c\u0005!\u0000\u0000\u1c0c\u1c1b\u0001\u0000\u0000"+
		"\u0000\u1c0d\u1c0e\u0005 \u0000\u0000\u1c0e\u1c0f\u0005\u0095\u0000\u0000"+
		"\u1c0f\u1c10\u0005\u0097\u0000\u0000\u1c10\u1c11\u0003\u03ce\u01e7\u0000"+
		"\u1c11\u1c12\u0005!\u0000\u0000\u1c12\u1c1b\u0001\u0000\u0000\u0000\u1c13"+
		"\u1c14\u0005 \u0000\u0000\u1c14\u1c15\u0003\u03ce\u01e7\u0000\u1c15\u1c16"+
		"\u0005\u0095\u0000\u0000\u1c16\u1c17\u0005\u0097\u0000\u0000\u1c17\u1c18"+
		"\u0003\u03ce\u01e7\u0000\u1c18\u1c19\u0005!\u0000\u0000\u1c19\u1c1b\u0001"+
		"\u0000\u0000\u0000\u1c1a\u1c06\u0001\u0000\u0000\u0000\u1c1a\u1c09\u0001"+
		"\u0000\u0000\u0000\u1c1a\u1c0d\u0001\u0000\u0000\u0000\u1c1a\u1c13\u0001"+
		"\u0000\u0000\u0000\u1c1b\u03cd\u0001\u0000\u0000\u0000\u1c1c\u1c21\u0003"+
		"\u03d0\u01e8\u0000\u1c1d\u1c1e\u0005&\u0000\u0000\u1c1e\u1c20\u0003\u03d0"+
		"\u01e8\u0000\u1c1f\u1c1d\u0001\u0000\u0000\u0000\u1c20\u1c23\u0001\u0000"+
		"\u0000\u0000\u1c21\u1c1f\u0001\u0000\u0000\u0000\u1c21\u1c22\u0001\u0000"+
		"\u0000\u0000\u1c22\u03cf\u0001\u0000\u0000\u0000\u1c23\u1c21\u0001\u0000"+
		"\u0000\u0000\u1c24\u1c25\u0003\u0284\u0142\u0000\u1c25\u03d1\u0001\u0000"+
		"\u0000\u0000\u1c26\u1c27\u0005\u0141\u0000\u0000\u1c27\u1c28\u0005\u0087"+
		"\u0000\u0000\u1c28\u1c30\u0003\u00fe\u007f\u0000\u1c29\u1c2a\u0005\u013c"+
		"\u0000\u0000\u1c2a\u1c2b\u0005\u0087\u0000\u0000\u1c2b\u1c30\u0003\u023a"+
		"\u011d\u0000\u1c2c\u1c2d\u0005\\\u0000\u0000\u1c2d\u1c2e\u0005X\u0000"+
		"\u0000\u1c2e\u1c30\u0003\u00f2y\u0000\u1c2f\u1c26\u0001\u0000\u0000\u0000"+
		"\u1c2f\u1c29\u0001\u0000\u0000\u0000\u1c2f\u1c2c\u0001\u0000\u0000\u0000"+
		"\u1c30\u03d3\u0001\u0000\u0000\u0000\u1c31\u1c32\u0005U\u0000\u0000\u1c32"+
		"\u1c33\u0005\u00c6\u0000\u0000\u1c33\u1c34\u0003\u01ec\u00f6\u0000\u1c34"+
		"\u1c35\u0003\u03d6\u01eb\u0000\u1c35\u03d5\u0001\u0000\u0000\u0000\u1c36"+
		"\u1c37\u0005\u0211\u0000\u0000\u1c37\u1c42\u0005\u019c\u0000\u0000\u1c38"+
		"\u1c39\u0005\u0141\u0000\u0000\u1c39\u1c3a\u0005\u0087\u0000\u0000\u1c3a"+
		"\u1c42\u0003\u00fe\u007f\u0000\u1c3b\u1c3c\u0005\u013c\u0000\u0000\u1c3c"+
		"\u1c3d\u0005\u0087\u0000\u0000\u1c3d\u1c42\u0003\u023a\u011d\u0000\u1c3e"+
		"\u1c3f\u0005\\\u0000\u0000\u1c3f\u1c40\u0005X\u0000\u0000\u1c40\u1c42"+
		"\u0003\u00f2y\u0000\u1c41\u1c36\u0001\u0000\u0000\u0000\u1c41\u1c38\u0001"+
		"\u0000\u0000\u0000\u1c41\u1c3b\u0001\u0000\u0000\u0000\u1c41\u1c3e\u0001"+
		"\u0000\u0000\u0000\u1c42\u03d7\u0001\u0000\u0000\u0000\u1c43\u1c44\u0005"+
		"U\u0000\u0000\u1c44\u1c45\u0005\u0147\u0000\u0000\u1c45\u1c46\u0003\u00f4"+
		"z\u0000\u1c46\u1c47\u0005\u013c\u0000\u0000\u1c47\u1c48\u0005\u0087\u0000"+
		"\u0000\u1c48\u1c49\u0003\u00fc~\u0000\u1c49\u03d9\u0001\u0000\u0000\u0000"+
		"\u1c4a\u1c4b\u0005U\u0000\u0000\u1c4b\u1c4c\u0005\u01d9\u0000\u0000\u1c4c"+
		"\u1c4d\u0003\u01f0\u00f8\u0000\u1c4d\u1c4e\u0005\u013c\u0000\u0000\u1c4e"+
		"\u1c4f\u0005\u0087\u0000\u0000\u1c4f\u1c50\u0003\u00fc~\u0000\u1c50\u03db"+
		"\u0001\u0000\u0000\u0000\u1c51\u1c52\u0005U\u0000\u0000\u1c52\u1c53\u0005"+
		"\u01cc\u0000\u0000\u1c53\u1c54\u0003\u01ec\u00f6\u0000\u1c54\u1c55\u0003"+
		"\u03de\u01ef\u0000\u1c55\u03dd\u0001\u0000\u0000\u0000\u1c56\u1c57\u0005"+
		"\u0141\u0000\u0000\u1c57\u1c58\u0005\u0087\u0000\u0000\u1c58\u1c60\u0003"+
		"\u00fe\u007f\u0000\u1c59\u1c5a\u0005\u013c\u0000\u0000\u1c5a\u1c5b\u0005"+
		"\u0087\u0000\u0000\u1c5b\u1c60\u0003\u023a\u011d\u0000\u1c5c\u1c5d\u0005"+
		"\\\u0000\u0000\u1c5d\u1c5e\u0005X\u0000\u0000\u1c5e\u1c60\u0003\u00f2"+
		"y\u0000\u1c5f\u1c56\u0001\u0000\u0000\u0000\u1c5f\u1c59\u0001\u0000\u0000"+
		"\u0000\u1c5f\u1c5c\u0001\u0000\u0000\u0000\u1c60\u03df\u0001\u0000\u0000"+
		"\u0000\u1c61\u1c62\u0005U\u0000\u0000\u1c62\u1c63\u0005\u00b5\u0000\u0000"+
		"\u1c63\u1c65\u0005\u0101\u0000\u0000\u1c64\u1c66\u0003\u03f2\u01f9\u0000"+
		"\u1c65\u1c64\u0001\u0000\u0000\u0000\u1c65\u1c66\u0001\u0000\u0000\u0000"+
		"\u1c66\u1c67\u0001\u0000\u0000\u0000\u1c67\u1c68\u0003\u03e2\u01f1\u0000"+
		"\u1c68\u03e1\u0001\u0000\u0000\u0000\u1c69\u1c6a\u0005Y\u0000\u0000\u1c6a"+
		"\u1c6b\u0003\u03ec\u01f6\u0000\u1c6b\u1c6c\u0005\u0082\u0000\u0000\u1c6c"+
		"\u1c6d\u0003\u03ea\u01f5\u0000\u1c6d\u1c6e\u0005\u0087\u0000\u0000\u1c6e"+
		"\u1c70\u0003\u03e6\u01f3\u0000\u1c6f\u1c71\u0003\u03e4\u01f2\u0000\u1c70"+
		"\u1c6f\u0001\u0000\u0000\u0000\u1c70\u1c71\u0001\u0000\u0000\u0000\u1c71"+
		"\u1c88\u0001\u0000\u0000\u0000\u1c72\u1c73\u0005Z\u0000\u0000\u1c73\u1c74"+
		"\u0003\u03ec\u01f6\u0000\u1c74\u1c75\u0005\u0082\u0000\u0000\u1c75\u1c76"+
		"\u0003\u03ea\u01f5\u0000\u1c76\u1c77\u0005v\u0000\u0000\u1c77\u1c79\u0003"+
		"\u03e6\u01f3\u0000\u1c78\u1c7a\u0003\u02c0\u0160\u0000\u1c79\u1c78\u0001"+
		"\u0000\u0000\u0000\u1c79\u1c7a\u0001\u0000\u0000\u0000\u1c7a\u1c88\u0001"+
		"\u0000\u0000\u0000\u1c7b\u1c7c\u0005Z\u0000\u0000\u1c7c\u1c7d\u0005Y\u0000"+
		"\u0000\u1c7d\u1c7e\u0005\u0100\u0000\u0000\u1c7e\u1c7f\u0005\u0086\u0000"+
		"\u0000\u1c7f\u1c80\u0003\u03ec\u01f6\u0000\u1c80\u1c81\u0005\u0082\u0000"+
		"\u0000\u1c81\u1c82\u0003\u03ea\u01f5\u0000\u1c82\u1c83\u0005v\u0000\u0000"+
		"\u1c83\u1c85\u0003\u03e6\u01f3\u0000\u1c84\u1c86\u0003\u02c0\u0160\u0000"+
		"\u1c85\u1c84\u0001\u0000\u0000\u0000\u1c85\u1c86\u0001\u0000\u0000\u0000"+
		"\u1c86\u1c88\u0001\u0000\u0000\u0000\u1c87\u1c69\u0001\u0000\u0000\u0000"+
		"\u1c87\u1c72\u0001\u0000\u0000\u0000\u1c87\u1c7b\u0001\u0000\u0000\u0000"+
		"\u1c88\u03e3\u0001\u0000\u0000\u0000\u1c89\u1c8a\u0005m\u0000\u0000\u1c8a"+
		"\u1c8b\u0005Y\u0000\u0000\u1c8b\u1c8c\u0005\u0100\u0000\u0000\u1c8c\u03e5"+
		"\u0001\u0000\u0000\u0000\u1c8d\u1c92\u0003\u03e8\u01f4\u0000\u1c8e\u1c8f"+
		"\u0005&\u0000\u0000\u1c8f\u1c91\u0003\u03e8\u01f4\u0000\u1c90\u1c8e\u0001"+
		"\u0000\u0000\u0000\u1c91\u1c94\u0001\u0000\u0000\u0000\u1c92\u1c90\u0001"+
		"\u0000\u0000\u0000\u1c92\u1c93\u0001\u0000\u0000\u0000\u1c93\u03e7\u0001"+
		"\u0000\u0000\u0000\u1c94\u1c92\u0001\u0000\u0000\u0000\u1c95\u1c97\u0005"+
		"\u0096\u0000\u0000\u1c96\u1c95\u0001\u0000\u0000\u0000\u1c96\u1c97\u0001"+
		"\u0000\u0000\u0000\u1c97\u1c98\u0001\u0000\u0000\u0000\u1c98\u1c99\u0003"+
		"\u023a\u011d\u0000\u1c99\u03e9\u0001\u0000\u0000\u0000\u1c9a\u1c9b\u0007"+
		"0\u0000\u0000\u1c9b\u03eb\u0001\u0000\u0000\u0000\u1c9c\u1cac\u0003\u03ee"+
		"\u01f7\u0000\u1c9d\u1cac\u0005\u0092\u0000\u0000\u1c9e\u1c9f\u0005\u0092"+
		"\u0000\u0000\u1c9f\u1cac\u0005\u0101\u0000\u0000\u1ca0\u1ca1\u0005\u0092"+
		"\u0000\u0000\u1ca1\u1ca2\u0005 \u0000\u0000\u1ca2\u1ca3\u0003\u025c\u012e"+
		"\u0000\u1ca3\u1ca4\u0005!\u0000\u0000\u1ca4\u1cac\u0001\u0000\u0000\u0000"+
		"\u1ca5\u1ca6\u0005\u0092\u0000\u0000\u1ca6\u1ca7\u0005\u0101\u0000\u0000"+
		"\u1ca7\u1ca8\u0005 \u0000\u0000\u1ca8\u1ca9\u0003\u025c\u012e\u0000\u1ca9"+
		"\u1caa\u0005!\u0000\u0000\u1caa\u1cac\u0001\u0000\u0000\u0000\u1cab\u1c9c"+
		"\u0001\u0000\u0000\u0000\u1cab\u1c9d\u0001\u0000\u0000\u0000\u1cab\u1c9e"+
		"\u0001\u0000\u0000\u0000\u1cab\u1ca0\u0001\u0000\u0000\u0000\u1cab\u1ca5"+
		"\u0001\u0000\u0000\u0000\u1cac\u03ed\u0001\u0000\u0000\u0000\u1cad\u1cb2"+
		"\u0003\u03f0\u01f8\u0000\u1cae\u1caf\u0005&\u0000\u0000\u1caf\u1cb1\u0003"+
		"\u03f0\u01f8\u0000\u1cb0\u1cae\u0001\u0000\u0000\u0000\u1cb1\u1cb4\u0001"+
		"\u0000\u0000\u0000\u1cb2\u1cb0\u0001\u0000\u0000\u0000\u1cb2\u1cb3\u0001"+
		"\u0000\u0000\u0000\u1cb3\u03ef\u0001\u0000\u0000\u0000\u1cb4\u1cb2\u0001"+
		"\u0000\u0000\u0000\u1cb5\u1cb7\u0005P\u0000\u0000\u1cb6\u1cb8\u0003\u0258"+
		"\u012c\u0000\u1cb7\u1cb6\u0001\u0000\u0000\u0000\u1cb7\u1cb8\u0001\u0000"+
		"\u0000\u0000\u1cb8\u1cc6\u0001\u0000\u0000\u0000\u1cb9\u1cbb\u0005\u0103"+
		"\u0000\u0000\u1cba\u1cbc\u0003\u0258\u012c\u0000\u1cbb\u1cba\u0001\u0000"+
		"\u0000\u0000\u1cbb\u1cbc\u0001\u0000\u0000\u0000\u1cbc\u1cc6\u0001\u0000"+
		"\u0000\u0000\u1cbd\u1cbf\u0005T\u0000\u0000\u1cbe\u1cc0\u0003\u0258\u012c"+
		"\u0000\u1cbf\u1cbe\u0001\u0000\u0000\u0000\u1cbf\u1cc0\u0001\u0000\u0000"+
		"\u0000\u1cc0\u1cc6\u0001\u0000\u0000\u0000\u1cc1\u1cc3\u0003\u016a\u00b5"+
		"\u0000\u1cc2\u1cc4\u0003\u0258\u012c\u0000\u1cc3\u1cc2\u0001\u0000\u0000"+
		"\u0000\u1cc3\u1cc4\u0001\u0000\u0000\u0000\u1cc4\u1cc6\u0001\u0000\u0000"+
		"\u0000\u1cc5\u1cb5\u0001\u0000\u0000\u0000\u1cc5\u1cb9\u0001\u0000\u0000"+
		"\u0000\u1cc5\u1cbd\u0001\u0000\u0000\u0000\u1cc5\u1cc1\u0001\u0000\u0000"+
		"\u0000\u1cc6\u03f1\u0001\u0000\u0000\u0000\u1cc7\u1cc9\u0003\u03f4\u01fa"+
		"\u0000\u1cc8\u1cc7\u0001\u0000\u0000\u0000\u1cc9\u1cca\u0001\u0000\u0000"+
		"\u0000\u1cca\u1cc8\u0001\u0000\u0000\u0000\u1cca\u1ccb\u0001\u0000\u0000"+
		"\u0000\u1ccb\u03f3\u0001\u0000\u0000\u0000\u1ccc\u1ccd\u0005\u0091\u0000"+
		"\u0000\u1ccd\u1cce\u0005X\u0000\u0000\u1cce\u1cd3\u0003\u03f6\u01fb\u0000"+
		"\u1ccf\u1cd0\u0005\u0086\u0000\u0000\u1cd0\u1cd1\u00071\u0000\u0000\u1cd1"+
		"\u1cd3\u0003\u028e\u0147\u0000\u1cd2\u1ccc\u0001\u0000\u0000\u0000\u1cd2"+
		"\u1ccf\u0001\u0000\u0000\u0000\u1cd3\u03f5\u0001\u0000\u0000\u0000\u1cd4"+
		"\u1cd5\u0003\u01f6\u00fb\u0000\u1cd5\u03f7\u0001\u0000\u0000\u0000\u1cd6"+
		"\u1cd7\u0005U\u0000\u0000\u1cd7\u1cd8\u0005\u0119\u0000\u0000\u1cd8\u1cd9"+
		"\u0003\u03fa\u01fd\u0000\u1cd9\u03f9\u0001\u0000\u0000\u0000\u1cda\u1cdb"+
		"\u0003\u01ec\u00f6\u0000\u1cdb\u1cdc\u0007-\u0000\u0000\u1cdc\u1cdd\u0005"+
		"\u008b\u0000\u0000\u1cdd\u1cde\u0005\u008c\u0000\u0000\u1cde\u1d0f\u0001"+
		"\u0000\u0000\u0000\u1cdf\u1ce0\u0003\u01ec\u00f6\u0000\u1ce0\u1ce1\u0005"+
		"[\u0000\u0000\u1ce1\u1ce4\u0003\u0334\u019a\u0000\u1ce2\u1ce3\u0005\u008b"+
		"\u0000\u0000\u1ce3\u1ce5\u0005\u0157\u0000\u0000\u1ce4\u1ce2\u0001\u0000"+
		"\u0000\u0000\u1ce4\u1ce5\u0001\u0000\u0000\u0000\u1ce5\u1d0f\u0001\u0000"+
		"\u0000\u0000\u1ce6\u1ce7\u0003\u01ec\u00f6\u0000\u1ce7\u1ce8\u0005V\u0000"+
		"\u0000\u1ce8\u1cea\u0005`\u0000\u0000\u1ce9\u1ceb\u0003\u02b2\u0159\u0000"+
		"\u1cea\u1ce9\u0001\u0000\u0000\u0000\u1cea\u1ceb\u0001\u0000\u0000\u0000"+
		"\u1ceb\u1cec\u0001\u0000\u0000\u0000\u1cec\u1cee\u0003\u00fe\u007f\u0000"+
		"\u1ced\u1cef\u0003\u02c0\u0160\u0000\u1cee\u1ced\u0001\u0000\u0000\u0000"+
		"\u1cee\u1cef\u0001\u0000\u0000\u0000\u1cef\u1d0f\u0001\u0000\u0000\u0000"+
		"\u1cf0\u1cf1\u0003\u01ec\u00f6\u0000\u1cf1\u1cf2\u0005\u0158\u0000\u0000"+
		"\u1cf2\u1cf3\u0005`\u0000\u0000\u1cf3\u1cf4\u0003\u00fe\u007f\u0000\u1cf4"+
		"\u1d0f\u0001\u0000\u0000\u0000\u1cf5\u1cf6\u0003\u01ec\u00f6\u0000\u1cf6"+
		"\u1cf7\u0005\u0141\u0000\u0000\u1cf7\u1cf8\u0005`\u0000\u0000\u1cf8\u1cf9"+
		"\u0003\u010a\u0085\u0000\u1cf9\u1cfa\u0005\u0087\u0000\u0000\u1cfa\u1cfb"+
		"\u0003\u010a\u0085\u0000\u1cfb\u1d0f\u0001\u0000\u0000\u0000\u1cfc\u1cfd"+
		"\u0003\u01ec\u00f6\u0000\u1cfd\u1cfe\u0005\u013c\u0000\u0000\u1cfe\u1cff"+
		"\u0005\u0087\u0000\u0000\u1cff\u1d00\u0003\u023a\u011d\u0000\u1d00\u1d0f"+
		"\u0001\u0000\u0000\u0000\u1d01\u1d02\u0003\u01ec\u00f6\u0000\u1d02\u1d03"+
		"\u0005\u0141\u0000\u0000\u1d03\u1d04\u0005\u0087\u0000\u0000\u1d04\u1d05"+
		"\u0003\u01ec\u00f6\u0000\u1d05\u1d0f\u0001\u0000\u0000\u0000\u1d06\u1d07"+
		"\u0003\u01ec\u00f6\u0000\u1d07\u1d08\u0005\\\u0000\u0000\u1d08\u1d09\u0005"+
		"X\u0000\u0000\u1d09\u1d0a\u0003\u00fe\u007f\u0000\u1d0a\u1d0f\u0001\u0000"+
		"\u0000\u0000\u1d0b\u1d0c\u0003\u01ec\u00f6\u0000\u1d0c\u1d0d\u0003\u03ac"+
		"\u01d6\u0000\u1d0d\u1d0f\u0001\u0000\u0000\u0000\u1d0e\u1cda\u0001\u0000"+
		"\u0000\u0000\u1d0e\u1cdf\u0001\u0000\u0000\u0000\u1d0e\u1ce6\u0001\u0000"+
		"\u0000\u0000\u1d0e\u1cf0\u0001\u0000\u0000\u0000\u1d0e\u1cf5\u0001\u0000"+
		"\u0000\u0000\u1d0e\u1cfc\u0001\u0000\u0000\u0000\u1d0e\u1d01\u0001\u0000"+
		"\u0000\u0000\u1d0e\u1d06\u0001\u0000\u0000\u0000\u1d0e\u1d0b\u0001\u0000"+
		"\u0000\u0000\u1d0f\u03fb\u0001\u0000\u0000\u0000\u1d10\u1d11\u0005U\u0000"+
		"\u0000\u1d11\u1d12\u0005\u01ea\u0000\u0000\u1d12\u1d13\u0005h\u0000\u0000"+
		"\u1d13\u1d14\u0003\u0400\u0200\u0000\u1d14\u1d15\u0003\u03fe\u01ff\u0000"+
		"\u1d15\u03fd\u0001\u0000\u0000\u0000\u1d16\u1d20\u0005\u00b8\u0000\u0000"+
		"\u1d17\u1d18\u0005\u00b7\u0000\u0000\u1d18\u1d20\u0007*\u0000\u0000\u1d19"+
		"\u1d1a\u0005\u013c\u0000\u0000\u1d1a\u1d1b\u0005\u0087\u0000\u0000\u1d1b"+
		"\u1d20\u0003\u023a\u011d\u0000\u1d1c\u1d1d\u0005\u0141\u0000\u0000\u1d1d"+
		"\u1d1e\u0005\u0087\u0000\u0000\u1d1e\u1d20\u0003\u0400\u0200\u0000\u1d1f"+
		"\u1d16\u0001\u0000\u0000\u0000\u1d1f\u1d17\u0001\u0000\u0000\u0000\u1d1f"+
		"\u1d19\u0001\u0000\u0000\u0000\u1d1f\u1d1c\u0001\u0000\u0000\u0000\u1d20"+
		"\u03ff\u0001\u0000\u0000\u0000\u1d21\u1d22\u0003\u016a\u00b5\u0000\u1d22"+
		"\u0401\u0001\u0000\u0000\u0000\u1d23\u1d24\u0005U\u0000\u0000\u1d24\u1d25"+
		"\u0005\u011d\u0000\u0000\u1d25\u1d26\u0003\u00fe\u007f\u0000\u1d26\u1d27"+
		"\u0003\u0406\u0203\u0000\u1d27\u0403\u0001\u0000\u0000\u0000\u1d28\u1d2b"+
		"\u0005T\u0000\u0000\u1d29\u1d2a\u0005\u0089\u0000\u0000\u1d2a\u1d2c\u0005"+
		"\u020f\u0000\u0000\u1d2b\u1d29\u0001\u0000\u0000\u0000\u1d2b\u1d2c\u0001"+
		"\u0000\u0000\u0000\u1d2c\u1d2d\u0001\u0000\u0000\u0000\u1d2d\u1d2e\u0005"+
		"\u0147\u0000\u0000\u1d2e\u1d2f\u0003\u00f4z\u0000\u1d2f\u1d30\u0005\u0086"+
		"\u0000\u0000\u1d30\u1d31\u0003\u00f6{\u0000\u1d31\u0405\u0001\u0000\u0000"+
		"\u0000\u1d32\u1d33\u0005R\u0000\u0000\u1d33\u1da7\u0003\u040e\u0207\u0000"+
		"\u1d34\u1d35\u0007/\u0000\u0000\u1d35\u1d36\u0005\u01c1\u0000\u0000\u1d36"+
		"\u1d37\u0005\u01fc\u0000\u0000\u1d37\u1da7\u0003\u00fe\u007f\u0000\u1d38"+
		"\u1d39\u0007/\u0000\u0000\u1d39\u1d3a\u0005\u01c3\u0000\u0000\u1d3a\u1da7"+
		"\u0003\u040c\u0206\u0000\u1d3b\u1d3c\u0007/\u0000\u0000\u1d3c\u1d3d\u0005"+
		"s\u0000\u0000\u1d3d\u1d3e\u0005 \u0000\u0000\u1d3e\u1d3f\u0003\u018a\u00c5"+
		"\u0000\u1d3f\u1d40\u0005\u0081\u0000\u0000\u1d40\u1d41\u0003\u018a\u00c5"+
		"\u0000\u1d41\u1d42\u0005!\u0000\u0000\u1d42\u1da7\u0001\u0000\u0000\u0000"+
		"\u1d43\u1d44\u0007/\u0000\u0000\u1d44\u1d45\u0005\u00c6\u0000\u0000\u1d45"+
		"\u1da7\u0003\u01ec\u00f6\u0000\u1d46\u1d47\u0007/\u0000\u0000\u1d47\u1d48"+
		"\u0005\u01cc\u0000\u0000\u1d48\u1da7\u0003\u01ec\u00f6\u0000\u1d49\u1d4a"+
		"\u0007/\u0000\u0000\u1d4a\u1d4b\u0005\u0119\u0000\u0000\u1d4b\u1da7\u0003"+
		"\u018a\u00c5\u0000\u1d4c\u1d4d\u0007/\u0000\u0000\u1d4d\u1d4e\u0005g\u0000"+
		"\u0000\u1d4e\u1da7\u0003\u0408\u0204\u0000\u1d4f\u1d51\u0007/\u0000\u0000"+
		"\u1d50\u1d52\u0005\u0201\u0000\u0000\u1d51\u1d50\u0001\u0000\u0000\u0000"+
		"\u1d51\u1d52\u0001\u0000\u0000\u0000\u1d52\u1d53\u0001\u0000\u0000\u0000"+
		"\u1d53\u1d54\u0005\u012e\u0000\u0000\u1d54\u1da7\u0003\u00fe\u007f\u0000"+
		"\u1d55\u1d56\u0007/\u0000\u0000\u1d56\u1d57\u0005\u01a2\u0000\u0000\u1d57"+
		"\u1da7\u0003\u03c6\u01e3\u0000\u1d58\u1d59\u0007/\u0000\u0000\u1d59\u1d5a"+
		"\u0005\u01a2\u0000\u0000\u1d5a\u1d5b\u00072\u0000\u0000\u1d5b\u1d5c\u0003"+
		"\u01ec\u00f6\u0000\u1d5c\u1d5d\u0005\u007f\u0000\u0000\u1d5d\u1d5e\u0003"+
		"\u02f0\u0178\u0000\u1d5e\u1da7\u0001\u0000\u0000\u0000\u1d5f\u1d60\u0007"+
		"/\u0000\u0000\u1d60\u1d61\u0005i\u0000\u0000\u1d61\u1da7\u0003\u0408\u0204"+
		"\u0000\u1d62\u1d63\u0007/\u0000\u0000\u1d63\u1d64\u0005\u0146\u0000\u0000"+
		"\u1d64\u1da7\u0003\u0408\u0204\u0000\u1d65\u1d66\u0007/\u0000\u0000\u1d66"+
		"\u1d67\u0005X\u0000\u0000\u1d67\u1da7\u0003\u00fe\u007f\u0000\u1d68\u1d69"+
		"\u0007/\u0000\u0000\u1d69\u1d6a\u0005\u01ea\u0000\u0000\u1d6a\u1d6b\u0005"+
		"h\u0000\u0000\u1d6b\u1da7\u0003\u00fe\u007f\u0000\u1d6c\u1d6d\u0007/\u0000"+
		"\u0000\u1d6d\u1d6e\u0005]\u0000\u0000\u1d6e\u1da7\u0003\u01ec\u00f6\u0000"+
		"\u1d6f\u1d70\u0007/\u0000\u0000\u1d70\u1d71\u0005\u00cf\u0000\u0000\u1d71"+
		"\u1d72\u0005\u021e\u0000\u0000\u1d72\u1d73\u0005\u0202\u0000\u0000\u1d73"+
		"\u1da7\u0003\u01ec\u00f6\u0000\u1d74\u1d75\u0007/\u0000\u0000\u1d75\u1d76"+
		"\u0005\u00cf\u0000\u0000\u1d76\u1d77\u0005\u021e\u0000\u0000\u1d77\u1d78"+
		"\u0005\u01d8\u0000\u0000\u1d78\u1da7\u0003\u01ec\u00f6\u0000\u1d79\u1d7a"+
		"\u0007/\u0000\u0000\u1d7a\u1d7b\u0005\u00cf\u0000\u0000\u1d7b\u1d7c\u0005"+
		"\u021e\u0000\u0000\u1d7c\u1d7d\u0005\u022d\u0000\u0000\u1d7d\u1da7\u0003"+
		"\u01ec\u00f6\u0000\u1d7e\u1d7f\u0007/\u0000\u0000\u1d7f\u1d80\u0005\u00cf"+
		"\u0000\u0000\u1d80\u1d81\u0005\u021e\u0000\u0000\u1d81\u1d82\u0005\u01d5"+
		"\u0000\u0000\u1d82\u1da7\u0003\u01ec\u00f6\u0000\u1d83\u1d84\u0007/\u0000"+
		"\u0000\u1d84\u1d85\u0005\u014a\u0000\u0000\u1d85\u1da7\u0003\u01ec\u00f6"+
		"\u0000\u1d86\u1d87\u0007/\u0000\u0000\u1d87\u1d88\u0005j\u0000\u0000\u1d88"+
		"\u1da7\u0003\u01ec\u00f6\u0000\u1d89\u1d8a\u0007/\u0000\u0000\u1d8a\u1d8b"+
		"\u0005\u01a1\u0000\u0000\u1d8b\u1d8c\u0005j\u0000\u0000\u1d8c\u1da7\u0003"+
		"\u01ec\u00f6\u0000\u1d8d\u1d8e\u0007/\u0000\u0000\u1d8e\u1d8f\u0005c\u0000"+
		"\u0000\u1d8f\u1d90\u0005]\u0000\u0000\u1d90\u1da7\u0003\u01ec\u00f6\u0000"+
		"\u1d91\u1d92\u0007/\u0000\u0000\u1d92\u1d93\u0005c\u0000\u0000\u1d93\u1d94"+
		"\u0005\u0113\u0000\u0000\u1d94\u1d95\u0005\u023c\u0000\u0000\u1d95\u1da7"+
		"\u0003\u00fe\u007f\u0000\u1d96\u1d97\u0007/\u0000\u0000\u1d97\u1d98\u0005"+
		"\u021c\u0000\u0000\u1d98\u1da7\u0003\u00fe\u007f\u0000\u1d99\u1d9a\u0007"+
		"/\u0000\u0000\u1d9a\u1d9b\u0005\u0231\u0000\u0000\u1d9b\u1d9c\u0005\u0086"+
		"\u0000\u0000\u1d9c\u1d9d\u0003\u018a\u00c5\u0000\u1d9d\u1d9e\u0005\u012e"+
		"\u0000\u0000\u1d9e\u1d9f\u0003\u00fe\u007f\u0000\u1d9f\u1da7\u0001\u0000"+
		"\u0000\u0000\u1da0\u1da1\u0007/\u0000\u0000\u1da1\u1da2\u0005\u00cb\u0000"+
		"\u0000\u1da2\u1da7\u0003\u018a\u00c5\u0000\u1da3\u1da4\u0005\\\u0000\u0000"+
		"\u1da4\u1da5\u0005X\u0000\u0000\u1da5\u1da7\u0003\u00fe\u007f\u0000\u1da6"+
		"\u1d32\u0001\u0000\u0000\u0000\u1da6\u1d34\u0001\u0000\u0000\u0000\u1da6"+
		"\u1d38\u0001\u0000\u0000\u0000\u1da6\u1d3b\u0001\u0000\u0000\u0000\u1da6"+
		"\u1d43\u0001\u0000\u0000\u0000\u1da6\u1d46\u0001\u0000\u0000\u0000\u1da6"+
		"\u1d49\u0001\u0000\u0000\u0000\u1da6\u1d4c\u0001\u0000\u0000\u0000\u1da6"+
		"\u1d4f\u0001\u0000\u0000\u0000\u1da6\u1d55\u0001\u0000\u0000\u0000\u1da6"+
		"\u1d58\u0001\u0000\u0000\u0000\u1da6\u1d5f\u0001\u0000\u0000\u0000\u1da6"+
		"\u1d62\u0001\u0000\u0000\u0000\u1da6\u1d65\u0001\u0000\u0000\u0000\u1da6"+
		"\u1d68\u0001\u0000\u0000\u0000\u1da6\u1d6c\u0001\u0000\u0000\u0000\u1da6"+
		"\u1d6f\u0001\u0000\u0000\u0000\u1da6\u1d74\u0001\u0000\u0000\u0000\u1da6"+
		"\u1d79\u0001\u0000\u0000\u0000\u1da6\u1d7e\u0001\u0000\u0000\u0000\u1da6"+
		"\u1d83\u0001\u0000\u0000\u0000\u1da6\u1d86\u0001\u0000\u0000\u0000\u1da6"+
		"\u1d89\u0001\u0000\u0000\u0000\u1da6\u1d8d\u0001\u0000\u0000\u0000\u1da6"+
		"\u1d91\u0001\u0000\u0000\u0000\u1da6\u1d96\u0001\u0000\u0000\u0000\u1da6"+
		"\u1d99\u0001\u0000\u0000\u0000\u1da6\u1da0\u0001\u0000\u0000\u0000\u1da6"+
		"\u1da3\u0001\u0000\u0000\u0000\u1da7\u0407\u0001\u0000\u0000\u0000\u1da8"+
		"\u1da9\u0003\u0162\u00b1\u0000\u1da9\u1daa\u0003\u040a\u0205\u0000\u1daa"+
		"\u1db1\u0001\u0000\u0000\u0000\u1dab\u1db1\u0003\u00f0x\u0000\u1dac\u1db1"+
		"\u0003\u016a\u00b5\u0000\u1dad\u1dae\u0003\u016a\u00b5\u0000\u1dae\u1daf"+
		"\u0003\u0120\u0090\u0000\u1daf\u1db1\u0001\u0000\u0000\u0000\u1db0\u1da8"+
		"\u0001\u0000\u0000\u0000\u1db0\u1dab\u0001\u0000\u0000\u0000\u1db0\u1dac"+
		"\u0001\u0000\u0000\u0000\u1db0\u1dad\u0001\u0000\u0000\u0000\u1db1\u0409"+
		"\u0001\u0000\u0000\u0000\u1db2\u1db3\u0005 \u0000\u0000\u1db3\u1db4\u0003"+
		"\u0288\u0144\u0000\u1db4\u1db5\u0005!\u0000\u0000\u1db5\u1db9\u0001\u0000"+
		"\u0000\u0000\u1db6\u1db7\u0005 \u0000\u0000\u1db7\u1db9\u0005!\u0000\u0000"+
		"\u1db8\u1db2\u0001\u0000\u0000\u0000\u1db8\u1db6\u0001\u0000\u0000\u0000"+
		"\u1db9\u040b\u0001\u0000\u0000\u0000\u1dba\u1dbb\u0003\u0162\u00b1\u0000"+
		"\u1dbb\u1dbc\u0003\u03cc\u01e6\u0000\u1dbc\u040d\u0001\u0000\u0000\u0000"+
		"\u1dbd\u1dbf\u0003\u0410\u0208\u0000\u1dbe\u1dbd\u0001\u0000\u0000\u0000"+
		"\u1dbf\u1dc2\u0001\u0000\u0000\u0000\u1dc0\u1dbe\u0001\u0000\u0000\u0000"+
		"\u1dc0\u1dc1\u0001\u0000\u0000\u0000\u1dc1\u040f\u0001\u0000\u0000\u0000"+
		"\u1dc2\u1dc0\u0001\u0000\u0000\u0000\u1dc3\u1dc6\u0005\u0087\u0000\u0000"+
		"\u1dc4\u1dc7\u0003\u0234\u011a\u0000\u1dc5\u1dc7\u0005\u0254\u0000\u0000"+
		"\u1dc6\u1dc4\u0001\u0000\u0000\u0000\u1dc6\u1dc5\u0001\u0000\u0000\u0000"+
		"\u1dc7\u0411\u0001\u0000\u0000\u0000\u1dc8\u1dc9\u0005U\u0000\u0000\u1dc9"+
		"\u1dca\u0005c\u0000\u0000\u1dca\u1dcb\u0005\u0113\u0000\u0000\u1dcb\u1dcc"+
		"\u0005\u023c\u0000\u0000\u1dcc\u1dcd\u0003\u016a\u00b5\u0000\u1dcd\u1dce"+
		"\u0003\u0414\u020a\u0000\u1dce\u0413\u0001\u0000\u0000\u0000\u1dcf\u1dd1"+
		"\u0003\u0416\u020b\u0000\u1dd0\u1dcf\u0001\u0000\u0000\u0000\u1dd0\u1dd1"+
		"\u0001\u0000\u0000\u0000\u1dd1\u1dd2\u0001\u0000\u0000\u0000\u1dd2\u1ddb"+
		"\u0003\u039e\u01cf\u0000\u1dd3\u1ddb\u0003\u0416\u020b\u0000\u1dd4\u1dd5"+
		"\u0005\u0141\u0000\u0000\u1dd5\u1dd6\u0005\u0087\u0000\u0000\u1dd6\u1ddb"+
		"\u0003\u00fe\u007f\u0000\u1dd7\u1dd8\u0005\u013c\u0000\u0000\u1dd8\u1dd9"+
		"\u0005\u0087\u0000\u0000\u1dd9\u1ddb\u0003\u023a\u011d\u0000\u1dda\u1dd0"+
		"\u0001\u0000\u0000\u0000\u1dda\u1dd3\u0001\u0000\u0000\u0000\u1dda\u1dd4"+
		"\u0001\u0000\u0000\u0000\u1dda\u1dd7\u0001\u0000\u0000\u0000\u1ddb\u0415"+
		"\u0001\u0000\u0000\u0000\u1ddc\u1dde\u0003\u0418\u020c\u0000\u1ddd\u1ddc"+
		"\u0001\u0000\u0000\u0000\u1dde\u1ddf\u0001\u0000\u0000\u0000\u1ddf\u1ddd"+
		"\u0001\u0000\u0000\u0000\u1ddf\u1de0\u0001\u0000\u0000\u0000\u1de0\u0417"+
		"\u0001\u0000\u0000\u0000\u1de1\u1de2\u0005\u01f5\u0000\u0000\u1de2\u1dea"+
		"\u0003\u041a\u020d\u0000\u1de3\u1de4\u0005\u00ff\u0000\u0000\u1de4\u1dea"+
		"\u0005\u01f5\u0000\u0000\u1de5\u1de6\u0005\u0234\u0000\u0000\u1de6\u1dea"+
		"\u0003\u041a\u020d\u0000\u1de7\u1de8\u0005\u00ff\u0000\u0000\u1de8\u1dea"+
		"\u0005\u0234\u0000\u0000\u1de9\u1de1\u0001\u0000\u0000\u0000\u1de9\u1de3"+
		"\u0001\u0000\u0000\u0000\u1de9\u1de5\u0001\u0000\u0000\u0000\u1de9\u1de7"+
		"\u0001\u0000\u0000\u0000\u1dea\u0419\u0001\u0000\u0000\u0000\u1deb\u1dec"+
		"\u0003\u01ec\u00f6\u0000\u1dec\u041b\u0001\u0000\u0000\u0000\u1ded\u1dee"+
		"\u0005U\u0000\u0000\u1dee\u1def\u0005\u0096\u0000\u0000\u1def\u1df0\u0003"+
		"\u041e\u020f\u0000\u1df0\u041d\u0001\u0000\u0000\u0000\u1df1\u1df2\u0003"+
		"\u023a\u011d\u0000\u1df2\u1df3\u0007/\u0000\u0000\u1df3\u1df4\u0005\u0108"+
		"\u0000\u0000\u1df4\u1df5\u0003\u028e\u0147\u0000\u1df5\u1dfc\u0001\u0000"+
		"\u0000\u0000\u1df6\u1df7\u0003\u023a\u011d\u0000\u1df7\u1df8\u0005\u0141"+
		"\u0000\u0000\u1df8\u1df9\u0005\u0087\u0000\u0000\u1df9\u1dfa\u0003\u023a"+
		"\u011d\u0000\u1dfa\u1dfc\u0001\u0000\u0000\u0000\u1dfb\u1df1\u0001\u0000"+
		"\u0000\u0000\u1dfb\u1df6\u0001\u0000\u0000\u0000\u1dfc\u041f\u0001\u0000"+
		"\u0000\u0000\u1dfd\u1dff\u0005U\u0000\u0000\u1dfe\u1e00\u0005\u0201\u0000"+
		"\u0000\u1dff\u1dfe\u0001\u0000\u0000\u0000\u1dff\u1e00\u0001\u0000\u0000"+
		"\u0000\u1e00\u1e01\u0001\u0000\u0000\u0000\u1e01\u1e02\u0005\u012e\u0000"+
		"\u0000\u1e02\u1e0d\u0003\u016a\u00b5\u0000\u1e03\u1e04\u0005\u0141\u0000"+
		"\u0000\u1e04\u1e05\u0005\u0087\u0000\u0000\u1e05\u1e0e\u0003\u016a\u00b5"+
		"\u0000\u1e06\u1e07\u0005\u013c\u0000\u0000\u1e07\u1e0b\u0005\u0087\u0000"+
		"\u0000\u1e08\u1e0c\u0003\u022c\u0116\u0000\u1e09\u1e0c\u0005\u00be\u0000"+
		"\u0000\u1e0a\u1e0c\u0005\u014c\u0000\u0000\u1e0b\u1e08\u0001\u0000\u0000"+
		"\u0000\u1e0b\u1e09\u0001\u0000\u0000\u0000\u1e0b\u1e0a\u0001\u0000\u0000"+
		"\u0000\u1e0c\u1e0e\u0001\u0000\u0000\u0000\u1e0d\u1e03\u0001\u0000\u0000"+
		"\u0000\u1e0d\u1e06\u0001\u0000\u0000\u0000\u1e0e\u0421\u0001\u0000\u0000"+
		"\u0000\u1e0f\u1e10\u0005U\u0000\u0000\u1e10\u1e11\u0005\u012f\u0000\u0000"+
		"\u1e11\u1e12\u0005\u0137\u0000\u0000\u1e12\u1e13\u0003\u0244\u0122\u0000"+
		"\u1e13\u1e14\u0005\u013c\u0000\u0000\u1e14\u1e18\u0005\u0087\u0000\u0000"+
		"\u1e15\u1e19\u0003\u022c\u0116\u0000\u1e16\u1e19\u0005\u00be\u0000\u0000"+
		"\u1e17\u1e19\u0005\u014c\u0000\u0000\u1e18\u1e15\u0001\u0000\u0000\u0000"+
		"\u1e18\u1e16\u0001\u0000\u0000\u0000\u1e18\u1e17\u0001\u0000\u0000\u0000"+
		"\u1e19\u0423\u0001\u0000\u0000\u0000\u1e1a\u1e1b\u0005U\u0000\u0000\u1e1b"+
		"\u1e1c\u0005\u01a1\u0000\u0000\u1e1c\u1e1d\u0005j\u0000\u0000\u1e1d\u1e1e"+
		"\u0003\u0426\u0213\u0000\u1e1e\u0425\u0001\u0000\u0000\u0000\u1e1f\u1e21"+
		"\u0003\u02b2\u0159\u0000\u1e20\u1e1f\u0001\u0000\u0000\u0000\u1e20\u1e21"+
		"\u0001\u0000\u0000\u0000\u1e21\u1e22\u0001\u0000\u0000\u0000\u1e22\u1e23"+
		"\u0003\u0168\u00b4\u0000\u1e23\u1e24\u0003\u0396\u01cb\u0000\u1e24\u1e56"+
		"\u0001\u0000\u0000\u0000\u1e25\u1e26\u0003\u0168\u00b4\u0000\u1e26\u1e27"+
		"\u0005\u0118\u0000\u0000\u1e27\u1e28\u0005\u0082\u0000\u0000\u1e28\u1e29"+
		"\u0005\u011d\u0000\u0000\u1e29\u1e2a\u0003\u00fe\u007f\u0000\u1e2a\u1e56"+
		"\u0001\u0000\u0000\u0000\u1e2b\u1e2d\u0003\u02b2\u0159\u0000\u1e2c\u1e2b"+
		"\u0001\u0000\u0000\u0000\u1e2c\u1e2d\u0001\u0000\u0000\u0000\u1e2d\u1e2e"+
		"\u0001\u0000\u0000\u0000\u1e2e\u1e2f\u0003\u0168\u00b4\u0000\u1e2f\u1e31"+
		"\u0005\u0141\u0000\u0000\u1e30\u1e32\u0005^\u0000\u0000\u1e31\u1e30\u0001"+
		"\u0000\u0000\u0000\u1e31\u1e32\u0001\u0000\u0000\u0000\u1e32\u1e33\u0001"+
		"\u0000\u0000\u0000\u1e33\u1e34\u0003\u00fa}\u0000\u1e34\u1e35\u0005\u0087"+
		"\u0000\u0000\u1e35\u1e36\u0003\u00fa}\u0000\u1e36\u1e56\u0001\u0000\u0000"+
		"\u0000\u1e37\u1e39\u0003\u02b2\u0159\u0000\u1e38\u1e37\u0001\u0000\u0000"+
		"\u0000\u1e38\u1e39\u0001\u0000\u0000\u0000\u1e39\u1e3a\u0001\u0000\u0000"+
		"\u0000\u1e3a\u1e3b\u0003\u0168\u00b4\u0000\u1e3b\u1e3c\u0005\u0141\u0000"+
		"\u0000\u1e3c\u1e3d\u0005\u0087\u0000\u0000\u1e3d\u1e3e\u0003\u0168\u00b4"+
		"\u0000\u1e3e\u1e56\u0001\u0000\u0000\u0000\u1e3f\u1e41\u0003\u02b2\u0159"+
		"\u0000\u1e40\u1e3f\u0001\u0000\u0000\u0000\u1e40\u1e41\u0001\u0000\u0000"+
		"\u0000\u1e41\u1e42\u0001\u0000\u0000\u0000\u1e42\u1e43\u0003\u0168\u00b4"+
		"\u0000\u1e43\u1e44\u0005\\\u0000\u0000\u1e44\u1e45\u0005X\u0000\u0000"+
		"\u1e45\u1e46\u0003\u00f2y\u0000\u1e46\u1e56\u0001\u0000\u0000\u0000\u1e47"+
		"\u1e48\u0005\u0092\u0000\u0000\u1e48\u1e49\u0005\u0091\u0000\u0000\u1e49"+
		"\u1e4a\u0005\u0151\u0000\u0000\u1e4a\u1e4b\u0003\u00fe\u007f\u0000\u1e4b"+
		"\u1e4c\u0005\u013b\u0000\u0000\u1e4c\u1e4d\u0005\u0097\u0000\u0000\u1e4d"+
		"\u1e4e\u0003\u028e\u0147\u0000\u1e4e\u1e4f\u0001\u0000\u0000\u0000\u1e4f"+
		"\u1e50\u0005\\\u0000\u0000\u1e50\u1e51\u0005\u0151\u0000\u0000\u1e51\u1e53"+
		"\u0003\u00fe\u007f\u0000\u1e52\u1e54\u0005\u01ae\u0000\u0000\u1e53\u1e52"+
		"\u0001\u0000\u0000\u0000\u1e53\u1e54\u0001\u0000\u0000\u0000\u1e54\u1e56"+
		"\u0001\u0000\u0000\u0000\u1e55\u1e20\u0001\u0000\u0000\u0000\u1e55\u1e25"+
		"\u0001\u0000\u0000\u0000\u1e55\u1e2c\u0001\u0000\u0000\u0000\u1e55\u1e38"+
		"\u0001\u0000\u0000\u0000\u1e55\u1e40\u0001\u0000\u0000\u0000\u1e55\u1e47"+
		"\u0001\u0000\u0000\u0000\u1e56\u0427\u0001\u0000\u0000\u0000\u1e57\u1e58"+
		"\u0005\u01ed\u0000\u0000\u1e58\u1e59\u0003\u0118\u008c\u0000\u1e59\u1e5a"+
		"\u0003\u042c\u0216\u0000\u1e5a\u1e5f\u0005\u01e8\u0000\u0000\u1e5b\u1e5c"+
		"\u0005m\u0000\u0000\u1e5c\u1e60\u0005\u01f9\u0000\u0000\u1e5d\u1e5e\u0005"+
		"\u015a\u0000\u0000\u1e5e\u1e60\u0005\u01f9\u0000\u0000\u1e5f\u1e5b\u0001"+
		"\u0000\u0000\u0000\u1e5f\u1e5d\u0001\u0000\u0000\u0000\u1e5f\u1e60\u0001"+
		"\u0000\u0000\u0000\u1e60\u1e61\u0001\u0000\u0000\u0000\u1e61\u1e62\u0005"+
		"\u0086\u0000\u0000\u1e62\u1e63\u0003J%\u0000\u1e63\u0429\u0001\u0000\u0000"+
		"\u0000\u1e64\u1e65\u0005\u01e8\u0000\u0000\u1e65\u1e66\u0003\u0118\u008c"+
		"\u0000\u1e66\u1e6b\u0003\u042c\u0216\u0000\u1e67\u1e68\u0005m\u0000\u0000"+
		"\u1e68\u1e6c\u0005\u01f9\u0000\u0000\u1e69\u1e6a\u0005\u015a\u0000\u0000"+
		"\u1e6a\u1e6c\u0005\u01f9\u0000\u0000\u1e6b\u1e67\u0001\u0000\u0000\u0000"+
		"\u1e6b\u1e69\u0001\u0000\u0000\u0000\u1e6b\u1e6c\u0001\u0000\u0000\u0000"+
		"\u1e6c\u1e6d\u0001\u0000\u0000\u0000\u1e6d\u1e6e\u0005\u0086\u0000\u0000"+
		"\u1e6e\u1e6f\u0003J%\u0000\u1e6f\u042b\u0001\u0000\u0000\u0000\u1e70\u1e72"+
		"\u0003\u042e\u0217\u0000\u1e71\u1e70\u0001\u0000\u0000\u0000\u1e72\u1e75"+
		"\u0001\u0000\u0000\u0000\u1e73\u1e71\u0001\u0000\u0000\u0000\u1e73\u1e74"+
		"\u0001\u0000\u0000\u0000\u1e74\u042d\u0001\u0000\u0000\u0000\u1e75\u1e73"+
		"\u0001\u0000\u0000\u0000\u1e76\u1e7a\u0005\u00f2\u0000\u0000\u1e77\u1e78"+
		"\u0005\u00ff\u0000\u0000\u1e78\u1e7a\u0005\u0218\u0000\u0000\u1e79\u1e76"+
		"\u0001\u0000\u0000\u0000\u1e79\u1e77\u0001\u0000\u0000\u0000\u1e7a\u042f"+
		"\u0001\u0000\u0000\u0000\u1e7b\u1e7c\u0005\u011b\u0000\u0000\u1e7c\u1e7d"+
		"\u0003\u00fe\u007f\u0000\u1e7d\u1e7e\u0003\u02d8\u016c\u0000\u1e7e\u0431"+
		"\u0001\u0000\u0000\u0000\u1e7f\u1e81\u0005T\u0000\u0000\u1e80\u1e82\u0005"+
		"\u0155\u0000\u0000\u1e81\u1e80\u0001\u0000\u0000\u0000\u1e81\u1e82\u0001"+
		"\u0000\u0000\u0000\u1e82\u1e83\u0001\u0000\u0000\u0000\u1e83\u1e84\u0005"+
		"\u01a1\u0000\u0000\u1e84\u1e86\u0005j\u0000\u0000\u1e85\u1e87\u0003\u02b0"+
		"\u0158\u0000\u1e86\u1e85\u0001\u0000\u0000\u0000\u1e86\u1e87\u0001\u0000"+
		"\u0000\u0000\u1e87\u1e88\u0001\u0000\u0000\u0000\u1e88\u1e89\u0003\u0434"+
		"\u021a\u0000\u1e89\u1e8a\u0005\u0081\u0000\u0000\u1e8a\u1e90\u0003J%\u0000"+
		"\u1e8b\u1e8c\u0005m\u0000\u0000\u1e8c\u1e91\u0005\u0113\u0000\u0000\u1e8d"+
		"\u1e8e\u0005m\u0000\u0000\u1e8e\u1e8f\u0005\u00ff\u0000\u0000\u1e8f\u1e91"+
		"\u0005\u0113\u0000\u0000\u1e90\u1e8b\u0001\u0000\u0000\u0000\u1e90\u1e8d"+
		"\u0001\u0000\u0000\u0000\u1e90\u1e91\u0001\u0000\u0000\u0000\u1e91\u0433"+
		"\u0001\u0000\u0000\u0000\u1e92\u1e94\u0003\u0168\u00b4\u0000\u1e93\u1e95"+
		"\u0003\u0258\u012c\u0000\u1e94\u1e93\u0001\u0000\u0000\u0000\u1e94\u1e95"+
		"\u0001\u0000\u0000\u0000\u1e95\u1e96\u0001\u0000\u0000\u0000\u1e96\u1e99"+
		"\u0003\u02ee\u0177\u0000\u1e97\u1e98\u0005m\u0000\u0000\u1e98\u1e9a\u0003"+
		"\u021a\u010d\u0000\u1e99\u1e97\u0001\u0000\u0000\u0000\u1e99\u1e9a\u0001"+
		"\u0000\u0000\u0000\u1e9a\u1e9d\u0001\u0000\u0000\u0000\u1e9b\u1e9c\u0005"+
		"\u0151\u0000\u0000\u1e9c\u1e9e\u0003\u00fe\u007f\u0000\u1e9d\u1e9b\u0001"+
		"\u0000\u0000\u0000\u1e9d\u1e9e\u0001\u0000\u0000\u0000\u1e9e\u0435\u0001"+
		"\u0000\u0000\u0000\u1e9f\u1ea0\u0005\u0211\u0000\u0000\u1ea0\u1ea1\u0005"+
		"\u01a1\u0000\u0000\u1ea1\u1ea3\u0005j\u0000\u0000\u1ea2\u1ea4\u0005\u010f"+
		"\u0000\u0000\u1ea3\u1ea2\u0001\u0000\u0000\u0000\u1ea3\u1ea4\u0001\u0000"+
		"\u0000\u0000\u1ea4\u1ea5\u0001\u0000\u0000\u0000\u1ea5\u1eab\u0003\u0168"+
		"\u00b4\u0000\u1ea6\u1ea7\u0005m\u0000\u0000\u1ea7\u1eac\u0005\u0113\u0000"+
		"\u0000\u1ea8\u1ea9\u0005m\u0000\u0000\u1ea9\u1eaa\u0005\u00ff\u0000\u0000"+
		"\u1eaa\u1eac\u0005\u0113\u0000\u0000\u1eab\u1ea6\u0001\u0000\u0000\u0000"+
		"\u1eab\u1ea8\u0001\u0000\u0000\u0000\u1eab\u1eac\u0001\u0000\u0000\u0000"+
		"\u1eac\u0437\u0001\u0000\u0000\u0000\u1ead\u1eae\u0005U\u0000\u0000\u1eae"+
		"\u1eb0\u0005\u0221\u0000\u0000\u1eaf\u1eb1\u0003\u02b2\u0159\u0000\u1eb0"+
		"\u1eaf\u0001\u0000\u0000\u0000\u1eb0\u1eb1\u0001\u0000\u0000\u0000\u1eb1"+
		"\u1eb2\u0001\u0000\u0000\u0000\u1eb2\u1eb3\u0003\u00fe\u007f\u0000\u1eb3"+
		"\u1eb4\u0005\u0082\u0000\u0000\u1eb4\u1eb5\u0003\u0168\u00b4\u0000\u1eb5"+
		"\u1eb6\u0003\u043a\u021d\u0000\u1eb6\u0439\u0001\u0000\u0000\u0000\u1eb7"+
		"\u1eb8\u0005\u0087\u0000\u0000\u1eb8\u1eba\u0003\u028e\u0147\u0000\u1eb9"+
		"\u1eb7\u0001\u0000\u0000\u0000\u1eb9\u1eba\u0001\u0000\u0000\u0000\u1eba"+
		"\u1ec0\u0001\u0000\u0000\u0000\u1ebb\u1ebc\u0005\u007f\u0000\u0000\u1ebc"+
		"\u1ebd\u0005 \u0000\u0000\u1ebd\u1ebe\u0003\u011a\u008d\u0000\u1ebe\u1ebf"+
		"\u0005!\u0000\u0000\u1ebf\u1ec1\u0001\u0000\u0000\u0000\u1ec0\u1ebb\u0001"+
		"\u0000\u0000\u0000\u1ec0\u1ec1\u0001\u0000\u0000\u0000\u1ec1\u1ec8\u0001"+
		"\u0000\u0000\u0000\u1ec2\u1ec3\u0005m\u0000\u0000\u1ec3\u1ec4\u0005\u00fb"+
		"\u0000\u0000\u1ec4\u1ec5\u0005 \u0000\u0000\u1ec5\u1ec6\u0003\u011a\u008d"+
		"\u0000\u1ec6\u1ec7\u0005!\u0000\u0000\u1ec7\u1ec9\u0001\u0000\u0000\u0000"+
		"\u1ec8\u1ec2\u0001\u0000\u0000\u0000\u1ec8\u1ec9\u0001\u0000\u0000\u0000"+
		"\u1ec9\u1ece\u0001\u0000\u0000\u0000\u1eca\u1ecb\u0005\u0141\u0000\u0000"+
		"\u1ecb\u1ecc\u0005\u0087\u0000\u0000\u1ecc\u1ece\u0003\u00fe\u007f\u0000"+
		"\u1ecd\u1eb9\u0001\u0000\u0000\u0000\u1ecd\u1eca\u0001\u0000\u0000\u0000"+
		"\u1ece\u043b\u0001\u0000\u0000\u0000\u1ecf\u1ed0\u0005U\u0000\u0000\u1ed0"+
		"\u1ed1\u0005i\u0000\u0000\u1ed1\u1ed2\u0003\u0408\u0204\u0000\u1ed2\u1ed3"+
		"\u0003\u043e\u021f\u0000\u1ed3\u043d\u0001\u0000\u0000\u0000\u1ed4\u1ed6"+
		"\u0003\u0440\u0220\u0000\u1ed5\u1ed7\u0005\u0145\u0000\u0000\u1ed6\u1ed5"+
		"\u0001\u0000\u0000\u0000\u1ed6\u1ed7\u0001\u0000\u0000\u0000\u1ed7\u1ee9"+
		"\u0001\u0000\u0000\u0000\u1ed8\u1ed9\u0005\u0141\u0000\u0000\u1ed9\u1eda"+
		"\u0005\u0087\u0000\u0000\u1eda\u1ee9\u0003\u00fe\u007f\u0000\u1edb\u1edd"+
		"\u0005\u00ff\u0000\u0000\u1edc\u1edb\u0001\u0000\u0000\u0000\u1edc\u1edd"+
		"\u0001\u0000\u0000\u0000\u1edd\u1ede\u0001\u0000\u0000\u0000\u1ede\u1edf"+
		"\u0005\u0118\u0000\u0000\u1edf\u1ee0\u0005\u0082\u0000\u0000\u1ee0\u1ee1"+
		"\u0005\u011d\u0000\u0000\u1ee1\u1ee9\u0003\u00fe\u007f\u0000\u1ee2\u1ee3"+
		"\u0005\\\u0000\u0000\u1ee3\u1ee4\u0005X\u0000\u0000\u1ee4\u1ee9\u0003"+
		"\u00fe\u007f\u0000\u1ee5\u1ee6\u0005\u013c\u0000\u0000\u1ee6\u1ee7\u0005"+
		"\u0087\u0000\u0000\u1ee7\u1ee9\u0003\u023a\u011d\u0000\u1ee8\u1ed4\u0001"+
		"\u0000\u0000\u0000\u1ee8\u1ed8\u0001\u0000\u0000\u0000\u1ee8\u1edc\u0001"+
		"\u0000\u0000\u0000\u1ee8\u1ee2\u0001\u0000\u0000\u0000\u1ee8\u1ee5\u0001"+
		"\u0000\u0000\u0000\u1ee9\u043f\u0001\u0000\u0000\u0000\u1eea\u1eec\u0003"+
		"\u02a6\u0153\u0000\u1eeb\u1eea\u0001\u0000\u0000\u0000\u1eec\u1eed\u0001"+
		"\u0000\u0000\u0000\u1eed\u1eeb\u0001\u0000\u0000\u0000\u1eed\u1eee\u0001"+
		"\u0000\u0000\u0000\u1eee\u0441\u0001\u0000\u0000\u0000\u1eef\u1ef0\u0005"+
		"U\u0000\u0000\u1ef0\u1ef1\u0005g\u0000\u0000\u1ef1\u1ef2\u0003\u0408\u0204"+
		"\u0000\u1ef2\u1ef3\u0003\u0444\u0222\u0000\u1ef3\u0443\u0001\u0000\u0000"+
		"\u0000\u1ef4\u1ef6\u0003\u0440\u0220\u0000\u1ef5\u1ef7\u0005\u0145\u0000"+
		"\u0000\u1ef6\u1ef5\u0001\u0000\u0000\u0000\u1ef6\u1ef7\u0001\u0000\u0000"+
		"\u0000\u1ef7\u1f09\u0001\u0000\u0000\u0000\u1ef8\u1ef9\u0005\u0141\u0000"+
		"\u0000\u1ef9\u1efa\u0005\u0087\u0000\u0000\u1efa\u1f09\u0003\u00fe\u007f"+
		"\u0000\u1efb\u1efd\u0005\u00ff\u0000\u0000\u1efc\u1efb\u0001\u0000\u0000"+
		"\u0000\u1efc\u1efd\u0001\u0000\u0000\u0000\u1efd\u1efe\u0001\u0000\u0000"+
		"\u0000\u1efe\u1eff\u0005\u0118\u0000\u0000\u1eff\u1f00\u0005\u0082\u0000"+
		"\u0000\u1f00\u1f01\u0005\u011d\u0000\u0000\u1f01\u1f09\u0003\u00fe\u007f"+
		"\u0000\u1f02\u1f03\u0005\\\u0000\u0000\u1f03\u1f04\u0005X\u0000\u0000"+
		"\u1f04\u1f09\u0003\u00fe\u007f\u0000\u1f05\u1f06\u0005\u013c\u0000\u0000"+
		"\u1f06\u1f07\u0005\u0087\u0000\u0000\u1f07\u1f09\u0003\u023a\u011d\u0000"+
		"\u1f08\u1ef4\u0001\u0000\u0000\u0000\u1f08\u1ef8\u0001\u0000\u0000\u0000"+
		"\u1f08\u1efc\u0001\u0000\u0000\u0000\u1f08\u1f02\u0001\u0000\u0000\u0000"+
		"\u1f08\u1f05\u0001\u0000\u0000\u0000\u1f09\u0445\u0001\u0000\u0000\u0000"+
		"\u1f0a\u1f0b\u0005U\u0000\u0000\u1f0b\u1f0c\u0005\u0205\u0000\u0000\u1f0c"+
		"\u1f18\u0003\u00fe\u007f\u0000\u1f0d\u1f0e\u0005\u0141\u0000\u0000\u1f0e"+
		"\u1f0f\u0005\u0087\u0000\u0000\u1f0f\u1f19\u0003\u00fe\u007f\u0000\u1f10"+
		"\u1f11\u0005\u013c\u0000\u0000\u1f11\u1f12\u0005\u0087\u0000\u0000\u1f12"+
		"\u1f19\u0003\u023a\u011d\u0000\u1f13\u1f14\u0005\\\u0000\u0000\u1f14\u1f19"+
		"\u0003\u0264\u0132\u0000\u1f15\u1f16\u00073\u0000\u0000\u1f16\u1f17\u0005"+
		"]\u0000\u0000\u1f17\u1f19\u0003\u02a4\u0152\u0000\u1f18\u1f0d\u0001\u0000"+
		"\u0000\u0000\u1f18\u1f10\u0001\u0000\u0000\u0000\u1f18\u1f13\u0001\u0000"+
		"\u0000\u0000\u1f18\u1f15\u0001\u0000\u0000\u0000\u1f19\u0447\u0001\u0000"+
		"\u0000\u0000\u1f1a\u1f1b\u0005U\u0000\u0000\u1f1b\u1f1c\u0005\u0146\u0000"+
		"\u0000\u1f1c\u1f1d\u0003\u0408\u0204\u0000\u1f1d\u1f1e\u0003\u043e\u021f"+
		"\u0000\u1f1e\u0449\u0001\u0000\u0000\u0000\u1f1f\u1f20\u0005U\u0000\u0000"+
		"\u1f20\u1f21\u0005\u0148\u0000\u0000\u1f21\u1f22\u0003\u00fe\u007f\u0000"+
		"\u1f22\u1f23\u0005\u0082\u0000\u0000\u1f23\u1f24\u0003\u00f8|\u0000\u1f24"+
		"\u1f25\u0005\u0141\u0000\u0000\u1f25\u1f26\u0005\u0087\u0000\u0000\u1f26"+
		"\u1f27\u0003\u00fe\u007f\u0000\u1f27\u044b\u0001\u0000\u0000\u0000\u1f28"+
		"\u1f29\u0005U\u0000\u0000\u1f29\u1f2b\u0005\u014a\u0000\u0000\u1f2a\u1f2c"+
		"\u0003\u02b2\u0159\u0000\u1f2b\u1f2a\u0001\u0000\u0000\u0000\u1f2b\u1f2c"+
		"\u0001\u0000\u0000\u0000\u1f2c\u1f2d\u0001\u0000\u0000\u0000\u1f2d\u1f2e"+
		"\u0003\u0168\u00b4\u0000\u1f2e\u1f2f\u0003\u044e\u0227\u0000\u1f2f\u044d"+
		"\u0001\u0000\u0000\u0000\u1f30\u1f39\u0003\u0396\u01cb\u0000\u1f31\u1f39"+
		"\u0003\u0254\u012a\u0000\u1f32\u1f33\u0005\u0141\u0000\u0000\u1f33\u1f34"+
		"\u0005\u0087\u0000\u0000\u1f34\u1f39\u0003\u00fe\u007f\u0000\u1f35\u1f36"+
		"\u0005\\\u0000\u0000\u1f36\u1f37\u0005X\u0000\u0000\u1f37\u1f39\u0003"+
		"\u00fe\u007f\u0000\u1f38\u1f30\u0001\u0000\u0000\u0000\u1f38\u1f31\u0001"+
		"\u0000\u0000\u0000\u1f38\u1f32\u0001\u0000\u0000\u0000\u1f38\u1f35\u0001"+
		"\u0000\u0000\u0000\u1f39\u044f\u0001\u0000\u0000\u0000\u1f3a\u1f3b\u0005"+
		"U\u0000\u0000\u1f3b\u1f3c\u0005\u021c\u0000\u0000\u1f3c\u1f48\u0003\u00fe"+
		"\u007f\u0000\u1f3d\u1f3e\u0003\u0452\u0229\u0000\u1f3e\u1f3f\u0003\u039e"+
		"\u01cf\u0000\u1f3f\u1f49\u0001\u0000\u0000\u0000\u1f40\u1f49\u0003\u0452"+
		"\u0229\u0000\u1f41\u1f49\u0003\u039e\u01cf\u0000\u1f42\u1f43\u0005\u0141"+
		"\u0000\u0000\u1f43\u1f44\u0005\u0087\u0000\u0000\u1f44\u1f49\u0003\u00fe"+
		"\u007f\u0000\u1f45\u1f46\u0005\u013c\u0000\u0000\u1f46\u1f47\u0005\u0087"+
		"\u0000\u0000\u1f47\u1f49\u0003\u023a\u011d\u0000\u1f48\u1f3d\u0001\u0000"+
		"\u0000\u0000\u1f48\u1f40\u0001\u0000\u0000\u0000\u1f48\u1f41\u0001\u0000"+
		"\u0000\u0000\u1f48\u1f42\u0001\u0000\u0000\u0000\u1f48\u1f45\u0001\u0000"+
		"\u0000\u0000\u1f49\u0451\u0001\u0000\u0000\u0000\u1f4a\u1f4b\u0005\u019c"+
		"\u0000\u0000\u1f4b\u1f4c\u00074\u0000\u0000\u1f4c\u0453\u0001\u0000\u0000"+
		"\u0000\u1f4d\u1f4e\u0005U\u0000\u0000\u1f4e\u1f66\u0005\u014f\u0000\u0000"+
		"\u1f4f\u1f51\u0003\u02b2\u0159\u0000\u1f50\u1f4f\u0001\u0000\u0000\u0000"+
		"\u1f50\u1f51\u0001\u0000\u0000\u0000\u1f51\u1f52\u0001\u0000\u0000\u0000"+
		"\u1f52\u1f53\u0003\u01ec\u00f6\u0000\u1f53\u1f54\u0005\\\u0000\u0000\u1f54"+
		"\u1f55\u0005\u014f\u0000\u0000\u1f55\u1f56\u0003\u0230\u0118\u0000\u1f56"+
		"\u1f67\u0001\u0000\u0000\u0000\u1f57\u1f58\u0003\u01ec\u00f6\u0000\u1f58"+
		"\u1f59\u0005\u0141\u0000\u0000\u1f59\u1f5a\u0005\u0087\u0000\u0000\u1f5a"+
		"\u1f5b\u0003\u00fe\u007f\u0000\u1f5b\u1f67\u0001\u0000\u0000\u0000\u1f5c"+
		"\u1f5d\u0003\u01ec\u00f6\u0000\u1f5d\u1f5e\u0005\\\u0000\u0000\u1f5e\u1f5f"+
		"\u0005X\u0000\u0000\u1f5f\u1f60\u0003\u00fe\u007f\u0000\u1f60\u1f67\u0001"+
		"\u0000\u0000\u0000\u1f61\u1f62\u0003\u01ec\u00f6\u0000\u1f62\u1f63\u0005"+
		"\u013c\u0000\u0000\u1f63\u1f64\u0005\u0087\u0000\u0000\u1f64\u1f65\u0003"+
		"\u023a\u011d\u0000\u1f65\u1f67\u0001\u0000\u0000\u0000\u1f66\u1f50\u0001"+
		"\u0000\u0000\u0000\u1f66\u1f57\u0001\u0000\u0000\u0000\u1f66\u1f5c\u0001"+
		"\u0000\u0000\u0000\u1f66\u1f61\u0001\u0000\u0000\u0000\u1f67\u0455\u0001"+
		"\u0000\u0000\u0000\u1f68\u1f69\u0005U\u0000\u0000\u1f69\u1f6a\u0005\u021d"+
		"\u0000\u0000\u1f6a\u1f83\u0003\u00fe\u007f\u0000\u1f6b\u1f6c\u0005\u0141"+
		"\u0000\u0000\u1f6c\u1f6d\u0005\u0087\u0000\u0000\u1f6d\u1f84\u0003\u00fe"+
		"\u007f\u0000\u1f6e\u1f6f\u0005\u013c\u0000\u0000\u1f6f\u1f70\u0005\u0087"+
		"\u0000\u0000\u1f70\u1f84\u0003\u023a\u011d\u0000\u1f71\u1f72\u0005\\\u0000"+
		"\u0000\u1f72\u1f84\u0003\u0264\u0132\u0000\u1f73\u1f74\u0005\u01ec\u0000"+
		"\u0000\u1f74\u1f84\u0005\u0254\u0000\u0000\u1f75\u1f76\u0005\u0211\u0000"+
		"\u0000\u1f76\u1f79\u0005\u0205\u0000\u0000\u1f77\u1f78\u0005m\u0000\u0000"+
		"\u1f78\u1f7a\u0003\u0264\u0132\u0000\u1f79\u1f77\u0001\u0000\u0000\u0000"+
		"\u1f79\u1f7a\u0001\u0000\u0000\u0000\u1f7a\u1f84\u0001\u0000\u0000\u0000"+
		"\u1f7b\u1f7c\u0005\\\u0000\u0000\u1f7c\u1f7d\u0005\u0205\u0000\u0000\u1f7d"+
		"\u1f80\u0003\u0458\u022c\u0000\u1f7e\u1f7f\u0005m\u0000\u0000\u1f7f\u1f81"+
		"\u0003\u0264\u0132\u0000\u1f80\u1f7e\u0001\u0000\u0000\u0000\u1f80\u1f81"+
		"\u0001\u0000\u0000\u0000\u1f81\u1f84\u0001\u0000\u0000\u0000\u1f82\u1f84"+
		"\u0007)\u0000\u0000\u1f83\u1f6b\u0001\u0000\u0000\u0000\u1f83\u1f6e\u0001"+
		"\u0000\u0000\u0000\u1f83\u1f71\u0001\u0000\u0000\u0000\u1f83\u1f73\u0001"+
		"\u0000\u0000\u0000\u1f83\u1f75\u0001\u0000\u0000\u0000\u1f83\u1f7b\u0001"+
		"\u0000\u0000\u0000\u1f83\u1f82\u0001\u0000\u0000\u0000\u1f84\u0457\u0001"+
		"\u0000\u0000\u0000\u1f85\u1f8a\u0003\u045a\u022d\u0000\u1f86\u1f87\u0005"+
		"&\u0000\u0000\u1f87\u1f89\u0003\u045a\u022d\u0000\u1f88\u1f86\u0001\u0000"+
		"\u0000\u0000\u1f89\u1f8c\u0001\u0000\u0000\u0000\u1f8a\u1f88\u0001\u0000"+
		"\u0000\u0000\u1f8a\u1f8b\u0001\u0000\u0000\u0000\u1f8b\u0459\u0001\u0000"+
		"\u0000\u0000\u1f8c\u1f8a\u0001\u0000\u0000\u0000\u1f8d\u1f8e\u0003\u026a"+
		"\u0135\u0000\u1f8e\u045b\u0001\u0000\u0000\u0000\u1f8f\u1f90\u0005U\u0000"+
		"\u0000\u1f90\u1f95\u0005\u01be\u0000\u0000\u1f91\u1f92\u0005\\\u0000\u0000"+
		"\u1f92\u1f96\u0003\u029c\u014e\u0000\u1f93\u1f94\u0005\u0143\u0000\u0000"+
		"\u1f94\u1f96\u0003\u02a2\u0151\u0000\u1f95\u1f91\u0001\u0000\u0000\u0000"+
		"\u1f95\u1f93\u0001\u0000\u0000\u0000\u1f96\u045d\u0001\u0000\u0000\u0000"+
		"\u1f97\u1f98\u0005U\u0000\u0000\u1f98\u1f99\u0005\u0151\u0000\u0000\u1f99"+
		"\u1fa3\u0003\u00fe\u007f\u0000\u1f9a\u1fa4\u0005\\\u0000\u0000\u1f9b\u1f9c"+
		"\u0005\u0143\u0000\u0000\u1f9c\u1fa4\u0003\u021a\u010d\u0000\u1f9d\u1f9e"+
		"\u0005\u0141\u0000\u0000\u1f9e\u1f9f\u0005\u0087\u0000\u0000\u1f9f\u1fa4"+
		"\u0003\u00fe\u007f\u0000\u1fa0\u1fa1\u0005\u013c\u0000\u0000\u1fa1\u1fa2"+
		"\u0005\u0087\u0000\u0000\u1fa2\u1fa4\u0003\u023a\u011d\u0000\u1fa3\u1f9a"+
		"\u0001\u0000\u0000\u0000\u1fa3\u1f9b\u0001\u0000\u0000\u0000\u1fa3\u1f9d"+
		"\u0001\u0000\u0000\u0000\u1fa3\u1fa0\u0001\u0000\u0000\u0000\u1fa4\u045f"+
		"\u0001\u0000\u0000\u0000\u1fa5\u1fa6\u0005U\u0000\u0000\u1fa6\u1fa7\u0005"+
		"\u00cf\u0000\u0000\u1fa7\u1fa8\u0005\u021e\u0000\u0000\u1fa8\u1fa9\u0005"+
		"\u01d5\u0000\u0000\u1fa9\u1faa\u0003\u01ec\u00f6\u0000\u1faa\u1fab\u0003"+
		"\u0462\u0231\u0000\u1fab\u0461\u0001\u0000\u0000\u0000\u1fac\u1fad\u0005"+
		"\u0141\u0000\u0000\u1fad\u1fae\u0005\u0087\u0000\u0000\u1fae\u1fd1\u0003"+
		"\u00fe\u007f\u0000\u1faf\u1fb0\u0005\\\u0000\u0000\u1fb0\u1fb1\u0005X"+
		"\u0000\u0000\u1fb1\u1fd1\u0003\u00fe\u007f\u0000\u1fb2\u1fb3\u0005\u013c"+
		"\u0000\u0000\u1fb3\u1fb4\u0005\u0087\u0000\u0000\u1fb4\u1fd1\u0003\u023a"+
		"\u011d\u0000\u1fb5\u1fb6\u00075\u0000\u0000\u1fb6\u1fb7\u0005\u01fa\u0000"+
		"\u0000\u1fb7\u1fb8\u0005\u0086\u0000\u0000\u1fb8\u1fba\u0003\u01f6\u00fb"+
		"\u0000\u1fb9\u1fbb\u0005m\u0000\u0000\u1fba\u1fb9\u0001\u0000\u0000\u0000"+
		"\u1fba\u1fbb\u0001\u0000\u0000\u0000\u1fbb\u1fbc\u0001\u0000\u0000\u0000"+
		"\u1fbc\u1fbd\u0003\u0464\u0232\u0000\u1fbd\u1fd1\u0001\u0000\u0000\u0000"+
		"\u1fbe\u1fbf\u0005U\u0000\u0000\u1fbf\u1fc2\u0005\u01fa\u0000\u0000\u1fc0"+
		"\u1fc1\u0005\u0086\u0000\u0000\u1fc1\u1fc3\u0003\u01f6\u00fb\u0000\u1fc2"+
		"\u1fc0\u0001\u0000\u0000\u0000\u1fc2\u1fc3\u0001\u0000\u0000\u0000\u1fc3"+
		"\u1fc4\u0001\u0000\u0000\u0000\u1fc4\u1fc5\u0005\u020f\u0000\u0000\u1fc5"+
		"\u1fc6\u0003\u01ec\u00f6\u0000\u1fc6\u1fc7\u0005m\u0000\u0000\u1fc7\u1fc8"+
		"\u0003\u01ec\u00f6\u0000\u1fc8\u1fd1\u0001\u0000\u0000\u0000\u1fc9\u1fca"+
		"\u0005V\u0000\u0000\u1fca\u1fcc\u0005\u01fa\u0000\u0000\u1fcb\u1fcd\u0003"+
		"\u02b2\u0159\u0000\u1fcc\u1fcb\u0001\u0000\u0000\u0000\u1fcc\u1fcd\u0001"+
		"\u0000\u0000\u0000\u1fcd\u1fce\u0001\u0000\u0000\u0000\u1fce\u1fcf\u0005"+
		"\u0086\u0000\u0000\u1fcf\u1fd1\u0003\u01f6\u00fb\u0000\u1fd0\u1fac\u0001"+
		"\u0000\u0000\u0000\u1fd0\u1faf\u0001\u0000\u0000\u0000\u1fd0\u1fb2\u0001"+
		"\u0000\u0000\u0000\u1fd0\u1fb5\u0001\u0000\u0000\u0000\u1fd0\u1fbe\u0001"+
		"\u0000\u0000\u0000\u1fd0\u1fc9\u0001\u0000\u0000\u0000\u1fd1\u0463\u0001"+
		"\u0000\u0000\u0000\u1fd2\u1fd7\u0003\u01ec\u00f6\u0000\u1fd3\u1fd4\u0005"+
		"&\u0000\u0000\u1fd4\u1fd6\u0003\u01ec\u00f6\u0000\u1fd5\u1fd3\u0001\u0000"+
		"\u0000\u0000\u1fd6\u1fd9\u0001\u0000\u0000\u0000\u1fd7\u1fd5\u0001\u0000"+
		"\u0000\u0000\u1fd7\u1fd8\u0001\u0000\u0000\u0000\u1fd8\u0465\u0001\u0000"+
		"\u0000\u0000\u1fd9\u1fd7\u0001\u0000\u0000\u0000\u1fda\u1fdb\u0005U\u0000"+
		"\u0000\u1fdb\u1fdc\u0005\u00cf\u0000\u0000\u1fdc\u1fdd\u0005\u021e\u0000"+
		"\u0000\u1fdd\u1fde\u0005\u01d8\u0000\u0000\u1fde\u1fe9\u0003\u01ec\u00f6"+
		"\u0000\u1fdf\u1fe0\u0005\u0141\u0000\u0000\u1fe0\u1fe1\u0005\u0087\u0000"+
		"\u0000\u1fe1\u1fea\u0003\u00fe\u007f\u0000\u1fe2\u1fe3\u0005\\\u0000\u0000"+
		"\u1fe3\u1fe4\u0005X\u0000\u0000\u1fe4\u1fea\u0003\u00fe\u007f\u0000\u1fe5"+
		"\u1fe6\u0005\u013c\u0000\u0000\u1fe6\u1fe7\u0005\u0087\u0000\u0000\u1fe7"+
		"\u1fea\u0003\u023a\u011d\u0000\u1fe8\u1fea\u0003\u0264\u0132\u0000\u1fe9"+
		"\u1fdf\u0001\u0000\u0000\u0000\u1fe9\u1fe2\u0001\u0000\u0000\u0000\u1fe9"+
		"\u1fe5\u0001\u0000\u0000\u0000\u1fe9\u1fe8\u0001\u0000\u0000\u0000\u1fea"+
		"\u0467\u0001\u0000\u0000\u0000\u1feb\u1fec\u0005U\u0000\u0000\u1fec\u1fed"+
		"\u0005\u00cf\u0000\u0000\u1fed\u1fee\u0005\u021e\u0000\u0000\u1fee\u1ff7"+
		"\u0005\u0202\u0000\u0000\u1fef\u1ff0\u0003\u01ec\u00f6\u0000\u1ff0\u1ff1"+
		"\u0005\u0141\u0000\u0000\u1ff1\u1ff2\u0005\u0087\u0000\u0000\u1ff2\u1ff3"+
		"\u0003\u00fe\u007f\u0000\u1ff3\u1ff8\u0001\u0000\u0000\u0000\u1ff4\u1ff5"+
		"\u0005\\\u0000\u0000\u1ff5\u1ff6\u0005X\u0000\u0000\u1ff6\u1ff8\u0003"+
		"\u00fe\u007f\u0000\u1ff7\u1fef\u0001\u0000\u0000\u0000\u1ff7\u1ff4\u0001"+
		"\u0000\u0000\u0000\u1ff8\u0469\u0001\u0000\u0000\u0000\u1ff9\u1ffa\u0005"+
		"U\u0000\u0000\u1ffa\u1ffb\u0005\u00cf\u0000\u0000\u1ffb\u1ffc\u0005\u021e"+
		"\u0000\u0000\u1ffc\u2005\u0005\u022d\u0000\u0000\u1ffd\u1ffe\u0003\u01ec"+
		"\u00f6\u0000\u1ffe\u1fff\u0005\u0141\u0000\u0000\u1fff\u2000\u0005\u0087"+
		"\u0000\u0000\u2000\u2001\u0003\u00fe\u007f\u0000\u2001\u2006\u0001\u0000"+
		"\u0000\u0000\u2002\u2003\u0005\\\u0000\u0000\u2003\u2004\u0005X\u0000"+
		"\u0000\u2004\u2006\u0003\u00fe\u007f\u0000\u2005\u1ffd\u0001\u0000\u0000"+
		"\u0000\u2005\u2002\u0001\u0000\u0000\u0000\u2006\u046b\u0001\u0000\u0000"+
		"\u0000\u2007\u2008\u0005U\u0000\u0000\u2008\u2009\u0005h\u0000\u0000\u2009"+
		"\u200a\u0003\u00fe\u007f\u0000\u200a\u200b\u0005\u0082\u0000\u0000\u200b"+
		"\u2016\u0003\u0168\u00b4\u0000\u200c\u200d\u0005\u0141\u0000\u0000\u200d"+
		"\u200e\u0005\u0087\u0000\u0000\u200e\u2017\u0003\u00fe\u007f\u0000\u200f"+
		"\u2011\u0005\u00ff\u0000\u0000\u2010\u200f\u0001\u0000\u0000\u0000\u2010"+
		"\u2011\u0001\u0000\u0000\u0000\u2011\u2012\u0001\u0000\u0000\u0000\u2012"+
		"\u2013\u0005\u0118\u0000\u0000\u2013\u2014\u0005\u0082\u0000\u0000\u2014"+
		"\u2015\u0005\u011d\u0000\u0000\u2015\u2017\u0003\u00fe\u007f\u0000\u2016"+
		"\u200c\u0001\u0000\u0000\u0000\u2016\u2010\u0001\u0000\u0000\u0000\u2017"+
		"\u046d\u0001\u0000\u0000\u0000\u2018\u2019\u0005U\u0000\u0000\u2019\u201a"+
		"\u0005\u00cb\u0000\u0000\u201a\u201b\u0003\u01ec\u00f6\u0000\u201b\u201c"+
		"\u0003\u0470\u0238\u0000\u201c\u046f\u0001\u0000\u0000\u0000\u201d\u203f"+
		"\u0003\u0472\u0239\u0000\u201e\u201f\u0005[\u0000\u0000\u201f\u2021\u0005"+
		"\u00d8\u0000\u0000\u2020\u2022\u0003\u02b0\u0158\u0000\u2021\u2020\u0001"+
		"\u0000\u0000\u0000\u2021\u2022\u0001\u0000\u0000\u0000\u2022\u2023\u0001"+
		"\u0000\u0000\u0000\u2023\u2026\u0005\u0254\u0000\u0000\u2024\u2025\u0007"+
		"6\u0000\u0000\u2025\u2027\u0005\u0254\u0000\u0000\u2026\u2024\u0001\u0000"+
		"\u0000\u0000\u2026\u2027\u0001\u0000\u0000\u0000\u2027\u203f\u0001\u0000"+
		"\u0000\u0000\u2028\u2029\u0005\u0141\u0000\u0000\u2029\u202a\u0005\u00d8"+
		"\u0000\u0000\u202a\u202b\u0005\u0254\u0000\u0000\u202b\u202c\u0005\u0087"+
		"\u0000\u0000\u202c\u203f\u0005\u0254\u0000\u0000\u202d\u202e\u0005\u0141"+
		"\u0000\u0000\u202e\u202f\u0005\u0087\u0000\u0000\u202f\u203f\u0003\u00fe"+
		"\u007f\u0000\u2030\u2031\u0005\u0141\u0000\u0000\u2031\u2032\u0005\u01c6"+
		"\u0000\u0000\u2032\u2033\u0003\u00fe\u007f\u0000\u2033\u2034\u0005\u0087"+
		"\u0000\u0000\u2034\u2036\u0003\u00fe\u007f\u0000\u2035\u2037\u0003\u02c0"+
		"\u0160\u0000\u2036\u2035\u0001\u0000\u0000\u0000\u2036\u2037\u0001\u0000"+
		"\u0000\u0000\u2037\u203f\u0001\u0000\u0000\u0000\u2038\u2039\u0005\\\u0000"+
		"\u0000\u2039\u203a\u0005X\u0000\u0000\u203a\u203f\u0003\u00fe\u007f\u0000"+
		"\u203b\u203c\u0005\u013c\u0000\u0000\u203c\u203d\u0005\u0087\u0000\u0000"+
		"\u203d\u203f\u0003\u023a\u011d\u0000\u203e\u201d\u0001\u0000\u0000\u0000"+
		"\u203e\u201e\u0001\u0000\u0000\u0000\u203e\u2028\u0001\u0000\u0000\u0000"+
		"\u203e\u202d\u0001\u0000\u0000\u0000\u203e\u2030\u0001\u0000\u0000\u0000"+
		"\u203e\u2038\u0001\u0000\u0000\u0000\u203e\u203b\u0001\u0000\u0000\u0000"+
		"\u203f\u0471\u0001\u0000\u0000\u0000\u2040\u2043\u0003\u0474\u023a\u0000"+
		"\u2041\u2042\u0005&\u0000\u0000\u2042\u2044\u0003\u0474\u023a\u0000\u2043"+
		"\u2041\u0001\u0000\u0000\u0000\u2043\u2044\u0001\u0000\u0000\u0000\u2044"+
		"\u0473\u0001\u0000\u0000\u0000\u2045\u2046\u0005[\u0000\u0000\u2046\u2047"+
		"\u0005\u01c6\u0000\u0000\u2047\u2049\u0003\u01e8\u00f4\u0000\u2048\u204a"+
		"\u0003\u02c0\u0160\u0000\u2049\u2048\u0001\u0000\u0000\u0000\u2049\u204a"+
		"\u0001\u0000\u0000\u0000\u204a\u2063\u0001\u0000\u0000\u0000\u204b\u204c"+
		"\u0005V\u0000\u0000\u204c\u204e\u0005\u01c6\u0000\u0000\u204d\u204f\u0003"+
		"\u02b2\u0159\u0000\u204e\u204d\u0001\u0000\u0000\u0000\u204e\u204f\u0001"+
		"\u0000\u0000\u0000\u204f\u2050\u0001\u0000\u0000\u0000\u2050\u2052\u0003"+
		"\u016a\u00b5\u0000\u2051\u2053\u0003\u02c0\u0160\u0000\u2052\u2051\u0001"+
		"\u0000\u0000\u0000\u2052\u2053\u0001\u0000\u0000\u0000\u2053\u2063\u0001"+
		"\u0000\u0000\u0000\u2054\u2055\u0005U\u0000\u0000\u2055\u2056\u0005\u01c6"+
		"\u0000\u0000\u2056\u2058\u0003\u016a\u00b5\u0000\u2057\u2059\u0003\u03a6"+
		"\u01d3\u0000\u2058\u2057\u0001\u0000\u0000\u0000\u2058\u2059\u0001\u0000"+
		"\u0000\u0000\u2059\u205a\u0001\u0000\u0000\u0000\u205a\u205b\u0005\u00cb"+
		"\u0000\u0000\u205b\u205d\u0003\u018a\u00c5\u0000\u205c\u205e\u0003\u01ea"+
		"\u00f5\u0000\u205d\u205c\u0001\u0000\u0000\u0000\u205d\u205e\u0001\u0000"+
		"\u0000\u0000\u205e\u2060\u0001\u0000\u0000\u0000\u205f\u2061\u0003\u02c0"+
		"\u0160\u0000\u2060\u205f\u0001\u0000\u0000\u0000\u2060\u2061\u0001\u0000"+
		"\u0000\u0000\u2061\u2063\u0001\u0000\u0000\u0000\u2062\u2045\u0001\u0000"+
		"\u0000\u0000\u2062\u204b\u0001\u0000\u0000\u0000\u2062\u2054\u0001\u0000"+
		"\u0000\u0000\u2063\u0475\u0001\u0000\u0000\u0000\u2064\u2065\u0005U\u0000"+
		"\u0000\u2065\u2066\u0005\u0108\u0000\u0000\u2066\u2067\u0005\u01fa\u0000"+
		"\u0000\u2067\u2068\u0005\u0086\u0000\u0000\u2068\u2069\u0003\u0478\u023c"+
		"\u0000\u2069\u206a\u0005\u021c\u0000\u0000\u206a\u206b\u0003\u00fe\u007f"+
		"\u0000\u206b\u206c\u0003\u039e\u01cf\u0000\u206c\u0477\u0001\u0000\u0000"+
		"\u0000\u206d\u2070\u0003\u023a\u011d\u0000\u206e\u2070\u0005\u0108\u0000"+
		"\u0000\u206f\u206d\u0001\u0000\u0000\u0000\u206f\u206e\u0001\u0000\u0000"+
		"\u0000\u2070\u0479\u0001\u0000\u0000\u0000\u2071\u2072\u0005U\u0000\u0000"+
		"\u2072\u2074\u0005j\u0000\u0000\u2073\u2075\u0003\u02b2\u0159\u0000\u2074"+
		"\u2073\u0001\u0000\u0000\u0000\u2074\u2075\u0001\u0000\u0000\u0000\u2075"+
		"\u2076\u0001\u0000\u0000\u0000\u2076\u2077\u0003\u0168\u00b4\u0000\u2077"+
		"\u2078\u0003\u047c\u023e\u0000\u2078\u047b\u0001\u0000\u0000\u0000\u2079"+
		"\u2089\u0003\u0396\u01cb\u0000\u207a\u207b\u0005\u0141\u0000\u0000\u207b"+
		"\u207c\u0005\u0087\u0000\u0000\u207c\u2089\u0003\u00fe\u007f\u0000\u207d"+
		"\u207f\u0005\u0141\u0000\u0000\u207e\u2080\u0005^\u0000\u0000\u207f\u207e"+
		"\u0001\u0000\u0000\u0000\u207f\u2080\u0001\u0000\u0000\u0000\u2080\u2081"+
		"\u0001\u0000\u0000\u0000\u2081\u2082\u0003\u00fe\u007f\u0000\u2082\u2083"+
		"\u0005\u0087\u0000\u0000\u2083\u2084\u0003\u00fe\u007f\u0000\u2084\u2089"+
		"\u0001\u0000\u0000\u0000\u2085\u2086\u0005\\\u0000\u0000\u2086\u2087\u0005"+
		"X\u0000\u0000\u2087\u2089\u0003\u00fe\u007f\u0000\u2088\u2079\u0001\u0000"+
		"\u0000\u0000\u2088\u207a\u0001\u0000\u0000\u0000\u2088\u207d\u0001\u0000"+
		"\u0000\u0000\u2088\u2085\u0001\u0000\u0000\u0000\u2089\u047d\u0001\u0000"+
		"\u0000\u0000\u208a\u208d\u0005\u00c2\u0000\u0000\u208b\u208e\u0003\u0118"+
		"\u008c\u0000\u208c\u208e\u0005\u0092\u0000\u0000\u208d\u208b\u0001\u0000"+
		"\u0000\u0000\u208d\u208c\u0001\u0000\u0000\u0000\u208e\u047f\u0001\u0000"+
		"\u0000\u0000\u208f\u2091\u0005\u010c\u0000\u0000\u2090\u2092\u0005\u0240"+
		"\u0000\u0000\u2091\u2090\u0001\u0000\u0000\u0000\u2091\u2092\u0001\u0000"+
		"\u0000\u0000\u2092\u209b\u0001\u0000\u0000\u0000\u2093\u2095\u0003\u0168"+
		"\u00b4\u0000\u2094\u2096\u0003\u0482\u0241\u0000\u2095\u2094\u0001\u0000"+
		"\u0000\u0000\u2095\u2096\u0001\u0000\u0000\u0000\u2096\u209c\u0001\u0000"+
		"\u0000\u0000\u2097\u2098\u0003\u00fe\u007f\u0000\u2098\u2099\u0005\u0082"+
		"\u0000\u0000\u2099\u209a\u0003\u0168\u00b4\u0000\u209a\u209c\u0001\u0000"+
		"\u0000\u0000\u209b\u2093\u0001\u0000\u0000\u0000\u209b\u2097\u0001\u0000"+
		"\u0000\u0000\u209b\u209c\u0001\u0000\u0000\u0000\u209c\u0481\u0001\u0000"+
		"\u0000\u0000\u209d\u209e\u0005\u007f\u0000\u0000\u209e\u209f\u0003\u00fe"+
		"\u007f\u0000\u209f\u0483\u0001\u0000\u0000\u0000\u20a0\u20a1\u0005\u01d6"+
		"\u0000\u0000\u20a1\u20a2\u0005\u0082\u0000\u0000\u20a2\u20a3\u0003\u0486"+
		"\u0243\u0000\u20a3\u0485\u0001\u0000\u0000\u0000\u20a4\u20a5\u0003\u048e"+
		"\u0247\u0000\u20a5\u20a6\u0003\u01ec\u00f6\u0000\u20a6\u20a7\u0005\u008a"+
		"\u0000\u0000\u20a7\u20a8\u0003\u0490\u0248\u0000\u20a8\u2114\u0001\u0000"+
		"\u0000\u0000\u20a9\u20aa\u0005^\u0000\u0000\u20aa\u20ab\u0003\u01ec\u00f6"+
		"\u0000\u20ab\u20ac\u0005\u008a\u0000\u0000\u20ac\u20ad\u0003\u0490\u0248"+
		"\u0000\u20ad\u2114\u0001\u0000\u0000\u0000\u20ae\u20af\u0003\u048a\u0245"+
		"\u0000\u20af\u20b0\u0003\u00fe\u007f\u0000\u20b0\u20b1\u0005\u008a\u0000"+
		"\u0000\u20b1\u20b2\u0003\u0490\u0248\u0000\u20b2\u2114\u0001\u0000\u0000"+
		"\u0000\u20b3\u20b4\u0005\u00cb\u0000\u0000\u20b4\u20b5\u0003\u018a\u00c5"+
		"\u0000\u20b5\u20b6\u0005\u008a\u0000\u0000\u20b6\u20b7\u0003\u0490\u0248"+
		"\u0000\u20b7\u2114\u0001\u0000\u0000\u0000\u20b8\u20b9\u0005\u0119\u0000"+
		"\u0000\u20b9\u20ba\u0003\u018a\u00c5\u0000\u20ba\u20bb\u0005\u008a\u0000"+
		"\u0000\u20bb\u20bc\u0003\u0490\u0248\u0000\u20bc\u2114\u0001\u0000\u0000"+
		"\u0000\u20bd\u20be\u0005\u01c3\u0000\u0000\u20be\u20bf\u0003\u040c\u0206"+
		"\u0000\u20bf\u20c0\u0005\u008a\u0000\u0000\u20c0\u20c1\u0003\u0490\u0248"+
		"\u0000\u20c1\u2114\u0001\u0000\u0000\u0000\u20c2\u20c3\u0005g\u0000\u0000"+
		"\u20c3\u20c4\u0003\u0408\u0204\u0000\u20c4\u20c5\u0005\u008a\u0000\u0000"+
		"\u20c5\u20c6\u0003\u0490\u0248\u0000\u20c6\u2114\u0001\u0000\u0000\u0000"+
		"\u20c7\u20c8\u0005\u01a2\u0000\u0000\u20c8\u20c9\u0003\u03c6\u01e3\u0000"+
		"\u20c9\u20ca\u0005\u008a\u0000\u0000\u20ca\u20cb\u0003\u0490\u0248\u0000"+
		"\u20cb\u2114\u0001\u0000\u0000\u0000\u20cc\u20cd\u0005`\u0000\u0000\u20cd"+
		"\u20ce\u0003\u00fe\u007f\u0000\u20ce\u20cf\u0005\u0082\u0000\u0000\u20cf"+
		"\u20d0\u0003\u01ec\u00f6\u0000\u20d0\u20d1\u0005\u008a\u0000\u0000\u20d1"+
		"\u20d2\u0003\u0490\u0248\u0000\u20d2\u2114\u0001\u0000\u0000\u0000\u20d3"+
		"\u20d4\u0005`\u0000\u0000\u20d4\u20d5\u0003\u00fe\u007f\u0000\u20d5\u20d6"+
		"\u0005\u0082\u0000\u0000\u20d6\u20d7\u0005\u0119\u0000\u0000\u20d7\u20d8"+
		"\u0003\u01ec\u00f6\u0000\u20d8\u20d9\u0005\u008a\u0000\u0000\u20d9\u20da"+
		"\u0003\u0490\u0248\u0000\u20da\u2114\u0001\u0000\u0000\u0000\u20db\u20dc"+
		"\u0003\u0488\u0244\u0000\u20dc\u20dd\u0003\u00fe\u007f\u0000\u20dd\u20de"+
		"\u0005\u0082\u0000\u0000\u20de\u20df\u0003\u01ec\u00f6\u0000\u20df\u20e0"+
		"\u0005\u008a\u0000\u0000\u20e0\u20e1\u0003\u0490\u0248\u0000\u20e1\u2114"+
		"\u0001\u0000\u0000\u0000\u20e2\u20e3\u0005i\u0000\u0000\u20e3\u20e4\u0003"+
		"\u0408\u0204\u0000\u20e4\u20e5\u0005\u008a\u0000\u0000\u20e5\u20e6\u0003"+
		"\u0490\u0248\u0000\u20e6\u2114\u0001\u0000\u0000\u0000\u20e7\u20e8\u0005"+
		"\u0146\u0000\u0000\u20e8\u20e9\u0003\u0408\u0204\u0000\u20e9\u20ea\u0005"+
		"\u008a\u0000\u0000\u20ea\u20eb\u0003\u0490\u0248\u0000\u20eb\u2114\u0001"+
		"\u0000\u0000\u0000\u20ec\u20ed\u0005\u0231\u0000\u0000\u20ed\u20ee\u0005"+
		"\u0086\u0000\u0000\u20ee\u20ef\u0003\u018a\u00c5\u0000\u20ef\u20f0\u0005"+
		"\u012e\u0000\u0000\u20f0\u20f1\u0003\u00fe\u007f\u0000\u20f1\u20f2\u0005"+
		"\u008a\u0000\u0000\u20f2\u20f3\u0003\u0490\u0248\u0000\u20f3\u2114\u0001"+
		"\u0000\u0000\u0000\u20f4\u20f5\u0005\u01a2\u0000\u0000\u20f5\u20f6\u0005"+
		"\u01d4\u0000\u0000\u20f6\u20f7\u0003\u01ec\u00f6\u0000\u20f7\u20f8\u0005"+
		"\u007f\u0000\u0000\u20f8\u20f9\u0003\u00fe\u007f\u0000\u20f9\u20fa\u0005"+
		"\u008a\u0000\u0000\u20fa\u20fb\u0003\u0490\u0248\u0000\u20fb\u2114\u0001"+
		"\u0000\u0000\u0000\u20fc\u20fd\u0005\u01a2\u0000\u0000\u20fd\u20fe\u0005"+
		"\u01ee\u0000\u0000\u20fe\u20ff\u0003\u01ec\u00f6\u0000\u20ff\u2100\u0005"+
		"\u007f\u0000\u0000\u2100\u2101\u0003\u00fe\u007f\u0000\u2101\u2102\u0005"+
		"\u008a\u0000\u0000\u2102\u2103\u0003\u0490\u0248\u0000\u2103\u2114\u0001"+
		"\u0000\u0000\u0000\u2104\u2105\u0005\u012f\u0000\u0000\u2105\u2106\u0005"+
		"\u0137\u0000\u0000\u2106\u2107\u0003\u0244\u0122\u0000\u2107\u2108\u0005"+
		"\u008a\u0000\u0000\u2108\u2109\u0003\u0490\u0248\u0000\u2109\u2114\u0001"+
		"\u0000\u0000\u0000\u210a\u210b\u0005s\u0000\u0000\u210b\u210c\u0005 \u0000"+
		"\u0000\u210c\u210d\u0003\u018a\u00c5\u0000\u210d\u210e\u0005\u0081\u0000"+
		"\u0000\u210e\u210f\u0003\u018a\u00c5\u0000\u210f\u2110\u0005!\u0000\u0000"+
		"\u2110\u2111\u0005\u008a\u0000\u0000\u2111\u2112\u0003\u0490\u0248\u0000"+
		"\u2112\u2114\u0001\u0000\u0000\u0000\u2113\u20a4\u0001\u0000\u0000\u0000"+
		"\u2113\u20a9\u0001\u0000\u0000\u0000\u2113\u20ae\u0001\u0000\u0000\u0000"+
		"\u2113\u20b3\u0001\u0000\u0000\u0000\u2113\u20b8\u0001\u0000\u0000\u0000"+
		"\u2113\u20bd\u0001\u0000\u0000\u0000\u2113\u20c2\u0001\u0000\u0000\u0000"+
		"\u2113\u20c7\u0001\u0000\u0000\u0000\u2113\u20cc\u0001\u0000\u0000\u0000"+
		"\u2113\u20d3\u0001\u0000\u0000\u0000\u2113\u20db\u0001\u0000\u0000\u0000"+
		"\u2113\u20e2\u0001\u0000\u0000\u0000\u2113\u20e7\u0001\u0000\u0000\u0000"+
		"\u2113\u20ec\u0001\u0000\u0000\u0000\u2113\u20f4\u0001\u0000\u0000\u0000"+
		"\u2113\u20fc\u0001\u0000\u0000\u0000\u2113\u2104\u0001\u0000\u0000\u0000"+
		"\u2113\u210a\u0001\u0000\u0000\u0000\u2114\u0487\u0001\u0000\u0000\u0000"+
		"\u2115\u2116\u00077\u0000\u0000\u2116\u0489\u0001\u0000\u0000\u0000\u2117"+
		"\u211d\u0003\u048c\u0246\u0000\u2118\u211d\u0005\u0114\u0000\u0000\u2119"+
		"\u211d\u0005\u0104\u0000\u0000\u211a\u211d\u0005\u021d\u0000\u0000\u211b"+
		"\u211d\u0005\u0151\u0000\u0000\u211c\u2117\u0001\u0000\u0000\u0000\u211c"+
		"\u2118\u0001\u0000\u0000\u0000\u211c\u2119\u0001\u0000\u0000\u0000\u211c"+
		"\u211a\u0001\u0000\u0000\u0000\u211c\u211b\u0001\u0000\u0000\u0000\u211d"+
		"\u048b\u0001\u0000\u0000\u0000\u211e\u211f\u0005\u01c1\u0000\u0000\u211f"+
		"\u212e\u0005\u01fc\u0000\u0000\u2120\u2121\u0005\u01ea\u0000\u0000\u2121"+
		"\u212e\u0005h\u0000\u0000\u2122\u212e\u0005\u011d\u0000\u0000\u2123\u2124"+
		"\u0005c\u0000\u0000\u2124\u2125\u0005\u0113\u0000\u0000\u2125\u212e\u0005"+
		"\u023c\u0000\u0000\u2126\u2128\u0005\u0201\u0000\u0000\u2127\u2126\u0001"+
		"\u0000\u0000\u0000\u2127\u2128\u0001\u0000\u0000\u0000\u2128\u2129\u0001"+
		"\u0000\u0000\u0000\u2129\u212e\u0005\u012e\u0000\u0000\u212a\u212e\u0005"+
		"\u0205\u0000\u0000\u212b\u212e\u0005X\u0000\u0000\u212c\u212e\u0005\u021c"+
		"\u0000\u0000\u212d\u211e\u0001\u0000\u0000\u0000\u212d\u2120\u0001\u0000"+
		"\u0000\u0000\u212d\u2122\u0001\u0000\u0000\u0000\u212d\u2123\u0001\u0000"+
		"\u0000\u0000\u212d\u2127\u0001\u0000\u0000\u0000\u212d\u212a\u0001\u0000"+
		"\u0000\u0000\u212d\u212b\u0001\u0000\u0000\u0000\u212d\u212c\u0001\u0000"+
		"\u0000\u0000\u212e\u048d\u0001\u0000\u0000\u0000\u212f\u2147\u0005]\u0000"+
		"\u0000\u2130\u2147\u0005\u014a\u0000\u0000\u2131\u2147\u0005j\u0000\u0000"+
		"\u2132\u2133\u0005\u01a1\u0000\u0000\u2133\u2147\u0005j\u0000\u0000\u2134"+
		"\u2147\u0005_\u0000\u0000\u2135\u2136\u0005c\u0000\u0000\u2136\u2147\u0005"+
		"]\u0000\u0000\u2137\u2147\u0005\u00c6\u0000\u0000\u2138\u2147\u0005\u01cc"+
		"\u0000\u0000\u2139\u2147\u0005\u014f\u0000\u0000\u213a\u213b\u0005\u00cf"+
		"\u0000\u0000\u213b\u213c\u0005\u021e\u0000\u0000\u213c\u2147\u0005\u0202"+
		"\u0000\u0000\u213d\u213e\u0005\u00cf\u0000\u0000\u213e\u213f\u0005\u021e"+
		"\u0000\u0000\u213f\u2147\u0005\u01d8\u0000\u0000\u2140\u2141\u0005\u00cf"+
		"\u0000\u0000\u2141\u2142\u0005\u021e\u0000\u0000\u2142\u2147\u0005\u022d"+
		"\u0000\u0000\u2143\u2144\u0005\u00cf\u0000\u0000\u2144\u2145\u0005\u021e"+
		"\u0000\u0000\u2145\u2147\u0005\u01d5\u0000\u0000\u2146\u212f\u0001\u0000"+
		"\u0000\u0000\u2146\u2130\u0001\u0000\u0000\u0000\u2146\u2131\u0001\u0000"+
		"\u0000\u0000\u2146\u2132\u0001\u0000\u0000\u0000\u2146\u2134\u0001\u0000"+
		"\u0000\u0000\u2146\u2135\u0001\u0000\u0000\u0000\u2146\u2137\u0001\u0000"+
		"\u0000\u0000\u2146\u2138\u0001\u0000\u0000\u0000\u2146\u2139\u0001\u0000"+
		"\u0000\u0000\u2146\u213a\u0001\u0000\u0000\u0000\u2146\u213d\u0001\u0000"+
		"\u0000\u0000\u2146\u2140\u0001\u0000\u0000\u0000\u2146\u2143\u0001\u0000"+
		"\u0000\u0000\u2147\u048f\u0001\u0000\u0000\u0000\u2148\u2149\u00074\u0000"+
		"\u0000\u2149\u0491\u0001\u0000\u0000\u0000\u214a\u214b\u0005T\u0000\u0000"+
		"\u214b\u214c\u0005\u01c1\u0000\u0000\u214c\u214d\u0005\u01fc\u0000\u0000"+
		"\u214d\u214e\u0003\u00fe\u007f\u0000\u214e\u214f\u0005\u00cb\u0000\u0000"+
		"\u214f\u2150\u00078\u0000\u0000\u2150\u2151\u0005\u01f5\u0000\u0000\u2151"+
		"\u2152\u0003\u041a\u020d\u0000\u2152\u0493\u0001\u0000\u0000\u0000\u2153"+
		"\u2154\u0005T\u0000\u0000\u2154\u2155\u0005\u01c3\u0000\u0000\u2155\u215a"+
		"\u0003\u0162\u00b1\u0000\u2156\u2157\u0003\u03cc\u01e6\u0000\u2157\u2158"+
		"\u0003\u0264\u0132\u0000\u2158\u215b\u0001\u0000\u0000\u0000\u2159\u215b"+
		"\u0003\u0496\u024b\u0000\u215a\u2156\u0001\u0000\u0000\u0000\u215a\u2159"+
		"\u0001\u0000\u0000\u0000\u215b\u0495\u0001\u0000\u0000\u0000\u215c\u215d"+
		"\u0005 \u0000\u0000\u215d\u215e\u0003\u0498\u024c\u0000\u215e\u215f\u0005"+
		"!\u0000\u0000\u215f\u0497\u0001\u0000\u0000\u0000\u2160\u2165\u0003\u049a"+
		"\u024d\u0000\u2161\u2162\u0005&\u0000\u0000\u2162\u2164\u0003\u049a\u024d"+
		"\u0000\u2163\u2161\u0001\u0000\u0000\u0000\u2164\u2167\u0001\u0000\u0000"+
		"\u0000\u2165\u2163\u0001\u0000\u0000\u0000\u2165\u2166\u0001\u0000\u0000"+
		"\u0000\u2166\u0499\u0001\u0000\u0000\u0000\u2167\u2165\u0001\u0000\u0000"+
		"\u0000\u2168\u2169\u0003\u00eau\u0000\u2169\u216a\u0005\u0018\u0000\u0000"+
		"\u216a\u216b\u0003\u0220\u0110\u0000\u216b\u049b\u0001\u0000\u0000\u0000"+
		"\u216c\u216d\u0005T\u0000\u0000\u216d\u216e\u0005s\u0000\u0000\u216e\u216f"+
		"\u0005 \u0000\u0000\u216f\u2170\u0003\u018a\u00c5\u0000\u2170\u2171\u0005"+
		"\u0081\u0000\u0000\u2171\u2172\u0003\u018a\u00c5\u0000\u2172\u2180\u0005"+
		"!\u0000\u0000\u2173\u2181\u0001\u0000\u0000\u0000\u2174\u2175\u0005m\u0000"+
		"\u0000\u2175\u2178\u0005g\u0000\u0000\u2176\u2179\u0003\u0162\u00b1\u0000"+
		"\u2177\u2179\u0003\u0226\u0113\u0000\u2178\u2176\u0001\u0000\u0000\u0000"+
		"\u2178\u2177\u0001\u0000\u0000\u0000\u2179\u217a\u0001\u0000\u0000\u0000"+
		"\u217a\u217b\u0003\u040a\u0205\u0000\u217b\u2181\u0001\u0000\u0000\u0000"+
		"\u217c\u217d\u0005\u015a\u0000\u0000\u217d\u2181\u0005g\u0000\u0000\u217e"+
		"\u217f\u0005m\u0000\u0000\u217f\u2181\u0005\u0244\u0000\u0000\u2180\u2173"+
		"\u0001\u0000\u0000\u0000\u2180\u2174\u0001\u0000\u0000\u0000\u2180\u217c"+
		"\u0001\u0000\u0000\u0000\u2180\u217e\u0001\u0000\u0000\u0000\u2181\u2183"+
		"\u0001\u0000\u0000\u0000\u2182\u2184\u0003\u049e\u024f\u0000\u2183\u2182"+
		"\u0001\u0000\u0000\u0000\u2183\u2184\u0001\u0000\u0000\u0000\u2184\u049d"+
		"\u0001\u0000\u0000\u0000\u2185\u2186\u0005\u0081\u0000\u0000\u2186\u2187"+
		"\u00079\u0000\u0000\u2187\u049f\u0001\u0000\u0000\u0000\u2188\u2189\u0005"+
		"T\u0000\u0000\u2189\u218b\u0005\u00c6\u0000\u0000\u218a\u218c\u0003\u02b0"+
		"\u0158\u0000\u218b\u218a\u0001\u0000\u0000\u0000\u218b\u218c\u0001\u0000"+
		"\u0000\u0000\u218c\u2194\u0001\u0000\u0000\u0000\u218d\u218e\u0003\u01ec"+
		"\u00f6\u0000\u218e\u218f\u0003\u0264\u0132\u0000\u218f\u2195\u0001\u0000"+
		"\u0000\u0000\u2190\u2191\u0003\u01ec\u00f6\u0000\u2191\u2192\u0005v\u0000"+
		"\u0000\u2192\u2193\u0003\u01ec\u00f6\u0000\u2193\u2195\u0001\u0000\u0000"+
		"\u0000\u2194\u218d\u0001\u0000\u0000\u0000\u2194\u2190\u0001\u0000\u0000"+
		"\u0000\u2195\u04a1\u0001\u0000\u0000\u0000\u2196\u2198\u0005T\u0000\u0000"+
		"\u2197\u2199\u0005\u00b5\u0000\u0000\u2198\u2197\u0001\u0000\u0000\u0000"+
		"\u2198\u2199\u0001\u0000\u0000\u0000\u2199\u219a\u0001\u0000\u0000\u0000"+
		"\u219a\u219b\u0005\u01cc\u0000\u0000\u219b\u219c\u0003\u01ec\u00f6\u0000"+
		"\u219c\u219d\u0005\u0086\u0000\u0000\u219d\u219e\u0005\u0254\u0000\u0000"+
		"\u219e\u219f\u0005\u0087\u0000\u0000\u219f\u21a0\u0005\u0254\u0000\u0000"+
		"\u21a0\u21a1\u0005v\u0000\u0000\u21a1\u21a2\u0003\u01ec\u00f6\u0000\u21a2"+
		"\u04a3\u0001\u0000\u0000\u0000\u21a3\u21a4\u0005T\u0000\u0000\u21a4\u21a5"+
		"\u0005\u0119\u0000\u0000\u21a5\u21a7\u0003\u01ec\u00f6\u0000\u21a6\u21a8"+
		"\u0005\u0081\u0000\u0000\u21a7\u21a6\u0001\u0000\u0000\u0000\u21a7\u21a8"+
		"\u0001\u0000\u0000\u0000\u21a8\u21a9\u0001\u0000\u0000\u0000\u21a9\u21aa"+
		"\u0003\u018a\u00c5\u0000\u21aa\u21ab\u0003\u024a\u0125\u0000\u21ab\u04a5"+
		"\u0001\u0000\u0000\u0000\u21ac\u21ad\u0005T\u0000\u0000\u21ad\u21ae\u0005"+
		"\u01ea\u0000\u0000\u21ae\u21af\u0005h\u0000\u0000\u21af\u21b0\u0003\u00fe"+
		"\u007f\u0000\u21b0\u21b1\u0005\u0082\u0000\u0000\u21b1\u21b4\u0003\u026a"+
		"\u0135\u0000\u21b2\u21b3\u0005r\u0000\u0000\u21b3\u21b5\u0003\u04a8\u0254"+
		"\u0000\u21b4\u21b2\u0001\u0000\u0000\u0000\u21b4\u21b5\u0001\u0000\u0000"+
		"\u0000\u21b5\u21b6\u0001\u0000\u0000\u0000\u21b6\u21b7\u0005\u011b\u0000"+
		"\u0000\u21b7\u21b8\u0007:\u0000\u0000\u21b8\u21b9\u0003\u0162\u00b1\u0000"+
		"\u21b9\u21ba\u0005 \u0000\u0000\u21ba\u21bb\u0005!\u0000\u0000\u21bb\u04a7"+
		"\u0001\u0000\u0000\u0000\u21bc\u21c1\u0003\u04aa\u0255\u0000\u21bd\u21be"+
		"\u0005\u0088\u0000\u0000\u21be\u21c0\u0003\u04aa\u0255\u0000\u21bf\u21bd"+
		"\u0001\u0000\u0000\u0000\u21c0\u21c3\u0001\u0000\u0000\u0000\u21c1\u21bf"+
		"\u0001\u0000\u0000\u0000\u21c1\u21c2\u0001\u0000\u0000\u0000\u21c2\u04a9"+
		"\u0001\u0000\u0000\u0000\u21c3\u21c1\u0001\u0000\u0000\u0000\u21c4\u21c5"+
		"\u0003\u016a\u00b5\u0000\u21c5\u21c6\u0005\u0091\u0000\u0000\u21c6\u21c7"+
		"\u0005 \u0000\u0000\u21c7\u21c8\u0003\u04ac\u0256\u0000\u21c8\u21c9\u0005"+
		"!\u0000\u0000\u21c9\u04ab\u0001\u0000\u0000\u0000\u21ca\u21cf\u0005\u0254"+
		"\u0000\u0000\u21cb\u21cc\u0005&\u0000\u0000\u21cc\u21ce\u0005\u0254\u0000"+
		"\u0000\u21cd\u21cb\u0001\u0000\u0000\u0000\u21ce\u21d1\u0001\u0000\u0000"+
		"\u0000\u21cf\u21cd\u0001\u0000\u0000\u0000\u21cf\u21d0\u0001\u0000\u0000"+
		"\u0000\u21d0\u04ad\u0001\u0000\u0000\u0000\u21d1\u21cf\u0001\u0000\u0000"+
		"\u0000\u21d2\u21d3\u0005T\u0000\u0000\u21d3\u21d5\u0005\u011d\u0000\u0000"+
		"\u21d4\u21d6\u0003\u02b0\u0158\u0000\u21d5\u21d4\u0001\u0000\u0000\u0000"+
		"\u21d5\u21d6\u0001\u0000\u0000\u0000\u21d6\u21d7\u0001\u0000\u0000\u0000"+
		"\u21d7\u21d9\u0003\u00fe\u007f\u0000\u21d8\u21da\u0005m\u0000\u0000\u21d9"+
		"\u21d8\u0001\u0000\u0000\u0000\u21d9\u21da\u0001\u0000\u0000\u0000\u21da"+
		"\u21db\u0001\u0000\u0000\u0000\u21db\u21dc\u0003\u04b0\u0258\u0000\u21dc"+
		"\u04af\u0001\u0000\u0000\u0000\u21dd\u21df\u0003\u04b2\u0259\u0000\u21de"+
		"\u21dd\u0001\u0000\u0000\u0000\u21df\u21e2\u0001\u0000\u0000\u0000\u21e0"+
		"\u21de\u0001\u0000\u0000\u0000\u21e0\u21e1\u0001\u0000\u0000\u0000\u21e1"+
		"\u04b1\u0001\u0000\u0000\u0000\u21e2\u21e0\u0001\u0000\u0000\u0000\u21e3"+
		"\u21e4\u0005X\u0000\u0000\u21e4\u21eb\u0003\u00fe\u007f\u0000\u21e5\u21e6"+
		"\u0005\u019c\u0000\u0000\u21e6\u21eb\u0003\u028a\u0145\u0000\u21e7\u21e8"+
		"\u0005v\u0000\u0000\u21e8\u21eb\u0003\u028a\u0145\u0000\u21e9\u21eb\u0005"+
		"\u00fa\u0000\u0000\u21ea\u21e3\u0001\u0000\u0000\u0000\u21ea\u21e5\u0001"+
		"\u0000\u0000\u0000\u21ea\u21e7\u0001\u0000\u0000\u0000\u21ea\u21e9\u0001"+
		"\u0000\u0000\u0000\u21eb\u04b3\u0001\u0000\u0000\u0000\u21ec\u21ed\u0005"+
		"T\u0000\u0000\u21ed\u21ee\u0005c\u0000\u0000\u21ee\u21ef\u0005\u0113\u0000"+
		"\u0000\u21ef\u21f0\u0005\u023c\u0000\u0000\u21f0\u21f2\u0003\u00fe\u007f"+
		"\u0000\u21f1\u21f3\u0003\u0416\u020b\u0000\u21f2\u21f1\u0001\u0000\u0000"+
		"\u0000\u21f2\u21f3\u0001\u0000\u0000\u0000\u21f3\u21f5\u0001\u0000\u0000"+
		"\u0000\u21f4\u21f6\u0003\u0276\u013b\u0000\u21f5\u21f4\u0001\u0000\u0000"+
		"\u0000\u21f5\u21f6\u0001\u0000\u0000\u0000\u21f6\u04b5\u0001\u0000\u0000"+
		"\u0000\u21f7\u21f8\u0005T\u0000\u0000\u21f8\u21f9\u0005c\u0000\u0000\u21f9"+
		"\u21fa\u0005]\u0000\u0000\u21fa\u21fb\u0003\u04b8\u025c\u0000\u21fb\u04b7"+
		"\u0001\u0000\u0000\u0000\u21fc\u21fe\u0003\u02b0\u0158\u0000\u21fd\u21fc"+
		"\u0001\u0000\u0000\u0000\u21fd\u21fe\u0001\u0000\u0000\u0000\u21fe\u21ff"+
		"\u0001\u0000\u0000\u0000\u21ff\u2200\u0003\u0168\u00b4\u0000\u2200\u2202"+
		"\u0005 \u0000\u0000\u2201\u2203\u0003\u04ba\u025d\u0000\u2202\u2201\u0001"+
		"\u0000\u0000\u0000\u2202\u2203\u0001\u0000\u0000\u0000\u2203\u2204\u0001"+
		"\u0000\u0000\u0000\u2204\u220a\u0005!\u0000\u0000\u2205\u2206\u0005\u012b"+
		"\u0000\u0000\u2206\u2207\u0005 \u0000\u0000\u2207\u2208\u0003p8\u0000"+
		"\u2208\u2209\u0005!\u0000\u0000\u2209\u220b\u0001\u0000\u0000\u0000\u220a"+
		"\u2205\u0001\u0000\u0000\u0000\u220a\u220b\u0001\u0000\u0000\u0000\u220b"+
		"\u220c\u0001\u0000\u0000\u0000\u220c\u220d\u0005\u021c\u0000\u0000\u220d"+
		"\u220f\u0003\u00fe\u007f\u0000\u220e\u2210\u0003\u0276\u013b\u0000\u220f"+
		"\u220e\u0001\u0000\u0000\u0000\u220f\u2210\u0001\u0000\u0000\u0000\u2210"+
		"\u2225\u0001\u0000\u0000\u0000\u2211\u2213\u0003\u02b0\u0158\u0000\u2212"+
		"\u2211\u0001\u0000\u0000\u0000\u2212\u2213\u0001\u0000\u0000\u0000\u2213"+
		"\u2214\u0001\u0000\u0000\u0000\u2214\u2215\u0003\u0168\u00b4\u0000\u2215"+
		"\u2216\u0005\u00f6\u0000\u0000\u2216\u2217\u0005\u015c\u0000\u0000\u2217"+
		"\u221c\u0003\u0168\u00b4\u0000\u2218\u2219\u0005 \u0000\u0000\u2219\u221a"+
		"\u0003\u02e0\u0170\u0000\u221a\u221b\u0005!\u0000\u0000\u221b\u221d\u0001"+
		"\u0000\u0000\u0000\u221c\u2218\u0001\u0000\u0000\u0000\u221c\u221d\u0001"+
		"\u0000\u0000\u0000\u221d\u221e\u0001\u0000\u0000\u0000\u221e\u221f\u0003"+
		"\u02da\u016d\u0000\u221f\u2220\u0005\u021c\u0000\u0000\u2220\u2222\u0003"+
		"\u00fe\u007f\u0000\u2221\u2223\u0003\u0276\u013b\u0000\u2222\u2221\u0001"+
		"\u0000\u0000\u0000\u2222\u2223\u0001\u0000\u0000\u0000\u2223\u2225\u0001"+
		"\u0000\u0000\u0000\u2224\u21fd\u0001\u0000\u0000\u0000\u2224\u2212\u0001"+
		"\u0000\u0000\u0000\u2225\u04b9\u0001\u0000\u0000\u0000\u2226\u222b\u0003"+
		"\u04bc\u025e\u0000\u2227\u2228\u0005&\u0000\u0000\u2228\u222a\u0003\u04bc"+
		"\u025e\u0000\u2229\u2227\u0001\u0000\u0000\u0000\u222a\u222d\u0001\u0000"+
		"\u0000\u0000\u222b\u2229\u0001\u0000\u0000\u0000\u222b\u222c\u0001\u0000"+
		"\u0000\u0000\u222c\u04bb\u0001\u0000\u0000\u0000\u222d\u222b\u0001\u0000"+
		"\u0000\u0000\u222e\u2232\u0003\u0248\u0124\u0000\u222f\u2232\u0003\u04be"+
		"\u025f\u0000\u2230\u2232\u0003\u0334\u019a\u0000\u2231\u222e\u0001\u0000"+
		"\u0000\u0000\u2231\u222f\u0001\u0000\u0000\u0000\u2231\u2230\u0001\u0000"+
		"\u0000\u0000\u2232\u04bd\u0001\u0000\u0000\u0000\u2233\u2234\u0005\u0094"+
		"\u0000\u0000\u2234\u2235\u0003\u0168\u00b4\u0000\u2235\u2236\u0003\u04c0"+
		"\u0260\u0000\u2236\u04bf\u0001\u0000\u0000\u0000\u2237\u223d\u0006\u0260"+
		"\uffff\uffff\u0000\u2238\u2239\n\u0002\u0000\u0000\u2239\u223a\u0007\'"+
		"\u0000\u0000\u223a\u223c\u0003\u04c2\u0261\u0000\u223b\u2238\u0001\u0000"+
		"\u0000\u0000\u223c\u223f\u0001\u0000\u0000\u0000\u223d\u223b\u0001\u0000"+
		"\u0000\u0000\u223d\u223e\u0001\u0000\u0000\u0000\u223e\u04c1\u0001\u0000"+
		"\u0000\u0000\u223f\u223d\u0001\u0000\u0000\u0000\u2240\u2241\u0007;\u0000"+
		"\u0000\u2241\u04c3\u0001\u0000\u0000\u0000\u2242\u2245\u0005T\u0000\u0000"+
		"\u2243\u2244\u0005\u0089\u0000\u0000\u2244\u2246\u0005\u020f\u0000\u0000"+
		"\u2245\u2243\u0001\u0000\u0000\u0000\u2245\u2246\u0001\u0000\u0000\u0000"+
		"\u2246\u2247\u0001\u0000\u0000\u0000\u2247\u2248\u0005g\u0000\u0000\u2248"+
		"\u2249\u0003\u0162\u00b1\u0000\u2249\u2256\u0003\u04d4\u026a\u0000\u224a"+
		"\u224b\u0005\u0226\u0000\u0000\u224b\u224c\u0003\u04d2\u0269\u0000\u224c"+
		"\u224d\u0003\u04ca\u0265\u0000\u224d\u2257\u0001\u0000\u0000\u0000\u224e"+
		"\u224f\u0005\u0226\u0000\u0000\u224f\u2250\u0005]\u0000\u0000\u2250\u2251"+
		"\u0005 \u0000\u0000\u2251\u2252\u0003\u04c6\u0263\u0000\u2252\u2253\u0005"+
		"!\u0000\u0000\u2253\u2254\u0003\u04ca\u0265\u0000\u2254\u2257\u0001\u0000"+
		"\u0000\u0000\u2255\u2257\u0003\u04ca\u0265\u0000\u2256\u224a\u0001\u0000"+
		"\u0000\u0000\u2256\u224e\u0001\u0000\u0000\u0000\u2256\u2255\u0001\u0000"+
		"\u0000\u0000\u2257\u04c5\u0001\u0000\u0000\u0000\u2258\u225d\u0003\u04c8"+
		"\u0264\u0000\u2259\u225a\u0005&\u0000\u0000\u225a\u225c\u0003\u04c8\u0264"+
		"\u0000\u225b\u2259\u0001\u0000\u0000\u0000\u225c\u225f\u0001\u0000\u0000"+
		"\u0000\u225d\u225b\u0001\u0000\u0000\u0000\u225d\u225e\u0001\u0000\u0000"+
		"\u0000\u225e\u04c7\u0001\u0000\u0000\u0000\u225f\u225d\u0001\u0000\u0000"+
		"\u0000\u2260\u2261\u0003\u015a\u00ad\u0000\u2261\u2262\u0003\u0222\u0111"+
		"\u0000\u2262\u04c9\u0001\u0000\u0000\u0000\u2263\u2265\u0003\u04cc\u0266"+
		"\u0000\u2264\u2263\u0001\u0000\u0000\u0000\u2265\u2266\u0001\u0000\u0000"+
		"\u0000\u2266\u2264\u0001\u0000\u0000\u0000\u2266\u2267\u0001\u0000\u0000"+
		"\u0000\u2267\u04cb\u0001\u0000\u0000\u0000\u2268\u2269\u0005\u0081\u0000"+
		"\u0000\u2269\u2271\u0003\u04d0\u0268\u0000\u226a\u226b\u0005\u012e\u0000"+
		"\u0000\u226b\u2271\u0003\u028a\u0145\u0000\u226c\u226d\u0005\u0231\u0000"+
		"\u0000\u226d\u2271\u0003\u04ce\u0267\u0000\u226e\u2271\u0005\u00e6\u0000"+
		"\u0000\u226f\u2271\u0003\u02a6\u0153\u0000\u2270\u2268\u0001\u0000\u0000"+
		"\u0000\u2270\u226a\u0001\u0000\u0000\u0000\u2270\u226c\u0001\u0000\u0000"+
		"\u0000\u2270\u226e\u0001\u0000\u0000\u0000\u2270\u226f\u0001\u0000\u0000"+
		"\u0000\u2271\u04cd\u0001\u0000\u0000\u0000\u2272\u2273\u0005\u0086\u0000"+
		"\u0000\u2273\u2274\u0005\u00cb\u0000\u0000\u2274\u2275\u0003\u018a\u00c5"+
		"\u0000\u2275\u2276\u0005&\u0000\u0000\u2276\u2277\u0005\u0086\u0000\u0000"+
		"\u2277\u2278\u0005\u00cb\u0000\u0000\u2278\u2279\u0003\u018a\u00c5\u0000"+
		"\u2279\u04cf\u0001\u0000\u0000\u0000\u227a\u2282\u0003\u00eau\u0000\u227b"+
		"\u227f\u0005\u0254\u0000\u0000\u227c\u227d\u0005&\u0000\u0000\u227d\u2280"+
		"\u0003\u00eau\u0000\u227e\u2280\u0005\u0254\u0000\u0000\u227f\u227c\u0001"+
		"\u0000\u0000\u0000\u227f\u227e\u0001\u0000\u0000\u0000\u227f\u2280\u0001"+
		"\u0000\u0000\u0000\u2280\u2282\u0001\u0000\u0000\u0000\u2281\u227a\u0001"+
		"\u0000\u0000\u0000\u2281\u227b\u0001\u0000\u0000\u0000\u2282\u04d1\u0001"+
		"\u0000\u0000\u0000\u2283\u2284\u0003\u0222\u0111\u0000\u2284\u04d3\u0001"+
		"\u0000\u0000\u0000\u2285\u2287\u0005 \u0000\u0000\u2286\u2288\u0003\u04d6"+
		"\u026b\u0000\u2287\u2286\u0001\u0000\u0000\u0000\u2287\u2288\u0001\u0000"+
		"\u0000\u0000\u2288\u2289\u0001\u0000\u0000\u0000\u2289\u228a\u0005!\u0000"+
		"\u0000\u228a\u04d5\u0001\u0000\u0000\u0000\u228b\u2290\u0003\u04d8\u026c"+
		"\u0000\u228c\u228d\u0005&\u0000\u0000\u228d\u228f\u0003\u04d8\u026c\u0000"+
		"\u228e\u228c\u0001\u0000\u0000\u0000\u228f\u2292\u0001\u0000\u0000\u0000"+
		"\u2290\u228e\u0001\u0000\u0000\u0000\u2290\u2291\u0001\u0000\u0000\u0000"+
		"\u2291\u04d7\u0001\u0000\u0000\u0000\u2292\u2290\u0001\u0000\u0000\u0000"+
		"\u2293\u229d\u0003\u0284\u0142\u0000\u2294\u2295\u0003\u0284\u0142\u0000"+
		"\u2295\u2296\u0005\u00b5\u0000\u0000\u2296\u2297\u0003\u011a\u008d\u0000"+
		"\u2297\u229d\u0001\u0000\u0000\u0000\u2298\u2299\u0003\u0284\u0142\u0000"+
		"\u2299\u229a\u0005\u0018\u0000\u0000\u229a\u229b\u0003\u011a\u008d\u0000"+
		"\u229b\u229d\u0001\u0000\u0000\u0000\u229c\u2293\u0001\u0000\u0000\u0000"+
		"\u229c\u2294\u0001\u0000\u0000\u0000\u229c\u2298\u0001\u0000\u0000\u0000"+
		"\u229d\u04d9\u0001\u0000\u0000\u0000\u229e\u22a1\u0005T\u0000\u0000\u229f"+
		"\u22a0\u0005\u0089\u0000\u0000\u22a0\u22a2\u0005\u020f\u0000\u0000\u22a1"+
		"\u229f\u0001\u0000\u0000\u0000\u22a1\u22a2\u0001\u0000\u0000\u0000\u22a2"+
		"\u22a4\u0001\u0000\u0000\u0000\u22a3\u22a5\u0005\u0233\u0000\u0000\u22a4"+
		"\u22a3\u0001\u0000\u0000\u0000\u22a4\u22a5\u0001\u0000\u0000\u0000\u22a5"+
		"\u22a7\u0001\u0000\u0000\u0000\u22a6\u22a8\u0005\u0201\u0000\u0000\u22a7"+
		"\u22a6\u0001\u0000\u0000\u0000\u22a7\u22a8\u0001\u0000\u0000\u0000\u22a8"+
		"\u22a9\u0001\u0000\u0000\u0000\u22a9\u22aa\u0005\u012e\u0000\u0000\u22aa"+
		"\u22b8\u0003\u00fe\u007f\u0000\u22ab\u22ac\u0005\u01f5\u0000\u0000\u22ac"+
		"\u22af\u0003\u041a\u020d\u0000\u22ad\u22ae\u0005\u01e1\u0000\u0000\u22ae"+
		"\u22b0\u0003\u041a\u020d\u0000\u22af\u22ad\u0001\u0000\u0000\u0000\u22af"+
		"\u22b0\u0001\u0000\u0000\u0000\u22b0\u22b2\u0001\u0000\u0000\u0000\u22b1"+
		"\u22b3\u0003\u04de\u026f\u0000\u22b2\u22b1\u0001\u0000\u0000\u0000\u22b2"+
		"\u22b3\u0001\u0000\u0000\u0000\u22b3\u22b9\u0001\u0000\u0000\u0000\u22b4"+
		"\u22b5\u0005 \u0000\u0000\u22b5\u22b6\u0003\u04dc\u026e\u0000\u22b6\u22b7"+
		"\u0005!\u0000\u0000\u22b7\u22b9\u0001\u0000\u0000\u0000\u22b8\u22ab\u0001"+
		"\u0000\u0000\u0000\u22b8\u22b4\u0001\u0000\u0000\u0000\u22b8\u22b9\u0001"+
		"\u0000\u0000\u0000\u22b9\u04db\u0001\u0000\u0000\u0000\u22ba\u22bb\u0005"+
		"v\u0000\u0000\u22bb\u22bc\u0005\u00bf\u0000\u0000\u22bc\u22bd\u0005m\u0000"+
		"\u0000\u22bd\u22be\u0005g\u0000\u0000\u22be\u22bf\u0003\u0408\u0204\u0000"+
		"\u22bf\u22c0\u0005&\u0000\u0000\u22c0\u22c1\u0007\u0007\u0000\u0000\u22c1"+
		"\u22c2\u0005\u00bf\u0000\u0000\u22c2\u22c3\u0005m\u0000\u0000\u22c3\u22c4"+
		"\u0005g\u0000\u0000\u22c4\u22c5\u0003\u0408\u0204\u0000\u22c5\u22cc\u0001"+
		"\u0000\u0000\u0000\u22c6\u22c7\u0007\u0007\u0000\u0000\u22c7\u22c8\u0005"+
		"\u00bf\u0000\u0000\u22c8\u22c9\u0005m\u0000\u0000\u22c9\u22ca\u0005g\u0000"+
		"\u0000\u22ca\u22cc\u0003\u0408\u0204\u0000\u22cb\u22ba\u0001\u0000\u0000"+
		"\u0000\u22cb\u22c6\u0001\u0000\u0000\u0000\u22cc\u04dd\u0001\u0000\u0000"+
		"\u0000\u22cd\u22ce\u0005\u0234\u0000\u0000\u22ce\u22d2\u0003\u041a\u020d"+
		"\u0000\u22cf\u22d0\u0005\u00ff\u0000\u0000\u22d0\u22d2\u0005\u0234\u0000"+
		"\u0000\u22d1\u22cd\u0001\u0000\u0000\u0000\u22d1\u22cf\u0001\u0000\u0000"+
		"\u0000\u22d2\u04df\u0001\u0000\u0000\u0000\u22d3\u22d4\u0005T\u0000\u0000"+
		"\u22d4\u22d5\u0005\u0221\u0000\u0000\u22d5\u22d6\u0003\u00fe\u007f\u0000"+
		"\u22d6\u22d7\u0005\u0082\u0000\u0000\u22d7\u22da\u0003\u0168\u00b4\u0000"+
		"\u22d8\u22d9\u0005\u0081\u0000\u0000\u22d9\u22db\u0003\u00eau\u0000\u22da"+
		"\u22d8\u0001\u0000\u0000\u0000\u22da\u22db\u0001\u0000\u0000\u0000\u22db"+
		"\u22de\u0001\u0000\u0000\u0000\u22dc\u22dd\u0005\u0086\u0000\u0000\u22dd"+
		"\u22df\u0003\u02aa\u0155\u0000\u22de\u22dc\u0001\u0000\u0000\u0000\u22de"+
		"\u22df\u0001\u0000\u0000\u0000\u22df\u22e2\u0001\u0000\u0000\u0000\u22e0"+
		"\u22e1\u0005\u0087\u0000\u0000\u22e1\u22e3\u0003\u028e\u0147\u0000\u22e2"+
		"\u22e0\u0001\u0000\u0000\u0000\u22e2\u22e3\u0001\u0000\u0000\u0000\u22e3"+
		"\u22e9\u0001\u0000\u0000\u0000\u22e4\u22e5\u0005\u007f\u0000\u0000\u22e5"+
		"\u22e6\u0005 \u0000\u0000\u22e6\u22e7\u0003\u011a\u008d\u0000\u22e7\u22e8"+
		"\u0005!\u0000\u0000\u22e8\u22ea\u0001\u0000\u0000\u0000\u22e9\u22e4\u0001"+
		"\u0000\u0000\u0000\u22e9\u22ea\u0001\u0000\u0000\u0000\u22ea\u22f1\u0001"+
		"\u0000\u0000\u0000\u22eb\u22ec\u0005m\u0000\u0000\u22ec\u22ed\u0005\u00fb"+
		"\u0000\u0000\u22ed\u22ee\u0005 \u0000\u0000\u22ee\u22ef\u0003\u011a\u008d"+
		"\u0000\u22ef\u22f0\u0005!\u0000\u0000\u22f0\u22f2\u0001\u0000\u0000\u0000"+
		"\u22f1\u22eb\u0001\u0000\u0000\u0000\u22f1\u22f2\u0001\u0000\u0000\u0000"+
		"\u22f2\u04e1\u0001\u0000\u0000\u0000\u22f3\u22f6\u0005T\u0000\u0000\u22f4"+
		"\u22f5\u0005\u0089\u0000\u0000\u22f5\u22f7\u0005\u020f\u0000\u0000\u22f6"+
		"\u22f4\u0001\u0000\u0000\u0000\u22f6\u22f7\u0001\u0000\u0000\u0000\u22f7"+
		"\u22f8\u0001\u0000\u0000\u0000\u22f8\u22f9\u0005i\u0000\u0000\u22f9\u22fa"+
		"\u0003\u0162\u00b1\u0000\u22fa\u22fb\u0003\u04d4\u026a\u0000\u22fb\u22fc"+
		"\u0003\u04ca\u0265\u0000\u22fc\u04e3\u0001\u0000\u0000\u0000\u22fd\u22fe"+
		"\u0005T\u0000\u0000\u22fe\u22ff\u0005\u0205\u0000\u0000\u22ff\u2301\u0003"+
		"\u00fe\u007f\u0000\u2300\u2302\u0003\u04e6\u0273\u0000\u2301\u2300\u0001"+
		"\u0000\u0000\u0000\u2301\u2302\u0001\u0000\u0000\u0000\u2302\u2305\u0001"+
		"\u0000\u0000\u0000\u2303\u2304\u0005m\u0000\u0000\u2304\u2306\u0003\u0264"+
		"\u0132\u0000\u2305\u2303\u0001\u0000\u0000\u0000\u2305\u2306\u0001\u0000"+
		"\u0000\u0000\u2306\u04e5\u0001\u0000\u0000\u0000\u2307\u2308\u0005\u0086"+
		"\u0000\u0000\u2308\u2309\u0005]\u0000\u0000\u2309\u230e\u0003\u02a4\u0152"+
		"\u0000\u230a\u230b\u0005\u0086\u0000\u0000\u230b\u230c\u0005\u0092\u0000"+
		"\u0000\u230c\u230e\u0005\u022a\u0000\u0000\u230d\u2307\u0001\u0000\u0000"+
		"\u0000\u230d\u230a\u0001\u0000\u0000\u0000\u230e\u04e7\u0001\u0000\u0000"+
		"\u0000\u230f\u2312\u0005T\u0000\u0000\u2310\u2311\u0005\u0089\u0000\u0000"+
		"\u2311\u2313\u0005\u020f\u0000\u0000\u2312\u2310\u0001\u0000\u0000\u0000"+
		"\u2312\u2313\u0001\u0000\u0000\u0000\u2313\u2314\u0001\u0000\u0000\u0000"+
		"\u2314\u2315\u0005\u0148\u0000\u0000\u2315\u2316\u0003\u00fe\u007f\u0000"+
		"\u2316\u2317\u0005\u0081\u0000\u0000\u2317\u2318\u0005\u0082\u0000\u0000"+
		"\u2318\u2319\u0003\u02ac\u0156\u0000\u2319\u231a\u0005\u0087\u0000\u0000"+
		"\u231a\u231d\u0003\u0168\u00b4\u0000\u231b\u231c\u0005\u0080\u0000\u0000"+
		"\u231c\u231e\u0003\u011a\u008d\u0000\u231d\u231b\u0001\u0000\u0000\u0000"+
		"\u231d\u231e\u0001\u0000\u0000\u0000\u231e\u231f\u0001\u0000\u0000\u0000"+
		"\u231f\u2321\u0005\u00bc\u0000\u0000\u2320\u2322\u0007<\u0000\u0000\u2321"+
		"\u2320\u0001\u0000\u0000\u0000\u2321\u2322\u0001\u0000\u0000\u0000\u2322"+
		"\u2323\u0001\u0000\u0000\u0000\u2323\u2324\u0003\u04ea\u0275\u0000\u2324"+
		"\u04e9\u0001\u0000\u0000\u0000\u2325\u232c\u0005\u0135\u0000\u0000\u2326"+
		"\u232c\u0003\u04ec\u0276\u0000\u2327\u2328\u0005 \u0000\u0000\u2328\u2329"+
		"\u0003\u04ee\u0277\u0000\u2329\u232a\u0005!\u0000\u0000\u232a\u232c\u0001"+
		"\u0000\u0000\u0000\u232b\u2325\u0001\u0000\u0000\u0000\u232b\u2326\u0001"+
		"\u0000\u0000\u0000\u232b\u2327\u0001\u0000\u0000\u0000\u232c\u04eb\u0001"+
		"\u0000\u0000\u0000\u232d\u2333\u0003J%\u0000\u232e\u2333\u0003(\u0014"+
		"\u0000\u232f\u2333\u00038\u001c\u0000\u2330\u2333\u0003D\"\u0000\u2331"+
		"\u2333\u0003\u04f0\u0278\u0000\u2332\u232d\u0001\u0000\u0000\u0000\u2332"+
		"\u232e\u0001\u0000\u0000\u0000\u2332\u232f\u0001\u0000\u0000\u0000\u2332"+
		"\u2330\u0001\u0000\u0000\u0000\u2332\u2331\u0001\u0000\u0000\u0000\u2333"+
		"\u04ed\u0001\u0000\u0000\u0000\u2334\u2336\u0003\u04ec\u0276\u0000\u2335"+
		"\u2334\u0001\u0000\u0000\u0000\u2335\u2336\u0001\u0000\u0000\u0000\u2336"+
		"\u233d\u0001\u0000\u0000\u0000\u2337\u2339\u0005-\u0000\u0000\u2338\u233a"+
		"\u0003\u04ec\u0276\u0000\u2339\u2338\u0001\u0000\u0000\u0000\u2339\u233a"+
		"\u0001\u0000\u0000\u0000\u233a\u233c\u0001\u0000\u0000\u0000\u233b\u2337"+
		"\u0001\u0000\u0000\u0000\u233c\u233f\u0001\u0000\u0000\u0000\u233d\u233b"+
		"\u0001\u0000\u0000\u0000\u233d\u233e\u0001\u0000\u0000\u0000\u233e\u04ef"+
		"\u0001\u0000\u0000\u0000\u233f\u233d\u0001\u0000\u0000\u0000\u2340\u2341"+
		"\u0005\u0222\u0000\u0000\u2341\u2344\u0003\u016a\u00b5\u0000\u2342\u2343"+
		"\u0005&\u0000\u0000\u2343\u2345\u0005\u0254\u0000\u0000\u2344\u2342\u0001"+
		"\u0000\u0000\u0000\u2344\u2345\u0001\u0000\u0000\u0000\u2345\u04f1\u0001"+
		"\u0000\u0000\u0000\u2346\u2347\u0005T\u0000\u0000\u2347\u2348\u0005h\u0000"+
		"\u0000\u2348\u2349\u0003\u00fe\u007f\u0000\u2349\u234a\u0003\u04f8\u027c"+
		"\u0000\u234a\u234b\u0003\u04f4\u027a\u0000\u234b\u234c\u0005\u0082\u0000"+
		"\u0000\u234c\u234e\u0003\u0168\u00b4\u0000\u234d\u234f\u0003\u0502\u0281"+
		"\u0000\u234e\u234d\u0001\u0000\u0000\u0000\u234e\u234f\u0001\u0000\u0000"+
		"\u0000\u234f\u2351\u0001\u0000\u0000\u0000\u2350\u2352\u0003\u0500\u0280"+
		"\u0000\u2351\u2350\u0001\u0000\u0000\u0000\u2351\u2352\u0001\u0000\u0000"+
		"\u0000\u2352\u2354\u0001\u0000\u0000\u0000\u2353\u2355\u0003\u04fe\u027f"+
		"\u0000\u2354\u2353\u0001\u0000\u0000\u0000\u2354\u2355\u0001\u0000\u0000"+
		"\u0000\u2355\u2356\u0001\u0000\u0000\u0000\u2356\u2357\u0005\u011b\u0000"+
		"\u0000\u2357\u2358\u0007:\u0000\u0000\u2358\u2359\u0003\u0162\u00b1\u0000"+
		"\u2359\u235b\u0005 \u0000\u0000\u235a\u235c\u0003\u04fa\u027d\u0000\u235b"+
		"\u235a\u0001\u0000\u0000\u0000\u235b\u235c\u0001\u0000\u0000\u0000\u235c"+
		"\u235d\u0001\u0000\u0000\u0000\u235d\u235e\u0005!\u0000\u0000\u235e\u2373"+
		"\u0001\u0000\u0000\u0000\u235f\u2360\u0005T\u0000\u0000\u2360\u2361\u0005"+
		"`\u0000\u0000\u2361\u2364\u0005h\u0000\u0000\u2362\u2363\u0005v\u0000"+
		"\u0000\u2363\u2365\u0003\u0168\u00b4\u0000\u2364\u2362\u0001\u0000\u0000"+
		"\u0000\u2364\u2365\u0001\u0000\u0000\u0000\u2365\u2366\u0001\u0000\u0000"+
		"\u0000\u2366\u2367\u0003\u039a\u01cd\u0000\u2367\u2368\u0005\u0086\u0000"+
		"\u0000\u2368\u2369\u0005\u01e9\u0000\u0000\u2369\u236a\u0005\u00f7\u0000"+
		"\u0000\u236a\u236b\u0003\u04fe\u027f\u0000\u236b\u236c\u0005\u011b\u0000"+
		"\u0000\u236c\u236d\u0007:\u0000\u0000\u236d\u236e\u0003\u0162\u00b1\u0000"+
		"\u236e\u236f\u0005 \u0000\u0000\u236f\u2370\u0003\u04fa\u027d\u0000\u2370"+
		"\u2371\u0005!\u0000\u0000\u2371\u2373\u0001\u0000\u0000\u0000\u2372\u2346"+
		"\u0001\u0000\u0000\u0000\u2372\u235f\u0001\u0000\u0000\u0000\u2373\u04f3"+
		"\u0001\u0000\u0000\u0000\u2374\u2379\u0003\u04f6\u027b\u0000\u2375\u2376"+
		"\u0005\u0089\u0000\u0000\u2376\u2378\u0003\u04f6\u027b\u0000\u2377\u2375"+
		"\u0001\u0000\u0000\u0000\u2378\u237b\u0001\u0000\u0000\u0000\u2379\u2377"+
		"\u0001\u0000\u0000\u0000\u2379\u237a\u0001\u0000\u0000\u0000\u237a\u04f5"+
		"\u0001\u0000\u0000\u0000\u237b\u2379\u0001\u0000\u0000\u0000\u237c\u2384"+
		"\u0005Q\u0000\u0000\u237d\u2384\u0005S\u0000\u0000\u237e\u2384\u0005R"+
		"\u0000\u0000\u237f\u2380\u0005R\u0000\u0000\u2380\u2381\u0005\u015c\u0000"+
		"\u0000\u2381\u2384\u0003\u025c\u012e\u0000\u2382\u2384\u0005W\u0000\u0000"+
		"\u2383\u237c\u0001\u0000\u0000\u0000\u2383\u237d\u0001\u0000\u0000\u0000"+
		"\u2383\u237e\u0001\u0000\u0000\u0000\u2383\u237f\u0001\u0000\u0000\u0000"+
		"\u2383\u2382\u0001\u0000\u0000\u0000\u2384\u04f7\u0001\u0000\u0000\u0000"+
		"\u2385\u238a\u0005\u01c8\u0000\u0000\u2386\u238a\u0005\u01c2\u0000\u0000"+
		"\u2387\u2388\u0005\u01de\u0000\u0000\u2388\u238a\u0005\u015c\u0000\u0000"+
		"\u2389\u2385\u0001\u0000\u0000\u0000\u2389\u2386\u0001\u0000\u0000\u0000"+
		"\u2389\u2387\u0001\u0000\u0000\u0000\u238a\u04f9\u0001\u0000\u0000\u0000"+
		"\u238b\u2390\u0003\u04fc\u027e\u0000\u238c\u238d\u0005&\u0000\u0000\u238d"+
		"\u238f\u0003\u04fc\u027e\u0000\u238e\u238c\u0001\u0000\u0000\u0000\u238f"+
		"\u2392\u0001\u0000\u0000\u0000\u2390\u238e\u0001\u0000\u0000\u0000\u2390"+
		"\u2391\u0001\u0000\u0000\u0000\u2391\u04fb\u0001\u0000\u0000\u0000\u2392"+
		"\u2390\u0001\u0000\u0000\u0000\u2393\u2397\u0005\u0255\u0000\u0000\u2394"+
		"\u2397\u0005\u0254\u0000\u0000\u2395\u2397\u0003\u026a\u0135\u0000\u2396"+
		"\u2393\u0001\u0000\u0000\u0000\u2396\u2394\u0001\u0000\u0000\u0000\u2396"+
		"\u2395\u0001\u0000\u0000\u0000\u2397\u04fd\u0001\u0000\u0000\u0000\u2398"+
		"\u2399\u0005r\u0000\u0000\u2399\u239a\u0005 \u0000\u0000\u239a\u239b\u0003"+
		"\u011a\u008d\u0000\u239b\u239c\u0005!\u0000\u0000\u239c\u04ff\u0001\u0000"+
		"\u0000\u0000\u239d\u239f\u0005\u0086\u0000\u0000\u239e\u23a0\u0005\u01e9"+
		"\u0000\u0000\u239f\u239e\u0001\u0000\u0000\u0000\u239f\u23a0\u0001\u0000"+
		"\u0000\u0000\u23a0\u23a1\u0001\u0000\u0000\u0000\u23a1\u23a2\u0007=\u0000"+
		"\u0000\u23a2\u0501\u0001\u0000\u0000\u0000\u23a3\u23a4\u0005\u0207\u0000"+
		"\u0000\u23a4\u23a5\u0003\u0504\u0282\u0000\u23a5\u0503\u0001\u0000\u0000"+
		"\u0000\u23a6\u23a8\u0003\u0506\u0283\u0000\u23a7\u23a6\u0001\u0000\u0000"+
		"\u0000\u23a8\u23a9\u0001\u0000\u0000\u0000\u23a9\u23a7\u0001\u0000\u0000"+
		"\u0000\u23a9\u23aa\u0001\u0000\u0000\u0000\u23aa\u0505\u0001\u0000\u0000"+
		"\u0000\u23ab\u23ac\u0003\u050c\u0286\u0000\u23ac\u23ae\u0003\u050a\u0285"+
		"\u0000\u23ad\u23af\u0005\u0081\u0000\u0000\u23ae\u23ad\u0001\u0000\u0000"+
		"\u0000\u23ae\u23af\u0001\u0000\u0000\u0000\u23af\u23b0\u0001\u0000\u0000"+
		"\u0000\u23b0\u23b1\u0003\u0508\u0284\u0000\u23b1\u0507\u0001\u0000\u0000"+
		"\u0000\u23b2\u23b3\u0003\u016a\u00b5\u0000\u23b3\u0509\u0001\u0000\u0000"+
		"\u0000\u23b4\u23b5\u0007>\u0000\u0000\u23b5\u050b\u0001\u0000\u0000\u0000"+
		"\u23b6\u23b7\u0007?\u0000\u0000\u23b7\u050d\u0001\u0000\u0000\u0000\u23b8"+
		"\u23ba\u0005T\u0000\u0000\u23b9\u23bb\u0003\u0510\u0288\u0000\u23ba\u23b9"+
		"\u0001\u0000\u0000\u0000\u23ba\u23bb\u0001\u0000\u0000\u0000\u23bb\u23bc"+
		"\u0001\u0000\u0000\u0000\u23bc\u23be\u0005\u014a\u0000\u0000\u23bd\u23bf"+
		"\u0003\u02b0\u0158\u0000\u23be\u23bd\u0001\u0000\u0000\u0000\u23be\u23bf"+
		"\u0001\u0000\u0000\u0000\u23bf\u23c0\u0001\u0000\u0000\u0000\u23c0\u23c2"+
		"\u0003\u0168\u00b4\u0000\u23c1\u23c3\u0003\u0254\u012a\u0000\u23c2\u23c1"+
		"\u0001\u0000\u0000\u0000\u23c2\u23c3\u0001\u0000\u0000\u0000\u23c3\u050f"+
		"\u0001\u0000\u0000\u0000\u23c4\u23c6\u0007$\u0000\u0000\u23c5\u23c4\u0001"+
		"\u0000\u0000\u0000\u23c5\u23c6\u0001\u0000\u0000\u0000\u23c6\u23c7\u0001"+
		"\u0000\u0000\u0000\u23c7\u23ca\u0007\"\u0000\u0000\u23c8\u23ca\u0005\u0155"+
		"\u0000\u0000\u23c9\u23c5\u0001\u0000\u0000\u0000\u23c9\u23c8\u0001\u0000"+
		"\u0000\u0000\u23ca\u0511\u0001\u0000\u0000\u0000\u23cb\u23cc\u0005T\u0000"+
		"\u0000\u23cc\u23ce\u0005\u021c\u0000\u0000\u23cd\u23cf\u0003\u02b0\u0158"+
		"\u0000\u23ce\u23cd\u0001\u0000\u0000\u0000\u23ce\u23cf\u0001\u0000\u0000"+
		"\u0000\u23cf\u23d0\u0001\u0000\u0000\u0000\u23d0\u23d3\u0003\u00fe\u007f"+
		"\u0000\u23d1\u23d2\u0005\u00cb\u0000\u0000\u23d2\u23d4\u0005\u0254\u0000"+
		"\u0000\u23d3\u23d1\u0001\u0000\u0000\u0000\u23d3\u23d4\u0001\u0000\u0000"+
		"\u0000\u23d4\u23d6\u0001\u0000\u0000\u0000\u23d5\u23d7\u0003\u0452\u0229"+
		"\u0000\u23d6\u23d5\u0001\u0000\u0000\u0000\u23d6\u23d7\u0001\u0000\u0000"+
		"\u0000\u23d7\u23d8\u0001\u0000\u0000\u0000\u23d8\u23d9\u0005c\u0000\u0000"+
		"\u23d9\u23da\u0005\u0113\u0000\u0000\u23da\u23db\u0005\u023c\u0000\u0000"+
		"\u23db\u23dc\u0003\u00fe\u007f\u0000\u23dc\u23dd\u0003\u0276\u013b\u0000"+
		"\u23dd\u0513\u0001\u0000\u0000\u0000\u23de\u23df\u0005T\u0000\u0000\u23df"+
		"\u23e1\u0005\u014f\u0000\u0000\u23e0\u23e2\u0003\u02b0\u0158\u0000\u23e1"+
		"\u23e0\u0001\u0000\u0000\u0000\u23e1\u23e2\u0001\u0000\u0000\u0000\u23e2"+
		"\u23e3\u0001\u0000\u0000\u0000\u23e3\u23e4\u0003\u01ec\u00f6\u0000\u23e4"+
		"\u23e5\u0003`0\u0000\u23e5\u23e6\u0005\u0082\u0000\u0000\u23e6\u23e7\u0003"+
		"\u0190\u00c8\u0000\u23e7\u23e8\u0005v\u0000\u0000\u23e8\u23e9\u0003\u00b0"+
		"X\u0000\u23e9\u0515\u0001\u0000\u0000\u0000\u23ea\u23eb\u0005T\u0000\u0000"+
		"\u23eb\u23ec\u0005\u021d\u0000\u0000\u23ec\u23ed\u0003\u00fe\u007f\u0000"+
		"\u23ed\u23ee\u0005\u01ec\u0000\u0000\u23ee\u23ef\u0005\u0254\u0000\u0000"+
		"\u23ef\u23f0\u0005\u0205\u0000\u0000\u23f0\u23f3\u0003\u0458\u022c\u0000"+
		"\u23f1\u23f2\u0005m\u0000\u0000\u23f2\u23f4\u0003\u0264\u0132\u0000\u23f3"+
		"\u23f1\u0001\u0000\u0000\u0000\u23f3\u23f4\u0001\u0000\u0000\u0000\u23f4"+
		"\u0517\u0001\u0000\u0000\u0000\u23f5\u23f6\u0005T\u0000\u0000\u23f6\u23f7"+
		"\u0005\u0151\u0000\u0000\u23f7\u23fa\u0003\u00fe\u007f\u0000\u23f8\u23f9"+
		"\u0005\u013c\u0000\u0000\u23f9\u23fb\u0003\u023a\u011d\u0000\u23fa\u23f8"+
		"\u0001\u0000\u0000\u0000\u23fa\u23fb\u0001\u0000\u0000\u0000\u23fb\u23fd"+
		"\u0001\u0000\u0000\u0000\u23fc\u23fe\u0005\u020c\u0000\u0000\u23fd\u23fc"+
		"\u0001\u0000\u0000\u0000\u23fd\u23fe\u0001\u0000\u0000\u0000\u23fe\u23ff"+
		"\u0001\u0000\u0000\u0000\u23ff\u2400\u0005\u01f2\u0000\u0000\u2400\u2403"+
		"\u0005\u0254\u0000\u0000\u2401\u2402\u0005m\u0000\u0000\u2402\u2404\u0003"+
		"\u021a\u010d\u0000\u2403\u2401\u0001\u0000\u0000\u0000\u2403\u2404\u0001"+
		"\u0000\u0000\u0000\u2404\u240a\u0001\u0000\u0000\u0000\u2405\u2407\u0005"+
		"p\u0000\u0000\u2406\u2408\u0005\u0018\u0000\u0000\u2407\u2406\u0001\u0000"+
		"\u0000\u0000\u2407\u2408\u0001\u0000\u0000\u0000\u2408\u2409\u0001\u0000"+
		"\u0000\u0000\u2409\u240b\u0003\u0350\u01a8\u0000\u240a\u2405\u0001\u0000"+
		"\u0000\u0000\u240a\u240b\u0001\u0000\u0000\u0000\u240b\u0519\u0001\u0000"+
		"\u0000\u0000\u240c\u240d\u0005T\u0000\u0000\u240d\u240e\u0005\u00cf\u0000"+
		"\u0000\u240e\u240f\u0005\u021e\u0000\u0000\u240f\u2410\u0007@\u0000\u0000"+
		"\u2410\u2411\u0003\u01ec\u00f6\u0000\u2411\u2412\u0003\u0264\u0132\u0000"+
		"\u2412\u051b\u0001\u0000\u0000\u0000\u2413\u2416\u0005T\u0000\u0000\u2414"+
		"\u2415\u0005\u0089\u0000\u0000\u2415\u2417\u0005\u020f\u0000\u0000\u2416"+
		"\u2414\u0001\u0000\u0000\u0000\u2416\u2417\u0001\u0000\u0000\u0000\u2417"+
		"\u2418\u0001\u0000\u0000\u0000\u2418\u2419\u0005\u0231\u0000\u0000\u2419"+
		"\u241a\u0005\u0086\u0000\u0000\u241a\u241b\u0003\u018a\u00c5\u0000\u241b"+
		"\u241c\u0005\u012e\u0000\u0000\u241c\u241d\u0003\u00fe\u007f\u0000\u241d"+
		"\u241e\u0005 \u0000\u0000\u241e\u241f\u0003\u04dc\u026e\u0000\u241f\u2420"+
		"\u0005!\u0000\u0000\u2420\u051d\u0001\u0000\u0000\u0000\u2421\u2422\u0005"+
		"T\u0000\u0000\u2422\u2423\u0005\u00cb\u0000\u0000\u2423\u2424\u0003\u01ec"+
		"\u00f6\u0000\u2424\u2425\u0003\u0520\u0290\u0000\u2425\u051f\u0001\u0000"+
		"\u0000\u0000\u2426\u2428\u0003\u0264\u0132\u0000\u2427\u2426\u0001\u0000"+
		"\u0000\u0000\u2427\u2428\u0001\u0000\u0000\u0000\u2428\u243a\u0001\u0000"+
		"\u0000\u0000\u2429\u242a\u0005\u0081\u0000\u0000\u242a\u242c\u0005 \u0000"+
		"\u0000\u242b\u242d\u0003\u01e6\u00f3\u0000\u242c\u242b\u0001\u0000\u0000"+
		"\u0000\u242c\u242d\u0001\u0000\u0000\u0000\u242d\u242e\u0001\u0000\u0000"+
		"\u0000\u242e\u243a\u0005!\u0000\u0000\u242f\u2430\u0005\u0081\u0000\u0000"+
		"\u2430\u2431\u0005\u016c\u0000\u0000\u2431\u2433\u0005 \u0000\u0000\u2432"+
		"\u2434\u0003\u0522\u0291\u0000\u2433\u2432\u0001\u0000\u0000\u0000\u2433"+
		"\u2434\u0001\u0000\u0000\u0000\u2434\u2435\u0001\u0000\u0000\u0000\u2435"+
		"\u243a\u0005!\u0000\u0000\u2436\u2437\u0005\u0081\u0000\u0000\u2437\u2438"+
		"\u0005\u0140\u0000\u0000\u2438\u243a\u0003\u0264\u0132\u0000\u2439\u2427"+
		"\u0001\u0000\u0000\u0000\u2439\u2429\u0001\u0000\u0000\u0000\u2439\u242f"+
		"\u0001\u0000\u0000\u0000\u2439\u2436\u0001\u0000\u0000\u0000\u243a\u0521"+
		"\u0001\u0000\u0000\u0000\u243b\u2440\u0005\u0254\u0000\u0000\u243c\u243d"+
		"\u0005&\u0000\u0000\u243d\u243f\u0005\u0254\u0000\u0000\u243e\u243c\u0001"+
		"\u0000\u0000\u0000\u243f\u2442\u0001\u0000\u0000\u0000\u2440\u243e\u0001"+
		"\u0000\u0000\u0000\u2440\u2441\u0001\u0000\u0000\u0000\u2441\u0523\u0001"+
		"\u0000\u0000\u0000\u2442\u2440\u0001\u0000\u0000\u0000\u2443\u2444\u0005"+
		"T\u0000\u0000\u2444\u2445\u0005\u0108\u0000\u0000\u2445\u2447\u0005\u01fa"+
		"\u0000\u0000\u2446\u2448\u0003\u02b0\u0158\u0000\u2447\u2446\u0001\u0000"+
		"\u0000\u0000\u2447\u2448\u0001\u0000\u0000\u0000\u2448\u2449\u0001\u0000"+
		"\u0000\u0000\u2449\u244a\u0005\u0086\u0000\u0000\u244a\u244b\u0003\u0478"+
		"\u023c\u0000\u244b\u244c\u0005\u021c\u0000\u0000\u244c\u244d\u0003\u00fe"+
		"\u007f\u0000\u244d\u244e\u0003\u0276\u013b\u0000\u244e\u0525\u0001\u0000"+
		"\u0000\u0000\u244f\u2450\u0005\u01dc\u0000\u0000\u2450\u2451\u0007A\u0000"+
		"\u0000\u2451\u0527\u0001\u0000\u0000\u0000\u2452\u2453\u0005V\u0000\u0000"+
		"\u2453\u2454\u0005\u01c1\u0000\u0000\u2454\u2456\u0005\u01fc\u0000\u0000"+
		"\u2455\u2457\u0003\u02b2\u0159\u0000\u2456\u2455\u0001\u0000\u0000\u0000"+
		"\u2456\u2457\u0001\u0000\u0000\u0000\u2457\u2458\u0001\u0000\u0000\u0000"+
		"\u2458\u245a\u0003\u00fe\u007f\u0000\u2459\u245b\u0003\u02c0\u0160\u0000"+
		"\u245a\u2459\u0001\u0000\u0000\u0000\u245a\u245b\u0001\u0000\u0000\u0000"+
		"\u245b\u0529\u0001\u0000\u0000\u0000\u245c\u245d\u0005V\u0000\u0000\u245d"+
		"\u245f\u0005\u01c3\u0000\u0000\u245e\u2460\u0003\u02b2\u0159\u0000\u245f"+
		"\u245e\u0001\u0000\u0000\u0000\u245f\u2460\u0001\u0000\u0000\u0000\u2460"+
		"\u2461\u0001\u0000\u0000\u0000\u2461\u2463\u0003\u052c\u0296\u0000\u2462"+
		"\u2464\u0003\u02c0\u0160\u0000\u2463\u2462\u0001\u0000\u0000\u0000\u2463"+
		"\u2464\u0001\u0000\u0000\u0000\u2464\u052b\u0001\u0000\u0000\u0000\u2465"+
		"\u246a\u0003\u040c\u0206\u0000\u2466\u2467\u0005&\u0000\u0000\u2467\u2469"+
		"\u0003\u040c\u0206\u0000\u2468\u2466\u0001\u0000\u0000\u0000\u2469\u246c"+
		"\u0001\u0000\u0000\u0000\u246a\u2468\u0001\u0000\u0000\u0000\u246a\u246b"+
		"\u0001\u0000\u0000\u0000\u246b\u052d\u0001\u0000\u0000\u0000\u246c\u246a"+
		"\u0001\u0000\u0000\u0000\u246d\u246e\u0005V\u0000\u0000\u246e\u2470\u0005"+
		"s\u0000\u0000\u246f\u2471\u0003\u02b2\u0159\u0000\u2470\u246f\u0001\u0000"+
		"\u0000\u0000\u2470\u2471\u0001\u0000\u0000\u0000\u2471\u2472\u0001\u0000"+
		"\u0000\u0000\u2472\u2473\u0005 \u0000\u0000\u2473\u2474\u0003\u018a\u00c5"+
		"\u0000\u2474\u2475\u0005\u0081\u0000\u0000\u2475\u2476\u0003\u018a\u00c5"+
		"\u0000\u2476\u2478\u0005!\u0000\u0000\u2477\u2479\u0003\u02c0\u0160\u0000"+
		"\u2478\u2477\u0001\u0000\u0000\u0000\u2478\u2479\u0001\u0000\u0000\u0000"+
		"\u2479\u052f\u0001\u0000\u0000\u0000\u247a\u247b\u0005V\u0000\u0000\u247b"+
		"\u247d\u0005\u00c6\u0000\u0000\u247c\u247e\u0003\u02b2\u0159\u0000\u247d"+
		"\u247c\u0001\u0000\u0000\u0000\u247d\u247e\u0001\u0000\u0000\u0000\u247e"+
		"\u247f\u0001\u0000\u0000\u0000\u247f\u2481\u0003\u00fe\u007f\u0000\u2480"+
		"\u2482\u0003\u02c0\u0160\u0000\u2481\u2480\u0001\u0000\u0000\u0000\u2481"+
		"\u2482\u0001\u0000\u0000\u0000\u2482\u0531\u0001\u0000\u0000\u0000\u2483"+
		"\u2484\u0005V\u0000\u0000\u2484\u2486\u0005\u01cc\u0000\u0000\u2485\u2487"+
		"\u0003\u02b2\u0159\u0000\u2486\u2485\u0001\u0000\u0000\u0000\u2486\u2487"+
		"\u0001\u0000\u0000\u0000\u2487\u2488\u0001\u0000\u0000\u0000\u2488\u248a"+
		"\u0003\u00fe\u007f\u0000\u2489\u248b\u0003\u02c0\u0160\u0000\u248a\u2489"+
		"\u0001\u0000\u0000\u0000\u248a\u248b\u0001\u0000\u0000\u0000\u248b\u0533"+
		"\u0001\u0000\u0000\u0000\u248c\u248d\u0005V\u0000\u0000\u248d\u248f\u0005"+
		"\u0119\u0000\u0000\u248e\u2490\u0003\u02b2\u0159\u0000\u248f\u248e\u0001"+
		"\u0000\u0000\u0000\u248f\u2490\u0001\u0000\u0000\u0000\u2490\u2491\u0001"+
		"\u0000\u0000\u0000\u2491\u2493\u0003\u01f6\u00fb\u0000\u2492\u2494\u0003"+
		"\u02c0\u0160\u0000\u2493\u2492\u0001\u0000\u0000\u0000\u2493\u2494\u0001"+
		"\u0000\u0000\u0000\u2494\u0535\u0001\u0000\u0000\u0000\u2495\u2496\u0005"+
		"V\u0000\u0000\u2496\u2497\u0005\u01ea\u0000\u0000\u2497\u2499\u0005h\u0000"+
		"\u0000\u2498\u249a\u0003\u02b2\u0159\u0000\u2499\u2498\u0001\u0000\u0000"+
		"\u0000\u2499\u249a\u0001\u0000\u0000\u0000\u249a\u249b\u0001\u0000\u0000"+
		"\u0000\u249b\u249d\u0003\u01f6\u00fb\u0000\u249c\u249e\u0003\u02c0\u0160"+
		"\u0000\u249d\u249c\u0001\u0000\u0000\u0000\u249d\u249e\u0001\u0000\u0000"+
		"\u0000\u249e\u0537\u0001\u0000\u0000\u0000\u249f\u24a0\u0005V\u0000\u0000"+
		"\u24a0\u24a2\u0005\u011d\u0000\u0000\u24a1\u24a3\u0003\u02b2\u0159\u0000"+
		"\u24a2\u24a1\u0001\u0000\u0000\u0000\u24a2\u24a3\u0001\u0000\u0000\u0000"+
		"\u24a3\u24a4\u0001\u0000\u0000\u0000\u24a4\u24a6\u0003\u01f6\u00fb\u0000"+
		"\u24a5\u24a7\u0003\u02c0\u0160\u0000\u24a6\u24a5\u0001\u0000\u0000\u0000"+
		"\u24a6\u24a7\u0001\u0000\u0000\u0000\u24a7\u0539\u0001\u0000\u0000\u0000"+
		"\u24a8\u24a9\u0005V\u0000\u0000\u24a9\u24aa\u0005c\u0000\u0000\u24aa\u24ab"+
		"\u0005\u0113\u0000\u0000\u24ab\u24ad\u0005\u023c\u0000\u0000\u24ac\u24ae"+
		"\u0003\u02b2\u0159\u0000\u24ad\u24ac\u0001\u0000\u0000\u0000\u24ad\u24ae"+
		"\u0001\u0000\u0000\u0000\u24ae\u24af\u0001\u0000\u0000\u0000\u24af\u24b1"+
		"\u0003\u01f6\u00fb\u0000\u24b0\u24b2\u0003\u02c0\u0160\u0000\u24b1\u24b0"+
		"\u0001\u0000\u0000\u0000\u24b1\u24b2\u0001\u0000\u0000\u0000\u24b2\u053b"+
		"\u0001\u0000\u0000\u0000\u24b3\u24b4\u0005V\u0000\u0000\u24b4\u24b5\u0005"+
		"c\u0000\u0000\u24b5\u24b7\u0005]\u0000\u0000\u24b6\u24b8\u0003\u02b2\u0159"+
		"\u0000\u24b7\u24b6\u0001\u0000\u0000\u0000\u24b7\u24b8\u0001\u0000\u0000"+
		"\u0000\u24b8\u24b9\u0001\u0000\u0000\u0000\u24b9\u24be\u0003\u00f8|\u0000"+
		"\u24ba\u24bb\u0005&\u0000\u0000\u24bb\u24bd\u0003\u00f8|\u0000\u24bc\u24ba"+
		"\u0001\u0000\u0000\u0000\u24bd\u24c0\u0001\u0000\u0000\u0000\u24be\u24bc"+
		"\u0001\u0000\u0000\u0000\u24be\u24bf\u0001\u0000\u0000\u0000\u24bf\u24c2"+
		"\u0001\u0000\u0000\u0000\u24c0\u24be\u0001\u0000\u0000\u0000\u24c1\u24c3"+
		"\u0003\u02c0\u0160\u0000\u24c2\u24c1\u0001\u0000\u0000\u0000\u24c2\u24c3"+
		"\u0001\u0000\u0000\u0000\u24c3\u053d\u0001\u0000\u0000\u0000\u24c4\u24c5"+
		"\u0005V\u0000\u0000\u24c5\u24c7\u0005g\u0000\u0000\u24c6\u24c8\u0003\u02b2"+
		"\u0159\u0000\u24c7\u24c6\u0001\u0000\u0000\u0000\u24c7\u24c8\u0001\u0000"+
		"\u0000\u0000\u24c8\u24c9\u0001\u0000\u0000\u0000\u24c9\u24cb\u0003\u0540"+
		"\u02a0\u0000\u24ca\u24cc\u0003\u02c0\u0160\u0000\u24cb\u24ca\u0001\u0000"+
		"\u0000\u0000\u24cb\u24cc\u0001\u0000\u0000\u0000\u24cc\u053f\u0001\u0000"+
		"\u0000\u0000\u24cd\u24d2\u0003\u0408\u0204\u0000\u24ce\u24cf\u0005&\u0000"+
		"\u0000\u24cf\u24d1\u0003\u0408\u0204\u0000\u24d0\u24ce\u0001\u0000\u0000"+
		"\u0000\u24d1\u24d4\u0001\u0000\u0000\u0000\u24d2\u24d0\u0001\u0000\u0000"+
		"\u0000\u24d2\u24d3\u0001\u0000\u0000\u0000\u24d3\u0541\u0001\u0000\u0000"+
		"\u0000\u24d4\u24d2\u0001\u0000\u0000\u0000\u24d5\u24d7\u0005V\u0000\u0000"+
		"\u24d6\u24d8\u0005\u0201\u0000\u0000\u24d7\u24d6\u0001\u0000\u0000\u0000"+
		"\u24d7\u24d8\u0001\u0000\u0000\u0000\u24d8\u24d9\u0001\u0000\u0000\u0000"+
		"\u24d9\u24db\u0005\u012e\u0000\u0000\u24da\u24dc\u0003\u02b2\u0159\u0000"+
		"\u24db\u24da\u0001\u0000\u0000\u0000\u24db\u24dc\u0001\u0000\u0000\u0000"+
		"\u24dc\u24dd\u0001\u0000\u0000\u0000\u24dd\u24df\u0003\u00fe\u007f\u0000"+
		"\u24de\u24e0\u0003\u02c0\u0160\u0000\u24df\u24de\u0001\u0000\u0000\u0000"+
		"\u24df\u24e0\u0001\u0000\u0000\u0000\u24e0\u0543\u0001\u0000\u0000\u0000"+
		"\u24e1\u24e2\u0005V\u0000\u0000\u24e2\u24e3\u0005\u01a1\u0000\u0000\u24e3"+
		"\u24e5\u0005j\u0000\u0000\u24e4\u24e6\u0003\u02b2\u0159\u0000\u24e5\u24e4"+
		"\u0001\u0000\u0000\u0000\u24e5\u24e6\u0001\u0000\u0000\u0000\u24e6\u24e7"+
		"\u0001\u0000\u0000\u0000\u24e7\u24e9\u0003\u0464\u0232\u0000\u24e8\u24ea"+
		"\u0003\u02c0\u0160\u0000\u24e9\u24e8\u0001\u0000\u0000\u0000\u24e9\u24ea"+
		"\u0001\u0000\u0000\u0000\u24ea\u0545\u0001\u0000\u0000\u0000\u24eb\u24ec"+
		"\u0005V\u0000\u0000\u24ec\u24ee\u0005\u01a2\u0000\u0000\u24ed\u24ef\u0003"+
		"\u02b2\u0159\u0000\u24ee\u24ed\u0001\u0000\u0000\u0000\u24ee\u24ef\u0001"+
		"\u0000\u0000\u0000\u24ef\u24f0\u0001\u0000\u0000\u0000\u24f0\u24f2\u0003"+
		"\u0548\u02a4\u0000\u24f1\u24f3\u0003\u02c0\u0160\u0000\u24f2\u24f1\u0001"+
		"\u0000\u0000\u0000\u24f2\u24f3\u0001\u0000\u0000\u0000\u24f3\u0547\u0001"+
		"\u0000\u0000\u0000\u24f4\u24f9\u0003\u03c6\u01e3\u0000\u24f5\u24f6\u0005"+
		"&\u0000\u0000\u24f6\u24f8\u0003\u03c6\u01e3\u0000\u24f7\u24f5\u0001\u0000"+
		"\u0000\u0000\u24f8\u24fb\u0001\u0000\u0000\u0000\u24f9\u24f7\u0001\u0000"+
		"\u0000\u0000\u24f9\u24fa\u0001\u0000\u0000\u0000\u24fa\u0549\u0001\u0000"+
		"\u0000\u0000\u24fb\u24f9\u0001\u0000\u0000\u0000\u24fc\u24fd\u0005V\u0000"+
		"\u0000\u24fd\u24fe\u0005\u01a2\u0000\u0000\u24fe\u2500\u0005\u01d4\u0000"+
		"\u0000\u24ff\u2501\u0003\u02b2\u0159\u0000\u2500\u24ff\u0001\u0000\u0000"+
		"\u0000\u2500\u2501\u0001\u0000\u0000\u0000\u2501\u2502\u0001\u0000\u0000"+
		"\u0000\u2502\u2503\u0003\u01ec\u00f6\u0000\u2503\u2504\u0005\u007f\u0000"+
		"\u0000\u2504\u2506\u0003\u00fe\u007f\u0000\u2505\u2507\u0003\u02c0\u0160"+
		"\u0000\u2506\u2505\u0001\u0000\u0000\u0000\u2506\u2507\u0001\u0000\u0000"+
		"\u0000\u2507\u054b\u0001\u0000\u0000\u0000\u2508\u2509\u0005V\u0000\u0000"+
		"\u2509\u250a\u0005\u01a2\u0000\u0000\u250a\u250c\u0005\u01ee\u0000\u0000"+
		"\u250b\u250d\u0003\u02b2\u0159\u0000\u250c\u250b\u0001\u0000\u0000\u0000"+
		"\u250c\u250d\u0001\u0000\u0000\u0000\u250d\u250e\u0001\u0000\u0000\u0000"+
		"\u250e\u250f\u0003\u01ec\u00f6\u0000\u250f\u2510\u0005\u007f\u0000\u0000"+
		"\u2510\u2512\u0003\u00fe\u007f\u0000\u2511\u2513\u0003\u02c0\u0160\u0000"+
		"\u2512\u2511\u0001\u0000\u0000\u0000\u2512\u2513\u0001\u0000\u0000\u0000"+
		"\u2513\u054d\u0001\u0000\u0000\u0000\u2514\u2515\u0005V\u0000\u0000\u2515"+
		"\u2516\u0005\u013b\u0000\u0000\u2516\u2517\u0005\u0097\u0000\u0000\u2517"+
		"\u2519\u0003\u028e\u0147\u0000\u2518\u251a\u0003\u02c0\u0160\u0000\u2519"+
		"\u2518\u0001\u0000\u0000\u0000\u2519\u251a\u0001\u0000\u0000\u0000\u251a"+
		"\u054f\u0001\u0000\u0000\u0000\u251b\u251c\u0005V\u0000\u0000\u251c\u251e"+
		"\u0005\u0221\u0000\u0000\u251d\u251f\u0003\u02b2\u0159\u0000\u251e\u251d"+
		"\u0001\u0000\u0000\u0000\u251e\u251f\u0001\u0000\u0000\u0000\u251f\u2520"+
		"\u0001\u0000\u0000\u0000\u2520\u2521\u0003\u00fe\u007f\u0000\u2521\u2522"+
		"\u0005\u0082\u0000\u0000\u2522\u2524\u0003\u00f8|\u0000\u2523\u2525\u0003"+
		"\u02c0\u0160\u0000\u2524\u2523\u0001\u0000\u0000\u0000\u2524\u2525\u0001"+
		"\u0000\u0000\u0000\u2525\u0551\u0001\u0000\u0000\u0000\u2526\u2527\u0005"+
		"V\u0000\u0000\u2527\u2529\u0005i\u0000\u0000\u2528\u252a\u0003\u02b2\u0159"+
		"\u0000\u2529\u2528\u0001\u0000\u0000\u0000\u2529\u252a\u0001\u0000\u0000"+
		"\u0000\u252a\u252b\u0001\u0000\u0000\u0000\u252b\u252d\u0003\u0540\u02a0"+
		"\u0000\u252c\u252e\u0003\u02c0\u0160\u0000\u252d\u252c\u0001\u0000\u0000"+
		"\u0000\u252d\u252e\u0001\u0000\u0000\u0000\u252e\u0553\u0001\u0000\u0000"+
		"\u0000\u252f\u2530\u0005V\u0000\u0000\u2530\u2532\u0005\u0205\u0000\u0000"+
		"\u2531\u2533\u0003\u02b2\u0159\u0000\u2532\u2531\u0001\u0000\u0000\u0000"+
		"\u2532\u2533\u0001\u0000\u0000\u0000\u2533\u2534\u0001\u0000\u0000\u0000"+
		"\u2534\u2536\u0003\u00fe\u007f\u0000\u2535\u2537\u0003\u02c0\u0160\u0000"+
		"\u2536\u2535\u0001\u0000\u0000\u0000\u2536\u2537\u0001\u0000\u0000\u0000"+
		"\u2537\u0555\u0001\u0000\u0000\u0000\u2538\u2539\u0005V\u0000\u0000\u2539"+
		"\u253b\u0005\u0146\u0000\u0000\u253a\u253c\u0003\u02b2\u0159\u0000\u253b"+
		"\u253a\u0001\u0000\u0000\u0000\u253b\u253c\u0001\u0000\u0000\u0000\u253c"+
		"\u253d\u0001\u0000\u0000\u0000\u253d\u253f\u0003\u0540\u02a0\u0000\u253e"+
		"\u2540\u0003\u02c0\u0160\u0000\u253f\u253e\u0001\u0000\u0000\u0000\u253f"+
		"\u2540\u0001\u0000\u0000\u0000\u2540\u0557\u0001\u0000\u0000\u0000\u2541"+
		"\u2542\u0005V\u0000\u0000\u2542\u2544\u0005\u0148\u0000\u0000\u2543\u2545"+
		"\u0003\u02b2\u0159\u0000\u2544\u2543\u0001\u0000\u0000\u0000\u2544\u2545"+
		"\u0001\u0000\u0000\u0000\u2545\u2546\u0001\u0000\u0000\u0000\u2546\u2547"+
		"\u0003\u00fe\u007f\u0000\u2547\u2548\u0005\u0082\u0000\u0000\u2548\u254a"+
		"\u0003\u00f8|\u0000\u2549\u254b\u0003\u02c0\u0160\u0000\u254a\u2549\u0001"+
		"\u0000\u0000\u0000\u254a\u254b\u0001\u0000\u0000\u0000\u254b\u0559\u0001"+
		"\u0000\u0000\u0000\u254c\u254d\u0005V\u0000\u0000\u254d\u254f\u0005\u014a"+
		"\u0000\u0000\u254e\u2550\u0003\u02b2\u0159\u0000\u254f\u254e\u0001\u0000"+
		"\u0000\u0000\u254f\u2550\u0001\u0000\u0000\u0000\u2550\u2551\u0001\u0000"+
		"\u0000\u0000\u2551\u2553\u0003p8\u0000\u2552\u2554\u0003\u02c0\u0160\u0000"+
		"\u2553\u2552\u0001\u0000\u0000\u0000\u2553\u2554\u0001\u0000\u0000\u0000"+
		"\u2554\u055b\u0001\u0000\u0000\u0000\u2555\u2556\u0005V\u0000\u0000\u2556"+
		"\u2558\u0005\u0147\u0000\u0000\u2557\u2559\u0003\u02b2\u0159\u0000\u2558"+
		"\u2557\u0001\u0000\u0000\u0000\u2558\u2559\u0001\u0000\u0000\u0000\u2559"+
		"\u255a\u0001\u0000\u0000\u0000\u255a\u255c\u0003\u00f4z\u0000\u255b\u255d"+
		"\u0003\u02c0\u0160\u0000\u255c\u255b\u0001\u0000\u0000\u0000\u255c\u255d"+
		"\u0001\u0000\u0000\u0000\u255d\u055d\u0001\u0000\u0000\u0000\u255e\u255f"+
		"\u0005V\u0000\u0000\u255f\u2561\u0005\u021c\u0000\u0000\u2560\u2562\u0003"+
		"\u02b2\u0159\u0000\u2561\u2560\u0001\u0000\u0000\u0000\u2561\u2562\u0001"+
		"\u0000\u0000\u0000\u2562\u2563\u0001\u0000\u0000\u0000\u2563\u2565\u0003"+
		"p8\u0000\u2564\u2566\u0003\u02c0\u0160\u0000\u2565\u2564\u0001\u0000\u0000"+
		"\u0000\u2565\u2566\u0001\u0000\u0000\u0000\u2566\u055f\u0001\u0000\u0000"+
		"\u0000\u2567\u2568\u0005V\u0000\u0000\u2568\u256a\u0005\u014f\u0000\u0000"+
		"\u2569\u256b\u0003\u02b2\u0159\u0000\u256a\u2569\u0001\u0000\u0000\u0000"+
		"\u256a\u256b\u0001\u0000\u0000\u0000\u256b\u256c\u0001\u0000\u0000\u0000"+
		"\u256c\u256d\u0003p8\u0000\u256d\u0561\u0001\u0000\u0000\u0000\u256e\u256f"+
		"\u0005V\u0000\u0000\u256f\u2571\u0005\u021d\u0000\u0000\u2570\u2572\u0003"+
		"\u02b2\u0159\u0000\u2571\u2570\u0001\u0000\u0000\u0000\u2571\u2572\u0001"+
		"\u0000\u0000\u0000\u2572\u2573\u0001\u0000\u0000\u0000\u2573\u2575\u0003"+
		"\u0168\u00b4\u0000\u2574\u2576\u0003\u02c0\u0160\u0000\u2575\u2574\u0001"+
		"\u0000\u0000\u0000\u2575\u2576\u0001\u0000\u0000\u0000\u2576\u0563\u0001"+
		"\u0000\u0000\u0000\u2577\u2578\u0005V\u0000\u0000\u2578\u257a\u0005\u0151"+
		"\u0000\u0000\u2579\u257b\u0003\u02b2\u0159\u0000\u257a\u2579\u0001\u0000"+
		"\u0000\u0000\u257a\u257b\u0001\u0000\u0000\u0000\u257b\u257c\u0001\u0000"+
		"\u0000\u0000\u257c\u257d\u0003\u0168\u00b4\u0000\u257d\u0565\u0001\u0000"+
		"\u0000\u0000\u257e\u257f\u0005";
	private static final String _serializedATNSegment4 =
		"V\u0000\u0000\u257f\u2580\u0005\u00cf\u0000\u0000\u2580\u2581\u0005\u021e"+
		"\u0000\u0000\u2581\u2583\u0007@\u0000\u0000\u2582\u2584\u0003\u02b2\u0159"+
		"\u0000\u2583\u2582\u0001\u0000\u0000\u0000\u2583\u2584\u0001\u0000\u0000"+
		"\u0000\u2584\u2585\u0001\u0000\u0000\u0000\u2585\u2587\u0003\u0168\u00b4"+
		"\u0000\u2586\u2588\u0003\u02c0\u0160\u0000\u2587\u2586\u0001\u0000\u0000"+
		"\u0000\u2587\u2588\u0001\u0000\u0000\u0000\u2588\u0567\u0001\u0000\u0000"+
		"\u0000\u2589\u258a\u0005V\u0000\u0000\u258a\u258c\u0005\u0231\u0000\u0000"+
		"\u258b\u258d\u0003\u02b2\u0159\u0000\u258c\u258b\u0001\u0000\u0000\u0000"+
		"\u258c\u258d\u0001\u0000\u0000\u0000\u258d\u258e\u0001\u0000\u0000\u0000"+
		"\u258e\u258f\u0005\u0086\u0000\u0000\u258f\u2590\u0003\u018a\u00c5\u0000"+
		"\u2590\u2591\u0005\u012e\u0000\u0000\u2591\u2593\u0003\u00fe\u007f\u0000"+
		"\u2592\u2594\u0003\u02c0\u0160\u0000\u2593\u2592\u0001\u0000\u0000\u0000"+
		"\u2593\u2594\u0001\u0000\u0000\u0000\u2594\u0569\u0001\u0000\u0000\u0000"+
		"\u2595\u2596\u0005V\u0000\u0000\u2596\u2598\u0005h\u0000\u0000\u2597\u2599"+
		"\u0003\u02b2\u0159\u0000\u2598\u2597\u0001\u0000\u0000\u0000\u2598\u2599"+
		"\u0001\u0000\u0000\u0000\u2599\u259a\u0001\u0000\u0000\u0000\u259a\u259b"+
		"\u0003\u0168\u00b4\u0000\u259b\u259c\u0005\u0082\u0000\u0000\u259c\u259e"+
		"\u0003\u00f8|\u0000\u259d\u259f\u0003\u02c0\u0160\u0000\u259e\u259d\u0001"+
		"\u0000\u0000\u0000\u259e\u259f\u0001\u0000\u0000\u0000\u259f\u056b\u0001"+
		"\u0000\u0000\u0000\u25a0\u25a1\u0005V\u0000\u0000\u25a1\u25a3\u0005\u00cb"+
		"\u0000\u0000\u25a2\u25a4\u0003\u02b2\u0159\u0000\u25a3\u25a2\u0001\u0000"+
		"\u0000\u0000\u25a3\u25a4\u0001\u0000\u0000\u0000\u25a4\u25a5\u0001\u0000"+
		"\u0000\u0000\u25a5\u25a7\u0003\u0464\u0232\u0000\u25a6\u25a8\u0003\u02c0"+
		"\u0160\u0000\u25a7\u25a6\u0001\u0000\u0000\u0000\u25a7\u25a8\u0001\u0000"+
		"\u0000\u0000\u25a8\u056d\u0001\u0000\u0000\u0000\u25a9\u25aa\u0005V\u0000"+
		"\u0000\u25aa\u25ab\u0005\u0108\u0000\u0000\u25ab\u25ad\u0005\u01fa\u0000"+
		"\u0000\u25ac\u25ae\u0003\u02b2\u0159\u0000\u25ad\u25ac\u0001\u0000\u0000"+
		"\u0000\u25ad\u25ae\u0001\u0000\u0000\u0000\u25ae\u25af\u0001\u0000\u0000"+
		"\u0000\u25af\u25b0\u0005\u0086\u0000\u0000\u25b0\u25b1\u0003\u0478\u023c"+
		"\u0000\u25b1\u25b2\u0005\u021c\u0000\u0000\u25b2\u25b3\u0003\u00fe\u007f"+
		"\u0000\u25b3\u056f\u0001\u0000\u0000\u0000\u25b4\u25b5\u0005V\u0000\u0000"+
		"\u25b5\u25b7\u0005j\u0000\u0000\u25b6\u25b8\u0003\u02b2\u0159\u0000\u25b7"+
		"\u25b6\u0001\u0000\u0000\u0000\u25b7\u25b8\u0001\u0000\u0000\u0000\u25b8"+
		"\u25b9\u0001\u0000\u0000\u0000\u25b9\u25bb\u0003p8\u0000\u25ba\u25bc\u0003"+
		"\u02c0\u0160\u0000\u25bb\u25ba\u0001\u0000\u0000\u0000\u25bb\u25bc\u0001"+
		"\u0000\u0000\u0000\u25bc\u0571\u0001\u0000\u0000\u0000\u25bd\u25be\u0005"+
		"\u0214\u0000\u0000\u25be\u25bf\u0005c\u0000\u0000\u25bf\u25c0\u0005X\u0000"+
		"\u0000\u25c0\u25c2\u0003\u00fe\u007f\u0000\u25c1\u25c3\u0003\u0574\u02ba"+
		"\u0000\u25c2\u25c1\u0001\u0000\u0000\u0000\u25c2\u25c3\u0001\u0000\u0000"+
		"\u0000\u25c3\u25c4\u0001\u0000\u0000\u0000\u25c4\u25c5\u0005v\u0000\u0000"+
		"\u25c5\u25c6\u0005\u021c\u0000\u0000\u25c6\u25c7\u0003\u00fe\u007f\u0000"+
		"\u25c7\u25c8\u0005k\u0000\u0000\u25c8\u25ca\u0003\u00fe\u007f\u0000\u25c9"+
		"\u25cb\u0003\u0276\u013b\u0000\u25ca\u25c9\u0001\u0000\u0000\u0000\u25ca"+
		"\u25cb\u0001\u0000\u0000\u0000\u25cb\u0573\u0001\u0000\u0000\u0000\u25cc"+
		"\u25cd\u0003\u0576\u02bb\u0000\u25cd\u25ce\u0005 \u0000\u0000\u25ce\u25cf"+
		"\u0003\u02a4\u0152\u0000\u25cf\u25d0\u0005!\u0000\u0000\u25d0\u0575\u0001"+
		"\u0000\u0000\u0000\u25d1\u25d2\u0005\u009b\u0000\u0000\u25d2\u25d5\u0005"+
		"\u0087\u0000\u0000\u25d3\u25d5\u0005\u00de\u0000\u0000\u25d4\u25d1\u0001"+
		"\u0000\u0000\u0000\u25d4\u25d3\u0001\u0000\u0000\u0000\u25d5\u0577\u0001"+
		"\u0000\u0000\u0000\u25d6\u25d7\u0005\u01fe\u0000\u0000\u25d7\u25d8\u0003"+
		"\u016a\u00b5\u0000\u25d8\u0579\u0001\u0000\u0000\u0000\u25d9\u25db\u0005"+
		"\u0200\u0000\u0000\u25da\u25dc\u0003\u05c4\u02e2\u0000\u25db\u25da\u0001"+
		"\u0000\u0000\u0000\u25db\u25dc\u0001\u0000\u0000\u0000\u25dc\u25de\u0001"+
		"\u0000\u0000\u0000\u25dd\u25df\u0007B\u0000\u0000\u25de\u25dd\u0001\u0000"+
		"\u0000\u0000\u25de\u25df\u0001\u0000\u0000\u0000\u25df\u25e0\u0001\u0000"+
		"\u0000\u0000\u25e0\u25e1\u0003\u0118\u008c\u0000\u25e1\u057b\u0001\u0000"+
		"\u0000\u0000\u25e2\u25e3\u0005\u0212\u0000\u0000\u25e3\u25e5\u0003\u00fe"+
		"\u007f\u0000\u25e4\u25e6\u0003\u0580\u02c0\u0000\u25e5\u25e4\u0001\u0000"+
		"\u0000\u0000\u25e5\u25e6\u0001\u0000\u0000\u0000\u25e6\u25e7\u0001\u0000"+
		"\u0000\u0000\u25e7\u25e8\u0005\u0081\u0000\u0000\u25e8\u25e9\u0003b1\u0000"+
		"\u25e9\u057d\u0001\u0000\u0000\u0000\u25ea\u25ec\u0005\u01eb\u0000\u0000"+
		"\u25eb\u25ed\u0005\u0212\u0000\u0000\u25ec\u25eb\u0001\u0000\u0000\u0000"+
		"\u25ec\u25ed\u0001\u0000\u0000\u0000\u25ed\u25f0\u0001\u0000\u0000\u0000"+
		"\u25ee\u25f1\u0003\u00fe\u007f\u0000\u25ef\u25f1\u0005\u0092\u0000\u0000"+
		"\u25f0\u25ee\u0001\u0000\u0000\u0000\u25f0\u25ef\u0001\u0000\u0000\u0000"+
		"\u25f1\u057f\u0001\u0000\u0000\u0000\u25f2\u25f3\u0005 \u0000\u0000\u25f3"+
		"\u25f4\u0003\u015e\u00af\u0000\u25f4\u25f5\u0005!\u0000\u0000\u25f5\u0581"+
		"\u0001\u0000\u0000\u0000\u25f6\u25f7\u0005\u0211\u0000\u0000\u25f7\u25f8"+
		"\u0005\u01a1\u0000\u0000\u25f8\u25fa\u0005j\u0000\u0000\u25f9\u25fb\u0005"+
		"\u010f\u0000\u0000\u25fa\u25f9\u0001\u0000\u0000\u0000\u25fa\u25fb\u0001"+
		"\u0000\u0000\u0000\u25fb\u25fc\u0001\u0000\u0000\u0000\u25fc\u25fe\u0003"+
		"\u0168\u00b4\u0000\u25fd\u25ff\u0003\u02e6\u0173\u0000\u25fe\u25fd\u0001"+
		"\u0000\u0000\u0000\u25fe\u25ff\u0001\u0000\u0000\u0000\u25ff\u0583\u0001"+
		"\u0000\u0000\u0000\u2600\u2601\u0005\u0209\u0000\u0000\u2601\u2602\u0003"+
		"\u0586\u02c3\u0000\u2602\u0585\u0001\u0000\u0000\u0000\u2603\u2605\u0003"+
		"\u058e\u02c7\u0000\u2604\u2606\u0005\u010f\u0000\u0000\u2605\u2604\u0001"+
		"\u0000\u0000\u0000\u2605\u2606\u0001\u0000\u0000\u0000\u2606\u2607\u0001"+
		"\u0000\u0000\u0000\u2607\u2608\u0003\u0168\u00b4\u0000\u2608\u2622\u0001"+
		"\u0000\u0000\u0000\u2609\u260b\u0003\u058c\u02c6\u0000\u260a\u260c\u0005"+
		"\u010f\u0000\u0000\u260b\u260a\u0001\u0000\u0000\u0000\u260b\u260c\u0001"+
		"\u0000\u0000\u0000\u260c\u260d\u0001\u0000\u0000\u0000\u260d\u260e\u0003"+
		"\u00fe\u007f\u0000\u260e\u2622\u0001\u0000\u0000\u0000\u260f\u2610\u0005"+
		" \u0000\u0000\u2610\u2611\u0003\u0588\u02c4\u0000\u2611\u2612\u0005!\u0000"+
		"\u0000\u2612\u2614\u0003\u058e\u02c7\u0000\u2613\u2615\u0005\u010f\u0000"+
		"\u0000\u2614\u2613\u0001\u0000\u0000\u0000\u2614\u2615\u0001\u0000\u0000"+
		"\u0000\u2615\u2616\u0001\u0000\u0000\u0000\u2616\u2617\u0003\u0168\u00b4"+
		"\u0000\u2617\u2622\u0001\u0000\u0000\u0000\u2618\u2619\u0005 \u0000\u0000"+
		"\u2619\u261a\u0003\u0588\u02c4\u0000\u261a\u261b\u0005!\u0000\u0000\u261b"+
		"\u261d\u0003\u058c\u02c6\u0000\u261c\u261e\u0005\u010f\u0000\u0000\u261d"+
		"\u261c\u0001\u0000\u0000\u0000\u261d\u261e\u0001\u0000\u0000\u0000\u261e"+
		"\u261f\u0001\u0000\u0000\u0000\u261f\u2620\u0003\u00fe\u007f\u0000\u2620"+
		"\u2622\u0001\u0000\u0000\u0000\u2621\u2603\u0001\u0000\u0000\u0000\u2621"+
		"\u2609\u0001\u0000\u0000\u0000\u2621\u260f\u0001\u0000\u0000\u0000\u2621"+
		"\u2618\u0001\u0000\u0000\u0000\u2622\u0587\u0001\u0000\u0000\u0000\u2623"+
		"\u2628\u0003\u058a\u02c5\u0000\u2624\u2625\u0005&\u0000\u0000\u2625\u2627"+
		"\u0003\u058a\u02c5\u0000\u2626\u2624\u0001\u0000\u0000\u0000\u2627\u262a"+
		"\u0001\u0000\u0000\u0000\u2628\u2626\u0001\u0000\u0000\u0000\u2628\u2629"+
		"\u0001\u0000\u0000\u0000\u2629\u0589\u0001\u0000\u0000\u0000\u262a\u2628"+
		"\u0001\u0000\u0000\u0000\u262b\u262c\u0005\u0240\u0000\u0000\u262c\u058b"+
		"\u0001\u0000\u0000\u0000\u262d\u262e\u0007C\u0000\u0000\u262e\u058d\u0001"+
		"\u0000\u0000\u0000\u262f\u2630\u00078\u0000\u0000\u2630\u058f\u0001\u0000"+
		"\u0000\u0000\u2631\u2632\u0005U\u0000\u0000\u2632\u2633\u0005c\u0000\u0000"+
		"\u2633\u2635\u0005]\u0000\u0000\u2634\u2636\u0003\u02b2\u0159\u0000\u2635"+
		"\u2634\u0001\u0000\u0000\u0000\u2635\u2636\u0001\u0000\u0000\u0000\u2636"+
		"\u2637\u0001\u0000\u0000\u0000\u2637\u2638\u0003\u00c0`\u0000\u2638\u2639"+
		"\u0003\u0592\u02c9\u0000\u2639\u0591\u0001\u0000\u0000\u0000\u263a\u263b"+
		"\u0005\u0141\u0000\u0000\u263b\u263c\u0005\u0087\u0000\u0000\u263c\u264a"+
		"\u0003\u00fe\u007f\u0000\u263d\u263f\u0005\u0141\u0000\u0000\u263e\u2640"+
		"\u0005^\u0000\u0000\u263f\u263e\u0001\u0000\u0000\u0000\u263f\u2640\u0001"+
		"\u0000\u0000\u0000\u2640\u2641\u0001\u0000\u0000\u0000\u2641\u2642\u0003"+
		"\u00fe\u007f\u0000\u2642\u2643\u0005\u0087\u0000\u0000\u2643\u2644\u0003"+
		"\u00fe\u007f\u0000\u2644\u264a\u0001\u0000\u0000\u0000\u2645\u264a\u0003"+
		"\u0396\u01cb\u0000\u2646\u2647\u0005\\\u0000\u0000\u2647\u2648\u0005X"+
		"\u0000\u0000\u2648\u264a\u0003\u00fe\u007f\u0000\u2649\u263a\u0001\u0000"+
		"\u0000\u0000\u2649\u263d\u0001\u0000\u0000\u0000\u2649\u2645\u0001\u0000"+
		"\u0000\u0000\u2649\u2646\u0001\u0000\u0000\u0000\u264a\u0593\u0001\u0000"+
		"\u0000\u0000\u264b\u264c\u0005T\u0000\u0000\u264c\u264d\u0005\u01a2\u0000"+
		"\u0000\u264d\u264e\u0003\u0148\u00a4\u0000\u264e\u264f\u0003\u0264\u0132"+
		"\u0000\u264f\u0595\u0001\u0000\u0000\u0000\u2650\u2651\u0005T\u0000\u0000"+
		"\u2651\u2652\u0005\u01a2\u0000\u0000\u2652\u2653\u0005\u01d4\u0000\u0000"+
		"\u2653\u2655\u0003\u01ec\u00f6\u0000\u2654\u2656\u0005\u00b5\u0000\u0000"+
		"\u2655\u2654\u0001\u0000\u0000\u0000\u2655\u2656\u0001\u0000\u0000\u0000"+
		"\u2656\u2657\u0001\u0000\u0000\u0000\u2657\u2658\u0005\u0086\u0000\u0000"+
		"\u2658\u2659\u0005\u00cb\u0000\u0000\u2659\u265a\u0003\u018a\u00c5\u0000"+
		"\u265a\u265b\u0005\u007f\u0000\u0000\u265b\u265e\u0003\u00fe\u007f\u0000"+
		"\u265c\u265d\u0005\u01ee\u0000\u0000\u265d\u265f\u0003\u01ec\u00f6\u0000"+
		"\u265e\u265c\u0001\u0000\u0000\u0000\u265e\u265f\u0001\u0000\u0000\u0000"+
		"\u265f\u2660\u0001\u0000\u0000\u0000\u2660\u2661\u0005\u0081\u0000\u0000"+
		"\u2661\u2662\u0003\u03b8\u01dc\u0000\u2662\u0597\u0001\u0000\u0000\u0000"+
		"\u2663\u2664\u0005T\u0000\u0000\u2664\u2665\u0005\u01a2\u0000\u0000\u2665"+
		"\u2666\u0005\u01ee\u0000\u0000\u2666\u2667\u0003\u01ec\u00f6\u0000\u2667"+
		"\u2668\u0005\u007f\u0000\u0000\u2668\u2669\u0003\u00fe\u007f\u0000\u2669"+
		"\u0599\u0001\u0000\u0000\u0000\u266a\u266b\u0005\u0149\u0000\u0000\u266b"+
		"\u266c\u0005\u01f3\u0000\u0000\u266c\u266d\u0005\u0086\u0000\u0000\u266d"+
		"\u266e\u0003\u028a\u0145\u0000\u266e\u266f\u0001\u0000\u0000\u0000\u266f"+
		"\u2670\u0005\u0082\u0000\u0000\u2670\u2671\u0003\u059e\u02cf\u0000\u2671"+
		"\u2672\u0005\u008a\u0000\u0000\u2672\u2673\u0003\u059c\u02ce\u0000\u2673"+
		"\u059b\u0001\u0000\u0000\u0000\u2674\u2675\u00074\u0000\u0000\u2675\u059d"+
		"\u0001\u0000\u0000\u0000\u2676\u2677\u0003\u048e\u0247\u0000\u2677\u2678"+
		"\u0003\u01ec\u00f6\u0000\u2678\u2685\u0001\u0000\u0000\u0000\u2679\u267a"+
		"\u0005^\u0000\u0000\u267a\u2685\u0003\u01ec\u00f6\u0000\u267b\u267c\u0007"+
		"D\u0000\u0000\u267c\u2685\u0003\u018a\u00c5\u0000\u267d\u267e\u0007E\u0000"+
		"\u0000\u267e\u2685\u0003\u040c\u0206\u0000\u267f\u2680\u0005\u012f\u0000"+
		"\u0000\u2680\u2681\u0005\u0137\u0000\u0000\u2681\u2685\u0003\u0244\u0122"+
		"\u0000\u2682\u2683\u0007F\u0000\u0000\u2683\u2685\u0003\u0408\u0204\u0000"+
		"\u2684\u2676\u0001\u0000\u0000\u0000\u2684\u2679\u0001\u0000\u0000\u0000"+
		"\u2684\u267b\u0001\u0000\u0000\u0000\u2684\u267d\u0001\u0000\u0000\u0000"+
		"\u2684\u267f\u0001\u0000\u0000\u0000\u2684\u2682\u0001\u0000\u0000\u0000"+
		"\u2685\u059f\u0001\u0000\u0000\u0000\u2686\u2689\u0005\u0232\u0000\u0000"+
		"\u2687\u268a\u0003\u016a\u00b5\u0000\u2688\u268a\u0005\u0011\u0000\u0000"+
		"\u2689\u2687\u0001\u0000\u0000\u0000\u2689\u2688\u0001\u0000\u0000\u0000"+
		"\u268a\u05a1\u0001\u0000\u0000\u0000\u268b\u268c\u0005T\u0000\u0000\u268c"+
		"\u268e\u0005X\u0000\u0000\u268d\u268f\u0003\u02b0\u0158\u0000\u268e\u268d"+
		"\u0001\u0000\u0000\u0000\u268e\u268f\u0001\u0000\u0000\u0000\u268f\u2690"+
		"\u0001\u0000\u0000\u0000\u2690\u2691\u0003\u05a4\u02d2\u0000\u2691\u05a3"+
		"\u0001\u0000\u0000\u0000\u2692\u2694\u0003\u016a\u00b5\u0000\u2693\u2692"+
		"\u0001\u0000\u0000\u0000\u2693\u2694\u0001\u0000\u0000\u0000\u2694\u2695"+
		"\u0001\u0000\u0000\u0000\u2695\u2696\u0005\u023f\u0000\u0000\u2696\u2697"+
		"\u0003\u023a\u011d\u0000\u2697\u2698\u0003\u05a6\u02d3\u0000\u2698\u269d"+
		"\u0001\u0000\u0000\u0000\u2699\u269a\u0003\u016a\u00b5\u0000\u269a\u269b"+
		"\u0003\u05a6\u02d3\u0000\u269b\u269d\u0001\u0000\u0000\u0000\u269c\u2693"+
		"\u0001\u0000\u0000\u0000\u269c\u2699\u0001\u0000\u0000\u0000\u269d\u05a5"+
		"\u0001\u0000\u0000\u0000\u269e\u26a0\u0003\u05a8\u02d4\u0000\u269f\u269e"+
		"\u0001\u0000\u0000\u0000\u26a0\u26a3\u0001\u0000\u0000\u0000\u26a1\u269f"+
		"\u0001\u0000\u0000\u0000\u26a1\u26a2\u0001\u0000\u0000\u0000\u26a2\u05a7"+
		"\u0001\u0000\u0000\u0000\u26a3\u26a1\u0001\u0000\u0000\u0000\u26a4\u26ab"+
		"\u0003\u02d6\u016b\u0000\u26a5\u26ab\u0003\u02f2\u0179\u0000\u26a6\u26ab"+
		"\u0003\u050e\u0287\u0000\u26a7\u26ab\u0003\u04f2\u0279\u0000\u26a8\u26ab"+
		"\u0003\u02b4\u015a\u0000\u26a9\u26ab\u0003\u02fc\u017e\u0000\u26aa\u26a4"+
		"\u0001\u0000\u0000\u0000\u26aa\u26a5\u0001\u0000\u0000\u0000\u26aa\u26a6"+
		"\u0001\u0000\u0000\u0000\u26aa\u26a7\u0001\u0000\u0000\u0000\u26aa\u26a8"+
		"\u0001\u0000\u0000\u0000\u26aa\u26a9\u0001\u0000\u0000\u0000\u26ab\u05a9"+
		"\u0001\u0000\u0000\u0000\u26ac\u26ad\u0003\u05ae\u02d7\u0000\u26ad\u26ae"+
		"\u0005\u0082\u0000\u0000\u26ae\u26af\u0003\u05b0\u02d8\u0000\u26af\u26b0"+
		"\u0007\u0007\u0000\u0000\u26b0\u26b4\u0003\u03e6\u01f3\u0000\u26b1\u26b2"+
		"\u0005m\u0000\u0000\u26b2\u26b3\u0005Y\u0000\u0000\u26b3\u26b5\u0005\u0100"+
		"\u0000\u0000\u26b4\u26b1\u0001\u0000\u0000\u0000\u26b4\u26b5\u0001\u0000"+
		"\u0000\u0000\u26b5\u05ab\u0001\u0000\u0000\u0000\u26b6\u26b7\u0003\u03ee"+
		"\u01f7\u0000\u26b7\u26b8\u0007\u0007\u0000\u0000\u26b8\u26bc\u0003\u028e"+
		"\u0147\u0000\u26b9\u26ba\u0005m\u0000\u0000\u26ba\u26bb\u0005\u00f1\u0000"+
		"\u0000\u26bb\u26bd\u0005\u0100\u0000\u0000\u26bc\u26b9\u0001\u0000\u0000"+
		"\u0000\u26bc\u26bd\u0001\u0000\u0000\u0000\u26bd\u26c1\u0001\u0000\u0000"+
		"\u0000\u26be\u26bf\u0005\u01f8\u0000\u0000\u26bf\u26c0\u0005\u0097\u0000"+
		"\u0000\u26c0\u26c2\u0003\u023a\u011d\u0000\u26c1\u26be\u0001\u0000\u0000"+
		"\u0000\u26c1\u26c2\u0001\u0000\u0000\u0000\u26c2\u05ad\u0001\u0000\u0000"+
		"\u0000\u26c3\u26c5\u0003\u05b8\u02dc\u0000\u26c4\u26c6\u0003\u0104\u0082"+
		"\u0000\u26c5\u26c4\u0001\u0000\u0000\u0000\u26c5\u26c6\u0001\u0000\u0000"+
		"\u0000\u26c6\u26ce\u0001\u0000\u0000\u0000\u26c7\u26c8\u0005&\u0000\u0000"+
		"\u26c8\u26ca\u0003\u05b8\u02dc\u0000\u26c9\u26cb\u0003\u0104\u0082\u0000"+
		"\u26ca\u26c9\u0001\u0000\u0000\u0000\u26ca\u26cb\u0001\u0000\u0000\u0000"+
		"\u26cb\u26cd\u0001\u0000\u0000\u0000\u26cc\u26c7\u0001\u0000\u0000\u0000"+
		"\u26cd\u26d0\u0001\u0000\u0000\u0000\u26ce\u26cc\u0001\u0000\u0000\u0000"+
		"\u26ce\u26cf\u0001\u0000\u0000\u0000\u26cf\u05af\u0001\u0000\u0000\u0000"+
		"\u26d0\u26ce\u0001\u0000\u0000\u0000\u26d1\u26d2\u0005\u0114\u0000\u0000"+
		"\u26d2\u2711\u0003\u01f6\u00fb\u0000\u26d3\u26d4\u0005X\u0000\u0000\u26d4"+
		"\u2711\u0003\u01f6\u00fb\u0000\u26d5\u26d6\u0005\u0119\u0000\u0000\u26d6"+
		"\u2711\u0003\u0464\u0232\u0000\u26d7\u26d8\u0005g\u0000\u0000\u26d8\u2711"+
		"\u0003\u0540\u02a0\u0000\u26d9\u26da\u0005i\u0000\u0000\u26da\u2711\u0003"+
		"\u0540\u02a0\u0000\u26db\u26dc\u0005\u0146\u0000\u0000\u26dc\u2711\u0003"+
		"\u0540\u02a0\u0000\u26dd\u26de\u0005\u012e\u0000\u0000\u26de\u2711\u0003"+
		"\u01f6\u00fb\u0000\u26df\u26e0\u0005\u012f\u0000\u0000\u26e0\u26e1\u0005"+
		"\u0137\u0000\u0000\u26e1\u2711\u0003\u05b2\u02d9\u0000\u26e2\u26e3\u0005"+
		"\u0151\u0000\u0000\u26e3\u2711\u0003\u01f6\u00fb\u0000\u26e4\u26e5\u0005"+
		"\u00cb\u0000\u0000\u26e5\u2711\u0003\u0464\u0232\u0000\u26e6\u26e7\u0005"+
		"\u014a\u0000\u0000\u26e7\u2711\u0003p8\u0000\u26e8\u26ea\u0005]\u0000"+
		"\u0000\u26e9\u26e8\u0001\u0000\u0000\u0000\u26e9\u26ea\u0001\u0000\u0000"+
		"\u0000\u26ea\u26eb\u0001\u0000\u0000\u0000\u26eb\u2711\u0003\u05b4\u02da"+
		"\u0000\u26ec\u26ed\u0005c\u0000\u0000\u26ed\u26ee\u0005\u0113\u0000\u0000"+
		"\u26ee\u26ef\u0005\u023c\u0000\u0000\u26ef\u2711\u0003\u01f6\u00fb\u0000"+
		"\u26f0\u26f1\u0005c\u0000\u0000\u26f1\u26f2\u0005\u021c\u0000\u0000\u26f2"+
		"\u2711\u0003\u01f6\u00fb\u0000\u26f3\u26f4\u0005\u0092\u0000\u0000\u26f4"+
		"\u26f5\u0005\u022a\u0000\u0000\u26f5\u26f6\u0005\u0091\u0000\u0000\u26f6"+
		"\u26f7\u0005X\u0000\u0000\u26f7\u2711\u0003\u01f6\u00fb\u0000\u26f8\u26f9"+
		"\u0005\u0092\u0000\u0000\u26f9\u26fa\u0005\u0219\u0000\u0000\u26fa\u26fb"+
		"\u0005\u0091\u0000\u0000\u26fb\u26fc\u0005X\u0000\u0000\u26fc\u2711\u0003"+
		"\u01f6\u00fb\u0000\u26fd\u26fe\u0005\u0092\u0000\u0000\u26fe\u26ff\u0005"+
		"\u01f1\u0000\u0000\u26ff\u2700\u0005\u0091\u0000\u0000\u2700\u2701\u0005"+
		"X\u0000\u0000\u2701\u2711\u0003\u01f6\u00fb\u0000\u2702\u2703\u0005\u0092"+
		"\u0000\u0000\u2703\u2704\u0005\u0203\u0000\u0000\u2704\u2705\u0005\u0091"+
		"\u0000\u0000\u2705\u2706\u0005X\u0000\u0000\u2706\u2711\u0003\u01f6\u00fb"+
		"\u0000\u2707\u2708\u0005\u0092\u0000\u0000\u2708\u2709\u0005\u020e\u0000"+
		"\u0000\u2709\u270a\u0005\u0091\u0000\u0000\u270a\u270b\u0005X\u0000\u0000"+
		"\u270b\u2711\u0003\u01f6\u00fb\u0000\u270c\u270d\u0005\u0251\u0000\u0000"+
		"\u270d\u2711\u0003\u01f6\u00fb\u0000\u270e\u270f\u0005\u0252\u0000\u0000"+
		"\u270f\u2711\u0003\u01f6\u00fb\u0000\u2710\u26d1\u0001\u0000\u0000\u0000"+
		"\u2710\u26d3\u0001\u0000\u0000\u0000\u2710\u26d5\u0001\u0000\u0000\u0000"+
		"\u2710\u26d7\u0001\u0000\u0000\u0000\u2710\u26d9\u0001\u0000\u0000\u0000"+
		"\u2710\u26db\u0001\u0000\u0000\u0000\u2710\u26dd\u0001\u0000\u0000\u0000"+
		"\u2710\u26df\u0001\u0000\u0000\u0000\u2710\u26e2\u0001\u0000\u0000\u0000"+
		"\u2710\u26e4\u0001\u0000\u0000\u0000\u2710\u26e6\u0001\u0000\u0000\u0000"+
		"\u2710\u26e9\u0001\u0000\u0000\u0000\u2710\u26ec\u0001\u0000\u0000\u0000"+
		"\u2710\u26f0\u0001\u0000\u0000\u0000\u2710\u26f3\u0001\u0000\u0000\u0000"+
		"\u2710\u26f8\u0001\u0000\u0000\u0000\u2710\u26fd\u0001\u0000\u0000\u0000"+
		"\u2710\u2702\u0001\u0000\u0000\u0000\u2710\u2707\u0001\u0000\u0000\u0000"+
		"\u2710\u270c\u0001\u0000\u0000\u0000\u2710\u270e\u0001\u0000\u0000\u0000"+
		"\u2711\u05b1\u0001\u0000\u0000\u0000\u2712\u2717\u0003\u0244\u0122\u0000"+
		"\u2713\u2714\u0005&\u0000\u0000\u2714\u2716\u0003\u0244\u0122\u0000\u2715"+
		"\u2713\u0001\u0000\u0000\u0000\u2716\u2719\u0001\u0000\u0000\u0000\u2717"+
		"\u2715\u0001\u0000\u0000\u0000\u2717\u2718\u0001\u0000\u0000\u0000\u2718"+
		"\u05b3\u0001\u0000\u0000\u0000\u2719\u2717\u0001\u0000\u0000\u0000\u271a"+
		"\u2726\u0005\u0011\u0000\u0000\u271b\u271c\u0005\u0011\u0000\u0000\u271c"+
		"\u2726\u0005\u0015\u0000\u0000\u271d\u271e\u0003\u00eau\u0000\u271e\u271f"+
		"\u0005\u0015\u0000\u0000\u271f\u2726\u0001\u0000\u0000\u0000\u2720\u2726"+
		"\u0003\u0102\u0081\u0000\u2721\u2722\u0003\u00f2y\u0000\u2722\u2723\u0005"+
		"\u0014\u0000\u0000\u2723\u2724\u0003\u05b6\u02db\u0000\u2724\u2726\u0001"+
		"\u0000\u0000\u0000\u2725\u271a\u0001\u0000\u0000\u0000\u2725\u271b\u0001"+
		"\u0000\u0000\u0000\u2725\u271d\u0001\u0000\u0000\u0000\u2725\u2720\u0001"+
		"\u0000\u0000\u0000\u2725\u2721\u0001\u0000\u0000\u0000\u2726\u05b5\u0001"+
		"\u0000\u0000\u0000\u2727\u2728\u0003\u00eau\u0000\u2728\u05b7\u0001\u0000"+
		"\u0000\u0000\u2729\u273b\u0005P\u0000\u0000\u272a\u273b\u0005Q\u0000\u0000"+
		"\u272b\u273b\u0005R\u0000\u0000\u272c\u273b\u0005S\u0000\u0000\u272d\u273b"+
		"\u0005W\u0000\u0000\u272e\u273b\u0005\u0103\u0000\u0000\u272f\u273b\u0005"+
		"h\u0000\u0000\u2730\u273b\u0005T\u0000\u0000\u2731\u273b\u0005\u0110\u0000"+
		"\u0000\u2732\u273b\u0005\u0153\u0000\u0000\u2733\u273b\u0005\u0152\u0000"+
		"\u0000\u2734\u273b\u0005\u011b\u0000\u0000\u2735\u273b\u0005\u0156\u0000"+
		"\u0000\u2736\u2738\u0005\u0092\u0000\u0000\u2737\u2739\u0005\u0101\u0000"+
		"\u0000\u2738\u2737\u0001\u0000\u0000\u0000\u2738\u2739\u0001\u0000\u0000"+
		"\u0000\u2739\u273b\u0001\u0000\u0000\u0000\u273a\u2729\u0001\u0000\u0000"+
		"\u0000\u273a\u272a\u0001\u0000\u0000\u0000\u273a\u272b\u0001\u0000\u0000"+
		"\u0000\u273a\u272c\u0001\u0000\u0000\u0000\u273a\u272d\u0001\u0000\u0000"+
		"\u0000\u273a\u272e\u0001\u0000\u0000\u0000\u273a\u272f\u0001\u0000\u0000"+
		"\u0000\u273a\u2730\u0001\u0000\u0000\u0000\u273a\u2731\u0001\u0000\u0000"+
		"\u0000\u273a\u2732\u0001\u0000\u0000\u0000\u273a\u2733\u0001\u0000\u0000"+
		"\u0000\u273a\u2734\u0001\u0000\u0000\u0000\u273a\u2735\u0001\u0000\u0000"+
		"\u0000\u273a\u2736\u0001\u0000\u0000\u0000\u273b\u05b9\u0001\u0000\u0000"+
		"\u0000\u273c\u273f\u0005T\u0000\u0000\u273d\u273e\u0005\u0089\u0000\u0000"+
		"\u273e\u2740\u0005\u020f\u0000\u0000\u273f\u273d\u0001\u0000\u0000\u0000"+
		"\u273f\u2740\u0001\u0000\u0000\u0000\u2740\u2741\u0001\u0000\u0000\u0000"+
		"\u2741\u2742\u0005\u01d9\u0000\u0000\u2742\u2743\u0003\u01f0\u00f8\u0000"+
		"\u2743\u2744\u0005\u0081\u0000\u0000\u2744\u2745\u0003\u01f4\u00fa\u0000"+
		"\u2745\u05bb\u0001\u0000\u0000\u0000\u2746\u2747\u0005U\u0000\u0000\u2747"+
		"\u2748\u0005X\u0000\u0000\u2748\u274f\u0003\u00fe\u007f\u0000\u2749\u274a"+
		"\u0005\u0141\u0000\u0000\u274a\u274b\u0005\u0087\u0000\u0000\u274b\u2750"+
		"\u0003\u00fe\u007f\u0000\u274c\u274d\u0005\u013c\u0000\u0000\u274d\u274e"+
		"\u0005\u0087\u0000\u0000\u274e\u2750\u0003\u023a\u011d\u0000\u274f\u2749"+
		"\u0001\u0000\u0000\u0000\u274f\u274c\u0001\u0000\u0000\u0000\u2750\u05bd"+
		"\u0001\u0000\u0000\u0000\u2751\u2752\u0005V\u0000\u0000\u2752\u2754\u0005"+
		"X\u0000\u0000\u2753\u2755\u0003\u02b2\u0159\u0000\u2754\u2753\u0001\u0000"+
		"\u0000\u0000\u2754\u2755\u0001\u0000\u0000\u0000\u2755\u2756\u0001\u0000"+
		"\u0000\u0000\u2756\u2758\u0003\u01f6\u00fb\u0000\u2757\u2759\u0003\u02c0"+
		"\u0160\u0000\u2758\u2757\u0001\u0000\u0000\u0000\u2758\u2759\u0001\u0000"+
		"\u0000\u0000\u2759\u05bf\u0001\u0000\u0000\u0000\u275a\u275c\u0005\u00e2"+
		"\u0000\u0000\u275b\u275d\u0003\u05c4\u02e2\u0000\u275c\u275b\u0001\u0000"+
		"\u0000\u0000\u275c\u275d\u0001\u0000\u0000\u0000\u275d\u275f\u0001\u0000"+
		"\u0000\u0000\u275e\u2760\u0007B\u0000\u0000\u275f\u275e\u0001\u0000\u0000"+
		"\u0000\u275f\u2760\u0001\u0000\u0000\u0000\u2760\u2761\u0001\u0000\u0000"+
		"\u0000\u2761\u2762\u0003\u0118\u008c\u0000\u2762\u05c1\u0001\u0000\u0000"+
		"\u0000\u2763\u2764\u0005U\u0000\u0000\u2764\u2765\u0005\u00df\u0000\u0000"+
		"\u2765\u2766\u0003\u01f2\u00f9\u0000\u2766\u2767\u0005\u013c\u0000\u0000"+
		"\u2767\u2768\u0005\u0087\u0000\u0000\u2768\u2769\u0003\u023a\u011d\u0000"+
		"\u2769\u05c3\u0001\u0000\u0000\u0000\u276a\u277f\u0005\u00c4\u0000\u0000"+
		"\u276b\u277f\u0005\u020a\u0000\u0000\u276c\u277f\u0005\u0121\u0000\u0000"+
		"\u276d\u277f\u0005\u0130\u0000\u0000\u276e\u276f\u0005\u01c0\u0000\u0000"+
		"\u276f\u277f\u0003\u0230\u0118\u0000\u2770\u2771\u0005\u020c\u0000\u0000"+
		"\u2771\u277f\u0003\u0230\u0118\u0000\u2772\u277f\u0003\u0230\u0118\u0000"+
		"\u2773\u277f\u0005\u0092\u0000\u0000\u2774\u277f\u0005\u01ef\u0000\u0000"+
		"\u2775\u2776\u0005\u01ef\u0000\u0000\u2776\u277f\u0003\u0230\u0118\u0000"+
		"\u2777\u2778\u0005\u01ef\u0000\u0000\u2778\u277f\u0005\u0092\u0000\u0000"+
		"\u2779\u277f\u0005\u01c7\u0000\u0000\u277a\u277b\u0005\u01c7\u0000\u0000"+
		"\u277b\u277f\u0003\u0230\u0118\u0000\u277c\u277d\u0005\u01c7\u0000\u0000"+
		"\u277d\u277f\u0005\u0092\u0000\u0000\u277e\u276a\u0001\u0000\u0000\u0000"+
		"\u277e\u276b\u0001\u0000\u0000\u0000\u277e\u276c\u0001\u0000\u0000\u0000"+
		"\u277e\u276d\u0001\u0000\u0000\u0000\u277e\u276e\u0001\u0000\u0000\u0000"+
		"\u277e\u2770\u0001\u0000\u0000\u0000\u277e\u2772\u0001\u0000\u0000\u0000"+
		"\u277e\u2773\u0001\u0000\u0000\u0000\u277e\u2774\u0001\u0000\u0000\u0000"+
		"\u277e\u2775\u0001\u0000\u0000\u0000\u277e\u2777\u0001\u0000\u0000\u0000"+
		"\u277e\u2779\u0001\u0000\u0000\u0000\u277e\u277a\u0001\u0000\u0000\u0000"+
		"\u277e\u277c\u0001\u0000\u0000\u0000\u277f\u05c5\u0001\u0000\u0000\u0000"+
		"\u2780\u278a\u0005\u014d\u0000\u0000\u2781\u278b\u0003\u023c\u011e\u0000"+
		"\u2782\u2783\u0005\u00a8\u0000\u0000\u2783\u278b\u0005\u015b\u0000\u0000"+
		"\u2784\u2785\u0005\u0107\u0000\u0000\u2785\u2786\u0005\u00fd\u0000\u0000"+
		"\u2786\u278b\u0005\u00fe\u0000\u0000\u2787\u2788\u0005\u014b\u0000\u0000"+
		"\u2788\u278b\u0005\u023f\u0000\u0000\u2789\u278b\u0005\u0092\u0000\u0000"+
		"\u278a\u2781\u0001\u0000\u0000\u0000\u278a\u2782\u0001\u0000\u0000\u0000"+
		"\u278a\u2784\u0001\u0000\u0000\u0000\u278a\u2787\u0001\u0000\u0000\u0000"+
		"\u278a\u2789\u0001\u0000\u0000\u0000\u278b\u05c7\u0001\u0000\u0000\u0000"+
		"\u278c\u278e\u0005\\\u0000\u0000\u278d\u278f\u0003\u05ca\u02e5\u0000\u278e"+
		"\u278d\u0001\u0000\u0000\u0000\u278e\u278f\u0001\u0000\u0000\u0000\u278f"+
		"\u27ae\u0001\u0000\u0000\u0000\u2790\u27af\u0003\u05cc\u02e6\u0000\u2791"+
		"\u27af\u0003\u05ce\u02e7\u0000\u2792\u2793\u0003\u023c\u011e\u0000\u2793"+
		"\u2794\u0005v\u0000\u0000\u2794\u2795\u0005\u00b6\u0000\u0000\u2795\u27af"+
		"\u0001\u0000\u0000\u0000\u2796\u2797\u0005\u00a8\u0000\u0000\u2797\u2798"+
		"\u0005\u015b\u0000\u0000\u2798\u27af\u0003\u0242\u0121\u0000\u2799\u279a"+
		"\u0005\u01d1\u0000\u0000\u279a\u27af\u0005\u0254\u0000\u0000\u279b\u279c"+
		"\u0005X\u0000\u0000\u279c\u27af\u0005\u0254\u0000\u0000\u279d\u279f\u0005"+
		"\u00c7\u0000\u0000\u279e\u27a0\u0003\u029a\u014d\u0000\u279f\u279e\u0001"+
		"\u0000\u0000\u0000\u279f\u27a0\u0001\u0000\u0000\u0000\u27a0\u27af\u0001"+
		"\u0000\u0000\u0000\u27a1\u27a2\u0005\u0104\u0000\u0000\u27a2\u27af\u0003"+
		"\u028a\u0145\u0000\u27a3\u27a4\u0005\u014b\u0000\u0000\u27a4\u27a5\u0005"+
		"\u023f\u0000\u0000\u27a5\u27a6\u0005\u0253\u0000\u0000\u27a6\u27a7\u0005"+
		"\u020b\u0000\u0000\u27a7\u27af\u0005\u0254\u0000\u0000\u27a8\u27a9\u0005"+
		"\u014b\u0000\u0000\u27a9\u27aa\u0005\u023f\u0000\u0000\u27aa\u27af\u0005"+
		"\u00b5\u0000\u0000\u27ab\u27ac\u0005\u017c\u0000\u0000\u27ac\u27ad\u0005"+
		"\u0100\u0000\u0000\u27ad\u27af\u0003\u01d8\u00ec\u0000\u27ae\u2790\u0001"+
		"\u0000\u0000\u0000\u27ae\u2791\u0001\u0000\u0000\u0000\u27ae\u2792\u0001"+
		"\u0000\u0000\u0000\u27ae\u2796\u0001\u0000\u0000\u0000\u27ae\u2799\u0001"+
		"\u0000\u0000\u0000\u27ae\u279b\u0001\u0000\u0000\u0000\u27ae\u279d\u0001"+
		"\u0000\u0000\u0000\u27ae\u27a1\u0001\u0000\u0000\u0000\u27ae\u27a3\u0001"+
		"\u0000\u0000\u0000\u27ae\u27a8\u0001\u0000\u0000\u0000\u27ae\u27ab\u0001"+
		"\u0000\u0000\u0000\u27af\u05c9\u0001\u0000\u0000\u0000\u27b0\u27b1\u0007"+
		"G\u0000\u0000\u27b1\u05cb\u0001\u0000\u0000\u0000\u27b2\u27b3\u0005\u00a8"+
		"\u0000\u0000\u27b3\u27b7\u0005\u015b\u0000\u0000\u27b4\u27b8\u0003\u00e6"+
		"s\u0000\u27b5\u27b8\u0005\u00c1\u0000\u0000\u27b6\u27b8\u0005\u00b5\u0000"+
		"\u0000\u27b7\u27b4\u0001\u0000\u0000\u0000\u27b7\u27b5\u0001\u0000\u0000"+
		"\u0000\u27b7\u27b6\u0001\u0000\u0000\u0000\u27b8\u05cd\u0001\u0000\u0000"+
		"\u0000\u27b9\u27ba\u0003\u023c\u011e\u0000\u27ba\u27bd\u0007\u001d\u0000"+
		"\u0000\u27bb\u27be\u0003\u023e\u011f\u0000\u27bc\u27be\u0005\u00b5\u0000"+
		"\u0000\u27bd\u27bb\u0001\u0000\u0000\u0000\u27bd\u27bc\u0001\u0000\u0000"+
		"\u0000\u27be\u05cf\u0001\u0000\u0000\u0000\u27bf\u27c2\u0005\u0143\u0000"+
		"\u0000\u27c0\u27c3\u0005\u0092\u0000\u0000\u27c1\u27c3\u0003\u00eau\u0000"+
		"\u27c2\u27c0\u0001\u0000\u0000\u0000\u27c2\u27c1\u0001\u0000\u0000\u0000"+
		"\u27c3\u05d1\u0001\u0000\u0000\u0000\u27c4\u27cf\u0005\u01df\u0000\u0000"+
		"\u27c5\u27c7\u0003\u05de\u02ef\u0000\u27c6\u27c8\u0005\u0240\u0000\u0000"+
		"\u27c7\u27c6\u0001\u0000\u0000\u0000\u27c7\u27c8\u0001\u0000\u0000\u0000"+
		"\u27c8\u27d0\u0001\u0000\u0000\u0000\u27c9\u27d0\u0005\u0240\u0000\u0000"+
		"\u27ca\u27d0\u0005\u0241\u0000\u0000\u27cb\u27cc\u0005 \u0000\u0000\u27cc"+
		"\u27cd\u0003\u05d6\u02eb\u0000\u27cd\u27ce\u0005!\u0000\u0000\u27ce\u27d0"+
		"\u0001\u0000\u0000\u0000\u27cf\u27c5\u0001\u0000\u0000\u0000\u27cf\u27c9"+
		"\u0001\u0000\u0000\u0000\u27cf\u27ca\u0001\u0000\u0000\u0000\u27cf\u27cb"+
		"\u0001\u0000\u0000\u0000\u27cf\u27d0\u0001\u0000\u0000\u0000\u27d0\u27d1"+
		"\u0001\u0000\u0000\u0000\u27d1\u27d2\u0003\u05d4\u02ea\u0000\u27d2\u05d3"+
		"\u0001\u0000\u0000\u0000\u27d3\u27dc\u0003J%\u0000\u27d4\u27dc\u0003("+
		"\u0014\u0000\u27d5\u27dc\u00038\u001c\u0000\u27d6\u27dc\u0003D\"\u0000"+
		"\u27d7\u27dc\u0003\u0428\u0214\u0000\u27d8\u27dc\u0003\u0430\u0218\u0000"+
		"\u27d9\u27dc\u0003\u0432\u0219\u0000\u27da\u27dc\u0003\u0436\u021b\u0000"+
		"\u27db\u27d3\u0001\u0000\u0000\u0000\u27db\u27d4\u0001\u0000\u0000\u0000"+
		"\u27db\u27d5\u0001\u0000\u0000\u0000\u27db\u27d6\u0001\u0000\u0000\u0000"+
		"\u27db\u27d7\u0001\u0000\u0000\u0000\u27db\u27d8\u0001\u0000\u0000\u0000"+
		"\u27db\u27d9\u0001\u0000\u0000\u0000\u27db\u27da\u0001\u0000\u0000\u0000"+
		"\u27dc\u05d5\u0001\u0000\u0000\u0000\u27dd\u27e2\u0003\u05d8\u02ec\u0000"+
		"\u27de\u27df\u0005&\u0000\u0000\u27df\u27e1\u0003\u05d8\u02ec\u0000\u27e0"+
		"\u27de\u0001\u0000\u0000\u0000\u27e1\u27e4\u0001\u0000\u0000\u0000\u27e2"+
		"\u27e0\u0001\u0000\u0000\u0000\u27e2\u27e3\u0001\u0000\u0000\u0000\u27e3"+
		"\u05d7\u0001\u0000\u0000\u0000\u27e4\u27e2\u0001\u0000\u0000\u0000\u27e5"+
		"\u27e7\u0003\u05dc\u02ee\u0000\u27e6\u27e8\u0003\u05da\u02ed\u0000\u27e7"+
		"\u27e6\u0001\u0000\u0000\u0000\u27e7\u27e8\u0001\u0000\u0000\u0000\u27e8"+
		"\u05d9\u0001\u0000\u0000\u0000\u27e9\u27ec\u0003\u0232\u0119\u0000\u27ea"+
		"\u27ec\u0003\u0244\u0122\u0000\u27eb\u27e9\u0001\u0000\u0000\u0000\u27eb"+
		"\u27ea\u0001\u0000\u0000\u0000\u27ec\u05db\u0001\u0000\u0000\u0000\u27ed"+
		"\u27f0\u0003\u0234\u011a\u0000\u27ee\u27f0\u0003\u05de\u02ef\u0000\u27ef"+
		"\u27ed\u0001\u0000\u0000\u0000\u27ef\u27ee\u0001\u0000\u0000\u0000\u27f0"+
		"\u05dd\u0001\u0000\u0000\u0000\u27f1\u27f2\u0007H\u0000\u0000\u27f2\u05df"+
		"\u0001\u0000\u0000\u0000\u27f3\u27fb\u0003\u05de\u02ef\u0000\u27f4\u27f6"+
		"\u0005\u0240\u0000\u0000\u27f5\u27f4\u0001\u0000\u0000\u0000\u27f5\u27f6"+
		"\u0001\u0000\u0000\u0000\u27f6\u27fc\u0001\u0000\u0000\u0000\u27f7\u27f8"+
		"\u0005 \u0000\u0000\u27f8\u27f9\u0003\u05e6\u02f3\u0000\u27f9\u27fa\u0005"+
		"!\u0000\u0000\u27fa\u27fc\u0001\u0000\u0000\u0000\u27fb\u27f5\u0001\u0000"+
		"\u0000\u0000\u27fb\u27f7\u0001\u0000\u0000\u0000\u27fc\u27fe\u0001\u0000"+
		"\u0000\u0000\u27fd\u27ff\u0003\u05e2\u02f1\u0000\u27fe\u27fd\u0001\u0000"+
		"\u0000\u0000\u27fe\u27ff\u0001\u0000\u0000\u0000\u27ff\u05e1\u0001\u0000"+
		"\u0000\u0000\u2800\u2805\u0003\u05e4\u02f2\u0000\u2801\u2802\u0005&\u0000"+
		"\u0000\u2802\u2804\u0003\u05e4\u02f2\u0000\u2803\u2801\u0001\u0000\u0000"+
		"\u0000\u2804\u2807\u0001\u0000\u0000\u0000\u2805\u2803\u0001\u0000\u0000"+
		"\u0000\u2805\u2806\u0001\u0000\u0000\u0000\u2806\u05e3\u0001\u0000\u0000"+
		"\u0000\u2807\u2805\u0001\u0000\u0000\u0000\u2808\u2809\u0003\u0168\u00b4"+
		"\u0000\u2809\u280a\u0003`0\u0000\u280a\u05e5\u0001\u0000\u0000\u0000\u280b"+
		"\u2810\u0003\u05e8\u02f4\u0000\u280c\u280d\u0005&\u0000\u0000\u280d\u280f"+
		"\u0003\u05e8\u02f4\u0000\u280e\u280c\u0001\u0000\u0000\u0000\u280f\u2812"+
		"\u0001\u0000\u0000\u0000\u2810\u280e\u0001\u0000\u0000\u0000\u2810\u2811"+
		"\u0001\u0000\u0000\u0000\u2811\u05e7\u0001\u0000\u0000\u0000\u2812\u2810"+
		"\u0001\u0000\u0000\u0000\u2813\u2815\u0003\u05ec\u02f6\u0000\u2814\u2816"+
		"\u0003\u05ea\u02f5\u0000\u2815\u2814\u0001\u0000\u0000\u0000\u2815\u2816"+
		"\u0001\u0000\u0000\u0000\u2816\u05e9\u0001\u0000\u0000\u0000\u2817\u281a"+
		"\u0003\u0232\u0119\u0000\u2818\u281a\u0003\u0244\u0122\u0000\u2819\u2817"+
		"\u0001\u0000\u0000\u0000\u2819\u2818\u0001\u0000\u0000\u0000\u281a\u05eb"+
		"\u0001\u0000\u0000\u0000\u281b\u281e\u0003\u0234\u011a\u0000\u281c\u281e"+
		"\u0003\u05de\u02ef\u0000\u281d\u281b\u0001\u0000\u0000\u0000\u281d\u281c"+
		"\u0001\u0000\u0000\u0000\u281e\u05ed\u0001\u0000\u0000\u0000\u281f\u2820"+
		"\u0005\u01fd\u0000\u0000\u2820\u2821\u0003\u028c\u0146\u0000\u2821\u05ef"+
		"\u0001\u0000\u0000\u0000\u2822\u2833\u0005\u0236\u0000\u0000\u2823\u2825"+
		"\u0005y\u0000\u0000\u2824\u2823\u0001\u0000\u0000\u0000\u2824\u2825\u0001"+
		"\u0000\u0000\u0000\u2825\u2827\u0001\u0000\u0000\u0000\u2826\u2828\u0005"+
		"\u023e\u0000\u0000\u2827\u2826\u0001\u0000\u0000\u0000\u2827\u2828\u0001"+
		"\u0000\u0000\u0000\u2828\u282a\u0001\u0000\u0000\u0000\u2829\u282b\u0005"+
		"\u0240\u0000\u0000\u282a\u2829\u0001\u0000\u0000\u0000\u282a\u282b\u0001"+
		"\u0000\u0000\u0000\u282b\u282d\u0001\u0000\u0000\u0000\u282c\u282e\u0005"+
		"\u01bb\u0000\u0000\u282d\u282c\u0001\u0000\u0000\u0000\u282d\u282e\u0001"+
		"\u0000\u0000\u0000\u282e\u2834\u0001\u0000\u0000\u0000\u282f\u2830\u0005"+
		" \u0000\u0000\u2830\u2831\u0003\u05e6\u02f3\u0000\u2831\u2832\u0005!\u0000"+
		"\u0000\u2832\u2834\u0001\u0000\u0000\u0000\u2833\u2824\u0001\u0000\u0000"+
		"\u0000\u2833\u282f\u0001\u0000\u0000\u0000\u2834\u2836\u0001\u0000\u0000"+
		"\u0000\u2835\u2837\u0003\u05e2\u02f1\u0000\u2836\u2835\u0001\u0000\u0000"+
		"\u0000\u2836\u2837\u0001\u0000\u0000\u0000\u2837\u05f1\u0001\u0000\u0000"+
		"\u0000\u2838\u2839\u0001\u0000\u0000\u0000\u2839\u05f3\u0001\u0000\u0000"+
		"\u0000\u283a\u283b\u0005\u00b9\u0000\u0000\u283b\u283c\u0003\u0162\u00b1"+
		"\u0000\u283c\u283e\u0005 \u0000\u0000\u283d\u283f\u0003\u05f6\u02fb\u0000"+
		"\u283e\u283d\u0001\u0000\u0000\u0000\u283e\u283f\u0001\u0000\u0000\u0000"+
		"\u283f\u2840\u0001\u0000\u0000\u0000\u2840\u2841\u0005!\u0000\u0000\u2841"+
		"\u05f5\u0001\u0000\u0000\u0000\u2842\u2844\u0007\u0019\u0000\u0000\u2843"+
		"\u2842\u0001\u0000\u0000\u0000\u2843\u2844\u0001\u0000\u0000\u0000\u2844"+
		"\u2845\u0001\u0000\u0000\u0000\u2845\u2847\u0003\u0158\u00ac\u0000\u2846"+
		"\u2848\u0003\u0200\u0100\u0000\u2847\u2846\u0001\u0000\u0000\u0000\u2847"+
		"\u2848\u0001\u0000\u0000\u0000\u2848\u2855\u0001\u0000\u0000\u0000\u2849"+
		"\u284a\u0005\u01ad\u0000\u0000\u284a\u284b\u0003\u015c\u00ae\u0000\u284b"+
		"\u284c\u0003\u0200\u0100\u0000\u284c\u2855\u0001\u0000\u0000\u0000\u284d"+
		"\u284e\u0003\u0158\u00ac\u0000\u284e\u284f\u0005&\u0000\u0000\u284f\u2850"+
		"\u0005\u01ad\u0000\u0000\u2850\u2851\u0003\u015c\u00ae\u0000\u2851\u2852"+
		"\u0003\u0200\u0100\u0000\u2852\u2855\u0001\u0000\u0000\u0000\u2853\u2855"+
		"\u0005\u0011\u0000\u0000\u2854\u2843\u0001\u0000\u0000\u0000\u2854\u2849"+
		"\u0001\u0000\u0000\u0000\u2854\u284d\u0001\u0000\u0000\u0000\u2854\u2853"+
		"\u0001\u0000\u0000\u0000\u2855\u05f7\u0001\u0000\u0000\u0000\u03f2\u066e"+
		"\u0671\u0679\u0681\u0685\u0688\u068c\u0690\u0693\u069a\u069e\u06a1\u06a6"+
		"\u06aa\u06ae\u06b1\u06b5\u06b9\u06bc\u06c0\u06c6\u06ca\u06e3\u06e9\u06f0"+
		"\u06f3\u0705\u0708\u070f\u0712\u0719\u0730\u073c\u074b\u0753\u0760\u0763"+
		"\u076a\u076d\u0770\u077a\u0787\u078c\u0796\u079d\u07a3\u07a6\u07a9\u07b3"+
		"\u07ba\u07c4\u07c8\u07cc\u07d0\u07d2\u07de\u07e2\u07e7\u07eb\u07ed\u07f2"+
		"\u07f7\u07fd\u0800\u0802\u0807\u080a\u080d\u0810\u0813\u0816\u0819\u081c"+
		"\u0822\u0825\u0828\u082b\u082e\u0831\u0836\u083d\u0844\u0849\u084f\u0855"+
		"\u085b\u0861\u0866\u086a\u086e\u0875\u0884\u088b\u0891\u0897\u08a0\u08a5"+
		"\u08a8\u08ad\u08ba\u08c7\u08cc\u08d0\u08d2\u08e2\u08ef\u08f4\u08f9\u08fd"+
		"\u090a\u0914\u091c\u091f\u0922\u092d\u0935\u0955\u095e\u0961\u0964\u0967"+
		"\u097d\u0985\u0993\u09a0\u09a4\u09b1\u09b7\u09bb\u09c1\u09c6\u09ca\u09cf"+
		"\u09d3\u09d8\u09df\u09e1\u09e7\u09f8\u09fe\u0a04\u0a0a\u0a10\u0a13\u0a1c"+
		"\u0a29\u0a33\u0a3e\u0a43\u0a47\u0a4e\u0a52\u0a56\u0a59\u0a5d\u0a65\u0a69"+
		"\u0a6d\u0a74\u0a7b\u0a88\u0a8f\u0a97\u0a9e\u0aa3\u0aaa\u0aaf\u0ac1\u0ac4"+
		"\u0acb\u0acf\u0ad4\u0ad8\u0ade\u0ae2\u0ae5\u0af5\u0afc\u0b03\u0b0e\u0b15"+
		"\u0b19\u0b21\u0b28\u0b2f\u0b52\u0b6e\u0bb4\u0bbe\u0c40\u0c42\u0c4e\u0c7a"+
		"\u0c7c\u0c84\u0c9e\u0ca7\u0caf\u0cbc\u0cc0\u0cc3\u0ccc\u0cd0\u0cd4\u0cdb"+
		"\u0ceb\u0cf4\u0d02\u0d06\u0d0b\u0d1e\u0d34\u0d3c\u0d45\u0d51\u0d61\u0d6b"+
		"\u0d7f\u0d86\u0d8e\u0d9c\u0da3\u0dae\u0db7\u0dc2\u0dcb\u0dd4\u0ddd\u0de3"+
		"\u0dee\u0df9\u0dfc\u0e04\u0e0b\u0e0f\u0e17\u0e19\u0e30\u0e37\u0e45\u0e4e"+
		"\u0e59\u0e60\u0e69\u0e6d\u0e70\u0e73\u0e76\u0e86\u0eb6\u0f53\u0f69\u0f73"+
		"\u0f79\u0f7d\u0f9a\u0faa\u0fc7\u0fd6\u0fdc\u0fe6\u0ff4\u0ff8\u0ffd\u0fff"+
		"\u1010\u1014\u1018\u1020\u1027\u102b\u1032\u1036\u1039\u1041\u1045\u1050"+
		"\u1054\u105a\u105f\u1063\u1065\u106b\u1076\u107f\u1083\u1087\u108f\u10af"+
		"\u10b9\u10bb\u10c3\u10ce\u10d9\u10e9\u10fb\u1107\u110f\u1120\u1126\u112f"+
		"\u1136\u1142\u114c\u1159\u115f\u1163\u116b\u117b\u118b\u119f\u11a7\u11b9"+
		"\u11c0\u11c4\u11c7\u11c9\u11cf\u11d8\u11e0\u11e9\u11ed\u11f1\u11f4\u11f7"+
		"\u11fc\u11ff\u1201\u120e\u1215\u1220\u1232\u123a\u1248\u124c\u124f\u1252"+
		"\u125b\u1260\u1263\u1265\u12a0\u12a6\u12ad\u12b4\u12bb\u12c3\u12ca\u12d0"+
		"\u12da\u12e4\u12ec\u12f1\u1300\u1307\u1310\u1315\u131c\u1327\u1330\u1338"+
		"\u133f\u1347\u1350\u135d\u1360\u1363\u1365\u136e\u1379\u138c\u1392\u1395"+
		"\u13a2\u13a8\u13bb\u13c3\u13ca\u13d4\u13e6\u13ee\u13fa\u140a\u1422\u1433"+
		"\u143b\u1442\u1447\u1450\u1456\u1460\u1464\u1469\u1476\u1486\u1498\u14a0"+
		"\u14ad\u14b1\u14b8\u14de\u14e3\u14ee\u14fb\u14ff\u1503\u1506\u1510\u1515"+
		"\u1525\u153b\u1542\u1546\u154e\u1556\u155e\u1566\u156b\u1572\u1577\u157d"+
		"\u1589\u158e\u1594\u15a3\u15ad\u15b6\u15ba\u15be\u15c1\u15c4\u15c7\u15ca"+
		"\u15cf\u15d1\u15d7\u15d9\u15f9\u1600\u160b\u1610\u1615\u161e\u162a\u1630"+
		"\u1638\u163f\u1642\u1648\u164e\u1652\u1655\u1658\u1664\u166e\u1673\u1679"+
		"\u167c\u167f\u1689\u168c\u168f\u1693\u1699\u169d\u16a2\u16a9\u16af\u16b4"+
		"\u16be\u16c3\u16d0\u16d6\u16d8\u16dd\u16e2\u16ea\u16ee\u16f6\u16fa\u1700"+
		"\u1705\u1708\u170e\u1711\u1715\u171d\u1720\u172b\u172e\u1733\u1738\u173c"+
		"\u1745\u1757\u175f\u1769\u1771\u1778\u177b\u1781\u1785\u178a\u178e\u1793"+
		"\u17a5\u17ab\u17b1\u17b9\u17bc\u17bf\u17c3\u17c9\u17da\u17e1\u17e9\u17f1"+
		"\u17f8\u17fb\u1807\u1815\u1819\u1823\u1828\u1830\u1836\u1839\u1840\u1843"+
		"\u184f\u1852\u1854\u1858\u185c\u185f\u1862\u1865\u1869\u186c\u1876\u1880"+
		"\u1887\u1899\u189f\u18a6\u18ab\u18b2\u18c1\u18d1\u18d4\u18ee\u18fa\u190d"+
		"\u1917\u1919\u191d\u1920\u1926\u1929\u192d\u1932\u1937\u193b\u1951\u1959"+
		"\u1960\u1967\u197f\u1983\u198c\u198f\u1993\u1996\u1998\u199f\u19aa\u19ad"+
		"\u19b1\u19b5\u19c8\u19cc\u19d6\u19eb\u19f4\u19f7\u1a03\u1a08\u1a0c\u1a12"+
		"\u1a18\u1a1c\u1a23\u1a28\u1a2b\u1a30\u1a37\u1a40\u1a49\u1a52\u1a5a\u1a62"+
		"\u1a6a\u1a73\u1a7c\u1a80\u1a87\u1a8f\u1a98\u1a9d\u1aa1\u1aa5\u1aa9\u1aad"+
		"\u1ab2\u1ab5\u1ab9\u1ac2\u1ad1\u1ad7\u1b36\u1b3b\u1b49\u1b55\u1b5f\u1b6a"+
		"\u1b6f\u1b77\u1b7e\u1b95\u1ba2\u1ba9\u1bb0\u1bb3\u1bb9\u1bbc\u1bca\u1bd2"+
		"\u1be4\u1beb\u1bf2\u1bf9\u1c1a\u1c21\u1c2f\u1c41\u1c5f\u1c65\u1c70\u1c79"+
		"\u1c85\u1c87\u1c92\u1c96\u1cab\u1cb2\u1cb7\u1cbb\u1cbf\u1cc3\u1cc5\u1cca"+
		"\u1cd2\u1ce4\u1cea\u1cee\u1d0e\u1d1f\u1d2b\u1d51\u1da6\u1db0\u1db8\u1dc0"+
		"\u1dc6\u1dd0\u1dda\u1ddf\u1de9\u1dfb\u1dff\u1e0b\u1e0d\u1e18\u1e20\u1e2c"+
		"\u1e31\u1e38\u1e40\u1e53\u1e55\u1e5f\u1e6b\u1e73\u1e79\u1e81\u1e86\u1e90"+
		"\u1e94\u1e99\u1e9d\u1ea3\u1eab\u1eb0\u1eb9\u1ec0\u1ec8\u1ecd\u1ed6\u1edc"+
		"\u1ee8\u1eed\u1ef6\u1efc\u1f08\u1f18\u1f2b\u1f38\u1f48\u1f50\u1f66\u1f79"+
		"\u1f80\u1f83\u1f8a\u1f95\u1fa3\u1fba\u1fc2\u1fcc\u1fd0\u1fd7\u1fe9\u1ff7"+
		"\u2005\u2010\u2016\u2021\u2026\u2036\u203e\u2043\u2049\u204e\u2052\u2058"+
		"\u205d\u2060\u2062\u206f\u2074\u207f\u2088\u208d\u2091\u2095\u209b\u2113"+
		"\u211c\u2127\u212d\u2146\u215a\u2165\u2178\u2180\u2183\u218b\u2194\u2198"+
		"\u21a7\u21b4\u21c1\u21cf\u21d5\u21d9\u21e0\u21ea\u21f2\u21f5\u21fd\u2202"+
		"\u220a\u220f\u2212\u221c\u2222\u2224\u222b\u2231\u223d\u2245\u2256\u225d"+
		"\u2266\u2270\u227f\u2281\u2287\u2290\u229c\u22a1\u22a4\u22a7\u22af\u22b2"+
		"\u22b8\u22cb\u22d1\u22da\u22de\u22e2\u22e9\u22f1\u22f6\u2301\u2305\u230d"+
		"\u2312\u231d\u2321\u232b\u2332\u2335\u2339\u233d\u2344\u234e\u2351\u2354"+
		"\u235b\u2364\u2372\u2379\u2383\u2389\u2390\u2396\u239f\u23a9\u23ae\u23ba"+
		"\u23be\u23c2\u23c5\u23c9\u23ce\u23d3\u23d6\u23e1\u23f3\u23fa\u23fd\u2403"+
		"\u2407\u240a\u2416\u2427\u242c\u2433\u2439\u2440\u2447\u2456\u245a\u245f"+
		"\u2463\u246a\u2470\u2478\u247d\u2481\u2486\u248a\u248f\u2493\u2499\u249d"+
		"\u24a2\u24a6\u24ad\u24b1\u24b7\u24be\u24c2\u24c7\u24cb\u24d2\u24d7\u24db"+
		"\u24df\u24e5\u24e9\u24ee\u24f2\u24f9\u2500\u2506\u250c\u2512\u2519\u251e"+
		"\u2524\u2529\u252d\u2532\u2536\u253b\u253f\u2544\u254a\u254f\u2553\u2558"+
		"\u255c\u2561\u2565\u256a\u2571\u2575\u257a\u2583\u2587\u258c\u2593\u2598"+
		"\u259e\u25a3\u25a7\u25ad\u25b7\u25bb\u25c2\u25ca\u25d4\u25db\u25de\u25e5"+
		"\u25ec\u25f0\u25fa\u25fe\u2605\u260b\u2614\u261d\u2621\u2628\u2635\u263f"+
		"\u2649\u2655\u265e\u2684\u2689\u268e\u2693\u269c\u26a1\u26aa\u26b4\u26bc"+
		"\u26c1\u26c5\u26ca\u26ce\u26e9\u2710\u2717\u2725\u2738\u273a\u273f\u274f"+
		"\u2754\u2758\u275c\u275f\u277e\u278a\u278e\u279f\u27ae\u27b7\u27bd\u27c2"+
		"\u27c7\u27cf\u27db\u27e2\u27e7\u27eb\u27ef\u27f5\u27fb\u27fe\u2805\u2810"+
		"\u2815\u2819\u281d\u2824\u2827\u282a\u282d\u2833\u2836\u283e\u2843\u2847"+
		"\u2854";
	public static final String _serializedATN = Utils.join(
		new String[] {
			_serializedATNSegment0,
			_serializedATNSegment1,
			_serializedATNSegment2,
			_serializedATNSegment3,
			_serializedATNSegment4
		},
		""
	);
	public static final ATN _ATN =
		new ATNDeserializer().deserialize(_serializedATN.toCharArray());
	static {
		_decisionToDFA = new DFA[_ATN.getNumberOfDecisions()];
		for (int i = 0; i < _ATN.getNumberOfDecisions(); i++) {
			_decisionToDFA[i] = new DFA(_ATN.getDecisionState(i), i);
		}
	}
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy