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

page.foliage.jdbc.antlr.TSqlParser Maven / Gradle / Ivy

There is a newer version: 1.0.8
Show newest version
// Generated from page/foliage/jdbc/antlr/TSqlParser.g4 by ANTLR 4.7.2
package page.foliage.jdbc.antlr;
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 TSqlParser extends Parser {
	static { RuntimeMetaData.checkVersion("4.7.2", RuntimeMetaData.VERSION); }

	protected static final DFA[] _decisionToDFA;
	protected static final PredictionContextCache _sharedContextCache =
		new PredictionContextCache();
	public static final int
		ABSENT=1, ADD=2, AES=3, ALL=4, ALLOW_CONNECTIONS=5, ALLOW_MULTIPLE_EVENT_LOSS=6, 
		ALLOW_SINGLE_EVENT_LOSS=7, ALTER=8, AND=9, ANONYMOUS=10, ANY=11, APPEND=12, 
		APPLICATION=13, AS=14, ASC=15, ASYMMETRIC=16, ASYNCHRONOUS_COMMIT=17, 
		AUTHORIZATION=18, AUTHENTICATION=19, AUTOMATED_BACKUP_PREFERENCE=20, AUTOMATIC=21, 
		AVAILABILITY_MODE=22, BACKSLASH=23, BACKUP=24, BEFORE=25, BEGIN=26, BETWEEN=27, 
		BLOCK=28, BLOCKSIZE=29, BLOCKING_HIERARCHY=30, BREAK=31, BROWSE=32, BUFFER=33, 
		BUFFERCOUNT=34, BULK=35, BY=36, CACHE=37, CALLED=38, CASCADE=39, CASE=40, 
		CERTIFICATE=41, CHANGETABLE=42, CHANGES=43, CHECK=44, CHECKPOINT=45, CHECK_POLICY=46, 
		CHECK_EXPIRATION=47, CLASSIFIER_FUNCTION=48, CLOSE=49, CLUSTER=50, CLUSTERED=51, 
		COALESCE=52, COLLATE=53, COLUMN=54, COMPRESSION=55, COMMIT=56, COMPUTE=57, 
		CONFIGURATION=58, CONSTRAINT=59, CONTAINMENT=60, CONTAINS=61, CONTAINSTABLE=62, 
		CONTEXT=63, CONTINUE=64, CONTINUE_AFTER_ERROR=65, CONTRACT=66, CONTRACT_NAME=67, 
		CONVERSATION=68, CONVERT=69, COPY_ONLY=70, CREATE=71, CROSS=72, CURRENT=73, 
		CURRENT_DATE=74, CURRENT_TIME=75, CURRENT_TIMESTAMP=76, CURRENT_USER=77, 
		CURSOR=78, CYCLE=79, DATA=80, DATA_COMPRESSION=81, DATA_SOURCE=82, DATABASE=83, 
		DATABASE_MIRRORING=84, DBCC=85, DEALLOCATE=86, DECLARE=87, DEFAULT=88, 
		DEFAULT_DATABASE=89, DEFAULT_SCHEMA=90, DELETE=91, DENY=92, DESC=93, DIAGNOSTICS=94, 
		DIFFERENTIAL=95, DISK=96, DISTINCT=97, DISTRIBUTED=98, DOUBLE=99, DOUBLE_BACK_SLASH=100, 
		DOUBLE_FORWARD_SLASH=101, DROP=102, DTC_SUPPORT=103, DUMP=104, ELSE=105, 
		ENABLED=106, END=107, ENDPOINT=108, ERRLVL=109, ESCAPE=110, ERROR=111, 
		EVENT=112, EVENTDATA=113, EVENT_RETENTION_MODE=114, EXCEPT=115, EXECUTABLE_FILE=116, 
		EXECUTE=117, EXISTS=118, EXPIREDATE=119, EXIT=120, EXTENSION=121, EXTERNAL=122, 
		EXTERNAL_ACCESS=123, FAILOVER=124, FAILURECONDITIONLEVEL=125, FAN_IN=126, 
		FETCH=127, FILE=128, FILENAME=129, FILLFACTOR=130, FILE_SNAPSHOT=131, 
		FOR=132, FORCESEEK=133, FORCE_SERVICE_ALLOW_DATA_LOSS=134, FOREIGN=135, 
		FREETEXT=136, FREETEXTTABLE=137, FROM=138, FULL=139, FUNCTION=140, GET=141, 
		GOTO=142, GOVERNOR=143, GRANT=144, GROUP=145, HAVING=146, HASHED=147, 
		HEALTHCHECKTIMEOUT=148, IDENTITY=149, IDENTITYCOL=150, IDENTITY_INSERT=151, 
		IF=152, IIF=153, IN=154, INCLUDE=155, INCREMENT=156, INDEX=157, INFINITE=158, 
		INIT=159, INNER=160, INSERT=161, INSTEAD=162, INTERSECT=163, INTO=164, 
		IPV4_ADDR=165, IPV6_ADDR=166, IS=167, ISNULL=168, JOIN=169, KERBEROS=170, 
		KEY=171, KEY_PATH=172, KEY_STORE_PROVIDER_NAME=173, KILL=174, LANGUAGE=175, 
		LEFT=176, LIBRARY=177, LIFETIME=178, LIKE=179, LINENO=180, LINUX=181, 
		LISTENER_IP=182, LISTENER_PORT=183, LOAD=184, LOCAL_SERVICE_NAME=185, 
		LOG=186, MATCHED=187, MASTER=188, MAX_MEMORY=189, MAXTRANSFER=190, MAXVALUE=191, 
		MAX_DISPATCH_LATENCY=192, MAX_EVENT_SIZE=193, MAX_SIZE=194, MAX_OUTSTANDING_IO_PER_VOLUME=195, 
		MEDIADESCRIPTION=196, MEDIANAME=197, MEMBER=198, MEMORY_PARTITION_MODE=199, 
		MERGE=200, MESSAGE_FORWARDING=201, MESSAGE_FORWARD_SIZE=202, MINVALUE=203, 
		MIRROR=204, MUST_CHANGE=205, NATIONAL=206, NEGOTIATE=207, NOCHECK=208, 
		NOFORMAT=209, NOINIT=210, NONCLUSTERED=211, NONE=212, NOREWIND=213, NOSKIP=214, 
		NOUNLOAD=215, NO_CHECKSUM=216, NO_COMPRESSION=217, NO_EVENT_LOSS=218, 
		NOT=219, NOTIFICATION=220, NTLM=221, NULL=222, NULLIF=223, OF=224, OFF=225, 
		OFFSETS=226, OLD_PASSWORD=227, ON=228, ON_FAILURE=229, OPEN=230, OPENDATASOURCE=231, 
		OPENQUERY=232, OPENROWSET=233, OPENXML=234, OPTION=235, OR=236, ORDER=237, 
		OUTER=238, OVER=239, PAGE=240, PARAM_NODE=241, PARTIAL=242, PASSWORD=243, 
		PERCENT=244, PERMISSION_SET=245, PER_CPU=246, PER_DB=247, PER_NODE=248, 
		PIVOT=249, PLAN=250, PLATFORM=251, POLICY=252, PRECISION=253, PREDICATE=254, 
		PRIMARY=255, PRINT=256, PROC=257, PROCEDURE=258, PROCESS=259, PUBLIC=260, 
		PYTHON=261, R=262, RAISERROR=263, RAW=264, READ=265, READTEXT=266, READ_WRITE_FILEGROUPS=267, 
		RECONFIGURE=268, REFERENCES=269, REGENERATE=270, RELATED_CONVERSATION=271, 
		RELATED_CONVERSATION_GROUP=272, REPLICATION=273, REQUIRED=274, RESET=275, 
		RESTART=276, RESTORE=277, RESTRICT=278, RESUME=279, RETAINDAYS=280, RETURN=281, 
		RETURNS=282, REVERT=283, REVOKE=284, REWIND=285, RIGHT=286, ROLLBACK=287, 
		ROLE=288, ROWCOUNT=289, ROWGUIDCOL=290, RSA_512=291, RSA_1024=292, RSA_2048=293, 
		RSA_3072=294, RSA_4096=295, SAFETY=296, RULE=297, SAFE=298, SAVE=299, 
		SCHEDULER=300, SCHEMA=301, SCHEME=302, SECURITY=303, SECURITYAUDIT=304, 
		SELECT=305, SEMANTICKEYPHRASETABLE=306, SEMANTICSIMILARITYDETAILSTABLE=307, 
		SEMANTICSIMILARITYTABLE=308, SEQUENCE=309, SERVER=310, SERVICE=311, SERVICE_BROKER=312, 
		SERVICE_NAME=313, SESSION=314, SESSION_USER=315, SET=316, SETUSER=317, 
		SHUTDOWN=318, SID=319, SKIP_KEYWORD=320, SOFTNUMA=321, SOME=322, SOURCE=323, 
		SPECIFICATION=324, SPLIT=325, SQLDUMPERFLAGS=326, SQLDUMPERPATH=327, SQLDUMPERTIMEOUT=328, 
		STATISTICS=329, STATE=330, STATS=331, START=332, STARTED=333, STARTUP_STATE=334, 
		STOP=335, STOPPED=336, STOP_ON_ERROR=337, SUPPORTED=338, SYSTEM=339, SYSTEM_USER=340, 
		TABLE=341, TABLESAMPLE=342, TAPE=343, TARGET=344, TCP=345, TEXTSIZE=346, 
		THEN=347, TO=348, TOP=349, TRACK_CAUSALITY=350, TRAN=351, TRANSACTION=352, 
		TRANSFER=353, TRIGGER=354, TRUNCATE=355, TSEQUAL=356, UNCHECKED=357, UNION=358, 
		UNIQUE=359, UNLOCK=360, UNPIVOT=361, UNSAFE=362, UPDATE=363, UPDATETEXT=364, 
		URL=365, USE=366, USED=367, USER=368, VALUES=369, VARYING=370, VERBOSELOGGING=371, 
		VIEW=372, VISIBILITY=373, WAITFOR=374, WHEN=375, WHERE=376, WHILE=377, 
		WINDOWS=378, WITH=379, WITHIN=380, WITHOUT=381, WITNESS=382, WRITETEXT=383, 
		ABSOLUTE=384, ACCENT_SENSITIVITY=385, ACTION=386, ACTIVATION=387, ACTIVE=388, 
		ADDRESS=389, AES_128=390, AES_192=391, AES_256=392, AFFINITY=393, AFTER=394, 
		AGGREGATE=395, ALGORITHM=396, ALLOW_ENCRYPTED_VALUE_MODIFICATIONS=397, 
		ALLOW_SNAPSHOT_ISOLATION=398, ALLOWED=399, ANSI_NULL_DEFAULT=400, ANSI_NULLS=401, 
		ANSI_PADDING=402, ANSI_WARNINGS=403, APPLICATION_LOG=404, APPLY=405, ARITHABORT=406, 
		ASSEMBLY=407, AUDIT=408, AUDIT_GUID=409, AUTO=410, AUTO_CLEANUP=411, AUTO_CLOSE=412, 
		AUTO_CREATE_STATISTICS=413, AUTO_SHRINK=414, AUTO_UPDATE_STATISTICS=415, 
		AUTO_UPDATE_STATISTICS_ASYNC=416, AVAILABILITY=417, AVG=418, BACKUP_PRIORITY=419, 
		BEGIN_DIALOG=420, BIGINT=421, BINARY_BASE64=422, BINARY_CHECKSUM=423, 
		BINDING=424, BLOB_STORAGE=425, BROKER=426, BROKER_INSTANCE=427, BULK_LOGGED=428, 
		CALLER=429, CAP_CPU_PERCENT=430, CAST=431, CATALOG=432, CATCH=433, CHANGE_RETENTION=434, 
		CHANGE_TRACKING=435, CHECKSUM=436, CHECKSUM_AGG=437, CLEANUP=438, COLLECTION=439, 
		COLUMN_MASTER_KEY=440, COMMITTED=441, COMPATIBILITY_LEVEL=442, CONCAT=443, 
		CONCAT_NULL_YIELDS_NULL=444, CONTENT=445, CONTROL=446, COOKIE=447, COUNT=448, 
		COUNT_BIG=449, COUNTER=450, CPU=451, CREATE_NEW=452, CREATION_DISPOSITION=453, 
		CREDENTIAL=454, CRYPTOGRAPHIC=455, CURSOR_CLOSE_ON_COMMIT=456, CURSOR_DEFAULT=457, 
		DATE_CORRELATION_OPTIMIZATION=458, DATEADD=459, DATEDIFF=460, DATENAME=461, 
		DATEPART=462, DAYS=463, DB_CHAINING=464, DB_FAILOVER=465, DECRYPTION=466, 
		DEFAULT_DOUBLE_QUOTE=467, DEFAULT_FULLTEXT_LANGUAGE=468, DEFAULT_LANGUAGE=469, 
		DELAY=470, DELAYED_DURABILITY=471, DELETED=472, DENSE_RANK=473, DEPENDENTS=474, 
		DES=475, DESCRIPTION=476, DESX=477, DHCP=478, DIALOG=479, DIRECTORY_NAME=480, 
		DISABLE=481, DISABLE_BROKER=482, DISABLED=483, DISK_DRIVE=484, DOCUMENT=485, 
		DYNAMIC=486, ELEMENTS=487, EMERGENCY=488, EMPTY=489, ENABLE=490, ENABLE_BROKER=491, 
		ENCRYPTED_VALUE=492, ENCRYPTION=493, ENDPOINT_URL=494, ERROR_BROKER_CONVERSATIONS=495, 
		EXCLUSIVE=496, EXECUTABLE=497, EXIST=498, EXPAND=499, EXPIRY_DATE=500, 
		EXPLICIT=501, FAIL_OPERATION=502, FAILOVER_MODE=503, FAILURE=504, FAILURE_CONDITION_LEVEL=505, 
		FAST=506, FAST_FORWARD=507, FILEGROUP=508, FILEGROWTH=509, FILEPATH=510, 
		FILESTREAM=511, FILTER=512, FIRST=513, FIRST_VALUE=514, FOLLOWING=515, 
		FORCE=516, FORCE_FAILOVER_ALLOW_DATA_LOSS=517, FORCED=518, FORMAT=519, 
		FORWARD_ONLY=520, FULLSCAN=521, FULLTEXT=522, GB=523, GETDATE=524, GETUTCDATE=525, 
		GLOBAL=526, GO=527, GROUP_MAX_REQUESTS=528, GROUPING=529, GROUPING_ID=530, 
		HADR=531, HASH=532, HEALTH_CHECK_TIMEOUT=533, HIGH=534, HONOR_BROKER_PRIORITY=535, 
		HOURS=536, IDENTITY_VALUE=537, IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX=538, 
		IMMEDIATE=539, IMPERSONATE=540, IMPORTANCE=541, INCLUDE_NULL_VALUES=542, 
		INCREMENTAL=543, INITIATOR=544, INPUT=545, INSENSITIVE=546, INSERTED=547, 
		INT=548, IP=549, ISOLATION=550, JSON=551, KB=552, KEEP=553, KEEPFIXED=554, 
		KEY_SOURCE=555, KEYS=556, KEYSET=557, LAG=558, LAST=559, LAST_VALUE=560, 
		LEAD=561, LEVEL=562, LIST=563, LISTENER=564, LISTENER_URL=565, LOB_COMPACTION=566, 
		LOCAL=567, LOCATION=568, LOCK=569, LOCK_ESCALATION=570, LOGIN=571, LOOP=572, 
		LOW=573, MANUAL=574, MARK=575, MATERIALIZED=576, MAX=577, MAX_CPU_PERCENT=578, 
		MAX_DOP=579, MAX_FILES=580, MAX_IOPS_PER_VOLUME=581, MAX_MEMORY_PERCENT=582, 
		MAX_PROCESSES=583, MAX_QUEUE_READERS=584, MAX_ROLLOVER_FILES=585, MAXDOP=586, 
		MAXRECURSION=587, MAXSIZE=588, MB=589, MEDIUM=590, MEMORY_OPTIMIZED_DATA=591, 
		MESSAGE=592, MIN=593, MIN_ACTIVE_ROWVERSION=594, MIN_CPU_PERCENT=595, 
		MIN_IOPS_PER_VOLUME=596, MIN_MEMORY_PERCENT=597, MINUTES=598, MIRROR_ADDRESS=599, 
		MIXED_PAGE_ALLOCATION=600, MODE=601, MODIFY=602, MOVE=603, MULTI_USER=604, 
		NAME=605, NESTED_TRIGGERS=606, NEW_ACCOUNT=607, NEW_BROKER=608, NEW_PASSWORD=609, 
		NEXT=610, NO=611, NO_TRUNCATE=612, NO_WAIT=613, NOCOUNT=614, NODES=615, 
		NOEXPAND=616, NON_TRANSACTED_ACCESS=617, NORECOMPUTE=618, NORECOVERY=619, 
		NOWAIT=620, NTILE=621, NUMANODE=622, NUMBER=623, NUMERIC_ROUNDABORT=624, 
		OBJECT=625, OFFLINE=626, OFFSET=627, OLD_ACCOUNT=628, ONLINE=629, ONLY=630, 
		OPEN_EXISTING=631, OPTIMISTIC=632, OPTIMIZE=633, OUT=634, OUTPUT=635, 
		OWNER=636, PAGE_VERIFY=637, PARAMETERIZATION=638, PARTITION=639, PARTITIONS=640, 
		PARTNER=641, PATH=642, POISON_MESSAGE_HANDLING=643, POOL=644, PORT=645, 
		PRECEDING=646, PRIMARY_ROLE=647, PRIOR=648, PRIORITY=649, PRIORITY_LEVEL=650, 
		PRIVATE=651, PRIVATE_KEY=652, PRIVILEGES=653, PROCEDURE_NAME=654, PROPERTY=655, 
		PROVIDER=656, PROVIDER_KEY_NAME=657, QUERY=658, QUEUE=659, QUEUE_DELAY=660, 
		QUOTED_IDENTIFIER=661, RANGE=662, RANK=663, RC2=664, RC4=665, RC4_128=666, 
		READ_COMMITTED_SNAPSHOT=667, READ_ONLY=668, READ_ONLY_ROUTING_LIST=669, 
		READ_WRITE=670, READONLY=671, REBUILD=672, RECEIVE=673, RECOMPILE=674, 
		RECOVERY=675, RECURSIVE_TRIGGERS=676, RELATIVE=677, REMOTE=678, REMOTE_SERVICE_NAME=679, 
		REMOVE=680, REORGANIZE=681, REPEATABLE=682, REPLICA=683, REQUEST_MAX_CPU_TIME_SEC=684, 
		REQUEST_MAX_MEMORY_GRANT_PERCENT=685, REQUEST_MEMORY_GRANT_TIMEOUT_SEC=686, 
		REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT=687, RESERVE_DISK_SPACE=688, 
		RESOURCE=689, RESOURCE_MANAGER_LOCATION=690, RESTRICTED_USER=691, RETENTION=692, 
		ROBUST=693, ROOT=694, ROUTE=695, ROW=696, ROW_NUMBER=697, ROWGUID=698, 
		ROWS=699, SAMPLE=700, SCHEMABINDING=701, SCOPED=702, SCROLL=703, SCROLL_LOCKS=704, 
		SEARCH=705, SECONDARY=706, SECONDARY_ONLY=707, SECONDARY_ROLE=708, SECONDS=709, 
		SECRET=710, SECURITY_LOG=711, SEEDING_MODE=712, SELF=713, SEMI_SENSITIVE=714, 
		SEND=715, SENT=716, SERIALIZABLE=717, SESSION_TIMEOUT=718, SETERROR=719, 
		SHARE=720, SHOWPLAN=721, SIGNATURE=722, SIMPLE=723, SINGLE_USER=724, SIZE=725, 
		SMALLINT=726, SNAPSHOT=727, SPATIAL_WINDOW_MAX_CELLS=728, STANDBY=729, 
		START_DATE=730, STATIC=731, STATS_STREAM=732, STATUS=733, STDEV=734, STDEVP=735, 
		STOPLIST=736, STUFF=737, SUBJECT=738, SUM=739, SUSPEND=740, SYMMETRIC=741, 
		SYNCHRONOUS_COMMIT=742, SYNONYM=743, TAKE=744, TARGET_RECOVERY_TIME=745, 
		TB=746, TEXTIMAGE_ON=747, THROW=748, TIES=749, TIME=750, TIMEOUT=751, 
		TIMER=752, TINYINT=753, TORN_PAGE_DETECTION=754, TRANSFORM_NOISE_WORDS=755, 
		TRIPLE_DES=756, TRIPLE_DES_3KEY=757, TRUSTWORTHY=758, TRY=759, TSQL=760, 
		TWO_DIGIT_YEAR_CUTOFF=761, TYPE=762, TYPE_WARNING=763, UNBOUNDED=764, 
		UNCOMMITTED=765, UNKNOWN=766, UNLIMITED=767, USING=768, VALID_XML=769, 
		VALIDATION=770, VALUE=771, VAR=772, VARP=773, VIEW_METADATA=774, VIEWS=775, 
		WAIT=776, WELL_FORMED_XML=777, WITHOUT_ARRAY_WRAPPER=778, WORK=779, WORKLOAD=780, 
		XML=781, XMLDATA=782, XMLNAMESPACES=783, XMLSCHEMA=784, XSINIL=785, DOLLAR_ACTION=786, 
		SPACE=787, COMMENT=788, LINE_COMMENT=789, DOUBLE_QUOTE_ID=790, SINGLE_QUOTE=791, 
		SQUARE_BRACKET_ID=792, LOCAL_ID=793, DECIMAL=794, ID=795, QUOTED_URL=796, 
		QUOTED_HOST_AND_PORT=797, STRING=798, BINARY=799, FLOAT=800, REAL=801, 
		EQUAL=802, GREATER=803, LESS=804, EXCLAMATION=805, PLUS_ASSIGN=806, MINUS_ASSIGN=807, 
		MULT_ASSIGN=808, DIV_ASSIGN=809, MOD_ASSIGN=810, AND_ASSIGN=811, XOR_ASSIGN=812, 
		OR_ASSIGN=813, DOUBLE_BAR=814, DOT=815, UNDERLINE=816, AT=817, SHARP=818, 
		DOLLAR=819, LR_BRACKET=820, RR_BRACKET=821, COMMA=822, SEMI=823, COLON=824, 
		STAR=825, DIVIDE=826, MODULE=827, PLUS=828, MINUS=829, BIT_NOT=830, BIT_OR=831, 
		BIT_AND=832, BIT_XOR=833, IPV4_OCTECT=834;
	public static final int
		RULE_tsql_file = 0, RULE_batch = 1, RULE_sql_clauses = 2, RULE_sql_clause = 3, 
		RULE_dml_clause = 4, RULE_ddl_clause = 5, RULE_backup_statement = 6, RULE_cfl_statement = 7, 
		RULE_block_statement = 8, RULE_break_statement = 9, RULE_continue_statement = 10, 
		RULE_goto_statement = 11, RULE_return_statement = 12, RULE_if_statement = 13, 
		RULE_throw_statement = 14, RULE_throw_error_number = 15, RULE_throw_message = 16, 
		RULE_throw_state = 17, RULE_try_catch_statement = 18, RULE_waitfor_statement = 19, 
		RULE_while_statement = 20, RULE_print_statement = 21, RULE_raiseerror_statement = 22, 
		RULE_empty_statement = 23, RULE_another_statement = 24, RULE_alter_application_role = 25, 
		RULE_create_application_role = 26, RULE_drop_aggregate = 27, RULE_drop_application_role = 28, 
		RULE_alter_assembly = 29, RULE_alter_assembly_start = 30, RULE_alter_assembly_clause = 31, 
		RULE_alter_assembly_from_clause = 32, RULE_alter_assembly_from_clause_start = 33, 
		RULE_alter_assembly_drop_clause = 34, RULE_alter_assembly_drop_multiple_files = 35, 
		RULE_alter_assembly_drop = 36, RULE_alter_assembly_add_clause = 37, RULE_alter_asssembly_add_clause_start = 38, 
		RULE_alter_assembly_client_file_clause = 39, RULE_alter_assembly_file_name = 40, 
		RULE_alter_assembly_file_bits = 41, RULE_alter_assembly_as = 42, RULE_alter_assembly_with_clause = 43, 
		RULE_alter_assembly_with = 44, RULE_client_assembly_specifier = 45, RULE_assembly_option = 46, 
		RULE_network_file_share = 47, RULE_network_computer = 48, RULE_network_file_start = 49, 
		RULE_file_path = 50, RULE_file_directory_path_separator = 51, RULE_local_file = 52, 
		RULE_local_drive = 53, RULE_multiple_local_files = 54, RULE_multiple_local_file_start = 55, 
		RULE_create_assembly = 56, RULE_drop_assembly = 57, RULE_alter_asymmetric_key = 58, 
		RULE_alter_asymmetric_key_start = 59, RULE_asymmetric_key_option = 60, 
		RULE_asymmetric_key_option_start = 61, RULE_asymmetric_key_password_change_option = 62, 
		RULE_create_asymmetric_key = 63, RULE_drop_asymmetric_key = 64, RULE_alter_authorization = 65, 
		RULE_authorization_grantee = 66, RULE_entity_to = 67, RULE_colon_colon = 68, 
		RULE_alter_authorization_start = 69, RULE_alter_authorization_for_sql_database = 70, 
		RULE_alter_authorization_for_azure_dw = 71, RULE_alter_authorization_for_parallel_dw = 72, 
		RULE_class_type = 73, RULE_class_type_for_sql_database = 74, RULE_class_type_for_azure_dw = 75, 
		RULE_class_type_for_parallel_dw = 76, RULE_drop_availability_group = 77, 
		RULE_alter_availability_group = 78, RULE_alter_availability_group_start = 79, 
		RULE_alter_availability_group_options = 80, RULE_create_or_alter_broker_priority = 81, 
		RULE_drop_broker_priority = 82, RULE_alter_certificate = 83, RULE_alter_column_encryption_key = 84, 
		RULE_create_column_encryption_key = 85, RULE_drop_certificate = 86, RULE_drop_column_encryption_key = 87, 
		RULE_drop_column_master_key = 88, RULE_drop_contract = 89, RULE_drop_credential = 90, 
		RULE_drop_cryptograhic_provider = 91, RULE_drop_database = 92, RULE_drop_database_audit_specification = 93, 
		RULE_drop_database_scoped_credential = 94, RULE_drop_default = 95, RULE_drop_endpoint = 96, 
		RULE_drop_external_data_source = 97, RULE_drop_external_file_format = 98, 
		RULE_drop_external_library = 99, RULE_drop_external_resource_pool = 100, 
		RULE_drop_external_table = 101, RULE_drop_event_notifications = 102, RULE_drop_event_session = 103, 
		RULE_drop_fulltext_catalog = 104, RULE_drop_fulltext_index = 105, RULE_drop_fulltext_stoplist = 106, 
		RULE_drop_login = 107, RULE_drop_master_key = 108, RULE_drop_message_type = 109, 
		RULE_drop_partition_function = 110, RULE_drop_partition_scheme = 111, 
		RULE_drop_queue = 112, RULE_drop_remote_service_binding = 113, RULE_drop_resource_pool = 114, 
		RULE_drop_db_role = 115, RULE_drop_route = 116, RULE_drop_rule = 117, 
		RULE_drop_schema = 118, RULE_drop_search_property_list = 119, RULE_drop_security_policy = 120, 
		RULE_drop_sequence = 121, RULE_drop_server_audit = 122, RULE_drop_server_audit_specification = 123, 
		RULE_drop_server_role = 124, RULE_drop_service = 125, RULE_drop_signature = 126, 
		RULE_drop_statistics_name_azure_dw_and_pdw = 127, RULE_drop_symmetric_key = 128, 
		RULE_drop_synonym = 129, RULE_drop_user = 130, RULE_drop_workload_group = 131, 
		RULE_drop_xml_schema_collection = 132, RULE_disable_trigger = 133, RULE_enable_trigger = 134, 
		RULE_lock_table = 135, RULE_truncate_table = 136, RULE_create_column_master_key = 137, 
		RULE_alter_credential = 138, RULE_create_credential = 139, RULE_alter_cryptographic_provider = 140, 
		RULE_create_cryptographic_provider = 141, RULE_create_event_notification = 142, 
		RULE_create_or_alter_event_session = 143, RULE_event_session_predicate_expression = 144, 
		RULE_event_session_predicate_factor = 145, RULE_event_session_predicate_leaf = 146, 
		RULE_alter_external_data_source = 147, RULE_alter_external_library = 148, 
		RULE_create_external_library = 149, RULE_alter_external_resource_pool = 150, 
		RULE_create_external_resource_pool = 151, RULE_alter_fulltext_catalog = 152, 
		RULE_create_fulltext_catalog = 153, RULE_alter_fulltext_stoplist = 154, 
		RULE_create_fulltext_stoplist = 155, RULE_alter_login_sql_server = 156, 
		RULE_create_login_sql_server = 157, RULE_alter_login_azure_sql = 158, 
		RULE_create_login_azure_sql = 159, RULE_alter_login_azure_sql_dw_and_pdw = 160, 
		RULE_create_login_pdw = 161, RULE_alter_master_key_sql_server = 162, RULE_create_master_key_sql_server = 163, 
		RULE_alter_master_key_azure_sql = 164, RULE_create_master_key_azure_sql = 165, 
		RULE_alter_message_type = 166, RULE_alter_partition_function = 167, RULE_alter_partition_scheme = 168, 
		RULE_alter_remote_service_binding = 169, RULE_create_remote_service_binding = 170, 
		RULE_create_resource_pool = 171, RULE_alter_resource_governor = 172, RULE_alter_db_role = 173, 
		RULE_create_db_role = 174, RULE_create_route = 175, RULE_create_rule = 176, 
		RULE_alter_schema_sql = 177, RULE_create_schema = 178, RULE_create_schema_azure_sql_dw_and_pdw = 179, 
		RULE_alter_schema_azure_sql_dw_and_pdw = 180, RULE_create_search_property_list = 181, 
		RULE_create_security_policy = 182, RULE_alter_sequence = 183, RULE_create_sequence = 184, 
		RULE_alter_server_audit = 185, RULE_create_server_audit = 186, RULE_alter_server_audit_specification = 187, 
		RULE_create_server_audit_specification = 188, RULE_alter_server_configuration = 189, 
		RULE_alter_server_role = 190, RULE_create_server_role = 191, RULE_alter_server_role_pdw = 192, 
		RULE_alter_service = 193, RULE_create_service = 194, RULE_alter_service_master_key = 195, 
		RULE_alter_symmetric_key = 196, RULE_create_symmetric_key = 197, RULE_create_synonym = 198, 
		RULE_alter_user = 199, RULE_create_user = 200, RULE_create_user_azure_sql_dw = 201, 
		RULE_alter_user_azure_sql = 202, RULE_alter_workload_group = 203, RULE_create_workload_group = 204, 
		RULE_create_xml_schema_collection = 205, RULE_create_queue = 206, RULE_queue_settings = 207, 
		RULE_alter_queue = 208, RULE_queue_action = 209, RULE_queue_rebuild_options = 210, 
		RULE_create_contract = 211, RULE_conversation_statement = 212, RULE_message_statement = 213, 
		RULE_merge_statement = 214, RULE_merge_matched = 215, RULE_merge_not_matched = 216, 
		RULE_delete_statement = 217, RULE_delete_statement_from = 218, RULE_insert_statement = 219, 
		RULE_insert_statement_value = 220, RULE_receive_statement = 221, RULE_select_statement = 222, 
		RULE_time = 223, RULE_update_statement = 224, RULE_output_clause = 225, 
		RULE_output_dml_list_elem = 226, RULE_output_column_name = 227, RULE_create_database = 228, 
		RULE_create_index = 229, RULE_create_or_alter_procedure = 230, RULE_create_or_alter_trigger = 231, 
		RULE_create_or_alter_dml_trigger = 232, RULE_dml_trigger_option = 233, 
		RULE_dml_trigger_operation = 234, RULE_create_or_alter_ddl_trigger = 235, 
		RULE_ddl_trigger_operation = 236, RULE_create_or_alter_function = 237, 
		RULE_func_body_returns_select = 238, RULE_func_body_returns_table = 239, 
		RULE_func_body_returns_scalar = 240, RULE_procedure_param = 241, RULE_procedure_option = 242, 
		RULE_function_option = 243, RULE_create_statistics = 244, RULE_update_statistics = 245, 
		RULE_create_table = 246, RULE_table_options = 247, RULE_create_view = 248, 
		RULE_view_attribute = 249, RULE_alter_table = 250, RULE_alter_database = 251, 
		RULE_database_optionspec = 252, RULE_auto_option = 253, RULE_change_tracking_option = 254, 
		RULE_change_tracking_option_list = 255, RULE_containment_option = 256, 
		RULE_cursor_option = 257, RULE_alter_endpoint = 258, RULE_database_mirroring_option = 259, 
		RULE_mirroring_set_option = 260, RULE_mirroring_partner = 261, RULE_mirroring_witness = 262, 
		RULE_witness_partner_equal = 263, RULE_partner_option = 264, RULE_witness_option = 265, 
		RULE_witness_server = 266, RULE_partner_server = 267, RULE_mirroring_host_port_seperator = 268, 
		RULE_partner_server_tcp_prefix = 269, RULE_port_number = 270, RULE_host = 271, 
		RULE_date_correlation_optimization_option = 272, RULE_db_encryption_option = 273, 
		RULE_db_state_option = 274, RULE_db_update_option = 275, RULE_db_user_access_option = 276, 
		RULE_delayed_durability_option = 277, RULE_external_access_option = 278, 
		RULE_hadr_options = 279, RULE_mixed_page_allocation_option = 280, RULE_parameterization_option = 281, 
		RULE_recovery_option = 282, RULE_service_broker_option = 283, RULE_snapshot_option = 284, 
		RULE_sql_option = 285, RULE_target_recovery_time_option = 286, RULE_termination = 287, 
		RULE_drop_index = 288, RULE_drop_relational_or_xml_or_spatial_index = 289, 
		RULE_drop_backward_compatible_index = 290, RULE_drop_procedure = 291, 
		RULE_drop_trigger = 292, RULE_drop_dml_trigger = 293, RULE_drop_ddl_trigger = 294, 
		RULE_drop_function = 295, RULE_drop_statistics = 296, RULE_drop_table = 297, 
		RULE_drop_view = 298, RULE_create_type = 299, RULE_drop_type = 300, RULE_rowset_function_limited = 301, 
		RULE_openquery = 302, RULE_opendatasource = 303, RULE_declare_statement = 304, 
		RULE_cursor_statement = 305, RULE_backup_database = 306, RULE_backup_log = 307, 
		RULE_backup_certificate = 308, RULE_backup_master_key = 309, RULE_backup_service_master_key = 310, 
		RULE_execute_statement = 311, RULE_execute_body = 312, RULE_execute_statement_arg = 313, 
		RULE_execute_var_string = 314, RULE_security_statement = 315, RULE_create_certificate = 316, 
		RULE_existing_keys = 317, RULE_private_key_options = 318, RULE_generate_new_keys = 319, 
		RULE_date_options = 320, RULE_open_key = 321, RULE_close_key = 322, RULE_create_key = 323, 
		RULE_key_options = 324, RULE_algorithm = 325, RULE_encryption_mechanism = 326, 
		RULE_decryption_mechanism = 327, RULE_grant_permission = 328, RULE_set_statement = 329, 
		RULE_transaction_statement = 330, RULE_go_statement = 331, RULE_use_statement = 332, 
		RULE_setuser_statement = 333, RULE_dbcc_clause = 334, RULE_dbcc_options = 335, 
		RULE_execute_clause = 336, RULE_declare_local = 337, RULE_table_type_definition = 338, 
		RULE_xml_type_definition = 339, RULE_xml_schema_collection = 340, RULE_column_def_table_constraints = 341, 
		RULE_column_def_table_constraint = 342, RULE_column_definition = 343, 
		RULE_materialized_column_definition = 344, RULE_column_constraint = 345, 
		RULE_table_constraint = 346, RULE_on_delete = 347, RULE_on_update = 348, 
		RULE_index_options = 349, RULE_index_option = 350, RULE_declare_cursor = 351, 
		RULE_declare_set_cursor_common = 352, RULE_declare_set_cursor_common_partial = 353, 
		RULE_fetch_cursor = 354, RULE_set_special = 355, RULE_constant_LOCAL_ID = 356, 
		RULE_expression = 357, RULE_primitive_expression = 358, RULE_case_expression = 359, 
		RULE_unary_operator_expression = 360, RULE_bracket_expression = 361, RULE_constant_expression = 362, 
		RULE_subquery = 363, RULE_with_expression = 364, RULE_common_table_expression = 365, 
		RULE_update_elem = 366, RULE_search_condition_list = 367, RULE_search_condition = 368, 
		RULE_search_condition_and = 369, RULE_search_condition_not = 370, RULE_predicate = 371, 
		RULE_query_expression = 372, RULE_sql_union = 373, RULE_query_specification = 374, 
		RULE_top_clause = 375, RULE_top_percent = 376, RULE_top_count = 377, RULE_order_by_clause = 378, 
		RULE_for_clause = 379, RULE_xml_common_directives = 380, RULE_order_by_expression = 381, 
		RULE_group_by_item = 382, RULE_option_clause = 383, RULE_option = 384, 
		RULE_optimize_for_arg = 385, RULE_select_list = 386, RULE_udt_method_arguments = 387, 
		RULE_asterisk = 388, RULE_column_elem = 389, RULE_udt_elem = 390, RULE_expression_elem = 391, 
		RULE_select_list_elem = 392, RULE_table_sources = 393, RULE_table_source = 394, 
		RULE_table_source_item_joined = 395, RULE_table_source_item = 396, RULE_open_xml = 397, 
		RULE_schema_declaration = 398, RULE_column_declaration = 399, RULE_change_table = 400, 
		RULE_join_part = 401, RULE_pivot_clause = 402, RULE_unpivot_clause = 403, 
		RULE_full_column_name_list = 404, RULE_table_name_with_hint = 405, RULE_rowset_function = 406, 
		RULE_bulk_option = 407, RULE_derived_table = 408, RULE_function_call = 409, 
		RULE_xml_data_type_methods = 410, RULE_value_method = 411, RULE_query_method = 412, 
		RULE_exist_method = 413, RULE_modify_method = 414, RULE_nodes_method = 415, 
		RULE_switch_section = 416, RULE_switch_search_condition_section = 417, 
		RULE_as_column_alias = 418, RULE_as_table_alias = 419, RULE_table_alias = 420, 
		RULE_with_table_hints = 421, RULE_insert_with_table_hints = 422, RULE_table_hint = 423, 
		RULE_index_value = 424, RULE_column_alias_list = 425, RULE_column_alias = 426, 
		RULE_table_value_constructor = 427, RULE_expression_list = 428, RULE_ranking_windowed_function = 429, 
		RULE_aggregate_windowed_function = 430, RULE_analytic_windowed_function = 431, 
		RULE_all_distinct_expression = 432, RULE_over_clause = 433, RULE_row_or_range_clause = 434, 
		RULE_window_frame_extent = 435, RULE_window_frame_bound = 436, RULE_window_frame_preceding = 437, 
		RULE_window_frame_following = 438, RULE_create_database_option = 439, 
		RULE_database_filestream_option = 440, RULE_database_file_spec = 441, 
		RULE_file_group = 442, RULE_file_spec = 443, RULE_entity_name = 444, RULE_entity_name_for_azure_dw = 445, 
		RULE_entity_name_for_parallel_dw = 446, RULE_full_table_name = 447, RULE_table_name = 448, 
		RULE_simple_name = 449, RULE_func_proc_name_schema = 450, RULE_func_proc_name_database_schema = 451, 
		RULE_func_proc_name_server_database_schema = 452, RULE_ddl_object = 453, 
		RULE_full_column_name = 454, RULE_column_name_list_with_order = 455, RULE_column_name_list = 456, 
		RULE_cursor_name = 457, RULE_on_off = 458, RULE_clustered = 459, RULE_null_notnull = 460, 
		RULE_null_or_default = 461, RULE_scalar_function_name = 462, RULE_begin_conversation_timer = 463, 
		RULE_begin_conversation_dialog = 464, RULE_contract_name = 465, RULE_service_name = 466, 
		RULE_end_conversation = 467, RULE_waitfor_conversation = 468, RULE_get_conversation = 469, 
		RULE_queue_id = 470, RULE_send_conversation = 471, RULE_data_type = 472, 
		RULE_default_value = 473, RULE_constant = 474, RULE_sign = 475, RULE_id = 476, 
		RULE_simple_id = 477, RULE_comparison_operator = 478, RULE_assignment_operator = 479, 
		RULE_file_size = 480;
	private static String[] makeRuleNames() {
		return new String[] {
			"tsql_file", "batch", "sql_clauses", "sql_clause", "dml_clause", "ddl_clause", 
			"backup_statement", "cfl_statement", "block_statement", "break_statement", 
			"continue_statement", "goto_statement", "return_statement", "if_statement", 
			"throw_statement", "throw_error_number", "throw_message", "throw_state", 
			"try_catch_statement", "waitfor_statement", "while_statement", "print_statement", 
			"raiseerror_statement", "empty_statement", "another_statement", "alter_application_role", 
			"create_application_role", "drop_aggregate", "drop_application_role", 
			"alter_assembly", "alter_assembly_start", "alter_assembly_clause", "alter_assembly_from_clause", 
			"alter_assembly_from_clause_start", "alter_assembly_drop_clause", "alter_assembly_drop_multiple_files", 
			"alter_assembly_drop", "alter_assembly_add_clause", "alter_asssembly_add_clause_start", 
			"alter_assembly_client_file_clause", "alter_assembly_file_name", "alter_assembly_file_bits", 
			"alter_assembly_as", "alter_assembly_with_clause", "alter_assembly_with", 
			"client_assembly_specifier", "assembly_option", "network_file_share", 
			"network_computer", "network_file_start", "file_path", "file_directory_path_separator", 
			"local_file", "local_drive", "multiple_local_files", "multiple_local_file_start", 
			"create_assembly", "drop_assembly", "alter_asymmetric_key", "alter_asymmetric_key_start", 
			"asymmetric_key_option", "asymmetric_key_option_start", "asymmetric_key_password_change_option", 
			"create_asymmetric_key", "drop_asymmetric_key", "alter_authorization", 
			"authorization_grantee", "entity_to", "colon_colon", "alter_authorization_start", 
			"alter_authorization_for_sql_database", "alter_authorization_for_azure_dw", 
			"alter_authorization_for_parallel_dw", "class_type", "class_type_for_sql_database", 
			"class_type_for_azure_dw", "class_type_for_parallel_dw", "drop_availability_group", 
			"alter_availability_group", "alter_availability_group_start", "alter_availability_group_options", 
			"create_or_alter_broker_priority", "drop_broker_priority", "alter_certificate", 
			"alter_column_encryption_key", "create_column_encryption_key", "drop_certificate", 
			"drop_column_encryption_key", "drop_column_master_key", "drop_contract", 
			"drop_credential", "drop_cryptograhic_provider", "drop_database", "drop_database_audit_specification", 
			"drop_database_scoped_credential", "drop_default", "drop_endpoint", "drop_external_data_source", 
			"drop_external_file_format", "drop_external_library", "drop_external_resource_pool", 
			"drop_external_table", "drop_event_notifications", "drop_event_session", 
			"drop_fulltext_catalog", "drop_fulltext_index", "drop_fulltext_stoplist", 
			"drop_login", "drop_master_key", "drop_message_type", "drop_partition_function", 
			"drop_partition_scheme", "drop_queue", "drop_remote_service_binding", 
			"drop_resource_pool", "drop_db_role", "drop_route", "drop_rule", "drop_schema", 
			"drop_search_property_list", "drop_security_policy", "drop_sequence", 
			"drop_server_audit", "drop_server_audit_specification", "drop_server_role", 
			"drop_service", "drop_signature", "drop_statistics_name_azure_dw_and_pdw", 
			"drop_symmetric_key", "drop_synonym", "drop_user", "drop_workload_group", 
			"drop_xml_schema_collection", "disable_trigger", "enable_trigger", "lock_table", 
			"truncate_table", "create_column_master_key", "alter_credential", "create_credential", 
			"alter_cryptographic_provider", "create_cryptographic_provider", "create_event_notification", 
			"create_or_alter_event_session", "event_session_predicate_expression", 
			"event_session_predicate_factor", "event_session_predicate_leaf", "alter_external_data_source", 
			"alter_external_library", "create_external_library", "alter_external_resource_pool", 
			"create_external_resource_pool", "alter_fulltext_catalog", "create_fulltext_catalog", 
			"alter_fulltext_stoplist", "create_fulltext_stoplist", "alter_login_sql_server", 
			"create_login_sql_server", "alter_login_azure_sql", "create_login_azure_sql", 
			"alter_login_azure_sql_dw_and_pdw", "create_login_pdw", "alter_master_key_sql_server", 
			"create_master_key_sql_server", "alter_master_key_azure_sql", "create_master_key_azure_sql", 
			"alter_message_type", "alter_partition_function", "alter_partition_scheme", 
			"alter_remote_service_binding", "create_remote_service_binding", "create_resource_pool", 
			"alter_resource_governor", "alter_db_role", "create_db_role", "create_route", 
			"create_rule", "alter_schema_sql", "create_schema", "create_schema_azure_sql_dw_and_pdw", 
			"alter_schema_azure_sql_dw_and_pdw", "create_search_property_list", "create_security_policy", 
			"alter_sequence", "create_sequence", "alter_server_audit", "create_server_audit", 
			"alter_server_audit_specification", "create_server_audit_specification", 
			"alter_server_configuration", "alter_server_role", "create_server_role", 
			"alter_server_role_pdw", "alter_service", "create_service", "alter_service_master_key", 
			"alter_symmetric_key", "create_symmetric_key", "create_synonym", "alter_user", 
			"create_user", "create_user_azure_sql_dw", "alter_user_azure_sql", "alter_workload_group", 
			"create_workload_group", "create_xml_schema_collection", "create_queue", 
			"queue_settings", "alter_queue", "queue_action", "queue_rebuild_options", 
			"create_contract", "conversation_statement", "message_statement", "merge_statement", 
			"merge_matched", "merge_not_matched", "delete_statement", "delete_statement_from", 
			"insert_statement", "insert_statement_value", "receive_statement", "select_statement", 
			"time", "update_statement", "output_clause", "output_dml_list_elem", 
			"output_column_name", "create_database", "create_index", "create_or_alter_procedure", 
			"create_or_alter_trigger", "create_or_alter_dml_trigger", "dml_trigger_option", 
			"dml_trigger_operation", "create_or_alter_ddl_trigger", "ddl_trigger_operation", 
			"create_or_alter_function", "func_body_returns_select", "func_body_returns_table", 
			"func_body_returns_scalar", "procedure_param", "procedure_option", "function_option", 
			"create_statistics", "update_statistics", "create_table", "table_options", 
			"create_view", "view_attribute", "alter_table", "alter_database", "database_optionspec", 
			"auto_option", "change_tracking_option", "change_tracking_option_list", 
			"containment_option", "cursor_option", "alter_endpoint", "database_mirroring_option", 
			"mirroring_set_option", "mirroring_partner", "mirroring_witness", "witness_partner_equal", 
			"partner_option", "witness_option", "witness_server", "partner_server", 
			"mirroring_host_port_seperator", "partner_server_tcp_prefix", "port_number", 
			"host", "date_correlation_optimization_option", "db_encryption_option", 
			"db_state_option", "db_update_option", "db_user_access_option", "delayed_durability_option", 
			"external_access_option", "hadr_options", "mixed_page_allocation_option", 
			"parameterization_option", "recovery_option", "service_broker_option", 
			"snapshot_option", "sql_option", "target_recovery_time_option", "termination", 
			"drop_index", "drop_relational_or_xml_or_spatial_index", "drop_backward_compatible_index", 
			"drop_procedure", "drop_trigger", "drop_dml_trigger", "drop_ddl_trigger", 
			"drop_function", "drop_statistics", "drop_table", "drop_view", "create_type", 
			"drop_type", "rowset_function_limited", "openquery", "opendatasource", 
			"declare_statement", "cursor_statement", "backup_database", "backup_log", 
			"backup_certificate", "backup_master_key", "backup_service_master_key", 
			"execute_statement", "execute_body", "execute_statement_arg", "execute_var_string", 
			"security_statement", "create_certificate", "existing_keys", "private_key_options", 
			"generate_new_keys", "date_options", "open_key", "close_key", "create_key", 
			"key_options", "algorithm", "encryption_mechanism", "decryption_mechanism", 
			"grant_permission", "set_statement", "transaction_statement", "go_statement", 
			"use_statement", "setuser_statement", "dbcc_clause", "dbcc_options", 
			"execute_clause", "declare_local", "table_type_definition", "xml_type_definition", 
			"xml_schema_collection", "column_def_table_constraints", "column_def_table_constraint", 
			"column_definition", "materialized_column_definition", "column_constraint", 
			"table_constraint", "on_delete", "on_update", "index_options", "index_option", 
			"declare_cursor", "declare_set_cursor_common", "declare_set_cursor_common_partial", 
			"fetch_cursor", "set_special", "constant_LOCAL_ID", "expression", "primitive_expression", 
			"case_expression", "unary_operator_expression", "bracket_expression", 
			"constant_expression", "subquery", "with_expression", "common_table_expression", 
			"update_elem", "search_condition_list", "search_condition", "search_condition_and", 
			"search_condition_not", "predicate", "query_expression", "sql_union", 
			"query_specification", "top_clause", "top_percent", "top_count", "order_by_clause", 
			"for_clause", "xml_common_directives", "order_by_expression", "group_by_item", 
			"option_clause", "option", "optimize_for_arg", "select_list", "udt_method_arguments", 
			"asterisk", "column_elem", "udt_elem", "expression_elem", "select_list_elem", 
			"table_sources", "table_source", "table_source_item_joined", "table_source_item", 
			"open_xml", "schema_declaration", "column_declaration", "change_table", 
			"join_part", "pivot_clause", "unpivot_clause", "full_column_name_list", 
			"table_name_with_hint", "rowset_function", "bulk_option", "derived_table", 
			"function_call", "xml_data_type_methods", "value_method", "query_method", 
			"exist_method", "modify_method", "nodes_method", "switch_section", "switch_search_condition_section", 
			"as_column_alias", "as_table_alias", "table_alias", "with_table_hints", 
			"insert_with_table_hints", "table_hint", "index_value", "column_alias_list", 
			"column_alias", "table_value_constructor", "expression_list", "ranking_windowed_function", 
			"aggregate_windowed_function", "analytic_windowed_function", "all_distinct_expression", 
			"over_clause", "row_or_range_clause", "window_frame_extent", "window_frame_bound", 
			"window_frame_preceding", "window_frame_following", "create_database_option", 
			"database_filestream_option", "database_file_spec", "file_group", "file_spec", 
			"entity_name", "entity_name_for_azure_dw", "entity_name_for_parallel_dw", 
			"full_table_name", "table_name", "simple_name", "func_proc_name_schema", 
			"func_proc_name_database_schema", "func_proc_name_server_database_schema", 
			"ddl_object", "full_column_name", "column_name_list_with_order", "column_name_list", 
			"cursor_name", "on_off", "clustered", "null_notnull", "null_or_default", 
			"scalar_function_name", "begin_conversation_timer", "begin_conversation_dialog", 
			"contract_name", "service_name", "end_conversation", "waitfor_conversation", 
			"get_conversation", "queue_id", "send_conversation", "data_type", "default_value", 
			"constant", "sign", "id", "simple_id", "comparison_operator", "assignment_operator", 
			"file_size"
		};
	}
	public static final String[] ruleNames = makeRuleNames();

	private static String[] makeLiteralNames() {
		return new String[] {
			null, "'ABSENT'", "'ADD'", "'AES'", "'ALL'", "'ALLOW_CONNECTIONS'", "'ALLOW_MULTIPLE_EVENT_LOSS'", 
			"'ALLOW_SINGLE_EVENT_LOSS'", "'ALTER'", "'AND'", "'ANONYMOUS'", "'ANY'", 
			"'APPEND'", "'APPLICATION'", "'AS'", "'ASC'", "'ASYMMETRIC'", "'ASYNCHRONOUS_COMMIT'", 
			"'AUTHORIZATION'", "'AUTHENTICATION'", "'AUTOMATED_BACKUP_PREFERENCE'", 
			"'AUTOMATIC'", "'AVAILABILITY_MODE'", "'\\'", "'BACKUP'", "'BEFORE'", 
			"'BEGIN'", "'BETWEEN'", "'BLOCK'", "'BLOCKSIZE'", "'BLOCKING_HIERARCHY'", 
			"'BREAK'", "'BROWSE'", "'BUFFER'", "'BUFFERCOUNT'", "'BULK'", "'BY'", 
			"'CACHE'", "'CALLED'", "'CASCADE'", "'CASE'", "'CERTIFICATE'", "'CHANGETABLE'", 
			"'CHANGES'", "'CHECK'", "'CHECKPOINT'", "'CHECK_POLICY'", "'CHECK_EXPIRATION'", 
			"'CLASSIFIER_FUNCTION'", "'CLOSE'", "'CLUSTER'", "'CLUSTERED'", "'COALESCE'", 
			"'COLLATE'", "'COLUMN'", "'COMPRESSION'", "'COMMIT'", "'COMPUTE'", "'CONFIGURATION'", 
			"'CONSTRAINT'", "'CONTAINMENT'", "'CONTAINS'", "'CONTAINSTABLE'", "'CONTEXT'", 
			"'CONTINUE'", "'CONTINUE_AFTER_ERROR'", "'CONTRACT'", "'CONTRACT_NAME'", 
			"'CONVERSATION'", null, "'COPY_ONLY'", "'CREATE'", "'CROSS'", "'CURRENT'", 
			"'CURRENT_DATE'", "'CURRENT_TIME'", "'CURRENT_TIMESTAMP'", "'CURRENT_USER'", 
			"'CURSOR'", "'CYCLE'", "'DATA'", "'DATA_COMPRESSION'", "'DATA_SOURCE'", 
			"'DATABASE'", "'DATABASE_MIRRORING'", "'DBCC'", "'DEALLOCATE'", "'DECLARE'", 
			"'DEFAULT'", "'DEFAULT_DATABASE'", "'DEFAULT_SCHEMA'", "'DELETE'", "'DENY'", 
			"'DESC'", "'DIAGNOSTICS'", "'DIFFERENTIAL'", "'DISK'", "'DISTINCT'", 
			"'DISTRIBUTED'", "'DOUBLE'", "'\\\\'", "'//'", "'DROP'", "'DTC_SUPPORT'", 
			"'DUMP'", "'ELSE'", "'ENABLED'", "'END'", "'ENDPOINT'", "'ERRLVL'", "'ESCAPE'", 
			"'ERROR'", "'EVENT'", null, "'EVENT_RETENTION_MODE'", "'EXCEPT'", "'EXECUTABLE_FILE'", 
			null, "'EXISTS'", "'EXPIREDATE'", "'EXIT'", "'EXTENSION'", "'EXTERNAL'", 
			"'EXTERNAL_ACCESS'", "'FAILOVER'", "'FAILURECONDITIONLEVEL'", "'FAN_IN'", 
			"'FETCH'", "'FILE'", "'FILENAME'", "'FILLFACTOR'", "'FILE_SNAPSHOT'", 
			"'FOR'", "'FORCESEEK'", "'FORCE_SERVICE_ALLOW_DATA_LOSS'", "'FOREIGN'", 
			"'FREETEXT'", "'FREETEXTTABLE'", "'FROM'", "'FULL'", "'FUNCTION'", "'GET'", 
			"'GOTO'", "'GOVERNOR'", "'GRANT'", "'GROUP'", "'HAVING'", "'HASHED'", 
			"'HEALTHCHECKTIMEOUT'", "'IDENTITY'", "'IDENTITYCOL'", "'IDENTITY_INSERT'", 
			"'IF'", "'IIF'", "'IN'", "'INCLUDE'", "'INCREMENT'", "'INDEX'", "'INFINITE'", 
			"'INIT'", "'INNER'", "'INSERT'", "'INSTEAD'", "'INTERSECT'", "'INTO'", 
			null, null, "'IS'", "'ISNULL'", "'JOIN'", "'KERBEROS'", "'KEY'", "'KEY_PATH'", 
			"'KEY_STORE_PROVIDER_NAME'", "'KILL'", "'LANGUAGE'", "'LEFT'", "'LIBRARY'", 
			"'LIFETIME'", "'LIKE'", "'LINENO'", "'LINUX'", "'LISTENER_IP'", "'LISTENER_PORT'", 
			"'LOAD'", "'LOCAL_SERVICE_NAME'", "'LOG'", "'MATCHED'", "'MASTER'", "'MAX_MEMORY'", 
			"'MAXTRANSFER'", "'MAXVALUE'", "'MAX_DISPATCH_LATENCY'", "'MAX_EVENT_SIZE'", 
			"'MAX_SIZE'", "'MAX_OUTSTANDING_IO_PER_VOLUME'", "'MEDIADESCRIPTION'", 
			"'MEDIANAME'", "'MEMBER'", "'MEMORY_PARTITION_MODE'", "'MERGE'", "'MESSAGE_FORWARDING'", 
			"'MESSAGE_FORWARD_SIZE'", "'MINVALUE'", "'MIRROR'", "'MUST_CHANGE'", 
			"'NATIONAL'", "'NEGOTIATE'", "'NOCHECK'", "'NOFORMAT'", "'NOINIT'", "'NONCLUSTERED'", 
			"'NONE'", "'NOREWIND'", "'NOSKIP'", "'NOUNLOAD'", "'NO_CHECKSUM'", "'NO_COMPRESSION'", 
			"'NO_EVENT_LOSS'", "'NOT'", "'NOTIFICATION'", "'NTLM'", "'NULL'", "'NULLIF'", 
			"'OF'", "'OFF'", "'OFFSETS'", "'OLD_PASSWORD'", "'ON'", "'ON_FAILURE'", 
			"'OPEN'", "'OPENDATASOURCE'", "'OPENQUERY'", "'OPENROWSET'", "'OPENXML'", 
			"'OPTION'", "'OR'", "'ORDER'", "'OUTER'", "'OVER'", "'PAGE'", "'PARAM_NODE'", 
			"'PARTIAL'", "'PASSWORD'", "'PERCENT'", "'PERMISSION_SET'", "'PER_CPU'", 
			"'PER_DB'", "'PER_NODE'", "'PIVOT'", "'PLAN'", "'PLATFORM'", "'POLICY'", 
			"'PRECISION'", "'PREDICATE'", "'PRIMARY'", "'PRINT'", "'PROC'", "'PROCEDURE'", 
			"'PROCESS'", "'PUBLIC'", "'PYTHON'", "'R'", "'RAISERROR'", "'RAW'", "'READ'", 
			"'READTEXT'", "'READ_WRITE_FILEGROUPS'", "'RECONFIGURE'", "'REFERENCES'", 
			"'REGENERATE'", "'RELATED_CONVERSATION'", "'RELATED_CONVERSATION_GROUP'", 
			"'REPLICATION'", "'REQUIRED'", "'RESET'", "'RESTART'", "'RESTORE'", "'RESTRICT'", 
			"'RESUME'", "'RETAINDAYS'", "'RETURN'", "'RETURNS'", "'REVERT'", "'REVOKE'", 
			"'REWIND'", "'RIGHT'", "'ROLLBACK'", "'ROLE'", "'ROWCOUNT'", "'ROWGUIDCOL'", 
			"'RSA_512'", "'RSA_1024'", "'RSA_2048'", "'RSA_3072'", "'RSA_4096'", 
			"'SAFETY'", "'RULE'", "'SAFE'", "'SAVE'", "'SCHEDULER'", "'SCHEMA'", 
			"'SCHEME'", "'SECURITY'", "'SECURITYAUDIT'", "'SELECT'", "'SEMANTICKEYPHRASETABLE'", 
			"'SEMANTICSIMILARITYDETAILSTABLE'", "'SEMANTICSIMILARITYTABLE'", "'SEQUENCE'", 
			"'SERVER'", "'SERVICE'", "'SERVICE_BROKER'", "'SERVICE_NAME'", "'SESSION'", 
			"'SESSION_USER'", "'SET'", "'SETUSER'", "'SHUTDOWN'", "'SID'", "'SKIP'", 
			"'SOFTNUMA'", "'SOME'", "'SOURCE'", "'SPECIFICATION'", "'SPLIT'", "'SQLDUMPERFLAGS'", 
			"'SQLDUMPERPATH'", "'SQLDUMPERTIMEOUTS'", "'STATISTICS'", "'STATE'", 
			"'STATS'", "'START'", "'STARTED'", "'STARTUP_STATE'", "'STOP'", "'STOPPED'", 
			"'STOP_ON_ERROR'", "'SUPPORTED'", "'SYSTEM'", "'SYSTEM_USER'", "'TABLE'", 
			"'TABLESAMPLE'", "'TAPE'", "'TARGET'", "'TCP'", "'TEXTSIZE'", "'THEN'", 
			"'TO'", "'TOP'", "'TRACK_CAUSALITY'", "'TRAN'", "'TRANSACTION'", "'TRANSFER'", 
			"'TRIGGER'", "'TRUNCATE'", "'TSEQUAL'", "'UNCHECKED'", "'UNION'", "'UNIQUE'", 
			"'UNLOCK'", "'UNPIVOT'", "'UNSAFE'", "'UPDATE'", "'UPDATETEXT'", "'URL'", 
			"'USE'", "'USED'", "'USER'", "'VALUES'", "'VARYING'", "'VERBOSELOGGING'", 
			"'VIEW'", "'VISIBILITY'", "'WAITFOR'", "'WHEN'", "'WHERE'", "'WHILE'", 
			"'WINDOWS'", "'WITH'", "'WITHIN'", "'WITHOUT'", "'WITNESS'", "'WRITETEXT'", 
			"'ABSOLUTE'", "'ACCENT_SENSITIVITY'", "'ACTION'", "'ACTIVATION'", "'ACTIVE'", 
			"'ADDRESS'", "'AES_128'", "'AES_192'", "'AES_256'", "'AFFINITY'", "'AFTER'", 
			"'AGGREGATE'", "'ALGORITHM'", "'ALLOW_ENCRYPTED_VALUE_MODIFICATIONS'", 
			"'ALLOW_SNAPSHOT_ISOLATION'", "'ALLOWED'", "'ANSI_NULL_DEFAULT'", "'ANSI_NULLS'", 
			"'ANSI_PADDING'", "'ANSI_WARNINGS'", "'APPLICATION_LOG'", "'APPLY'", 
			"'ARITHABORT'", "'ASSEMBLY'", "'AUDIT'", "'AUDIT_GUID'", "'AUTO'", "'AUTO_CLEANUP'", 
			"'AUTO_CLOSE'", "'AUTO_CREATE_STATISTICS'", "'AUTO_SHRINK'", "'AUTO_UPDATE_STATISTICS'", 
			"'AUTO_UPDATE_STATISTICS_ASYNC'", "'AVAILABILITY'", "'AVG'", "'BACKUP_PRIORITY'", 
			"'BEGIN_DIALOG'", "'BIGINT'", "'BINARY BASE64'", "'BINARY_CHECKSUM'", 
			"'BINDING'", "'BLOB_STORAGE'", "'BROKER'", "'BROKER_INSTANCE'", "'BULK_LOGGED'", 
			"'CALLER'", "'CAP_CPU_PERCENT'", null, "'CATALOG'", "'CATCH'", "'CHANGE_RETENTION'", 
			"'CHANGE_TRACKING'", "'CHECKSUM'", "'CHECKSUM_AGG'", "'CLEANUP'", "'COLLECTION'", 
			"'COLUMN_MASTER_KEY'", "'COMMITTED'", "'COMPATIBILITY_LEVEL'", "'CONCAT'", 
			"'CONCAT_NULL_YIELDS_NULL'", "'CONTENT'", "'CONTROL'", "'COOKIE'", "'COUNT'", 
			"'COUNT_BIG'", "'COUNTER'", "'CPU'", "'CREATE_NEW'", "'CREATION_DISPOSITION'", 
			"'CREDENTIAL'", "'CRYPTOGRAPHIC'", "'CURSOR_CLOSE_ON_COMMIT'", "'CURSOR_DEFAULT'", 
			"'DATE_CORRELATION_OPTIMIZATION'", "'DATEADD'", "'DATEDIFF'", "'DATENAME'", 
			"'DATEPART'", "'DAYS'", "'DB_CHAINING'", "'DB_FAILOVER'", "'DECRYPTION'", 
			null, "'DEFAULT_FULLTEXT_LANGUAGE'", "'DEFAULT_LANGUAGE'", "'DELAY'", 
			"'DELAYED_DURABILITY'", "'DELETED'", "'DENSE_RANK'", "'DEPENDENTS'", 
			"'DES'", "'DESCRIPTION'", "'DESX'", "'DHCP'", "'DIALOG'", "'DIRECTORY_NAME'", 
			"'DISABLE'", "'DISABLE_BROKER'", "'DISABLED'", null, "'DOCUMENT'", "'DYNAMIC'", 
			"'ELEMENTS'", "'EMERGENCY'", "'EMPTY'", "'ENABLE'", "'ENABLE_BROKER'", 
			"'ENCRYPTED_VALUE'", "'ENCRYPTION'", "'ENDPOINT_URL'", "'ERROR_BROKER_CONVERSATIONS'", 
			"'EXCLUSIVE'", "'EXECUTABLE'", "'EXIST'", "'EXPAND'", "'EXPIRY_DATE'", 
			"'EXPLICIT'", "'FAIL_OPERATION'", "'FAILOVER_MODE'", "'FAILURE'", "'FAILURE_CONDITION_LEVEL'", 
			"'FAST'", "'FAST_FORWARD'", "'FILEGROUP'", "'FILEGROWTH'", "'FILEPATH'", 
			"'FILESTREAM'", "'FILTER'", "'FIRST'", "'FIRST_VALUE'", "'FOLLOWING'", 
			"'FORCE'", "'FORCE_FAILOVER_ALLOW_DATA_LOSS'", "'FORCED'", "'FORMAT'", 
			"'FORWARD_ONLY'", "'FULLSCAN'", "'FULLTEXT'", "'GB'", "'GETDATE'", "'GETUTCDATE'", 
			"'GLOBAL'", "'GO'", "'GROUP_MAX_REQUESTS'", "'GROUPING'", "'GROUPING_ID'", 
			"'HADR'", "'HASH'", "'HEALTH_CHECK_TIMEOUT'", "'HIGH'", "'HONOR_BROKER_PRIORITY'", 
			"'HOURS'", "'IDENTITY_VALUE'", "'IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX'", 
			"'IMMEDIATE'", "'IMPERSONATE'", "'IMPORTANCE'", "'INCLUDE_NULL_VALUES'", 
			"'INCREMENTAL'", "'INITIATOR'", "'INPUT'", "'INSENSITIVE'", "'INSERTED'", 
			"'INT'", "'IP'", "'ISOLATION'", "'JSON'", "'KB'", "'KEEP'", "'KEEPFIXED'", 
			"'KEY_SOURCE'", "'KEYS'", "'KEYSET'", "'LAG'", "'LAST'", "'LAST_VALUE'", 
			"'LEAD'", "'LEVEL'", "'LIST'", "'LISTENER'", "'LISTENER_URL'", "'LOB_COMPACTION'", 
			"'LOCAL'", "'LOCATION'", "'LOCK'", "'LOCK_ESCALATION'", "'LOGIN'", "'LOOP'", 
			"'LOW'", "'MANUAL'", "'MARK'", "'MATERIALIZED'", "'MAX'", "'MAX_CPU_PERCENT'", 
			"'MAX_DOP'", "'MAX_FILES'", "'MAX_IOPS_PER_VOLUME'", "'MAX_MEMORY_PERCENT'", 
			"'MAX_PROCESSES'", "'MAX_QUEUE_READERS'", "'MAX_ROLLOVER_FILES'", "'MAXDOP'", 
			"'MAXRECURSION'", "'MAXSIZE'", "'MB'", "'MEDIUM'", "'MEMORY_OPTIMIZED_DATA'", 
			"'MESSAGE'", "'MIN'", "'MIN_ACTIVE_ROWVERSION'", "'MIN_CPU_PERCENT'", 
			"'MIN_IOPS_PER_VOLUME'", "'MIN_MEMORY_PERCENT'", "'MINUTES'", "'MIRROR_ADDRESS'", 
			"'MIXED_PAGE_ALLOCATION'", "'MODE'", "'MODIFY'", "'MOVE'", "'MULTI_USER'", 
			"'NAME'", "'NESTED_TRIGGERS'", "'NEW_ACCOUNT'", "'NEW_BROKER'", "'NEW_PASSWORD'", 
			"'NEXT'", "'NO'", "'NO_TRUNCATE'", "'NO_WAIT'", "'NOCOUNT'", "'NODES'", 
			"'NOEXPAND'", "'NON_TRANSACTED_ACCESS'", "'NORECOMPUTE'", "'NORECOVERY'", 
			"'NOWAIT'", "'NTILE'", "'NUMANODE'", "'NUMBER'", "'NUMERIC_ROUNDABORT'", 
			"'OBJECT'", "'OFFLINE'", "'OFFSET'", "'OLD_ACCOUNT'", "'ONLINE'", "'ONLY'", 
			"'OPEN_EXISTING'", "'OPTIMISTIC'", "'OPTIMIZE'", "'OUT'", "'OUTPUT'", 
			"'OWNER'", "'PAGE_VERIFY'", "'PARAMETERIZATION'", "'PARTITION'", "'PARTITIONS'", 
			"'PARTNER'", "'PATH'", "'POISON_MESSAGE_HANDLING'", "'POOL'", "'PORT'", 
			"'PRECEDING'", "'PRIMARY_ROLE'", "'PRIOR'", "'PRIORITY'", "'PRIORITY_LEVEL'", 
			"'PRIVATE'", "'PRIVATE_KEY'", "'PRIVILEGES'", "'PROCEDURE_NAME'", "'PROPERTY'", 
			"'PROVIDER'", "'PROVIDER_KEY_NAME'", "'QUERY'", "'QUEUE'", "'QUEUE_DELAY'", 
			"'QUOTED_IDENTIFIER'", "'RANGE'", "'RANK'", "'RC2'", "'RC4'", "'RC4_128'", 
			"'READ_COMMITTED_SNAPSHOT'", "'READ_ONLY'", "'READ_ONLY_ROUTING_LIST'", 
			"'READ_WRITE'", "'READONLY'", "'REBUILD'", "'RECEIVE'", "'RECOMPILE'", 
			"'RECOVERY'", "'RECURSIVE_TRIGGERS'", "'RELATIVE'", "'REMOTE'", "'REMOTE_SERVICE_NAME'", 
			"'REMOVE'", "'REORGANIZE'", "'REPEATABLE'", "'REPLICA'", "'REQUEST_MAX_CPU_TIME_SEC'", 
			"'REQUEST_MAX_MEMORY_GRANT_PERCENT'", "'REQUEST_MEMORY_GRANT_TIMEOUT_SEC'", 
			"'REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT'", "'RESERVE_DISK_SPACE'", 
			"'RESOURCE'", "'RESOURCE_MANAGER_LOCATION'", "'RESTRICTED_USER'", "'RETENTION'", 
			"'ROBUST'", "'ROOT'", "'ROUTE'", "'ROW'", "'ROW_NUMBER'", "'ROWGUID'", 
			"'ROWS'", "'SAMPLE'", "'SCHEMABINDING'", "'SCOPED'", "'SCROLL'", "'SCROLL_LOCKS'", 
			"'SEARCH'", "'SECONDARY'", "'SECONDARY_ONLY'", "'SECONDARY_ROLE'", "'SECONDS'", 
			"'SECRET'", "'SECURITY_LOG'", "'SEEDING_MODE'", "'SELF'", "'SEMI_SENSITIVE'", 
			"'SEND'", "'SENT'", "'SERIALIZABLE'", "'SESSION_TIMEOUT'", "'SETERROR'", 
			"'SHARE'", "'SHOWPLAN'", "'SIGNATURE'", "'SIMPLE'", "'SINGLE_USER'", 
			"'SIZE'", "'SMALLINT'", "'SNAPSHOT'", "'SPATIAL_WINDOW_MAX_CELLS'", "'STANDBY'", 
			"'START_DATE'", "'STATIC'", "'STATS_STREAM'", "'STATUS'", "'STDEV'", 
			"'STDEVP'", "'STOPLIST'", "'STUFF'", "'SUBJECT'", "'SUM'", "'SUSPEND'", 
			"'SYMMETRIC'", "'SYNCHRONOUS_COMMIT'", "'SYNONYM'", "'TAKE'", "'TARGET_RECOVERY_TIME'", 
			"'TB'", "'TEXTIMAGE_ON'", "'THROW'", "'TIES'", "'TIME'", "'TIMEOUT'", 
			"'TIMER'", "'TINYINT'", "'TORN_PAGE_DETECTION'", "'TRANSFORM_NOISE_WORDS'", 
			"'TRIPLE_DES'", "'TRIPLE_DES_3KEY'", "'TRUSTWORTHY'", "'TRY'", "'TSQL'", 
			"'TWO_DIGIT_YEAR_CUTOFF'", "'TYPE'", "'TYPE_WARNING'", "'UNBOUNDED'", 
			"'UNCOMMITTED'", "'UNKNOWN'", "'UNLIMITED'", "'USING'", "'VALID_XML'", 
			"'VALIDATION'", "'VALUE'", "'VAR'", "'VARP'", "'VIEW_METADATA'", "'VIEWS'", 
			"'WAIT'", "'WELL_FORMED_XML'", "'WITHOUT_ARRAY_WRAPPER'", "'WORK'", "'WORKLOAD'", 
			"'XML'", "'XMLDATA'", "'XMLNAMESPACES'", "'XMLSCHEMA'", "'XSINIL'", "'$ACTION'", 
			null, null, null, null, "'''", null, null, null, null, null, null, null, 
			null, null, null, "'='", "'>'", "'<'", "'!'", "'+='", "'-='", "'*='", 
			"'/='", "'%='", "'&='", "'^='", "'|='", "'||'", "'.'", "'_'", "'@'", 
			"'#'", "'$'", "'('", "')'", "','", "';'", "':'", "'*'", "'/'", "'%'", 
			"'+'", "'-'", "'~'", "'|'", "'&'", "'^'"
		};
	}
	private static final String[] _LITERAL_NAMES = makeLiteralNames();
	private static String[] makeSymbolicNames() {
		return new String[] {
			null, "ABSENT", "ADD", "AES", "ALL", "ALLOW_CONNECTIONS", "ALLOW_MULTIPLE_EVENT_LOSS", 
			"ALLOW_SINGLE_EVENT_LOSS", "ALTER", "AND", "ANONYMOUS", "ANY", "APPEND", 
			"APPLICATION", "AS", "ASC", "ASYMMETRIC", "ASYNCHRONOUS_COMMIT", "AUTHORIZATION", 
			"AUTHENTICATION", "AUTOMATED_BACKUP_PREFERENCE", "AUTOMATIC", "AVAILABILITY_MODE", 
			"BACKSLASH", "BACKUP", "BEFORE", "BEGIN", "BETWEEN", "BLOCK", "BLOCKSIZE", 
			"BLOCKING_HIERARCHY", "BREAK", "BROWSE", "BUFFER", "BUFFERCOUNT", "BULK", 
			"BY", "CACHE", "CALLED", "CASCADE", "CASE", "CERTIFICATE", "CHANGETABLE", 
			"CHANGES", "CHECK", "CHECKPOINT", "CHECK_POLICY", "CHECK_EXPIRATION", 
			"CLASSIFIER_FUNCTION", "CLOSE", "CLUSTER", "CLUSTERED", "COALESCE", "COLLATE", 
			"COLUMN", "COMPRESSION", "COMMIT", "COMPUTE", "CONFIGURATION", "CONSTRAINT", 
			"CONTAINMENT", "CONTAINS", "CONTAINSTABLE", "CONTEXT", "CONTINUE", "CONTINUE_AFTER_ERROR", 
			"CONTRACT", "CONTRACT_NAME", "CONVERSATION", "CONVERT", "COPY_ONLY", 
			"CREATE", "CROSS", "CURRENT", "CURRENT_DATE", "CURRENT_TIME", "CURRENT_TIMESTAMP", 
			"CURRENT_USER", "CURSOR", "CYCLE", "DATA", "DATA_COMPRESSION", "DATA_SOURCE", 
			"DATABASE", "DATABASE_MIRRORING", "DBCC", "DEALLOCATE", "DECLARE", "DEFAULT", 
			"DEFAULT_DATABASE", "DEFAULT_SCHEMA", "DELETE", "DENY", "DESC", "DIAGNOSTICS", 
			"DIFFERENTIAL", "DISK", "DISTINCT", "DISTRIBUTED", "DOUBLE", "DOUBLE_BACK_SLASH", 
			"DOUBLE_FORWARD_SLASH", "DROP", "DTC_SUPPORT", "DUMP", "ELSE", "ENABLED", 
			"END", "ENDPOINT", "ERRLVL", "ESCAPE", "ERROR", "EVENT", "EVENTDATA", 
			"EVENT_RETENTION_MODE", "EXCEPT", "EXECUTABLE_FILE", "EXECUTE", "EXISTS", 
			"EXPIREDATE", "EXIT", "EXTENSION", "EXTERNAL", "EXTERNAL_ACCESS", "FAILOVER", 
			"FAILURECONDITIONLEVEL", "FAN_IN", "FETCH", "FILE", "FILENAME", "FILLFACTOR", 
			"FILE_SNAPSHOT", "FOR", "FORCESEEK", "FORCE_SERVICE_ALLOW_DATA_LOSS", 
			"FOREIGN", "FREETEXT", "FREETEXTTABLE", "FROM", "FULL", "FUNCTION", "GET", 
			"GOTO", "GOVERNOR", "GRANT", "GROUP", "HAVING", "HASHED", "HEALTHCHECKTIMEOUT", 
			"IDENTITY", "IDENTITYCOL", "IDENTITY_INSERT", "IF", "IIF", "IN", "INCLUDE", 
			"INCREMENT", "INDEX", "INFINITE", "INIT", "INNER", "INSERT", "INSTEAD", 
			"INTERSECT", "INTO", "IPV4_ADDR", "IPV6_ADDR", "IS", "ISNULL", "JOIN", 
			"KERBEROS", "KEY", "KEY_PATH", "KEY_STORE_PROVIDER_NAME", "KILL", "LANGUAGE", 
			"LEFT", "LIBRARY", "LIFETIME", "LIKE", "LINENO", "LINUX", "LISTENER_IP", 
			"LISTENER_PORT", "LOAD", "LOCAL_SERVICE_NAME", "LOG", "MATCHED", "MASTER", 
			"MAX_MEMORY", "MAXTRANSFER", "MAXVALUE", "MAX_DISPATCH_LATENCY", "MAX_EVENT_SIZE", 
			"MAX_SIZE", "MAX_OUTSTANDING_IO_PER_VOLUME", "MEDIADESCRIPTION", "MEDIANAME", 
			"MEMBER", "MEMORY_PARTITION_MODE", "MERGE", "MESSAGE_FORWARDING", "MESSAGE_FORWARD_SIZE", 
			"MINVALUE", "MIRROR", "MUST_CHANGE", "NATIONAL", "NEGOTIATE", "NOCHECK", 
			"NOFORMAT", "NOINIT", "NONCLUSTERED", "NONE", "NOREWIND", "NOSKIP", "NOUNLOAD", 
			"NO_CHECKSUM", "NO_COMPRESSION", "NO_EVENT_LOSS", "NOT", "NOTIFICATION", 
			"NTLM", "NULL", "NULLIF", "OF", "OFF", "OFFSETS", "OLD_PASSWORD", "ON", 
			"ON_FAILURE", "OPEN", "OPENDATASOURCE", "OPENQUERY", "OPENROWSET", "OPENXML", 
			"OPTION", "OR", "ORDER", "OUTER", "OVER", "PAGE", "PARAM_NODE", "PARTIAL", 
			"PASSWORD", "PERCENT", "PERMISSION_SET", "PER_CPU", "PER_DB", "PER_NODE", 
			"PIVOT", "PLAN", "PLATFORM", "POLICY", "PRECISION", "PREDICATE", "PRIMARY", 
			"PRINT", "PROC", "PROCEDURE", "PROCESS", "PUBLIC", "PYTHON", "R", "RAISERROR", 
			"RAW", "READ", "READTEXT", "READ_WRITE_FILEGROUPS", "RECONFIGURE", "REFERENCES", 
			"REGENERATE", "RELATED_CONVERSATION", "RELATED_CONVERSATION_GROUP", "REPLICATION", 
			"REQUIRED", "RESET", "RESTART", "RESTORE", "RESTRICT", "RESUME", "RETAINDAYS", 
			"RETURN", "RETURNS", "REVERT", "REVOKE", "REWIND", "RIGHT", "ROLLBACK", 
			"ROLE", "ROWCOUNT", "ROWGUIDCOL", "RSA_512", "RSA_1024", "RSA_2048", 
			"RSA_3072", "RSA_4096", "SAFETY", "RULE", "SAFE", "SAVE", "SCHEDULER", 
			"SCHEMA", "SCHEME", "SECURITY", "SECURITYAUDIT", "SELECT", "SEMANTICKEYPHRASETABLE", 
			"SEMANTICSIMILARITYDETAILSTABLE", "SEMANTICSIMILARITYTABLE", "SEQUENCE", 
			"SERVER", "SERVICE", "SERVICE_BROKER", "SERVICE_NAME", "SESSION", "SESSION_USER", 
			"SET", "SETUSER", "SHUTDOWN", "SID", "SKIP_KEYWORD", "SOFTNUMA", "SOME", 
			"SOURCE", "SPECIFICATION", "SPLIT", "SQLDUMPERFLAGS", "SQLDUMPERPATH", 
			"SQLDUMPERTIMEOUT", "STATISTICS", "STATE", "STATS", "START", "STARTED", 
			"STARTUP_STATE", "STOP", "STOPPED", "STOP_ON_ERROR", "SUPPORTED", "SYSTEM", 
			"SYSTEM_USER", "TABLE", "TABLESAMPLE", "TAPE", "TARGET", "TCP", "TEXTSIZE", 
			"THEN", "TO", "TOP", "TRACK_CAUSALITY", "TRAN", "TRANSACTION", "TRANSFER", 
			"TRIGGER", "TRUNCATE", "TSEQUAL", "UNCHECKED", "UNION", "UNIQUE", "UNLOCK", 
			"UNPIVOT", "UNSAFE", "UPDATE", "UPDATETEXT", "URL", "USE", "USED", "USER", 
			"VALUES", "VARYING", "VERBOSELOGGING", "VIEW", "VISIBILITY", "WAITFOR", 
			"WHEN", "WHERE", "WHILE", "WINDOWS", "WITH", "WITHIN", "WITHOUT", "WITNESS", 
			"WRITETEXT", "ABSOLUTE", "ACCENT_SENSITIVITY", "ACTION", "ACTIVATION", 
			"ACTIVE", "ADDRESS", "AES_128", "AES_192", "AES_256", "AFFINITY", "AFTER", 
			"AGGREGATE", "ALGORITHM", "ALLOW_ENCRYPTED_VALUE_MODIFICATIONS", "ALLOW_SNAPSHOT_ISOLATION", 
			"ALLOWED", "ANSI_NULL_DEFAULT", "ANSI_NULLS", "ANSI_PADDING", "ANSI_WARNINGS", 
			"APPLICATION_LOG", "APPLY", "ARITHABORT", "ASSEMBLY", "AUDIT", "AUDIT_GUID", 
			"AUTO", "AUTO_CLEANUP", "AUTO_CLOSE", "AUTO_CREATE_STATISTICS", "AUTO_SHRINK", 
			"AUTO_UPDATE_STATISTICS", "AUTO_UPDATE_STATISTICS_ASYNC", "AVAILABILITY", 
			"AVG", "BACKUP_PRIORITY", "BEGIN_DIALOG", "BIGINT", "BINARY_BASE64", 
			"BINARY_CHECKSUM", "BINDING", "BLOB_STORAGE", "BROKER", "BROKER_INSTANCE", 
			"BULK_LOGGED", "CALLER", "CAP_CPU_PERCENT", "CAST", "CATALOG", "CATCH", 
			"CHANGE_RETENTION", "CHANGE_TRACKING", "CHECKSUM", "CHECKSUM_AGG", "CLEANUP", 
			"COLLECTION", "COLUMN_MASTER_KEY", "COMMITTED", "COMPATIBILITY_LEVEL", 
			"CONCAT", "CONCAT_NULL_YIELDS_NULL", "CONTENT", "CONTROL", "COOKIE", 
			"COUNT", "COUNT_BIG", "COUNTER", "CPU", "CREATE_NEW", "CREATION_DISPOSITION", 
			"CREDENTIAL", "CRYPTOGRAPHIC", "CURSOR_CLOSE_ON_COMMIT", "CURSOR_DEFAULT", 
			"DATE_CORRELATION_OPTIMIZATION", "DATEADD", "DATEDIFF", "DATENAME", "DATEPART", 
			"DAYS", "DB_CHAINING", "DB_FAILOVER", "DECRYPTION", "DEFAULT_DOUBLE_QUOTE", 
			"DEFAULT_FULLTEXT_LANGUAGE", "DEFAULT_LANGUAGE", "DELAY", "DELAYED_DURABILITY", 
			"DELETED", "DENSE_RANK", "DEPENDENTS", "DES", "DESCRIPTION", "DESX", 
			"DHCP", "DIALOG", "DIRECTORY_NAME", "DISABLE", "DISABLE_BROKER", "DISABLED", 
			"DISK_DRIVE", "DOCUMENT", "DYNAMIC", "ELEMENTS", "EMERGENCY", "EMPTY", 
			"ENABLE", "ENABLE_BROKER", "ENCRYPTED_VALUE", "ENCRYPTION", "ENDPOINT_URL", 
			"ERROR_BROKER_CONVERSATIONS", "EXCLUSIVE", "EXECUTABLE", "EXIST", "EXPAND", 
			"EXPIRY_DATE", "EXPLICIT", "FAIL_OPERATION", "FAILOVER_MODE", "FAILURE", 
			"FAILURE_CONDITION_LEVEL", "FAST", "FAST_FORWARD", "FILEGROUP", "FILEGROWTH", 
			"FILEPATH", "FILESTREAM", "FILTER", "FIRST", "FIRST_VALUE", "FOLLOWING", 
			"FORCE", "FORCE_FAILOVER_ALLOW_DATA_LOSS", "FORCED", "FORMAT", "FORWARD_ONLY", 
			"FULLSCAN", "FULLTEXT", "GB", "GETDATE", "GETUTCDATE", "GLOBAL", "GO", 
			"GROUP_MAX_REQUESTS", "GROUPING", "GROUPING_ID", "HADR", "HASH", "HEALTH_CHECK_TIMEOUT", 
			"HIGH", "HONOR_BROKER_PRIORITY", "HOURS", "IDENTITY_VALUE", "IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX", 
			"IMMEDIATE", "IMPERSONATE", "IMPORTANCE", "INCLUDE_NULL_VALUES", "INCREMENTAL", 
			"INITIATOR", "INPUT", "INSENSITIVE", "INSERTED", "INT", "IP", "ISOLATION", 
			"JSON", "KB", "KEEP", "KEEPFIXED", "KEY_SOURCE", "KEYS", "KEYSET", "LAG", 
			"LAST", "LAST_VALUE", "LEAD", "LEVEL", "LIST", "LISTENER", "LISTENER_URL", 
			"LOB_COMPACTION", "LOCAL", "LOCATION", "LOCK", "LOCK_ESCALATION", "LOGIN", 
			"LOOP", "LOW", "MANUAL", "MARK", "MATERIALIZED", "MAX", "MAX_CPU_PERCENT", 
			"MAX_DOP", "MAX_FILES", "MAX_IOPS_PER_VOLUME", "MAX_MEMORY_PERCENT", 
			"MAX_PROCESSES", "MAX_QUEUE_READERS", "MAX_ROLLOVER_FILES", "MAXDOP", 
			"MAXRECURSION", "MAXSIZE", "MB", "MEDIUM", "MEMORY_OPTIMIZED_DATA", "MESSAGE", 
			"MIN", "MIN_ACTIVE_ROWVERSION", "MIN_CPU_PERCENT", "MIN_IOPS_PER_VOLUME", 
			"MIN_MEMORY_PERCENT", "MINUTES", "MIRROR_ADDRESS", "MIXED_PAGE_ALLOCATION", 
			"MODE", "MODIFY", "MOVE", "MULTI_USER", "NAME", "NESTED_TRIGGERS", "NEW_ACCOUNT", 
			"NEW_BROKER", "NEW_PASSWORD", "NEXT", "NO", "NO_TRUNCATE", "NO_WAIT", 
			"NOCOUNT", "NODES", "NOEXPAND", "NON_TRANSACTED_ACCESS", "NORECOMPUTE", 
			"NORECOVERY", "NOWAIT", "NTILE", "NUMANODE", "NUMBER", "NUMERIC_ROUNDABORT", 
			"OBJECT", "OFFLINE", "OFFSET", "OLD_ACCOUNT", "ONLINE", "ONLY", "OPEN_EXISTING", 
			"OPTIMISTIC", "OPTIMIZE", "OUT", "OUTPUT", "OWNER", "PAGE_VERIFY", "PARAMETERIZATION", 
			"PARTITION", "PARTITIONS", "PARTNER", "PATH", "POISON_MESSAGE_HANDLING", 
			"POOL", "PORT", "PRECEDING", "PRIMARY_ROLE", "PRIOR", "PRIORITY", "PRIORITY_LEVEL", 
			"PRIVATE", "PRIVATE_KEY", "PRIVILEGES", "PROCEDURE_NAME", "PROPERTY", 
			"PROVIDER", "PROVIDER_KEY_NAME", "QUERY", "QUEUE", "QUEUE_DELAY", "QUOTED_IDENTIFIER", 
			"RANGE", "RANK", "RC2", "RC4", "RC4_128", "READ_COMMITTED_SNAPSHOT", 
			"READ_ONLY", "READ_ONLY_ROUTING_LIST", "READ_WRITE", "READONLY", "REBUILD", 
			"RECEIVE", "RECOMPILE", "RECOVERY", "RECURSIVE_TRIGGERS", "RELATIVE", 
			"REMOTE", "REMOTE_SERVICE_NAME", "REMOVE", "REORGANIZE", "REPEATABLE", 
			"REPLICA", "REQUEST_MAX_CPU_TIME_SEC", "REQUEST_MAX_MEMORY_GRANT_PERCENT", 
			"REQUEST_MEMORY_GRANT_TIMEOUT_SEC", "REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT", 
			"RESERVE_DISK_SPACE", "RESOURCE", "RESOURCE_MANAGER_LOCATION", "RESTRICTED_USER", 
			"RETENTION", "ROBUST", "ROOT", "ROUTE", "ROW", "ROW_NUMBER", "ROWGUID", 
			"ROWS", "SAMPLE", "SCHEMABINDING", "SCOPED", "SCROLL", "SCROLL_LOCKS", 
			"SEARCH", "SECONDARY", "SECONDARY_ONLY", "SECONDARY_ROLE", "SECONDS", 
			"SECRET", "SECURITY_LOG", "SEEDING_MODE", "SELF", "SEMI_SENSITIVE", "SEND", 
			"SENT", "SERIALIZABLE", "SESSION_TIMEOUT", "SETERROR", "SHARE", "SHOWPLAN", 
			"SIGNATURE", "SIMPLE", "SINGLE_USER", "SIZE", "SMALLINT", "SNAPSHOT", 
			"SPATIAL_WINDOW_MAX_CELLS", "STANDBY", "START_DATE", "STATIC", "STATS_STREAM", 
			"STATUS", "STDEV", "STDEVP", "STOPLIST", "STUFF", "SUBJECT", "SUM", "SUSPEND", 
			"SYMMETRIC", "SYNCHRONOUS_COMMIT", "SYNONYM", "TAKE", "TARGET_RECOVERY_TIME", 
			"TB", "TEXTIMAGE_ON", "THROW", "TIES", "TIME", "TIMEOUT", "TIMER", "TINYINT", 
			"TORN_PAGE_DETECTION", "TRANSFORM_NOISE_WORDS", "TRIPLE_DES", "TRIPLE_DES_3KEY", 
			"TRUSTWORTHY", "TRY", "TSQL", "TWO_DIGIT_YEAR_CUTOFF", "TYPE", "TYPE_WARNING", 
			"UNBOUNDED", "UNCOMMITTED", "UNKNOWN", "UNLIMITED", "USING", "VALID_XML", 
			"VALIDATION", "VALUE", "VAR", "VARP", "VIEW_METADATA", "VIEWS", "WAIT", 
			"WELL_FORMED_XML", "WITHOUT_ARRAY_WRAPPER", "WORK", "WORKLOAD", "XML", 
			"XMLDATA", "XMLNAMESPACES", "XMLSCHEMA", "XSINIL", "DOLLAR_ACTION", "SPACE", 
			"COMMENT", "LINE_COMMENT", "DOUBLE_QUOTE_ID", "SINGLE_QUOTE", "SQUARE_BRACKET_ID", 
			"LOCAL_ID", "DECIMAL", "ID", "QUOTED_URL", "QUOTED_HOST_AND_PORT", "STRING", 
			"BINARY", "FLOAT", "REAL", "EQUAL", "GREATER", "LESS", "EXCLAMATION", 
			"PLUS_ASSIGN", "MINUS_ASSIGN", "MULT_ASSIGN", "DIV_ASSIGN", "MOD_ASSIGN", 
			"AND_ASSIGN", "XOR_ASSIGN", "OR_ASSIGN", "DOUBLE_BAR", "DOT", "UNDERLINE", 
			"AT", "SHARP", "DOLLAR", "LR_BRACKET", "RR_BRACKET", "COMMA", "SEMI", 
			"COLON", "STAR", "DIVIDE", "MODULE", "PLUS", "MINUS", "BIT_NOT", "BIT_OR", 
			"BIT_AND", "BIT_XOR", "IPV4_OCTECT"
		};
	}
	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 "TSqlParser.g4"; }

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

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

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

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

	public static class Tsql_fileContext extends ParserRuleContext {
		public TerminalNode EOF() { return getToken(TSqlParser.EOF, 0); }
		public List batch() {
			return getRuleContexts(BatchContext.class);
		}
		public BatchContext batch(int i) {
			return getRuleContext(BatchContext.class,i);
		}
		public Tsql_fileContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_tsql_file; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterTsql_file(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitTsql_file(this);
		}
	}

	public final Tsql_fileContext tsql_file() throws RecognitionException {
		Tsql_fileContext _localctx = new Tsql_fileContext(_ctx, getState());
		enterRule(_localctx, 0, RULE_tsql_file);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(965);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ALTER) | (1L << BACKUP) | (1L << BEGIN) | (1L << BLOCKING_HIERARCHY) | (1L << BREAK) | (1L << CALLED) | (1L << CASE) | (1L << CLOSE) | (1L << COALESCE) | (1L << COMMIT))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (CONTINUE - 64)) | (1L << (CONVERT - 64)) | (1L << (CREATE - 64)) | (1L << (CURRENT_TIMESTAMP - 64)) | (1L << (CURRENT_USER - 64)) | (1L << (DATA_COMPRESSION - 64)) | (1L << (DBCC - 64)) | (1L << (DEALLOCATE - 64)) | (1L << (DECLARE - 64)) | (1L << (DEFAULT - 64)) | (1L << (DELETE - 64)) | (1L << (DROP - 64)) | (1L << (END - 64)) | (1L << (EVENTDATA - 64)) | (1L << (EXECUTE - 64)) | (1L << (FETCH - 64)))) != 0) || ((((_la - 129)) & ~0x3f) == 0 && ((1L << (_la - 129)) & ((1L << (FILENAME - 129)) | (1L << (FILLFACTOR - 129)) | (1L << (FORCESEEK - 129)) | (1L << (GET - 129)) | (1L << (GOTO - 129)) | (1L << (GRANT - 129)) | (1L << (IDENTITY - 129)) | (1L << (IF - 129)) | (1L << (IIF - 129)) | (1L << (INIT - 129)) | (1L << (INSERT - 129)) | (1L << (ISNULL - 129)) | (1L << (KEY - 129)) | (1L << (LEFT - 129)) | (1L << (MASTER - 129)) | (1L << (MAX_MEMORY - 129)))) != 0) || ((((_la - 200)) & ~0x3f) == 0 && ((1L << (_la - 200)) & ((1L << (MERGE - 200)) | (1L << (NULL - 200)) | (1L << (NULLIF - 200)) | (1L << (OFFSETS - 200)) | (1L << (OPEN - 200)) | (1L << (OVER - 200)) | (1L << (PAGE - 200)) | (1L << (PRINT - 200)) | (1L << (PUBLIC - 200)) | (1L << (R - 200)) | (1L << (RAISERROR - 200)))) != 0) || ((((_la - 264)) & ~0x3f) == 0 && ((1L << (_la - 264)) & ((1L << (RAW - 264)) | (1L << (RETURN - 264)) | (1L << (RETURNS - 264)) | (1L << (REVERT - 264)) | (1L << (RIGHT - 264)) | (1L << (ROLLBACK - 264)) | (1L << (ROWCOUNT - 264)) | (1L << (SAFETY - 264)) | (1L << (SAVE - 264)) | (1L << (SELECT - 264)) | (1L << (SERVER - 264)) | (1L << (SESSION_USER - 264)) | (1L << (SET - 264)) | (1L << (SETUSER - 264)) | (1L << (SID - 264)) | (1L << (SOURCE - 264)))) != 0) || ((((_la - 330)) & ~0x3f) == 0 && ((1L << (_la - 330)) & ((1L << (STATE - 330)) | (1L << (START - 330)) | (1L << (SYSTEM_USER - 330)) | (1L << (TARGET - 330)) | (1L << (TRUNCATE - 330)) | (1L << (UPDATE - 330)) | (1L << (USE - 330)) | (1L << (WAITFOR - 330)) | (1L << (WHILE - 330)) | (1L << (WITH - 330)) | (1L << (ABSOLUTE - 330)) | (1L << (ACCENT_SENSITIVITY - 330)) | (1L << (ACTION - 330)) | (1L << (ACTIVATION - 330)) | (1L << (ACTIVE - 330)) | (1L << (ADDRESS - 330)) | (1L << (AES_128 - 330)) | (1L << (AES_192 - 330)) | (1L << (AES_256 - 330)) | (1L << (AFFINITY - 330)))) != 0) || ((((_la - 394)) & ~0x3f) == 0 && ((1L << (_la - 394)) & ((1L << (AFTER - 394)) | (1L << (AGGREGATE - 394)) | (1L << (ALGORITHM - 394)) | (1L << (ALLOW_ENCRYPTED_VALUE_MODIFICATIONS - 394)) | (1L << (ALLOW_SNAPSHOT_ISOLATION - 394)) | (1L << (ALLOWED - 394)) | (1L << (ANSI_NULL_DEFAULT - 394)) | (1L << (ANSI_NULLS - 394)) | (1L << (ANSI_PADDING - 394)) | (1L << (ANSI_WARNINGS - 394)) | (1L << (APPLICATION_LOG - 394)) | (1L << (APPLY - 394)) | (1L << (ARITHABORT - 394)) | (1L << (ASSEMBLY - 394)) | (1L << (AUDIT - 394)) | (1L << (AUDIT_GUID - 394)) | (1L << (AUTO - 394)) | (1L << (AUTO_CLEANUP - 394)) | (1L << (AUTO_CLOSE - 394)) | (1L << (AUTO_CREATE_STATISTICS - 394)) | (1L << (AUTO_SHRINK - 394)) | (1L << (AUTO_UPDATE_STATISTICS - 394)) | (1L << (AUTO_UPDATE_STATISTICS_ASYNC - 394)) | (1L << (AVAILABILITY - 394)) | (1L << (AVG - 394)) | (1L << (BACKUP_PRIORITY - 394)) | (1L << (BEGIN_DIALOG - 394)) | (1L << (BIGINT - 394)) | (1L << (BINARY_BASE64 - 394)) | (1L << (BINARY_CHECKSUM - 394)) | (1L << (BINDING - 394)) | (1L << (BLOB_STORAGE - 394)) | (1L << (BROKER - 394)) | (1L << (BROKER_INSTANCE - 394)) | (1L << (BULK_LOGGED - 394)) | (1L << (CALLER - 394)) | (1L << (CAP_CPU_PERCENT - 394)) | (1L << (CAST - 394)) | (1L << (CATALOG - 394)) | (1L << (CATCH - 394)) | (1L << (CHANGE_RETENTION - 394)) | (1L << (CHANGE_TRACKING - 394)) | (1L << (CHECKSUM - 394)) | (1L << (CHECKSUM_AGG - 394)) | (1L << (CLEANUP - 394)) | (1L << (COLLECTION - 394)) | (1L << (COLUMN_MASTER_KEY - 394)) | (1L << (COMMITTED - 394)) | (1L << (COMPATIBILITY_LEVEL - 394)) | (1L << (CONCAT - 394)) | (1L << (CONCAT_NULL_YIELDS_NULL - 394)) | (1L << (CONTENT - 394)) | (1L << (CONTROL - 394)) | (1L << (COOKIE - 394)) | (1L << (COUNT - 394)) | (1L << (COUNT_BIG - 394)) | (1L << (COUNTER - 394)) | (1L << (CPU - 394)) | (1L << (CREATE_NEW - 394)) | (1L << (CREATION_DISPOSITION - 394)) | (1L << (CREDENTIAL - 394)) | (1L << (CRYPTOGRAPHIC - 394)) | (1L << (CURSOR_CLOSE_ON_COMMIT - 394)) | (1L << (CURSOR_DEFAULT - 394)))) != 0) || ((((_la - 458)) & ~0x3f) == 0 && ((1L << (_la - 458)) & ((1L << (DATE_CORRELATION_OPTIMIZATION - 458)) | (1L << (DATEADD - 458)) | (1L << (DATEDIFF - 458)) | (1L << (DATENAME - 458)) | (1L << (DATEPART - 458)) | (1L << (DAYS - 458)) | (1L << (DB_CHAINING - 458)) | (1L << (DB_FAILOVER - 458)) | (1L << (DECRYPTION - 458)) | (1L << (DEFAULT_DOUBLE_QUOTE - 458)) | (1L << (DEFAULT_FULLTEXT_LANGUAGE - 458)) | (1L << (DEFAULT_LANGUAGE - 458)) | (1L << (DELAY - 458)) | (1L << (DELAYED_DURABILITY - 458)) | (1L << (DELETED - 458)) | (1L << (DENSE_RANK - 458)) | (1L << (DEPENDENTS - 458)) | (1L << (DES - 458)) | (1L << (DESCRIPTION - 458)) | (1L << (DESX - 458)) | (1L << (DHCP - 458)) | (1L << (DIALOG - 458)) | (1L << (DIRECTORY_NAME - 458)) | (1L << (DISABLE - 458)) | (1L << (DISABLE_BROKER - 458)) | (1L << (DISABLED - 458)) | (1L << (DISK_DRIVE - 458)) | (1L << (DOCUMENT - 458)) | (1L << (DYNAMIC - 458)) | (1L << (EMERGENCY - 458)) | (1L << (EMPTY - 458)) | (1L << (ENABLE - 458)) | (1L << (ENABLE_BROKER - 458)) | (1L << (ENCRYPTED_VALUE - 458)) | (1L << (ENCRYPTION - 458)) | (1L << (ENDPOINT_URL - 458)) | (1L << (ERROR_BROKER_CONVERSATIONS - 458)) | (1L << (EXCLUSIVE - 458)) | (1L << (EXECUTABLE - 458)) | (1L << (EXIST - 458)) | (1L << (EXPAND - 458)) | (1L << (EXPIRY_DATE - 458)) | (1L << (EXPLICIT - 458)) | (1L << (FAIL_OPERATION - 458)) | (1L << (FAILOVER_MODE - 458)) | (1L << (FAILURE - 458)) | (1L << (FAILURE_CONDITION_LEVEL - 458)) | (1L << (FAST - 458)) | (1L << (FAST_FORWARD - 458)) | (1L << (FILEGROUP - 458)) | (1L << (FILEGROWTH - 458)) | (1L << (FILEPATH - 458)) | (1L << (FILESTREAM - 458)) | (1L << (FILTER - 458)) | (1L << (FIRST - 458)) | (1L << (FIRST_VALUE - 458)) | (1L << (FOLLOWING - 458)) | (1L << (FORCE - 458)) | (1L << (FORCE_FAILOVER_ALLOW_DATA_LOSS - 458)) | (1L << (FORCED - 458)) | (1L << (FORMAT - 458)) | (1L << (FORWARD_ONLY - 458)) | (1L << (FULLSCAN - 458)))) != 0) || ((((_la - 522)) & ~0x3f) == 0 && ((1L << (_la - 522)) & ((1L << (FULLTEXT - 522)) | (1L << (GB - 522)) | (1L << (GETDATE - 522)) | (1L << (GETUTCDATE - 522)) | (1L << (GLOBAL - 522)) | (1L << (GO - 522)) | (1L << (GROUP_MAX_REQUESTS - 522)) | (1L << (GROUPING - 522)) | (1L << (GROUPING_ID - 522)) | (1L << (HADR - 522)) | (1L << (HASH - 522)) | (1L << (HEALTH_CHECK_TIMEOUT - 522)) | (1L << (HIGH - 522)) | (1L << (HONOR_BROKER_PRIORITY - 522)) | (1L << (HOURS - 522)) | (1L << (IDENTITY_VALUE - 522)) | (1L << (IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX - 522)) | (1L << (IMMEDIATE - 522)) | (1L << (IMPERSONATE - 522)) | (1L << (IMPORTANCE - 522)) | (1L << (INCREMENTAL - 522)) | (1L << (INITIATOR - 522)) | (1L << (INPUT - 522)) | (1L << (INSENSITIVE - 522)) | (1L << (INSERTED - 522)) | (1L << (INT - 522)) | (1L << (IP - 522)) | (1L << (ISOLATION - 522)) | (1L << (KB - 522)) | (1L << (KEEP - 522)) | (1L << (KEEPFIXED - 522)) | (1L << (KEY_SOURCE - 522)) | (1L << (KEYS - 522)) | (1L << (KEYSET - 522)) | (1L << (LAG - 522)) | (1L << (LAST - 522)) | (1L << (LAST_VALUE - 522)) | (1L << (LEAD - 522)) | (1L << (LEVEL - 522)) | (1L << (LIST - 522)) | (1L << (LISTENER - 522)) | (1L << (LISTENER_URL - 522)) | (1L << (LOB_COMPACTION - 522)) | (1L << (LOCAL - 522)) | (1L << (LOCATION - 522)) | (1L << (LOCK - 522)) | (1L << (LOCK_ESCALATION - 522)) | (1L << (LOGIN - 522)) | (1L << (LOOP - 522)) | (1L << (LOW - 522)) | (1L << (MANUAL - 522)) | (1L << (MARK - 522)) | (1L << (MATERIALIZED - 522)) | (1L << (MAX - 522)) | (1L << (MAX_CPU_PERCENT - 522)) | (1L << (MAX_DOP - 522)) | (1L << (MAX_FILES - 522)) | (1L << (MAX_IOPS_PER_VOLUME - 522)) | (1L << (MAX_MEMORY_PERCENT - 522)) | (1L << (MAX_PROCESSES - 522)) | (1L << (MAX_QUEUE_READERS - 522)) | (1L << (MAX_ROLLOVER_FILES - 522)))) != 0) || ((((_la - 586)) & ~0x3f) == 0 && ((1L << (_la - 586)) & ((1L << (MAXDOP - 586)) | (1L << (MAXRECURSION - 586)) | (1L << (MAXSIZE - 586)) | (1L << (MB - 586)) | (1L << (MEDIUM - 586)) | (1L << (MEMORY_OPTIMIZED_DATA - 586)) | (1L << (MESSAGE - 586)) | (1L << (MIN - 586)) | (1L << (MIN_ACTIVE_ROWVERSION - 586)) | (1L << (MIN_CPU_PERCENT - 586)) | (1L << (MIN_IOPS_PER_VOLUME - 586)) | (1L << (MIN_MEMORY_PERCENT - 586)) | (1L << (MINUTES - 586)) | (1L << (MIRROR_ADDRESS - 586)) | (1L << (MIXED_PAGE_ALLOCATION - 586)) | (1L << (MODE - 586)) | (1L << (MODIFY - 586)) | (1L << (MOVE - 586)) | (1L << (MULTI_USER - 586)) | (1L << (NAME - 586)) | (1L << (NESTED_TRIGGERS - 586)) | (1L << (NEW_ACCOUNT - 586)) | (1L << (NEW_BROKER - 586)) | (1L << (NEW_PASSWORD - 586)) | (1L << (NEXT - 586)) | (1L << (NO - 586)) | (1L << (NO_TRUNCATE - 586)) | (1L << (NO_WAIT - 586)) | (1L << (NOCOUNT - 586)) | (1L << (NODES - 586)) | (1L << (NOEXPAND - 586)) | (1L << (NON_TRANSACTED_ACCESS - 586)) | (1L << (NORECOMPUTE - 586)) | (1L << (NORECOVERY - 586)) | (1L << (NOWAIT - 586)) | (1L << (NTILE - 586)) | (1L << (NUMANODE - 586)) | (1L << (NUMBER - 586)) | (1L << (NUMERIC_ROUNDABORT - 586)) | (1L << (OBJECT - 586)) | (1L << (OFFLINE - 586)) | (1L << (OFFSET - 586)) | (1L << (OLD_ACCOUNT - 586)) | (1L << (ONLINE - 586)) | (1L << (ONLY - 586)) | (1L << (OPEN_EXISTING - 586)) | (1L << (OPTIMISTIC - 586)) | (1L << (OPTIMIZE - 586)) | (1L << (OUT - 586)) | (1L << (OUTPUT - 586)) | (1L << (OWNER - 586)) | (1L << (PAGE_VERIFY - 586)) | (1L << (PARAMETERIZATION - 586)) | (1L << (PARTITION - 586)) | (1L << (PARTITIONS - 586)) | (1L << (PARTNER - 586)) | (1L << (PATH - 586)) | (1L << (POISON_MESSAGE_HANDLING - 586)) | (1L << (POOL - 586)) | (1L << (PORT - 586)) | (1L << (PRECEDING - 586)) | (1L << (PRIMARY_ROLE - 586)) | (1L << (PRIOR - 586)) | (1L << (PRIORITY - 586)))) != 0) || ((((_la - 650)) & ~0x3f) == 0 && ((1L << (_la - 650)) & ((1L << (PRIORITY_LEVEL - 650)) | (1L << (PRIVATE - 650)) | (1L << (PRIVATE_KEY - 650)) | (1L << (PRIVILEGES - 650)) | (1L << (PROCEDURE_NAME - 650)) | (1L << (PROPERTY - 650)) | (1L << (PROVIDER - 650)) | (1L << (PROVIDER_KEY_NAME - 650)) | (1L << (QUERY - 650)) | (1L << (QUEUE - 650)) | (1L << (QUEUE_DELAY - 650)) | (1L << (QUOTED_IDENTIFIER - 650)) | (1L << (RANGE - 650)) | (1L << (RANK - 650)) | (1L << (RC2 - 650)) | (1L << (RC4 - 650)) | (1L << (RC4_128 - 650)) | (1L << (READ_COMMITTED_SNAPSHOT - 650)) | (1L << (READ_ONLY - 650)) | (1L << (READ_ONLY_ROUTING_LIST - 650)) | (1L << (READ_WRITE - 650)) | (1L << (READONLY - 650)) | (1L << (REBUILD - 650)) | (1L << (RECEIVE - 650)) | (1L << (RECOMPILE - 650)) | (1L << (RECOVERY - 650)) | (1L << (RECURSIVE_TRIGGERS - 650)) | (1L << (RELATIVE - 650)) | (1L << (REMOTE - 650)) | (1L << (REMOTE_SERVICE_NAME - 650)) | (1L << (REMOVE - 650)) | (1L << (REORGANIZE - 650)) | (1L << (REPEATABLE - 650)) | (1L << (REPLICA - 650)) | (1L << (REQUEST_MAX_CPU_TIME_SEC - 650)) | (1L << (REQUEST_MAX_MEMORY_GRANT_PERCENT - 650)) | (1L << (REQUEST_MEMORY_GRANT_TIMEOUT_SEC - 650)) | (1L << (REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT - 650)) | (1L << (RESERVE_DISK_SPACE - 650)) | (1L << (RESOURCE - 650)) | (1L << (RESOURCE_MANAGER_LOCATION - 650)) | (1L << (RESTRICTED_USER - 650)) | (1L << (RETENTION - 650)) | (1L << (ROBUST - 650)) | (1L << (ROOT - 650)) | (1L << (ROUTE - 650)) | (1L << (ROW - 650)) | (1L << (ROW_NUMBER - 650)) | (1L << (ROWGUID - 650)) | (1L << (ROWS - 650)) | (1L << (SAMPLE - 650)) | (1L << (SCHEMABINDING - 650)) | (1L << (SCOPED - 650)) | (1L << (SCROLL - 650)) | (1L << (SCROLL_LOCKS - 650)) | (1L << (SEARCH - 650)) | (1L << (SECONDARY - 650)) | (1L << (SECONDARY_ONLY - 650)) | (1L << (SECONDARY_ROLE - 650)) | (1L << (SECONDS - 650)) | (1L << (SECRET - 650)) | (1L << (SECURITY_LOG - 650)) | (1L << (SEEDING_MODE - 650)) | (1L << (SELF - 650)))) != 0) || ((((_la - 714)) & ~0x3f) == 0 && ((1L << (_la - 714)) & ((1L << (SEMI_SENSITIVE - 714)) | (1L << (SEND - 714)) | (1L << (SENT - 714)) | (1L << (SERIALIZABLE - 714)) | (1L << (SESSION_TIMEOUT - 714)) | (1L << (SETERROR - 714)) | (1L << (SHARE - 714)) | (1L << (SHOWPLAN - 714)) | (1L << (SIGNATURE - 714)) | (1L << (SIMPLE - 714)) | (1L << (SINGLE_USER - 714)) | (1L << (SIZE - 714)) | (1L << (SMALLINT - 714)) | (1L << (SNAPSHOT - 714)) | (1L << (SPATIAL_WINDOW_MAX_CELLS - 714)) | (1L << (STANDBY - 714)) | (1L << (START_DATE - 714)) | (1L << (STATIC - 714)) | (1L << (STATS_STREAM - 714)) | (1L << (STATUS - 714)) | (1L << (STDEV - 714)) | (1L << (STDEVP - 714)) | (1L << (STOPLIST - 714)) | (1L << (STUFF - 714)) | (1L << (SUBJECT - 714)) | (1L << (SUM - 714)) | (1L << (SUSPEND - 714)) | (1L << (SYMMETRIC - 714)) | (1L << (SYNCHRONOUS_COMMIT - 714)) | (1L << (SYNONYM - 714)) | (1L << (TAKE - 714)) | (1L << (TARGET_RECOVERY_TIME - 714)) | (1L << (TB - 714)) | (1L << (TEXTIMAGE_ON - 714)) | (1L << (THROW - 714)) | (1L << (TIES - 714)) | (1L << (TIME - 714)) | (1L << (TIMEOUT - 714)) | (1L << (TIMER - 714)) | (1L << (TINYINT - 714)) | (1L << (TORN_PAGE_DETECTION - 714)) | (1L << (TRANSFORM_NOISE_WORDS - 714)) | (1L << (TRIPLE_DES - 714)) | (1L << (TRIPLE_DES_3KEY - 714)) | (1L << (TRUSTWORTHY - 714)) | (1L << (TRY - 714)) | (1L << (TSQL - 714)) | (1L << (TWO_DIGIT_YEAR_CUTOFF - 714)) | (1L << (TYPE - 714)) | (1L << (TYPE_WARNING - 714)) | (1L << (UNBOUNDED - 714)) | (1L << (UNCOMMITTED - 714)) | (1L << (UNKNOWN - 714)) | (1L << (UNLIMITED - 714)) | (1L << (USING - 714)) | (1L << (VALID_XML - 714)) | (1L << (VALIDATION - 714)) | (1L << (VALUE - 714)) | (1L << (VAR - 714)) | (1L << (VARP - 714)) | (1L << (VIEW_METADATA - 714)) | (1L << (VIEWS - 714)) | (1L << (WAIT - 714)) | (1L << (WELL_FORMED_XML - 714)))) != 0) || ((((_la - 779)) & ~0x3f) == 0 && ((1L << (_la - 779)) & ((1L << (WORK - 779)) | (1L << (WORKLOAD - 779)) | (1L << (XML - 779)) | (1L << (XMLNAMESPACES - 779)) | (1L << (DOUBLE_QUOTE_ID - 779)) | (1L << (SQUARE_BRACKET_ID - 779)) | (1L << (LOCAL_ID - 779)) | (1L << (DECIMAL - 779)) | (1L << (ID - 779)) | (1L << (STRING - 779)) | (1L << (BINARY - 779)) | (1L << (FLOAT - 779)) | (1L << (REAL - 779)) | (1L << (DOLLAR - 779)) | (1L << (LR_BRACKET - 779)) | (1L << (SEMI - 779)) | (1L << (PLUS - 779)) | (1L << (MINUS - 779)) | (1L << (BIT_NOT - 779)))) != 0)) {
				{
				{
				setState(962);
				batch();
				}
				}
				setState(967);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			setState(968);
			match(EOF);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class BatchContext extends ParserRuleContext {
		public Execute_bodyContext execute_body() {
			return getRuleContext(Execute_bodyContext.class,0);
		}
		public List go_statement() {
			return getRuleContexts(Go_statementContext.class);
		}
		public Go_statementContext go_statement(int i) {
			return getRuleContext(Go_statementContext.class,i);
		}
		public Sql_clausesContext sql_clauses() {
			return getRuleContext(Sql_clausesContext.class,0);
		}
		public BatchContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_batch; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterBatch(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitBatch(this);
		}
	}

	public final BatchContext batch() throws RecognitionException {
		BatchContext _localctx = new BatchContext(_ctx, getState());
		enterRule(_localctx, 2, RULE_batch);
		try {
			int _alt;
			setState(987);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,4,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(970);
				execute_body();
				setState(974);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,1,_ctx);
				while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
					if ( _alt==1 ) {
						{
						{
						setState(971);
						go_statement();
						}
						} 
					}
					setState(976);
					_errHandler.sync(this);
					_alt = getInterpreter().adaptivePredict(_input,1,_ctx);
				}
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(978);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,2,_ctx) ) {
				case 1:
					{
					setState(977);
					execute_body();
					}
					break;
				}
				setState(980);
				sql_clauses();
				setState(984);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,3,_ctx);
				while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
					if ( _alt==1 ) {
						{
						{
						setState(981);
						go_statement();
						}
						} 
					}
					setState(986);
					_errHandler.sync(this);
					_alt = getInterpreter().adaptivePredict(_input,3,_ctx);
				}
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Sql_clausesContext extends ParserRuleContext {
		public List sql_clause() {
			return getRuleContexts(Sql_clauseContext.class);
		}
		public Sql_clauseContext sql_clause(int i) {
			return getRuleContext(Sql_clauseContext.class,i);
		}
		public List SEMI() { return getTokens(TSqlParser.SEMI); }
		public TerminalNode SEMI(int i) {
			return getToken(TSqlParser.SEMI, i);
		}
		public Sql_clausesContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_sql_clauses; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterSql_clauses(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitSql_clauses(this);
		}
	}

	public final Sql_clausesContext sql_clauses() throws RecognitionException {
		Sql_clausesContext _localctx = new Sql_clausesContext(_ctx, getState());
		enterRule(_localctx, 4, RULE_sql_clauses);
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			setState(993); 
			_errHandler.sync(this);
			_alt = 1;
			do {
				switch (_alt) {
				case 1:
					{
					{
					setState(989);
					sql_clause();
					setState(991);
					_errHandler.sync(this);
					switch ( getInterpreter().adaptivePredict(_input,5,_ctx) ) {
					case 1:
						{
						setState(990);
						match(SEMI);
						}
						break;
					}
					}
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				setState(995); 
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,6,_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 Sql_clauseContext extends ParserRuleContext {
		public Dml_clauseContext dml_clause() {
			return getRuleContext(Dml_clauseContext.class,0);
		}
		public Ddl_clauseContext ddl_clause() {
			return getRuleContext(Ddl_clauseContext.class,0);
		}
		public Cfl_statementContext cfl_statement() {
			return getRuleContext(Cfl_statementContext.class,0);
		}
		public Dbcc_clauseContext dbcc_clause() {
			return getRuleContext(Dbcc_clauseContext.class,0);
		}
		public Empty_statementContext empty_statement() {
			return getRuleContext(Empty_statementContext.class,0);
		}
		public Another_statementContext another_statement() {
			return getRuleContext(Another_statementContext.class,0);
		}
		public Backup_statementContext backup_statement() {
			return getRuleContext(Backup_statementContext.class,0);
		}
		public Sql_clauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_sql_clause; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterSql_clause(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitSql_clause(this);
		}
	}

	public final Sql_clauseContext sql_clause() throws RecognitionException {
		Sql_clauseContext _localctx = new Sql_clauseContext(_ctx, getState());
		enterRule(_localctx, 6, RULE_sql_clause);
		try {
			setState(1004);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,7,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(997);
				dml_clause();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(998);
				ddl_clause();
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(999);
				cfl_statement();
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(1000);
				dbcc_clause();
				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(1001);
				empty_statement();
				}
				break;
			case 6:
				enterOuterAlt(_localctx, 6);
				{
				setState(1002);
				another_statement();
				}
				break;
			case 7:
				enterOuterAlt(_localctx, 7);
				{
				setState(1003);
				backup_statement();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Dml_clauseContext extends ParserRuleContext {
		public Merge_statementContext merge_statement() {
			return getRuleContext(Merge_statementContext.class,0);
		}
		public Delete_statementContext delete_statement() {
			return getRuleContext(Delete_statementContext.class,0);
		}
		public Insert_statementContext insert_statement() {
			return getRuleContext(Insert_statementContext.class,0);
		}
		public Select_statementContext select_statement() {
			return getRuleContext(Select_statementContext.class,0);
		}
		public Update_statementContext update_statement() {
			return getRuleContext(Update_statementContext.class,0);
		}
		public Dml_clauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_dml_clause; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterDml_clause(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitDml_clause(this);
		}
	}

	public final Dml_clauseContext dml_clause() throws RecognitionException {
		Dml_clauseContext _localctx = new Dml_clauseContext(_ctx, getState());
		enterRule(_localctx, 8, RULE_dml_clause);
		try {
			setState(1011);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,8,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(1006);
				merge_statement();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(1007);
				delete_statement();
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(1008);
				insert_statement();
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(1009);
				select_statement();
				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(1010);
				update_statement();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Ddl_clauseContext extends ParserRuleContext {
		public Alter_application_roleContext alter_application_role() {
			return getRuleContext(Alter_application_roleContext.class,0);
		}
		public Alter_assemblyContext alter_assembly() {
			return getRuleContext(Alter_assemblyContext.class,0);
		}
		public Alter_asymmetric_keyContext alter_asymmetric_key() {
			return getRuleContext(Alter_asymmetric_keyContext.class,0);
		}
		public Alter_authorizationContext alter_authorization() {
			return getRuleContext(Alter_authorizationContext.class,0);
		}
		public Alter_authorization_for_azure_dwContext alter_authorization_for_azure_dw() {
			return getRuleContext(Alter_authorization_for_azure_dwContext.class,0);
		}
		public Alter_authorization_for_parallel_dwContext alter_authorization_for_parallel_dw() {
			return getRuleContext(Alter_authorization_for_parallel_dwContext.class,0);
		}
		public Alter_authorization_for_sql_databaseContext alter_authorization_for_sql_database() {
			return getRuleContext(Alter_authorization_for_sql_databaseContext.class,0);
		}
		public Alter_availability_groupContext alter_availability_group() {
			return getRuleContext(Alter_availability_groupContext.class,0);
		}
		public Alter_certificateContext alter_certificate() {
			return getRuleContext(Alter_certificateContext.class,0);
		}
		public Alter_column_encryption_keyContext alter_column_encryption_key() {
			return getRuleContext(Alter_column_encryption_keyContext.class,0);
		}
		public Alter_credentialContext alter_credential() {
			return getRuleContext(Alter_credentialContext.class,0);
		}
		public Alter_cryptographic_providerContext alter_cryptographic_provider() {
			return getRuleContext(Alter_cryptographic_providerContext.class,0);
		}
		public Alter_databaseContext alter_database() {
			return getRuleContext(Alter_databaseContext.class,0);
		}
		public Alter_db_roleContext alter_db_role() {
			return getRuleContext(Alter_db_roleContext.class,0);
		}
		public Alter_endpointContext alter_endpoint() {
			return getRuleContext(Alter_endpointContext.class,0);
		}
		public Create_or_alter_event_sessionContext create_or_alter_event_session() {
			return getRuleContext(Create_or_alter_event_sessionContext.class,0);
		}
		public Alter_external_data_sourceContext alter_external_data_source() {
			return getRuleContext(Alter_external_data_sourceContext.class,0);
		}
		public Alter_external_libraryContext alter_external_library() {
			return getRuleContext(Alter_external_libraryContext.class,0);
		}
		public Alter_external_resource_poolContext alter_external_resource_pool() {
			return getRuleContext(Alter_external_resource_poolContext.class,0);
		}
		public Alter_fulltext_catalogContext alter_fulltext_catalog() {
			return getRuleContext(Alter_fulltext_catalogContext.class,0);
		}
		public Alter_fulltext_stoplistContext alter_fulltext_stoplist() {
			return getRuleContext(Alter_fulltext_stoplistContext.class,0);
		}
		public Alter_login_azure_sqlContext alter_login_azure_sql() {
			return getRuleContext(Alter_login_azure_sqlContext.class,0);
		}
		public Alter_login_azure_sql_dw_and_pdwContext alter_login_azure_sql_dw_and_pdw() {
			return getRuleContext(Alter_login_azure_sql_dw_and_pdwContext.class,0);
		}
		public Alter_login_sql_serverContext alter_login_sql_server() {
			return getRuleContext(Alter_login_sql_serverContext.class,0);
		}
		public Alter_master_key_azure_sqlContext alter_master_key_azure_sql() {
			return getRuleContext(Alter_master_key_azure_sqlContext.class,0);
		}
		public Alter_master_key_sql_serverContext alter_master_key_sql_server() {
			return getRuleContext(Alter_master_key_sql_serverContext.class,0);
		}
		public Alter_message_typeContext alter_message_type() {
			return getRuleContext(Alter_message_typeContext.class,0);
		}
		public Alter_partition_functionContext alter_partition_function() {
			return getRuleContext(Alter_partition_functionContext.class,0);
		}
		public Alter_partition_schemeContext alter_partition_scheme() {
			return getRuleContext(Alter_partition_schemeContext.class,0);
		}
		public Alter_remote_service_bindingContext alter_remote_service_binding() {
			return getRuleContext(Alter_remote_service_bindingContext.class,0);
		}
		public Alter_resource_governorContext alter_resource_governor() {
			return getRuleContext(Alter_resource_governorContext.class,0);
		}
		public Alter_schema_azure_sql_dw_and_pdwContext alter_schema_azure_sql_dw_and_pdw() {
			return getRuleContext(Alter_schema_azure_sql_dw_and_pdwContext.class,0);
		}
		public Alter_schema_sqlContext alter_schema_sql() {
			return getRuleContext(Alter_schema_sqlContext.class,0);
		}
		public Alter_sequenceContext alter_sequence() {
			return getRuleContext(Alter_sequenceContext.class,0);
		}
		public Alter_server_auditContext alter_server_audit() {
			return getRuleContext(Alter_server_auditContext.class,0);
		}
		public Alter_server_audit_specificationContext alter_server_audit_specification() {
			return getRuleContext(Alter_server_audit_specificationContext.class,0);
		}
		public Alter_server_configurationContext alter_server_configuration() {
			return getRuleContext(Alter_server_configurationContext.class,0);
		}
		public Alter_server_roleContext alter_server_role() {
			return getRuleContext(Alter_server_roleContext.class,0);
		}
		public Alter_server_role_pdwContext alter_server_role_pdw() {
			return getRuleContext(Alter_server_role_pdwContext.class,0);
		}
		public Alter_serviceContext alter_service() {
			return getRuleContext(Alter_serviceContext.class,0);
		}
		public Alter_service_master_keyContext alter_service_master_key() {
			return getRuleContext(Alter_service_master_keyContext.class,0);
		}
		public Alter_symmetric_keyContext alter_symmetric_key() {
			return getRuleContext(Alter_symmetric_keyContext.class,0);
		}
		public Alter_tableContext alter_table() {
			return getRuleContext(Alter_tableContext.class,0);
		}
		public Alter_userContext alter_user() {
			return getRuleContext(Alter_userContext.class,0);
		}
		public Alter_user_azure_sqlContext alter_user_azure_sql() {
			return getRuleContext(Alter_user_azure_sqlContext.class,0);
		}
		public Alter_workload_groupContext alter_workload_group() {
			return getRuleContext(Alter_workload_groupContext.class,0);
		}
		public Create_application_roleContext create_application_role() {
			return getRuleContext(Create_application_roleContext.class,0);
		}
		public Create_assemblyContext create_assembly() {
			return getRuleContext(Create_assemblyContext.class,0);
		}
		public Create_asymmetric_keyContext create_asymmetric_key() {
			return getRuleContext(Create_asymmetric_keyContext.class,0);
		}
		public Create_column_encryption_keyContext create_column_encryption_key() {
			return getRuleContext(Create_column_encryption_keyContext.class,0);
		}
		public Create_column_master_keyContext create_column_master_key() {
			return getRuleContext(Create_column_master_keyContext.class,0);
		}
		public Create_credentialContext create_credential() {
			return getRuleContext(Create_credentialContext.class,0);
		}
		public Create_cryptographic_providerContext create_cryptographic_provider() {
			return getRuleContext(Create_cryptographic_providerContext.class,0);
		}
		public Create_databaseContext create_database() {
			return getRuleContext(Create_databaseContext.class,0);
		}
		public Create_db_roleContext create_db_role() {
			return getRuleContext(Create_db_roleContext.class,0);
		}
		public Create_event_notificationContext create_event_notification() {
			return getRuleContext(Create_event_notificationContext.class,0);
		}
		public Create_external_libraryContext create_external_library() {
			return getRuleContext(Create_external_libraryContext.class,0);
		}
		public Create_external_resource_poolContext create_external_resource_pool() {
			return getRuleContext(Create_external_resource_poolContext.class,0);
		}
		public Create_fulltext_catalogContext create_fulltext_catalog() {
			return getRuleContext(Create_fulltext_catalogContext.class,0);
		}
		public Create_fulltext_stoplistContext create_fulltext_stoplist() {
			return getRuleContext(Create_fulltext_stoplistContext.class,0);
		}
		public Create_indexContext create_index() {
			return getRuleContext(Create_indexContext.class,0);
		}
		public Create_login_azure_sqlContext create_login_azure_sql() {
			return getRuleContext(Create_login_azure_sqlContext.class,0);
		}
		public Create_login_pdwContext create_login_pdw() {
			return getRuleContext(Create_login_pdwContext.class,0);
		}
		public Create_login_sql_serverContext create_login_sql_server() {
			return getRuleContext(Create_login_sql_serverContext.class,0);
		}
		public Create_master_key_azure_sqlContext create_master_key_azure_sql() {
			return getRuleContext(Create_master_key_azure_sqlContext.class,0);
		}
		public Create_master_key_sql_serverContext create_master_key_sql_server() {
			return getRuleContext(Create_master_key_sql_serverContext.class,0);
		}
		public Create_or_alter_broker_priorityContext create_or_alter_broker_priority() {
			return getRuleContext(Create_or_alter_broker_priorityContext.class,0);
		}
		public Create_or_alter_functionContext create_or_alter_function() {
			return getRuleContext(Create_or_alter_functionContext.class,0);
		}
		public Create_or_alter_procedureContext create_or_alter_procedure() {
			return getRuleContext(Create_or_alter_procedureContext.class,0);
		}
		public Create_or_alter_triggerContext create_or_alter_trigger() {
			return getRuleContext(Create_or_alter_triggerContext.class,0);
		}
		public Create_remote_service_bindingContext create_remote_service_binding() {
			return getRuleContext(Create_remote_service_bindingContext.class,0);
		}
		public Create_resource_poolContext create_resource_pool() {
			return getRuleContext(Create_resource_poolContext.class,0);
		}
		public Create_routeContext create_route() {
			return getRuleContext(Create_routeContext.class,0);
		}
		public Create_ruleContext create_rule() {
			return getRuleContext(Create_ruleContext.class,0);
		}
		public Create_schemaContext create_schema() {
			return getRuleContext(Create_schemaContext.class,0);
		}
		public Create_schema_azure_sql_dw_and_pdwContext create_schema_azure_sql_dw_and_pdw() {
			return getRuleContext(Create_schema_azure_sql_dw_and_pdwContext.class,0);
		}
		public Create_search_property_listContext create_search_property_list() {
			return getRuleContext(Create_search_property_listContext.class,0);
		}
		public Create_security_policyContext create_security_policy() {
			return getRuleContext(Create_security_policyContext.class,0);
		}
		public Create_sequenceContext create_sequence() {
			return getRuleContext(Create_sequenceContext.class,0);
		}
		public Create_server_auditContext create_server_audit() {
			return getRuleContext(Create_server_auditContext.class,0);
		}
		public Create_server_audit_specificationContext create_server_audit_specification() {
			return getRuleContext(Create_server_audit_specificationContext.class,0);
		}
		public Create_server_roleContext create_server_role() {
			return getRuleContext(Create_server_roleContext.class,0);
		}
		public Create_serviceContext create_service() {
			return getRuleContext(Create_serviceContext.class,0);
		}
		public Create_statisticsContext create_statistics() {
			return getRuleContext(Create_statisticsContext.class,0);
		}
		public Create_symmetric_keyContext create_symmetric_key() {
			return getRuleContext(Create_symmetric_keyContext.class,0);
		}
		public Create_synonymContext create_synonym() {
			return getRuleContext(Create_synonymContext.class,0);
		}
		public Create_tableContext create_table() {
			return getRuleContext(Create_tableContext.class,0);
		}
		public Create_typeContext create_type() {
			return getRuleContext(Create_typeContext.class,0);
		}
		public Create_userContext create_user() {
			return getRuleContext(Create_userContext.class,0);
		}
		public Create_user_azure_sql_dwContext create_user_azure_sql_dw() {
			return getRuleContext(Create_user_azure_sql_dwContext.class,0);
		}
		public Create_viewContext create_view() {
			return getRuleContext(Create_viewContext.class,0);
		}
		public Create_workload_groupContext create_workload_group() {
			return getRuleContext(Create_workload_groupContext.class,0);
		}
		public Create_xml_schema_collectionContext create_xml_schema_collection() {
			return getRuleContext(Create_xml_schema_collectionContext.class,0);
		}
		public Drop_aggregateContext drop_aggregate() {
			return getRuleContext(Drop_aggregateContext.class,0);
		}
		public Drop_application_roleContext drop_application_role() {
			return getRuleContext(Drop_application_roleContext.class,0);
		}
		public Drop_assemblyContext drop_assembly() {
			return getRuleContext(Drop_assemblyContext.class,0);
		}
		public Drop_asymmetric_keyContext drop_asymmetric_key() {
			return getRuleContext(Drop_asymmetric_keyContext.class,0);
		}
		public Drop_availability_groupContext drop_availability_group() {
			return getRuleContext(Drop_availability_groupContext.class,0);
		}
		public Drop_broker_priorityContext drop_broker_priority() {
			return getRuleContext(Drop_broker_priorityContext.class,0);
		}
		public Drop_certificateContext drop_certificate() {
			return getRuleContext(Drop_certificateContext.class,0);
		}
		public Drop_column_encryption_keyContext drop_column_encryption_key() {
			return getRuleContext(Drop_column_encryption_keyContext.class,0);
		}
		public Drop_column_master_keyContext drop_column_master_key() {
			return getRuleContext(Drop_column_master_keyContext.class,0);
		}
		public Drop_contractContext drop_contract() {
			return getRuleContext(Drop_contractContext.class,0);
		}
		public Drop_credentialContext drop_credential() {
			return getRuleContext(Drop_credentialContext.class,0);
		}
		public Drop_cryptograhic_providerContext drop_cryptograhic_provider() {
			return getRuleContext(Drop_cryptograhic_providerContext.class,0);
		}
		public Drop_databaseContext drop_database() {
			return getRuleContext(Drop_databaseContext.class,0);
		}
		public Drop_database_audit_specificationContext drop_database_audit_specification() {
			return getRuleContext(Drop_database_audit_specificationContext.class,0);
		}
		public Drop_database_scoped_credentialContext drop_database_scoped_credential() {
			return getRuleContext(Drop_database_scoped_credentialContext.class,0);
		}
		public Drop_db_roleContext drop_db_role() {
			return getRuleContext(Drop_db_roleContext.class,0);
		}
		public Drop_defaultContext drop_default() {
			return getRuleContext(Drop_defaultContext.class,0);
		}
		public Drop_endpointContext drop_endpoint() {
			return getRuleContext(Drop_endpointContext.class,0);
		}
		public Drop_event_notificationsContext drop_event_notifications() {
			return getRuleContext(Drop_event_notificationsContext.class,0);
		}
		public Drop_event_sessionContext drop_event_session() {
			return getRuleContext(Drop_event_sessionContext.class,0);
		}
		public Drop_external_data_sourceContext drop_external_data_source() {
			return getRuleContext(Drop_external_data_sourceContext.class,0);
		}
		public Drop_external_file_formatContext drop_external_file_format() {
			return getRuleContext(Drop_external_file_formatContext.class,0);
		}
		public Drop_external_libraryContext drop_external_library() {
			return getRuleContext(Drop_external_libraryContext.class,0);
		}
		public Drop_external_resource_poolContext drop_external_resource_pool() {
			return getRuleContext(Drop_external_resource_poolContext.class,0);
		}
		public Drop_external_tableContext drop_external_table() {
			return getRuleContext(Drop_external_tableContext.class,0);
		}
		public Drop_fulltext_catalogContext drop_fulltext_catalog() {
			return getRuleContext(Drop_fulltext_catalogContext.class,0);
		}
		public Drop_fulltext_indexContext drop_fulltext_index() {
			return getRuleContext(Drop_fulltext_indexContext.class,0);
		}
		public Drop_fulltext_stoplistContext drop_fulltext_stoplist() {
			return getRuleContext(Drop_fulltext_stoplistContext.class,0);
		}
		public Drop_functionContext drop_function() {
			return getRuleContext(Drop_functionContext.class,0);
		}
		public Drop_indexContext drop_index() {
			return getRuleContext(Drop_indexContext.class,0);
		}
		public Drop_loginContext drop_login() {
			return getRuleContext(Drop_loginContext.class,0);
		}
		public Drop_master_keyContext drop_master_key() {
			return getRuleContext(Drop_master_keyContext.class,0);
		}
		public Drop_message_typeContext drop_message_type() {
			return getRuleContext(Drop_message_typeContext.class,0);
		}
		public Drop_partition_functionContext drop_partition_function() {
			return getRuleContext(Drop_partition_functionContext.class,0);
		}
		public Drop_partition_schemeContext drop_partition_scheme() {
			return getRuleContext(Drop_partition_schemeContext.class,0);
		}
		public Drop_procedureContext drop_procedure() {
			return getRuleContext(Drop_procedureContext.class,0);
		}
		public Drop_queueContext drop_queue() {
			return getRuleContext(Drop_queueContext.class,0);
		}
		public Drop_remote_service_bindingContext drop_remote_service_binding() {
			return getRuleContext(Drop_remote_service_bindingContext.class,0);
		}
		public Drop_resource_poolContext drop_resource_pool() {
			return getRuleContext(Drop_resource_poolContext.class,0);
		}
		public Drop_routeContext drop_route() {
			return getRuleContext(Drop_routeContext.class,0);
		}
		public Drop_ruleContext drop_rule() {
			return getRuleContext(Drop_ruleContext.class,0);
		}
		public Drop_schemaContext drop_schema() {
			return getRuleContext(Drop_schemaContext.class,0);
		}
		public Drop_search_property_listContext drop_search_property_list() {
			return getRuleContext(Drop_search_property_listContext.class,0);
		}
		public Drop_security_policyContext drop_security_policy() {
			return getRuleContext(Drop_security_policyContext.class,0);
		}
		public Drop_sequenceContext drop_sequence() {
			return getRuleContext(Drop_sequenceContext.class,0);
		}
		public Drop_server_auditContext drop_server_audit() {
			return getRuleContext(Drop_server_auditContext.class,0);
		}
		public Drop_server_audit_specificationContext drop_server_audit_specification() {
			return getRuleContext(Drop_server_audit_specificationContext.class,0);
		}
		public Drop_server_roleContext drop_server_role() {
			return getRuleContext(Drop_server_roleContext.class,0);
		}
		public Drop_serviceContext drop_service() {
			return getRuleContext(Drop_serviceContext.class,0);
		}
		public Drop_signatureContext drop_signature() {
			return getRuleContext(Drop_signatureContext.class,0);
		}
		public Drop_statisticsContext drop_statistics() {
			return getRuleContext(Drop_statisticsContext.class,0);
		}
		public Drop_statistics_name_azure_dw_and_pdwContext drop_statistics_name_azure_dw_and_pdw() {
			return getRuleContext(Drop_statistics_name_azure_dw_and_pdwContext.class,0);
		}
		public Drop_symmetric_keyContext drop_symmetric_key() {
			return getRuleContext(Drop_symmetric_keyContext.class,0);
		}
		public Drop_synonymContext drop_synonym() {
			return getRuleContext(Drop_synonymContext.class,0);
		}
		public Drop_tableContext drop_table() {
			return getRuleContext(Drop_tableContext.class,0);
		}
		public Drop_triggerContext drop_trigger() {
			return getRuleContext(Drop_triggerContext.class,0);
		}
		public Drop_typeContext drop_type() {
			return getRuleContext(Drop_typeContext.class,0);
		}
		public Drop_userContext drop_user() {
			return getRuleContext(Drop_userContext.class,0);
		}
		public Drop_viewContext drop_view() {
			return getRuleContext(Drop_viewContext.class,0);
		}
		public Drop_workload_groupContext drop_workload_group() {
			return getRuleContext(Drop_workload_groupContext.class,0);
		}
		public Drop_xml_schema_collectionContext drop_xml_schema_collection() {
			return getRuleContext(Drop_xml_schema_collectionContext.class,0);
		}
		public Disable_triggerContext disable_trigger() {
			return getRuleContext(Disable_triggerContext.class,0);
		}
		public Enable_triggerContext enable_trigger() {
			return getRuleContext(Enable_triggerContext.class,0);
		}
		public Lock_tableContext lock_table() {
			return getRuleContext(Lock_tableContext.class,0);
		}
		public Truncate_tableContext truncate_table() {
			return getRuleContext(Truncate_tableContext.class,0);
		}
		public Update_statisticsContext update_statistics() {
			return getRuleContext(Update_statisticsContext.class,0);
		}
		public Ddl_clauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_ddl_clause; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterDdl_clause(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitDdl_clause(this);
		}
	}

	public final Ddl_clauseContext ddl_clause() throws RecognitionException {
		Ddl_clauseContext _localctx = new Ddl_clauseContext(_ctx, getState());
		enterRule(_localctx, 10, RULE_ddl_clause);
		try {
			setState(1172);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,9,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(1013);
				alter_application_role();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(1014);
				alter_assembly();
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(1015);
				alter_asymmetric_key();
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(1016);
				alter_authorization();
				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(1017);
				alter_authorization_for_azure_dw();
				}
				break;
			case 6:
				enterOuterAlt(_localctx, 6);
				{
				setState(1018);
				alter_authorization_for_parallel_dw();
				}
				break;
			case 7:
				enterOuterAlt(_localctx, 7);
				{
				setState(1019);
				alter_authorization_for_sql_database();
				}
				break;
			case 8:
				enterOuterAlt(_localctx, 8);
				{
				setState(1020);
				alter_availability_group();
				}
				break;
			case 9:
				enterOuterAlt(_localctx, 9);
				{
				setState(1021);
				alter_certificate();
				}
				break;
			case 10:
				enterOuterAlt(_localctx, 10);
				{
				setState(1022);
				alter_column_encryption_key();
				}
				break;
			case 11:
				enterOuterAlt(_localctx, 11);
				{
				setState(1023);
				alter_credential();
				}
				break;
			case 12:
				enterOuterAlt(_localctx, 12);
				{
				setState(1024);
				alter_cryptographic_provider();
				}
				break;
			case 13:
				enterOuterAlt(_localctx, 13);
				{
				setState(1025);
				alter_database();
				}
				break;
			case 14:
				enterOuterAlt(_localctx, 14);
				{
				setState(1026);
				alter_db_role();
				}
				break;
			case 15:
				enterOuterAlt(_localctx, 15);
				{
				setState(1027);
				alter_endpoint();
				}
				break;
			case 16:
				enterOuterAlt(_localctx, 16);
				{
				setState(1028);
				create_or_alter_event_session();
				}
				break;
			case 17:
				enterOuterAlt(_localctx, 17);
				{
				setState(1029);
				alter_external_data_source();
				}
				break;
			case 18:
				enterOuterAlt(_localctx, 18);
				{
				setState(1030);
				alter_external_library();
				}
				break;
			case 19:
				enterOuterAlt(_localctx, 19);
				{
				setState(1031);
				alter_external_resource_pool();
				}
				break;
			case 20:
				enterOuterAlt(_localctx, 20);
				{
				setState(1032);
				alter_fulltext_catalog();
				}
				break;
			case 21:
				enterOuterAlt(_localctx, 21);
				{
				setState(1033);
				alter_fulltext_stoplist();
				}
				break;
			case 22:
				enterOuterAlt(_localctx, 22);
				{
				setState(1034);
				alter_login_azure_sql();
				}
				break;
			case 23:
				enterOuterAlt(_localctx, 23);
				{
				setState(1035);
				alter_login_azure_sql_dw_and_pdw();
				}
				break;
			case 24:
				enterOuterAlt(_localctx, 24);
				{
				setState(1036);
				alter_login_sql_server();
				}
				break;
			case 25:
				enterOuterAlt(_localctx, 25);
				{
				setState(1037);
				alter_master_key_azure_sql();
				}
				break;
			case 26:
				enterOuterAlt(_localctx, 26);
				{
				setState(1038);
				alter_master_key_sql_server();
				}
				break;
			case 27:
				enterOuterAlt(_localctx, 27);
				{
				setState(1039);
				alter_message_type();
				}
				break;
			case 28:
				enterOuterAlt(_localctx, 28);
				{
				setState(1040);
				alter_partition_function();
				}
				break;
			case 29:
				enterOuterAlt(_localctx, 29);
				{
				setState(1041);
				alter_partition_scheme();
				}
				break;
			case 30:
				enterOuterAlt(_localctx, 30);
				{
				setState(1042);
				alter_remote_service_binding();
				}
				break;
			case 31:
				enterOuterAlt(_localctx, 31);
				{
				setState(1043);
				alter_resource_governor();
				}
				break;
			case 32:
				enterOuterAlt(_localctx, 32);
				{
				setState(1044);
				alter_schema_azure_sql_dw_and_pdw();
				}
				break;
			case 33:
				enterOuterAlt(_localctx, 33);
				{
				setState(1045);
				alter_schema_sql();
				}
				break;
			case 34:
				enterOuterAlt(_localctx, 34);
				{
				setState(1046);
				alter_sequence();
				}
				break;
			case 35:
				enterOuterAlt(_localctx, 35);
				{
				setState(1047);
				alter_server_audit();
				}
				break;
			case 36:
				enterOuterAlt(_localctx, 36);
				{
				setState(1048);
				alter_server_audit_specification();
				}
				break;
			case 37:
				enterOuterAlt(_localctx, 37);
				{
				setState(1049);
				alter_server_configuration();
				}
				break;
			case 38:
				enterOuterAlt(_localctx, 38);
				{
				setState(1050);
				alter_server_role();
				}
				break;
			case 39:
				enterOuterAlt(_localctx, 39);
				{
				setState(1051);
				alter_server_role_pdw();
				}
				break;
			case 40:
				enterOuterAlt(_localctx, 40);
				{
				setState(1052);
				alter_service();
				}
				break;
			case 41:
				enterOuterAlt(_localctx, 41);
				{
				setState(1053);
				alter_service_master_key();
				}
				break;
			case 42:
				enterOuterAlt(_localctx, 42);
				{
				setState(1054);
				alter_symmetric_key();
				}
				break;
			case 43:
				enterOuterAlt(_localctx, 43);
				{
				setState(1055);
				alter_table();
				}
				break;
			case 44:
				enterOuterAlt(_localctx, 44);
				{
				setState(1056);
				alter_user();
				}
				break;
			case 45:
				enterOuterAlt(_localctx, 45);
				{
				setState(1057);
				alter_user_azure_sql();
				}
				break;
			case 46:
				enterOuterAlt(_localctx, 46);
				{
				setState(1058);
				alter_workload_group();
				}
				break;
			case 47:
				enterOuterAlt(_localctx, 47);
				{
				setState(1059);
				create_application_role();
				}
				break;
			case 48:
				enterOuterAlt(_localctx, 48);
				{
				setState(1060);
				create_assembly();
				}
				break;
			case 49:
				enterOuterAlt(_localctx, 49);
				{
				setState(1061);
				create_asymmetric_key();
				}
				break;
			case 50:
				enterOuterAlt(_localctx, 50);
				{
				setState(1062);
				create_column_encryption_key();
				}
				break;
			case 51:
				enterOuterAlt(_localctx, 51);
				{
				setState(1063);
				create_column_master_key();
				}
				break;
			case 52:
				enterOuterAlt(_localctx, 52);
				{
				setState(1064);
				create_credential();
				}
				break;
			case 53:
				enterOuterAlt(_localctx, 53);
				{
				setState(1065);
				create_cryptographic_provider();
				}
				break;
			case 54:
				enterOuterAlt(_localctx, 54);
				{
				setState(1066);
				create_database();
				}
				break;
			case 55:
				enterOuterAlt(_localctx, 55);
				{
				setState(1067);
				create_db_role();
				}
				break;
			case 56:
				enterOuterAlt(_localctx, 56);
				{
				setState(1068);
				create_event_notification();
				}
				break;
			case 57:
				enterOuterAlt(_localctx, 57);
				{
				setState(1069);
				create_external_library();
				}
				break;
			case 58:
				enterOuterAlt(_localctx, 58);
				{
				setState(1070);
				create_external_resource_pool();
				}
				break;
			case 59:
				enterOuterAlt(_localctx, 59);
				{
				setState(1071);
				create_fulltext_catalog();
				}
				break;
			case 60:
				enterOuterAlt(_localctx, 60);
				{
				setState(1072);
				create_fulltext_stoplist();
				}
				break;
			case 61:
				enterOuterAlt(_localctx, 61);
				{
				setState(1073);
				create_index();
				}
				break;
			case 62:
				enterOuterAlt(_localctx, 62);
				{
				setState(1074);
				create_login_azure_sql();
				}
				break;
			case 63:
				enterOuterAlt(_localctx, 63);
				{
				setState(1075);
				create_login_pdw();
				}
				break;
			case 64:
				enterOuterAlt(_localctx, 64);
				{
				setState(1076);
				create_login_sql_server();
				}
				break;
			case 65:
				enterOuterAlt(_localctx, 65);
				{
				setState(1077);
				create_master_key_azure_sql();
				}
				break;
			case 66:
				enterOuterAlt(_localctx, 66);
				{
				setState(1078);
				create_master_key_sql_server();
				}
				break;
			case 67:
				enterOuterAlt(_localctx, 67);
				{
				setState(1079);
				create_or_alter_broker_priority();
				}
				break;
			case 68:
				enterOuterAlt(_localctx, 68);
				{
				setState(1080);
				create_or_alter_function();
				}
				break;
			case 69:
				enterOuterAlt(_localctx, 69);
				{
				setState(1081);
				create_or_alter_procedure();
				}
				break;
			case 70:
				enterOuterAlt(_localctx, 70);
				{
				setState(1082);
				create_or_alter_trigger();
				}
				break;
			case 71:
				enterOuterAlt(_localctx, 71);
				{
				setState(1083);
				create_remote_service_binding();
				}
				break;
			case 72:
				enterOuterAlt(_localctx, 72);
				{
				setState(1084);
				create_resource_pool();
				}
				break;
			case 73:
				enterOuterAlt(_localctx, 73);
				{
				setState(1085);
				create_route();
				}
				break;
			case 74:
				enterOuterAlt(_localctx, 74);
				{
				setState(1086);
				create_rule();
				}
				break;
			case 75:
				enterOuterAlt(_localctx, 75);
				{
				setState(1087);
				create_schema();
				}
				break;
			case 76:
				enterOuterAlt(_localctx, 76);
				{
				setState(1088);
				create_schema_azure_sql_dw_and_pdw();
				}
				break;
			case 77:
				enterOuterAlt(_localctx, 77);
				{
				setState(1089);
				create_search_property_list();
				}
				break;
			case 78:
				enterOuterAlt(_localctx, 78);
				{
				setState(1090);
				create_security_policy();
				}
				break;
			case 79:
				enterOuterAlt(_localctx, 79);
				{
				setState(1091);
				create_sequence();
				}
				break;
			case 80:
				enterOuterAlt(_localctx, 80);
				{
				setState(1092);
				create_server_audit();
				}
				break;
			case 81:
				enterOuterAlt(_localctx, 81);
				{
				setState(1093);
				create_server_audit_specification();
				}
				break;
			case 82:
				enterOuterAlt(_localctx, 82);
				{
				setState(1094);
				create_server_role();
				}
				break;
			case 83:
				enterOuterAlt(_localctx, 83);
				{
				setState(1095);
				create_service();
				}
				break;
			case 84:
				enterOuterAlt(_localctx, 84);
				{
				setState(1096);
				create_statistics();
				}
				break;
			case 85:
				enterOuterAlt(_localctx, 85);
				{
				setState(1097);
				create_symmetric_key();
				}
				break;
			case 86:
				enterOuterAlt(_localctx, 86);
				{
				setState(1098);
				create_synonym();
				}
				break;
			case 87:
				enterOuterAlt(_localctx, 87);
				{
				setState(1099);
				create_table();
				}
				break;
			case 88:
				enterOuterAlt(_localctx, 88);
				{
				setState(1100);
				create_type();
				}
				break;
			case 89:
				enterOuterAlt(_localctx, 89);
				{
				setState(1101);
				create_user();
				}
				break;
			case 90:
				enterOuterAlt(_localctx, 90);
				{
				setState(1102);
				create_user_azure_sql_dw();
				}
				break;
			case 91:
				enterOuterAlt(_localctx, 91);
				{
				setState(1103);
				create_view();
				}
				break;
			case 92:
				enterOuterAlt(_localctx, 92);
				{
				setState(1104);
				create_workload_group();
				}
				break;
			case 93:
				enterOuterAlt(_localctx, 93);
				{
				setState(1105);
				create_xml_schema_collection();
				}
				break;
			case 94:
				enterOuterAlt(_localctx, 94);
				{
				setState(1106);
				drop_aggregate();
				}
				break;
			case 95:
				enterOuterAlt(_localctx, 95);
				{
				setState(1107);
				drop_application_role();
				}
				break;
			case 96:
				enterOuterAlt(_localctx, 96);
				{
				setState(1108);
				drop_assembly();
				}
				break;
			case 97:
				enterOuterAlt(_localctx, 97);
				{
				setState(1109);
				drop_asymmetric_key();
				}
				break;
			case 98:
				enterOuterAlt(_localctx, 98);
				{
				setState(1110);
				drop_availability_group();
				}
				break;
			case 99:
				enterOuterAlt(_localctx, 99);
				{
				setState(1111);
				drop_broker_priority();
				}
				break;
			case 100:
				enterOuterAlt(_localctx, 100);
				{
				setState(1112);
				drop_certificate();
				}
				break;
			case 101:
				enterOuterAlt(_localctx, 101);
				{
				setState(1113);
				drop_column_encryption_key();
				}
				break;
			case 102:
				enterOuterAlt(_localctx, 102);
				{
				setState(1114);
				drop_column_master_key();
				}
				break;
			case 103:
				enterOuterAlt(_localctx, 103);
				{
				setState(1115);
				drop_contract();
				}
				break;
			case 104:
				enterOuterAlt(_localctx, 104);
				{
				setState(1116);
				drop_credential();
				}
				break;
			case 105:
				enterOuterAlt(_localctx, 105);
				{
				setState(1117);
				drop_cryptograhic_provider();
				}
				break;
			case 106:
				enterOuterAlt(_localctx, 106);
				{
				setState(1118);
				drop_database();
				}
				break;
			case 107:
				enterOuterAlt(_localctx, 107);
				{
				setState(1119);
				drop_database_audit_specification();
				}
				break;
			case 108:
				enterOuterAlt(_localctx, 108);
				{
				setState(1120);
				drop_database_scoped_credential();
				}
				break;
			case 109:
				enterOuterAlt(_localctx, 109);
				{
				setState(1121);
				drop_db_role();
				}
				break;
			case 110:
				enterOuterAlt(_localctx, 110);
				{
				setState(1122);
				drop_default();
				}
				break;
			case 111:
				enterOuterAlt(_localctx, 111);
				{
				setState(1123);
				drop_endpoint();
				}
				break;
			case 112:
				enterOuterAlt(_localctx, 112);
				{
				setState(1124);
				drop_event_notifications();
				}
				break;
			case 113:
				enterOuterAlt(_localctx, 113);
				{
				setState(1125);
				drop_event_session();
				}
				break;
			case 114:
				enterOuterAlt(_localctx, 114);
				{
				setState(1126);
				drop_external_data_source();
				}
				break;
			case 115:
				enterOuterAlt(_localctx, 115);
				{
				setState(1127);
				drop_external_file_format();
				}
				break;
			case 116:
				enterOuterAlt(_localctx, 116);
				{
				setState(1128);
				drop_external_library();
				}
				break;
			case 117:
				enterOuterAlt(_localctx, 117);
				{
				setState(1129);
				drop_external_resource_pool();
				}
				break;
			case 118:
				enterOuterAlt(_localctx, 118);
				{
				setState(1130);
				drop_external_table();
				}
				break;
			case 119:
				enterOuterAlt(_localctx, 119);
				{
				setState(1131);
				drop_fulltext_catalog();
				}
				break;
			case 120:
				enterOuterAlt(_localctx, 120);
				{
				setState(1132);
				drop_fulltext_index();
				}
				break;
			case 121:
				enterOuterAlt(_localctx, 121);
				{
				setState(1133);
				drop_fulltext_stoplist();
				}
				break;
			case 122:
				enterOuterAlt(_localctx, 122);
				{
				setState(1134);
				drop_function();
				}
				break;
			case 123:
				enterOuterAlt(_localctx, 123);
				{
				setState(1135);
				drop_index();
				}
				break;
			case 124:
				enterOuterAlt(_localctx, 124);
				{
				setState(1136);
				drop_login();
				}
				break;
			case 125:
				enterOuterAlt(_localctx, 125);
				{
				setState(1137);
				drop_master_key();
				}
				break;
			case 126:
				enterOuterAlt(_localctx, 126);
				{
				setState(1138);
				drop_message_type();
				}
				break;
			case 127:
				enterOuterAlt(_localctx, 127);
				{
				setState(1139);
				drop_partition_function();
				}
				break;
			case 128:
				enterOuterAlt(_localctx, 128);
				{
				setState(1140);
				drop_partition_scheme();
				}
				break;
			case 129:
				enterOuterAlt(_localctx, 129);
				{
				setState(1141);
				drop_procedure();
				}
				break;
			case 130:
				enterOuterAlt(_localctx, 130);
				{
				setState(1142);
				drop_queue();
				}
				break;
			case 131:
				enterOuterAlt(_localctx, 131);
				{
				setState(1143);
				drop_remote_service_binding();
				}
				break;
			case 132:
				enterOuterAlt(_localctx, 132);
				{
				setState(1144);
				drop_resource_pool();
				}
				break;
			case 133:
				enterOuterAlt(_localctx, 133);
				{
				setState(1145);
				drop_route();
				}
				break;
			case 134:
				enterOuterAlt(_localctx, 134);
				{
				setState(1146);
				drop_rule();
				}
				break;
			case 135:
				enterOuterAlt(_localctx, 135);
				{
				setState(1147);
				drop_schema();
				}
				break;
			case 136:
				enterOuterAlt(_localctx, 136);
				{
				setState(1148);
				drop_search_property_list();
				}
				break;
			case 137:
				enterOuterAlt(_localctx, 137);
				{
				setState(1149);
				drop_security_policy();
				}
				break;
			case 138:
				enterOuterAlt(_localctx, 138);
				{
				setState(1150);
				drop_sequence();
				}
				break;
			case 139:
				enterOuterAlt(_localctx, 139);
				{
				setState(1151);
				drop_server_audit();
				}
				break;
			case 140:
				enterOuterAlt(_localctx, 140);
				{
				setState(1152);
				drop_server_audit_specification();
				}
				break;
			case 141:
				enterOuterAlt(_localctx, 141);
				{
				setState(1153);
				drop_server_role();
				}
				break;
			case 142:
				enterOuterAlt(_localctx, 142);
				{
				setState(1154);
				drop_service();
				}
				break;
			case 143:
				enterOuterAlt(_localctx, 143);
				{
				setState(1155);
				drop_signature();
				}
				break;
			case 144:
				enterOuterAlt(_localctx, 144);
				{
				setState(1156);
				drop_statistics();
				}
				break;
			case 145:
				enterOuterAlt(_localctx, 145);
				{
				setState(1157);
				drop_statistics_name_azure_dw_and_pdw();
				}
				break;
			case 146:
				enterOuterAlt(_localctx, 146);
				{
				setState(1158);
				drop_symmetric_key();
				}
				break;
			case 147:
				enterOuterAlt(_localctx, 147);
				{
				setState(1159);
				drop_synonym();
				}
				break;
			case 148:
				enterOuterAlt(_localctx, 148);
				{
				setState(1160);
				drop_table();
				}
				break;
			case 149:
				enterOuterAlt(_localctx, 149);
				{
				setState(1161);
				drop_trigger();
				}
				break;
			case 150:
				enterOuterAlt(_localctx, 150);
				{
				setState(1162);
				drop_type();
				}
				break;
			case 151:
				enterOuterAlt(_localctx, 151);
				{
				setState(1163);
				drop_user();
				}
				break;
			case 152:
				enterOuterAlt(_localctx, 152);
				{
				setState(1164);
				drop_view();
				}
				break;
			case 153:
				enterOuterAlt(_localctx, 153);
				{
				setState(1165);
				drop_workload_group();
				}
				break;
			case 154:
				enterOuterAlt(_localctx, 154);
				{
				setState(1166);
				drop_xml_schema_collection();
				}
				break;
			case 155:
				enterOuterAlt(_localctx, 155);
				{
				setState(1167);
				disable_trigger();
				}
				break;
			case 156:
				enterOuterAlt(_localctx, 156);
				{
				setState(1168);
				enable_trigger();
				}
				break;
			case 157:
				enterOuterAlt(_localctx, 157);
				{
				setState(1169);
				lock_table();
				}
				break;
			case 158:
				enterOuterAlt(_localctx, 158);
				{
				setState(1170);
				truncate_table();
				}
				break;
			case 159:
				enterOuterAlt(_localctx, 159);
				{
				setState(1171);
				update_statistics();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Backup_statementContext extends ParserRuleContext {
		public Backup_databaseContext backup_database() {
			return getRuleContext(Backup_databaseContext.class,0);
		}
		public Backup_logContext backup_log() {
			return getRuleContext(Backup_logContext.class,0);
		}
		public Backup_certificateContext backup_certificate() {
			return getRuleContext(Backup_certificateContext.class,0);
		}
		public Backup_master_keyContext backup_master_key() {
			return getRuleContext(Backup_master_keyContext.class,0);
		}
		public Backup_service_master_keyContext backup_service_master_key() {
			return getRuleContext(Backup_service_master_keyContext.class,0);
		}
		public Backup_statementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_backup_statement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterBackup_statement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitBackup_statement(this);
		}
	}

	public final Backup_statementContext backup_statement() throws RecognitionException {
		Backup_statementContext _localctx = new Backup_statementContext(_ctx, getState());
		enterRule(_localctx, 12, RULE_backup_statement);
		try {
			setState(1179);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,10,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(1174);
				backup_database();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(1175);
				backup_log();
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(1176);
				backup_certificate();
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(1177);
				backup_master_key();
				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(1178);
				backup_service_master_key();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Cfl_statementContext extends ParserRuleContext {
		public Block_statementContext block_statement() {
			return getRuleContext(Block_statementContext.class,0);
		}
		public Break_statementContext break_statement() {
			return getRuleContext(Break_statementContext.class,0);
		}
		public Continue_statementContext continue_statement() {
			return getRuleContext(Continue_statementContext.class,0);
		}
		public Goto_statementContext goto_statement() {
			return getRuleContext(Goto_statementContext.class,0);
		}
		public If_statementContext if_statement() {
			return getRuleContext(If_statementContext.class,0);
		}
		public Return_statementContext return_statement() {
			return getRuleContext(Return_statementContext.class,0);
		}
		public Throw_statementContext throw_statement() {
			return getRuleContext(Throw_statementContext.class,0);
		}
		public Try_catch_statementContext try_catch_statement() {
			return getRuleContext(Try_catch_statementContext.class,0);
		}
		public Waitfor_statementContext waitfor_statement() {
			return getRuleContext(Waitfor_statementContext.class,0);
		}
		public While_statementContext while_statement() {
			return getRuleContext(While_statementContext.class,0);
		}
		public Print_statementContext print_statement() {
			return getRuleContext(Print_statementContext.class,0);
		}
		public Raiseerror_statementContext raiseerror_statement() {
			return getRuleContext(Raiseerror_statementContext.class,0);
		}
		public Cfl_statementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_cfl_statement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterCfl_statement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitCfl_statement(this);
		}
	}

	public final Cfl_statementContext cfl_statement() throws RecognitionException {
		Cfl_statementContext _localctx = new Cfl_statementContext(_ctx, getState());
		enterRule(_localctx, 14, RULE_cfl_statement);
		try {
			setState(1193);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,11,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(1181);
				block_statement();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(1182);
				break_statement();
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(1183);
				continue_statement();
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(1184);
				goto_statement();
				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(1185);
				if_statement();
				}
				break;
			case 6:
				enterOuterAlt(_localctx, 6);
				{
				setState(1186);
				return_statement();
				}
				break;
			case 7:
				enterOuterAlt(_localctx, 7);
				{
				setState(1187);
				throw_statement();
				}
				break;
			case 8:
				enterOuterAlt(_localctx, 8);
				{
				setState(1188);
				try_catch_statement();
				}
				break;
			case 9:
				enterOuterAlt(_localctx, 9);
				{
				setState(1189);
				waitfor_statement();
				}
				break;
			case 10:
				enterOuterAlt(_localctx, 10);
				{
				setState(1190);
				while_statement();
				}
				break;
			case 11:
				enterOuterAlt(_localctx, 11);
				{
				setState(1191);
				print_statement();
				}
				break;
			case 12:
				enterOuterAlt(_localctx, 12);
				{
				setState(1192);
				raiseerror_statement();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Block_statementContext extends ParserRuleContext {
		public TerminalNode BEGIN() { return getToken(TSqlParser.BEGIN, 0); }
		public TerminalNode END() { return getToken(TSqlParser.END, 0); }
		public List SEMI() { return getTokens(TSqlParser.SEMI); }
		public TerminalNode SEMI(int i) {
			return getToken(TSqlParser.SEMI, i);
		}
		public Sql_clausesContext sql_clauses() {
			return getRuleContext(Sql_clausesContext.class,0);
		}
		public Block_statementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_block_statement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterBlock_statement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitBlock_statement(this);
		}
	}

	public final Block_statementContext block_statement() throws RecognitionException {
		Block_statementContext _localctx = new Block_statementContext(_ctx, getState());
		enterRule(_localctx, 16, RULE_block_statement);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1195);
			match(BEGIN);
			setState(1197);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,12,_ctx) ) {
			case 1:
				{
				setState(1196);
				match(SEMI);
				}
				break;
			}
			setState(1200);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,13,_ctx) ) {
			case 1:
				{
				setState(1199);
				sql_clauses();
				}
				break;
			}
			setState(1202);
			match(END);
			setState(1204);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,14,_ctx) ) {
			case 1:
				{
				setState(1203);
				match(SEMI);
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Break_statementContext extends ParserRuleContext {
		public TerminalNode BREAK() { return getToken(TSqlParser.BREAK, 0); }
		public TerminalNode SEMI() { return getToken(TSqlParser.SEMI, 0); }
		public Break_statementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_break_statement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterBreak_statement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitBreak_statement(this);
		}
	}

	public final Break_statementContext break_statement() throws RecognitionException {
		Break_statementContext _localctx = new Break_statementContext(_ctx, getState());
		enterRule(_localctx, 18, RULE_break_statement);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1206);
			match(BREAK);
			setState(1208);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,15,_ctx) ) {
			case 1:
				{
				setState(1207);
				match(SEMI);
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Continue_statementContext extends ParserRuleContext {
		public TerminalNode CONTINUE() { return getToken(TSqlParser.CONTINUE, 0); }
		public TerminalNode SEMI() { return getToken(TSqlParser.SEMI, 0); }
		public Continue_statementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_continue_statement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterContinue_statement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitContinue_statement(this);
		}
	}

	public final Continue_statementContext continue_statement() throws RecognitionException {
		Continue_statementContext _localctx = new Continue_statementContext(_ctx, getState());
		enterRule(_localctx, 20, RULE_continue_statement);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1210);
			match(CONTINUE);
			setState(1212);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,16,_ctx) ) {
			case 1:
				{
				setState(1211);
				match(SEMI);
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Goto_statementContext extends ParserRuleContext {
		public TerminalNode GOTO() { return getToken(TSqlParser.GOTO, 0); }
		public IdContext id() {
			return getRuleContext(IdContext.class,0);
		}
		public TerminalNode SEMI() { return getToken(TSqlParser.SEMI, 0); }
		public TerminalNode COLON() { return getToken(TSqlParser.COLON, 0); }
		public Goto_statementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_goto_statement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterGoto_statement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitGoto_statement(this);
		}
	}

	public final Goto_statementContext goto_statement() throws RecognitionException {
		Goto_statementContext _localctx = new Goto_statementContext(_ctx, getState());
		enterRule(_localctx, 22, RULE_goto_statement);
		try {
			setState(1224);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case GOTO:
				enterOuterAlt(_localctx, 1);
				{
				setState(1214);
				match(GOTO);
				setState(1215);
				id();
				setState(1217);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,17,_ctx) ) {
				case 1:
					{
					setState(1216);
					match(SEMI);
					}
					break;
				}
				}
				break;
			case CALLED:
			case DATA_COMPRESSION:
			case EVENTDATA:
			case FILENAME:
			case FILLFACTOR:
			case FORCESEEK:
			case INIT:
			case KEY:
			case MASTER:
			case MAX_MEMORY:
			case OFFSETS:
			case PAGE:
			case PUBLIC:
			case R:
			case RAW:
			case RETURN:
			case RETURNS:
			case ROWCOUNT:
			case SAFETY:
			case SERVER:
			case SID:
			case SOURCE:
			case STATE:
			case START:
			case TARGET:
			case ABSOLUTE:
			case ACCENT_SENSITIVITY:
			case ACTION:
			case ACTIVATION:
			case ACTIVE:
			case ADDRESS:
			case AES_128:
			case AES_192:
			case AES_256:
			case AFFINITY:
			case AFTER:
			case AGGREGATE:
			case ALGORITHM:
			case ALLOW_ENCRYPTED_VALUE_MODIFICATIONS:
			case ALLOW_SNAPSHOT_ISOLATION:
			case ALLOWED:
			case ANSI_NULL_DEFAULT:
			case ANSI_NULLS:
			case ANSI_PADDING:
			case ANSI_WARNINGS:
			case APPLICATION_LOG:
			case APPLY:
			case ARITHABORT:
			case ASSEMBLY:
			case AUDIT:
			case AUDIT_GUID:
			case AUTO:
			case AUTO_CLEANUP:
			case AUTO_CLOSE:
			case AUTO_CREATE_STATISTICS:
			case AUTO_SHRINK:
			case AUTO_UPDATE_STATISTICS:
			case AUTO_UPDATE_STATISTICS_ASYNC:
			case AVAILABILITY:
			case AVG:
			case BACKUP_PRIORITY:
			case BEGIN_DIALOG:
			case BIGINT:
			case BINARY_BASE64:
			case BINARY_CHECKSUM:
			case BINDING:
			case BLOB_STORAGE:
			case BROKER:
			case BROKER_INSTANCE:
			case BULK_LOGGED:
			case CALLER:
			case CAP_CPU_PERCENT:
			case CAST:
			case CATALOG:
			case CATCH:
			case CHANGE_RETENTION:
			case CHANGE_TRACKING:
			case CHECKSUM:
			case CHECKSUM_AGG:
			case CLEANUP:
			case COLLECTION:
			case COLUMN_MASTER_KEY:
			case COMMITTED:
			case COMPATIBILITY_LEVEL:
			case CONCAT:
			case CONCAT_NULL_YIELDS_NULL:
			case CONTENT:
			case CONTROL:
			case COOKIE:
			case COUNT:
			case COUNT_BIG:
			case COUNTER:
			case CPU:
			case CREATE_NEW:
			case CREATION_DISPOSITION:
			case CREDENTIAL:
			case CRYPTOGRAPHIC:
			case CURSOR_CLOSE_ON_COMMIT:
			case CURSOR_DEFAULT:
			case DATE_CORRELATION_OPTIMIZATION:
			case DATEADD:
			case DATEDIFF:
			case DATENAME:
			case DATEPART:
			case DAYS:
			case DB_CHAINING:
			case DB_FAILOVER:
			case DECRYPTION:
			case DEFAULT_DOUBLE_QUOTE:
			case DEFAULT_FULLTEXT_LANGUAGE:
			case DEFAULT_LANGUAGE:
			case DELAY:
			case DELAYED_DURABILITY:
			case DELETED:
			case DENSE_RANK:
			case DEPENDENTS:
			case DES:
			case DESCRIPTION:
			case DESX:
			case DHCP:
			case DIALOG:
			case DIRECTORY_NAME:
			case DISABLE:
			case DISABLE_BROKER:
			case DISABLED:
			case DISK_DRIVE:
			case DOCUMENT:
			case DYNAMIC:
			case EMERGENCY:
			case EMPTY:
			case ENABLE:
			case ENABLE_BROKER:
			case ENCRYPTED_VALUE:
			case ENCRYPTION:
			case ENDPOINT_URL:
			case ERROR_BROKER_CONVERSATIONS:
			case EXCLUSIVE:
			case EXECUTABLE:
			case EXIST:
			case EXPAND:
			case EXPIRY_DATE:
			case EXPLICIT:
			case FAIL_OPERATION:
			case FAILOVER_MODE:
			case FAILURE:
			case FAILURE_CONDITION_LEVEL:
			case FAST:
			case FAST_FORWARD:
			case FILEGROUP:
			case FILEGROWTH:
			case FILEPATH:
			case FILESTREAM:
			case FILTER:
			case FIRST:
			case FIRST_VALUE:
			case FOLLOWING:
			case FORCE:
			case FORCE_FAILOVER_ALLOW_DATA_LOSS:
			case FORCED:
			case FORMAT:
			case FORWARD_ONLY:
			case FULLSCAN:
			case FULLTEXT:
			case GB:
			case GETDATE:
			case GETUTCDATE:
			case GLOBAL:
			case GO:
			case GROUP_MAX_REQUESTS:
			case GROUPING:
			case GROUPING_ID:
			case HADR:
			case HASH:
			case HEALTH_CHECK_TIMEOUT:
			case HIGH:
			case HONOR_BROKER_PRIORITY:
			case HOURS:
			case IDENTITY_VALUE:
			case IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX:
			case IMMEDIATE:
			case IMPERSONATE:
			case IMPORTANCE:
			case INCREMENTAL:
			case INITIATOR:
			case INPUT:
			case INSENSITIVE:
			case INSERTED:
			case INT:
			case IP:
			case ISOLATION:
			case KB:
			case KEEP:
			case KEEPFIXED:
			case KEY_SOURCE:
			case KEYS:
			case KEYSET:
			case LAG:
			case LAST:
			case LAST_VALUE:
			case LEAD:
			case LEVEL:
			case LIST:
			case LISTENER:
			case LISTENER_URL:
			case LOB_COMPACTION:
			case LOCAL:
			case LOCATION:
			case LOCK:
			case LOCK_ESCALATION:
			case LOGIN:
			case LOOP:
			case LOW:
			case MANUAL:
			case MARK:
			case MATERIALIZED:
			case MAX:
			case MAX_CPU_PERCENT:
			case MAX_DOP:
			case MAX_FILES:
			case MAX_IOPS_PER_VOLUME:
			case MAX_MEMORY_PERCENT:
			case MAX_PROCESSES:
			case MAX_QUEUE_READERS:
			case MAX_ROLLOVER_FILES:
			case MAXDOP:
			case MAXRECURSION:
			case MAXSIZE:
			case MB:
			case MEDIUM:
			case MEMORY_OPTIMIZED_DATA:
			case MESSAGE:
			case MIN:
			case MIN_ACTIVE_ROWVERSION:
			case MIN_CPU_PERCENT:
			case MIN_IOPS_PER_VOLUME:
			case MIN_MEMORY_PERCENT:
			case MINUTES:
			case MIRROR_ADDRESS:
			case MIXED_PAGE_ALLOCATION:
			case MODE:
			case MODIFY:
			case MOVE:
			case MULTI_USER:
			case NAME:
			case NESTED_TRIGGERS:
			case NEW_ACCOUNT:
			case NEW_BROKER:
			case NEW_PASSWORD:
			case NEXT:
			case NO:
			case NO_TRUNCATE:
			case NO_WAIT:
			case NOCOUNT:
			case NODES:
			case NOEXPAND:
			case NON_TRANSACTED_ACCESS:
			case NORECOMPUTE:
			case NORECOVERY:
			case NOWAIT:
			case NTILE:
			case NUMANODE:
			case NUMBER:
			case NUMERIC_ROUNDABORT:
			case OBJECT:
			case OFFLINE:
			case OFFSET:
			case OLD_ACCOUNT:
			case ONLINE:
			case ONLY:
			case OPEN_EXISTING:
			case OPTIMISTIC:
			case OPTIMIZE:
			case OUT:
			case OUTPUT:
			case OWNER:
			case PAGE_VERIFY:
			case PARAMETERIZATION:
			case PARTITION:
			case PARTITIONS:
			case PARTNER:
			case PATH:
			case POISON_MESSAGE_HANDLING:
			case POOL:
			case PORT:
			case PRECEDING:
			case PRIMARY_ROLE:
			case PRIOR:
			case PRIORITY:
			case PRIORITY_LEVEL:
			case PRIVATE:
			case PRIVATE_KEY:
			case PRIVILEGES:
			case PROCEDURE_NAME:
			case PROPERTY:
			case PROVIDER:
			case PROVIDER_KEY_NAME:
			case QUERY:
			case QUEUE:
			case QUEUE_DELAY:
			case QUOTED_IDENTIFIER:
			case RANGE:
			case RANK:
			case RC2:
			case RC4:
			case RC4_128:
			case READ_COMMITTED_SNAPSHOT:
			case READ_ONLY:
			case READ_ONLY_ROUTING_LIST:
			case READ_WRITE:
			case READONLY:
			case REBUILD:
			case RECEIVE:
			case RECOMPILE:
			case RECOVERY:
			case RECURSIVE_TRIGGERS:
			case RELATIVE:
			case REMOTE:
			case REMOTE_SERVICE_NAME:
			case REMOVE:
			case REORGANIZE:
			case REPEATABLE:
			case REPLICA:
			case REQUEST_MAX_CPU_TIME_SEC:
			case REQUEST_MAX_MEMORY_GRANT_PERCENT:
			case REQUEST_MEMORY_GRANT_TIMEOUT_SEC:
			case REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT:
			case RESERVE_DISK_SPACE:
			case RESOURCE:
			case RESOURCE_MANAGER_LOCATION:
			case RESTRICTED_USER:
			case RETENTION:
			case ROBUST:
			case ROOT:
			case ROUTE:
			case ROW:
			case ROW_NUMBER:
			case ROWGUID:
			case ROWS:
			case SAMPLE:
			case SCHEMABINDING:
			case SCOPED:
			case SCROLL:
			case SCROLL_LOCKS:
			case SEARCH:
			case SECONDARY:
			case SECONDARY_ONLY:
			case SECONDARY_ROLE:
			case SECONDS:
			case SECRET:
			case SECURITY_LOG:
			case SEEDING_MODE:
			case SELF:
			case SEMI_SENSITIVE:
			case SEND:
			case SENT:
			case SERIALIZABLE:
			case SESSION_TIMEOUT:
			case SETERROR:
			case SHARE:
			case SHOWPLAN:
			case SIGNATURE:
			case SIMPLE:
			case SINGLE_USER:
			case SIZE:
			case SMALLINT:
			case SNAPSHOT:
			case SPATIAL_WINDOW_MAX_CELLS:
			case STANDBY:
			case START_DATE:
			case STATIC:
			case STATS_STREAM:
			case STATUS:
			case STDEV:
			case STDEVP:
			case STOPLIST:
			case STUFF:
			case SUBJECT:
			case SUM:
			case SUSPEND:
			case SYMMETRIC:
			case SYNCHRONOUS_COMMIT:
			case SYNONYM:
			case TAKE:
			case TARGET_RECOVERY_TIME:
			case TB:
			case TEXTIMAGE_ON:
			case THROW:
			case TIES:
			case TIME:
			case TIMEOUT:
			case TIMER:
			case TINYINT:
			case TORN_PAGE_DETECTION:
			case TRANSFORM_NOISE_WORDS:
			case TRIPLE_DES:
			case TRIPLE_DES_3KEY:
			case TRUSTWORTHY:
			case TRY:
			case TSQL:
			case TWO_DIGIT_YEAR_CUTOFF:
			case TYPE:
			case TYPE_WARNING:
			case UNBOUNDED:
			case UNCOMMITTED:
			case UNKNOWN:
			case UNLIMITED:
			case USING:
			case VALID_XML:
			case VALIDATION:
			case VALUE:
			case VAR:
			case VARP:
			case VIEW_METADATA:
			case VIEWS:
			case WAIT:
			case WELL_FORMED_XML:
			case WORK:
			case WORKLOAD:
			case XML:
			case XMLNAMESPACES:
			case DOUBLE_QUOTE_ID:
			case SQUARE_BRACKET_ID:
			case ID:
				enterOuterAlt(_localctx, 2);
				{
				setState(1219);
				id();
				setState(1220);
				match(COLON);
				setState(1222);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,18,_ctx) ) {
				case 1:
					{
					setState(1221);
					match(SEMI);
					}
					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 Return_statementContext extends ParserRuleContext {
		public TerminalNode RETURN() { return getToken(TSqlParser.RETURN, 0); }
		public ExpressionContext expression() {
			return getRuleContext(ExpressionContext.class,0);
		}
		public TerminalNode SEMI() { return getToken(TSqlParser.SEMI, 0); }
		public Return_statementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_return_statement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterReturn_statement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitReturn_statement(this);
		}
	}

	public final Return_statementContext return_statement() throws RecognitionException {
		Return_statementContext _localctx = new Return_statementContext(_ctx, getState());
		enterRule(_localctx, 24, RULE_return_statement);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1226);
			match(RETURN);
			setState(1228);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,20,_ctx) ) {
			case 1:
				{
				setState(1227);
				expression(0);
				}
				break;
			}
			setState(1231);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,21,_ctx) ) {
			case 1:
				{
				setState(1230);
				match(SEMI);
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class If_statementContext extends ParserRuleContext {
		public TerminalNode IF() { return getToken(TSqlParser.IF, 0); }
		public Search_conditionContext search_condition() {
			return getRuleContext(Search_conditionContext.class,0);
		}
		public List sql_clause() {
			return getRuleContexts(Sql_clauseContext.class);
		}
		public Sql_clauseContext sql_clause(int i) {
			return getRuleContext(Sql_clauseContext.class,i);
		}
		public TerminalNode ELSE() { return getToken(TSqlParser.ELSE, 0); }
		public TerminalNode SEMI() { return getToken(TSqlParser.SEMI, 0); }
		public If_statementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_if_statement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterIf_statement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitIf_statement(this);
		}
	}

	public final If_statementContext if_statement() throws RecognitionException {
		If_statementContext _localctx = new If_statementContext(_ctx, getState());
		enterRule(_localctx, 26, RULE_if_statement);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1233);
			match(IF);
			setState(1234);
			search_condition();
			setState(1235);
			sql_clause();
			setState(1238);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,22,_ctx) ) {
			case 1:
				{
				setState(1236);
				match(ELSE);
				setState(1237);
				sql_clause();
				}
				break;
			}
			setState(1241);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,23,_ctx) ) {
			case 1:
				{
				setState(1240);
				match(SEMI);
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Throw_statementContext extends ParserRuleContext {
		public TerminalNode THROW() { return getToken(TSqlParser.THROW, 0); }
		public Throw_error_numberContext throw_error_number() {
			return getRuleContext(Throw_error_numberContext.class,0);
		}
		public List COMMA() { return getTokens(TSqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(TSqlParser.COMMA, i);
		}
		public Throw_messageContext throw_message() {
			return getRuleContext(Throw_messageContext.class,0);
		}
		public Throw_stateContext throw_state() {
			return getRuleContext(Throw_stateContext.class,0);
		}
		public TerminalNode SEMI() { return getToken(TSqlParser.SEMI, 0); }
		public Throw_statementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_throw_statement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterThrow_statement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitThrow_statement(this);
		}
	}

	public final Throw_statementContext throw_statement() throws RecognitionException {
		Throw_statementContext _localctx = new Throw_statementContext(_ctx, getState());
		enterRule(_localctx, 28, RULE_throw_statement);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1243);
			match(THROW);
			setState(1250);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,24,_ctx) ) {
			case 1:
				{
				setState(1244);
				throw_error_number();
				setState(1245);
				match(COMMA);
				setState(1246);
				throw_message();
				setState(1247);
				match(COMMA);
				setState(1248);
				throw_state();
				}
				break;
			}
			setState(1253);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,25,_ctx) ) {
			case 1:
				{
				setState(1252);
				match(SEMI);
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Throw_error_numberContext extends ParserRuleContext {
		public TerminalNode DECIMAL() { return getToken(TSqlParser.DECIMAL, 0); }
		public TerminalNode LOCAL_ID() { return getToken(TSqlParser.LOCAL_ID, 0); }
		public Throw_error_numberContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_throw_error_number; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterThrow_error_number(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitThrow_error_number(this);
		}
	}

	public final Throw_error_numberContext throw_error_number() throws RecognitionException {
		Throw_error_numberContext _localctx = new Throw_error_numberContext(_ctx, getState());
		enterRule(_localctx, 30, RULE_throw_error_number);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1255);
			_la = _input.LA(1);
			if ( !(_la==LOCAL_ID || _la==DECIMAL) ) {
			_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 Throw_messageContext extends ParserRuleContext {
		public TerminalNode STRING() { return getToken(TSqlParser.STRING, 0); }
		public TerminalNode LOCAL_ID() { return getToken(TSqlParser.LOCAL_ID, 0); }
		public Throw_messageContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_throw_message; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterThrow_message(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitThrow_message(this);
		}
	}

	public final Throw_messageContext throw_message() throws RecognitionException {
		Throw_messageContext _localctx = new Throw_messageContext(_ctx, getState());
		enterRule(_localctx, 32, RULE_throw_message);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1257);
			_la = _input.LA(1);
			if ( !(_la==LOCAL_ID || _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 Throw_stateContext extends ParserRuleContext {
		public TerminalNode DECIMAL() { return getToken(TSqlParser.DECIMAL, 0); }
		public TerminalNode LOCAL_ID() { return getToken(TSqlParser.LOCAL_ID, 0); }
		public Throw_stateContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_throw_state; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterThrow_state(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitThrow_state(this);
		}
	}

	public final Throw_stateContext throw_state() throws RecognitionException {
		Throw_stateContext _localctx = new Throw_stateContext(_ctx, getState());
		enterRule(_localctx, 34, RULE_throw_state);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1259);
			_la = _input.LA(1);
			if ( !(_la==LOCAL_ID || _la==DECIMAL) ) {
			_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 Try_catch_statementContext extends ParserRuleContext {
		public Sql_clausesContext try_clauses;
		public Sql_clausesContext catch_clauses;
		public List BEGIN() { return getTokens(TSqlParser.BEGIN); }
		public TerminalNode BEGIN(int i) {
			return getToken(TSqlParser.BEGIN, i);
		}
		public List TRY() { return getTokens(TSqlParser.TRY); }
		public TerminalNode TRY(int i) {
			return getToken(TSqlParser.TRY, i);
		}
		public List END() { return getTokens(TSqlParser.END); }
		public TerminalNode END(int i) {
			return getToken(TSqlParser.END, i);
		}
		public List CATCH() { return getTokens(TSqlParser.CATCH); }
		public TerminalNode CATCH(int i) {
			return getToken(TSqlParser.CATCH, i);
		}
		public List SEMI() { return getTokens(TSqlParser.SEMI); }
		public TerminalNode SEMI(int i) {
			return getToken(TSqlParser.SEMI, i);
		}
		public List sql_clauses() {
			return getRuleContexts(Sql_clausesContext.class);
		}
		public Sql_clausesContext sql_clauses(int i) {
			return getRuleContext(Sql_clausesContext.class,i);
		}
		public Try_catch_statementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_try_catch_statement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterTry_catch_statement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitTry_catch_statement(this);
		}
	}

	public final Try_catch_statementContext try_catch_statement() throws RecognitionException {
		Try_catch_statementContext _localctx = new Try_catch_statementContext(_ctx, getState());
		enterRule(_localctx, 36, RULE_try_catch_statement);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1261);
			match(BEGIN);
			setState(1262);
			match(TRY);
			setState(1264);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,26,_ctx) ) {
			case 1:
				{
				setState(1263);
				match(SEMI);
				}
				break;
			}
			setState(1267);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,27,_ctx) ) {
			case 1:
				{
				setState(1266);
				((Try_catch_statementContext)_localctx).try_clauses = sql_clauses();
				}
				break;
			}
			setState(1269);
			match(END);
			setState(1270);
			match(TRY);
			setState(1272);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==SEMI) {
				{
				setState(1271);
				match(SEMI);
				}
			}

			setState(1274);
			match(BEGIN);
			setState(1275);
			match(CATCH);
			setState(1277);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,29,_ctx) ) {
			case 1:
				{
				setState(1276);
				match(SEMI);
				}
				break;
			}
			setState(1280);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,30,_ctx) ) {
			case 1:
				{
				setState(1279);
				((Try_catch_statementContext)_localctx).catch_clauses = sql_clauses();
				}
				break;
			}
			setState(1282);
			match(END);
			setState(1283);
			match(CATCH);
			setState(1285);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,31,_ctx) ) {
			case 1:
				{
				setState(1284);
				match(SEMI);
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Waitfor_statementContext extends ParserRuleContext {
		public TerminalNode WAITFOR() { return getToken(TSqlParser.WAITFOR, 0); }
		public Receive_statementContext receive_statement() {
			return getRuleContext(Receive_statementContext.class,0);
		}
		public TerminalNode COMMA() { return getToken(TSqlParser.COMMA, 0); }
		public TimeContext time() {
			return getRuleContext(TimeContext.class,0);
		}
		public ExpressionContext expression() {
			return getRuleContext(ExpressionContext.class,0);
		}
		public TerminalNode SEMI() { return getToken(TSqlParser.SEMI, 0); }
		public TerminalNode DELAY() { return getToken(TSqlParser.DELAY, 0); }
		public TerminalNode TIME() { return getToken(TSqlParser.TIME, 0); }
		public TerminalNode TIMEOUT() { return getToken(TSqlParser.TIMEOUT, 0); }
		public Waitfor_statementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_waitfor_statement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterWaitfor_statement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitWaitfor_statement(this);
		}
	}

	public final Waitfor_statementContext waitfor_statement() throws RecognitionException {
		Waitfor_statementContext _localctx = new Waitfor_statementContext(_ctx, getState());
		enterRule(_localctx, 38, RULE_waitfor_statement);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1287);
			match(WAITFOR);
			setState(1289);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,32,_ctx) ) {
			case 1:
				{
				setState(1288);
				receive_statement();
				}
				break;
			}
			setState(1292);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==COMMA) {
				{
				setState(1291);
				match(COMMA);
				}
			}

			setState(1296);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,34,_ctx) ) {
			case 1:
				{
				setState(1294);
				_la = _input.LA(1);
				if ( !(_la==DELAY || _la==TIME || _la==TIMEOUT) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(1295);
				time();
				}
				break;
			}
			setState(1299);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,35,_ctx) ) {
			case 1:
				{
				setState(1298);
				expression(0);
				}
				break;
			}
			setState(1302);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,36,_ctx) ) {
			case 1:
				{
				setState(1301);
				match(SEMI);
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class While_statementContext extends ParserRuleContext {
		public TerminalNode WHILE() { return getToken(TSqlParser.WHILE, 0); }
		public Search_conditionContext search_condition() {
			return getRuleContext(Search_conditionContext.class,0);
		}
		public Sql_clauseContext sql_clause() {
			return getRuleContext(Sql_clauseContext.class,0);
		}
		public TerminalNode BREAK() { return getToken(TSqlParser.BREAK, 0); }
		public TerminalNode CONTINUE() { return getToken(TSqlParser.CONTINUE, 0); }
		public TerminalNode SEMI() { return getToken(TSqlParser.SEMI, 0); }
		public While_statementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_while_statement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterWhile_statement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitWhile_statement(this);
		}
	}

	public final While_statementContext while_statement() throws RecognitionException {
		While_statementContext _localctx = new While_statementContext(_ctx, getState());
		enterRule(_localctx, 40, RULE_while_statement);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1304);
			match(WHILE);
			setState(1305);
			search_condition();
			setState(1315);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,39,_ctx) ) {
			case 1:
				{
				setState(1306);
				sql_clause();
				}
				break;
			case 2:
				{
				setState(1307);
				match(BREAK);
				setState(1309);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,37,_ctx) ) {
				case 1:
					{
					setState(1308);
					match(SEMI);
					}
					break;
				}
				}
				break;
			case 3:
				{
				setState(1311);
				match(CONTINUE);
				setState(1313);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,38,_ctx) ) {
				case 1:
					{
					setState(1312);
					match(SEMI);
					}
					break;
				}
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Print_statementContext extends ParserRuleContext {
		public TerminalNode PRINT() { return getToken(TSqlParser.PRINT, 0); }
		public ExpressionContext expression() {
			return getRuleContext(ExpressionContext.class,0);
		}
		public TerminalNode DOUBLE_QUOTE_ID() { return getToken(TSqlParser.DOUBLE_QUOTE_ID, 0); }
		public List COMMA() { return getTokens(TSqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(TSqlParser.COMMA, i);
		}
		public List LOCAL_ID() { return getTokens(TSqlParser.LOCAL_ID); }
		public TerminalNode LOCAL_ID(int i) {
			return getToken(TSqlParser.LOCAL_ID, i);
		}
		public TerminalNode SEMI() { return getToken(TSqlParser.SEMI, 0); }
		public Print_statementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_print_statement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterPrint_statement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitPrint_statement(this);
		}
	}

	public final Print_statementContext print_statement() throws RecognitionException {
		Print_statementContext _localctx = new Print_statementContext(_ctx, getState());
		enterRule(_localctx, 42, RULE_print_statement);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1317);
			match(PRINT);
			setState(1320);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,40,_ctx) ) {
			case 1:
				{
				setState(1318);
				expression(0);
				}
				break;
			case 2:
				{
				setState(1319);
				match(DOUBLE_QUOTE_ID);
				}
				break;
			}
			setState(1326);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA) {
				{
				{
				setState(1322);
				match(COMMA);
				setState(1323);
				match(LOCAL_ID);
				}
				}
				setState(1328);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			setState(1330);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,42,_ctx) ) {
			case 1:
				{
				setState(1329);
				match(SEMI);
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Raiseerror_statementContext extends ParserRuleContext {
		public Token msg;
		public Constant_LOCAL_IDContext severity;
		public Constant_LOCAL_IDContext state;
		public Token formatstring;
		public Token argument;
		public TerminalNode RAISERROR() { return getToken(TSqlParser.RAISERROR, 0); }
		public TerminalNode LR_BRACKET() { return getToken(TSqlParser.LR_BRACKET, 0); }
		public List COMMA() { return getTokens(TSqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(TSqlParser.COMMA, i);
		}
		public TerminalNode RR_BRACKET() { return getToken(TSqlParser.RR_BRACKET, 0); }
		public List constant_LOCAL_ID() {
			return getRuleContexts(Constant_LOCAL_IDContext.class);
		}
		public Constant_LOCAL_IDContext constant_LOCAL_ID(int i) {
			return getRuleContext(Constant_LOCAL_IDContext.class,i);
		}
		public List DECIMAL() { return getTokens(TSqlParser.DECIMAL); }
		public TerminalNode DECIMAL(int i) {
			return getToken(TSqlParser.DECIMAL, i);
		}
		public List STRING() { return getTokens(TSqlParser.STRING); }
		public TerminalNode STRING(int i) {
			return getToken(TSqlParser.STRING, i);
		}
		public List LOCAL_ID() { return getTokens(TSqlParser.LOCAL_ID); }
		public TerminalNode LOCAL_ID(int i) {
			return getToken(TSqlParser.LOCAL_ID, i);
		}
		public TerminalNode WITH() { return getToken(TSqlParser.WITH, 0); }
		public TerminalNode SEMI() { return getToken(TSqlParser.SEMI, 0); }
		public TerminalNode LOG() { return getToken(TSqlParser.LOG, 0); }
		public TerminalNode SETERROR() { return getToken(TSqlParser.SETERROR, 0); }
		public TerminalNode DOUBLE_QUOTE_ID() { return getToken(TSqlParser.DOUBLE_QUOTE_ID, 0); }
		public Raiseerror_statementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_raiseerror_statement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterRaiseerror_statement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitRaiseerror_statement(this);
		}
	}

	public final Raiseerror_statementContext raiseerror_statement() throws RecognitionException {
		Raiseerror_statementContext _localctx = new Raiseerror_statementContext(_ctx, getState());
		enterRule(_localctx, 44, RULE_raiseerror_statement);
		int _la;
		try {
			setState(1364);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,47,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(1332);
				match(RAISERROR);
				setState(1333);
				match(LR_BRACKET);
				setState(1334);
				((Raiseerror_statementContext)_localctx).msg = _input.LT(1);
				_la = _input.LA(1);
				if ( !(((((_la - 793)) & ~0x3f) == 0 && ((1L << (_la - 793)) & ((1L << (LOCAL_ID - 793)) | (1L << (DECIMAL - 793)) | (1L << (STRING - 793)))) != 0)) ) {
					((Raiseerror_statementContext)_localctx).msg = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(1335);
				match(COMMA);
				setState(1336);
				((Raiseerror_statementContext)_localctx).severity = constant_LOCAL_ID();
				setState(1337);
				match(COMMA);
				setState(1338);
				((Raiseerror_statementContext)_localctx).state = constant_LOCAL_ID();
				setState(1343);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA) {
					{
					{
					setState(1339);
					match(COMMA);
					setState(1340);
					constant_LOCAL_ID();
					}
					}
					setState(1345);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				setState(1346);
				match(RR_BRACKET);
				setState(1349);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,44,_ctx) ) {
				case 1:
					{
					setState(1347);
					match(WITH);
					setState(1348);
					_la = _input.LA(1);
					if ( !(_la==LOG || _la==SETERROR) ) {
					_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					}
					break;
				}
				setState(1352);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,45,_ctx) ) {
				case 1:
					{
					setState(1351);
					match(SEMI);
					}
					break;
				}
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(1354);
				match(RAISERROR);
				setState(1355);
				match(DECIMAL);
				setState(1356);
				((Raiseerror_statementContext)_localctx).formatstring = _input.LT(1);
				_la = _input.LA(1);
				if ( !(((((_la - 790)) & ~0x3f) == 0 && ((1L << (_la - 790)) & ((1L << (DOUBLE_QUOTE_ID - 790)) | (1L << (LOCAL_ID - 790)) | (1L << (STRING - 790)))) != 0)) ) {
					((Raiseerror_statementContext)_localctx).formatstring = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(1361);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA) {
					{
					{
					setState(1357);
					match(COMMA);
					setState(1358);
					((Raiseerror_statementContext)_localctx).argument = _input.LT(1);
					_la = _input.LA(1);
					if ( !(((((_la - 793)) & ~0x3f) == 0 && ((1L << (_la - 793)) & ((1L << (LOCAL_ID - 793)) | (1L << (DECIMAL - 793)) | (1L << (STRING - 793)))) != 0)) ) {
						((Raiseerror_statementContext)_localctx).argument = (Token)_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					}
					}
					setState(1363);
					_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 Empty_statementContext extends ParserRuleContext {
		public TerminalNode SEMI() { return getToken(TSqlParser.SEMI, 0); }
		public Empty_statementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_empty_statement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterEmpty_statement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitEmpty_statement(this);
		}
	}

	public final Empty_statementContext empty_statement() throws RecognitionException {
		Empty_statementContext _localctx = new Empty_statementContext(_ctx, getState());
		enterRule(_localctx, 46, RULE_empty_statement);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1366);
			match(SEMI);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Another_statementContext extends ParserRuleContext {
		public Declare_statementContext declare_statement() {
			return getRuleContext(Declare_statementContext.class,0);
		}
		public Cursor_statementContext cursor_statement() {
			return getRuleContext(Cursor_statementContext.class,0);
		}
		public Conversation_statementContext conversation_statement() {
			return getRuleContext(Conversation_statementContext.class,0);
		}
		public Create_contractContext create_contract() {
			return getRuleContext(Create_contractContext.class,0);
		}
		public Create_queueContext create_queue() {
			return getRuleContext(Create_queueContext.class,0);
		}
		public Alter_queueContext alter_queue() {
			return getRuleContext(Alter_queueContext.class,0);
		}
		public Execute_statementContext execute_statement() {
			return getRuleContext(Execute_statementContext.class,0);
		}
		public Message_statementContext message_statement() {
			return getRuleContext(Message_statementContext.class,0);
		}
		public Security_statementContext security_statement() {
			return getRuleContext(Security_statementContext.class,0);
		}
		public Set_statementContext set_statement() {
			return getRuleContext(Set_statementContext.class,0);
		}
		public Transaction_statementContext transaction_statement() {
			return getRuleContext(Transaction_statementContext.class,0);
		}
		public Use_statementContext use_statement() {
			return getRuleContext(Use_statementContext.class,0);
		}
		public Setuser_statementContext setuser_statement() {
			return getRuleContext(Setuser_statementContext.class,0);
		}
		public Another_statementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_another_statement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterAnother_statement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitAnother_statement(this);
		}
	}

	public final Another_statementContext another_statement() throws RecognitionException {
		Another_statementContext _localctx = new Another_statementContext(_ctx, getState());
		enterRule(_localctx, 48, RULE_another_statement);
		try {
			setState(1381);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,48,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(1368);
				declare_statement();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(1369);
				cursor_statement();
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(1370);
				conversation_statement();
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(1371);
				create_contract();
				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(1372);
				create_queue();
				}
				break;
			case 6:
				enterOuterAlt(_localctx, 6);
				{
				setState(1373);
				alter_queue();
				}
				break;
			case 7:
				enterOuterAlt(_localctx, 7);
				{
				setState(1374);
				execute_statement();
				}
				break;
			case 8:
				enterOuterAlt(_localctx, 8);
				{
				setState(1375);
				message_statement();
				}
				break;
			case 9:
				enterOuterAlt(_localctx, 9);
				{
				setState(1376);
				security_statement();
				}
				break;
			case 10:
				enterOuterAlt(_localctx, 10);
				{
				setState(1377);
				set_statement();
				}
				break;
			case 11:
				enterOuterAlt(_localctx, 11);
				{
				setState(1378);
				transaction_statement();
				}
				break;
			case 12:
				enterOuterAlt(_localctx, 12);
				{
				setState(1379);
				use_statement();
				}
				break;
			case 13:
				enterOuterAlt(_localctx, 13);
				{
				setState(1380);
				setuser_statement();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Alter_application_roleContext extends ParserRuleContext {
		public IdContext appliction_role;
		public IdContext new_application_role_name;
		public Token application_role_password;
		public IdContext app_role_default_schema;
		public TerminalNode ALTER() { return getToken(TSqlParser.ALTER, 0); }
		public TerminalNode APPLICATION() { return getToken(TSqlParser.APPLICATION, 0); }
		public TerminalNode ROLE() { return getToken(TSqlParser.ROLE, 0); }
		public TerminalNode WITH() { return getToken(TSqlParser.WITH, 0); }
		public List id() {
			return getRuleContexts(IdContext.class);
		}
		public IdContext id(int i) {
			return getRuleContext(IdContext.class,i);
		}
		public TerminalNode NAME() { return getToken(TSqlParser.NAME, 0); }
		public List EQUAL() { return getTokens(TSqlParser.EQUAL); }
		public TerminalNode EQUAL(int i) {
			return getToken(TSqlParser.EQUAL, i);
		}
		public TerminalNode PASSWORD() { return getToken(TSqlParser.PASSWORD, 0); }
		public TerminalNode DEFAULT_SCHEMA() { return getToken(TSqlParser.DEFAULT_SCHEMA, 0); }
		public TerminalNode STRING() { return getToken(TSqlParser.STRING, 0); }
		public List COMMA() { return getTokens(TSqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(TSqlParser.COMMA, i);
		}
		public Alter_application_roleContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alter_application_role; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterAlter_application_role(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitAlter_application_role(this);
		}
	}

	public final Alter_application_roleContext alter_application_role() throws RecognitionException {
		Alter_application_roleContext _localctx = new Alter_application_roleContext(_ctx, getState());
		enterRule(_localctx, 50, RULE_alter_application_role);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1383);
			match(ALTER);
			setState(1384);
			match(APPLICATION);
			setState(1385);
			match(ROLE);
			setState(1386);
			((Alter_application_roleContext)_localctx).appliction_role = id();
			setState(1387);
			match(WITH);
			setState(1394);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,50,_ctx) ) {
			case 1:
				{
				setState(1389);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==COMMA) {
					{
					setState(1388);
					match(COMMA);
					}
				}

				setState(1391);
				match(NAME);
				setState(1392);
				match(EQUAL);
				setState(1393);
				((Alter_application_roleContext)_localctx).new_application_role_name = id();
				}
				break;
			}
			setState(1402);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,52,_ctx) ) {
			case 1:
				{
				setState(1397);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==COMMA) {
					{
					setState(1396);
					match(COMMA);
					}
				}

				setState(1399);
				match(PASSWORD);
				setState(1400);
				match(EQUAL);
				setState(1401);
				((Alter_application_roleContext)_localctx).application_role_password = match(STRING);
				}
				break;
			}
			setState(1410);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==DEFAULT_SCHEMA || _la==COMMA) {
				{
				setState(1405);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==COMMA) {
					{
					setState(1404);
					match(COMMA);
					}
				}

				setState(1407);
				match(DEFAULT_SCHEMA);
				setState(1408);
				match(EQUAL);
				setState(1409);
				((Alter_application_roleContext)_localctx).app_role_default_schema = id();
				}
			}

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

	public static class Create_application_roleContext extends ParserRuleContext {
		public IdContext appliction_role;
		public Token application_role_password;
		public IdContext app_role_default_schema;
		public TerminalNode CREATE() { return getToken(TSqlParser.CREATE, 0); }
		public TerminalNode APPLICATION() { return getToken(TSqlParser.APPLICATION, 0); }
		public TerminalNode ROLE() { return getToken(TSqlParser.ROLE, 0); }
		public TerminalNode WITH() { return getToken(TSqlParser.WITH, 0); }
		public List id() {
			return getRuleContexts(IdContext.class);
		}
		public IdContext id(int i) {
			return getRuleContext(IdContext.class,i);
		}
		public TerminalNode PASSWORD() { return getToken(TSqlParser.PASSWORD, 0); }
		public List EQUAL() { return getTokens(TSqlParser.EQUAL); }
		public TerminalNode EQUAL(int i) {
			return getToken(TSqlParser.EQUAL, i);
		}
		public TerminalNode DEFAULT_SCHEMA() { return getToken(TSqlParser.DEFAULT_SCHEMA, 0); }
		public TerminalNode STRING() { return getToken(TSqlParser.STRING, 0); }
		public List COMMA() { return getTokens(TSqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(TSqlParser.COMMA, i);
		}
		public Create_application_roleContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_create_application_role; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterCreate_application_role(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitCreate_application_role(this);
		}
	}

	public final Create_application_roleContext create_application_role() throws RecognitionException {
		Create_application_roleContext _localctx = new Create_application_roleContext(_ctx, getState());
		enterRule(_localctx, 52, RULE_create_application_role);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1412);
			match(CREATE);
			setState(1413);
			match(APPLICATION);
			setState(1414);
			match(ROLE);
			setState(1415);
			((Create_application_roleContext)_localctx).appliction_role = id();
			setState(1416);
			match(WITH);
			setState(1423);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,56,_ctx) ) {
			case 1:
				{
				setState(1418);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==COMMA) {
					{
					setState(1417);
					match(COMMA);
					}
				}

				setState(1420);
				match(PASSWORD);
				setState(1421);
				match(EQUAL);
				setState(1422);
				((Create_application_roleContext)_localctx).application_role_password = match(STRING);
				}
				break;
			}
			setState(1431);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==DEFAULT_SCHEMA || _la==COMMA) {
				{
				setState(1426);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==COMMA) {
					{
					setState(1425);
					match(COMMA);
					}
				}

				setState(1428);
				match(DEFAULT_SCHEMA);
				setState(1429);
				match(EQUAL);
				setState(1430);
				((Create_application_roleContext)_localctx).app_role_default_schema = id();
				}
			}

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

	public static class Drop_aggregateContext extends ParserRuleContext {
		public IdContext schema_name;
		public IdContext aggregate_name;
		public TerminalNode DROP() { return getToken(TSqlParser.DROP, 0); }
		public TerminalNode AGGREGATE() { return getToken(TSqlParser.AGGREGATE, 0); }
		public List id() {
			return getRuleContexts(IdContext.class);
		}
		public IdContext id(int i) {
			return getRuleContext(IdContext.class,i);
		}
		public TerminalNode IF() { return getToken(TSqlParser.IF, 0); }
		public TerminalNode EXISTS() { return getToken(TSqlParser.EXISTS, 0); }
		public TerminalNode DOT() { return getToken(TSqlParser.DOT, 0); }
		public Drop_aggregateContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_drop_aggregate; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterDrop_aggregate(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitDrop_aggregate(this);
		}
	}

	public final Drop_aggregateContext drop_aggregate() throws RecognitionException {
		Drop_aggregateContext _localctx = new Drop_aggregateContext(_ctx, getState());
		enterRule(_localctx, 54, RULE_drop_aggregate);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1433);
			match(DROP);
			setState(1434);
			match(AGGREGATE);
			setState(1437);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==IF) {
				{
				setState(1435);
				match(IF);
				setState(1436);
				match(EXISTS);
				}
			}

			setState(1442);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,60,_ctx) ) {
			case 1:
				{
				setState(1439);
				((Drop_aggregateContext)_localctx).schema_name = id();
				setState(1440);
				match(DOT);
				}
				break;
			}
			setState(1444);
			((Drop_aggregateContext)_localctx).aggregate_name = id();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Drop_application_roleContext extends ParserRuleContext {
		public IdContext rolename;
		public TerminalNode DROP() { return getToken(TSqlParser.DROP, 0); }
		public TerminalNode APPLICATION() { return getToken(TSqlParser.APPLICATION, 0); }
		public TerminalNode ROLE() { return getToken(TSqlParser.ROLE, 0); }
		public IdContext id() {
			return getRuleContext(IdContext.class,0);
		}
		public Drop_application_roleContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_drop_application_role; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterDrop_application_role(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitDrop_application_role(this);
		}
	}

	public final Drop_application_roleContext drop_application_role() throws RecognitionException {
		Drop_application_roleContext _localctx = new Drop_application_roleContext(_ctx, getState());
		enterRule(_localctx, 56, RULE_drop_application_role);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1446);
			match(DROP);
			setState(1447);
			match(APPLICATION);
			setState(1448);
			match(ROLE);
			setState(1449);
			((Drop_application_roleContext)_localctx).rolename = id();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Alter_assemblyContext extends ParserRuleContext {
		public IdContext assembly_name;
		public Alter_assembly_startContext alter_assembly_start() {
			return getRuleContext(Alter_assembly_startContext.class,0);
		}
		public Alter_assembly_clauseContext alter_assembly_clause() {
			return getRuleContext(Alter_assembly_clauseContext.class,0);
		}
		public IdContext id() {
			return getRuleContext(IdContext.class,0);
		}
		public Alter_assemblyContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alter_assembly; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterAlter_assembly(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitAlter_assembly(this);
		}
	}

	public final Alter_assemblyContext alter_assembly() throws RecognitionException {
		Alter_assemblyContext _localctx = new Alter_assemblyContext(_ctx, getState());
		enterRule(_localctx, 58, RULE_alter_assembly);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1451);
			alter_assembly_start();
			setState(1452);
			((Alter_assemblyContext)_localctx).assembly_name = id();
			setState(1453);
			alter_assembly_clause();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Alter_assembly_startContext extends ParserRuleContext {
		public TerminalNode ALTER() { return getToken(TSqlParser.ALTER, 0); }
		public TerminalNode ASSEMBLY() { return getToken(TSqlParser.ASSEMBLY, 0); }
		public Alter_assembly_startContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alter_assembly_start; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterAlter_assembly_start(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitAlter_assembly_start(this);
		}
	}

	public final Alter_assembly_startContext alter_assembly_start() throws RecognitionException {
		Alter_assembly_startContext _localctx = new Alter_assembly_startContext(_ctx, getState());
		enterRule(_localctx, 60, RULE_alter_assembly_start);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1455);
			match(ALTER);
			setState(1456);
			match(ASSEMBLY);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Alter_assembly_clauseContext extends ParserRuleContext {
		public Alter_assembly_from_clauseContext alter_assembly_from_clause() {
			return getRuleContext(Alter_assembly_from_clauseContext.class,0);
		}
		public Alter_assembly_with_clauseContext alter_assembly_with_clause() {
			return getRuleContext(Alter_assembly_with_clauseContext.class,0);
		}
		public Alter_assembly_drop_clauseContext alter_assembly_drop_clause() {
			return getRuleContext(Alter_assembly_drop_clauseContext.class,0);
		}
		public Alter_assembly_add_clauseContext alter_assembly_add_clause() {
			return getRuleContext(Alter_assembly_add_clauseContext.class,0);
		}
		public Alter_assembly_clauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alter_assembly_clause; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterAlter_assembly_clause(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitAlter_assembly_clause(this);
		}
	}

	public final Alter_assembly_clauseContext alter_assembly_clause() throws RecognitionException {
		Alter_assembly_clauseContext _localctx = new Alter_assembly_clauseContext(_ctx, getState());
		enterRule(_localctx, 62, RULE_alter_assembly_clause);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1459);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==FROM) {
				{
				setState(1458);
				alter_assembly_from_clause();
				}
			}

			setState(1462);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,62,_ctx) ) {
			case 1:
				{
				setState(1461);
				alter_assembly_with_clause();
				}
				break;
			}
			setState(1465);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,63,_ctx) ) {
			case 1:
				{
				setState(1464);
				alter_assembly_drop_clause();
				}
				break;
			}
			setState(1468);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==ADD) {
				{
				setState(1467);
				alter_assembly_add_clause();
				}
			}

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

	public static class Alter_assembly_from_clauseContext extends ParserRuleContext {
		public Alter_assembly_from_clause_startContext alter_assembly_from_clause_start() {
			return getRuleContext(Alter_assembly_from_clause_startContext.class,0);
		}
		public Client_assembly_specifierContext client_assembly_specifier() {
			return getRuleContext(Client_assembly_specifierContext.class,0);
		}
		public Alter_assembly_file_bitsContext alter_assembly_file_bits() {
			return getRuleContext(Alter_assembly_file_bitsContext.class,0);
		}
		public Alter_assembly_from_clauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alter_assembly_from_clause; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterAlter_assembly_from_clause(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitAlter_assembly_from_clause(this);
		}
	}

	public final Alter_assembly_from_clauseContext alter_assembly_from_clause() throws RecognitionException {
		Alter_assembly_from_clauseContext _localctx = new Alter_assembly_from_clauseContext(_ctx, getState());
		enterRule(_localctx, 64, RULE_alter_assembly_from_clause);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1470);
			alter_assembly_from_clause_start();
			setState(1473);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case DOUBLE_BACK_SLASH:
			case DISK_DRIVE:
			case STRING:
				{
				setState(1471);
				client_assembly_specifier();
				}
				break;
			case AS:
				{
				setState(1472);
				alter_assembly_file_bits();
				}
				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 Alter_assembly_from_clause_startContext extends ParserRuleContext {
		public TerminalNode FROM() { return getToken(TSqlParser.FROM, 0); }
		public Alter_assembly_from_clause_startContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alter_assembly_from_clause_start; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterAlter_assembly_from_clause_start(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitAlter_assembly_from_clause_start(this);
		}
	}

	public final Alter_assembly_from_clause_startContext alter_assembly_from_clause_start() throws RecognitionException {
		Alter_assembly_from_clause_startContext _localctx = new Alter_assembly_from_clause_startContext(_ctx, getState());
		enterRule(_localctx, 66, RULE_alter_assembly_from_clause_start);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1475);
			match(FROM);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Alter_assembly_drop_clauseContext extends ParserRuleContext {
		public Alter_assembly_dropContext alter_assembly_drop() {
			return getRuleContext(Alter_assembly_dropContext.class,0);
		}
		public Alter_assembly_drop_multiple_filesContext alter_assembly_drop_multiple_files() {
			return getRuleContext(Alter_assembly_drop_multiple_filesContext.class,0);
		}
		public Alter_assembly_drop_clauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alter_assembly_drop_clause; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterAlter_assembly_drop_clause(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitAlter_assembly_drop_clause(this);
		}
	}

	public final Alter_assembly_drop_clauseContext alter_assembly_drop_clause() throws RecognitionException {
		Alter_assembly_drop_clauseContext _localctx = new Alter_assembly_drop_clauseContext(_ctx, getState());
		enterRule(_localctx, 68, RULE_alter_assembly_drop_clause);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1477);
			alter_assembly_drop();
			setState(1478);
			alter_assembly_drop_multiple_files();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Alter_assembly_drop_multiple_filesContext extends ParserRuleContext {
		public TerminalNode ALL() { return getToken(TSqlParser.ALL, 0); }
		public Multiple_local_filesContext multiple_local_files() {
			return getRuleContext(Multiple_local_filesContext.class,0);
		}
		public Alter_assembly_drop_multiple_filesContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alter_assembly_drop_multiple_files; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterAlter_assembly_drop_multiple_files(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitAlter_assembly_drop_multiple_files(this);
		}
	}

	public final Alter_assembly_drop_multiple_filesContext alter_assembly_drop_multiple_files() throws RecognitionException {
		Alter_assembly_drop_multiple_filesContext _localctx = new Alter_assembly_drop_multiple_filesContext(_ctx, getState());
		enterRule(_localctx, 70, RULE_alter_assembly_drop_multiple_files);
		try {
			setState(1482);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case ALL:
				enterOuterAlt(_localctx, 1);
				{
				setState(1480);
				match(ALL);
				}
				break;
			case DISK_DRIVE:
			case SINGLE_QUOTE:
				enterOuterAlt(_localctx, 2);
				{
				setState(1481);
				multiple_local_files();
				}
				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 Alter_assembly_dropContext extends ParserRuleContext {
		public TerminalNode DROP() { return getToken(TSqlParser.DROP, 0); }
		public Alter_assembly_dropContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alter_assembly_drop; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterAlter_assembly_drop(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitAlter_assembly_drop(this);
		}
	}

	public final Alter_assembly_dropContext alter_assembly_drop() throws RecognitionException {
		Alter_assembly_dropContext _localctx = new Alter_assembly_dropContext(_ctx, getState());
		enterRule(_localctx, 72, RULE_alter_assembly_drop);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1484);
			match(DROP);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Alter_assembly_add_clauseContext extends ParserRuleContext {
		public Alter_asssembly_add_clause_startContext alter_asssembly_add_clause_start() {
			return getRuleContext(Alter_asssembly_add_clause_startContext.class,0);
		}
		public Alter_assembly_client_file_clauseContext alter_assembly_client_file_clause() {
			return getRuleContext(Alter_assembly_client_file_clauseContext.class,0);
		}
		public Alter_assembly_add_clauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alter_assembly_add_clause; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterAlter_assembly_add_clause(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitAlter_assembly_add_clause(this);
		}
	}

	public final Alter_assembly_add_clauseContext alter_assembly_add_clause() throws RecognitionException {
		Alter_assembly_add_clauseContext _localctx = new Alter_assembly_add_clauseContext(_ctx, getState());
		enterRule(_localctx, 74, RULE_alter_assembly_add_clause);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1486);
			alter_asssembly_add_clause_start();
			setState(1487);
			alter_assembly_client_file_clause();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Alter_asssembly_add_clause_startContext extends ParserRuleContext {
		public TerminalNode ADD() { return getToken(TSqlParser.ADD, 0); }
		public TerminalNode FILE() { return getToken(TSqlParser.FILE, 0); }
		public TerminalNode FROM() { return getToken(TSqlParser.FROM, 0); }
		public Alter_asssembly_add_clause_startContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alter_asssembly_add_clause_start; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterAlter_asssembly_add_clause_start(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitAlter_asssembly_add_clause_start(this);
		}
	}

	public final Alter_asssembly_add_clause_startContext alter_asssembly_add_clause_start() throws RecognitionException {
		Alter_asssembly_add_clause_startContext _localctx = new Alter_asssembly_add_clause_startContext(_ctx, getState());
		enterRule(_localctx, 76, RULE_alter_asssembly_add_clause_start);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1489);
			match(ADD);
			setState(1490);
			match(FILE);
			setState(1491);
			match(FROM);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Alter_assembly_client_file_clauseContext extends ParserRuleContext {
		public Alter_assembly_file_nameContext alter_assembly_file_name() {
			return getRuleContext(Alter_assembly_file_nameContext.class,0);
		}
		public Alter_assembly_asContext alter_assembly_as() {
			return getRuleContext(Alter_assembly_asContext.class,0);
		}
		public IdContext id() {
			return getRuleContext(IdContext.class,0);
		}
		public Alter_assembly_client_file_clauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alter_assembly_client_file_clause; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterAlter_assembly_client_file_clause(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitAlter_assembly_client_file_clause(this);
		}
	}

	public final Alter_assembly_client_file_clauseContext alter_assembly_client_file_clause() throws RecognitionException {
		Alter_assembly_client_file_clauseContext _localctx = new Alter_assembly_client_file_clauseContext(_ctx, getState());
		enterRule(_localctx, 78, RULE_alter_assembly_client_file_clause);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1493);
			alter_assembly_file_name();
			setState(1497);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==AS) {
				{
				setState(1494);
				alter_assembly_as();
				setState(1495);
				id();
				}
			}

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

	public static class Alter_assembly_file_nameContext extends ParserRuleContext {
		public TerminalNode STRING() { return getToken(TSqlParser.STRING, 0); }
		public Alter_assembly_file_nameContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alter_assembly_file_name; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterAlter_assembly_file_name(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitAlter_assembly_file_name(this);
		}
	}

	public final Alter_assembly_file_nameContext alter_assembly_file_name() throws RecognitionException {
		Alter_assembly_file_nameContext _localctx = new Alter_assembly_file_nameContext(_ctx, getState());
		enterRule(_localctx, 80, RULE_alter_assembly_file_name);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1499);
			match(STRING);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Alter_assembly_file_bitsContext extends ParserRuleContext {
		public Alter_assembly_asContext alter_assembly_as() {
			return getRuleContext(Alter_assembly_asContext.class,0);
		}
		public IdContext id() {
			return getRuleContext(IdContext.class,0);
		}
		public Alter_assembly_file_bitsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alter_assembly_file_bits; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterAlter_assembly_file_bits(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitAlter_assembly_file_bits(this);
		}
	}

	public final Alter_assembly_file_bitsContext alter_assembly_file_bits() throws RecognitionException {
		Alter_assembly_file_bitsContext _localctx = new Alter_assembly_file_bitsContext(_ctx, getState());
		enterRule(_localctx, 82, RULE_alter_assembly_file_bits);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1501);
			alter_assembly_as();
			setState(1502);
			id();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Alter_assembly_asContext extends ParserRuleContext {
		public TerminalNode AS() { return getToken(TSqlParser.AS, 0); }
		public Alter_assembly_asContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alter_assembly_as; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterAlter_assembly_as(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitAlter_assembly_as(this);
		}
	}

	public final Alter_assembly_asContext alter_assembly_as() throws RecognitionException {
		Alter_assembly_asContext _localctx = new Alter_assembly_asContext(_ctx, getState());
		enterRule(_localctx, 84, RULE_alter_assembly_as);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1504);
			match(AS);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Alter_assembly_with_clauseContext extends ParserRuleContext {
		public Alter_assembly_withContext alter_assembly_with() {
			return getRuleContext(Alter_assembly_withContext.class,0);
		}
		public Assembly_optionContext assembly_option() {
			return getRuleContext(Assembly_optionContext.class,0);
		}
		public Alter_assembly_with_clauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alter_assembly_with_clause; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterAlter_assembly_with_clause(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitAlter_assembly_with_clause(this);
		}
	}

	public final Alter_assembly_with_clauseContext alter_assembly_with_clause() throws RecognitionException {
		Alter_assembly_with_clauseContext _localctx = new Alter_assembly_with_clauseContext(_ctx, getState());
		enterRule(_localctx, 86, RULE_alter_assembly_with_clause);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1506);
			alter_assembly_with();
			setState(1507);
			assembly_option(0);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Alter_assembly_withContext extends ParserRuleContext {
		public TerminalNode WITH() { return getToken(TSqlParser.WITH, 0); }
		public Alter_assembly_withContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alter_assembly_with; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterAlter_assembly_with(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitAlter_assembly_with(this);
		}
	}

	public final Alter_assembly_withContext alter_assembly_with() throws RecognitionException {
		Alter_assembly_withContext _localctx = new Alter_assembly_withContext(_ctx, getState());
		enterRule(_localctx, 88, RULE_alter_assembly_with);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1509);
			match(WITH);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Client_assembly_specifierContext extends ParserRuleContext {
		public Network_file_shareContext network_file_share() {
			return getRuleContext(Network_file_shareContext.class,0);
		}
		public Local_fileContext local_file() {
			return getRuleContext(Local_fileContext.class,0);
		}
		public TerminalNode STRING() { return getToken(TSqlParser.STRING, 0); }
		public Client_assembly_specifierContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_client_assembly_specifier; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterClient_assembly_specifier(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitClient_assembly_specifier(this);
		}
	}

	public final Client_assembly_specifierContext client_assembly_specifier() throws RecognitionException {
		Client_assembly_specifierContext _localctx = new Client_assembly_specifierContext(_ctx, getState());
		enterRule(_localctx, 90, RULE_client_assembly_specifier);
		try {
			setState(1514);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case DOUBLE_BACK_SLASH:
				enterOuterAlt(_localctx, 1);
				{
				setState(1511);
				network_file_share();
				}
				break;
			case DISK_DRIVE:
				enterOuterAlt(_localctx, 2);
				{
				setState(1512);
				local_file();
				}
				break;
			case STRING:
				enterOuterAlt(_localctx, 3);
				{
				setState(1513);
				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 Assembly_optionContext extends ParserRuleContext {
		public TerminalNode PERMISSION_SET() { return getToken(TSqlParser.PERMISSION_SET, 0); }
		public TerminalNode EQUAL() { return getToken(TSqlParser.EQUAL, 0); }
		public TerminalNode SAFE() { return getToken(TSqlParser.SAFE, 0); }
		public TerminalNode EXTERNAL_ACCESS() { return getToken(TSqlParser.EXTERNAL_ACCESS, 0); }
		public TerminalNode UNSAFE() { return getToken(TSqlParser.UNSAFE, 0); }
		public TerminalNode VISIBILITY() { return getToken(TSqlParser.VISIBILITY, 0); }
		public TerminalNode ON() { return getToken(TSqlParser.ON, 0); }
		public TerminalNode OFF() { return getToken(TSqlParser.OFF, 0); }
		public TerminalNode UNCHECKED() { return getToken(TSqlParser.UNCHECKED, 0); }
		public TerminalNode DATA() { return getToken(TSqlParser.DATA, 0); }
		public Assembly_optionContext assembly_option() {
			return getRuleContext(Assembly_optionContext.class,0);
		}
		public TerminalNode COMMA() { return getToken(TSqlParser.COMMA, 0); }
		public Assembly_optionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_assembly_option; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterAssembly_option(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitAssembly_option(this);
		}
	}

	public final Assembly_optionContext assembly_option() throws RecognitionException {
		return assembly_option(0);
	}

	private Assembly_optionContext assembly_option(int _p) throws RecognitionException {
		ParserRuleContext _parentctx = _ctx;
		int _parentState = getState();
		Assembly_optionContext _localctx = new Assembly_optionContext(_ctx, _parentState);
		Assembly_optionContext _prevctx = _localctx;
		int _startState = 92;
		enterRecursionRule(_localctx, 92, RULE_assembly_option, _p);
		int _la;
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			setState(1525);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case PERMISSION_SET:
				{
				setState(1517);
				match(PERMISSION_SET);
				setState(1518);
				match(EQUAL);
				setState(1519);
				_la = _input.LA(1);
				if ( !(_la==EXTERNAL_ACCESS || _la==SAFE || _la==UNSAFE) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
				break;
			case VISIBILITY:
				{
				setState(1520);
				match(VISIBILITY);
				setState(1521);
				match(EQUAL);
				setState(1522);
				_la = _input.LA(1);
				if ( !(_la==OFF || _la==ON) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
				break;
			case UNCHECKED:
				{
				setState(1523);
				match(UNCHECKED);
				setState(1524);
				match(DATA);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			_ctx.stop = _input.LT(-1);
			setState(1531);
			_errHandler.sync(this);
			_alt = getInterpreter().adaptivePredict(_input,70,_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 Assembly_optionContext(_parentctx, _parentState);
					pushNewRecursionContext(_localctx, _startState, RULE_assembly_option);
					setState(1527);
					if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)");
					setState(1528);
					match(COMMA);
					}
					} 
				}
				setState(1533);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,70,_ctx);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			unrollRecursionContexts(_parentctx);
		}
		return _localctx;
	}

	public static class Network_file_shareContext extends ParserRuleContext {
		public Network_file_startContext network_file_start() {
			return getRuleContext(Network_file_startContext.class,0);
		}
		public Network_computerContext network_computer() {
			return getRuleContext(Network_computerContext.class,0);
		}
		public File_pathContext file_path() {
			return getRuleContext(File_pathContext.class,0);
		}
		public Network_file_shareContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_network_file_share; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterNetwork_file_share(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitNetwork_file_share(this);
		}
	}

	public final Network_file_shareContext network_file_share() throws RecognitionException {
		Network_file_shareContext _localctx = new Network_file_shareContext(_ctx, getState());
		enterRule(_localctx, 94, RULE_network_file_share);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1534);
			network_file_start();
			setState(1535);
			network_computer();
			setState(1536);
			file_path();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Network_computerContext extends ParserRuleContext {
		public IdContext computer_name;
		public IdContext id() {
			return getRuleContext(IdContext.class,0);
		}
		public Network_computerContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_network_computer; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterNetwork_computer(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitNetwork_computer(this);
		}
	}

	public final Network_computerContext network_computer() throws RecognitionException {
		Network_computerContext _localctx = new Network_computerContext(_ctx, getState());
		enterRule(_localctx, 96, RULE_network_computer);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1538);
			((Network_computerContext)_localctx).computer_name = id();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Network_file_startContext extends ParserRuleContext {
		public TerminalNode DOUBLE_BACK_SLASH() { return getToken(TSqlParser.DOUBLE_BACK_SLASH, 0); }
		public Network_file_startContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_network_file_start; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterNetwork_file_start(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitNetwork_file_start(this);
		}
	}

	public final Network_file_startContext network_file_start() throws RecognitionException {
		Network_file_startContext _localctx = new Network_file_startContext(_ctx, getState());
		enterRule(_localctx, 98, RULE_network_file_start);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1540);
			match(DOUBLE_BACK_SLASH);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class File_pathContext extends ParserRuleContext {
		public File_directory_path_separatorContext file_directory_path_separator() {
			return getRuleContext(File_directory_path_separatorContext.class,0);
		}
		public File_pathContext file_path() {
			return getRuleContext(File_pathContext.class,0);
		}
		public IdContext id() {
			return getRuleContext(IdContext.class,0);
		}
		public File_pathContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_file_path; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterFile_path(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitFile_path(this);
		}
	}

	public final File_pathContext file_path() throws RecognitionException {
		File_pathContext _localctx = new File_pathContext(_ctx, getState());
		enterRule(_localctx, 100, RULE_file_path);
		try {
			setState(1546);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case BACKSLASH:
				enterOuterAlt(_localctx, 1);
				{
				setState(1542);
				file_directory_path_separator();
				setState(1543);
				file_path();
				}
				break;
			case CALLED:
			case DATA_COMPRESSION:
			case EVENTDATA:
			case FILENAME:
			case FILLFACTOR:
			case FORCESEEK:
			case INIT:
			case KEY:
			case MASTER:
			case MAX_MEMORY:
			case OFFSETS:
			case PAGE:
			case PUBLIC:
			case R:
			case RAW:
			case RETURN:
			case RETURNS:
			case ROWCOUNT:
			case SAFETY:
			case SERVER:
			case SID:
			case SOURCE:
			case STATE:
			case START:
			case TARGET:
			case ABSOLUTE:
			case ACCENT_SENSITIVITY:
			case ACTION:
			case ACTIVATION:
			case ACTIVE:
			case ADDRESS:
			case AES_128:
			case AES_192:
			case AES_256:
			case AFFINITY:
			case AFTER:
			case AGGREGATE:
			case ALGORITHM:
			case ALLOW_ENCRYPTED_VALUE_MODIFICATIONS:
			case ALLOW_SNAPSHOT_ISOLATION:
			case ALLOWED:
			case ANSI_NULL_DEFAULT:
			case ANSI_NULLS:
			case ANSI_PADDING:
			case ANSI_WARNINGS:
			case APPLICATION_LOG:
			case APPLY:
			case ARITHABORT:
			case ASSEMBLY:
			case AUDIT:
			case AUDIT_GUID:
			case AUTO:
			case AUTO_CLEANUP:
			case AUTO_CLOSE:
			case AUTO_CREATE_STATISTICS:
			case AUTO_SHRINK:
			case AUTO_UPDATE_STATISTICS:
			case AUTO_UPDATE_STATISTICS_ASYNC:
			case AVAILABILITY:
			case AVG:
			case BACKUP_PRIORITY:
			case BEGIN_DIALOG:
			case BIGINT:
			case BINARY_BASE64:
			case BINARY_CHECKSUM:
			case BINDING:
			case BLOB_STORAGE:
			case BROKER:
			case BROKER_INSTANCE:
			case BULK_LOGGED:
			case CALLER:
			case CAP_CPU_PERCENT:
			case CAST:
			case CATALOG:
			case CATCH:
			case CHANGE_RETENTION:
			case CHANGE_TRACKING:
			case CHECKSUM:
			case CHECKSUM_AGG:
			case CLEANUP:
			case COLLECTION:
			case COLUMN_MASTER_KEY:
			case COMMITTED:
			case COMPATIBILITY_LEVEL:
			case CONCAT:
			case CONCAT_NULL_YIELDS_NULL:
			case CONTENT:
			case CONTROL:
			case COOKIE:
			case COUNT:
			case COUNT_BIG:
			case COUNTER:
			case CPU:
			case CREATE_NEW:
			case CREATION_DISPOSITION:
			case CREDENTIAL:
			case CRYPTOGRAPHIC:
			case CURSOR_CLOSE_ON_COMMIT:
			case CURSOR_DEFAULT:
			case DATE_CORRELATION_OPTIMIZATION:
			case DATEADD:
			case DATEDIFF:
			case DATENAME:
			case DATEPART:
			case DAYS:
			case DB_CHAINING:
			case DB_FAILOVER:
			case DECRYPTION:
			case DEFAULT_DOUBLE_QUOTE:
			case DEFAULT_FULLTEXT_LANGUAGE:
			case DEFAULT_LANGUAGE:
			case DELAY:
			case DELAYED_DURABILITY:
			case DELETED:
			case DENSE_RANK:
			case DEPENDENTS:
			case DES:
			case DESCRIPTION:
			case DESX:
			case DHCP:
			case DIALOG:
			case DIRECTORY_NAME:
			case DISABLE:
			case DISABLE_BROKER:
			case DISABLED:
			case DISK_DRIVE:
			case DOCUMENT:
			case DYNAMIC:
			case EMERGENCY:
			case EMPTY:
			case ENABLE:
			case ENABLE_BROKER:
			case ENCRYPTED_VALUE:
			case ENCRYPTION:
			case ENDPOINT_URL:
			case ERROR_BROKER_CONVERSATIONS:
			case EXCLUSIVE:
			case EXECUTABLE:
			case EXIST:
			case EXPAND:
			case EXPIRY_DATE:
			case EXPLICIT:
			case FAIL_OPERATION:
			case FAILOVER_MODE:
			case FAILURE:
			case FAILURE_CONDITION_LEVEL:
			case FAST:
			case FAST_FORWARD:
			case FILEGROUP:
			case FILEGROWTH:
			case FILEPATH:
			case FILESTREAM:
			case FILTER:
			case FIRST:
			case FIRST_VALUE:
			case FOLLOWING:
			case FORCE:
			case FORCE_FAILOVER_ALLOW_DATA_LOSS:
			case FORCED:
			case FORMAT:
			case FORWARD_ONLY:
			case FULLSCAN:
			case FULLTEXT:
			case GB:
			case GETDATE:
			case GETUTCDATE:
			case GLOBAL:
			case GO:
			case GROUP_MAX_REQUESTS:
			case GROUPING:
			case GROUPING_ID:
			case HADR:
			case HASH:
			case HEALTH_CHECK_TIMEOUT:
			case HIGH:
			case HONOR_BROKER_PRIORITY:
			case HOURS:
			case IDENTITY_VALUE:
			case IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX:
			case IMMEDIATE:
			case IMPERSONATE:
			case IMPORTANCE:
			case INCREMENTAL:
			case INITIATOR:
			case INPUT:
			case INSENSITIVE:
			case INSERTED:
			case INT:
			case IP:
			case ISOLATION:
			case KB:
			case KEEP:
			case KEEPFIXED:
			case KEY_SOURCE:
			case KEYS:
			case KEYSET:
			case LAG:
			case LAST:
			case LAST_VALUE:
			case LEAD:
			case LEVEL:
			case LIST:
			case LISTENER:
			case LISTENER_URL:
			case LOB_COMPACTION:
			case LOCAL:
			case LOCATION:
			case LOCK:
			case LOCK_ESCALATION:
			case LOGIN:
			case LOOP:
			case LOW:
			case MANUAL:
			case MARK:
			case MATERIALIZED:
			case MAX:
			case MAX_CPU_PERCENT:
			case MAX_DOP:
			case MAX_FILES:
			case MAX_IOPS_PER_VOLUME:
			case MAX_MEMORY_PERCENT:
			case MAX_PROCESSES:
			case MAX_QUEUE_READERS:
			case MAX_ROLLOVER_FILES:
			case MAXDOP:
			case MAXRECURSION:
			case MAXSIZE:
			case MB:
			case MEDIUM:
			case MEMORY_OPTIMIZED_DATA:
			case MESSAGE:
			case MIN:
			case MIN_ACTIVE_ROWVERSION:
			case MIN_CPU_PERCENT:
			case MIN_IOPS_PER_VOLUME:
			case MIN_MEMORY_PERCENT:
			case MINUTES:
			case MIRROR_ADDRESS:
			case MIXED_PAGE_ALLOCATION:
			case MODE:
			case MODIFY:
			case MOVE:
			case MULTI_USER:
			case NAME:
			case NESTED_TRIGGERS:
			case NEW_ACCOUNT:
			case NEW_BROKER:
			case NEW_PASSWORD:
			case NEXT:
			case NO:
			case NO_TRUNCATE:
			case NO_WAIT:
			case NOCOUNT:
			case NODES:
			case NOEXPAND:
			case NON_TRANSACTED_ACCESS:
			case NORECOMPUTE:
			case NORECOVERY:
			case NOWAIT:
			case NTILE:
			case NUMANODE:
			case NUMBER:
			case NUMERIC_ROUNDABORT:
			case OBJECT:
			case OFFLINE:
			case OFFSET:
			case OLD_ACCOUNT:
			case ONLINE:
			case ONLY:
			case OPEN_EXISTING:
			case OPTIMISTIC:
			case OPTIMIZE:
			case OUT:
			case OUTPUT:
			case OWNER:
			case PAGE_VERIFY:
			case PARAMETERIZATION:
			case PARTITION:
			case PARTITIONS:
			case PARTNER:
			case PATH:
			case POISON_MESSAGE_HANDLING:
			case POOL:
			case PORT:
			case PRECEDING:
			case PRIMARY_ROLE:
			case PRIOR:
			case PRIORITY:
			case PRIORITY_LEVEL:
			case PRIVATE:
			case PRIVATE_KEY:
			case PRIVILEGES:
			case PROCEDURE_NAME:
			case PROPERTY:
			case PROVIDER:
			case PROVIDER_KEY_NAME:
			case QUERY:
			case QUEUE:
			case QUEUE_DELAY:
			case QUOTED_IDENTIFIER:
			case RANGE:
			case RANK:
			case RC2:
			case RC4:
			case RC4_128:
			case READ_COMMITTED_SNAPSHOT:
			case READ_ONLY:
			case READ_ONLY_ROUTING_LIST:
			case READ_WRITE:
			case READONLY:
			case REBUILD:
			case RECEIVE:
			case RECOMPILE:
			case RECOVERY:
			case RECURSIVE_TRIGGERS:
			case RELATIVE:
			case REMOTE:
			case REMOTE_SERVICE_NAME:
			case REMOVE:
			case REORGANIZE:
			case REPEATABLE:
			case REPLICA:
			case REQUEST_MAX_CPU_TIME_SEC:
			case REQUEST_MAX_MEMORY_GRANT_PERCENT:
			case REQUEST_MEMORY_GRANT_TIMEOUT_SEC:
			case REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT:
			case RESERVE_DISK_SPACE:
			case RESOURCE:
			case RESOURCE_MANAGER_LOCATION:
			case RESTRICTED_USER:
			case RETENTION:
			case ROBUST:
			case ROOT:
			case ROUTE:
			case ROW:
			case ROW_NUMBER:
			case ROWGUID:
			case ROWS:
			case SAMPLE:
			case SCHEMABINDING:
			case SCOPED:
			case SCROLL:
			case SCROLL_LOCKS:
			case SEARCH:
			case SECONDARY:
			case SECONDARY_ONLY:
			case SECONDARY_ROLE:
			case SECONDS:
			case SECRET:
			case SECURITY_LOG:
			case SEEDING_MODE:
			case SELF:
			case SEMI_SENSITIVE:
			case SEND:
			case SENT:
			case SERIALIZABLE:
			case SESSION_TIMEOUT:
			case SETERROR:
			case SHARE:
			case SHOWPLAN:
			case SIGNATURE:
			case SIMPLE:
			case SINGLE_USER:
			case SIZE:
			case SMALLINT:
			case SNAPSHOT:
			case SPATIAL_WINDOW_MAX_CELLS:
			case STANDBY:
			case START_DATE:
			case STATIC:
			case STATS_STREAM:
			case STATUS:
			case STDEV:
			case STDEVP:
			case STOPLIST:
			case STUFF:
			case SUBJECT:
			case SUM:
			case SUSPEND:
			case SYMMETRIC:
			case SYNCHRONOUS_COMMIT:
			case SYNONYM:
			case TAKE:
			case TARGET_RECOVERY_TIME:
			case TB:
			case TEXTIMAGE_ON:
			case THROW:
			case TIES:
			case TIME:
			case TIMEOUT:
			case TIMER:
			case TINYINT:
			case TORN_PAGE_DETECTION:
			case TRANSFORM_NOISE_WORDS:
			case TRIPLE_DES:
			case TRIPLE_DES_3KEY:
			case TRUSTWORTHY:
			case TRY:
			case TSQL:
			case TWO_DIGIT_YEAR_CUTOFF:
			case TYPE:
			case TYPE_WARNING:
			case UNBOUNDED:
			case UNCOMMITTED:
			case UNKNOWN:
			case UNLIMITED:
			case USING:
			case VALID_XML:
			case VALIDATION:
			case VALUE:
			case VAR:
			case VARP:
			case VIEW_METADATA:
			case VIEWS:
			case WAIT:
			case WELL_FORMED_XML:
			case WORK:
			case WORKLOAD:
			case XML:
			case XMLNAMESPACES:
			case DOUBLE_QUOTE_ID:
			case SQUARE_BRACKET_ID:
			case ID:
				enterOuterAlt(_localctx, 2);
				{
				setState(1545);
				id();
				}
				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 File_directory_path_separatorContext extends ParserRuleContext {
		public TerminalNode BACKSLASH() { return getToken(TSqlParser.BACKSLASH, 0); }
		public File_directory_path_separatorContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_file_directory_path_separator; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterFile_directory_path_separator(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitFile_directory_path_separator(this);
		}
	}

	public final File_directory_path_separatorContext file_directory_path_separator() throws RecognitionException {
		File_directory_path_separatorContext _localctx = new File_directory_path_separatorContext(_ctx, getState());
		enterRule(_localctx, 102, RULE_file_directory_path_separator);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1548);
			match(BACKSLASH);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Local_fileContext extends ParserRuleContext {
		public Local_driveContext local_drive() {
			return getRuleContext(Local_driveContext.class,0);
		}
		public File_pathContext file_path() {
			return getRuleContext(File_pathContext.class,0);
		}
		public Local_fileContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_local_file; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterLocal_file(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitLocal_file(this);
		}
	}

	public final Local_fileContext local_file() throws RecognitionException {
		Local_fileContext _localctx = new Local_fileContext(_ctx, getState());
		enterRule(_localctx, 104, RULE_local_file);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1550);
			local_drive();
			setState(1551);
			file_path();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Local_driveContext extends ParserRuleContext {
		public TerminalNode DISK_DRIVE() { return getToken(TSqlParser.DISK_DRIVE, 0); }
		public Local_driveContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_local_drive; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterLocal_drive(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitLocal_drive(this);
		}
	}

	public final Local_driveContext local_drive() throws RecognitionException {
		Local_driveContext _localctx = new Local_driveContext(_ctx, getState());
		enterRule(_localctx, 106, RULE_local_drive);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1553);
			match(DISK_DRIVE);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Multiple_local_filesContext extends ParserRuleContext {
		public Multiple_local_file_startContext multiple_local_file_start() {
			return getRuleContext(Multiple_local_file_startContext.class,0);
		}
		public Local_fileContext local_file() {
			return getRuleContext(Local_fileContext.class,0);
		}
		public TerminalNode SINGLE_QUOTE() { return getToken(TSqlParser.SINGLE_QUOTE, 0); }
		public TerminalNode COMMA() { return getToken(TSqlParser.COMMA, 0); }
		public Multiple_local_filesContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_multiple_local_files; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterMultiple_local_files(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitMultiple_local_files(this);
		}
	}

	public final Multiple_local_filesContext multiple_local_files() throws RecognitionException {
		Multiple_local_filesContext _localctx = new Multiple_local_filesContext(_ctx, getState());
		enterRule(_localctx, 108, RULE_multiple_local_files);
		try {
			setState(1561);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case SINGLE_QUOTE:
				enterOuterAlt(_localctx, 1);
				{
				setState(1555);
				multiple_local_file_start();
				setState(1556);
				local_file();
				setState(1557);
				match(SINGLE_QUOTE);
				setState(1558);
				match(COMMA);
				}
				break;
			case DISK_DRIVE:
				enterOuterAlt(_localctx, 2);
				{
				setState(1560);
				local_file();
				}
				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 Multiple_local_file_startContext extends ParserRuleContext {
		public TerminalNode SINGLE_QUOTE() { return getToken(TSqlParser.SINGLE_QUOTE, 0); }
		public Multiple_local_file_startContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_multiple_local_file_start; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterMultiple_local_file_start(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitMultiple_local_file_start(this);
		}
	}

	public final Multiple_local_file_startContext multiple_local_file_start() throws RecognitionException {
		Multiple_local_file_startContext _localctx = new Multiple_local_file_startContext(_ctx, getState());
		enterRule(_localctx, 110, RULE_multiple_local_file_start);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1563);
			match(SINGLE_QUOTE);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Create_assemblyContext extends ParserRuleContext {
		public IdContext assembly_name;
		public IdContext owner_name;
		public TerminalNode CREATE() { return getToken(TSqlParser.CREATE, 0); }
		public TerminalNode ASSEMBLY() { return getToken(TSqlParser.ASSEMBLY, 0); }
		public TerminalNode FROM() { return getToken(TSqlParser.FROM, 0); }
		public List id() {
			return getRuleContexts(IdContext.class);
		}
		public IdContext id(int i) {
			return getRuleContext(IdContext.class,i);
		}
		public TerminalNode AUTHORIZATION() { return getToken(TSqlParser.AUTHORIZATION, 0); }
		public TerminalNode WITH() { return getToken(TSqlParser.WITH, 0); }
		public TerminalNode PERMISSION_SET() { return getToken(TSqlParser.PERMISSION_SET, 0); }
		public TerminalNode EQUAL() { return getToken(TSqlParser.EQUAL, 0); }
		public List STRING() { return getTokens(TSqlParser.STRING); }
		public TerminalNode STRING(int i) {
			return getToken(TSqlParser.STRING, i);
		}
		public List BINARY() { return getTokens(TSqlParser.BINARY); }
		public TerminalNode BINARY(int i) {
			return getToken(TSqlParser.BINARY, i);
		}
		public TerminalNode SAFE() { return getToken(TSqlParser.SAFE, 0); }
		public TerminalNode EXTERNAL_ACCESS() { return getToken(TSqlParser.EXTERNAL_ACCESS, 0); }
		public TerminalNode UNSAFE() { return getToken(TSqlParser.UNSAFE, 0); }
		public List COMMA() { return getTokens(TSqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(TSqlParser.COMMA, i);
		}
		public Create_assemblyContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_create_assembly; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterCreate_assembly(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitCreate_assembly(this);
		}
	}

	public final Create_assemblyContext create_assembly() throws RecognitionException {
		Create_assemblyContext _localctx = new Create_assemblyContext(_ctx, getState());
		enterRule(_localctx, 112, RULE_create_assembly);
		int _la;
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			setState(1565);
			match(CREATE);
			setState(1566);
			match(ASSEMBLY);
			setState(1567);
			((Create_assemblyContext)_localctx).assembly_name = id();
			setState(1570);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==AUTHORIZATION) {
				{
				setState(1568);
				match(AUTHORIZATION);
				setState(1569);
				((Create_assemblyContext)_localctx).owner_name = id();
				}
			}

			setState(1572);
			match(FROM);
			setState(1577); 
			_errHandler.sync(this);
			_alt = 1;
			do {
				switch (_alt) {
				case 1:
					{
					{
					setState(1574);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==COMMA) {
						{
						setState(1573);
						match(COMMA);
						}
					}

					setState(1576);
					_la = _input.LA(1);
					if ( !(_la==STRING || _la==BINARY) ) {
					_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					}
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				setState(1579); 
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,75,_ctx);
			} while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER );
			setState(1585);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,76,_ctx) ) {
			case 1:
				{
				setState(1581);
				match(WITH);
				setState(1582);
				match(PERMISSION_SET);
				setState(1583);
				match(EQUAL);
				setState(1584);
				_la = _input.LA(1);
				if ( !(_la==EXTERNAL_ACCESS || _la==SAFE || _la==UNSAFE) ) {
				_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 Drop_assemblyContext extends ParserRuleContext {
		public IdContext assembly_name;
		public TerminalNode DROP() { return getToken(TSqlParser.DROP, 0); }
		public TerminalNode ASSEMBLY() { return getToken(TSqlParser.ASSEMBLY, 0); }
		public TerminalNode IF() { return getToken(TSqlParser.IF, 0); }
		public TerminalNode EXISTS() { return getToken(TSqlParser.EXISTS, 0); }
		public TerminalNode WITH() { return getToken(TSqlParser.WITH, 0); }
		public TerminalNode NO() { return getToken(TSqlParser.NO, 0); }
		public TerminalNode DEPENDENTS() { return getToken(TSqlParser.DEPENDENTS, 0); }
		public List id() {
			return getRuleContexts(IdContext.class);
		}
		public IdContext id(int i) {
			return getRuleContext(IdContext.class,i);
		}
		public List COMMA() { return getTokens(TSqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(TSqlParser.COMMA, i);
		}
		public Drop_assemblyContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_drop_assembly; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterDrop_assembly(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitDrop_assembly(this);
		}
	}

	public final Drop_assemblyContext drop_assembly() throws RecognitionException {
		Drop_assemblyContext _localctx = new Drop_assemblyContext(_ctx, getState());
		enterRule(_localctx, 114, RULE_drop_assembly);
		int _la;
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			setState(1587);
			match(DROP);
			setState(1588);
			match(ASSEMBLY);
			setState(1591);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==IF) {
				{
				setState(1589);
				match(IF);
				setState(1590);
				match(EXISTS);
				}
			}

			setState(1597); 
			_errHandler.sync(this);
			_alt = 1;
			do {
				switch (_alt) {
				case 1:
					{
					{
					setState(1594);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==COMMA) {
						{
						setState(1593);
						match(COMMA);
						}
					}

					setState(1596);
					((Drop_assemblyContext)_localctx).assembly_name = id();
					}
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				setState(1599); 
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,79,_ctx);
			} while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER );
			setState(1604);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,80,_ctx) ) {
			case 1:
				{
				setState(1601);
				match(WITH);
				setState(1602);
				match(NO);
				setState(1603);
				match(DEPENDENTS);
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Alter_asymmetric_keyContext extends ParserRuleContext {
		public IdContext Asym_Key_Name;
		public Alter_asymmetric_key_startContext alter_asymmetric_key_start() {
			return getRuleContext(Alter_asymmetric_key_startContext.class,0);
		}
		public IdContext id() {
			return getRuleContext(IdContext.class,0);
		}
		public Asymmetric_key_optionContext asymmetric_key_option() {
			return getRuleContext(Asymmetric_key_optionContext.class,0);
		}
		public TerminalNode REMOVE() { return getToken(TSqlParser.REMOVE, 0); }
		public TerminalNode PRIVATE() { return getToken(TSqlParser.PRIVATE, 0); }
		public TerminalNode KEY() { return getToken(TSqlParser.KEY, 0); }
		public Alter_asymmetric_keyContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alter_asymmetric_key; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterAlter_asymmetric_key(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitAlter_asymmetric_key(this);
		}
	}

	public final Alter_asymmetric_keyContext alter_asymmetric_key() throws RecognitionException {
		Alter_asymmetric_keyContext _localctx = new Alter_asymmetric_keyContext(_ctx, getState());
		enterRule(_localctx, 116, RULE_alter_asymmetric_key);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1606);
			alter_asymmetric_key_start();
			setState(1607);
			((Alter_asymmetric_keyContext)_localctx).Asym_Key_Name = id();
			setState(1612);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case WITH:
				{
				setState(1608);
				asymmetric_key_option();
				}
				break;
			case REMOVE:
				{
				setState(1609);
				match(REMOVE);
				setState(1610);
				match(PRIVATE);
				setState(1611);
				match(KEY);
				}
				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 Alter_asymmetric_key_startContext extends ParserRuleContext {
		public TerminalNode ALTER() { return getToken(TSqlParser.ALTER, 0); }
		public TerminalNode ASYMMETRIC() { return getToken(TSqlParser.ASYMMETRIC, 0); }
		public TerminalNode KEY() { return getToken(TSqlParser.KEY, 0); }
		public Alter_asymmetric_key_startContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alter_asymmetric_key_start; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterAlter_asymmetric_key_start(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitAlter_asymmetric_key_start(this);
		}
	}

	public final Alter_asymmetric_key_startContext alter_asymmetric_key_start() throws RecognitionException {
		Alter_asymmetric_key_startContext _localctx = new Alter_asymmetric_key_startContext(_ctx, getState());
		enterRule(_localctx, 118, RULE_alter_asymmetric_key_start);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1614);
			match(ALTER);
			setState(1615);
			match(ASYMMETRIC);
			setState(1616);
			match(KEY);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Asymmetric_key_optionContext extends ParserRuleContext {
		public Asymmetric_key_option_startContext asymmetric_key_option_start() {
			return getRuleContext(Asymmetric_key_option_startContext.class,0);
		}
		public List asymmetric_key_password_change_option() {
			return getRuleContexts(Asymmetric_key_password_change_optionContext.class);
		}
		public Asymmetric_key_password_change_optionContext asymmetric_key_password_change_option(int i) {
			return getRuleContext(Asymmetric_key_password_change_optionContext.class,i);
		}
		public TerminalNode RR_BRACKET() { return getToken(TSqlParser.RR_BRACKET, 0); }
		public TerminalNode COMMA() { return getToken(TSqlParser.COMMA, 0); }
		public Asymmetric_key_optionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_asymmetric_key_option; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterAsymmetric_key_option(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitAsymmetric_key_option(this);
		}
	}

	public final Asymmetric_key_optionContext asymmetric_key_option() throws RecognitionException {
		Asymmetric_key_optionContext _localctx = new Asymmetric_key_optionContext(_ctx, getState());
		enterRule(_localctx, 120, RULE_asymmetric_key_option);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1618);
			asymmetric_key_option_start();
			setState(1619);
			asymmetric_key_password_change_option();
			setState(1622);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==COMMA) {
				{
				setState(1620);
				match(COMMA);
				setState(1621);
				asymmetric_key_password_change_option();
				}
			}

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

	public static class Asymmetric_key_option_startContext extends ParserRuleContext {
		public TerminalNode WITH() { return getToken(TSqlParser.WITH, 0); }
		public TerminalNode PRIVATE() { return getToken(TSqlParser.PRIVATE, 0); }
		public TerminalNode KEY() { return getToken(TSqlParser.KEY, 0); }
		public TerminalNode LR_BRACKET() { return getToken(TSqlParser.LR_BRACKET, 0); }
		public Asymmetric_key_option_startContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_asymmetric_key_option_start; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterAsymmetric_key_option_start(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitAsymmetric_key_option_start(this);
		}
	}

	public final Asymmetric_key_option_startContext asymmetric_key_option_start() throws RecognitionException {
		Asymmetric_key_option_startContext _localctx = new Asymmetric_key_option_startContext(_ctx, getState());
		enterRule(_localctx, 122, RULE_asymmetric_key_option_start);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1626);
			match(WITH);
			setState(1627);
			match(PRIVATE);
			setState(1628);
			match(KEY);
			setState(1629);
			match(LR_BRACKET);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Asymmetric_key_password_change_optionContext extends ParserRuleContext {
		public TerminalNode DECRYPTION() { return getToken(TSqlParser.DECRYPTION, 0); }
		public TerminalNode BY() { return getToken(TSqlParser.BY, 0); }
		public TerminalNode PASSWORD() { return getToken(TSqlParser.PASSWORD, 0); }
		public TerminalNode EQUAL() { return getToken(TSqlParser.EQUAL, 0); }
		public TerminalNode STRING() { return getToken(TSqlParser.STRING, 0); }
		public TerminalNode ENCRYPTION() { return getToken(TSqlParser.ENCRYPTION, 0); }
		public Asymmetric_key_password_change_optionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_asymmetric_key_password_change_option; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterAsymmetric_key_password_change_option(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitAsymmetric_key_password_change_option(this);
		}
	}

	public final Asymmetric_key_password_change_optionContext asymmetric_key_password_change_option() throws RecognitionException {
		Asymmetric_key_password_change_optionContext _localctx = new Asymmetric_key_password_change_optionContext(_ctx, getState());
		enterRule(_localctx, 124, RULE_asymmetric_key_password_change_option);
		try {
			setState(1641);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case DECRYPTION:
				enterOuterAlt(_localctx, 1);
				{
				setState(1631);
				match(DECRYPTION);
				setState(1632);
				match(BY);
				setState(1633);
				match(PASSWORD);
				setState(1634);
				match(EQUAL);
				setState(1635);
				match(STRING);
				}
				break;
			case ENCRYPTION:
				enterOuterAlt(_localctx, 2);
				{
				setState(1636);
				match(ENCRYPTION);
				setState(1637);
				match(BY);
				setState(1638);
				match(PASSWORD);
				setState(1639);
				match(EQUAL);
				setState(1640);
				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 Create_asymmetric_keyContext extends ParserRuleContext {
		public IdContext Asym_Key_Nam;
		public IdContext database_principal_name;
		public IdContext Assembly_Name;
		public IdContext Provider_Name;
		public Token provider_key_name;
		public Token asymmetric_key_password;
		public TerminalNode CREATE() { return getToken(TSqlParser.CREATE, 0); }
		public TerminalNode ASYMMETRIC() { return getToken(TSqlParser.ASYMMETRIC, 0); }
		public TerminalNode KEY() { return getToken(TSqlParser.KEY, 0); }
		public List id() {
			return getRuleContexts(IdContext.class);
		}
		public IdContext id(int i) {
			return getRuleContext(IdContext.class,i);
		}
		public TerminalNode AUTHORIZATION() { return getToken(TSqlParser.AUTHORIZATION, 0); }
		public TerminalNode FROM() { return getToken(TSqlParser.FROM, 0); }
		public TerminalNode WITH() { return getToken(TSqlParser.WITH, 0); }
		public TerminalNode ENCRYPTION() { return getToken(TSqlParser.ENCRYPTION, 0); }
		public TerminalNode BY() { return getToken(TSqlParser.BY, 0); }
		public TerminalNode PASSWORD() { return getToken(TSqlParser.PASSWORD, 0); }
		public List EQUAL() { return getTokens(TSqlParser.EQUAL); }
		public TerminalNode EQUAL(int i) {
			return getToken(TSqlParser.EQUAL, i);
		}
		public List STRING() { return getTokens(TSqlParser.STRING); }
		public TerminalNode STRING(int i) {
			return getToken(TSqlParser.STRING, i);
		}
		public TerminalNode FILE() { return getToken(TSqlParser.FILE, 0); }
		public TerminalNode EXECUTABLE_FILE() { return getToken(TSqlParser.EXECUTABLE_FILE, 0); }
		public TerminalNode ASSEMBLY() { return getToken(TSqlParser.ASSEMBLY, 0); }
		public TerminalNode PROVIDER() { return getToken(TSqlParser.PROVIDER, 0); }
		public TerminalNode ALGORITHM() { return getToken(TSqlParser.ALGORITHM, 0); }
		public TerminalNode PROVIDER_KEY_NAME() { return getToken(TSqlParser.PROVIDER_KEY_NAME, 0); }
		public TerminalNode CREATION_DISPOSITION() { return getToken(TSqlParser.CREATION_DISPOSITION, 0); }
		public TerminalNode RSA_4096() { return getToken(TSqlParser.RSA_4096, 0); }
		public TerminalNode RSA_3072() { return getToken(TSqlParser.RSA_3072, 0); }
		public TerminalNode RSA_2048() { return getToken(TSqlParser.RSA_2048, 0); }
		public TerminalNode RSA_1024() { return getToken(TSqlParser.RSA_1024, 0); }
		public TerminalNode RSA_512() { return getToken(TSqlParser.RSA_512, 0); }
		public TerminalNode CREATE_NEW() { return getToken(TSqlParser.CREATE_NEW, 0); }
		public TerminalNode OPEN_EXISTING() { return getToken(TSqlParser.OPEN_EXISTING, 0); }
		public Create_asymmetric_keyContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_create_asymmetric_key; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterCreate_asymmetric_key(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitCreate_asymmetric_key(this);
		}
	}

	public final Create_asymmetric_keyContext create_asymmetric_key() throws RecognitionException {
		Create_asymmetric_keyContext _localctx = new Create_asymmetric_keyContext(_ctx, getState());
		enterRule(_localctx, 126, RULE_create_asymmetric_key);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1643);
			match(CREATE);
			setState(1644);
			match(ASYMMETRIC);
			setState(1645);
			match(KEY);
			setState(1646);
			((Create_asymmetric_keyContext)_localctx).Asym_Key_Nam = id();
			setState(1649);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==AUTHORIZATION) {
				{
				setState(1647);
				match(AUTHORIZATION);
				setState(1648);
				((Create_asymmetric_keyContext)_localctx).database_principal_name = id();
				}
			}

			setState(1664);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==FROM) {
				{
				setState(1651);
				match(FROM);
				setState(1662);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case FILE:
					{
					setState(1652);
					match(FILE);
					setState(1653);
					match(EQUAL);
					setState(1654);
					match(STRING);
					}
					break;
				case EXECUTABLE_FILE:
					{
					setState(1655);
					match(EXECUTABLE_FILE);
					setState(1656);
					match(EQUAL);
					setState(1657);
					match(STRING);
					}
					break;
				case ASSEMBLY:
					{
					setState(1658);
					match(ASSEMBLY);
					setState(1659);
					((Create_asymmetric_keyContext)_localctx).Assembly_Name = id();
					}
					break;
				case PROVIDER:
					{
					setState(1660);
					match(PROVIDER);
					setState(1661);
					((Create_asymmetric_keyContext)_localctx).Provider_Name = id();
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
			}

			setState(1678);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,88,_ctx) ) {
			case 1:
				{
				setState(1666);
				match(WITH);
				setState(1676);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case ALGORITHM:
					{
					setState(1667);
					match(ALGORITHM);
					setState(1668);
					match(EQUAL);
					setState(1669);
					_la = _input.LA(1);
					if ( !(((((_la - 291)) & ~0x3f) == 0 && ((1L << (_la - 291)) & ((1L << (RSA_512 - 291)) | (1L << (RSA_1024 - 291)) | (1L << (RSA_2048 - 291)) | (1L << (RSA_3072 - 291)) | (1L << (RSA_4096 - 291)))) != 0)) ) {
					_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					}
					break;
				case PROVIDER_KEY_NAME:
					{
					setState(1670);
					match(PROVIDER_KEY_NAME);
					setState(1671);
					match(EQUAL);
					setState(1672);
					((Create_asymmetric_keyContext)_localctx).provider_key_name = match(STRING);
					}
					break;
				case CREATION_DISPOSITION:
					{
					setState(1673);
					match(CREATION_DISPOSITION);
					setState(1674);
					match(EQUAL);
					setState(1675);
					_la = _input.LA(1);
					if ( !(_la==CREATE_NEW || _la==OPEN_EXISTING) ) {
					_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;
			}
			setState(1685);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,89,_ctx) ) {
			case 1:
				{
				setState(1680);
				match(ENCRYPTION);
				setState(1681);
				match(BY);
				setState(1682);
				match(PASSWORD);
				setState(1683);
				match(EQUAL);
				setState(1684);
				((Create_asymmetric_keyContext)_localctx).asymmetric_key_password = match(STRING);
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Drop_asymmetric_keyContext extends ParserRuleContext {
		public IdContext key_name;
		public TerminalNode DROP() { return getToken(TSqlParser.DROP, 0); }
		public TerminalNode ASYMMETRIC() { return getToken(TSqlParser.ASYMMETRIC, 0); }
		public List KEY() { return getTokens(TSqlParser.KEY); }
		public TerminalNode KEY(int i) {
			return getToken(TSqlParser.KEY, i);
		}
		public IdContext id() {
			return getRuleContext(IdContext.class,0);
		}
		public TerminalNode REMOVE() { return getToken(TSqlParser.REMOVE, 0); }
		public TerminalNode PROVIDER() { return getToken(TSqlParser.PROVIDER, 0); }
		public Drop_asymmetric_keyContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_drop_asymmetric_key; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterDrop_asymmetric_key(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitDrop_asymmetric_key(this);
		}
	}

	public final Drop_asymmetric_keyContext drop_asymmetric_key() throws RecognitionException {
		Drop_asymmetric_keyContext _localctx = new Drop_asymmetric_keyContext(_ctx, getState());
		enterRule(_localctx, 128, RULE_drop_asymmetric_key);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1687);
			match(DROP);
			setState(1688);
			match(ASYMMETRIC);
			setState(1689);
			match(KEY);
			setState(1690);
			((Drop_asymmetric_keyContext)_localctx).key_name = id();
			setState(1694);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,90,_ctx) ) {
			case 1:
				{
				setState(1691);
				match(REMOVE);
				setState(1692);
				match(PROVIDER);
				setState(1693);
				match(KEY);
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Alter_authorizationContext extends ParserRuleContext {
		public Entity_nameContext entity;
		public Alter_authorization_startContext alter_authorization_start() {
			return getRuleContext(Alter_authorization_startContext.class,0);
		}
		public Entity_toContext entity_to() {
			return getRuleContext(Entity_toContext.class,0);
		}
		public Authorization_granteeContext authorization_grantee() {
			return getRuleContext(Authorization_granteeContext.class,0);
		}
		public Entity_nameContext entity_name() {
			return getRuleContext(Entity_nameContext.class,0);
		}
		public Class_typeContext class_type() {
			return getRuleContext(Class_typeContext.class,0);
		}
		public Colon_colonContext colon_colon() {
			return getRuleContext(Colon_colonContext.class,0);
		}
		public Alter_authorizationContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alter_authorization; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterAlter_authorization(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitAlter_authorization(this);
		}
	}

	public final Alter_authorizationContext alter_authorization() throws RecognitionException {
		Alter_authorizationContext _localctx = new Alter_authorizationContext(_ctx, getState());
		enterRule(_localctx, 130, RULE_alter_authorization);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1696);
			alter_authorization_start();
			setState(1700);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,91,_ctx) ) {
			case 1:
				{
				setState(1697);
				class_type();
				setState(1698);
				colon_colon();
				}
				break;
			}
			setState(1702);
			((Alter_authorizationContext)_localctx).entity = entity_name();
			setState(1703);
			entity_to();
			setState(1704);
			authorization_grantee();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Authorization_granteeContext extends ParserRuleContext {
		public IdContext principal_name;
		public IdContext id() {
			return getRuleContext(IdContext.class,0);
		}
		public TerminalNode SCHEMA() { return getToken(TSqlParser.SCHEMA, 0); }
		public TerminalNode OWNER() { return getToken(TSqlParser.OWNER, 0); }
		public Authorization_granteeContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_authorization_grantee; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterAuthorization_grantee(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitAuthorization_grantee(this);
		}
	}

	public final Authorization_granteeContext authorization_grantee() throws RecognitionException {
		Authorization_granteeContext _localctx = new Authorization_granteeContext(_ctx, getState());
		enterRule(_localctx, 132, RULE_authorization_grantee);
		try {
			setState(1709);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case CALLED:
			case DATA_COMPRESSION:
			case EVENTDATA:
			case FILENAME:
			case FILLFACTOR:
			case FORCESEEK:
			case INIT:
			case KEY:
			case MASTER:
			case MAX_MEMORY:
			case OFFSETS:
			case PAGE:
			case PUBLIC:
			case R:
			case RAW:
			case RETURN:
			case RETURNS:
			case ROWCOUNT:
			case SAFETY:
			case SERVER:
			case SID:
			case SOURCE:
			case STATE:
			case START:
			case TARGET:
			case ABSOLUTE:
			case ACCENT_SENSITIVITY:
			case ACTION:
			case ACTIVATION:
			case ACTIVE:
			case ADDRESS:
			case AES_128:
			case AES_192:
			case AES_256:
			case AFFINITY:
			case AFTER:
			case AGGREGATE:
			case ALGORITHM:
			case ALLOW_ENCRYPTED_VALUE_MODIFICATIONS:
			case ALLOW_SNAPSHOT_ISOLATION:
			case ALLOWED:
			case ANSI_NULL_DEFAULT:
			case ANSI_NULLS:
			case ANSI_PADDING:
			case ANSI_WARNINGS:
			case APPLICATION_LOG:
			case APPLY:
			case ARITHABORT:
			case ASSEMBLY:
			case AUDIT:
			case AUDIT_GUID:
			case AUTO:
			case AUTO_CLEANUP:
			case AUTO_CLOSE:
			case AUTO_CREATE_STATISTICS:
			case AUTO_SHRINK:
			case AUTO_UPDATE_STATISTICS:
			case AUTO_UPDATE_STATISTICS_ASYNC:
			case AVAILABILITY:
			case AVG:
			case BACKUP_PRIORITY:
			case BEGIN_DIALOG:
			case BIGINT:
			case BINARY_BASE64:
			case BINARY_CHECKSUM:
			case BINDING:
			case BLOB_STORAGE:
			case BROKER:
			case BROKER_INSTANCE:
			case BULK_LOGGED:
			case CALLER:
			case CAP_CPU_PERCENT:
			case CAST:
			case CATALOG:
			case CATCH:
			case CHANGE_RETENTION:
			case CHANGE_TRACKING:
			case CHECKSUM:
			case CHECKSUM_AGG:
			case CLEANUP:
			case COLLECTION:
			case COLUMN_MASTER_KEY:
			case COMMITTED:
			case COMPATIBILITY_LEVEL:
			case CONCAT:
			case CONCAT_NULL_YIELDS_NULL:
			case CONTENT:
			case CONTROL:
			case COOKIE:
			case COUNT:
			case COUNT_BIG:
			case COUNTER:
			case CPU:
			case CREATE_NEW:
			case CREATION_DISPOSITION:
			case CREDENTIAL:
			case CRYPTOGRAPHIC:
			case CURSOR_CLOSE_ON_COMMIT:
			case CURSOR_DEFAULT:
			case DATE_CORRELATION_OPTIMIZATION:
			case DATEADD:
			case DATEDIFF:
			case DATENAME:
			case DATEPART:
			case DAYS:
			case DB_CHAINING:
			case DB_FAILOVER:
			case DECRYPTION:
			case DEFAULT_DOUBLE_QUOTE:
			case DEFAULT_FULLTEXT_LANGUAGE:
			case DEFAULT_LANGUAGE:
			case DELAY:
			case DELAYED_DURABILITY:
			case DELETED:
			case DENSE_RANK:
			case DEPENDENTS:
			case DES:
			case DESCRIPTION:
			case DESX:
			case DHCP:
			case DIALOG:
			case DIRECTORY_NAME:
			case DISABLE:
			case DISABLE_BROKER:
			case DISABLED:
			case DISK_DRIVE:
			case DOCUMENT:
			case DYNAMIC:
			case EMERGENCY:
			case EMPTY:
			case ENABLE:
			case ENABLE_BROKER:
			case ENCRYPTED_VALUE:
			case ENCRYPTION:
			case ENDPOINT_URL:
			case ERROR_BROKER_CONVERSATIONS:
			case EXCLUSIVE:
			case EXECUTABLE:
			case EXIST:
			case EXPAND:
			case EXPIRY_DATE:
			case EXPLICIT:
			case FAIL_OPERATION:
			case FAILOVER_MODE:
			case FAILURE:
			case FAILURE_CONDITION_LEVEL:
			case FAST:
			case FAST_FORWARD:
			case FILEGROUP:
			case FILEGROWTH:
			case FILEPATH:
			case FILESTREAM:
			case FILTER:
			case FIRST:
			case FIRST_VALUE:
			case FOLLOWING:
			case FORCE:
			case FORCE_FAILOVER_ALLOW_DATA_LOSS:
			case FORCED:
			case FORMAT:
			case FORWARD_ONLY:
			case FULLSCAN:
			case FULLTEXT:
			case GB:
			case GETDATE:
			case GETUTCDATE:
			case GLOBAL:
			case GO:
			case GROUP_MAX_REQUESTS:
			case GROUPING:
			case GROUPING_ID:
			case HADR:
			case HASH:
			case HEALTH_CHECK_TIMEOUT:
			case HIGH:
			case HONOR_BROKER_PRIORITY:
			case HOURS:
			case IDENTITY_VALUE:
			case IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX:
			case IMMEDIATE:
			case IMPERSONATE:
			case IMPORTANCE:
			case INCREMENTAL:
			case INITIATOR:
			case INPUT:
			case INSENSITIVE:
			case INSERTED:
			case INT:
			case IP:
			case ISOLATION:
			case KB:
			case KEEP:
			case KEEPFIXED:
			case KEY_SOURCE:
			case KEYS:
			case KEYSET:
			case LAG:
			case LAST:
			case LAST_VALUE:
			case LEAD:
			case LEVEL:
			case LIST:
			case LISTENER:
			case LISTENER_URL:
			case LOB_COMPACTION:
			case LOCAL:
			case LOCATION:
			case LOCK:
			case LOCK_ESCALATION:
			case LOGIN:
			case LOOP:
			case LOW:
			case MANUAL:
			case MARK:
			case MATERIALIZED:
			case MAX:
			case MAX_CPU_PERCENT:
			case MAX_DOP:
			case MAX_FILES:
			case MAX_IOPS_PER_VOLUME:
			case MAX_MEMORY_PERCENT:
			case MAX_PROCESSES:
			case MAX_QUEUE_READERS:
			case MAX_ROLLOVER_FILES:
			case MAXDOP:
			case MAXRECURSION:
			case MAXSIZE:
			case MB:
			case MEDIUM:
			case MEMORY_OPTIMIZED_DATA:
			case MESSAGE:
			case MIN:
			case MIN_ACTIVE_ROWVERSION:
			case MIN_CPU_PERCENT:
			case MIN_IOPS_PER_VOLUME:
			case MIN_MEMORY_PERCENT:
			case MINUTES:
			case MIRROR_ADDRESS:
			case MIXED_PAGE_ALLOCATION:
			case MODE:
			case MODIFY:
			case MOVE:
			case MULTI_USER:
			case NAME:
			case NESTED_TRIGGERS:
			case NEW_ACCOUNT:
			case NEW_BROKER:
			case NEW_PASSWORD:
			case NEXT:
			case NO:
			case NO_TRUNCATE:
			case NO_WAIT:
			case NOCOUNT:
			case NODES:
			case NOEXPAND:
			case NON_TRANSACTED_ACCESS:
			case NORECOMPUTE:
			case NORECOVERY:
			case NOWAIT:
			case NTILE:
			case NUMANODE:
			case NUMBER:
			case NUMERIC_ROUNDABORT:
			case OBJECT:
			case OFFLINE:
			case OFFSET:
			case OLD_ACCOUNT:
			case ONLINE:
			case ONLY:
			case OPEN_EXISTING:
			case OPTIMISTIC:
			case OPTIMIZE:
			case OUT:
			case OUTPUT:
			case OWNER:
			case PAGE_VERIFY:
			case PARAMETERIZATION:
			case PARTITION:
			case PARTITIONS:
			case PARTNER:
			case PATH:
			case POISON_MESSAGE_HANDLING:
			case POOL:
			case PORT:
			case PRECEDING:
			case PRIMARY_ROLE:
			case PRIOR:
			case PRIORITY:
			case PRIORITY_LEVEL:
			case PRIVATE:
			case PRIVATE_KEY:
			case PRIVILEGES:
			case PROCEDURE_NAME:
			case PROPERTY:
			case PROVIDER:
			case PROVIDER_KEY_NAME:
			case QUERY:
			case QUEUE:
			case QUEUE_DELAY:
			case QUOTED_IDENTIFIER:
			case RANGE:
			case RANK:
			case RC2:
			case RC4:
			case RC4_128:
			case READ_COMMITTED_SNAPSHOT:
			case READ_ONLY:
			case READ_ONLY_ROUTING_LIST:
			case READ_WRITE:
			case READONLY:
			case REBUILD:
			case RECEIVE:
			case RECOMPILE:
			case RECOVERY:
			case RECURSIVE_TRIGGERS:
			case RELATIVE:
			case REMOTE:
			case REMOTE_SERVICE_NAME:
			case REMOVE:
			case REORGANIZE:
			case REPEATABLE:
			case REPLICA:
			case REQUEST_MAX_CPU_TIME_SEC:
			case REQUEST_MAX_MEMORY_GRANT_PERCENT:
			case REQUEST_MEMORY_GRANT_TIMEOUT_SEC:
			case REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT:
			case RESERVE_DISK_SPACE:
			case RESOURCE:
			case RESOURCE_MANAGER_LOCATION:
			case RESTRICTED_USER:
			case RETENTION:
			case ROBUST:
			case ROOT:
			case ROUTE:
			case ROW:
			case ROW_NUMBER:
			case ROWGUID:
			case ROWS:
			case SAMPLE:
			case SCHEMABINDING:
			case SCOPED:
			case SCROLL:
			case SCROLL_LOCKS:
			case SEARCH:
			case SECONDARY:
			case SECONDARY_ONLY:
			case SECONDARY_ROLE:
			case SECONDS:
			case SECRET:
			case SECURITY_LOG:
			case SEEDING_MODE:
			case SELF:
			case SEMI_SENSITIVE:
			case SEND:
			case SENT:
			case SERIALIZABLE:
			case SESSION_TIMEOUT:
			case SETERROR:
			case SHARE:
			case SHOWPLAN:
			case SIGNATURE:
			case SIMPLE:
			case SINGLE_USER:
			case SIZE:
			case SMALLINT:
			case SNAPSHOT:
			case SPATIAL_WINDOW_MAX_CELLS:
			case STANDBY:
			case START_DATE:
			case STATIC:
			case STATS_STREAM:
			case STATUS:
			case STDEV:
			case STDEVP:
			case STOPLIST:
			case STUFF:
			case SUBJECT:
			case SUM:
			case SUSPEND:
			case SYMMETRIC:
			case SYNCHRONOUS_COMMIT:
			case SYNONYM:
			case TAKE:
			case TARGET_RECOVERY_TIME:
			case TB:
			case TEXTIMAGE_ON:
			case THROW:
			case TIES:
			case TIME:
			case TIMEOUT:
			case TIMER:
			case TINYINT:
			case TORN_PAGE_DETECTION:
			case TRANSFORM_NOISE_WORDS:
			case TRIPLE_DES:
			case TRIPLE_DES_3KEY:
			case TRUSTWORTHY:
			case TRY:
			case TSQL:
			case TWO_DIGIT_YEAR_CUTOFF:
			case TYPE:
			case TYPE_WARNING:
			case UNBOUNDED:
			case UNCOMMITTED:
			case UNKNOWN:
			case UNLIMITED:
			case USING:
			case VALID_XML:
			case VALIDATION:
			case VALUE:
			case VAR:
			case VARP:
			case VIEW_METADATA:
			case VIEWS:
			case WAIT:
			case WELL_FORMED_XML:
			case WORK:
			case WORKLOAD:
			case XML:
			case XMLNAMESPACES:
			case DOUBLE_QUOTE_ID:
			case SQUARE_BRACKET_ID:
			case ID:
				enterOuterAlt(_localctx, 1);
				{
				setState(1706);
				((Authorization_granteeContext)_localctx).principal_name = id();
				}
				break;
			case SCHEMA:
				enterOuterAlt(_localctx, 2);
				{
				setState(1707);
				match(SCHEMA);
				setState(1708);
				match(OWNER);
				}
				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 Entity_toContext extends ParserRuleContext {
		public TerminalNode TO() { return getToken(TSqlParser.TO, 0); }
		public Entity_toContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_entity_to; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterEntity_to(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitEntity_to(this);
		}
	}

	public final Entity_toContext entity_to() throws RecognitionException {
		Entity_toContext _localctx = new Entity_toContext(_ctx, getState());
		enterRule(_localctx, 134, RULE_entity_to);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1711);
			match(TO);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Colon_colonContext extends ParserRuleContext {
		public List COLON() { return getTokens(TSqlParser.COLON); }
		public TerminalNode COLON(int i) {
			return getToken(TSqlParser.COLON, i);
		}
		public Colon_colonContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_colon_colon; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterColon_colon(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitColon_colon(this);
		}
	}

	public final Colon_colonContext colon_colon() throws RecognitionException {
		Colon_colonContext _localctx = new Colon_colonContext(_ctx, getState());
		enterRule(_localctx, 136, RULE_colon_colon);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1713);
			match(COLON);
			setState(1714);
			match(COLON);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Alter_authorization_startContext extends ParserRuleContext {
		public TerminalNode ALTER() { return getToken(TSqlParser.ALTER, 0); }
		public TerminalNode AUTHORIZATION() { return getToken(TSqlParser.AUTHORIZATION, 0); }
		public TerminalNode ON() { return getToken(TSqlParser.ON, 0); }
		public Alter_authorization_startContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alter_authorization_start; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterAlter_authorization_start(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitAlter_authorization_start(this);
		}
	}

	public final Alter_authorization_startContext alter_authorization_start() throws RecognitionException {
		Alter_authorization_startContext _localctx = new Alter_authorization_startContext(_ctx, getState());
		enterRule(_localctx, 138, RULE_alter_authorization_start);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1716);
			match(ALTER);
			setState(1717);
			match(AUTHORIZATION);
			setState(1718);
			match(ON);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Alter_authorization_for_sql_databaseContext extends ParserRuleContext {
		public Entity_nameContext entity;
		public Alter_authorization_startContext alter_authorization_start() {
			return getRuleContext(Alter_authorization_startContext.class,0);
		}
		public Entity_toContext entity_to() {
			return getRuleContext(Entity_toContext.class,0);
		}
		public Authorization_granteeContext authorization_grantee() {
			return getRuleContext(Authorization_granteeContext.class,0);
		}
		public Entity_nameContext entity_name() {
			return getRuleContext(Entity_nameContext.class,0);
		}
		public Class_type_for_sql_databaseContext class_type_for_sql_database() {
			return getRuleContext(Class_type_for_sql_databaseContext.class,0);
		}
		public Colon_colonContext colon_colon() {
			return getRuleContext(Colon_colonContext.class,0);
		}
		public Alter_authorization_for_sql_databaseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alter_authorization_for_sql_database; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterAlter_authorization_for_sql_database(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitAlter_authorization_for_sql_database(this);
		}
	}

	public final Alter_authorization_for_sql_databaseContext alter_authorization_for_sql_database() throws RecognitionException {
		Alter_authorization_for_sql_databaseContext _localctx = new Alter_authorization_for_sql_databaseContext(_ctx, getState());
		enterRule(_localctx, 140, RULE_alter_authorization_for_sql_database);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1720);
			alter_authorization_start();
			setState(1724);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,93,_ctx) ) {
			case 1:
				{
				setState(1721);
				class_type_for_sql_database();
				setState(1722);
				colon_colon();
				}
				break;
			}
			setState(1726);
			((Alter_authorization_for_sql_databaseContext)_localctx).entity = entity_name();
			setState(1727);
			entity_to();
			setState(1728);
			authorization_grantee();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Alter_authorization_for_azure_dwContext extends ParserRuleContext {
		public Entity_name_for_azure_dwContext entity;
		public Alter_authorization_startContext alter_authorization_start() {
			return getRuleContext(Alter_authorization_startContext.class,0);
		}
		public Entity_toContext entity_to() {
			return getRuleContext(Entity_toContext.class,0);
		}
		public Authorization_granteeContext authorization_grantee() {
			return getRuleContext(Authorization_granteeContext.class,0);
		}
		public Entity_name_for_azure_dwContext entity_name_for_azure_dw() {
			return getRuleContext(Entity_name_for_azure_dwContext.class,0);
		}
		public Class_type_for_azure_dwContext class_type_for_azure_dw() {
			return getRuleContext(Class_type_for_azure_dwContext.class,0);
		}
		public Colon_colonContext colon_colon() {
			return getRuleContext(Colon_colonContext.class,0);
		}
		public Alter_authorization_for_azure_dwContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alter_authorization_for_azure_dw; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterAlter_authorization_for_azure_dw(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitAlter_authorization_for_azure_dw(this);
		}
	}

	public final Alter_authorization_for_azure_dwContext alter_authorization_for_azure_dw() throws RecognitionException {
		Alter_authorization_for_azure_dwContext _localctx = new Alter_authorization_for_azure_dwContext(_ctx, getState());
		enterRule(_localctx, 142, RULE_alter_authorization_for_azure_dw);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1730);
			alter_authorization_start();
			setState(1734);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,94,_ctx) ) {
			case 1:
				{
				setState(1731);
				class_type_for_azure_dw();
				setState(1732);
				colon_colon();
				}
				break;
			}
			setState(1736);
			((Alter_authorization_for_azure_dwContext)_localctx).entity = entity_name_for_azure_dw();
			setState(1737);
			entity_to();
			setState(1738);
			authorization_grantee();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Alter_authorization_for_parallel_dwContext extends ParserRuleContext {
		public Entity_name_for_parallel_dwContext entity;
		public Alter_authorization_startContext alter_authorization_start() {
			return getRuleContext(Alter_authorization_startContext.class,0);
		}
		public Entity_toContext entity_to() {
			return getRuleContext(Entity_toContext.class,0);
		}
		public Authorization_granteeContext authorization_grantee() {
			return getRuleContext(Authorization_granteeContext.class,0);
		}
		public Entity_name_for_parallel_dwContext entity_name_for_parallel_dw() {
			return getRuleContext(Entity_name_for_parallel_dwContext.class,0);
		}
		public Class_type_for_parallel_dwContext class_type_for_parallel_dw() {
			return getRuleContext(Class_type_for_parallel_dwContext.class,0);
		}
		public Colon_colonContext colon_colon() {
			return getRuleContext(Colon_colonContext.class,0);
		}
		public Alter_authorization_for_parallel_dwContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alter_authorization_for_parallel_dw; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterAlter_authorization_for_parallel_dw(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitAlter_authorization_for_parallel_dw(this);
		}
	}

	public final Alter_authorization_for_parallel_dwContext alter_authorization_for_parallel_dw() throws RecognitionException {
		Alter_authorization_for_parallel_dwContext _localctx = new Alter_authorization_for_parallel_dwContext(_ctx, getState());
		enterRule(_localctx, 144, RULE_alter_authorization_for_parallel_dw);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1740);
			alter_authorization_start();
			setState(1744);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,95,_ctx) ) {
			case 1:
				{
				setState(1741);
				class_type_for_parallel_dw();
				setState(1742);
				colon_colon();
				}
				break;
			}
			setState(1746);
			((Alter_authorization_for_parallel_dwContext)_localctx).entity = entity_name_for_parallel_dw();
			setState(1747);
			entity_to();
			setState(1748);
			authorization_grantee();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Class_typeContext extends ParserRuleContext {
		public TerminalNode OBJECT() { return getToken(TSqlParser.OBJECT, 0); }
		public TerminalNode ASSEMBLY() { return getToken(TSqlParser.ASSEMBLY, 0); }
		public TerminalNode ASYMMETRIC() { return getToken(TSqlParser.ASYMMETRIC, 0); }
		public TerminalNode KEY() { return getToken(TSqlParser.KEY, 0); }
		public TerminalNode AVAILABILITY() { return getToken(TSqlParser.AVAILABILITY, 0); }
		public TerminalNode GROUP() { return getToken(TSqlParser.GROUP, 0); }
		public TerminalNode CERTIFICATE() { return getToken(TSqlParser.CERTIFICATE, 0); }
		public TerminalNode CONTRACT() { return getToken(TSqlParser.CONTRACT, 0); }
		public TerminalNode TYPE() { return getToken(TSqlParser.TYPE, 0); }
		public TerminalNode DATABASE() { return getToken(TSqlParser.DATABASE, 0); }
		public TerminalNode ENDPOINT() { return getToken(TSqlParser.ENDPOINT, 0); }
		public TerminalNode FULLTEXT() { return getToken(TSqlParser.FULLTEXT, 0); }
		public TerminalNode CATALOG() { return getToken(TSqlParser.CATALOG, 0); }
		public TerminalNode STOPLIST() { return getToken(TSqlParser.STOPLIST, 0); }
		public TerminalNode MESSAGE() { return getToken(TSqlParser.MESSAGE, 0); }
		public TerminalNode REMOTE() { return getToken(TSqlParser.REMOTE, 0); }
		public TerminalNode SERVICE() { return getToken(TSqlParser.SERVICE, 0); }
		public TerminalNode BINDING() { return getToken(TSqlParser.BINDING, 0); }
		public TerminalNode ROLE() { return getToken(TSqlParser.ROLE, 0); }
		public TerminalNode ROUTE() { return getToken(TSqlParser.ROUTE, 0); }
		public TerminalNode SCHEMA() { return getToken(TSqlParser.SCHEMA, 0); }
		public TerminalNode SEARCH() { return getToken(TSqlParser.SEARCH, 0); }
		public TerminalNode PROPERTY() { return getToken(TSqlParser.PROPERTY, 0); }
		public TerminalNode LIST() { return getToken(TSqlParser.LIST, 0); }
		public TerminalNode SERVER() { return getToken(TSqlParser.SERVER, 0); }
		public TerminalNode SYMMETRIC() { return getToken(TSqlParser.SYMMETRIC, 0); }
		public TerminalNode XML() { return getToken(TSqlParser.XML, 0); }
		public TerminalNode COLLECTION() { return getToken(TSqlParser.COLLECTION, 0); }
		public Class_typeContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_class_type; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterClass_type(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitClass_type(this);
		}
	}

	public final Class_typeContext class_type() throws RecognitionException {
		Class_typeContext _localctx = new Class_typeContext(_ctx, getState());
		enterRule(_localctx, 146, RULE_class_type);
		try {
			setState(1784);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,96,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(1750);
				match(OBJECT);
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(1751);
				match(ASSEMBLY);
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(1752);
				match(ASYMMETRIC);
				setState(1753);
				match(KEY);
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(1754);
				match(AVAILABILITY);
				setState(1755);
				match(GROUP);
				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(1756);
				match(CERTIFICATE);
				}
				break;
			case 6:
				enterOuterAlt(_localctx, 6);
				{
				setState(1757);
				match(CONTRACT);
				}
				break;
			case 7:
				enterOuterAlt(_localctx, 7);
				{
				setState(1758);
				match(TYPE);
				}
				break;
			case 8:
				enterOuterAlt(_localctx, 8);
				{
				setState(1759);
				match(DATABASE);
				}
				break;
			case 9:
				enterOuterAlt(_localctx, 9);
				{
				setState(1760);
				match(ENDPOINT);
				}
				break;
			case 10:
				enterOuterAlt(_localctx, 10);
				{
				setState(1761);
				match(FULLTEXT);
				setState(1762);
				match(CATALOG);
				}
				break;
			case 11:
				enterOuterAlt(_localctx, 11);
				{
				setState(1763);
				match(FULLTEXT);
				setState(1764);
				match(STOPLIST);
				}
				break;
			case 12:
				enterOuterAlt(_localctx, 12);
				{
				setState(1765);
				match(MESSAGE);
				setState(1766);
				match(TYPE);
				}
				break;
			case 13:
				enterOuterAlt(_localctx, 13);
				{
				setState(1767);
				match(REMOTE);
				setState(1768);
				match(SERVICE);
				setState(1769);
				match(BINDING);
				}
				break;
			case 14:
				enterOuterAlt(_localctx, 14);
				{
				setState(1770);
				match(ROLE);
				}
				break;
			case 15:
				enterOuterAlt(_localctx, 15);
				{
				setState(1771);
				match(ROUTE);
				}
				break;
			case 16:
				enterOuterAlt(_localctx, 16);
				{
				setState(1772);
				match(SCHEMA);
				}
				break;
			case 17:
				enterOuterAlt(_localctx, 17);
				{
				setState(1773);
				match(SEARCH);
				setState(1774);
				match(PROPERTY);
				setState(1775);
				match(LIST);
				}
				break;
			case 18:
				enterOuterAlt(_localctx, 18);
				{
				setState(1776);
				match(SERVER);
				setState(1777);
				match(ROLE);
				}
				break;
			case 19:
				enterOuterAlt(_localctx, 19);
				{
				setState(1778);
				match(SERVICE);
				}
				break;
			case 20:
				enterOuterAlt(_localctx, 20);
				{
				setState(1779);
				match(SYMMETRIC);
				setState(1780);
				match(KEY);
				}
				break;
			case 21:
				enterOuterAlt(_localctx, 21);
				{
				setState(1781);
				match(XML);
				setState(1782);
				match(SCHEMA);
				setState(1783);
				match(COLLECTION);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Class_type_for_sql_databaseContext extends ParserRuleContext {
		public TerminalNode OBJECT() { return getToken(TSqlParser.OBJECT, 0); }
		public TerminalNode ASSEMBLY() { return getToken(TSqlParser.ASSEMBLY, 0); }
		public TerminalNode ASYMMETRIC() { return getToken(TSqlParser.ASYMMETRIC, 0); }
		public TerminalNode KEY() { return getToken(TSqlParser.KEY, 0); }
		public TerminalNode CERTIFICATE() { return getToken(TSqlParser.CERTIFICATE, 0); }
		public TerminalNode TYPE() { return getToken(TSqlParser.TYPE, 0); }
		public TerminalNode DATABASE() { return getToken(TSqlParser.DATABASE, 0); }
		public TerminalNode FULLTEXT() { return getToken(TSqlParser.FULLTEXT, 0); }
		public TerminalNode CATALOG() { return getToken(TSqlParser.CATALOG, 0); }
		public TerminalNode STOPLIST() { return getToken(TSqlParser.STOPLIST, 0); }
		public TerminalNode ROLE() { return getToken(TSqlParser.ROLE, 0); }
		public TerminalNode SCHEMA() { return getToken(TSqlParser.SCHEMA, 0); }
		public TerminalNode SEARCH() { return getToken(TSqlParser.SEARCH, 0); }
		public TerminalNode PROPERTY() { return getToken(TSqlParser.PROPERTY, 0); }
		public TerminalNode LIST() { return getToken(TSqlParser.LIST, 0); }
		public TerminalNode SYMMETRIC() { return getToken(TSqlParser.SYMMETRIC, 0); }
		public TerminalNode XML() { return getToken(TSqlParser.XML, 0); }
		public TerminalNode COLLECTION() { return getToken(TSqlParser.COLLECTION, 0); }
		public Class_type_for_sql_databaseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_class_type_for_sql_database; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterClass_type_for_sql_database(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitClass_type_for_sql_database(this);
		}
	}

	public final Class_type_for_sql_databaseContext class_type_for_sql_database() throws RecognitionException {
		Class_type_for_sql_databaseContext _localctx = new Class_type_for_sql_databaseContext(_ctx, getState());
		enterRule(_localctx, 148, RULE_class_type_for_sql_database);
		try {
			setState(1807);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,97,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(1786);
				match(OBJECT);
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(1787);
				match(ASSEMBLY);
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(1788);
				match(ASYMMETRIC);
				setState(1789);
				match(KEY);
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(1790);
				match(CERTIFICATE);
				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(1791);
				match(TYPE);
				}
				break;
			case 6:
				enterOuterAlt(_localctx, 6);
				{
				setState(1792);
				match(DATABASE);
				}
				break;
			case 7:
				enterOuterAlt(_localctx, 7);
				{
				setState(1793);
				match(FULLTEXT);
				setState(1794);
				match(CATALOG);
				}
				break;
			case 8:
				enterOuterAlt(_localctx, 8);
				{
				setState(1795);
				match(FULLTEXT);
				setState(1796);
				match(STOPLIST);
				}
				break;
			case 9:
				enterOuterAlt(_localctx, 9);
				{
				setState(1797);
				match(ROLE);
				}
				break;
			case 10:
				enterOuterAlt(_localctx, 10);
				{
				setState(1798);
				match(SCHEMA);
				}
				break;
			case 11:
				enterOuterAlt(_localctx, 11);
				{
				setState(1799);
				match(SEARCH);
				setState(1800);
				match(PROPERTY);
				setState(1801);
				match(LIST);
				}
				break;
			case 12:
				enterOuterAlt(_localctx, 12);
				{
				setState(1802);
				match(SYMMETRIC);
				setState(1803);
				match(KEY);
				}
				break;
			case 13:
				enterOuterAlt(_localctx, 13);
				{
				setState(1804);
				match(XML);
				setState(1805);
				match(SCHEMA);
				setState(1806);
				match(COLLECTION);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Class_type_for_azure_dwContext extends ParserRuleContext {
		public TerminalNode SCHEMA() { return getToken(TSqlParser.SCHEMA, 0); }
		public TerminalNode OBJECT() { return getToken(TSqlParser.OBJECT, 0); }
		public Class_type_for_azure_dwContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_class_type_for_azure_dw; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterClass_type_for_azure_dw(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitClass_type_for_azure_dw(this);
		}
	}

	public final Class_type_for_azure_dwContext class_type_for_azure_dw() throws RecognitionException {
		Class_type_for_azure_dwContext _localctx = new Class_type_for_azure_dwContext(_ctx, getState());
		enterRule(_localctx, 150, RULE_class_type_for_azure_dw);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1809);
			_la = _input.LA(1);
			if ( !(_la==SCHEMA || _la==OBJECT) ) {
			_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 Class_type_for_parallel_dwContext extends ParserRuleContext {
		public TerminalNode DATABASE() { return getToken(TSqlParser.DATABASE, 0); }
		public TerminalNode SCHEMA() { return getToken(TSqlParser.SCHEMA, 0); }
		public TerminalNode OBJECT() { return getToken(TSqlParser.OBJECT, 0); }
		public Class_type_for_parallel_dwContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_class_type_for_parallel_dw; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterClass_type_for_parallel_dw(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitClass_type_for_parallel_dw(this);
		}
	}

	public final Class_type_for_parallel_dwContext class_type_for_parallel_dw() throws RecognitionException {
		Class_type_for_parallel_dwContext _localctx = new Class_type_for_parallel_dwContext(_ctx, getState());
		enterRule(_localctx, 152, RULE_class_type_for_parallel_dw);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1811);
			_la = _input.LA(1);
			if ( !(_la==DATABASE || _la==SCHEMA || _la==OBJECT) ) {
			_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 Drop_availability_groupContext extends ParserRuleContext {
		public IdContext group_name;
		public TerminalNode DROP() { return getToken(TSqlParser.DROP, 0); }
		public TerminalNode AVAILABILITY() { return getToken(TSqlParser.AVAILABILITY, 0); }
		public TerminalNode GROUP() { return getToken(TSqlParser.GROUP, 0); }
		public IdContext id() {
			return getRuleContext(IdContext.class,0);
		}
		public Drop_availability_groupContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_drop_availability_group; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterDrop_availability_group(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitDrop_availability_group(this);
		}
	}

	public final Drop_availability_groupContext drop_availability_group() throws RecognitionException {
		Drop_availability_groupContext _localctx = new Drop_availability_groupContext(_ctx, getState());
		enterRule(_localctx, 154, RULE_drop_availability_group);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1813);
			match(DROP);
			setState(1814);
			match(AVAILABILITY);
			setState(1815);
			match(GROUP);
			setState(1816);
			((Drop_availability_groupContext)_localctx).group_name = id();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Alter_availability_groupContext extends ParserRuleContext {
		public Alter_availability_group_startContext alter_availability_group_start() {
			return getRuleContext(Alter_availability_group_startContext.class,0);
		}
		public Alter_availability_group_optionsContext alter_availability_group_options() {
			return getRuleContext(Alter_availability_group_optionsContext.class,0);
		}
		public Alter_availability_groupContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alter_availability_group; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterAlter_availability_group(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitAlter_availability_group(this);
		}
	}

	public final Alter_availability_groupContext alter_availability_group() throws RecognitionException {
		Alter_availability_groupContext _localctx = new Alter_availability_groupContext(_ctx, getState());
		enterRule(_localctx, 156, RULE_alter_availability_group);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1818);
			alter_availability_group_start();
			setState(1819);
			alter_availability_group_options();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Alter_availability_group_startContext extends ParserRuleContext {
		public IdContext group_name;
		public TerminalNode ALTER() { return getToken(TSqlParser.ALTER, 0); }
		public TerminalNode AVAILABILITY() { return getToken(TSqlParser.AVAILABILITY, 0); }
		public TerminalNode GROUP() { return getToken(TSqlParser.GROUP, 0); }
		public IdContext id() {
			return getRuleContext(IdContext.class,0);
		}
		public Alter_availability_group_startContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alter_availability_group_start; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterAlter_availability_group_start(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitAlter_availability_group_start(this);
		}
	}

	public final Alter_availability_group_startContext alter_availability_group_start() throws RecognitionException {
		Alter_availability_group_startContext _localctx = new Alter_availability_group_startContext(_ctx, getState());
		enterRule(_localctx, 158, RULE_alter_availability_group_start);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1821);
			match(ALTER);
			setState(1822);
			match(AVAILABILITY);
			setState(1823);
			match(GROUP);
			setState(1824);
			((Alter_availability_group_startContext)_localctx).group_name = id();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Alter_availability_group_optionsContext extends ParserRuleContext {
		public Token milliseconds;
		public IdContext database_name;
		public Token server_instance;
		public Token session_timeout;
		public Token ag_name;
		public Token ag_name_modified;
		public Token listener_name;
		public TerminalNode SET() { return getToken(TSqlParser.SET, 0); }
		public List LR_BRACKET() { return getTokens(TSqlParser.LR_BRACKET); }
		public TerminalNode LR_BRACKET(int i) {
			return getToken(TSqlParser.LR_BRACKET, i);
		}
		public List RR_BRACKET() { return getTokens(TSqlParser.RR_BRACKET); }
		public TerminalNode RR_BRACKET(int i) {
			return getToken(TSqlParser.RR_BRACKET, i);
		}
		public TerminalNode AUTOMATED_BACKUP_PREFERENCE() { return getToken(TSqlParser.AUTOMATED_BACKUP_PREFERENCE, 0); }
		public List EQUAL() { return getTokens(TSqlParser.EQUAL); }
		public TerminalNode EQUAL(int i) {
			return getToken(TSqlParser.EQUAL, i);
		}
		public TerminalNode FAILURE_CONDITION_LEVEL() { return getToken(TSqlParser.FAILURE_CONDITION_LEVEL, 0); }
		public TerminalNode DECIMAL() { return getToken(TSqlParser.DECIMAL, 0); }
		public TerminalNode HEALTH_CHECK_TIMEOUT() { return getToken(TSqlParser.HEALTH_CHECK_TIMEOUT, 0); }
		public TerminalNode DB_FAILOVER() { return getToken(TSqlParser.DB_FAILOVER, 0); }
		public TerminalNode REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT() { return getToken(TSqlParser.REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT, 0); }
		public TerminalNode PRIMARY() { return getToken(TSqlParser.PRIMARY, 0); }
		public TerminalNode SECONDARY_ONLY() { return getToken(TSqlParser.SECONDARY_ONLY, 0); }
		public TerminalNode SECONDARY() { return getToken(TSqlParser.SECONDARY, 0); }
		public TerminalNode NONE() { return getToken(TSqlParser.NONE, 0); }
		public TerminalNode ON() { return getToken(TSqlParser.ON, 0); }
		public TerminalNode OFF() { return getToken(TSqlParser.OFF, 0); }
		public TerminalNode ADD() { return getToken(TSqlParser.ADD, 0); }
		public TerminalNode DATABASE() { return getToken(TSqlParser.DATABASE, 0); }
		public IdContext id() {
			return getRuleContext(IdContext.class,0);
		}
		public TerminalNode REMOVE() { return getToken(TSqlParser.REMOVE, 0); }
		public TerminalNode REPLICA() { return getToken(TSqlParser.REPLICA, 0); }
		public List STRING() { return getTokens(TSqlParser.STRING); }
		public TerminalNode STRING(int i) {
			return getToken(TSqlParser.STRING, i);
		}
		public List WITH() { return getTokens(TSqlParser.WITH); }
		public TerminalNode WITH(int i) {
			return getToken(TSqlParser.WITH, i);
		}
		public TerminalNode ENDPOINT_URL() { return getToken(TSqlParser.ENDPOINT_URL, 0); }
		public List AVAILABILITY_MODE() { return getTokens(TSqlParser.AVAILABILITY_MODE); }
		public TerminalNode AVAILABILITY_MODE(int i) {
			return getToken(TSqlParser.AVAILABILITY_MODE, i);
		}
		public List FAILOVER_MODE() { return getTokens(TSqlParser.FAILOVER_MODE); }
		public TerminalNode FAILOVER_MODE(int i) {
			return getToken(TSqlParser.FAILOVER_MODE, i);
		}
		public List SEEDING_MODE() { return getTokens(TSqlParser.SEEDING_MODE); }
		public TerminalNode SEEDING_MODE(int i) {
			return getToken(TSqlParser.SEEDING_MODE, i);
		}
		public TerminalNode BACKUP_PRIORITY() { return getToken(TSqlParser.BACKUP_PRIORITY, 0); }
		public TerminalNode PRIMARY_ROLE() { return getToken(TSqlParser.PRIMARY_ROLE, 0); }
		public List ALLOW_CONNECTIONS() { return getTokens(TSqlParser.ALLOW_CONNECTIONS); }
		public TerminalNode ALLOW_CONNECTIONS(int i) {
			return getToken(TSqlParser.ALLOW_CONNECTIONS, i);
		}
		public TerminalNode SECONDARY_ROLE() { return getToken(TSqlParser.SECONDARY_ROLE, 0); }
		public List SYNCHRONOUS_COMMIT() { return getTokens(TSqlParser.SYNCHRONOUS_COMMIT); }
		public TerminalNode SYNCHRONOUS_COMMIT(int i) {
			return getToken(TSqlParser.SYNCHRONOUS_COMMIT, i);
		}
		public List ASYNCHRONOUS_COMMIT() { return getTokens(TSqlParser.ASYNCHRONOUS_COMMIT); }
		public TerminalNode ASYNCHRONOUS_COMMIT(int i) {
			return getToken(TSqlParser.ASYNCHRONOUS_COMMIT, i);
		}
		public List AUTOMATIC() { return getTokens(TSqlParser.AUTOMATIC); }
		public TerminalNode AUTOMATIC(int i) {
			return getToken(TSqlParser.AUTOMATIC, i);
		}
		public List MANUAL() { return getTokens(TSqlParser.MANUAL); }
		public TerminalNode MANUAL(int i) {
			return getToken(TSqlParser.MANUAL, i);
		}
		public TerminalNode READ_WRITE() { return getToken(TSqlParser.READ_WRITE, 0); }
		public TerminalNode ALL() { return getToken(TSqlParser.ALL, 0); }
		public TerminalNode READ_ONLY() { return getToken(TSqlParser.READ_ONLY, 0); }
		public List COMMA() { return getTokens(TSqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(TSqlParser.COMMA, i);
		}
		public TerminalNode READ_ONLY_ROUTING_LIST() { return getToken(TSqlParser.READ_ONLY_ROUTING_LIST, 0); }
		public TerminalNode NO() { return getToken(TSqlParser.NO, 0); }
		public TerminalNode SESSION_TIMEOUT() { return getToken(TSqlParser.SESSION_TIMEOUT, 0); }
		public TerminalNode MODIFY() { return getToken(TSqlParser.MODIFY, 0); }
		public TerminalNode JOIN() { return getToken(TSqlParser.JOIN, 0); }
		public TerminalNode AVAILABILITY() { return getToken(TSqlParser.AVAILABILITY, 0); }
		public TerminalNode GROUP() { return getToken(TSqlParser.GROUP, 0); }
		public List LISTENER_URL() { return getTokens(TSqlParser.LISTENER_URL); }
		public TerminalNode LISTENER_URL(int i) {
			return getToken(TSqlParser.LISTENER_URL, i);
		}
		public TerminalNode GRANT() { return getToken(TSqlParser.GRANT, 0); }
		public TerminalNode CREATE() { return getToken(TSqlParser.CREATE, 0); }
		public TerminalNode ANY() { return getToken(TSqlParser.ANY, 0); }
		public TerminalNode DENY() { return getToken(TSqlParser.DENY, 0); }
		public TerminalNode FAILOVER() { return getToken(TSqlParser.FAILOVER, 0); }
		public TerminalNode FORCE_FAILOVER_ALLOW_DATA_LOSS() { return getToken(TSqlParser.FORCE_FAILOVER_ALLOW_DATA_LOSS, 0); }
		public TerminalNode LISTENER() { return getToken(TSqlParser.LISTENER, 0); }
		public TerminalNode DHCP() { return getToken(TSqlParser.DHCP, 0); }
		public TerminalNode IP() { return getToken(TSqlParser.IP, 0); }
		public List IPV4_ADDR() { return getTokens(TSqlParser.IPV4_ADDR); }
		public TerminalNode IPV4_ADDR(int i) {
			return getToken(TSqlParser.IPV4_ADDR, i);
		}
		public TerminalNode PORT() { return getToken(TSqlParser.PORT, 0); }
		public List IPV6_ADDR() { return getTokens(TSqlParser.IPV6_ADDR); }
		public TerminalNode IPV6_ADDR(int i) {
			return getToken(TSqlParser.IPV6_ADDR, i);
		}
		public TerminalNode RESTART() { return getToken(TSqlParser.RESTART, 0); }
		public TerminalNode OFFLINE() { return getToken(TSqlParser.OFFLINE, 0); }
		public TerminalNode DTC_SUPPORT() { return getToken(TSqlParser.DTC_SUPPORT, 0); }
		public TerminalNode PER_DB() { return getToken(TSqlParser.PER_DB, 0); }
		public Alter_availability_group_optionsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alter_availability_group_options; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterAlter_availability_group_options(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitAlter_availability_group_options(this);
		}
	}

	public final Alter_availability_group_optionsContext alter_availability_group_options() throws RecognitionException {
		Alter_availability_group_optionsContext _localctx = new Alter_availability_group_optionsContext(_ctx, getState());
		enterRule(_localctx, 160, RULE_alter_availability_group_options);
		int _la;
		try {
			int _alt;
			setState(2176);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,141,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(1826);
				match(SET);
				setState(1827);
				match(LR_BRACKET);
				{
				setState(1843);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case AUTOMATED_BACKUP_PREFERENCE:
					{
					setState(1828);
					match(AUTOMATED_BACKUP_PREFERENCE);
					setState(1829);
					match(EQUAL);
					setState(1830);
					_la = _input.LA(1);
					if ( !(_la==NONE || _la==PRIMARY || _la==SECONDARY || _la==SECONDARY_ONLY) ) {
					_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					}
					break;
				case FAILURE_CONDITION_LEVEL:
					{
					setState(1831);
					match(FAILURE_CONDITION_LEVEL);
					setState(1832);
					match(EQUAL);
					setState(1833);
					match(DECIMAL);
					}
					break;
				case HEALTH_CHECK_TIMEOUT:
					{
					setState(1834);
					match(HEALTH_CHECK_TIMEOUT);
					setState(1835);
					match(EQUAL);
					setState(1836);
					((Alter_availability_group_optionsContext)_localctx).milliseconds = match(DECIMAL);
					}
					break;
				case DB_FAILOVER:
					{
					setState(1837);
					match(DB_FAILOVER);
					setState(1838);
					match(EQUAL);
					setState(1839);
					_la = _input.LA(1);
					if ( !(_la==OFF || _la==ON) ) {
					_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					}
					break;
				case REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT:
					{
					setState(1840);
					match(REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT);
					setState(1841);
					match(EQUAL);
					setState(1842);
					match(DECIMAL);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				setState(1845);
				match(RR_BRACKET);
				}
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(1846);
				match(ADD);
				setState(1847);
				match(DATABASE);
				setState(1848);
				((Alter_availability_group_optionsContext)_localctx).database_name = id();
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(1849);
				match(REMOVE);
				setState(1850);
				match(DATABASE);
				setState(1851);
				((Alter_availability_group_optionsContext)_localctx).database_name = id();
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(1852);
				match(ADD);
				setState(1853);
				match(REPLICA);
				setState(1854);
				match(ON);
				setState(1855);
				((Alter_availability_group_optionsContext)_localctx).server_instance = match(STRING);
				{
				setState(1856);
				match(WITH);
				setState(1857);
				match(LR_BRACKET);
				{
				setState(1861);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==ENDPOINT_URL) {
					{
					setState(1858);
					match(ENDPOINT_URL);
					setState(1859);
					match(EQUAL);
					setState(1860);
					match(STRING);
					}
				}

				setState(1869);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,101,_ctx) ) {
				case 1:
					{
					setState(1864);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==COMMA) {
						{
						setState(1863);
						match(COMMA);
						}
					}

					setState(1866);
					match(AVAILABILITY_MODE);
					setState(1867);
					match(EQUAL);
					setState(1868);
					_la = _input.LA(1);
					if ( !(_la==ASYNCHRONOUS_COMMIT || _la==SYNCHRONOUS_COMMIT) ) {
					_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					}
					break;
				}
				setState(1877);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,103,_ctx) ) {
				case 1:
					{
					setState(1872);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==COMMA) {
						{
						setState(1871);
						match(COMMA);
						}
					}

					setState(1874);
					match(FAILOVER_MODE);
					setState(1875);
					match(EQUAL);
					setState(1876);
					_la = _input.LA(1);
					if ( !(_la==AUTOMATIC || _la==MANUAL) ) {
					_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					}
					break;
				}
				setState(1885);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,105,_ctx) ) {
				case 1:
					{
					setState(1880);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==COMMA) {
						{
						setState(1879);
						match(COMMA);
						}
					}

					setState(1882);
					match(SEEDING_MODE);
					setState(1883);
					match(EQUAL);
					setState(1884);
					_la = _input.LA(1);
					if ( !(_la==AUTOMATIC || _la==MANUAL) ) {
					_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					}
					break;
				}
				setState(1893);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,107,_ctx) ) {
				case 1:
					{
					setState(1888);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==COMMA) {
						{
						setState(1887);
						match(COMMA);
						}
					}

					setState(1890);
					match(BACKUP_PRIORITY);
					setState(1891);
					match(EQUAL);
					setState(1892);
					match(DECIMAL);
					}
					break;
				}
				setState(1904);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,109,_ctx) ) {
				case 1:
					{
					setState(1896);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==COMMA) {
						{
						setState(1895);
						match(COMMA);
						}
					}

					setState(1898);
					match(PRIMARY_ROLE);
					setState(1899);
					match(LR_BRACKET);
					setState(1900);
					match(ALLOW_CONNECTIONS);
					setState(1901);
					match(EQUAL);
					setState(1902);
					_la = _input.LA(1);
					if ( !(_la==ALL || _la==READ_WRITE) ) {
					_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					setState(1903);
					match(RR_BRACKET);
					}
					break;
				}
				setState(1915);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==SECONDARY_ROLE || _la==COMMA) {
					{
					setState(1907);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==COMMA) {
						{
						setState(1906);
						match(COMMA);
						}
					}

					setState(1909);
					match(SECONDARY_ROLE);
					setState(1910);
					match(LR_BRACKET);
					setState(1911);
					match(ALLOW_CONNECTIONS);
					setState(1912);
					match(EQUAL);
					{
					setState(1913);
					match(READ_ONLY);
					}
					setState(1914);
					match(RR_BRACKET);
					}
				}

				}
				}
				setState(1917);
				match(RR_BRACKET);
				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(1918);
				match(SECONDARY_ROLE);
				setState(1919);
				match(LR_BRACKET);
				setState(1928);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case ALLOW_CONNECTIONS:
					{
					setState(1920);
					match(ALLOW_CONNECTIONS);
					setState(1921);
					match(EQUAL);
					setState(1922);
					_la = _input.LA(1);
					if ( !(_la==ALL || _la==NO || _la==READ_ONLY) ) {
					_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					}
					break;
				case READ_ONLY_ROUTING_LIST:
					{
					setState(1923);
					match(READ_ONLY_ROUTING_LIST);
					setState(1924);
					match(EQUAL);
					{
					setState(1925);
					match(LR_BRACKET);
					{
					{
					setState(1926);
					match(STRING);
					}
					}
					setState(1927);
					match(RR_BRACKET);
					}
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;
			case 6:
				enterOuterAlt(_localctx, 6);
				{
				setState(1930);
				match(PRIMARY_ROLE);
				setState(1931);
				match(LR_BRACKET);
				setState(1954);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case ALLOW_CONNECTIONS:
					{
					setState(1932);
					match(ALLOW_CONNECTIONS);
					setState(1933);
					match(EQUAL);
					setState(1934);
					_la = _input.LA(1);
					if ( !(_la==ALL || _la==NO || _la==READ_ONLY) ) {
					_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					}
					break;
				case READ_ONLY_ROUTING_LIST:
					{
					setState(1935);
					match(READ_ONLY_ROUTING_LIST);
					setState(1936);
					match(EQUAL);
					{
					setState(1937);
					match(LR_BRACKET);
					setState(1948);
					_errHandler.sync(this);
					switch (_input.LA(1)) {
					case STRING:
					case RR_BRACKET:
					case COMMA:
						{
						setState(1944);
						_errHandler.sync(this);
						_la = _input.LA(1);
						while (_la==STRING || _la==COMMA) {
							{
							{
							setState(1939);
							_errHandler.sync(this);
							_la = _input.LA(1);
							if (_la==COMMA) {
								{
								setState(1938);
								match(COMMA);
								}
							}

							setState(1941);
							match(STRING);
							}
							}
							setState(1946);
							_errHandler.sync(this);
							_la = _input.LA(1);
						}
						}
						break;
					case NONE:
						{
						setState(1947);
						match(NONE);
						}
						break;
					default:
						throw new NoViableAltException(this);
					}
					setState(1950);
					match(RR_BRACKET);
					}
					}
					break;
				case SESSION_TIMEOUT:
					{
					setState(1951);
					match(SESSION_TIMEOUT);
					setState(1952);
					match(EQUAL);
					setState(1953);
					((Alter_availability_group_optionsContext)_localctx).session_timeout = match(DECIMAL);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;
			case 7:
				enterOuterAlt(_localctx, 7);
				{
				setState(1956);
				match(MODIFY);
				setState(1957);
				match(REPLICA);
				setState(1958);
				match(ON);
				setState(1959);
				((Alter_availability_group_optionsContext)_localctx).server_instance = match(STRING);
				setState(2017);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case WITH:
					{
					setState(1960);
					match(WITH);
					setState(1961);
					match(LR_BRACKET);
					setState(1977);
					_errHandler.sync(this);
					switch (_input.LA(1)) {
					case ENDPOINT_URL:
						{
						setState(1962);
						match(ENDPOINT_URL);
						setState(1963);
						match(EQUAL);
						setState(1964);
						match(STRING);
						}
						break;
					case AVAILABILITY_MODE:
						{
						setState(1965);
						match(AVAILABILITY_MODE);
						setState(1966);
						match(EQUAL);
						setState(1967);
						_la = _input.LA(1);
						if ( !(_la==ASYNCHRONOUS_COMMIT || _la==SYNCHRONOUS_COMMIT) ) {
						_errHandler.recoverInline(this);
						}
						else {
							if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
							_errHandler.reportMatch(this);
							consume();
						}
						}
						break;
					case FAILOVER_MODE:
						{
						setState(1968);
						match(FAILOVER_MODE);
						setState(1969);
						match(EQUAL);
						setState(1970);
						_la = _input.LA(1);
						if ( !(_la==AUTOMATIC || _la==MANUAL) ) {
						_errHandler.recoverInline(this);
						}
						else {
							if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
							_errHandler.reportMatch(this);
							consume();
						}
						}
						break;
					case SEEDING_MODE:
						{
						setState(1971);
						match(SEEDING_MODE);
						setState(1972);
						match(EQUAL);
						setState(1973);
						_la = _input.LA(1);
						if ( !(_la==AUTOMATIC || _la==MANUAL) ) {
						_errHandler.recoverInline(this);
						}
						else {
							if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
							_errHandler.reportMatch(this);
							consume();
						}
						}
						break;
					case BACKUP_PRIORITY:
						{
						setState(1974);
						match(BACKUP_PRIORITY);
						setState(1975);
						match(EQUAL);
						setState(1976);
						match(DECIMAL);
						}
						break;
					default:
						throw new NoViableAltException(this);
					}
					}
					break;
				case SECONDARY_ROLE:
					{
					setState(1979);
					match(SECONDARY_ROLE);
					setState(1980);
					match(LR_BRACKET);
					setState(1989);
					_errHandler.sync(this);
					switch (_input.LA(1)) {
					case ALLOW_CONNECTIONS:
						{
						setState(1981);
						match(ALLOW_CONNECTIONS);
						setState(1982);
						match(EQUAL);
						setState(1983);
						_la = _input.LA(1);
						if ( !(_la==ALL || _la==NO || _la==READ_ONLY) ) {
						_errHandler.recoverInline(this);
						}
						else {
							if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
							_errHandler.reportMatch(this);
							consume();
						}
						}
						break;
					case READ_ONLY_ROUTING_LIST:
						{
						setState(1984);
						match(READ_ONLY_ROUTING_LIST);
						setState(1985);
						match(EQUAL);
						{
						setState(1986);
						match(LR_BRACKET);
						{
						{
						setState(1987);
						match(STRING);
						}
						}
						setState(1988);
						match(RR_BRACKET);
						}
						}
						break;
					default:
						throw new NoViableAltException(this);
					}
					}
					break;
				case PRIMARY_ROLE:
					{
					setState(1991);
					match(PRIMARY_ROLE);
					setState(1992);
					match(LR_BRACKET);
					setState(2015);
					_errHandler.sync(this);
					switch (_input.LA(1)) {
					case ALLOW_CONNECTIONS:
						{
						setState(1993);
						match(ALLOW_CONNECTIONS);
						setState(1994);
						match(EQUAL);
						setState(1995);
						_la = _input.LA(1);
						if ( !(_la==ALL || _la==NO || _la==READ_ONLY) ) {
						_errHandler.recoverInline(this);
						}
						else {
							if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
							_errHandler.reportMatch(this);
							consume();
						}
						}
						break;
					case READ_ONLY_ROUTING_LIST:
						{
						setState(1996);
						match(READ_ONLY_ROUTING_LIST);
						setState(1997);
						match(EQUAL);
						{
						setState(1998);
						match(LR_BRACKET);
						setState(2009);
						_errHandler.sync(this);
						switch (_input.LA(1)) {
						case STRING:
						case RR_BRACKET:
						case COMMA:
							{
							setState(2005);
							_errHandler.sync(this);
							_la = _input.LA(1);
							while (_la==STRING || _la==COMMA) {
								{
								{
								setState(2000);
								_errHandler.sync(this);
								_la = _input.LA(1);
								if (_la==COMMA) {
									{
									setState(1999);
									match(COMMA);
									}
								}

								setState(2002);
								match(STRING);
								}
								}
								setState(2007);
								_errHandler.sync(this);
								_la = _input.LA(1);
							}
							}
							break;
						case NONE:
							{
							setState(2008);
							match(NONE);
							}
							break;
						default:
							throw new NoViableAltException(this);
						}
						setState(2011);
						match(RR_BRACKET);
						}
						}
						break;
					case SESSION_TIMEOUT:
						{
						setState(2012);
						match(SESSION_TIMEOUT);
						setState(2013);
						match(EQUAL);
						setState(2014);
						((Alter_availability_group_optionsContext)_localctx).session_timeout = match(DECIMAL);
						}
						break;
					default:
						throw new NoViableAltException(this);
					}
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				setState(2019);
				match(RR_BRACKET);
				}
				break;
			case 8:
				enterOuterAlt(_localctx, 8);
				{
				setState(2020);
				match(REMOVE);
				setState(2021);
				match(REPLICA);
				setState(2022);
				match(ON);
				setState(2023);
				match(STRING);
				}
				break;
			case 9:
				enterOuterAlt(_localctx, 9);
				{
				setState(2024);
				match(JOIN);
				}
				break;
			case 10:
				enterOuterAlt(_localctx, 10);
				{
				setState(2025);
				match(JOIN);
				setState(2026);
				match(AVAILABILITY);
				setState(2027);
				match(GROUP);
				setState(2028);
				match(ON);
				setState(2051); 
				_errHandler.sync(this);
				_alt = 1;
				do {
					switch (_alt) {
					case 1:
						{
						{
						setState(2030);
						_errHandler.sync(this);
						_la = _input.LA(1);
						if (_la==COMMA) {
							{
							setState(2029);
							match(COMMA);
							}
						}

						setState(2032);
						((Alter_availability_group_optionsContext)_localctx).ag_name = match(STRING);
						setState(2033);
						match(WITH);
						setState(2034);
						match(LR_BRACKET);
						{
						setState(2035);
						match(LISTENER_URL);
						setState(2036);
						match(EQUAL);
						setState(2037);
						match(STRING);
						setState(2038);
						match(COMMA);
						setState(2039);
						match(AVAILABILITY_MODE);
						setState(2040);
						match(EQUAL);
						setState(2041);
						_la = _input.LA(1);
						if ( !(_la==ASYNCHRONOUS_COMMIT || _la==SYNCHRONOUS_COMMIT) ) {
						_errHandler.recoverInline(this);
						}
						else {
							if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
							_errHandler.reportMatch(this);
							consume();
						}
						setState(2042);
						match(COMMA);
						setState(2043);
						match(FAILOVER_MODE);
						setState(2044);
						match(EQUAL);
						setState(2045);
						match(MANUAL);
						setState(2046);
						match(COMMA);
						setState(2047);
						match(SEEDING_MODE);
						setState(2048);
						match(EQUAL);
						setState(2049);
						_la = _input.LA(1);
						if ( !(_la==AUTOMATIC || _la==MANUAL) ) {
						_errHandler.recoverInline(this);
						}
						else {
							if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
							_errHandler.reportMatch(this);
							consume();
						}
						setState(2050);
						match(RR_BRACKET);
						}
						}
						}
						break;
					default:
						throw new NoViableAltException(this);
					}
					setState(2053); 
					_errHandler.sync(this);
					_alt = getInterpreter().adaptivePredict(_input,125,_ctx);
				} while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER );
				}
				break;
			case 11:
				enterOuterAlt(_localctx, 11);
				{
				setState(2055);
				match(MODIFY);
				setState(2056);
				match(AVAILABILITY);
				setState(2057);
				match(GROUP);
				setState(2058);
				match(ON);
				setState(2093); 
				_errHandler.sync(this);
				_alt = 1;
				do {
					switch (_alt) {
					case 1:
						{
						{
						setState(2060);
						_errHandler.sync(this);
						_la = _input.LA(1);
						if (_la==COMMA) {
							{
							setState(2059);
							match(COMMA);
							}
						}

						setState(2062);
						((Alter_availability_group_optionsContext)_localctx).ag_name_modified = match(STRING);
						setState(2063);
						match(WITH);
						setState(2064);
						match(LR_BRACKET);
						{
						setState(2065);
						match(LISTENER_URL);
						setState(2066);
						match(EQUAL);
						setState(2067);
						match(STRING);
						setState(2074);
						_errHandler.sync(this);
						switch ( getInterpreter().adaptivePredict(_input,128,_ctx) ) {
						case 1:
							{
							setState(2069);
							_errHandler.sync(this);
							_la = _input.LA(1);
							if (_la==COMMA) {
								{
								setState(2068);
								match(COMMA);
								}
							}

							setState(2071);
							match(AVAILABILITY_MODE);
							setState(2072);
							match(EQUAL);
							setState(2073);
							_la = _input.LA(1);
							if ( !(_la==ASYNCHRONOUS_COMMIT || _la==SYNCHRONOUS_COMMIT) ) {
							_errHandler.recoverInline(this);
							}
							else {
								if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
								_errHandler.reportMatch(this);
								consume();
							}
							}
							break;
						}
						setState(2082);
						_errHandler.sync(this);
						switch ( getInterpreter().adaptivePredict(_input,130,_ctx) ) {
						case 1:
							{
							setState(2077);
							_errHandler.sync(this);
							_la = _input.LA(1);
							if (_la==COMMA) {
								{
								setState(2076);
								match(COMMA);
								}
							}

							setState(2079);
							match(FAILOVER_MODE);
							setState(2080);
							match(EQUAL);
							setState(2081);
							match(MANUAL);
							}
							break;
						}
						setState(2090);
						_errHandler.sync(this);
						_la = _input.LA(1);
						if (_la==SEEDING_MODE || _la==COMMA) {
							{
							setState(2085);
							_errHandler.sync(this);
							_la = _input.LA(1);
							if (_la==COMMA) {
								{
								setState(2084);
								match(COMMA);
								}
							}

							setState(2087);
							match(SEEDING_MODE);
							setState(2088);
							match(EQUAL);
							setState(2089);
							_la = _input.LA(1);
							if ( !(_la==AUTOMATIC || _la==MANUAL) ) {
							_errHandler.recoverInline(this);
							}
							else {
								if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
								_errHandler.reportMatch(this);
								consume();
							}
							}
						}

						setState(2092);
						match(RR_BRACKET);
						}
						}
						}
						break;
					default:
						throw new NoViableAltException(this);
					}
					setState(2095); 
					_errHandler.sync(this);
					_alt = getInterpreter().adaptivePredict(_input,133,_ctx);
				} while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER );
				}
				break;
			case 12:
				enterOuterAlt(_localctx, 12);
				{
				setState(2097);
				match(GRANT);
				setState(2098);
				match(CREATE);
				setState(2099);
				match(ANY);
				setState(2100);
				match(DATABASE);
				}
				break;
			case 13:
				enterOuterAlt(_localctx, 13);
				{
				setState(2101);
				match(DENY);
				setState(2102);
				match(CREATE);
				setState(2103);
				match(ANY);
				setState(2104);
				match(DATABASE);
				}
				break;
			case 14:
				enterOuterAlt(_localctx, 14);
				{
				setState(2105);
				match(FAILOVER);
				}
				break;
			case 15:
				enterOuterAlt(_localctx, 15);
				{
				setState(2106);
				match(FORCE_FAILOVER_ALLOW_DATA_LOSS);
				}
				break;
			case 16:
				enterOuterAlt(_localctx, 16);
				{
				setState(2107);
				match(ADD);
				setState(2108);
				match(LISTENER);
				setState(2109);
				((Alter_availability_group_optionsContext)_localctx).listener_name = match(STRING);
				setState(2110);
				match(LR_BRACKET);
				setState(2144);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,138,_ctx) ) {
				case 1:
					{
					setState(2111);
					match(WITH);
					setState(2112);
					match(DHCP);
					{
					setState(2113);
					match(ON);
					setState(2114);
					match(LR_BRACKET);
					{
					setState(2115);
					match(IPV4_ADDR);
					setState(2116);
					match(IPV4_ADDR);
					}
					setState(2118);
					match(RR_BRACKET);
					}
					}
					break;
				case 2:
					{
					setState(2119);
					match(WITH);
					setState(2120);
					match(IP);
					setState(2121);
					match(LR_BRACKET);
					{
					setState(2133); 
					_errHandler.sync(this);
					_la = _input.LA(1);
					do {
						{
						{
						setState(2123);
						_errHandler.sync(this);
						_la = _input.LA(1);
						if (_la==COMMA) {
							{
							setState(2122);
							match(COMMA);
							}
						}

						setState(2125);
						match(LR_BRACKET);
						setState(2130);
						_errHandler.sync(this);
						switch (_input.LA(1)) {
						case IPV4_ADDR:
							{
							setState(2126);
							match(IPV4_ADDR);
							setState(2127);
							match(COMMA);
							setState(2128);
							match(IPV4_ADDR);
							}
							break;
						case IPV6_ADDR:
							{
							setState(2129);
							match(IPV6_ADDR);
							}
							break;
						default:
							throw new NoViableAltException(this);
						}
						setState(2132);
						match(RR_BRACKET);
						}
						}
						setState(2135); 
						_errHandler.sync(this);
						_la = _input.LA(1);
					} while ( _la==LR_BRACKET || _la==COMMA );
					setState(2137);
					match(RR_BRACKET);
					setState(2142);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==COMMA) {
						{
						setState(2138);
						match(COMMA);
						setState(2139);
						match(PORT);
						setState(2140);
						match(EQUAL);
						setState(2141);
						match(DECIMAL);
						}
					}

					}
					}
					break;
				}
				setState(2146);
				match(RR_BRACKET);
				}
				break;
			case 17:
				enterOuterAlt(_localctx, 17);
				{
				setState(2147);
				match(MODIFY);
				setState(2148);
				match(LISTENER);
				setState(2161);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case ADD:
					{
					setState(2149);
					match(ADD);
					setState(2150);
					match(IP);
					setState(2151);
					match(LR_BRACKET);
					setState(2155);
					_errHandler.sync(this);
					switch (_input.LA(1)) {
					case IPV4_ADDR:
						{
						setState(2152);
						match(IPV4_ADDR);
						setState(2153);
						match(IPV4_ADDR);
						}
						break;
					case IPV6_ADDR:
						{
						setState(2154);
						match(IPV6_ADDR);
						}
						break;
					default:
						throw new NoViableAltException(this);
					}
					setState(2157);
					match(RR_BRACKET);
					}
					break;
				case PORT:
					{
					setState(2158);
					match(PORT);
					setState(2159);
					match(EQUAL);
					setState(2160);
					match(DECIMAL);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;
			case 18:
				enterOuterAlt(_localctx, 18);
				{
				setState(2163);
				match(RESTART);
				setState(2164);
				match(LISTENER);
				setState(2165);
				match(STRING);
				}
				break;
			case 19:
				enterOuterAlt(_localctx, 19);
				{
				setState(2166);
				match(REMOVE);
				setState(2167);
				match(LISTENER);
				setState(2168);
				match(STRING);
				}
				break;
			case 20:
				enterOuterAlt(_localctx, 20);
				{
				setState(2169);
				match(OFFLINE);
				}
				break;
			case 21:
				enterOuterAlt(_localctx, 21);
				{
				setState(2170);
				match(WITH);
				setState(2171);
				match(LR_BRACKET);
				setState(2172);
				match(DTC_SUPPORT);
				setState(2173);
				match(EQUAL);
				setState(2174);
				match(PER_DB);
				setState(2175);
				match(RR_BRACKET);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Create_or_alter_broker_priorityContext extends ParserRuleContext {
		public IdContext ConversationPriorityName;
		public Token RemoteServiceName;
		public Token PriorityValue;
		public TerminalNode BROKER() { return getToken(TSqlParser.BROKER, 0); }
		public TerminalNode PRIORITY() { return getToken(TSqlParser.PRIORITY, 0); }
		public TerminalNode FOR() { return getToken(TSqlParser.FOR, 0); }
		public TerminalNode CONVERSATION() { return getToken(TSqlParser.CONVERSATION, 0); }
		public TerminalNode SET() { return getToken(TSqlParser.SET, 0); }
		public TerminalNode LR_BRACKET() { return getToken(TSqlParser.LR_BRACKET, 0); }
		public TerminalNode RR_BRACKET() { return getToken(TSqlParser.RR_BRACKET, 0); }
		public TerminalNode CREATE() { return getToken(TSqlParser.CREATE, 0); }
		public TerminalNode ALTER() { return getToken(TSqlParser.ALTER, 0); }
		public List id() {
			return getRuleContexts(IdContext.class);
		}
		public IdContext id(int i) {
			return getRuleContext(IdContext.class,i);
		}
		public TerminalNode CONTRACT_NAME() { return getToken(TSqlParser.CONTRACT_NAME, 0); }
		public List EQUAL() { return getTokens(TSqlParser.EQUAL); }
		public TerminalNode EQUAL(int i) {
			return getToken(TSqlParser.EQUAL, i);
		}
		public TerminalNode LOCAL_SERVICE_NAME() { return getToken(TSqlParser.LOCAL_SERVICE_NAME, 0); }
		public TerminalNode REMOTE_SERVICE_NAME() { return getToken(TSqlParser.REMOTE_SERVICE_NAME, 0); }
		public TerminalNode PRIORITY_LEVEL() { return getToken(TSqlParser.PRIORITY_LEVEL, 0); }
		public List ANY() { return getTokens(TSqlParser.ANY); }
		public TerminalNode ANY(int i) {
			return getToken(TSqlParser.ANY, i);
		}
		public TerminalNode DEFAULT() { return getToken(TSqlParser.DEFAULT, 0); }
		public List COMMA() { return getTokens(TSqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(TSqlParser.COMMA, i);
		}
		public TerminalNode STRING() { return getToken(TSqlParser.STRING, 0); }
		public TerminalNode DECIMAL() { return getToken(TSqlParser.DECIMAL, 0); }
		public TerminalNode DOUBLE_FORWARD_SLASH() { return getToken(TSqlParser.DOUBLE_FORWARD_SLASH, 0); }
		public Create_or_alter_broker_priorityContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_create_or_alter_broker_priority; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterCreate_or_alter_broker_priority(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitCreate_or_alter_broker_priority(this);
		}
	}

	public final Create_or_alter_broker_priorityContext create_or_alter_broker_priority() throws RecognitionException {
		Create_or_alter_broker_priorityContext _localctx = new Create_or_alter_broker_priorityContext(_ctx, getState());
		enterRule(_localctx, 162, RULE_create_or_alter_broker_priority);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2178);
			_la = _input.LA(1);
			if ( !(_la==ALTER || _la==CREATE) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			setState(2179);
			match(BROKER);
			setState(2180);
			match(PRIORITY);
			setState(2181);
			((Create_or_alter_broker_priorityContext)_localctx).ConversationPriorityName = id();
			setState(2182);
			match(FOR);
			setState(2183);
			match(CONVERSATION);
			setState(2184);
			match(SET);
			setState(2185);
			match(LR_BRACKET);
			setState(2195);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==CONTRACT_NAME) {
				{
				setState(2186);
				match(CONTRACT_NAME);
				setState(2187);
				match(EQUAL);
				setState(2190);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case CALLED:
				case DATA_COMPRESSION:
				case EVENTDATA:
				case FILENAME:
				case FILLFACTOR:
				case FORCESEEK:
				case INIT:
				case KEY:
				case MASTER:
				case MAX_MEMORY:
				case OFFSETS:
				case PAGE:
				case PUBLIC:
				case R:
				case RAW:
				case RETURN:
				case RETURNS:
				case ROWCOUNT:
				case SAFETY:
				case SERVER:
				case SID:
				case SOURCE:
				case STATE:
				case START:
				case TARGET:
				case ABSOLUTE:
				case ACCENT_SENSITIVITY:
				case ACTION:
				case ACTIVATION:
				case ACTIVE:
				case ADDRESS:
				case AES_128:
				case AES_192:
				case AES_256:
				case AFFINITY:
				case AFTER:
				case AGGREGATE:
				case ALGORITHM:
				case ALLOW_ENCRYPTED_VALUE_MODIFICATIONS:
				case ALLOW_SNAPSHOT_ISOLATION:
				case ALLOWED:
				case ANSI_NULL_DEFAULT:
				case ANSI_NULLS:
				case ANSI_PADDING:
				case ANSI_WARNINGS:
				case APPLICATION_LOG:
				case APPLY:
				case ARITHABORT:
				case ASSEMBLY:
				case AUDIT:
				case AUDIT_GUID:
				case AUTO:
				case AUTO_CLEANUP:
				case AUTO_CLOSE:
				case AUTO_CREATE_STATISTICS:
				case AUTO_SHRINK:
				case AUTO_UPDATE_STATISTICS:
				case AUTO_UPDATE_STATISTICS_ASYNC:
				case AVAILABILITY:
				case AVG:
				case BACKUP_PRIORITY:
				case BEGIN_DIALOG:
				case BIGINT:
				case BINARY_BASE64:
				case BINARY_CHECKSUM:
				case BINDING:
				case BLOB_STORAGE:
				case BROKER:
				case BROKER_INSTANCE:
				case BULK_LOGGED:
				case CALLER:
				case CAP_CPU_PERCENT:
				case CAST:
				case CATALOG:
				case CATCH:
				case CHANGE_RETENTION:
				case CHANGE_TRACKING:
				case CHECKSUM:
				case CHECKSUM_AGG:
				case CLEANUP:
				case COLLECTION:
				case COLUMN_MASTER_KEY:
				case COMMITTED:
				case COMPATIBILITY_LEVEL:
				case CONCAT:
				case CONCAT_NULL_YIELDS_NULL:
				case CONTENT:
				case CONTROL:
				case COOKIE:
				case COUNT:
				case COUNT_BIG:
				case COUNTER:
				case CPU:
				case CREATE_NEW:
				case CREATION_DISPOSITION:
				case CREDENTIAL:
				case CRYPTOGRAPHIC:
				case CURSOR_CLOSE_ON_COMMIT:
				case CURSOR_DEFAULT:
				case DATE_CORRELATION_OPTIMIZATION:
				case DATEADD:
				case DATEDIFF:
				case DATENAME:
				case DATEPART:
				case DAYS:
				case DB_CHAINING:
				case DB_FAILOVER:
				case DECRYPTION:
				case DEFAULT_DOUBLE_QUOTE:
				case DEFAULT_FULLTEXT_LANGUAGE:
				case DEFAULT_LANGUAGE:
				case DELAY:
				case DELAYED_DURABILITY:
				case DELETED:
				case DENSE_RANK:
				case DEPENDENTS:
				case DES:
				case DESCRIPTION:
				case DESX:
				case DHCP:
				case DIALOG:
				case DIRECTORY_NAME:
				case DISABLE:
				case DISABLE_BROKER:
				case DISABLED:
				case DISK_DRIVE:
				case DOCUMENT:
				case DYNAMIC:
				case EMERGENCY:
				case EMPTY:
				case ENABLE:
				case ENABLE_BROKER:
				case ENCRYPTED_VALUE:
				case ENCRYPTION:
				case ENDPOINT_URL:
				case ERROR_BROKER_CONVERSATIONS:
				case EXCLUSIVE:
				case EXECUTABLE:
				case EXIST:
				case EXPAND:
				case EXPIRY_DATE:
				case EXPLICIT:
				case FAIL_OPERATION:
				case FAILOVER_MODE:
				case FAILURE:
				case FAILURE_CONDITION_LEVEL:
				case FAST:
				case FAST_FORWARD:
				case FILEGROUP:
				case FILEGROWTH:
				case FILEPATH:
				case FILESTREAM:
				case FILTER:
				case FIRST:
				case FIRST_VALUE:
				case FOLLOWING:
				case FORCE:
				case FORCE_FAILOVER_ALLOW_DATA_LOSS:
				case FORCED:
				case FORMAT:
				case FORWARD_ONLY:
				case FULLSCAN:
				case FULLTEXT:
				case GB:
				case GETDATE:
				case GETUTCDATE:
				case GLOBAL:
				case GO:
				case GROUP_MAX_REQUESTS:
				case GROUPING:
				case GROUPING_ID:
				case HADR:
				case HASH:
				case HEALTH_CHECK_TIMEOUT:
				case HIGH:
				case HONOR_BROKER_PRIORITY:
				case HOURS:
				case IDENTITY_VALUE:
				case IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX:
				case IMMEDIATE:
				case IMPERSONATE:
				case IMPORTANCE:
				case INCREMENTAL:
				case INITIATOR:
				case INPUT:
				case INSENSITIVE:
				case INSERTED:
				case INT:
				case IP:
				case ISOLATION:
				case KB:
				case KEEP:
				case KEEPFIXED:
				case KEY_SOURCE:
				case KEYS:
				case KEYSET:
				case LAG:
				case LAST:
				case LAST_VALUE:
				case LEAD:
				case LEVEL:
				case LIST:
				case LISTENER:
				case LISTENER_URL:
				case LOB_COMPACTION:
				case LOCAL:
				case LOCATION:
				case LOCK:
				case LOCK_ESCALATION:
				case LOGIN:
				case LOOP:
				case LOW:
				case MANUAL:
				case MARK:
				case MATERIALIZED:
				case MAX:
				case MAX_CPU_PERCENT:
				case MAX_DOP:
				case MAX_FILES:
				case MAX_IOPS_PER_VOLUME:
				case MAX_MEMORY_PERCENT:
				case MAX_PROCESSES:
				case MAX_QUEUE_READERS:
				case MAX_ROLLOVER_FILES:
				case MAXDOP:
				case MAXRECURSION:
				case MAXSIZE:
				case MB:
				case MEDIUM:
				case MEMORY_OPTIMIZED_DATA:
				case MESSAGE:
				case MIN:
				case MIN_ACTIVE_ROWVERSION:
				case MIN_CPU_PERCENT:
				case MIN_IOPS_PER_VOLUME:
				case MIN_MEMORY_PERCENT:
				case MINUTES:
				case MIRROR_ADDRESS:
				case MIXED_PAGE_ALLOCATION:
				case MODE:
				case MODIFY:
				case MOVE:
				case MULTI_USER:
				case NAME:
				case NESTED_TRIGGERS:
				case NEW_ACCOUNT:
				case NEW_BROKER:
				case NEW_PASSWORD:
				case NEXT:
				case NO:
				case NO_TRUNCATE:
				case NO_WAIT:
				case NOCOUNT:
				case NODES:
				case NOEXPAND:
				case NON_TRANSACTED_ACCESS:
				case NORECOMPUTE:
				case NORECOVERY:
				case NOWAIT:
				case NTILE:
				case NUMANODE:
				case NUMBER:
				case NUMERIC_ROUNDABORT:
				case OBJECT:
				case OFFLINE:
				case OFFSET:
				case OLD_ACCOUNT:
				case ONLINE:
				case ONLY:
				case OPEN_EXISTING:
				case OPTIMISTIC:
				case OPTIMIZE:
				case OUT:
				case OUTPUT:
				case OWNER:
				case PAGE_VERIFY:
				case PARAMETERIZATION:
				case PARTITION:
				case PARTITIONS:
				case PARTNER:
				case PATH:
				case POISON_MESSAGE_HANDLING:
				case POOL:
				case PORT:
				case PRECEDING:
				case PRIMARY_ROLE:
				case PRIOR:
				case PRIORITY:
				case PRIORITY_LEVEL:
				case PRIVATE:
				case PRIVATE_KEY:
				case PRIVILEGES:
				case PROCEDURE_NAME:
				case PROPERTY:
				case PROVIDER:
				case PROVIDER_KEY_NAME:
				case QUERY:
				case QUEUE:
				case QUEUE_DELAY:
				case QUOTED_IDENTIFIER:
				case RANGE:
				case RANK:
				case RC2:
				case RC4:
				case RC4_128:
				case READ_COMMITTED_SNAPSHOT:
				case READ_ONLY:
				case READ_ONLY_ROUTING_LIST:
				case READ_WRITE:
				case READONLY:
				case REBUILD:
				case RECEIVE:
				case RECOMPILE:
				case RECOVERY:
				case RECURSIVE_TRIGGERS:
				case RELATIVE:
				case REMOTE:
				case REMOTE_SERVICE_NAME:
				case REMOVE:
				case REORGANIZE:
				case REPEATABLE:
				case REPLICA:
				case REQUEST_MAX_CPU_TIME_SEC:
				case REQUEST_MAX_MEMORY_GRANT_PERCENT:
				case REQUEST_MEMORY_GRANT_TIMEOUT_SEC:
				case REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT:
				case RESERVE_DISK_SPACE:
				case RESOURCE:
				case RESOURCE_MANAGER_LOCATION:
				case RESTRICTED_USER:
				case RETENTION:
				case ROBUST:
				case ROOT:
				case ROUTE:
				case ROW:
				case ROW_NUMBER:
				case ROWGUID:
				case ROWS:
				case SAMPLE:
				case SCHEMABINDING:
				case SCOPED:
				case SCROLL:
				case SCROLL_LOCKS:
				case SEARCH:
				case SECONDARY:
				case SECONDARY_ONLY:
				case SECONDARY_ROLE:
				case SECONDS:
				case SECRET:
				case SECURITY_LOG:
				case SEEDING_MODE:
				case SELF:
				case SEMI_SENSITIVE:
				case SEND:
				case SENT:
				case SERIALIZABLE:
				case SESSION_TIMEOUT:
				case SETERROR:
				case SHARE:
				case SHOWPLAN:
				case SIGNATURE:
				case SIMPLE:
				case SINGLE_USER:
				case SIZE:
				case SMALLINT:
				case SNAPSHOT:
				case SPATIAL_WINDOW_MAX_CELLS:
				case STANDBY:
				case START_DATE:
				case STATIC:
				case STATS_STREAM:
				case STATUS:
				case STDEV:
				case STDEVP:
				case STOPLIST:
				case STUFF:
				case SUBJECT:
				case SUM:
				case SUSPEND:
				case SYMMETRIC:
				case SYNCHRONOUS_COMMIT:
				case SYNONYM:
				case TAKE:
				case TARGET_RECOVERY_TIME:
				case TB:
				case TEXTIMAGE_ON:
				case THROW:
				case TIES:
				case TIME:
				case TIMEOUT:
				case TIMER:
				case TINYINT:
				case TORN_PAGE_DETECTION:
				case TRANSFORM_NOISE_WORDS:
				case TRIPLE_DES:
				case TRIPLE_DES_3KEY:
				case TRUSTWORTHY:
				case TRY:
				case TSQL:
				case TWO_DIGIT_YEAR_CUTOFF:
				case TYPE:
				case TYPE_WARNING:
				case UNBOUNDED:
				case UNCOMMITTED:
				case UNKNOWN:
				case UNLIMITED:
				case USING:
				case VALID_XML:
				case VALIDATION:
				case VALUE:
				case VAR:
				case VARP:
				case VIEW_METADATA:
				case VIEWS:
				case WAIT:
				case WELL_FORMED_XML:
				case WORK:
				case WORKLOAD:
				case XML:
				case XMLNAMESPACES:
				case DOUBLE_QUOTE_ID:
				case SQUARE_BRACKET_ID:
				case ID:
					{
					{
					setState(2188);
					id();
					}
					}
					break;
				case ANY:
					{
					setState(2189);
					match(ANY);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				setState(2193);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==COMMA) {
					{
					setState(2192);
					match(COMMA);
					}
				}

				}
			}

			setState(2209);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==LOCAL_SERVICE_NAME) {
				{
				setState(2197);
				match(LOCAL_SERVICE_NAME);
				setState(2198);
				match(EQUAL);
				setState(2204);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case CALLED:
				case DATA_COMPRESSION:
				case DOUBLE_FORWARD_SLASH:
				case EVENTDATA:
				case FILENAME:
				case FILLFACTOR:
				case FORCESEEK:
				case INIT:
				case KEY:
				case MASTER:
				case MAX_MEMORY:
				case OFFSETS:
				case PAGE:
				case PUBLIC:
				case R:
				case RAW:
				case RETURN:
				case RETURNS:
				case ROWCOUNT:
				case SAFETY:
				case SERVER:
				case SID:
				case SOURCE:
				case STATE:
				case START:
				case TARGET:
				case ABSOLUTE:
				case ACCENT_SENSITIVITY:
				case ACTION:
				case ACTIVATION:
				case ACTIVE:
				case ADDRESS:
				case AES_128:
				case AES_192:
				case AES_256:
				case AFFINITY:
				case AFTER:
				case AGGREGATE:
				case ALGORITHM:
				case ALLOW_ENCRYPTED_VALUE_MODIFICATIONS:
				case ALLOW_SNAPSHOT_ISOLATION:
				case ALLOWED:
				case ANSI_NULL_DEFAULT:
				case ANSI_NULLS:
				case ANSI_PADDING:
				case ANSI_WARNINGS:
				case APPLICATION_LOG:
				case APPLY:
				case ARITHABORT:
				case ASSEMBLY:
				case AUDIT:
				case AUDIT_GUID:
				case AUTO:
				case AUTO_CLEANUP:
				case AUTO_CLOSE:
				case AUTO_CREATE_STATISTICS:
				case AUTO_SHRINK:
				case AUTO_UPDATE_STATISTICS:
				case AUTO_UPDATE_STATISTICS_ASYNC:
				case AVAILABILITY:
				case AVG:
				case BACKUP_PRIORITY:
				case BEGIN_DIALOG:
				case BIGINT:
				case BINARY_BASE64:
				case BINARY_CHECKSUM:
				case BINDING:
				case BLOB_STORAGE:
				case BROKER:
				case BROKER_INSTANCE:
				case BULK_LOGGED:
				case CALLER:
				case CAP_CPU_PERCENT:
				case CAST:
				case CATALOG:
				case CATCH:
				case CHANGE_RETENTION:
				case CHANGE_TRACKING:
				case CHECKSUM:
				case CHECKSUM_AGG:
				case CLEANUP:
				case COLLECTION:
				case COLUMN_MASTER_KEY:
				case COMMITTED:
				case COMPATIBILITY_LEVEL:
				case CONCAT:
				case CONCAT_NULL_YIELDS_NULL:
				case CONTENT:
				case CONTROL:
				case COOKIE:
				case COUNT:
				case COUNT_BIG:
				case COUNTER:
				case CPU:
				case CREATE_NEW:
				case CREATION_DISPOSITION:
				case CREDENTIAL:
				case CRYPTOGRAPHIC:
				case CURSOR_CLOSE_ON_COMMIT:
				case CURSOR_DEFAULT:
				case DATE_CORRELATION_OPTIMIZATION:
				case DATEADD:
				case DATEDIFF:
				case DATENAME:
				case DATEPART:
				case DAYS:
				case DB_CHAINING:
				case DB_FAILOVER:
				case DECRYPTION:
				case DEFAULT_DOUBLE_QUOTE:
				case DEFAULT_FULLTEXT_LANGUAGE:
				case DEFAULT_LANGUAGE:
				case DELAY:
				case DELAYED_DURABILITY:
				case DELETED:
				case DENSE_RANK:
				case DEPENDENTS:
				case DES:
				case DESCRIPTION:
				case DESX:
				case DHCP:
				case DIALOG:
				case DIRECTORY_NAME:
				case DISABLE:
				case DISABLE_BROKER:
				case DISABLED:
				case DISK_DRIVE:
				case DOCUMENT:
				case DYNAMIC:
				case EMERGENCY:
				case EMPTY:
				case ENABLE:
				case ENABLE_BROKER:
				case ENCRYPTED_VALUE:
				case ENCRYPTION:
				case ENDPOINT_URL:
				case ERROR_BROKER_CONVERSATIONS:
				case EXCLUSIVE:
				case EXECUTABLE:
				case EXIST:
				case EXPAND:
				case EXPIRY_DATE:
				case EXPLICIT:
				case FAIL_OPERATION:
				case FAILOVER_MODE:
				case FAILURE:
				case FAILURE_CONDITION_LEVEL:
				case FAST:
				case FAST_FORWARD:
				case FILEGROUP:
				case FILEGROWTH:
				case FILEPATH:
				case FILESTREAM:
				case FILTER:
				case FIRST:
				case FIRST_VALUE:
				case FOLLOWING:
				case FORCE:
				case FORCE_FAILOVER_ALLOW_DATA_LOSS:
				case FORCED:
				case FORMAT:
				case FORWARD_ONLY:
				case FULLSCAN:
				case FULLTEXT:
				case GB:
				case GETDATE:
				case GETUTCDATE:
				case GLOBAL:
				case GO:
				case GROUP_MAX_REQUESTS:
				case GROUPING:
				case GROUPING_ID:
				case HADR:
				case HASH:
				case HEALTH_CHECK_TIMEOUT:
				case HIGH:
				case HONOR_BROKER_PRIORITY:
				case HOURS:
				case IDENTITY_VALUE:
				case IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX:
				case IMMEDIATE:
				case IMPERSONATE:
				case IMPORTANCE:
				case INCREMENTAL:
				case INITIATOR:
				case INPUT:
				case INSENSITIVE:
				case INSERTED:
				case INT:
				case IP:
				case ISOLATION:
				case KB:
				case KEEP:
				case KEEPFIXED:
				case KEY_SOURCE:
				case KEYS:
				case KEYSET:
				case LAG:
				case LAST:
				case LAST_VALUE:
				case LEAD:
				case LEVEL:
				case LIST:
				case LISTENER:
				case LISTENER_URL:
				case LOB_COMPACTION:
				case LOCAL:
				case LOCATION:
				case LOCK:
				case LOCK_ESCALATION:
				case LOGIN:
				case LOOP:
				case LOW:
				case MANUAL:
				case MARK:
				case MATERIALIZED:
				case MAX:
				case MAX_CPU_PERCENT:
				case MAX_DOP:
				case MAX_FILES:
				case MAX_IOPS_PER_VOLUME:
				case MAX_MEMORY_PERCENT:
				case MAX_PROCESSES:
				case MAX_QUEUE_READERS:
				case MAX_ROLLOVER_FILES:
				case MAXDOP:
				case MAXRECURSION:
				case MAXSIZE:
				case MB:
				case MEDIUM:
				case MEMORY_OPTIMIZED_DATA:
				case MESSAGE:
				case MIN:
				case MIN_ACTIVE_ROWVERSION:
				case MIN_CPU_PERCENT:
				case MIN_IOPS_PER_VOLUME:
				case MIN_MEMORY_PERCENT:
				case MINUTES:
				case MIRROR_ADDRESS:
				case MIXED_PAGE_ALLOCATION:
				case MODE:
				case MODIFY:
				case MOVE:
				case MULTI_USER:
				case NAME:
				case NESTED_TRIGGERS:
				case NEW_ACCOUNT:
				case NEW_BROKER:
				case NEW_PASSWORD:
				case NEXT:
				case NO:
				case NO_TRUNCATE:
				case NO_WAIT:
				case NOCOUNT:
				case NODES:
				case NOEXPAND:
				case NON_TRANSACTED_ACCESS:
				case NORECOMPUTE:
				case NORECOVERY:
				case NOWAIT:
				case NTILE:
				case NUMANODE:
				case NUMBER:
				case NUMERIC_ROUNDABORT:
				case OBJECT:
				case OFFLINE:
				case OFFSET:
				case OLD_ACCOUNT:
				case ONLINE:
				case ONLY:
				case OPEN_EXISTING:
				case OPTIMISTIC:
				case OPTIMIZE:
				case OUT:
				case OUTPUT:
				case OWNER:
				case PAGE_VERIFY:
				case PARAMETERIZATION:
				case PARTITION:
				case PARTITIONS:
				case PARTNER:
				case PATH:
				case POISON_MESSAGE_HANDLING:
				case POOL:
				case PORT:
				case PRECEDING:
				case PRIMARY_ROLE:
				case PRIOR:
				case PRIORITY:
				case PRIORITY_LEVEL:
				case PRIVATE:
				case PRIVATE_KEY:
				case PRIVILEGES:
				case PROCEDURE_NAME:
				case PROPERTY:
				case PROVIDER:
				case PROVIDER_KEY_NAME:
				case QUERY:
				case QUEUE:
				case QUEUE_DELAY:
				case QUOTED_IDENTIFIER:
				case RANGE:
				case RANK:
				case RC2:
				case RC4:
				case RC4_128:
				case READ_COMMITTED_SNAPSHOT:
				case READ_ONLY:
				case READ_ONLY_ROUTING_LIST:
				case READ_WRITE:
				case READONLY:
				case REBUILD:
				case RECEIVE:
				case RECOMPILE:
				case RECOVERY:
				case RECURSIVE_TRIGGERS:
				case RELATIVE:
				case REMOTE:
				case REMOTE_SERVICE_NAME:
				case REMOVE:
				case REORGANIZE:
				case REPEATABLE:
				case REPLICA:
				case REQUEST_MAX_CPU_TIME_SEC:
				case REQUEST_MAX_MEMORY_GRANT_PERCENT:
				case REQUEST_MEMORY_GRANT_TIMEOUT_SEC:
				case REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT:
				case RESERVE_DISK_SPACE:
				case RESOURCE:
				case RESOURCE_MANAGER_LOCATION:
				case RESTRICTED_USER:
				case RETENTION:
				case ROBUST:
				case ROOT:
				case ROUTE:
				case ROW:
				case ROW_NUMBER:
				case ROWGUID:
				case ROWS:
				case SAMPLE:
				case SCHEMABINDING:
				case SCOPED:
				case SCROLL:
				case SCROLL_LOCKS:
				case SEARCH:
				case SECONDARY:
				case SECONDARY_ONLY:
				case SECONDARY_ROLE:
				case SECONDS:
				case SECRET:
				case SECURITY_LOG:
				case SEEDING_MODE:
				case SELF:
				case SEMI_SENSITIVE:
				case SEND:
				case SENT:
				case SERIALIZABLE:
				case SESSION_TIMEOUT:
				case SETERROR:
				case SHARE:
				case SHOWPLAN:
				case SIGNATURE:
				case SIMPLE:
				case SINGLE_USER:
				case SIZE:
				case SMALLINT:
				case SNAPSHOT:
				case SPATIAL_WINDOW_MAX_CELLS:
				case STANDBY:
				case START_DATE:
				case STATIC:
				case STATS_STREAM:
				case STATUS:
				case STDEV:
				case STDEVP:
				case STOPLIST:
				case STUFF:
				case SUBJECT:
				case SUM:
				case SUSPEND:
				case SYMMETRIC:
				case SYNCHRONOUS_COMMIT:
				case SYNONYM:
				case TAKE:
				case TARGET_RECOVERY_TIME:
				case TB:
				case TEXTIMAGE_ON:
				case THROW:
				case TIES:
				case TIME:
				case TIMEOUT:
				case TIMER:
				case TINYINT:
				case TORN_PAGE_DETECTION:
				case TRANSFORM_NOISE_WORDS:
				case TRIPLE_DES:
				case TRIPLE_DES_3KEY:
				case TRUSTWORTHY:
				case TRY:
				case TSQL:
				case TWO_DIGIT_YEAR_CUTOFF:
				case TYPE:
				case TYPE_WARNING:
				case UNBOUNDED:
				case UNCOMMITTED:
				case UNKNOWN:
				case UNLIMITED:
				case USING:
				case VALID_XML:
				case VALIDATION:
				case VALUE:
				case VAR:
				case VARP:
				case VIEW_METADATA:
				case VIEWS:
				case WAIT:
				case WELL_FORMED_XML:
				case WORK:
				case WORKLOAD:
				case XML:
				case XMLNAMESPACES:
				case DOUBLE_QUOTE_ID:
				case SQUARE_BRACKET_ID:
				case ID:
					{
					setState(2200);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==DOUBLE_FORWARD_SLASH) {
						{
						setState(2199);
						match(DOUBLE_FORWARD_SLASH);
						}
					}

					setState(2202);
					id();
					}
					break;
				case ANY:
					{
					setState(2203);
					match(ANY);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				setState(2207);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==COMMA) {
					{
					setState(2206);
					match(COMMA);
					}
				}

				}
			}

			setState(2220);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==REMOTE_SERVICE_NAME) {
				{
				setState(2211);
				match(REMOTE_SERVICE_NAME);
				setState(2212);
				match(EQUAL);
				setState(2215);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case STRING:
					{
					setState(2213);
					((Create_or_alter_broker_priorityContext)_localctx).RemoteServiceName = match(STRING);
					}
					break;
				case ANY:
					{
					setState(2214);
					match(ANY);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				setState(2218);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==COMMA) {
					{
					setState(2217);
					match(COMMA);
					}
				}

				}
			}

			setState(2228);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==PRIORITY_LEVEL) {
				{
				setState(2222);
				match(PRIORITY_LEVEL);
				setState(2223);
				match(EQUAL);
				setState(2226);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case DECIMAL:
					{
					setState(2224);
					((Create_or_alter_broker_priorityContext)_localctx).PriorityValue = match(DECIMAL);
					}
					break;
				case DEFAULT:
					{
					setState(2225);
					match(DEFAULT);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
			}

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

	public static class Drop_broker_priorityContext extends ParserRuleContext {
		public IdContext ConversationPriorityName;
		public TerminalNode DROP() { return getToken(TSqlParser.DROP, 0); }
		public TerminalNode BROKER() { return getToken(TSqlParser.BROKER, 0); }
		public TerminalNode PRIORITY() { return getToken(TSqlParser.PRIORITY, 0); }
		public IdContext id() {
			return getRuleContext(IdContext.class,0);
		}
		public Drop_broker_priorityContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_drop_broker_priority; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterDrop_broker_priority(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitDrop_broker_priority(this);
		}
	}

	public final Drop_broker_priorityContext drop_broker_priority() throws RecognitionException {
		Drop_broker_priorityContext _localctx = new Drop_broker_priorityContext(_ctx, getState());
		enterRule(_localctx, 164, RULE_drop_broker_priority);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2232);
			match(DROP);
			setState(2233);
			match(BROKER);
			setState(2234);
			match(PRIORITY);
			setState(2235);
			((Drop_broker_priorityContext)_localctx).ConversationPriorityName = id();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Alter_certificateContext extends ParserRuleContext {
		public IdContext certificate_name;
		public TerminalNode ALTER() { return getToken(TSqlParser.ALTER, 0); }
		public TerminalNode CERTIFICATE() { return getToken(TSqlParser.CERTIFICATE, 0); }
		public IdContext id() {
			return getRuleContext(IdContext.class,0);
		}
		public TerminalNode REMOVE() { return getToken(TSqlParser.REMOVE, 0); }
		public TerminalNode PRIVATE_KEY() { return getToken(TSqlParser.PRIVATE_KEY, 0); }
		public TerminalNode WITH() { return getToken(TSqlParser.WITH, 0); }
		public TerminalNode PRIVATE() { return getToken(TSqlParser.PRIVATE, 0); }
		public TerminalNode KEY() { return getToken(TSqlParser.KEY, 0); }
		public TerminalNode LR_BRACKET() { return getToken(TSqlParser.LR_BRACKET, 0); }
		public TerminalNode RR_BRACKET() { return getToken(TSqlParser.RR_BRACKET, 0); }
		public TerminalNode ACTIVE() { return getToken(TSqlParser.ACTIVE, 0); }
		public TerminalNode FOR() { return getToken(TSqlParser.FOR, 0); }
		public TerminalNode BEGIN_DIALOG() { return getToken(TSqlParser.BEGIN_DIALOG, 0); }
		public List EQUAL() { return getTokens(TSqlParser.EQUAL); }
		public TerminalNode EQUAL(int i) {
			return getToken(TSqlParser.EQUAL, i);
		}
		public TerminalNode ON() { return getToken(TSqlParser.ON, 0); }
		public TerminalNode OFF() { return getToken(TSqlParser.OFF, 0); }
		public List FILE() { return getTokens(TSqlParser.FILE); }
		public TerminalNode FILE(int i) {
			return getToken(TSqlParser.FILE, i);
		}
		public List STRING() { return getTokens(TSqlParser.STRING); }
		public TerminalNode STRING(int i) {
			return getToken(TSqlParser.STRING, i);
		}
		public List DECRYPTION() { return getTokens(TSqlParser.DECRYPTION); }
		public TerminalNode DECRYPTION(int i) {
			return getToken(TSqlParser.DECRYPTION, i);
		}
		public List BY() { return getTokens(TSqlParser.BY); }
		public TerminalNode BY(int i) {
			return getToken(TSqlParser.BY, i);
		}
		public List PASSWORD() { return getTokens(TSqlParser.PASSWORD); }
		public TerminalNode PASSWORD(int i) {
			return getToken(TSqlParser.PASSWORD, i);
		}
		public List ENCRYPTION() { return getTokens(TSqlParser.ENCRYPTION); }
		public TerminalNode ENCRYPTION(int i) {
			return getToken(TSqlParser.ENCRYPTION, i);
		}
		public List COMMA() { return getTokens(TSqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(TSqlParser.COMMA, i);
		}
		public Alter_certificateContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alter_certificate; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterAlter_certificate(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitAlter_certificate(this);
		}
	}

	public final Alter_certificateContext alter_certificate() throws RecognitionException {
		Alter_certificateContext _localctx = new Alter_certificateContext(_ctx, getState());
		enterRule(_localctx, 166, RULE_alter_certificate);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2237);
			match(ALTER);
			setState(2238);
			match(CERTIFICATE);
			setState(2239);
			((Alter_certificateContext)_localctx).certificate_name = id();
			setState(2279);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,159,_ctx) ) {
			case 1:
				{
				setState(2240);
				match(REMOVE);
				setState(2241);
				match(PRIVATE_KEY);
				}
				break;
			case 2:
				{
				setState(2242);
				match(WITH);
				setState(2243);
				match(PRIVATE);
				setState(2244);
				match(KEY);
				setState(2245);
				match(LR_BRACKET);
				setState(2268); 
				_errHandler.sync(this);
				_la = _input.LA(1);
				do {
					{
					setState(2268);
					_errHandler.sync(this);
					switch (_input.LA(1)) {
					case FILE:
						{
						setState(2246);
						match(FILE);
						setState(2247);
						match(EQUAL);
						setState(2248);
						match(STRING);
						setState(2250);
						_errHandler.sync(this);
						_la = _input.LA(1);
						if (_la==COMMA) {
							{
							setState(2249);
							match(COMMA);
							}
						}

						}
						break;
					case DECRYPTION:
						{
						setState(2252);
						match(DECRYPTION);
						setState(2253);
						match(BY);
						setState(2254);
						match(PASSWORD);
						setState(2255);
						match(EQUAL);
						setState(2256);
						match(STRING);
						setState(2258);
						_errHandler.sync(this);
						_la = _input.LA(1);
						if (_la==COMMA) {
							{
							setState(2257);
							match(COMMA);
							}
						}

						}
						break;
					case ENCRYPTION:
						{
						setState(2260);
						match(ENCRYPTION);
						setState(2261);
						match(BY);
						setState(2262);
						match(PASSWORD);
						setState(2263);
						match(EQUAL);
						setState(2264);
						match(STRING);
						setState(2266);
						_errHandler.sync(this);
						_la = _input.LA(1);
						if (_la==COMMA) {
							{
							setState(2265);
							match(COMMA);
							}
						}

						}
						break;
					default:
						throw new NoViableAltException(this);
					}
					}
					setState(2270); 
					_errHandler.sync(this);
					_la = _input.LA(1);
				} while ( _la==FILE || _la==DECRYPTION || _la==ENCRYPTION );
				setState(2272);
				match(RR_BRACKET);
				}
				break;
			case 3:
				{
				setState(2273);
				match(WITH);
				setState(2274);
				match(ACTIVE);
				setState(2275);
				match(FOR);
				setState(2276);
				match(BEGIN_DIALOG);
				setState(2277);
				match(EQUAL);
				setState(2278);
				_la = _input.LA(1);
				if ( !(_la==OFF || _la==ON) ) {
				_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 Alter_column_encryption_keyContext extends ParserRuleContext {
		public IdContext column_encryption_key;
		public IdContext column_master_key_name;
		public Token algorithm_name;
		public TerminalNode ALTER() { return getToken(TSqlParser.ALTER, 0); }
		public TerminalNode COLUMN() { return getToken(TSqlParser.COLUMN, 0); }
		public TerminalNode ENCRYPTION() { return getToken(TSqlParser.ENCRYPTION, 0); }
		public TerminalNode KEY() { return getToken(TSqlParser.KEY, 0); }
		public TerminalNode VALUE() { return getToken(TSqlParser.VALUE, 0); }
		public TerminalNode LR_BRACKET() { return getToken(TSqlParser.LR_BRACKET, 0); }
		public TerminalNode COLUMN_MASTER_KEY() { return getToken(TSqlParser.COLUMN_MASTER_KEY, 0); }
		public List EQUAL() { return getTokens(TSqlParser.EQUAL); }
		public TerminalNode EQUAL(int i) {
			return getToken(TSqlParser.EQUAL, i);
		}
		public TerminalNode RR_BRACKET() { return getToken(TSqlParser.RR_BRACKET, 0); }
		public List id() {
			return getRuleContexts(IdContext.class);
		}
		public IdContext id(int i) {
			return getRuleContext(IdContext.class,i);
		}
		public TerminalNode ADD() { return getToken(TSqlParser.ADD, 0); }
		public TerminalNode DROP() { return getToken(TSqlParser.DROP, 0); }
		public List COMMA() { return getTokens(TSqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(TSqlParser.COMMA, i);
		}
		public TerminalNode ALGORITHM() { return getToken(TSqlParser.ALGORITHM, 0); }
		public TerminalNode ENCRYPTED_VALUE() { return getToken(TSqlParser.ENCRYPTED_VALUE, 0); }
		public TerminalNode BINARY() { return getToken(TSqlParser.BINARY, 0); }
		public TerminalNode STRING() { return getToken(TSqlParser.STRING, 0); }
		public Alter_column_encryption_keyContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alter_column_encryption_key; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterAlter_column_encryption_key(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitAlter_column_encryption_key(this);
		}
	}

	public final Alter_column_encryption_keyContext alter_column_encryption_key() throws RecognitionException {
		Alter_column_encryption_keyContext _localctx = new Alter_column_encryption_keyContext(_ctx, getState());
		enterRule(_localctx, 168, RULE_alter_column_encryption_key);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2281);
			match(ALTER);
			setState(2282);
			match(COLUMN);
			setState(2283);
			match(ENCRYPTION);
			setState(2284);
			match(KEY);
			setState(2285);
			((Alter_column_encryption_keyContext)_localctx).column_encryption_key = id();
			setState(2286);
			_la = _input.LA(1);
			if ( !(_la==ADD || _la==DROP) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			setState(2287);
			match(VALUE);
			setState(2288);
			match(LR_BRACKET);
			setState(2289);
			match(COLUMN_MASTER_KEY);
			setState(2290);
			match(EQUAL);
			setState(2291);
			((Alter_column_encryption_keyContext)_localctx).column_master_key_name = id();
			setState(2300);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==COMMA) {
				{
				setState(2292);
				match(COMMA);
				setState(2293);
				match(ALGORITHM);
				setState(2294);
				match(EQUAL);
				setState(2295);
				((Alter_column_encryption_keyContext)_localctx).algorithm_name = match(STRING);
				setState(2296);
				match(COMMA);
				setState(2297);
				match(ENCRYPTED_VALUE);
				setState(2298);
				match(EQUAL);
				setState(2299);
				match(BINARY);
				}
			}

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

	public static class Create_column_encryption_keyContext extends ParserRuleContext {
		public IdContext column_encryption_key;
		public IdContext column_master_key_name;
		public Token algorithm_name;
		public Token encrypted_value;
		public TerminalNode CREATE() { return getToken(TSqlParser.CREATE, 0); }
		public TerminalNode COLUMN() { return getToken(TSqlParser.COLUMN, 0); }
		public TerminalNode ENCRYPTION() { return getToken(TSqlParser.ENCRYPTION, 0); }
		public TerminalNode KEY() { return getToken(TSqlParser.KEY, 0); }
		public TerminalNode WITH() { return getToken(TSqlParser.WITH, 0); }
		public TerminalNode VALUES() { return getToken(TSqlParser.VALUES, 0); }
		public List id() {
			return getRuleContexts(IdContext.class);
		}
		public IdContext id(int i) {
			return getRuleContext(IdContext.class,i);
		}
		public List LR_BRACKET() { return getTokens(TSqlParser.LR_BRACKET); }
		public TerminalNode LR_BRACKET(int i) {
			return getToken(TSqlParser.LR_BRACKET, i);
		}
		public List COLUMN_MASTER_KEY() { return getTokens(TSqlParser.COLUMN_MASTER_KEY); }
		public TerminalNode COLUMN_MASTER_KEY(int i) {
			return getToken(TSqlParser.COLUMN_MASTER_KEY, i);
		}
		public List EQUAL() { return getTokens(TSqlParser.EQUAL); }
		public TerminalNode EQUAL(int i) {
			return getToken(TSqlParser.EQUAL, i);
		}
		public List COMMA() { return getTokens(TSqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(TSqlParser.COMMA, i);
		}
		public List ALGORITHM() { return getTokens(TSqlParser.ALGORITHM); }
		public TerminalNode ALGORITHM(int i) {
			return getToken(TSqlParser.ALGORITHM, i);
		}
		public List ENCRYPTED_VALUE() { return getTokens(TSqlParser.ENCRYPTED_VALUE); }
		public TerminalNode ENCRYPTED_VALUE(int i) {
			return getToken(TSqlParser.ENCRYPTED_VALUE, i);
		}
		public List RR_BRACKET() { return getTokens(TSqlParser.RR_BRACKET); }
		public TerminalNode RR_BRACKET(int i) {
			return getToken(TSqlParser.RR_BRACKET, i);
		}
		public List STRING() { return getTokens(TSqlParser.STRING); }
		public TerminalNode STRING(int i) {
			return getToken(TSqlParser.STRING, i);
		}
		public List BINARY() { return getTokens(TSqlParser.BINARY); }
		public TerminalNode BINARY(int i) {
			return getToken(TSqlParser.BINARY, i);
		}
		public Create_column_encryption_keyContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_create_column_encryption_key; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterCreate_column_encryption_key(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitCreate_column_encryption_key(this);
		}
	}

	public final Create_column_encryption_keyContext create_column_encryption_key() throws RecognitionException {
		Create_column_encryption_keyContext _localctx = new Create_column_encryption_keyContext(_ctx, getState());
		enterRule(_localctx, 170, RULE_create_column_encryption_key);
		int _la;
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			setState(2304);
			match(CREATE);
			setState(2305);
			match(COLUMN);
			setState(2306);
			match(ENCRYPTION);
			setState(2307);
			match(KEY);
			setState(2308);
			((Create_column_encryption_keyContext)_localctx).column_encryption_key = id();
			setState(2309);
			match(WITH);
			setState(2310);
			match(VALUES);
			setState(2330); 
			_errHandler.sync(this);
			_alt = 1;
			do {
				switch (_alt) {
				case 1:
					{
					{
					setState(2311);
					match(LR_BRACKET);
					setState(2313);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==COMMA) {
						{
						setState(2312);
						match(COMMA);
						}
					}

					setState(2315);
					match(COLUMN_MASTER_KEY);
					setState(2316);
					match(EQUAL);
					setState(2317);
					((Create_column_encryption_keyContext)_localctx).column_master_key_name = id();
					setState(2318);
					match(COMMA);
					setState(2319);
					match(ALGORITHM);
					setState(2320);
					match(EQUAL);
					setState(2321);
					((Create_column_encryption_keyContext)_localctx).algorithm_name = match(STRING);
					setState(2322);
					match(COMMA);
					setState(2323);
					match(ENCRYPTED_VALUE);
					setState(2324);
					match(EQUAL);
					setState(2325);
					((Create_column_encryption_keyContext)_localctx).encrypted_value = match(BINARY);
					setState(2326);
					match(RR_BRACKET);
					setState(2328);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==COMMA) {
						{
						setState(2327);
						match(COMMA);
						}
					}

					}
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				setState(2332); 
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,163,_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 Drop_certificateContext extends ParserRuleContext {
		public IdContext certificate_name;
		public TerminalNode DROP() { return getToken(TSqlParser.DROP, 0); }
		public TerminalNode CERTIFICATE() { return getToken(TSqlParser.CERTIFICATE, 0); }
		public IdContext id() {
			return getRuleContext(IdContext.class,0);
		}
		public Drop_certificateContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_drop_certificate; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterDrop_certificate(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitDrop_certificate(this);
		}
	}

	public final Drop_certificateContext drop_certificate() throws RecognitionException {
		Drop_certificateContext _localctx = new Drop_certificateContext(_ctx, getState());
		enterRule(_localctx, 172, RULE_drop_certificate);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2334);
			match(DROP);
			setState(2335);
			match(CERTIFICATE);
			setState(2336);
			((Drop_certificateContext)_localctx).certificate_name = id();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Drop_column_encryption_keyContext extends ParserRuleContext {
		public IdContext key_name;
		public TerminalNode DROP() { return getToken(TSqlParser.DROP, 0); }
		public TerminalNode COLUMN() { return getToken(TSqlParser.COLUMN, 0); }
		public TerminalNode ENCRYPTION() { return getToken(TSqlParser.ENCRYPTION, 0); }
		public TerminalNode KEY() { return getToken(TSqlParser.KEY, 0); }
		public IdContext id() {
			return getRuleContext(IdContext.class,0);
		}
		public Drop_column_encryption_keyContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_drop_column_encryption_key; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterDrop_column_encryption_key(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitDrop_column_encryption_key(this);
		}
	}

	public final Drop_column_encryption_keyContext drop_column_encryption_key() throws RecognitionException {
		Drop_column_encryption_keyContext _localctx = new Drop_column_encryption_keyContext(_ctx, getState());
		enterRule(_localctx, 174, RULE_drop_column_encryption_key);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2338);
			match(DROP);
			setState(2339);
			match(COLUMN);
			setState(2340);
			match(ENCRYPTION);
			setState(2341);
			match(KEY);
			setState(2342);
			((Drop_column_encryption_keyContext)_localctx).key_name = id();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Drop_column_master_keyContext extends ParserRuleContext {
		public IdContext key_name;
		public TerminalNode DROP() { return getToken(TSqlParser.DROP, 0); }
		public TerminalNode COLUMN() { return getToken(TSqlParser.COLUMN, 0); }
		public TerminalNode MASTER() { return getToken(TSqlParser.MASTER, 0); }
		public TerminalNode KEY() { return getToken(TSqlParser.KEY, 0); }
		public IdContext id() {
			return getRuleContext(IdContext.class,0);
		}
		public Drop_column_master_keyContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_drop_column_master_key; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterDrop_column_master_key(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitDrop_column_master_key(this);
		}
	}

	public final Drop_column_master_keyContext drop_column_master_key() throws RecognitionException {
		Drop_column_master_keyContext _localctx = new Drop_column_master_keyContext(_ctx, getState());
		enterRule(_localctx, 176, RULE_drop_column_master_key);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2344);
			match(DROP);
			setState(2345);
			match(COLUMN);
			setState(2346);
			match(MASTER);
			setState(2347);
			match(KEY);
			setState(2348);
			((Drop_column_master_keyContext)_localctx).key_name = id();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Drop_contractContext extends ParserRuleContext {
		public IdContext dropped_contract_name;
		public TerminalNode DROP() { return getToken(TSqlParser.DROP, 0); }
		public TerminalNode CONTRACT() { return getToken(TSqlParser.CONTRACT, 0); }
		public IdContext id() {
			return getRuleContext(IdContext.class,0);
		}
		public Drop_contractContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_drop_contract; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterDrop_contract(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitDrop_contract(this);
		}
	}

	public final Drop_contractContext drop_contract() throws RecognitionException {
		Drop_contractContext _localctx = new Drop_contractContext(_ctx, getState());
		enterRule(_localctx, 178, RULE_drop_contract);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2350);
			match(DROP);
			setState(2351);
			match(CONTRACT);
			setState(2352);
			((Drop_contractContext)_localctx).dropped_contract_name = id();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Drop_credentialContext extends ParserRuleContext {
		public IdContext credential_name;
		public TerminalNode DROP() { return getToken(TSqlParser.DROP, 0); }
		public TerminalNode CREDENTIAL() { return getToken(TSqlParser.CREDENTIAL, 0); }
		public IdContext id() {
			return getRuleContext(IdContext.class,0);
		}
		public Drop_credentialContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_drop_credential; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterDrop_credential(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitDrop_credential(this);
		}
	}

	public final Drop_credentialContext drop_credential() throws RecognitionException {
		Drop_credentialContext _localctx = new Drop_credentialContext(_ctx, getState());
		enterRule(_localctx, 180, RULE_drop_credential);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2354);
			match(DROP);
			setState(2355);
			match(CREDENTIAL);
			setState(2356);
			((Drop_credentialContext)_localctx).credential_name = id();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Drop_cryptograhic_providerContext extends ParserRuleContext {
		public IdContext provider_name;
		public TerminalNode DROP() { return getToken(TSqlParser.DROP, 0); }
		public TerminalNode CRYPTOGRAPHIC() { return getToken(TSqlParser.CRYPTOGRAPHIC, 0); }
		public TerminalNode PROVIDER() { return getToken(TSqlParser.PROVIDER, 0); }
		public IdContext id() {
			return getRuleContext(IdContext.class,0);
		}
		public Drop_cryptograhic_providerContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_drop_cryptograhic_provider; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterDrop_cryptograhic_provider(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitDrop_cryptograhic_provider(this);
		}
	}

	public final Drop_cryptograhic_providerContext drop_cryptograhic_provider() throws RecognitionException {
		Drop_cryptograhic_providerContext _localctx = new Drop_cryptograhic_providerContext(_ctx, getState());
		enterRule(_localctx, 182, RULE_drop_cryptograhic_provider);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2358);
			match(DROP);
			setState(2359);
			match(CRYPTOGRAPHIC);
			setState(2360);
			match(PROVIDER);
			setState(2361);
			((Drop_cryptograhic_providerContext)_localctx).provider_name = id();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Drop_databaseContext extends ParserRuleContext {
		public IdContext database_name_or_database_snapshot_name;
		public TerminalNode DROP() { return getToken(TSqlParser.DROP, 0); }
		public TerminalNode DATABASE() { return getToken(TSqlParser.DATABASE, 0); }
		public TerminalNode IF() { return getToken(TSqlParser.IF, 0); }
		public TerminalNode EXISTS() { return getToken(TSqlParser.EXISTS, 0); }
		public List id() {
			return getRuleContexts(IdContext.class);
		}
		public IdContext id(int i) {
			return getRuleContext(IdContext.class,i);
		}
		public List COMMA() { return getTokens(TSqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(TSqlParser.COMMA, i);
		}
		public Drop_databaseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_drop_database; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterDrop_database(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitDrop_database(this);
		}
	}

	public final Drop_databaseContext drop_database() throws RecognitionException {
		Drop_databaseContext _localctx = new Drop_databaseContext(_ctx, getState());
		enterRule(_localctx, 184, RULE_drop_database);
		int _la;
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			setState(2363);
			match(DROP);
			setState(2364);
			match(DATABASE);
			setState(2367);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==IF) {
				{
				setState(2365);
				match(IF);
				setState(2366);
				match(EXISTS);
				}
			}

			setState(2373); 
			_errHandler.sync(this);
			_alt = 1;
			do {
				switch (_alt) {
				case 1:
					{
					{
					setState(2370);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==COMMA) {
						{
						setState(2369);
						match(COMMA);
						}
					}

					setState(2372);
					((Drop_databaseContext)_localctx).database_name_or_database_snapshot_name = id();
					}
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				setState(2375); 
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,166,_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 Drop_database_audit_specificationContext extends ParserRuleContext {
		public IdContext audit_specification_name;
		public TerminalNode DROP() { return getToken(TSqlParser.DROP, 0); }
		public TerminalNode DATABASE() { return getToken(TSqlParser.DATABASE, 0); }
		public TerminalNode AUDIT() { return getToken(TSqlParser.AUDIT, 0); }
		public TerminalNode SPECIFICATION() { return getToken(TSqlParser.SPECIFICATION, 0); }
		public IdContext id() {
			return getRuleContext(IdContext.class,0);
		}
		public Drop_database_audit_specificationContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_drop_database_audit_specification; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterDrop_database_audit_specification(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitDrop_database_audit_specification(this);
		}
	}

	public final Drop_database_audit_specificationContext drop_database_audit_specification() throws RecognitionException {
		Drop_database_audit_specificationContext _localctx = new Drop_database_audit_specificationContext(_ctx, getState());
		enterRule(_localctx, 186, RULE_drop_database_audit_specification);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2377);
			match(DROP);
			setState(2378);
			match(DATABASE);
			setState(2379);
			match(AUDIT);
			setState(2380);
			match(SPECIFICATION);
			setState(2381);
			((Drop_database_audit_specificationContext)_localctx).audit_specification_name = id();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Drop_database_scoped_credentialContext extends ParserRuleContext {
		public IdContext credential_name;
		public TerminalNode DROP() { return getToken(TSqlParser.DROP, 0); }
		public TerminalNode DATABASE() { return getToken(TSqlParser.DATABASE, 0); }
		public TerminalNode SCOPED() { return getToken(TSqlParser.SCOPED, 0); }
		public TerminalNode CREDENTIAL() { return getToken(TSqlParser.CREDENTIAL, 0); }
		public IdContext id() {
			return getRuleContext(IdContext.class,0);
		}
		public Drop_database_scoped_credentialContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_drop_database_scoped_credential; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterDrop_database_scoped_credential(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitDrop_database_scoped_credential(this);
		}
	}

	public final Drop_database_scoped_credentialContext drop_database_scoped_credential() throws RecognitionException {
		Drop_database_scoped_credentialContext _localctx = new Drop_database_scoped_credentialContext(_ctx, getState());
		enterRule(_localctx, 188, RULE_drop_database_scoped_credential);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2383);
			match(DROP);
			setState(2384);
			match(DATABASE);
			setState(2385);
			match(SCOPED);
			setState(2386);
			match(CREDENTIAL);
			setState(2387);
			((Drop_database_scoped_credentialContext)_localctx).credential_name = id();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Drop_defaultContext extends ParserRuleContext {
		public IdContext schema_name;
		public IdContext default_name;
		public TerminalNode DROP() { return getToken(TSqlParser.DROP, 0); }
		public TerminalNode DEFAULT() { return getToken(TSqlParser.DEFAULT, 0); }
		public TerminalNode IF() { return getToken(TSqlParser.IF, 0); }
		public TerminalNode EXISTS() { return getToken(TSqlParser.EXISTS, 0); }
		public List id() {
			return getRuleContexts(IdContext.class);
		}
		public IdContext id(int i) {
			return getRuleContext(IdContext.class,i);
		}
		public TerminalNode COMMA() { return getToken(TSqlParser.COMMA, 0); }
		public TerminalNode DOT() { return getToken(TSqlParser.DOT, 0); }
		public Drop_defaultContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_drop_default; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterDrop_default(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitDrop_default(this);
		}
	}

	public final Drop_defaultContext drop_default() throws RecognitionException {
		Drop_defaultContext _localctx = new Drop_defaultContext(_ctx, getState());
		enterRule(_localctx, 190, RULE_drop_default);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2389);
			match(DROP);
			setState(2390);
			match(DEFAULT);
			setState(2393);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==IF) {
				{
				setState(2391);
				match(IF);
				setState(2392);
				match(EXISTS);
				}
			}

			{
			setState(2396);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==COMMA) {
				{
				setState(2395);
				match(COMMA);
				}
			}

			setState(2401);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,169,_ctx) ) {
			case 1:
				{
				setState(2398);
				((Drop_defaultContext)_localctx).schema_name = id();
				setState(2399);
				match(DOT);
				}
				break;
			}
			setState(2403);
			((Drop_defaultContext)_localctx).default_name = id();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Drop_endpointContext extends ParserRuleContext {
		public IdContext endPointName;
		public TerminalNode DROP() { return getToken(TSqlParser.DROP, 0); }
		public TerminalNode ENDPOINT() { return getToken(TSqlParser.ENDPOINT, 0); }
		public IdContext id() {
			return getRuleContext(IdContext.class,0);
		}
		public Drop_endpointContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_drop_endpoint; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterDrop_endpoint(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitDrop_endpoint(this);
		}
	}

	public final Drop_endpointContext drop_endpoint() throws RecognitionException {
		Drop_endpointContext _localctx = new Drop_endpointContext(_ctx, getState());
		enterRule(_localctx, 192, RULE_drop_endpoint);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2405);
			match(DROP);
			setState(2406);
			match(ENDPOINT);
			setState(2407);
			((Drop_endpointContext)_localctx).endPointName = id();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Drop_external_data_sourceContext extends ParserRuleContext {
		public IdContext external_data_source_name;
		public TerminalNode DROP() { return getToken(TSqlParser.DROP, 0); }
		public TerminalNode EXTERNAL() { return getToken(TSqlParser.EXTERNAL, 0); }
		public TerminalNode DATA() { return getToken(TSqlParser.DATA, 0); }
		public TerminalNode SOURCE() { return getToken(TSqlParser.SOURCE, 0); }
		public IdContext id() {
			return getRuleContext(IdContext.class,0);
		}
		public Drop_external_data_sourceContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_drop_external_data_source; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterDrop_external_data_source(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitDrop_external_data_source(this);
		}
	}

	public final Drop_external_data_sourceContext drop_external_data_source() throws RecognitionException {
		Drop_external_data_sourceContext _localctx = new Drop_external_data_sourceContext(_ctx, getState());
		enterRule(_localctx, 194, RULE_drop_external_data_source);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2409);
			match(DROP);
			setState(2410);
			match(EXTERNAL);
			setState(2411);
			match(DATA);
			setState(2412);
			match(SOURCE);
			setState(2413);
			((Drop_external_data_sourceContext)_localctx).external_data_source_name = id();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Drop_external_file_formatContext extends ParserRuleContext {
		public IdContext external_file_format_name;
		public TerminalNode DROP() { return getToken(TSqlParser.DROP, 0); }
		public TerminalNode EXTERNAL() { return getToken(TSqlParser.EXTERNAL, 0); }
		public TerminalNode FILE() { return getToken(TSqlParser.FILE, 0); }
		public TerminalNode FORMAT() { return getToken(TSqlParser.FORMAT, 0); }
		public IdContext id() {
			return getRuleContext(IdContext.class,0);
		}
		public Drop_external_file_formatContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_drop_external_file_format; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterDrop_external_file_format(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitDrop_external_file_format(this);
		}
	}

	public final Drop_external_file_formatContext drop_external_file_format() throws RecognitionException {
		Drop_external_file_formatContext _localctx = new Drop_external_file_formatContext(_ctx, getState());
		enterRule(_localctx, 196, RULE_drop_external_file_format);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2415);
			match(DROP);
			setState(2416);
			match(EXTERNAL);
			setState(2417);
			match(FILE);
			setState(2418);
			match(FORMAT);
			setState(2419);
			((Drop_external_file_formatContext)_localctx).external_file_format_name = id();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Drop_external_libraryContext extends ParserRuleContext {
		public IdContext library_name;
		public IdContext owner_name;
		public TerminalNode DROP() { return getToken(TSqlParser.DROP, 0); }
		public TerminalNode EXTERNAL() { return getToken(TSqlParser.EXTERNAL, 0); }
		public TerminalNode LIBRARY() { return getToken(TSqlParser.LIBRARY, 0); }
		public List id() {
			return getRuleContexts(IdContext.class);
		}
		public IdContext id(int i) {
			return getRuleContext(IdContext.class,i);
		}
		public TerminalNode AUTHORIZATION() { return getToken(TSqlParser.AUTHORIZATION, 0); }
		public Drop_external_libraryContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_drop_external_library; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterDrop_external_library(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitDrop_external_library(this);
		}
	}

	public final Drop_external_libraryContext drop_external_library() throws RecognitionException {
		Drop_external_libraryContext _localctx = new Drop_external_libraryContext(_ctx, getState());
		enterRule(_localctx, 198, RULE_drop_external_library);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2421);
			match(DROP);
			setState(2422);
			match(EXTERNAL);
			setState(2423);
			match(LIBRARY);
			setState(2424);
			((Drop_external_libraryContext)_localctx).library_name = id();
			setState(2427);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==AUTHORIZATION) {
				{
				setState(2425);
				match(AUTHORIZATION);
				setState(2426);
				((Drop_external_libraryContext)_localctx).owner_name = id();
				}
			}

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

	public static class Drop_external_resource_poolContext extends ParserRuleContext {
		public IdContext pool_name;
		public TerminalNode DROP() { return getToken(TSqlParser.DROP, 0); }
		public TerminalNode EXTERNAL() { return getToken(TSqlParser.EXTERNAL, 0); }
		public TerminalNode RESOURCE() { return getToken(TSqlParser.RESOURCE, 0); }
		public TerminalNode POOL() { return getToken(TSqlParser.POOL, 0); }
		public IdContext id() {
			return getRuleContext(IdContext.class,0);
		}
		public Drop_external_resource_poolContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_drop_external_resource_pool; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterDrop_external_resource_pool(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitDrop_external_resource_pool(this);
		}
	}

	public final Drop_external_resource_poolContext drop_external_resource_pool() throws RecognitionException {
		Drop_external_resource_poolContext _localctx = new Drop_external_resource_poolContext(_ctx, getState());
		enterRule(_localctx, 200, RULE_drop_external_resource_pool);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2429);
			match(DROP);
			setState(2430);
			match(EXTERNAL);
			setState(2431);
			match(RESOURCE);
			setState(2432);
			match(POOL);
			setState(2433);
			((Drop_external_resource_poolContext)_localctx).pool_name = id();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Drop_external_tableContext extends ParserRuleContext {
		public IdContext database_name;
		public IdContext schema_name;
		public IdContext table;
		public TerminalNode DROP() { return getToken(TSqlParser.DROP, 0); }
		public TerminalNode EXTERNAL() { return getToken(TSqlParser.EXTERNAL, 0); }
		public TerminalNode TABLE() { return getToken(TSqlParser.TABLE, 0); }
		public List id() {
			return getRuleContexts(IdContext.class);
		}
		public IdContext id(int i) {
			return getRuleContext(IdContext.class,i);
		}
		public List DOT() { return getTokens(TSqlParser.DOT); }
		public TerminalNode DOT(int i) {
			return getToken(TSqlParser.DOT, i);
		}
		public Drop_external_tableContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_drop_external_table; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterDrop_external_table(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitDrop_external_table(this);
		}
	}

	public final Drop_external_tableContext drop_external_table() throws RecognitionException {
		Drop_external_tableContext _localctx = new Drop_external_tableContext(_ctx, getState());
		enterRule(_localctx, 202, RULE_drop_external_table);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2435);
			match(DROP);
			setState(2436);
			match(EXTERNAL);
			setState(2437);
			match(TABLE);
			setState(2441);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,171,_ctx) ) {
			case 1:
				{
				setState(2438);
				((Drop_external_tableContext)_localctx).database_name = id();
				setState(2439);
				match(DOT);
				}
				break;
			}
			setState(2446);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,172,_ctx) ) {
			case 1:
				{
				setState(2443);
				((Drop_external_tableContext)_localctx).schema_name = id();
				setState(2444);
				match(DOT);
				}
				break;
			}
			setState(2448);
			((Drop_external_tableContext)_localctx).table = id();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Drop_event_notificationsContext extends ParserRuleContext {
		public IdContext notification_name;
		public IdContext queue_name;
		public TerminalNode DROP() { return getToken(TSqlParser.DROP, 0); }
		public TerminalNode EVENT() { return getToken(TSqlParser.EVENT, 0); }
		public TerminalNode NOTIFICATION() { return getToken(TSqlParser.NOTIFICATION, 0); }
		public TerminalNode ON() { return getToken(TSqlParser.ON, 0); }
		public TerminalNode SERVER() { return getToken(TSqlParser.SERVER, 0); }
		public TerminalNode DATABASE() { return getToken(TSqlParser.DATABASE, 0); }
		public TerminalNode QUEUE() { return getToken(TSqlParser.QUEUE, 0); }
		public List id() {
			return getRuleContexts(IdContext.class);
		}
		public IdContext id(int i) {
			return getRuleContext(IdContext.class,i);
		}
		public List COMMA() { return getTokens(TSqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(TSqlParser.COMMA, i);
		}
		public Drop_event_notificationsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_drop_event_notifications; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterDrop_event_notifications(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitDrop_event_notifications(this);
		}
	}

	public final Drop_event_notificationsContext drop_event_notifications() throws RecognitionException {
		Drop_event_notificationsContext _localctx = new Drop_event_notificationsContext(_ctx, getState());
		enterRule(_localctx, 204, RULE_drop_event_notifications);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2450);
			match(DROP);
			setState(2451);
			match(EVENT);
			setState(2452);
			match(NOTIFICATION);
			setState(2457); 
			_errHandler.sync(this);
			_la = _input.LA(1);
			do {
				{
				{
				setState(2454);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==COMMA) {
					{
					setState(2453);
					match(COMMA);
					}
				}

				setState(2456);
				((Drop_event_notificationsContext)_localctx).notification_name = id();
				}
				}
				setState(2459); 
				_errHandler.sync(this);
				_la = _input.LA(1);
			} while ( _la==CALLED || ((((_la - 81)) & ~0x3f) == 0 && ((1L << (_la - 81)) & ((1L << (DATA_COMPRESSION - 81)) | (1L << (EVENTDATA - 81)) | (1L << (FILENAME - 81)) | (1L << (FILLFACTOR - 81)) | (1L << (FORCESEEK - 81)))) != 0) || ((((_la - 159)) & ~0x3f) == 0 && ((1L << (_la - 159)) & ((1L << (INIT - 159)) | (1L << (KEY - 159)) | (1L << (MASTER - 159)) | (1L << (MAX_MEMORY - 159)))) != 0) || ((((_la - 226)) & ~0x3f) == 0 && ((1L << (_la - 226)) & ((1L << (OFFSETS - 226)) | (1L << (PAGE - 226)) | (1L << (PUBLIC - 226)) | (1L << (R - 226)) | (1L << (RAW - 226)) | (1L << (RETURN - 226)) | (1L << (RETURNS - 226)) | (1L << (ROWCOUNT - 226)))) != 0) || ((((_la - 296)) & ~0x3f) == 0 && ((1L << (_la - 296)) & ((1L << (SAFETY - 296)) | (1L << (SERVER - 296)) | (1L << (SID - 296)) | (1L << (SOURCE - 296)) | (1L << (STATE - 296)) | (1L << (START - 296)) | (1L << (TARGET - 296)))) != 0) || ((((_la - 384)) & ~0x3f) == 0 && ((1L << (_la - 384)) & ((1L << (ABSOLUTE - 384)) | (1L << (ACCENT_SENSITIVITY - 384)) | (1L << (ACTION - 384)) | (1L << (ACTIVATION - 384)) | (1L << (ACTIVE - 384)) | (1L << (ADDRESS - 384)) | (1L << (AES_128 - 384)) | (1L << (AES_192 - 384)) | (1L << (AES_256 - 384)) | (1L << (AFFINITY - 384)) | (1L << (AFTER - 384)) | (1L << (AGGREGATE - 384)) | (1L << (ALGORITHM - 384)) | (1L << (ALLOW_ENCRYPTED_VALUE_MODIFICATIONS - 384)) | (1L << (ALLOW_SNAPSHOT_ISOLATION - 384)) | (1L << (ALLOWED - 384)) | (1L << (ANSI_NULL_DEFAULT - 384)) | (1L << (ANSI_NULLS - 384)) | (1L << (ANSI_PADDING - 384)) | (1L << (ANSI_WARNINGS - 384)) | (1L << (APPLICATION_LOG - 384)) | (1L << (APPLY - 384)) | (1L << (ARITHABORT - 384)) | (1L << (ASSEMBLY - 384)) | (1L << (AUDIT - 384)) | (1L << (AUDIT_GUID - 384)) | (1L << (AUTO - 384)) | (1L << (AUTO_CLEANUP - 384)) | (1L << (AUTO_CLOSE - 384)) | (1L << (AUTO_CREATE_STATISTICS - 384)) | (1L << (AUTO_SHRINK - 384)) | (1L << (AUTO_UPDATE_STATISTICS - 384)) | (1L << (AUTO_UPDATE_STATISTICS_ASYNC - 384)) | (1L << (AVAILABILITY - 384)) | (1L << (AVG - 384)) | (1L << (BACKUP_PRIORITY - 384)) | (1L << (BEGIN_DIALOG - 384)) | (1L << (BIGINT - 384)) | (1L << (BINARY_BASE64 - 384)) | (1L << (BINARY_CHECKSUM - 384)) | (1L << (BINDING - 384)) | (1L << (BLOB_STORAGE - 384)) | (1L << (BROKER - 384)) | (1L << (BROKER_INSTANCE - 384)) | (1L << (BULK_LOGGED - 384)) | (1L << (CALLER - 384)) | (1L << (CAP_CPU_PERCENT - 384)) | (1L << (CAST - 384)) | (1L << (CATALOG - 384)) | (1L << (CATCH - 384)) | (1L << (CHANGE_RETENTION - 384)) | (1L << (CHANGE_TRACKING - 384)) | (1L << (CHECKSUM - 384)) | (1L << (CHECKSUM_AGG - 384)) | (1L << (CLEANUP - 384)) | (1L << (COLLECTION - 384)) | (1L << (COLUMN_MASTER_KEY - 384)) | (1L << (COMMITTED - 384)) | (1L << (COMPATIBILITY_LEVEL - 384)) | (1L << (CONCAT - 384)) | (1L << (CONCAT_NULL_YIELDS_NULL - 384)) | (1L << (CONTENT - 384)) | (1L << (CONTROL - 384)) | (1L << (COOKIE - 384)))) != 0) || ((((_la - 448)) & ~0x3f) == 0 && ((1L << (_la - 448)) & ((1L << (COUNT - 448)) | (1L << (COUNT_BIG - 448)) | (1L << (COUNTER - 448)) | (1L << (CPU - 448)) | (1L << (CREATE_NEW - 448)) | (1L << (CREATION_DISPOSITION - 448)) | (1L << (CREDENTIAL - 448)) | (1L << (CRYPTOGRAPHIC - 448)) | (1L << (CURSOR_CLOSE_ON_COMMIT - 448)) | (1L << (CURSOR_DEFAULT - 448)) | (1L << (DATE_CORRELATION_OPTIMIZATION - 448)) | (1L << (DATEADD - 448)) | (1L << (DATEDIFF - 448)) | (1L << (DATENAME - 448)) | (1L << (DATEPART - 448)) | (1L << (DAYS - 448)) | (1L << (DB_CHAINING - 448)) | (1L << (DB_FAILOVER - 448)) | (1L << (DECRYPTION - 448)) | (1L << (DEFAULT_DOUBLE_QUOTE - 448)) | (1L << (DEFAULT_FULLTEXT_LANGUAGE - 448)) | (1L << (DEFAULT_LANGUAGE - 448)) | (1L << (DELAY - 448)) | (1L << (DELAYED_DURABILITY - 448)) | (1L << (DELETED - 448)) | (1L << (DENSE_RANK - 448)) | (1L << (DEPENDENTS - 448)) | (1L << (DES - 448)) | (1L << (DESCRIPTION - 448)) | (1L << (DESX - 448)) | (1L << (DHCP - 448)) | (1L << (DIALOG - 448)) | (1L << (DIRECTORY_NAME - 448)) | (1L << (DISABLE - 448)) | (1L << (DISABLE_BROKER - 448)) | (1L << (DISABLED - 448)) | (1L << (DISK_DRIVE - 448)) | (1L << (DOCUMENT - 448)) | (1L << (DYNAMIC - 448)) | (1L << (EMERGENCY - 448)) | (1L << (EMPTY - 448)) | (1L << (ENABLE - 448)) | (1L << (ENABLE_BROKER - 448)) | (1L << (ENCRYPTED_VALUE - 448)) | (1L << (ENCRYPTION - 448)) | (1L << (ENDPOINT_URL - 448)) | (1L << (ERROR_BROKER_CONVERSATIONS - 448)) | (1L << (EXCLUSIVE - 448)) | (1L << (EXECUTABLE - 448)) | (1L << (EXIST - 448)) | (1L << (EXPAND - 448)) | (1L << (EXPIRY_DATE - 448)) | (1L << (EXPLICIT - 448)) | (1L << (FAIL_OPERATION - 448)) | (1L << (FAILOVER_MODE - 448)) | (1L << (FAILURE - 448)) | (1L << (FAILURE_CONDITION_LEVEL - 448)) | (1L << (FAST - 448)) | (1L << (FAST_FORWARD - 448)) | (1L << (FILEGROUP - 448)) | (1L << (FILEGROWTH - 448)) | (1L << (FILEPATH - 448)) | (1L << (FILESTREAM - 448)))) != 0) || ((((_la - 512)) & ~0x3f) == 0 && ((1L << (_la - 512)) & ((1L << (FILTER - 512)) | (1L << (FIRST - 512)) | (1L << (FIRST_VALUE - 512)) | (1L << (FOLLOWING - 512)) | (1L << (FORCE - 512)) | (1L << (FORCE_FAILOVER_ALLOW_DATA_LOSS - 512)) | (1L << (FORCED - 512)) | (1L << (FORMAT - 512)) | (1L << (FORWARD_ONLY - 512)) | (1L << (FULLSCAN - 512)) | (1L << (FULLTEXT - 512)) | (1L << (GB - 512)) | (1L << (GETDATE - 512)) | (1L << (GETUTCDATE - 512)) | (1L << (GLOBAL - 512)) | (1L << (GO - 512)) | (1L << (GROUP_MAX_REQUESTS - 512)) | (1L << (GROUPING - 512)) | (1L << (GROUPING_ID - 512)) | (1L << (HADR - 512)) | (1L << (HASH - 512)) | (1L << (HEALTH_CHECK_TIMEOUT - 512)) | (1L << (HIGH - 512)) | (1L << (HONOR_BROKER_PRIORITY - 512)) | (1L << (HOURS - 512)) | (1L << (IDENTITY_VALUE - 512)) | (1L << (IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX - 512)) | (1L << (IMMEDIATE - 512)) | (1L << (IMPERSONATE - 512)) | (1L << (IMPORTANCE - 512)) | (1L << (INCREMENTAL - 512)) | (1L << (INITIATOR - 512)) | (1L << (INPUT - 512)) | (1L << (INSENSITIVE - 512)) | (1L << (INSERTED - 512)) | (1L << (INT - 512)) | (1L << (IP - 512)) | (1L << (ISOLATION - 512)) | (1L << (KB - 512)) | (1L << (KEEP - 512)) | (1L << (KEEPFIXED - 512)) | (1L << (KEY_SOURCE - 512)) | (1L << (KEYS - 512)) | (1L << (KEYSET - 512)) | (1L << (LAG - 512)) | (1L << (LAST - 512)) | (1L << (LAST_VALUE - 512)) | (1L << (LEAD - 512)) | (1L << (LEVEL - 512)) | (1L << (LIST - 512)) | (1L << (LISTENER - 512)) | (1L << (LISTENER_URL - 512)) | (1L << (LOB_COMPACTION - 512)) | (1L << (LOCAL - 512)) | (1L << (LOCATION - 512)) | (1L << (LOCK - 512)) | (1L << (LOCK_ESCALATION - 512)) | (1L << (LOGIN - 512)) | (1L << (LOOP - 512)) | (1L << (LOW - 512)) | (1L << (MANUAL - 512)) | (1L << (MARK - 512)))) != 0) || ((((_la - 576)) & ~0x3f) == 0 && ((1L << (_la - 576)) & ((1L << (MATERIALIZED - 576)) | (1L << (MAX - 576)) | (1L << (MAX_CPU_PERCENT - 576)) | (1L << (MAX_DOP - 576)) | (1L << (MAX_FILES - 576)) | (1L << (MAX_IOPS_PER_VOLUME - 576)) | (1L << (MAX_MEMORY_PERCENT - 576)) | (1L << (MAX_PROCESSES - 576)) | (1L << (MAX_QUEUE_READERS - 576)) | (1L << (MAX_ROLLOVER_FILES - 576)) | (1L << (MAXDOP - 576)) | (1L << (MAXRECURSION - 576)) | (1L << (MAXSIZE - 576)) | (1L << (MB - 576)) | (1L << (MEDIUM - 576)) | (1L << (MEMORY_OPTIMIZED_DATA - 576)) | (1L << (MESSAGE - 576)) | (1L << (MIN - 576)) | (1L << (MIN_ACTIVE_ROWVERSION - 576)) | (1L << (MIN_CPU_PERCENT - 576)) | (1L << (MIN_IOPS_PER_VOLUME - 576)) | (1L << (MIN_MEMORY_PERCENT - 576)) | (1L << (MINUTES - 576)) | (1L << (MIRROR_ADDRESS - 576)) | (1L << (MIXED_PAGE_ALLOCATION - 576)) | (1L << (MODE - 576)) | (1L << (MODIFY - 576)) | (1L << (MOVE - 576)) | (1L << (MULTI_USER - 576)) | (1L << (NAME - 576)) | (1L << (NESTED_TRIGGERS - 576)) | (1L << (NEW_ACCOUNT - 576)) | (1L << (NEW_BROKER - 576)) | (1L << (NEW_PASSWORD - 576)) | (1L << (NEXT - 576)) | (1L << (NO - 576)) | (1L << (NO_TRUNCATE - 576)) | (1L << (NO_WAIT - 576)) | (1L << (NOCOUNT - 576)) | (1L << (NODES - 576)) | (1L << (NOEXPAND - 576)) | (1L << (NON_TRANSACTED_ACCESS - 576)) | (1L << (NORECOMPUTE - 576)) | (1L << (NORECOVERY - 576)) | (1L << (NOWAIT - 576)) | (1L << (NTILE - 576)) | (1L << (NUMANODE - 576)) | (1L << (NUMBER - 576)) | (1L << (NUMERIC_ROUNDABORT - 576)) | (1L << (OBJECT - 576)) | (1L << (OFFLINE - 576)) | (1L << (OFFSET - 576)) | (1L << (OLD_ACCOUNT - 576)) | (1L << (ONLINE - 576)) | (1L << (ONLY - 576)) | (1L << (OPEN_EXISTING - 576)) | (1L << (OPTIMISTIC - 576)) | (1L << (OPTIMIZE - 576)) | (1L << (OUT - 576)) | (1L << (OUTPUT - 576)) | (1L << (OWNER - 576)) | (1L << (PAGE_VERIFY - 576)) | (1L << (PARAMETERIZATION - 576)) | (1L << (PARTITION - 576)))) != 0) || ((((_la - 640)) & ~0x3f) == 0 && ((1L << (_la - 640)) & ((1L << (PARTITIONS - 640)) | (1L << (PARTNER - 640)) | (1L << (PATH - 640)) | (1L << (POISON_MESSAGE_HANDLING - 640)) | (1L << (POOL - 640)) | (1L << (PORT - 640)) | (1L << (PRECEDING - 640)) | (1L << (PRIMARY_ROLE - 640)) | (1L << (PRIOR - 640)) | (1L << (PRIORITY - 640)) | (1L << (PRIORITY_LEVEL - 640)) | (1L << (PRIVATE - 640)) | (1L << (PRIVATE_KEY - 640)) | (1L << (PRIVILEGES - 640)) | (1L << (PROCEDURE_NAME - 640)) | (1L << (PROPERTY - 640)) | (1L << (PROVIDER - 640)) | (1L << (PROVIDER_KEY_NAME - 640)) | (1L << (QUERY - 640)) | (1L << (QUEUE - 640)) | (1L << (QUEUE_DELAY - 640)) | (1L << (QUOTED_IDENTIFIER - 640)) | (1L << (RANGE - 640)) | (1L << (RANK - 640)) | (1L << (RC2 - 640)) | (1L << (RC4 - 640)) | (1L << (RC4_128 - 640)) | (1L << (READ_COMMITTED_SNAPSHOT - 640)) | (1L << (READ_ONLY - 640)) | (1L << (READ_ONLY_ROUTING_LIST - 640)) | (1L << (READ_WRITE - 640)) | (1L << (READONLY - 640)) | (1L << (REBUILD - 640)) | (1L << (RECEIVE - 640)) | (1L << (RECOMPILE - 640)) | (1L << (RECOVERY - 640)) | (1L << (RECURSIVE_TRIGGERS - 640)) | (1L << (RELATIVE - 640)) | (1L << (REMOTE - 640)) | (1L << (REMOTE_SERVICE_NAME - 640)) | (1L << (REMOVE - 640)) | (1L << (REORGANIZE - 640)) | (1L << (REPEATABLE - 640)) | (1L << (REPLICA - 640)) | (1L << (REQUEST_MAX_CPU_TIME_SEC - 640)) | (1L << (REQUEST_MAX_MEMORY_GRANT_PERCENT - 640)) | (1L << (REQUEST_MEMORY_GRANT_TIMEOUT_SEC - 640)) | (1L << (REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT - 640)) | (1L << (RESERVE_DISK_SPACE - 640)) | (1L << (RESOURCE - 640)) | (1L << (RESOURCE_MANAGER_LOCATION - 640)) | (1L << (RESTRICTED_USER - 640)) | (1L << (RETENTION - 640)) | (1L << (ROBUST - 640)) | (1L << (ROOT - 640)) | (1L << (ROUTE - 640)) | (1L << (ROW - 640)) | (1L << (ROW_NUMBER - 640)) | (1L << (ROWGUID - 640)) | (1L << (ROWS - 640)) | (1L << (SAMPLE - 640)) | (1L << (SCHEMABINDING - 640)) | (1L << (SCOPED - 640)) | (1L << (SCROLL - 640)))) != 0) || ((((_la - 704)) & ~0x3f) == 0 && ((1L << (_la - 704)) & ((1L << (SCROLL_LOCKS - 704)) | (1L << (SEARCH - 704)) | (1L << (SECONDARY - 704)) | (1L << (SECONDARY_ONLY - 704)) | (1L << (SECONDARY_ROLE - 704)) | (1L << (SECONDS - 704)) | (1L << (SECRET - 704)) | (1L << (SECURITY_LOG - 704)) | (1L << (SEEDING_MODE - 704)) | (1L << (SELF - 704)) | (1L << (SEMI_SENSITIVE - 704)) | (1L << (SEND - 704)) | (1L << (SENT - 704)) | (1L << (SERIALIZABLE - 704)) | (1L << (SESSION_TIMEOUT - 704)) | (1L << (SETERROR - 704)) | (1L << (SHARE - 704)) | (1L << (SHOWPLAN - 704)) | (1L << (SIGNATURE - 704)) | (1L << (SIMPLE - 704)) | (1L << (SINGLE_USER - 704)) | (1L << (SIZE - 704)) | (1L << (SMALLINT - 704)) | (1L << (SNAPSHOT - 704)) | (1L << (SPATIAL_WINDOW_MAX_CELLS - 704)) | (1L << (STANDBY - 704)) | (1L << (START_DATE - 704)) | (1L << (STATIC - 704)) | (1L << (STATS_STREAM - 704)) | (1L << (STATUS - 704)) | (1L << (STDEV - 704)) | (1L << (STDEVP - 704)) | (1L << (STOPLIST - 704)) | (1L << (STUFF - 704)) | (1L << (SUBJECT - 704)) | (1L << (SUM - 704)) | (1L << (SUSPEND - 704)) | (1L << (SYMMETRIC - 704)) | (1L << (SYNCHRONOUS_COMMIT - 704)) | (1L << (SYNONYM - 704)) | (1L << (TAKE - 704)) | (1L << (TARGET_RECOVERY_TIME - 704)) | (1L << (TB - 704)) | (1L << (TEXTIMAGE_ON - 704)) | (1L << (THROW - 704)) | (1L << (TIES - 704)) | (1L << (TIME - 704)) | (1L << (TIMEOUT - 704)) | (1L << (TIMER - 704)) | (1L << (TINYINT - 704)) | (1L << (TORN_PAGE_DETECTION - 704)) | (1L << (TRANSFORM_NOISE_WORDS - 704)) | (1L << (TRIPLE_DES - 704)) | (1L << (TRIPLE_DES_3KEY - 704)) | (1L << (TRUSTWORTHY - 704)) | (1L << (TRY - 704)) | (1L << (TSQL - 704)) | (1L << (TWO_DIGIT_YEAR_CUTOFF - 704)) | (1L << (TYPE - 704)) | (1L << (TYPE_WARNING - 704)) | (1L << (UNBOUNDED - 704)) | (1L << (UNCOMMITTED - 704)) | (1L << (UNKNOWN - 704)) | (1L << (UNLIMITED - 704)))) != 0) || ((((_la - 768)) & ~0x3f) == 0 && ((1L << (_la - 768)) & ((1L << (USING - 768)) | (1L << (VALID_XML - 768)) | (1L << (VALIDATION - 768)) | (1L << (VALUE - 768)) | (1L << (VAR - 768)) | (1L << (VARP - 768)) | (1L << (VIEW_METADATA - 768)) | (1L << (VIEWS - 768)) | (1L << (WAIT - 768)) | (1L << (WELL_FORMED_XML - 768)) | (1L << (WORK - 768)) | (1L << (WORKLOAD - 768)) | (1L << (XML - 768)) | (1L << (XMLNAMESPACES - 768)) | (1L << (DOUBLE_QUOTE_ID - 768)) | (1L << (SQUARE_BRACKET_ID - 768)) | (1L << (ID - 768)) | (1L << (COMMA - 768)))) != 0) );
			setState(2461);
			match(ON);
			setState(2466);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case SERVER:
				{
				setState(2462);
				match(SERVER);
				}
				break;
			case DATABASE:
				{
				setState(2463);
				match(DATABASE);
				}
				break;
			case QUEUE:
				{
				setState(2464);
				match(QUEUE);
				setState(2465);
				((Drop_event_notificationsContext)_localctx).queue_name = id();
				}
				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 Drop_event_sessionContext extends ParserRuleContext {
		public IdContext event_session_name;
		public TerminalNode DROP() { return getToken(TSqlParser.DROP, 0); }
		public TerminalNode EVENT() { return getToken(TSqlParser.EVENT, 0); }
		public TerminalNode SESSION() { return getToken(TSqlParser.SESSION, 0); }
		public TerminalNode ON() { return getToken(TSqlParser.ON, 0); }
		public TerminalNode SERVER() { return getToken(TSqlParser.SERVER, 0); }
		public IdContext id() {
			return getRuleContext(IdContext.class,0);
		}
		public Drop_event_sessionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_drop_event_session; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterDrop_event_session(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitDrop_event_session(this);
		}
	}

	public final Drop_event_sessionContext drop_event_session() throws RecognitionException {
		Drop_event_sessionContext _localctx = new Drop_event_sessionContext(_ctx, getState());
		enterRule(_localctx, 206, RULE_drop_event_session);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2468);
			match(DROP);
			setState(2469);
			match(EVENT);
			setState(2470);
			match(SESSION);
			setState(2471);
			((Drop_event_sessionContext)_localctx).event_session_name = id();
			setState(2472);
			match(ON);
			setState(2473);
			match(SERVER);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Drop_fulltext_catalogContext extends ParserRuleContext {
		public IdContext catalog_name;
		public TerminalNode DROP() { return getToken(TSqlParser.DROP, 0); }
		public TerminalNode FULLTEXT() { return getToken(TSqlParser.FULLTEXT, 0); }
		public TerminalNode CATALOG() { return getToken(TSqlParser.CATALOG, 0); }
		public IdContext id() {
			return getRuleContext(IdContext.class,0);
		}
		public Drop_fulltext_catalogContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_drop_fulltext_catalog; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterDrop_fulltext_catalog(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitDrop_fulltext_catalog(this);
		}
	}

	public final Drop_fulltext_catalogContext drop_fulltext_catalog() throws RecognitionException {
		Drop_fulltext_catalogContext _localctx = new Drop_fulltext_catalogContext(_ctx, getState());
		enterRule(_localctx, 208, RULE_drop_fulltext_catalog);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2475);
			match(DROP);
			setState(2476);
			match(FULLTEXT);
			setState(2477);
			match(CATALOG);
			setState(2478);
			((Drop_fulltext_catalogContext)_localctx).catalog_name = id();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Drop_fulltext_indexContext extends ParserRuleContext {
		public IdContext schema;
		public IdContext table;
		public TerminalNode DROP() { return getToken(TSqlParser.DROP, 0); }
		public TerminalNode FULLTEXT() { return getToken(TSqlParser.FULLTEXT, 0); }
		public TerminalNode INDEX() { return getToken(TSqlParser.INDEX, 0); }
		public TerminalNode ON() { return getToken(TSqlParser.ON, 0); }
		public List id() {
			return getRuleContexts(IdContext.class);
		}
		public IdContext id(int i) {
			return getRuleContext(IdContext.class,i);
		}
		public TerminalNode DOT() { return getToken(TSqlParser.DOT, 0); }
		public Drop_fulltext_indexContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_drop_fulltext_index; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterDrop_fulltext_index(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitDrop_fulltext_index(this);
		}
	}

	public final Drop_fulltext_indexContext drop_fulltext_index() throws RecognitionException {
		Drop_fulltext_indexContext _localctx = new Drop_fulltext_indexContext(_ctx, getState());
		enterRule(_localctx, 210, RULE_drop_fulltext_index);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2480);
			match(DROP);
			setState(2481);
			match(FULLTEXT);
			setState(2482);
			match(INDEX);
			setState(2483);
			match(ON);
			setState(2487);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,176,_ctx) ) {
			case 1:
				{
				setState(2484);
				((Drop_fulltext_indexContext)_localctx).schema = id();
				setState(2485);
				match(DOT);
				}
				break;
			}
			setState(2489);
			((Drop_fulltext_indexContext)_localctx).table = id();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Drop_fulltext_stoplistContext extends ParserRuleContext {
		public IdContext stoplist_name;
		public TerminalNode DROP() { return getToken(TSqlParser.DROP, 0); }
		public TerminalNode FULLTEXT() { return getToken(TSqlParser.FULLTEXT, 0); }
		public TerminalNode STOPLIST() { return getToken(TSqlParser.STOPLIST, 0); }
		public IdContext id() {
			return getRuleContext(IdContext.class,0);
		}
		public Drop_fulltext_stoplistContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_drop_fulltext_stoplist; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterDrop_fulltext_stoplist(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitDrop_fulltext_stoplist(this);
		}
	}

	public final Drop_fulltext_stoplistContext drop_fulltext_stoplist() throws RecognitionException {
		Drop_fulltext_stoplistContext _localctx = new Drop_fulltext_stoplistContext(_ctx, getState());
		enterRule(_localctx, 212, RULE_drop_fulltext_stoplist);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2491);
			match(DROP);
			setState(2492);
			match(FULLTEXT);
			setState(2493);
			match(STOPLIST);
			setState(2494);
			((Drop_fulltext_stoplistContext)_localctx).stoplist_name = id();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Drop_loginContext extends ParserRuleContext {
		public IdContext login_name;
		public TerminalNode DROP() { return getToken(TSqlParser.DROP, 0); }
		public TerminalNode LOGIN() { return getToken(TSqlParser.LOGIN, 0); }
		public IdContext id() {
			return getRuleContext(IdContext.class,0);
		}
		public Drop_loginContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_drop_login; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterDrop_login(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitDrop_login(this);
		}
	}

	public final Drop_loginContext drop_login() throws RecognitionException {
		Drop_loginContext _localctx = new Drop_loginContext(_ctx, getState());
		enterRule(_localctx, 214, RULE_drop_login);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2496);
			match(DROP);
			setState(2497);
			match(LOGIN);
			setState(2498);
			((Drop_loginContext)_localctx).login_name = id();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Drop_master_keyContext extends ParserRuleContext {
		public TerminalNode DROP() { return getToken(TSqlParser.DROP, 0); }
		public TerminalNode MASTER() { return getToken(TSqlParser.MASTER, 0); }
		public TerminalNode KEY() { return getToken(TSqlParser.KEY, 0); }
		public Drop_master_keyContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_drop_master_key; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterDrop_master_key(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitDrop_master_key(this);
		}
	}

	public final Drop_master_keyContext drop_master_key() throws RecognitionException {
		Drop_master_keyContext _localctx = new Drop_master_keyContext(_ctx, getState());
		enterRule(_localctx, 216, RULE_drop_master_key);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2500);
			match(DROP);
			setState(2501);
			match(MASTER);
			setState(2502);
			match(KEY);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Drop_message_typeContext extends ParserRuleContext {
		public IdContext message_type_name;
		public TerminalNode DROP() { return getToken(TSqlParser.DROP, 0); }
		public TerminalNode MESSAGE() { return getToken(TSqlParser.MESSAGE, 0); }
		public TerminalNode TYPE() { return getToken(TSqlParser.TYPE, 0); }
		public IdContext id() {
			return getRuleContext(IdContext.class,0);
		}
		public Drop_message_typeContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_drop_message_type; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterDrop_message_type(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitDrop_message_type(this);
		}
	}

	public final Drop_message_typeContext drop_message_type() throws RecognitionException {
		Drop_message_typeContext _localctx = new Drop_message_typeContext(_ctx, getState());
		enterRule(_localctx, 218, RULE_drop_message_type);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2504);
			match(DROP);
			setState(2505);
			match(MESSAGE);
			setState(2506);
			match(TYPE);
			setState(2507);
			((Drop_message_typeContext)_localctx).message_type_name = id();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Drop_partition_functionContext extends ParserRuleContext {
		public IdContext partition_function_name;
		public TerminalNode DROP() { return getToken(TSqlParser.DROP, 0); }
		public TerminalNode PARTITION() { return getToken(TSqlParser.PARTITION, 0); }
		public TerminalNode FUNCTION() { return getToken(TSqlParser.FUNCTION, 0); }
		public IdContext id() {
			return getRuleContext(IdContext.class,0);
		}
		public Drop_partition_functionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_drop_partition_function; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterDrop_partition_function(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitDrop_partition_function(this);
		}
	}

	public final Drop_partition_functionContext drop_partition_function() throws RecognitionException {
		Drop_partition_functionContext _localctx = new Drop_partition_functionContext(_ctx, getState());
		enterRule(_localctx, 220, RULE_drop_partition_function);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2509);
			match(DROP);
			setState(2510);
			match(PARTITION);
			setState(2511);
			match(FUNCTION);
			setState(2512);
			((Drop_partition_functionContext)_localctx).partition_function_name = id();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Drop_partition_schemeContext extends ParserRuleContext {
		public IdContext partition_scheme_name;
		public TerminalNode DROP() { return getToken(TSqlParser.DROP, 0); }
		public TerminalNode PARTITION() { return getToken(TSqlParser.PARTITION, 0); }
		public TerminalNode SCHEME() { return getToken(TSqlParser.SCHEME, 0); }
		public IdContext id() {
			return getRuleContext(IdContext.class,0);
		}
		public Drop_partition_schemeContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_drop_partition_scheme; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterDrop_partition_scheme(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitDrop_partition_scheme(this);
		}
	}

	public final Drop_partition_schemeContext drop_partition_scheme() throws RecognitionException {
		Drop_partition_schemeContext _localctx = new Drop_partition_schemeContext(_ctx, getState());
		enterRule(_localctx, 222, RULE_drop_partition_scheme);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2514);
			match(DROP);
			setState(2515);
			match(PARTITION);
			setState(2516);
			match(SCHEME);
			setState(2517);
			((Drop_partition_schemeContext)_localctx).partition_scheme_name = id();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Drop_queueContext extends ParserRuleContext {
		public IdContext database_name;
		public IdContext schema_name;
		public IdContext queue_name;
		public TerminalNode DROP() { return getToken(TSqlParser.DROP, 0); }
		public TerminalNode QUEUE() { return getToken(TSqlParser.QUEUE, 0); }
		public List id() {
			return getRuleContexts(IdContext.class);
		}
		public IdContext id(int i) {
			return getRuleContext(IdContext.class,i);
		}
		public List DOT() { return getTokens(TSqlParser.DOT); }
		public TerminalNode DOT(int i) {
			return getToken(TSqlParser.DOT, i);
		}
		public Drop_queueContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_drop_queue; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterDrop_queue(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitDrop_queue(this);
		}
	}

	public final Drop_queueContext drop_queue() throws RecognitionException {
		Drop_queueContext _localctx = new Drop_queueContext(_ctx, getState());
		enterRule(_localctx, 224, RULE_drop_queue);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2519);
			match(DROP);
			setState(2520);
			match(QUEUE);
			setState(2524);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,177,_ctx) ) {
			case 1:
				{
				setState(2521);
				((Drop_queueContext)_localctx).database_name = id();
				setState(2522);
				match(DOT);
				}
				break;
			}
			setState(2529);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,178,_ctx) ) {
			case 1:
				{
				setState(2526);
				((Drop_queueContext)_localctx).schema_name = id();
				setState(2527);
				match(DOT);
				}
				break;
			}
			setState(2531);
			((Drop_queueContext)_localctx).queue_name = id();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Drop_remote_service_bindingContext extends ParserRuleContext {
		public IdContext binding_name;
		public TerminalNode DROP() { return getToken(TSqlParser.DROP, 0); }
		public TerminalNode REMOTE() { return getToken(TSqlParser.REMOTE, 0); }
		public TerminalNode SERVICE() { return getToken(TSqlParser.SERVICE, 0); }
		public TerminalNode BINDING() { return getToken(TSqlParser.BINDING, 0); }
		public IdContext id() {
			return getRuleContext(IdContext.class,0);
		}
		public Drop_remote_service_bindingContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_drop_remote_service_binding; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterDrop_remote_service_binding(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitDrop_remote_service_binding(this);
		}
	}

	public final Drop_remote_service_bindingContext drop_remote_service_binding() throws RecognitionException {
		Drop_remote_service_bindingContext _localctx = new Drop_remote_service_bindingContext(_ctx, getState());
		enterRule(_localctx, 226, RULE_drop_remote_service_binding);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2533);
			match(DROP);
			setState(2534);
			match(REMOTE);
			setState(2535);
			match(SERVICE);
			setState(2536);
			match(BINDING);
			setState(2537);
			((Drop_remote_service_bindingContext)_localctx).binding_name = id();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Drop_resource_poolContext extends ParserRuleContext {
		public IdContext pool_name;
		public TerminalNode DROP() { return getToken(TSqlParser.DROP, 0); }
		public TerminalNode RESOURCE() { return getToken(TSqlParser.RESOURCE, 0); }
		public TerminalNode POOL() { return getToken(TSqlParser.POOL, 0); }
		public IdContext id() {
			return getRuleContext(IdContext.class,0);
		}
		public Drop_resource_poolContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_drop_resource_pool; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterDrop_resource_pool(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitDrop_resource_pool(this);
		}
	}

	public final Drop_resource_poolContext drop_resource_pool() throws RecognitionException {
		Drop_resource_poolContext _localctx = new Drop_resource_poolContext(_ctx, getState());
		enterRule(_localctx, 228, RULE_drop_resource_pool);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2539);
			match(DROP);
			setState(2540);
			match(RESOURCE);
			setState(2541);
			match(POOL);
			setState(2542);
			((Drop_resource_poolContext)_localctx).pool_name = id();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Drop_db_roleContext extends ParserRuleContext {
		public IdContext role_name;
		public TerminalNode DROP() { return getToken(TSqlParser.DROP, 0); }
		public TerminalNode ROLE() { return getToken(TSqlParser.ROLE, 0); }
		public IdContext id() {
			return getRuleContext(IdContext.class,0);
		}
		public TerminalNode IF() { return getToken(TSqlParser.IF, 0); }
		public TerminalNode EXISTS() { return getToken(TSqlParser.EXISTS, 0); }
		public Drop_db_roleContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_drop_db_role; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterDrop_db_role(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitDrop_db_role(this);
		}
	}

	public final Drop_db_roleContext drop_db_role() throws RecognitionException {
		Drop_db_roleContext _localctx = new Drop_db_roleContext(_ctx, getState());
		enterRule(_localctx, 230, RULE_drop_db_role);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2544);
			match(DROP);
			setState(2545);
			match(ROLE);
			setState(2548);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==IF) {
				{
				setState(2546);
				match(IF);
				setState(2547);
				match(EXISTS);
				}
			}

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

	public static class Drop_routeContext extends ParserRuleContext {
		public IdContext route_name;
		public TerminalNode DROP() { return getToken(TSqlParser.DROP, 0); }
		public TerminalNode ROUTE() { return getToken(TSqlParser.ROUTE, 0); }
		public IdContext id() {
			return getRuleContext(IdContext.class,0);
		}
		public Drop_routeContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_drop_route; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterDrop_route(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitDrop_route(this);
		}
	}

	public final Drop_routeContext drop_route() throws RecognitionException {
		Drop_routeContext _localctx = new Drop_routeContext(_ctx, getState());
		enterRule(_localctx, 232, RULE_drop_route);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2552);
			match(DROP);
			setState(2553);
			match(ROUTE);
			setState(2554);
			((Drop_routeContext)_localctx).route_name = id();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Drop_ruleContext extends ParserRuleContext {
		public IdContext schema_name;
		public IdContext rule_name;
		public TerminalNode DROP() { return getToken(TSqlParser.DROP, 0); }
		public TerminalNode RULE() { return getToken(TSqlParser.RULE, 0); }
		public TerminalNode IF() { return getToken(TSqlParser.IF, 0); }
		public TerminalNode EXISTS() { return getToken(TSqlParser.EXISTS, 0); }
		public List id() {
			return getRuleContexts(IdContext.class);
		}
		public IdContext id(int i) {
			return getRuleContext(IdContext.class,i);
		}
		public TerminalNode COMMA() { return getToken(TSqlParser.COMMA, 0); }
		public TerminalNode DOT() { return getToken(TSqlParser.DOT, 0); }
		public Drop_ruleContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_drop_rule; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterDrop_rule(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitDrop_rule(this);
		}
	}

	public final Drop_ruleContext drop_rule() throws RecognitionException {
		Drop_ruleContext _localctx = new Drop_ruleContext(_ctx, getState());
		enterRule(_localctx, 234, RULE_drop_rule);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2556);
			match(DROP);
			setState(2557);
			match(RULE);
			setState(2560);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,180,_ctx) ) {
			case 1:
				{
				setState(2558);
				match(IF);
				setState(2559);
				match(EXISTS);
				}
				break;
			}
			setState(2571);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,183,_ctx) ) {
			case 1:
				{
				setState(2563);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==COMMA) {
					{
					setState(2562);
					match(COMMA);
					}
				}

				setState(2568);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,182,_ctx) ) {
				case 1:
					{
					setState(2565);
					((Drop_ruleContext)_localctx).schema_name = id();
					setState(2566);
					match(DOT);
					}
					break;
				}
				setState(2570);
				((Drop_ruleContext)_localctx).rule_name = id();
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Drop_schemaContext extends ParserRuleContext {
		public IdContext schema_name;
		public TerminalNode DROP() { return getToken(TSqlParser.DROP, 0); }
		public TerminalNode SCHEMA() { return getToken(TSqlParser.SCHEMA, 0); }
		public IdContext id() {
			return getRuleContext(IdContext.class,0);
		}
		public TerminalNode IF() { return getToken(TSqlParser.IF, 0); }
		public TerminalNode EXISTS() { return getToken(TSqlParser.EXISTS, 0); }
		public Drop_schemaContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_drop_schema; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterDrop_schema(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitDrop_schema(this);
		}
	}

	public final Drop_schemaContext drop_schema() throws RecognitionException {
		Drop_schemaContext _localctx = new Drop_schemaContext(_ctx, getState());
		enterRule(_localctx, 236, RULE_drop_schema);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2573);
			match(DROP);
			setState(2574);
			match(SCHEMA);
			setState(2577);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==IF) {
				{
				setState(2575);
				match(IF);
				setState(2576);
				match(EXISTS);
				}
			}

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

	public static class Drop_search_property_listContext extends ParserRuleContext {
		public IdContext property_list_name;
		public TerminalNode DROP() { return getToken(TSqlParser.DROP, 0); }
		public TerminalNode SEARCH() { return getToken(TSqlParser.SEARCH, 0); }
		public TerminalNode PROPERTY() { return getToken(TSqlParser.PROPERTY, 0); }
		public TerminalNode LIST() { return getToken(TSqlParser.LIST, 0); }
		public IdContext id() {
			return getRuleContext(IdContext.class,0);
		}
		public Drop_search_property_listContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_drop_search_property_list; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterDrop_search_property_list(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitDrop_search_property_list(this);
		}
	}

	public final Drop_search_property_listContext drop_search_property_list() throws RecognitionException {
		Drop_search_property_listContext _localctx = new Drop_search_property_listContext(_ctx, getState());
		enterRule(_localctx, 238, RULE_drop_search_property_list);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2581);
			match(DROP);
			setState(2582);
			match(SEARCH);
			setState(2583);
			match(PROPERTY);
			setState(2584);
			match(LIST);
			setState(2585);
			((Drop_search_property_listContext)_localctx).property_list_name = id();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Drop_security_policyContext extends ParserRuleContext {
		public IdContext schema_name;
		public IdContext security_policy_name;
		public TerminalNode DROP() { return getToken(TSqlParser.DROP, 0); }
		public TerminalNode SECURITY() { return getToken(TSqlParser.SECURITY, 0); }
		public TerminalNode POLICY() { return getToken(TSqlParser.POLICY, 0); }
		public List id() {
			return getRuleContexts(IdContext.class);
		}
		public IdContext id(int i) {
			return getRuleContext(IdContext.class,i);
		}
		public TerminalNode IF() { return getToken(TSqlParser.IF, 0); }
		public TerminalNode EXISTS() { return getToken(TSqlParser.EXISTS, 0); }
		public TerminalNode DOT() { return getToken(TSqlParser.DOT, 0); }
		public Drop_security_policyContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_drop_security_policy; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterDrop_security_policy(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitDrop_security_policy(this);
		}
	}

	public final Drop_security_policyContext drop_security_policy() throws RecognitionException {
		Drop_security_policyContext _localctx = new Drop_security_policyContext(_ctx, getState());
		enterRule(_localctx, 240, RULE_drop_security_policy);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2587);
			match(DROP);
			setState(2588);
			match(SECURITY);
			setState(2589);
			match(POLICY);
			setState(2592);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==IF) {
				{
				setState(2590);
				match(IF);
				setState(2591);
				match(EXISTS);
				}
			}

			setState(2597);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,186,_ctx) ) {
			case 1:
				{
				setState(2594);
				((Drop_security_policyContext)_localctx).schema_name = id();
				setState(2595);
				match(DOT);
				}
				break;
			}
			setState(2599);
			((Drop_security_policyContext)_localctx).security_policy_name = id();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Drop_sequenceContext extends ParserRuleContext {
		public IdContext database_name;
		public IdContext schema_name;
		public IdContext sequence_name;
		public TerminalNode DROP() { return getToken(TSqlParser.DROP, 0); }
		public TerminalNode SEQUENCE() { return getToken(TSqlParser.SEQUENCE, 0); }
		public TerminalNode IF() { return getToken(TSqlParser.IF, 0); }
		public TerminalNode EXISTS() { return getToken(TSqlParser.EXISTS, 0); }
		public List id() {
			return getRuleContexts(IdContext.class);
		}
		public IdContext id(int i) {
			return getRuleContext(IdContext.class,i);
		}
		public TerminalNode COMMA() { return getToken(TSqlParser.COMMA, 0); }
		public List DOT() { return getTokens(TSqlParser.DOT); }
		public TerminalNode DOT(int i) {
			return getToken(TSqlParser.DOT, i);
		}
		public Drop_sequenceContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_drop_sequence; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterDrop_sequence(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitDrop_sequence(this);
		}
	}

	public final Drop_sequenceContext drop_sequence() throws RecognitionException {
		Drop_sequenceContext _localctx = new Drop_sequenceContext(_ctx, getState());
		enterRule(_localctx, 242, RULE_drop_sequence);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2601);
			match(DROP);
			setState(2602);
			match(SEQUENCE);
			setState(2605);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,187,_ctx) ) {
			case 1:
				{
				setState(2603);
				match(IF);
				setState(2604);
				match(EXISTS);
				}
				break;
			}
			setState(2621);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,191,_ctx) ) {
			case 1:
				{
				setState(2608);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==COMMA) {
					{
					setState(2607);
					match(COMMA);
					}
				}

				setState(2613);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,189,_ctx) ) {
				case 1:
					{
					setState(2610);
					((Drop_sequenceContext)_localctx).database_name = id();
					setState(2611);
					match(DOT);
					}
					break;
				}
				setState(2618);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,190,_ctx) ) {
				case 1:
					{
					setState(2615);
					((Drop_sequenceContext)_localctx).schema_name = id();
					setState(2616);
					match(DOT);
					}
					break;
				}
				setState(2620);
				((Drop_sequenceContext)_localctx).sequence_name = id();
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Drop_server_auditContext extends ParserRuleContext {
		public IdContext audit_name;
		public TerminalNode DROP() { return getToken(TSqlParser.DROP, 0); }
		public TerminalNode SERVER() { return getToken(TSqlParser.SERVER, 0); }
		public TerminalNode AUDIT() { return getToken(TSqlParser.AUDIT, 0); }
		public IdContext id() {
			return getRuleContext(IdContext.class,0);
		}
		public Drop_server_auditContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_drop_server_audit; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterDrop_server_audit(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitDrop_server_audit(this);
		}
	}

	public final Drop_server_auditContext drop_server_audit() throws RecognitionException {
		Drop_server_auditContext _localctx = new Drop_server_auditContext(_ctx, getState());
		enterRule(_localctx, 244, RULE_drop_server_audit);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2623);
			match(DROP);
			setState(2624);
			match(SERVER);
			setState(2625);
			match(AUDIT);
			setState(2626);
			((Drop_server_auditContext)_localctx).audit_name = id();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Drop_server_audit_specificationContext extends ParserRuleContext {
		public IdContext audit_specification_name;
		public TerminalNode DROP() { return getToken(TSqlParser.DROP, 0); }
		public TerminalNode SERVER() { return getToken(TSqlParser.SERVER, 0); }
		public TerminalNode AUDIT() { return getToken(TSqlParser.AUDIT, 0); }
		public TerminalNode SPECIFICATION() { return getToken(TSqlParser.SPECIFICATION, 0); }
		public IdContext id() {
			return getRuleContext(IdContext.class,0);
		}
		public Drop_server_audit_specificationContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_drop_server_audit_specification; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterDrop_server_audit_specification(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitDrop_server_audit_specification(this);
		}
	}

	public final Drop_server_audit_specificationContext drop_server_audit_specification() throws RecognitionException {
		Drop_server_audit_specificationContext _localctx = new Drop_server_audit_specificationContext(_ctx, getState());
		enterRule(_localctx, 246, RULE_drop_server_audit_specification);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2628);
			match(DROP);
			setState(2629);
			match(SERVER);
			setState(2630);
			match(AUDIT);
			setState(2631);
			match(SPECIFICATION);
			setState(2632);
			((Drop_server_audit_specificationContext)_localctx).audit_specification_name = id();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Drop_server_roleContext extends ParserRuleContext {
		public IdContext role_name;
		public TerminalNode DROP() { return getToken(TSqlParser.DROP, 0); }
		public TerminalNode SERVER() { return getToken(TSqlParser.SERVER, 0); }
		public TerminalNode ROLE() { return getToken(TSqlParser.ROLE, 0); }
		public IdContext id() {
			return getRuleContext(IdContext.class,0);
		}
		public Drop_server_roleContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_drop_server_role; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterDrop_server_role(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitDrop_server_role(this);
		}
	}

	public final Drop_server_roleContext drop_server_role() throws RecognitionException {
		Drop_server_roleContext _localctx = new Drop_server_roleContext(_ctx, getState());
		enterRule(_localctx, 248, RULE_drop_server_role);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2634);
			match(DROP);
			setState(2635);
			match(SERVER);
			setState(2636);
			match(ROLE);
			setState(2637);
			((Drop_server_roleContext)_localctx).role_name = id();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Drop_serviceContext extends ParserRuleContext {
		public IdContext dropped_service_name;
		public TerminalNode DROP() { return getToken(TSqlParser.DROP, 0); }
		public TerminalNode SERVICE() { return getToken(TSqlParser.SERVICE, 0); }
		public IdContext id() {
			return getRuleContext(IdContext.class,0);
		}
		public Drop_serviceContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_drop_service; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterDrop_service(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitDrop_service(this);
		}
	}

	public final Drop_serviceContext drop_service() throws RecognitionException {
		Drop_serviceContext _localctx = new Drop_serviceContext(_ctx, getState());
		enterRule(_localctx, 250, RULE_drop_service);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2639);
			match(DROP);
			setState(2640);
			match(SERVICE);
			setState(2641);
			((Drop_serviceContext)_localctx).dropped_service_name = id();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Drop_signatureContext extends ParserRuleContext {
		public IdContext schema_name;
		public IdContext module_name;
		public IdContext cert_name;
		public IdContext Asym_key_name;
		public TerminalNode DROP() { return getToken(TSqlParser.DROP, 0); }
		public TerminalNode SIGNATURE() { return getToken(TSqlParser.SIGNATURE, 0); }
		public TerminalNode FROM() { return getToken(TSqlParser.FROM, 0); }
		public TerminalNode BY() { return getToken(TSqlParser.BY, 0); }
		public List id() {
			return getRuleContexts(IdContext.class);
		}
		public IdContext id(int i) {
			return getRuleContext(IdContext.class,i);
		}
		public TerminalNode COUNTER() { return getToken(TSqlParser.COUNTER, 0); }
		public TerminalNode DOT() { return getToken(TSqlParser.DOT, 0); }
		public List CERTIFICATE() { return getTokens(TSqlParser.CERTIFICATE); }
		public TerminalNode CERTIFICATE(int i) {
			return getToken(TSqlParser.CERTIFICATE, i);
		}
		public List ASYMMETRIC() { return getTokens(TSqlParser.ASYMMETRIC); }
		public TerminalNode ASYMMETRIC(int i) {
			return getToken(TSqlParser.ASYMMETRIC, i);
		}
		public List KEY() { return getTokens(TSqlParser.KEY); }
		public TerminalNode KEY(int i) {
			return getToken(TSqlParser.KEY, i);
		}
		public List COMMA() { return getTokens(TSqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(TSqlParser.COMMA, i);
		}
		public Drop_signatureContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_drop_signature; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterDrop_signature(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitDrop_signature(this);
		}
	}

	public final Drop_signatureContext drop_signature() throws RecognitionException {
		Drop_signatureContext _localctx = new Drop_signatureContext(_ctx, getState());
		enterRule(_localctx, 252, RULE_drop_signature);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2643);
			match(DROP);
			setState(2645);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==COUNTER) {
				{
				setState(2644);
				match(COUNTER);
				}
			}

			setState(2647);
			match(SIGNATURE);
			setState(2648);
			match(FROM);
			setState(2652);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,193,_ctx) ) {
			case 1:
				{
				setState(2649);
				((Drop_signatureContext)_localctx).schema_name = id();
				setState(2650);
				match(DOT);
				}
				break;
			}
			setState(2654);
			((Drop_signatureContext)_localctx).module_name = id();
			setState(2655);
			match(BY);
			setState(2667); 
			_errHandler.sync(this);
			_la = _input.LA(1);
			do {
				{
				setState(2667);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,196,_ctx) ) {
				case 1:
					{
					setState(2657);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==COMMA) {
						{
						setState(2656);
						match(COMMA);
						}
					}

					setState(2659);
					match(CERTIFICATE);
					setState(2660);
					((Drop_signatureContext)_localctx).cert_name = id();
					}
					break;
				case 2:
					{
					setState(2662);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==COMMA) {
						{
						setState(2661);
						match(COMMA);
						}
					}

					setState(2664);
					match(ASYMMETRIC);
					setState(2665);
					match(KEY);
					setState(2666);
					((Drop_signatureContext)_localctx).Asym_key_name = id();
					}
					break;
				}
				}
				setState(2669); 
				_errHandler.sync(this);
				_la = _input.LA(1);
			} while ( _la==ASYMMETRIC || _la==CERTIFICATE || _la==COMMA );
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Drop_statistics_name_azure_dw_and_pdwContext extends ParserRuleContext {
		public IdContext schema_name;
		public IdContext object_name;
		public IdContext statistics_name;
		public TerminalNode DROP() { return getToken(TSqlParser.DROP, 0); }
		public TerminalNode STATISTICS() { return getToken(TSqlParser.STATISTICS, 0); }
		public List DOT() { return getTokens(TSqlParser.DOT); }
		public TerminalNode DOT(int i) {
			return getToken(TSqlParser.DOT, i);
		}
		public List id() {
			return getRuleContexts(IdContext.class);
		}
		public IdContext id(int i) {
			return getRuleContext(IdContext.class,i);
		}
		public Drop_statistics_name_azure_dw_and_pdwContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_drop_statistics_name_azure_dw_and_pdw; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterDrop_statistics_name_azure_dw_and_pdw(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitDrop_statistics_name_azure_dw_and_pdw(this);
		}
	}

	public final Drop_statistics_name_azure_dw_and_pdwContext drop_statistics_name_azure_dw_and_pdw() throws RecognitionException {
		Drop_statistics_name_azure_dw_and_pdwContext _localctx = new Drop_statistics_name_azure_dw_and_pdwContext(_ctx, getState());
		enterRule(_localctx, 254, RULE_drop_statistics_name_azure_dw_and_pdw);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2671);
			match(DROP);
			setState(2672);
			match(STATISTICS);
			setState(2676);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,198,_ctx) ) {
			case 1:
				{
				setState(2673);
				((Drop_statistics_name_azure_dw_and_pdwContext)_localctx).schema_name = id();
				setState(2674);
				match(DOT);
				}
				break;
			}
			setState(2678);
			((Drop_statistics_name_azure_dw_and_pdwContext)_localctx).object_name = id();
			setState(2679);
			match(DOT);
			setState(2680);
			((Drop_statistics_name_azure_dw_and_pdwContext)_localctx).statistics_name = id();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Drop_symmetric_keyContext extends ParserRuleContext {
		public IdContext symmetric_key_name;
		public TerminalNode DROP() { return getToken(TSqlParser.DROP, 0); }
		public TerminalNode SYMMETRIC() { return getToken(TSqlParser.SYMMETRIC, 0); }
		public List KEY() { return getTokens(TSqlParser.KEY); }
		public TerminalNode KEY(int i) {
			return getToken(TSqlParser.KEY, i);
		}
		public IdContext id() {
			return getRuleContext(IdContext.class,0);
		}
		public TerminalNode REMOVE() { return getToken(TSqlParser.REMOVE, 0); }
		public TerminalNode PROVIDER() { return getToken(TSqlParser.PROVIDER, 0); }
		public Drop_symmetric_keyContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_drop_symmetric_key; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterDrop_symmetric_key(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitDrop_symmetric_key(this);
		}
	}

	public final Drop_symmetric_keyContext drop_symmetric_key() throws RecognitionException {
		Drop_symmetric_keyContext _localctx = new Drop_symmetric_keyContext(_ctx, getState());
		enterRule(_localctx, 256, RULE_drop_symmetric_key);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2682);
			match(DROP);
			setState(2683);
			match(SYMMETRIC);
			setState(2684);
			match(KEY);
			setState(2685);
			((Drop_symmetric_keyContext)_localctx).symmetric_key_name = id();
			setState(2689);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,199,_ctx) ) {
			case 1:
				{
				setState(2686);
				match(REMOVE);
				setState(2687);
				match(PROVIDER);
				setState(2688);
				match(KEY);
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Drop_synonymContext extends ParserRuleContext {
		public IdContext schema;
		public IdContext synonym_name;
		public TerminalNode DROP() { return getToken(TSqlParser.DROP, 0); }
		public TerminalNode SYNONYM() { return getToken(TSqlParser.SYNONYM, 0); }
		public List id() {
			return getRuleContexts(IdContext.class);
		}
		public IdContext id(int i) {
			return getRuleContext(IdContext.class,i);
		}
		public TerminalNode IF() { return getToken(TSqlParser.IF, 0); }
		public TerminalNode EXISTS() { return getToken(TSqlParser.EXISTS, 0); }
		public TerminalNode DOT() { return getToken(TSqlParser.DOT, 0); }
		public Drop_synonymContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_drop_synonym; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterDrop_synonym(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitDrop_synonym(this);
		}
	}

	public final Drop_synonymContext drop_synonym() throws RecognitionException {
		Drop_synonymContext _localctx = new Drop_synonymContext(_ctx, getState());
		enterRule(_localctx, 258, RULE_drop_synonym);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2691);
			match(DROP);
			setState(2692);
			match(SYNONYM);
			setState(2695);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==IF) {
				{
				setState(2693);
				match(IF);
				setState(2694);
				match(EXISTS);
				}
			}

			setState(2700);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,201,_ctx) ) {
			case 1:
				{
				setState(2697);
				((Drop_synonymContext)_localctx).schema = id();
				setState(2698);
				match(DOT);
				}
				break;
			}
			setState(2702);
			((Drop_synonymContext)_localctx).synonym_name = id();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Drop_userContext extends ParserRuleContext {
		public IdContext user_name;
		public TerminalNode DROP() { return getToken(TSqlParser.DROP, 0); }
		public TerminalNode USER() { return getToken(TSqlParser.USER, 0); }
		public IdContext id() {
			return getRuleContext(IdContext.class,0);
		}
		public TerminalNode IF() { return getToken(TSqlParser.IF, 0); }
		public TerminalNode EXISTS() { return getToken(TSqlParser.EXISTS, 0); }
		public Drop_userContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_drop_user; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterDrop_user(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitDrop_user(this);
		}
	}

	public final Drop_userContext drop_user() throws RecognitionException {
		Drop_userContext _localctx = new Drop_userContext(_ctx, getState());
		enterRule(_localctx, 260, RULE_drop_user);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2704);
			match(DROP);
			setState(2705);
			match(USER);
			setState(2708);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==IF) {
				{
				setState(2706);
				match(IF);
				setState(2707);
				match(EXISTS);
				}
			}

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

	public static class Drop_workload_groupContext extends ParserRuleContext {
		public IdContext group_name;
		public TerminalNode DROP() { return getToken(TSqlParser.DROP, 0); }
		public TerminalNode WORKLOAD() { return getToken(TSqlParser.WORKLOAD, 0); }
		public TerminalNode GROUP() { return getToken(TSqlParser.GROUP, 0); }
		public IdContext id() {
			return getRuleContext(IdContext.class,0);
		}
		public Drop_workload_groupContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_drop_workload_group; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterDrop_workload_group(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitDrop_workload_group(this);
		}
	}

	public final Drop_workload_groupContext drop_workload_group() throws RecognitionException {
		Drop_workload_groupContext _localctx = new Drop_workload_groupContext(_ctx, getState());
		enterRule(_localctx, 262, RULE_drop_workload_group);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2712);
			match(DROP);
			setState(2713);
			match(WORKLOAD);
			setState(2714);
			match(GROUP);
			setState(2715);
			((Drop_workload_groupContext)_localctx).group_name = id();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Drop_xml_schema_collectionContext extends ParserRuleContext {
		public IdContext relational_schema;
		public IdContext sql_identifier;
		public TerminalNode DROP() { return getToken(TSqlParser.DROP, 0); }
		public TerminalNode XML() { return getToken(TSqlParser.XML, 0); }
		public TerminalNode SCHEMA() { return getToken(TSqlParser.SCHEMA, 0); }
		public TerminalNode COLLECTION() { return getToken(TSqlParser.COLLECTION, 0); }
		public List id() {
			return getRuleContexts(IdContext.class);
		}
		public IdContext id(int i) {
			return getRuleContext(IdContext.class,i);
		}
		public TerminalNode DOT() { return getToken(TSqlParser.DOT, 0); }
		public Drop_xml_schema_collectionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_drop_xml_schema_collection; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterDrop_xml_schema_collection(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitDrop_xml_schema_collection(this);
		}
	}

	public final Drop_xml_schema_collectionContext drop_xml_schema_collection() throws RecognitionException {
		Drop_xml_schema_collectionContext _localctx = new Drop_xml_schema_collectionContext(_ctx, getState());
		enterRule(_localctx, 264, RULE_drop_xml_schema_collection);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2717);
			match(DROP);
			setState(2718);
			match(XML);
			setState(2719);
			match(SCHEMA);
			setState(2720);
			match(COLLECTION);
			setState(2724);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,203,_ctx) ) {
			case 1:
				{
				setState(2721);
				((Drop_xml_schema_collectionContext)_localctx).relational_schema = id();
				setState(2722);
				match(DOT);
				}
				break;
			}
			setState(2726);
			((Drop_xml_schema_collectionContext)_localctx).sql_identifier = id();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Disable_triggerContext extends ParserRuleContext {
		public IdContext schema_name;
		public IdContext trigger_name;
		public IdContext schema_id;
		public IdContext object_name;
		public TerminalNode DISABLE() { return getToken(TSqlParser.DISABLE, 0); }
		public TerminalNode TRIGGER() { return getToken(TSqlParser.TRIGGER, 0); }
		public TerminalNode ON() { return getToken(TSqlParser.ON, 0); }
		public List ALL() { return getTokens(TSqlParser.ALL); }
		public TerminalNode ALL(int i) {
			return getToken(TSqlParser.ALL, i);
		}
		public TerminalNode DATABASE() { return getToken(TSqlParser.DATABASE, 0); }
		public TerminalNode SERVER() { return getToken(TSqlParser.SERVER, 0); }
		public List id() {
			return getRuleContexts(IdContext.class);
		}
		public IdContext id(int i) {
			return getRuleContext(IdContext.class,i);
		}
		public List DOT() { return getTokens(TSqlParser.DOT); }
		public TerminalNode DOT(int i) {
			return getToken(TSqlParser.DOT, i);
		}
		public List COMMA() { return getTokens(TSqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(TSqlParser.COMMA, i);
		}
		public Disable_triggerContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_disable_trigger; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterDisable_trigger(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitDisable_trigger(this);
		}
	}

	public final Disable_triggerContext disable_trigger() throws RecognitionException {
		Disable_triggerContext _localctx = new Disable_triggerContext(_ctx, getState());
		enterRule(_localctx, 266, RULE_disable_trigger);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2728);
			match(DISABLE);
			setState(2729);
			match(TRIGGER);
			setState(2744);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case CALLED:
			case DATA_COMPRESSION:
			case EVENTDATA:
			case FILENAME:
			case FILLFACTOR:
			case FORCESEEK:
			case INIT:
			case KEY:
			case MASTER:
			case MAX_MEMORY:
			case OFFSETS:
			case PAGE:
			case PUBLIC:
			case R:
			case RAW:
			case RETURN:
			case RETURNS:
			case ROWCOUNT:
			case SAFETY:
			case SERVER:
			case SID:
			case SOURCE:
			case STATE:
			case START:
			case TARGET:
			case ABSOLUTE:
			case ACCENT_SENSITIVITY:
			case ACTION:
			case ACTIVATION:
			case ACTIVE:
			case ADDRESS:
			case AES_128:
			case AES_192:
			case AES_256:
			case AFFINITY:
			case AFTER:
			case AGGREGATE:
			case ALGORITHM:
			case ALLOW_ENCRYPTED_VALUE_MODIFICATIONS:
			case ALLOW_SNAPSHOT_ISOLATION:
			case ALLOWED:
			case ANSI_NULL_DEFAULT:
			case ANSI_NULLS:
			case ANSI_PADDING:
			case ANSI_WARNINGS:
			case APPLICATION_LOG:
			case APPLY:
			case ARITHABORT:
			case ASSEMBLY:
			case AUDIT:
			case AUDIT_GUID:
			case AUTO:
			case AUTO_CLEANUP:
			case AUTO_CLOSE:
			case AUTO_CREATE_STATISTICS:
			case AUTO_SHRINK:
			case AUTO_UPDATE_STATISTICS:
			case AUTO_UPDATE_STATISTICS_ASYNC:
			case AVAILABILITY:
			case AVG:
			case BACKUP_PRIORITY:
			case BEGIN_DIALOG:
			case BIGINT:
			case BINARY_BASE64:
			case BINARY_CHECKSUM:
			case BINDING:
			case BLOB_STORAGE:
			case BROKER:
			case BROKER_INSTANCE:
			case BULK_LOGGED:
			case CALLER:
			case CAP_CPU_PERCENT:
			case CAST:
			case CATALOG:
			case CATCH:
			case CHANGE_RETENTION:
			case CHANGE_TRACKING:
			case CHECKSUM:
			case CHECKSUM_AGG:
			case CLEANUP:
			case COLLECTION:
			case COLUMN_MASTER_KEY:
			case COMMITTED:
			case COMPATIBILITY_LEVEL:
			case CONCAT:
			case CONCAT_NULL_YIELDS_NULL:
			case CONTENT:
			case CONTROL:
			case COOKIE:
			case COUNT:
			case COUNT_BIG:
			case COUNTER:
			case CPU:
			case CREATE_NEW:
			case CREATION_DISPOSITION:
			case CREDENTIAL:
			case CRYPTOGRAPHIC:
			case CURSOR_CLOSE_ON_COMMIT:
			case CURSOR_DEFAULT:
			case DATE_CORRELATION_OPTIMIZATION:
			case DATEADD:
			case DATEDIFF:
			case DATENAME:
			case DATEPART:
			case DAYS:
			case DB_CHAINING:
			case DB_FAILOVER:
			case DECRYPTION:
			case DEFAULT_DOUBLE_QUOTE:
			case DEFAULT_FULLTEXT_LANGUAGE:
			case DEFAULT_LANGUAGE:
			case DELAY:
			case DELAYED_DURABILITY:
			case DELETED:
			case DENSE_RANK:
			case DEPENDENTS:
			case DES:
			case DESCRIPTION:
			case DESX:
			case DHCP:
			case DIALOG:
			case DIRECTORY_NAME:
			case DISABLE:
			case DISABLE_BROKER:
			case DISABLED:
			case DISK_DRIVE:
			case DOCUMENT:
			case DYNAMIC:
			case EMERGENCY:
			case EMPTY:
			case ENABLE:
			case ENABLE_BROKER:
			case ENCRYPTED_VALUE:
			case ENCRYPTION:
			case ENDPOINT_URL:
			case ERROR_BROKER_CONVERSATIONS:
			case EXCLUSIVE:
			case EXECUTABLE:
			case EXIST:
			case EXPAND:
			case EXPIRY_DATE:
			case EXPLICIT:
			case FAIL_OPERATION:
			case FAILOVER_MODE:
			case FAILURE:
			case FAILURE_CONDITION_LEVEL:
			case FAST:
			case FAST_FORWARD:
			case FILEGROUP:
			case FILEGROWTH:
			case FILEPATH:
			case FILESTREAM:
			case FILTER:
			case FIRST:
			case FIRST_VALUE:
			case FOLLOWING:
			case FORCE:
			case FORCE_FAILOVER_ALLOW_DATA_LOSS:
			case FORCED:
			case FORMAT:
			case FORWARD_ONLY:
			case FULLSCAN:
			case FULLTEXT:
			case GB:
			case GETDATE:
			case GETUTCDATE:
			case GLOBAL:
			case GO:
			case GROUP_MAX_REQUESTS:
			case GROUPING:
			case GROUPING_ID:
			case HADR:
			case HASH:
			case HEALTH_CHECK_TIMEOUT:
			case HIGH:
			case HONOR_BROKER_PRIORITY:
			case HOURS:
			case IDENTITY_VALUE:
			case IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX:
			case IMMEDIATE:
			case IMPERSONATE:
			case IMPORTANCE:
			case INCREMENTAL:
			case INITIATOR:
			case INPUT:
			case INSENSITIVE:
			case INSERTED:
			case INT:
			case IP:
			case ISOLATION:
			case KB:
			case KEEP:
			case KEEPFIXED:
			case KEY_SOURCE:
			case KEYS:
			case KEYSET:
			case LAG:
			case LAST:
			case LAST_VALUE:
			case LEAD:
			case LEVEL:
			case LIST:
			case LISTENER:
			case LISTENER_URL:
			case LOB_COMPACTION:
			case LOCAL:
			case LOCATION:
			case LOCK:
			case LOCK_ESCALATION:
			case LOGIN:
			case LOOP:
			case LOW:
			case MANUAL:
			case MARK:
			case MATERIALIZED:
			case MAX:
			case MAX_CPU_PERCENT:
			case MAX_DOP:
			case MAX_FILES:
			case MAX_IOPS_PER_VOLUME:
			case MAX_MEMORY_PERCENT:
			case MAX_PROCESSES:
			case MAX_QUEUE_READERS:
			case MAX_ROLLOVER_FILES:
			case MAXDOP:
			case MAXRECURSION:
			case MAXSIZE:
			case MB:
			case MEDIUM:
			case MEMORY_OPTIMIZED_DATA:
			case MESSAGE:
			case MIN:
			case MIN_ACTIVE_ROWVERSION:
			case MIN_CPU_PERCENT:
			case MIN_IOPS_PER_VOLUME:
			case MIN_MEMORY_PERCENT:
			case MINUTES:
			case MIRROR_ADDRESS:
			case MIXED_PAGE_ALLOCATION:
			case MODE:
			case MODIFY:
			case MOVE:
			case MULTI_USER:
			case NAME:
			case NESTED_TRIGGERS:
			case NEW_ACCOUNT:
			case NEW_BROKER:
			case NEW_PASSWORD:
			case NEXT:
			case NO:
			case NO_TRUNCATE:
			case NO_WAIT:
			case NOCOUNT:
			case NODES:
			case NOEXPAND:
			case NON_TRANSACTED_ACCESS:
			case NORECOMPUTE:
			case NORECOVERY:
			case NOWAIT:
			case NTILE:
			case NUMANODE:
			case NUMBER:
			case NUMERIC_ROUNDABORT:
			case OBJECT:
			case OFFLINE:
			case OFFSET:
			case OLD_ACCOUNT:
			case ONLINE:
			case ONLY:
			case OPEN_EXISTING:
			case OPTIMISTIC:
			case OPTIMIZE:
			case OUT:
			case OUTPUT:
			case OWNER:
			case PAGE_VERIFY:
			case PARAMETERIZATION:
			case PARTITION:
			case PARTITIONS:
			case PARTNER:
			case PATH:
			case POISON_MESSAGE_HANDLING:
			case POOL:
			case PORT:
			case PRECEDING:
			case PRIMARY_ROLE:
			case PRIOR:
			case PRIORITY:
			case PRIORITY_LEVEL:
			case PRIVATE:
			case PRIVATE_KEY:
			case PRIVILEGES:
			case PROCEDURE_NAME:
			case PROPERTY:
			case PROVIDER:
			case PROVIDER_KEY_NAME:
			case QUERY:
			case QUEUE:
			case QUEUE_DELAY:
			case QUOTED_IDENTIFIER:
			case RANGE:
			case RANK:
			case RC2:
			case RC4:
			case RC4_128:
			case READ_COMMITTED_SNAPSHOT:
			case READ_ONLY:
			case READ_ONLY_ROUTING_LIST:
			case READ_WRITE:
			case READONLY:
			case REBUILD:
			case RECEIVE:
			case RECOMPILE:
			case RECOVERY:
			case RECURSIVE_TRIGGERS:
			case RELATIVE:
			case REMOTE:
			case REMOTE_SERVICE_NAME:
			case REMOVE:
			case REORGANIZE:
			case REPEATABLE:
			case REPLICA:
			case REQUEST_MAX_CPU_TIME_SEC:
			case REQUEST_MAX_MEMORY_GRANT_PERCENT:
			case REQUEST_MEMORY_GRANT_TIMEOUT_SEC:
			case REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT:
			case RESERVE_DISK_SPACE:
			case RESOURCE:
			case RESOURCE_MANAGER_LOCATION:
			case RESTRICTED_USER:
			case RETENTION:
			case ROBUST:
			case ROOT:
			case ROUTE:
			case ROW:
			case ROW_NUMBER:
			case ROWGUID:
			case ROWS:
			case SAMPLE:
			case SCHEMABINDING:
			case SCOPED:
			case SCROLL:
			case SCROLL_LOCKS:
			case SEARCH:
			case SECONDARY:
			case SECONDARY_ONLY:
			case SECONDARY_ROLE:
			case SECONDS:
			case SECRET:
			case SECURITY_LOG:
			case SEEDING_MODE:
			case SELF:
			case SEMI_SENSITIVE:
			case SEND:
			case SENT:
			case SERIALIZABLE:
			case SESSION_TIMEOUT:
			case SETERROR:
			case SHARE:
			case SHOWPLAN:
			case SIGNATURE:
			case SIMPLE:
			case SINGLE_USER:
			case SIZE:
			case SMALLINT:
			case SNAPSHOT:
			case SPATIAL_WINDOW_MAX_CELLS:
			case STANDBY:
			case START_DATE:
			case STATIC:
			case STATS_STREAM:
			case STATUS:
			case STDEV:
			case STDEVP:
			case STOPLIST:
			case STUFF:
			case SUBJECT:
			case SUM:
			case SUSPEND:
			case SYMMETRIC:
			case SYNCHRONOUS_COMMIT:
			case SYNONYM:
			case TAKE:
			case TARGET_RECOVERY_TIME:
			case TB:
			case TEXTIMAGE_ON:
			case THROW:
			case TIES:
			case TIME:
			case TIMEOUT:
			case TIMER:
			case TINYINT:
			case TORN_PAGE_DETECTION:
			case TRANSFORM_NOISE_WORDS:
			case TRIPLE_DES:
			case TRIPLE_DES_3KEY:
			case TRUSTWORTHY:
			case TRY:
			case TSQL:
			case TWO_DIGIT_YEAR_CUTOFF:
			case TYPE:
			case TYPE_WARNING:
			case UNBOUNDED:
			case UNCOMMITTED:
			case UNKNOWN:
			case UNLIMITED:
			case USING:
			case VALID_XML:
			case VALIDATION:
			case VALUE:
			case VAR:
			case VARP:
			case VIEW_METADATA:
			case VIEWS:
			case WAIT:
			case WELL_FORMED_XML:
			case WORK:
			case WORKLOAD:
			case XML:
			case XMLNAMESPACES:
			case DOUBLE_QUOTE_ID:
			case SQUARE_BRACKET_ID:
			case ID:
			case COMMA:
				{
				setState(2739); 
				_errHandler.sync(this);
				_la = _input.LA(1);
				do {
					{
					{
					setState(2731);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==COMMA) {
						{
						setState(2730);
						match(COMMA);
						}
					}

					setState(2736);
					_errHandler.sync(this);
					switch ( getInterpreter().adaptivePredict(_input,205,_ctx) ) {
					case 1:
						{
						setState(2733);
						((Disable_triggerContext)_localctx).schema_name = id();
						setState(2734);
						match(DOT);
						}
						break;
					}
					setState(2738);
					((Disable_triggerContext)_localctx).trigger_name = id();
					}
					}
					setState(2741); 
					_errHandler.sync(this);
					_la = _input.LA(1);
				} while ( _la==CALLED || ((((_la - 81)) & ~0x3f) == 0 && ((1L << (_la - 81)) & ((1L << (DATA_COMPRESSION - 81)) | (1L << (EVENTDATA - 81)) | (1L << (FILENAME - 81)) | (1L << (FILLFACTOR - 81)) | (1L << (FORCESEEK - 81)))) != 0) || ((((_la - 159)) & ~0x3f) == 0 && ((1L << (_la - 159)) & ((1L << (INIT - 159)) | (1L << (KEY - 159)) | (1L << (MASTER - 159)) | (1L << (MAX_MEMORY - 159)))) != 0) || ((((_la - 226)) & ~0x3f) == 0 && ((1L << (_la - 226)) & ((1L << (OFFSETS - 226)) | (1L << (PAGE - 226)) | (1L << (PUBLIC - 226)) | (1L << (R - 226)) | (1L << (RAW - 226)) | (1L << (RETURN - 226)) | (1L << (RETURNS - 226)) | (1L << (ROWCOUNT - 226)))) != 0) || ((((_la - 296)) & ~0x3f) == 0 && ((1L << (_la - 296)) & ((1L << (SAFETY - 296)) | (1L << (SERVER - 296)) | (1L << (SID - 296)) | (1L << (SOURCE - 296)) | (1L << (STATE - 296)) | (1L << (START - 296)) | (1L << (TARGET - 296)))) != 0) || ((((_la - 384)) & ~0x3f) == 0 && ((1L << (_la - 384)) & ((1L << (ABSOLUTE - 384)) | (1L << (ACCENT_SENSITIVITY - 384)) | (1L << (ACTION - 384)) | (1L << (ACTIVATION - 384)) | (1L << (ACTIVE - 384)) | (1L << (ADDRESS - 384)) | (1L << (AES_128 - 384)) | (1L << (AES_192 - 384)) | (1L << (AES_256 - 384)) | (1L << (AFFINITY - 384)) | (1L << (AFTER - 384)) | (1L << (AGGREGATE - 384)) | (1L << (ALGORITHM - 384)) | (1L << (ALLOW_ENCRYPTED_VALUE_MODIFICATIONS - 384)) | (1L << (ALLOW_SNAPSHOT_ISOLATION - 384)) | (1L << (ALLOWED - 384)) | (1L << (ANSI_NULL_DEFAULT - 384)) | (1L << (ANSI_NULLS - 384)) | (1L << (ANSI_PADDING - 384)) | (1L << (ANSI_WARNINGS - 384)) | (1L << (APPLICATION_LOG - 384)) | (1L << (APPLY - 384)) | (1L << (ARITHABORT - 384)) | (1L << (ASSEMBLY - 384)) | (1L << (AUDIT - 384)) | (1L << (AUDIT_GUID - 384)) | (1L << (AUTO - 384)) | (1L << (AUTO_CLEANUP - 384)) | (1L << (AUTO_CLOSE - 384)) | (1L << (AUTO_CREATE_STATISTICS - 384)) | (1L << (AUTO_SHRINK - 384)) | (1L << (AUTO_UPDATE_STATISTICS - 384)) | (1L << (AUTO_UPDATE_STATISTICS_ASYNC - 384)) | (1L << (AVAILABILITY - 384)) | (1L << (AVG - 384)) | (1L << (BACKUP_PRIORITY - 384)) | (1L << (BEGIN_DIALOG - 384)) | (1L << (BIGINT - 384)) | (1L << (BINARY_BASE64 - 384)) | (1L << (BINARY_CHECKSUM - 384)) | (1L << (BINDING - 384)) | (1L << (BLOB_STORAGE - 384)) | (1L << (BROKER - 384)) | (1L << (BROKER_INSTANCE - 384)) | (1L << (BULK_LOGGED - 384)) | (1L << (CALLER - 384)) | (1L << (CAP_CPU_PERCENT - 384)) | (1L << (CAST - 384)) | (1L << (CATALOG - 384)) | (1L << (CATCH - 384)) | (1L << (CHANGE_RETENTION - 384)) | (1L << (CHANGE_TRACKING - 384)) | (1L << (CHECKSUM - 384)) | (1L << (CHECKSUM_AGG - 384)) | (1L << (CLEANUP - 384)) | (1L << (COLLECTION - 384)) | (1L << (COLUMN_MASTER_KEY - 384)) | (1L << (COMMITTED - 384)) | (1L << (COMPATIBILITY_LEVEL - 384)) | (1L << (CONCAT - 384)) | (1L << (CONCAT_NULL_YIELDS_NULL - 384)) | (1L << (CONTENT - 384)) | (1L << (CONTROL - 384)) | (1L << (COOKIE - 384)))) != 0) || ((((_la - 448)) & ~0x3f) == 0 && ((1L << (_la - 448)) & ((1L << (COUNT - 448)) | (1L << (COUNT_BIG - 448)) | (1L << (COUNTER - 448)) | (1L << (CPU - 448)) | (1L << (CREATE_NEW - 448)) | (1L << (CREATION_DISPOSITION - 448)) | (1L << (CREDENTIAL - 448)) | (1L << (CRYPTOGRAPHIC - 448)) | (1L << (CURSOR_CLOSE_ON_COMMIT - 448)) | (1L << (CURSOR_DEFAULT - 448)) | (1L << (DATE_CORRELATION_OPTIMIZATION - 448)) | (1L << (DATEADD - 448)) | (1L << (DATEDIFF - 448)) | (1L << (DATENAME - 448)) | (1L << (DATEPART - 448)) | (1L << (DAYS - 448)) | (1L << (DB_CHAINING - 448)) | (1L << (DB_FAILOVER - 448)) | (1L << (DECRYPTION - 448)) | (1L << (DEFAULT_DOUBLE_QUOTE - 448)) | (1L << (DEFAULT_FULLTEXT_LANGUAGE - 448)) | (1L << (DEFAULT_LANGUAGE - 448)) | (1L << (DELAY - 448)) | (1L << (DELAYED_DURABILITY - 448)) | (1L << (DELETED - 448)) | (1L << (DENSE_RANK - 448)) | (1L << (DEPENDENTS - 448)) | (1L << (DES - 448)) | (1L << (DESCRIPTION - 448)) | (1L << (DESX - 448)) | (1L << (DHCP - 448)) | (1L << (DIALOG - 448)) | (1L << (DIRECTORY_NAME - 448)) | (1L << (DISABLE - 448)) | (1L << (DISABLE_BROKER - 448)) | (1L << (DISABLED - 448)) | (1L << (DISK_DRIVE - 448)) | (1L << (DOCUMENT - 448)) | (1L << (DYNAMIC - 448)) | (1L << (EMERGENCY - 448)) | (1L << (EMPTY - 448)) | (1L << (ENABLE - 448)) | (1L << (ENABLE_BROKER - 448)) | (1L << (ENCRYPTED_VALUE - 448)) | (1L << (ENCRYPTION - 448)) | (1L << (ENDPOINT_URL - 448)) | (1L << (ERROR_BROKER_CONVERSATIONS - 448)) | (1L << (EXCLUSIVE - 448)) | (1L << (EXECUTABLE - 448)) | (1L << (EXIST - 448)) | (1L << (EXPAND - 448)) | (1L << (EXPIRY_DATE - 448)) | (1L << (EXPLICIT - 448)) | (1L << (FAIL_OPERATION - 448)) | (1L << (FAILOVER_MODE - 448)) | (1L << (FAILURE - 448)) | (1L << (FAILURE_CONDITION_LEVEL - 448)) | (1L << (FAST - 448)) | (1L << (FAST_FORWARD - 448)) | (1L << (FILEGROUP - 448)) | (1L << (FILEGROWTH - 448)) | (1L << (FILEPATH - 448)) | (1L << (FILESTREAM - 448)))) != 0) || ((((_la - 512)) & ~0x3f) == 0 && ((1L << (_la - 512)) & ((1L << (FILTER - 512)) | (1L << (FIRST - 512)) | (1L << (FIRST_VALUE - 512)) | (1L << (FOLLOWING - 512)) | (1L << (FORCE - 512)) | (1L << (FORCE_FAILOVER_ALLOW_DATA_LOSS - 512)) | (1L << (FORCED - 512)) | (1L << (FORMAT - 512)) | (1L << (FORWARD_ONLY - 512)) | (1L << (FULLSCAN - 512)) | (1L << (FULLTEXT - 512)) | (1L << (GB - 512)) | (1L << (GETDATE - 512)) | (1L << (GETUTCDATE - 512)) | (1L << (GLOBAL - 512)) | (1L << (GO - 512)) | (1L << (GROUP_MAX_REQUESTS - 512)) | (1L << (GROUPING - 512)) | (1L << (GROUPING_ID - 512)) | (1L << (HADR - 512)) | (1L << (HASH - 512)) | (1L << (HEALTH_CHECK_TIMEOUT - 512)) | (1L << (HIGH - 512)) | (1L << (HONOR_BROKER_PRIORITY - 512)) | (1L << (HOURS - 512)) | (1L << (IDENTITY_VALUE - 512)) | (1L << (IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX - 512)) | (1L << (IMMEDIATE - 512)) | (1L << (IMPERSONATE - 512)) | (1L << (IMPORTANCE - 512)) | (1L << (INCREMENTAL - 512)) | (1L << (INITIATOR - 512)) | (1L << (INPUT - 512)) | (1L << (INSENSITIVE - 512)) | (1L << (INSERTED - 512)) | (1L << (INT - 512)) | (1L << (IP - 512)) | (1L << (ISOLATION - 512)) | (1L << (KB - 512)) | (1L << (KEEP - 512)) | (1L << (KEEPFIXED - 512)) | (1L << (KEY_SOURCE - 512)) | (1L << (KEYS - 512)) | (1L << (KEYSET - 512)) | (1L << (LAG - 512)) | (1L << (LAST - 512)) | (1L << (LAST_VALUE - 512)) | (1L << (LEAD - 512)) | (1L << (LEVEL - 512)) | (1L << (LIST - 512)) | (1L << (LISTENER - 512)) | (1L << (LISTENER_URL - 512)) | (1L << (LOB_COMPACTION - 512)) | (1L << (LOCAL - 512)) | (1L << (LOCATION - 512)) | (1L << (LOCK - 512)) | (1L << (LOCK_ESCALATION - 512)) | (1L << (LOGIN - 512)) | (1L << (LOOP - 512)) | (1L << (LOW - 512)) | (1L << (MANUAL - 512)) | (1L << (MARK - 512)))) != 0) || ((((_la - 576)) & ~0x3f) == 0 && ((1L << (_la - 576)) & ((1L << (MATERIALIZED - 576)) | (1L << (MAX - 576)) | (1L << (MAX_CPU_PERCENT - 576)) | (1L << (MAX_DOP - 576)) | (1L << (MAX_FILES - 576)) | (1L << (MAX_IOPS_PER_VOLUME - 576)) | (1L << (MAX_MEMORY_PERCENT - 576)) | (1L << (MAX_PROCESSES - 576)) | (1L << (MAX_QUEUE_READERS - 576)) | (1L << (MAX_ROLLOVER_FILES - 576)) | (1L << (MAXDOP - 576)) | (1L << (MAXRECURSION - 576)) | (1L << (MAXSIZE - 576)) | (1L << (MB - 576)) | (1L << (MEDIUM - 576)) | (1L << (MEMORY_OPTIMIZED_DATA - 576)) | (1L << (MESSAGE - 576)) | (1L << (MIN - 576)) | (1L << (MIN_ACTIVE_ROWVERSION - 576)) | (1L << (MIN_CPU_PERCENT - 576)) | (1L << (MIN_IOPS_PER_VOLUME - 576)) | (1L << (MIN_MEMORY_PERCENT - 576)) | (1L << (MINUTES - 576)) | (1L << (MIRROR_ADDRESS - 576)) | (1L << (MIXED_PAGE_ALLOCATION - 576)) | (1L << (MODE - 576)) | (1L << (MODIFY - 576)) | (1L << (MOVE - 576)) | (1L << (MULTI_USER - 576)) | (1L << (NAME - 576)) | (1L << (NESTED_TRIGGERS - 576)) | (1L << (NEW_ACCOUNT - 576)) | (1L << (NEW_BROKER - 576)) | (1L << (NEW_PASSWORD - 576)) | (1L << (NEXT - 576)) | (1L << (NO - 576)) | (1L << (NO_TRUNCATE - 576)) | (1L << (NO_WAIT - 576)) | (1L << (NOCOUNT - 576)) | (1L << (NODES - 576)) | (1L << (NOEXPAND - 576)) | (1L << (NON_TRANSACTED_ACCESS - 576)) | (1L << (NORECOMPUTE - 576)) | (1L << (NORECOVERY - 576)) | (1L << (NOWAIT - 576)) | (1L << (NTILE - 576)) | (1L << (NUMANODE - 576)) | (1L << (NUMBER - 576)) | (1L << (NUMERIC_ROUNDABORT - 576)) | (1L << (OBJECT - 576)) | (1L << (OFFLINE - 576)) | (1L << (OFFSET - 576)) | (1L << (OLD_ACCOUNT - 576)) | (1L << (ONLINE - 576)) | (1L << (ONLY - 576)) | (1L << (OPEN_EXISTING - 576)) | (1L << (OPTIMISTIC - 576)) | (1L << (OPTIMIZE - 576)) | (1L << (OUT - 576)) | (1L << (OUTPUT - 576)) | (1L << (OWNER - 576)) | (1L << (PAGE_VERIFY - 576)) | (1L << (PARAMETERIZATION - 576)) | (1L << (PARTITION - 576)))) != 0) || ((((_la - 640)) & ~0x3f) == 0 && ((1L << (_la - 640)) & ((1L << (PARTITIONS - 640)) | (1L << (PARTNER - 640)) | (1L << (PATH - 640)) | (1L << (POISON_MESSAGE_HANDLING - 640)) | (1L << (POOL - 640)) | (1L << (PORT - 640)) | (1L << (PRECEDING - 640)) | (1L << (PRIMARY_ROLE - 640)) | (1L << (PRIOR - 640)) | (1L << (PRIORITY - 640)) | (1L << (PRIORITY_LEVEL - 640)) | (1L << (PRIVATE - 640)) | (1L << (PRIVATE_KEY - 640)) | (1L << (PRIVILEGES - 640)) | (1L << (PROCEDURE_NAME - 640)) | (1L << (PROPERTY - 640)) | (1L << (PROVIDER - 640)) | (1L << (PROVIDER_KEY_NAME - 640)) | (1L << (QUERY - 640)) | (1L << (QUEUE - 640)) | (1L << (QUEUE_DELAY - 640)) | (1L << (QUOTED_IDENTIFIER - 640)) | (1L << (RANGE - 640)) | (1L << (RANK - 640)) | (1L << (RC2 - 640)) | (1L << (RC4 - 640)) | (1L << (RC4_128 - 640)) | (1L << (READ_COMMITTED_SNAPSHOT - 640)) | (1L << (READ_ONLY - 640)) | (1L << (READ_ONLY_ROUTING_LIST - 640)) | (1L << (READ_WRITE - 640)) | (1L << (READONLY - 640)) | (1L << (REBUILD - 640)) | (1L << (RECEIVE - 640)) | (1L << (RECOMPILE - 640)) | (1L << (RECOVERY - 640)) | (1L << (RECURSIVE_TRIGGERS - 640)) | (1L << (RELATIVE - 640)) | (1L << (REMOTE - 640)) | (1L << (REMOTE_SERVICE_NAME - 640)) | (1L << (REMOVE - 640)) | (1L << (REORGANIZE - 640)) | (1L << (REPEATABLE - 640)) | (1L << (REPLICA - 640)) | (1L << (REQUEST_MAX_CPU_TIME_SEC - 640)) | (1L << (REQUEST_MAX_MEMORY_GRANT_PERCENT - 640)) | (1L << (REQUEST_MEMORY_GRANT_TIMEOUT_SEC - 640)) | (1L << (REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT - 640)) | (1L << (RESERVE_DISK_SPACE - 640)) | (1L << (RESOURCE - 640)) | (1L << (RESOURCE_MANAGER_LOCATION - 640)) | (1L << (RESTRICTED_USER - 640)) | (1L << (RETENTION - 640)) | (1L << (ROBUST - 640)) | (1L << (ROOT - 640)) | (1L << (ROUTE - 640)) | (1L << (ROW - 640)) | (1L << (ROW_NUMBER - 640)) | (1L << (ROWGUID - 640)) | (1L << (ROWS - 640)) | (1L << (SAMPLE - 640)) | (1L << (SCHEMABINDING - 640)) | (1L << (SCOPED - 640)) | (1L << (SCROLL - 640)))) != 0) || ((((_la - 704)) & ~0x3f) == 0 && ((1L << (_la - 704)) & ((1L << (SCROLL_LOCKS - 704)) | (1L << (SEARCH - 704)) | (1L << (SECONDARY - 704)) | (1L << (SECONDARY_ONLY - 704)) | (1L << (SECONDARY_ROLE - 704)) | (1L << (SECONDS - 704)) | (1L << (SECRET - 704)) | (1L << (SECURITY_LOG - 704)) | (1L << (SEEDING_MODE - 704)) | (1L << (SELF - 704)) | (1L << (SEMI_SENSITIVE - 704)) | (1L << (SEND - 704)) | (1L << (SENT - 704)) | (1L << (SERIALIZABLE - 704)) | (1L << (SESSION_TIMEOUT - 704)) | (1L << (SETERROR - 704)) | (1L << (SHARE - 704)) | (1L << (SHOWPLAN - 704)) | (1L << (SIGNATURE - 704)) | (1L << (SIMPLE - 704)) | (1L << (SINGLE_USER - 704)) | (1L << (SIZE - 704)) | (1L << (SMALLINT - 704)) | (1L << (SNAPSHOT - 704)) | (1L << (SPATIAL_WINDOW_MAX_CELLS - 704)) | (1L << (STANDBY - 704)) | (1L << (START_DATE - 704)) | (1L << (STATIC - 704)) | (1L << (STATS_STREAM - 704)) | (1L << (STATUS - 704)) | (1L << (STDEV - 704)) | (1L << (STDEVP - 704)) | (1L << (STOPLIST - 704)) | (1L << (STUFF - 704)) | (1L << (SUBJECT - 704)) | (1L << (SUM - 704)) | (1L << (SUSPEND - 704)) | (1L << (SYMMETRIC - 704)) | (1L << (SYNCHRONOUS_COMMIT - 704)) | (1L << (SYNONYM - 704)) | (1L << (TAKE - 704)) | (1L << (TARGET_RECOVERY_TIME - 704)) | (1L << (TB - 704)) | (1L << (TEXTIMAGE_ON - 704)) | (1L << (THROW - 704)) | (1L << (TIES - 704)) | (1L << (TIME - 704)) | (1L << (TIMEOUT - 704)) | (1L << (TIMER - 704)) | (1L << (TINYINT - 704)) | (1L << (TORN_PAGE_DETECTION - 704)) | (1L << (TRANSFORM_NOISE_WORDS - 704)) | (1L << (TRIPLE_DES - 704)) | (1L << (TRIPLE_DES_3KEY - 704)) | (1L << (TRUSTWORTHY - 704)) | (1L << (TRY - 704)) | (1L << (TSQL - 704)) | (1L << (TWO_DIGIT_YEAR_CUTOFF - 704)) | (1L << (TYPE - 704)) | (1L << (TYPE_WARNING - 704)) | (1L << (UNBOUNDED - 704)) | (1L << (UNCOMMITTED - 704)) | (1L << (UNKNOWN - 704)) | (1L << (UNLIMITED - 704)))) != 0) || ((((_la - 768)) & ~0x3f) == 0 && ((1L << (_la - 768)) & ((1L << (USING - 768)) | (1L << (VALID_XML - 768)) | (1L << (VALIDATION - 768)) | (1L << (VALUE - 768)) | (1L << (VAR - 768)) | (1L << (VARP - 768)) | (1L << (VIEW_METADATA - 768)) | (1L << (VIEWS - 768)) | (1L << (WAIT - 768)) | (1L << (WELL_FORMED_XML - 768)) | (1L << (WORK - 768)) | (1L << (WORKLOAD - 768)) | (1L << (XML - 768)) | (1L << (XMLNAMESPACES - 768)) | (1L << (DOUBLE_QUOTE_ID - 768)) | (1L << (SQUARE_BRACKET_ID - 768)) | (1L << (ID - 768)) | (1L << (COMMA - 768)))) != 0) );
				}
				break;
			case ALL:
				{
				setState(2743);
				match(ALL);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			setState(2746);
			match(ON);
			setState(2756);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case CALLED:
			case DATA_COMPRESSION:
			case EVENTDATA:
			case FILENAME:
			case FILLFACTOR:
			case FORCESEEK:
			case INIT:
			case KEY:
			case MASTER:
			case MAX_MEMORY:
			case OFFSETS:
			case PAGE:
			case PUBLIC:
			case R:
			case RAW:
			case RETURN:
			case RETURNS:
			case ROWCOUNT:
			case SAFETY:
			case SERVER:
			case SID:
			case SOURCE:
			case STATE:
			case START:
			case TARGET:
			case ABSOLUTE:
			case ACCENT_SENSITIVITY:
			case ACTION:
			case ACTIVATION:
			case ACTIVE:
			case ADDRESS:
			case AES_128:
			case AES_192:
			case AES_256:
			case AFFINITY:
			case AFTER:
			case AGGREGATE:
			case ALGORITHM:
			case ALLOW_ENCRYPTED_VALUE_MODIFICATIONS:
			case ALLOW_SNAPSHOT_ISOLATION:
			case ALLOWED:
			case ANSI_NULL_DEFAULT:
			case ANSI_NULLS:
			case ANSI_PADDING:
			case ANSI_WARNINGS:
			case APPLICATION_LOG:
			case APPLY:
			case ARITHABORT:
			case ASSEMBLY:
			case AUDIT:
			case AUDIT_GUID:
			case AUTO:
			case AUTO_CLEANUP:
			case AUTO_CLOSE:
			case AUTO_CREATE_STATISTICS:
			case AUTO_SHRINK:
			case AUTO_UPDATE_STATISTICS:
			case AUTO_UPDATE_STATISTICS_ASYNC:
			case AVAILABILITY:
			case AVG:
			case BACKUP_PRIORITY:
			case BEGIN_DIALOG:
			case BIGINT:
			case BINARY_BASE64:
			case BINARY_CHECKSUM:
			case BINDING:
			case BLOB_STORAGE:
			case BROKER:
			case BROKER_INSTANCE:
			case BULK_LOGGED:
			case CALLER:
			case CAP_CPU_PERCENT:
			case CAST:
			case CATALOG:
			case CATCH:
			case CHANGE_RETENTION:
			case CHANGE_TRACKING:
			case CHECKSUM:
			case CHECKSUM_AGG:
			case CLEANUP:
			case COLLECTION:
			case COLUMN_MASTER_KEY:
			case COMMITTED:
			case COMPATIBILITY_LEVEL:
			case CONCAT:
			case CONCAT_NULL_YIELDS_NULL:
			case CONTENT:
			case CONTROL:
			case COOKIE:
			case COUNT:
			case COUNT_BIG:
			case COUNTER:
			case CPU:
			case CREATE_NEW:
			case CREATION_DISPOSITION:
			case CREDENTIAL:
			case CRYPTOGRAPHIC:
			case CURSOR_CLOSE_ON_COMMIT:
			case CURSOR_DEFAULT:
			case DATE_CORRELATION_OPTIMIZATION:
			case DATEADD:
			case DATEDIFF:
			case DATENAME:
			case DATEPART:
			case DAYS:
			case DB_CHAINING:
			case DB_FAILOVER:
			case DECRYPTION:
			case DEFAULT_DOUBLE_QUOTE:
			case DEFAULT_FULLTEXT_LANGUAGE:
			case DEFAULT_LANGUAGE:
			case DELAY:
			case DELAYED_DURABILITY:
			case DELETED:
			case DENSE_RANK:
			case DEPENDENTS:
			case DES:
			case DESCRIPTION:
			case DESX:
			case DHCP:
			case DIALOG:
			case DIRECTORY_NAME:
			case DISABLE:
			case DISABLE_BROKER:
			case DISABLED:
			case DISK_DRIVE:
			case DOCUMENT:
			case DYNAMIC:
			case EMERGENCY:
			case EMPTY:
			case ENABLE:
			case ENABLE_BROKER:
			case ENCRYPTED_VALUE:
			case ENCRYPTION:
			case ENDPOINT_URL:
			case ERROR_BROKER_CONVERSATIONS:
			case EXCLUSIVE:
			case EXECUTABLE:
			case EXIST:
			case EXPAND:
			case EXPIRY_DATE:
			case EXPLICIT:
			case FAIL_OPERATION:
			case FAILOVER_MODE:
			case FAILURE:
			case FAILURE_CONDITION_LEVEL:
			case FAST:
			case FAST_FORWARD:
			case FILEGROUP:
			case FILEGROWTH:
			case FILEPATH:
			case FILESTREAM:
			case FILTER:
			case FIRST:
			case FIRST_VALUE:
			case FOLLOWING:
			case FORCE:
			case FORCE_FAILOVER_ALLOW_DATA_LOSS:
			case FORCED:
			case FORMAT:
			case FORWARD_ONLY:
			case FULLSCAN:
			case FULLTEXT:
			case GB:
			case GETDATE:
			case GETUTCDATE:
			case GLOBAL:
			case GO:
			case GROUP_MAX_REQUESTS:
			case GROUPING:
			case GROUPING_ID:
			case HADR:
			case HASH:
			case HEALTH_CHECK_TIMEOUT:
			case HIGH:
			case HONOR_BROKER_PRIORITY:
			case HOURS:
			case IDENTITY_VALUE:
			case IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX:
			case IMMEDIATE:
			case IMPERSONATE:
			case IMPORTANCE:
			case INCREMENTAL:
			case INITIATOR:
			case INPUT:
			case INSENSITIVE:
			case INSERTED:
			case INT:
			case IP:
			case ISOLATION:
			case KB:
			case KEEP:
			case KEEPFIXED:
			case KEY_SOURCE:
			case KEYS:
			case KEYSET:
			case LAG:
			case LAST:
			case LAST_VALUE:
			case LEAD:
			case LEVEL:
			case LIST:
			case LISTENER:
			case LISTENER_URL:
			case LOB_COMPACTION:
			case LOCAL:
			case LOCATION:
			case LOCK:
			case LOCK_ESCALATION:
			case LOGIN:
			case LOOP:
			case LOW:
			case MANUAL:
			case MARK:
			case MATERIALIZED:
			case MAX:
			case MAX_CPU_PERCENT:
			case MAX_DOP:
			case MAX_FILES:
			case MAX_IOPS_PER_VOLUME:
			case MAX_MEMORY_PERCENT:
			case MAX_PROCESSES:
			case MAX_QUEUE_READERS:
			case MAX_ROLLOVER_FILES:
			case MAXDOP:
			case MAXRECURSION:
			case MAXSIZE:
			case MB:
			case MEDIUM:
			case MEMORY_OPTIMIZED_DATA:
			case MESSAGE:
			case MIN:
			case MIN_ACTIVE_ROWVERSION:
			case MIN_CPU_PERCENT:
			case MIN_IOPS_PER_VOLUME:
			case MIN_MEMORY_PERCENT:
			case MINUTES:
			case MIRROR_ADDRESS:
			case MIXED_PAGE_ALLOCATION:
			case MODE:
			case MODIFY:
			case MOVE:
			case MULTI_USER:
			case NAME:
			case NESTED_TRIGGERS:
			case NEW_ACCOUNT:
			case NEW_BROKER:
			case NEW_PASSWORD:
			case NEXT:
			case NO:
			case NO_TRUNCATE:
			case NO_WAIT:
			case NOCOUNT:
			case NODES:
			case NOEXPAND:
			case NON_TRANSACTED_ACCESS:
			case NORECOMPUTE:
			case NORECOVERY:
			case NOWAIT:
			case NTILE:
			case NUMANODE:
			case NUMBER:
			case NUMERIC_ROUNDABORT:
			case OBJECT:
			case OFFLINE:
			case OFFSET:
			case OLD_ACCOUNT:
			case ONLINE:
			case ONLY:
			case OPEN_EXISTING:
			case OPTIMISTIC:
			case OPTIMIZE:
			case OUT:
			case OUTPUT:
			case OWNER:
			case PAGE_VERIFY:
			case PARAMETERIZATION:
			case PARTITION:
			case PARTITIONS:
			case PARTNER:
			case PATH:
			case POISON_MESSAGE_HANDLING:
			case POOL:
			case PORT:
			case PRECEDING:
			case PRIMARY_ROLE:
			case PRIOR:
			case PRIORITY:
			case PRIORITY_LEVEL:
			case PRIVATE:
			case PRIVATE_KEY:
			case PRIVILEGES:
			case PROCEDURE_NAME:
			case PROPERTY:
			case PROVIDER:
			case PROVIDER_KEY_NAME:
			case QUERY:
			case QUEUE:
			case QUEUE_DELAY:
			case QUOTED_IDENTIFIER:
			case RANGE:
			case RANK:
			case RC2:
			case RC4:
			case RC4_128:
			case READ_COMMITTED_SNAPSHOT:
			case READ_ONLY:
			case READ_ONLY_ROUTING_LIST:
			case READ_WRITE:
			case READONLY:
			case REBUILD:
			case RECEIVE:
			case RECOMPILE:
			case RECOVERY:
			case RECURSIVE_TRIGGERS:
			case RELATIVE:
			case REMOTE:
			case REMOTE_SERVICE_NAME:
			case REMOVE:
			case REORGANIZE:
			case REPEATABLE:
			case REPLICA:
			case REQUEST_MAX_CPU_TIME_SEC:
			case REQUEST_MAX_MEMORY_GRANT_PERCENT:
			case REQUEST_MEMORY_GRANT_TIMEOUT_SEC:
			case REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT:
			case RESERVE_DISK_SPACE:
			case RESOURCE:
			case RESOURCE_MANAGER_LOCATION:
			case RESTRICTED_USER:
			case RETENTION:
			case ROBUST:
			case ROOT:
			case ROUTE:
			case ROW:
			case ROW_NUMBER:
			case ROWGUID:
			case ROWS:
			case SAMPLE:
			case SCHEMABINDING:
			case SCOPED:
			case SCROLL:
			case SCROLL_LOCKS:
			case SEARCH:
			case SECONDARY:
			case SECONDARY_ONLY:
			case SECONDARY_ROLE:
			case SECONDS:
			case SECRET:
			case SECURITY_LOG:
			case SEEDING_MODE:
			case SELF:
			case SEMI_SENSITIVE:
			case SEND:
			case SENT:
			case SERIALIZABLE:
			case SESSION_TIMEOUT:
			case SETERROR:
			case SHARE:
			case SHOWPLAN:
			case SIGNATURE:
			case SIMPLE:
			case SINGLE_USER:
			case SIZE:
			case SMALLINT:
			case SNAPSHOT:
			case SPATIAL_WINDOW_MAX_CELLS:
			case STANDBY:
			case START_DATE:
			case STATIC:
			case STATS_STREAM:
			case STATUS:
			case STDEV:
			case STDEVP:
			case STOPLIST:
			case STUFF:
			case SUBJECT:
			case SUM:
			case SUSPEND:
			case SYMMETRIC:
			case SYNCHRONOUS_COMMIT:
			case SYNONYM:
			case TAKE:
			case TARGET_RECOVERY_TIME:
			case TB:
			case TEXTIMAGE_ON:
			case THROW:
			case TIES:
			case TIME:
			case TIMEOUT:
			case TIMER:
			case TINYINT:
			case TORN_PAGE_DETECTION:
			case TRANSFORM_NOISE_WORDS:
			case TRIPLE_DES:
			case TRIPLE_DES_3KEY:
			case TRUSTWORTHY:
			case TRY:
			case TSQL:
			case TWO_DIGIT_YEAR_CUTOFF:
			case TYPE:
			case TYPE_WARNING:
			case UNBOUNDED:
			case UNCOMMITTED:
			case UNKNOWN:
			case UNLIMITED:
			case USING:
			case VALID_XML:
			case VALIDATION:
			case VALUE:
			case VAR:
			case VARP:
			case VIEW_METADATA:
			case VIEWS:
			case WAIT:
			case WELL_FORMED_XML:
			case WORK:
			case WORKLOAD:
			case XML:
			case XMLNAMESPACES:
			case DOUBLE_QUOTE_ID:
			case SQUARE_BRACKET_ID:
			case ID:
				{
				setState(2750);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,208,_ctx) ) {
				case 1:
					{
					setState(2747);
					((Disable_triggerContext)_localctx).schema_id = id();
					setState(2748);
					match(DOT);
					}
					break;
				}
				setState(2752);
				((Disable_triggerContext)_localctx).object_name = id();
				}
				break;
			case DATABASE:
				{
				setState(2753);
				match(DATABASE);
				}
				break;
			case ALL:
				{
				setState(2754);
				match(ALL);
				setState(2755);
				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 Enable_triggerContext extends ParserRuleContext {
		public IdContext schema_name;
		public IdContext trigger_name;
		public IdContext schema_id;
		public IdContext object_name;
		public TerminalNode ENABLE() { return getToken(TSqlParser.ENABLE, 0); }
		public TerminalNode TRIGGER() { return getToken(TSqlParser.TRIGGER, 0); }
		public TerminalNode ON() { return getToken(TSqlParser.ON, 0); }
		public List ALL() { return getTokens(TSqlParser.ALL); }
		public TerminalNode ALL(int i) {
			return getToken(TSqlParser.ALL, i);
		}
		public TerminalNode DATABASE() { return getToken(TSqlParser.DATABASE, 0); }
		public TerminalNode SERVER() { return getToken(TSqlParser.SERVER, 0); }
		public List id() {
			return getRuleContexts(IdContext.class);
		}
		public IdContext id(int i) {
			return getRuleContext(IdContext.class,i);
		}
		public List DOT() { return getTokens(TSqlParser.DOT); }
		public TerminalNode DOT(int i) {
			return getToken(TSqlParser.DOT, i);
		}
		public List COMMA() { return getTokens(TSqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(TSqlParser.COMMA, i);
		}
		public Enable_triggerContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_enable_trigger; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterEnable_trigger(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitEnable_trigger(this);
		}
	}

	public final Enable_triggerContext enable_trigger() throws RecognitionException {
		Enable_triggerContext _localctx = new Enable_triggerContext(_ctx, getState());
		enterRule(_localctx, 268, RULE_enable_trigger);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2758);
			match(ENABLE);
			setState(2759);
			match(TRIGGER);
			setState(2774);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case CALLED:
			case DATA_COMPRESSION:
			case EVENTDATA:
			case FILENAME:
			case FILLFACTOR:
			case FORCESEEK:
			case INIT:
			case KEY:
			case MASTER:
			case MAX_MEMORY:
			case OFFSETS:
			case PAGE:
			case PUBLIC:
			case R:
			case RAW:
			case RETURN:
			case RETURNS:
			case ROWCOUNT:
			case SAFETY:
			case SERVER:
			case SID:
			case SOURCE:
			case STATE:
			case START:
			case TARGET:
			case ABSOLUTE:
			case ACCENT_SENSITIVITY:
			case ACTION:
			case ACTIVATION:
			case ACTIVE:
			case ADDRESS:
			case AES_128:
			case AES_192:
			case AES_256:
			case AFFINITY:
			case AFTER:
			case AGGREGATE:
			case ALGORITHM:
			case ALLOW_ENCRYPTED_VALUE_MODIFICATIONS:
			case ALLOW_SNAPSHOT_ISOLATION:
			case ALLOWED:
			case ANSI_NULL_DEFAULT:
			case ANSI_NULLS:
			case ANSI_PADDING:
			case ANSI_WARNINGS:
			case APPLICATION_LOG:
			case APPLY:
			case ARITHABORT:
			case ASSEMBLY:
			case AUDIT:
			case AUDIT_GUID:
			case AUTO:
			case AUTO_CLEANUP:
			case AUTO_CLOSE:
			case AUTO_CREATE_STATISTICS:
			case AUTO_SHRINK:
			case AUTO_UPDATE_STATISTICS:
			case AUTO_UPDATE_STATISTICS_ASYNC:
			case AVAILABILITY:
			case AVG:
			case BACKUP_PRIORITY:
			case BEGIN_DIALOG:
			case BIGINT:
			case BINARY_BASE64:
			case BINARY_CHECKSUM:
			case BINDING:
			case BLOB_STORAGE:
			case BROKER:
			case BROKER_INSTANCE:
			case BULK_LOGGED:
			case CALLER:
			case CAP_CPU_PERCENT:
			case CAST:
			case CATALOG:
			case CATCH:
			case CHANGE_RETENTION:
			case CHANGE_TRACKING:
			case CHECKSUM:
			case CHECKSUM_AGG:
			case CLEANUP:
			case COLLECTION:
			case COLUMN_MASTER_KEY:
			case COMMITTED:
			case COMPATIBILITY_LEVEL:
			case CONCAT:
			case CONCAT_NULL_YIELDS_NULL:
			case CONTENT:
			case CONTROL:
			case COOKIE:
			case COUNT:
			case COUNT_BIG:
			case COUNTER:
			case CPU:
			case CREATE_NEW:
			case CREATION_DISPOSITION:
			case CREDENTIAL:
			case CRYPTOGRAPHIC:
			case CURSOR_CLOSE_ON_COMMIT:
			case CURSOR_DEFAULT:
			case DATE_CORRELATION_OPTIMIZATION:
			case DATEADD:
			case DATEDIFF:
			case DATENAME:
			case DATEPART:
			case DAYS:
			case DB_CHAINING:
			case DB_FAILOVER:
			case DECRYPTION:
			case DEFAULT_DOUBLE_QUOTE:
			case DEFAULT_FULLTEXT_LANGUAGE:
			case DEFAULT_LANGUAGE:
			case DELAY:
			case DELAYED_DURABILITY:
			case DELETED:
			case DENSE_RANK:
			case DEPENDENTS:
			case DES:
			case DESCRIPTION:
			case DESX:
			case DHCP:
			case DIALOG:
			case DIRECTORY_NAME:
			case DISABLE:
			case DISABLE_BROKER:
			case DISABLED:
			case DISK_DRIVE:
			case DOCUMENT:
			case DYNAMIC:
			case EMERGENCY:
			case EMPTY:
			case ENABLE:
			case ENABLE_BROKER:
			case ENCRYPTED_VALUE:
			case ENCRYPTION:
			case ENDPOINT_URL:
			case ERROR_BROKER_CONVERSATIONS:
			case EXCLUSIVE:
			case EXECUTABLE:
			case EXIST:
			case EXPAND:
			case EXPIRY_DATE:
			case EXPLICIT:
			case FAIL_OPERATION:
			case FAILOVER_MODE:
			case FAILURE:
			case FAILURE_CONDITION_LEVEL:
			case FAST:
			case FAST_FORWARD:
			case FILEGROUP:
			case FILEGROWTH:
			case FILEPATH:
			case FILESTREAM:
			case FILTER:
			case FIRST:
			case FIRST_VALUE:
			case FOLLOWING:
			case FORCE:
			case FORCE_FAILOVER_ALLOW_DATA_LOSS:
			case FORCED:
			case FORMAT:
			case FORWARD_ONLY:
			case FULLSCAN:
			case FULLTEXT:
			case GB:
			case GETDATE:
			case GETUTCDATE:
			case GLOBAL:
			case GO:
			case GROUP_MAX_REQUESTS:
			case GROUPING:
			case GROUPING_ID:
			case HADR:
			case HASH:
			case HEALTH_CHECK_TIMEOUT:
			case HIGH:
			case HONOR_BROKER_PRIORITY:
			case HOURS:
			case IDENTITY_VALUE:
			case IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX:
			case IMMEDIATE:
			case IMPERSONATE:
			case IMPORTANCE:
			case INCREMENTAL:
			case INITIATOR:
			case INPUT:
			case INSENSITIVE:
			case INSERTED:
			case INT:
			case IP:
			case ISOLATION:
			case KB:
			case KEEP:
			case KEEPFIXED:
			case KEY_SOURCE:
			case KEYS:
			case KEYSET:
			case LAG:
			case LAST:
			case LAST_VALUE:
			case LEAD:
			case LEVEL:
			case LIST:
			case LISTENER:
			case LISTENER_URL:
			case LOB_COMPACTION:
			case LOCAL:
			case LOCATION:
			case LOCK:
			case LOCK_ESCALATION:
			case LOGIN:
			case LOOP:
			case LOW:
			case MANUAL:
			case MARK:
			case MATERIALIZED:
			case MAX:
			case MAX_CPU_PERCENT:
			case MAX_DOP:
			case MAX_FILES:
			case MAX_IOPS_PER_VOLUME:
			case MAX_MEMORY_PERCENT:
			case MAX_PROCESSES:
			case MAX_QUEUE_READERS:
			case MAX_ROLLOVER_FILES:
			case MAXDOP:
			case MAXRECURSION:
			case MAXSIZE:
			case MB:
			case MEDIUM:
			case MEMORY_OPTIMIZED_DATA:
			case MESSAGE:
			case MIN:
			case MIN_ACTIVE_ROWVERSION:
			case MIN_CPU_PERCENT:
			case MIN_IOPS_PER_VOLUME:
			case MIN_MEMORY_PERCENT:
			case MINUTES:
			case MIRROR_ADDRESS:
			case MIXED_PAGE_ALLOCATION:
			case MODE:
			case MODIFY:
			case MOVE:
			case MULTI_USER:
			case NAME:
			case NESTED_TRIGGERS:
			case NEW_ACCOUNT:
			case NEW_BROKER:
			case NEW_PASSWORD:
			case NEXT:
			case NO:
			case NO_TRUNCATE:
			case NO_WAIT:
			case NOCOUNT:
			case NODES:
			case NOEXPAND:
			case NON_TRANSACTED_ACCESS:
			case NORECOMPUTE:
			case NORECOVERY:
			case NOWAIT:
			case NTILE:
			case NUMANODE:
			case NUMBER:
			case NUMERIC_ROUNDABORT:
			case OBJECT:
			case OFFLINE:
			case OFFSET:
			case OLD_ACCOUNT:
			case ONLINE:
			case ONLY:
			case OPEN_EXISTING:
			case OPTIMISTIC:
			case OPTIMIZE:
			case OUT:
			case OUTPUT:
			case OWNER:
			case PAGE_VERIFY:
			case PARAMETERIZATION:
			case PARTITION:
			case PARTITIONS:
			case PARTNER:
			case PATH:
			case POISON_MESSAGE_HANDLING:
			case POOL:
			case PORT:
			case PRECEDING:
			case PRIMARY_ROLE:
			case PRIOR:
			case PRIORITY:
			case PRIORITY_LEVEL:
			case PRIVATE:
			case PRIVATE_KEY:
			case PRIVILEGES:
			case PROCEDURE_NAME:
			case PROPERTY:
			case PROVIDER:
			case PROVIDER_KEY_NAME:
			case QUERY:
			case QUEUE:
			case QUEUE_DELAY:
			case QUOTED_IDENTIFIER:
			case RANGE:
			case RANK:
			case RC2:
			case RC4:
			case RC4_128:
			case READ_COMMITTED_SNAPSHOT:
			case READ_ONLY:
			case READ_ONLY_ROUTING_LIST:
			case READ_WRITE:
			case READONLY:
			case REBUILD:
			case RECEIVE:
			case RECOMPILE:
			case RECOVERY:
			case RECURSIVE_TRIGGERS:
			case RELATIVE:
			case REMOTE:
			case REMOTE_SERVICE_NAME:
			case REMOVE:
			case REORGANIZE:
			case REPEATABLE:
			case REPLICA:
			case REQUEST_MAX_CPU_TIME_SEC:
			case REQUEST_MAX_MEMORY_GRANT_PERCENT:
			case REQUEST_MEMORY_GRANT_TIMEOUT_SEC:
			case REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT:
			case RESERVE_DISK_SPACE:
			case RESOURCE:
			case RESOURCE_MANAGER_LOCATION:
			case RESTRICTED_USER:
			case RETENTION:
			case ROBUST:
			case ROOT:
			case ROUTE:
			case ROW:
			case ROW_NUMBER:
			case ROWGUID:
			case ROWS:
			case SAMPLE:
			case SCHEMABINDING:
			case SCOPED:
			case SCROLL:
			case SCROLL_LOCKS:
			case SEARCH:
			case SECONDARY:
			case SECONDARY_ONLY:
			case SECONDARY_ROLE:
			case SECONDS:
			case SECRET:
			case SECURITY_LOG:
			case SEEDING_MODE:
			case SELF:
			case SEMI_SENSITIVE:
			case SEND:
			case SENT:
			case SERIALIZABLE:
			case SESSION_TIMEOUT:
			case SETERROR:
			case SHARE:
			case SHOWPLAN:
			case SIGNATURE:
			case SIMPLE:
			case SINGLE_USER:
			case SIZE:
			case SMALLINT:
			case SNAPSHOT:
			case SPATIAL_WINDOW_MAX_CELLS:
			case STANDBY:
			case START_DATE:
			case STATIC:
			case STATS_STREAM:
			case STATUS:
			case STDEV:
			case STDEVP:
			case STOPLIST:
			case STUFF:
			case SUBJECT:
			case SUM:
			case SUSPEND:
			case SYMMETRIC:
			case SYNCHRONOUS_COMMIT:
			case SYNONYM:
			case TAKE:
			case TARGET_RECOVERY_TIME:
			case TB:
			case TEXTIMAGE_ON:
			case THROW:
			case TIES:
			case TIME:
			case TIMEOUT:
			case TIMER:
			case TINYINT:
			case TORN_PAGE_DETECTION:
			case TRANSFORM_NOISE_WORDS:
			case TRIPLE_DES:
			case TRIPLE_DES_3KEY:
			case TRUSTWORTHY:
			case TRY:
			case TSQL:
			case TWO_DIGIT_YEAR_CUTOFF:
			case TYPE:
			case TYPE_WARNING:
			case UNBOUNDED:
			case UNCOMMITTED:
			case UNKNOWN:
			case UNLIMITED:
			case USING:
			case VALID_XML:
			case VALIDATION:
			case VALUE:
			case VAR:
			case VARP:
			case VIEW_METADATA:
			case VIEWS:
			case WAIT:
			case WELL_FORMED_XML:
			case WORK:
			case WORKLOAD:
			case XML:
			case XMLNAMESPACES:
			case DOUBLE_QUOTE_ID:
			case SQUARE_BRACKET_ID:
			case ID:
			case COMMA:
				{
				setState(2769); 
				_errHandler.sync(this);
				_la = _input.LA(1);
				do {
					{
					{
					setState(2761);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==COMMA) {
						{
						setState(2760);
						match(COMMA);
						}
					}

					setState(2766);
					_errHandler.sync(this);
					switch ( getInterpreter().adaptivePredict(_input,211,_ctx) ) {
					case 1:
						{
						setState(2763);
						((Enable_triggerContext)_localctx).schema_name = id();
						setState(2764);
						match(DOT);
						}
						break;
					}
					setState(2768);
					((Enable_triggerContext)_localctx).trigger_name = id();
					}
					}
					setState(2771); 
					_errHandler.sync(this);
					_la = _input.LA(1);
				} while ( _la==CALLED || ((((_la - 81)) & ~0x3f) == 0 && ((1L << (_la - 81)) & ((1L << (DATA_COMPRESSION - 81)) | (1L << (EVENTDATA - 81)) | (1L << (FILENAME - 81)) | (1L << (FILLFACTOR - 81)) | (1L << (FORCESEEK - 81)))) != 0) || ((((_la - 159)) & ~0x3f) == 0 && ((1L << (_la - 159)) & ((1L << (INIT - 159)) | (1L << (KEY - 159)) | (1L << (MASTER - 159)) | (1L << (MAX_MEMORY - 159)))) != 0) || ((((_la - 226)) & ~0x3f) == 0 && ((1L << (_la - 226)) & ((1L << (OFFSETS - 226)) | (1L << (PAGE - 226)) | (1L << (PUBLIC - 226)) | (1L << (R - 226)) | (1L << (RAW - 226)) | (1L << (RETURN - 226)) | (1L << (RETURNS - 226)) | (1L << (ROWCOUNT - 226)))) != 0) || ((((_la - 296)) & ~0x3f) == 0 && ((1L << (_la - 296)) & ((1L << (SAFETY - 296)) | (1L << (SERVER - 296)) | (1L << (SID - 296)) | (1L << (SOURCE - 296)) | (1L << (STATE - 296)) | (1L << (START - 296)) | (1L << (TARGET - 296)))) != 0) || ((((_la - 384)) & ~0x3f) == 0 && ((1L << (_la - 384)) & ((1L << (ABSOLUTE - 384)) | (1L << (ACCENT_SENSITIVITY - 384)) | (1L << (ACTION - 384)) | (1L << (ACTIVATION - 384)) | (1L << (ACTIVE - 384)) | (1L << (ADDRESS - 384)) | (1L << (AES_128 - 384)) | (1L << (AES_192 - 384)) | (1L << (AES_256 - 384)) | (1L << (AFFINITY - 384)) | (1L << (AFTER - 384)) | (1L << (AGGREGATE - 384)) | (1L << (ALGORITHM - 384)) | (1L << (ALLOW_ENCRYPTED_VALUE_MODIFICATIONS - 384)) | (1L << (ALLOW_SNAPSHOT_ISOLATION - 384)) | (1L << (ALLOWED - 384)) | (1L << (ANSI_NULL_DEFAULT - 384)) | (1L << (ANSI_NULLS - 384)) | (1L << (ANSI_PADDING - 384)) | (1L << (ANSI_WARNINGS - 384)) | (1L << (APPLICATION_LOG - 384)) | (1L << (APPLY - 384)) | (1L << (ARITHABORT - 384)) | (1L << (ASSEMBLY - 384)) | (1L << (AUDIT - 384)) | (1L << (AUDIT_GUID - 384)) | (1L << (AUTO - 384)) | (1L << (AUTO_CLEANUP - 384)) | (1L << (AUTO_CLOSE - 384)) | (1L << (AUTO_CREATE_STATISTICS - 384)) | (1L << (AUTO_SHRINK - 384)) | (1L << (AUTO_UPDATE_STATISTICS - 384)) | (1L << (AUTO_UPDATE_STATISTICS_ASYNC - 384)) | (1L << (AVAILABILITY - 384)) | (1L << (AVG - 384)) | (1L << (BACKUP_PRIORITY - 384)) | (1L << (BEGIN_DIALOG - 384)) | (1L << (BIGINT - 384)) | (1L << (BINARY_BASE64 - 384)) | (1L << (BINARY_CHECKSUM - 384)) | (1L << (BINDING - 384)) | (1L << (BLOB_STORAGE - 384)) | (1L << (BROKER - 384)) | (1L << (BROKER_INSTANCE - 384)) | (1L << (BULK_LOGGED - 384)) | (1L << (CALLER - 384)) | (1L << (CAP_CPU_PERCENT - 384)) | (1L << (CAST - 384)) | (1L << (CATALOG - 384)) | (1L << (CATCH - 384)) | (1L << (CHANGE_RETENTION - 384)) | (1L << (CHANGE_TRACKING - 384)) | (1L << (CHECKSUM - 384)) | (1L << (CHECKSUM_AGG - 384)) | (1L << (CLEANUP - 384)) | (1L << (COLLECTION - 384)) | (1L << (COLUMN_MASTER_KEY - 384)) | (1L << (COMMITTED - 384)) | (1L << (COMPATIBILITY_LEVEL - 384)) | (1L << (CONCAT - 384)) | (1L << (CONCAT_NULL_YIELDS_NULL - 384)) | (1L << (CONTENT - 384)) | (1L << (CONTROL - 384)) | (1L << (COOKIE - 384)))) != 0) || ((((_la - 448)) & ~0x3f) == 0 && ((1L << (_la - 448)) & ((1L << (COUNT - 448)) | (1L << (COUNT_BIG - 448)) | (1L << (COUNTER - 448)) | (1L << (CPU - 448)) | (1L << (CREATE_NEW - 448)) | (1L << (CREATION_DISPOSITION - 448)) | (1L << (CREDENTIAL - 448)) | (1L << (CRYPTOGRAPHIC - 448)) | (1L << (CURSOR_CLOSE_ON_COMMIT - 448)) | (1L << (CURSOR_DEFAULT - 448)) | (1L << (DATE_CORRELATION_OPTIMIZATION - 448)) | (1L << (DATEADD - 448)) | (1L << (DATEDIFF - 448)) | (1L << (DATENAME - 448)) | (1L << (DATEPART - 448)) | (1L << (DAYS - 448)) | (1L << (DB_CHAINING - 448)) | (1L << (DB_FAILOVER - 448)) | (1L << (DECRYPTION - 448)) | (1L << (DEFAULT_DOUBLE_QUOTE - 448)) | (1L << (DEFAULT_FULLTEXT_LANGUAGE - 448)) | (1L << (DEFAULT_LANGUAGE - 448)) | (1L << (DELAY - 448)) | (1L << (DELAYED_DURABILITY - 448)) | (1L << (DELETED - 448)) | (1L << (DENSE_RANK - 448)) | (1L << (DEPENDENTS - 448)) | (1L << (DES - 448)) | (1L << (DESCRIPTION - 448)) | (1L << (DESX - 448)) | (1L << (DHCP - 448)) | (1L << (DIALOG - 448)) | (1L << (DIRECTORY_NAME - 448)) | (1L << (DISABLE - 448)) | (1L << (DISABLE_BROKER - 448)) | (1L << (DISABLED - 448)) | (1L << (DISK_DRIVE - 448)) | (1L << (DOCUMENT - 448)) | (1L << (DYNAMIC - 448)) | (1L << (EMERGENCY - 448)) | (1L << (EMPTY - 448)) | (1L << (ENABLE - 448)) | (1L << (ENABLE_BROKER - 448)) | (1L << (ENCRYPTED_VALUE - 448)) | (1L << (ENCRYPTION - 448)) | (1L << (ENDPOINT_URL - 448)) | (1L << (ERROR_BROKER_CONVERSATIONS - 448)) | (1L << (EXCLUSIVE - 448)) | (1L << (EXECUTABLE - 448)) | (1L << (EXIST - 448)) | (1L << (EXPAND - 448)) | (1L << (EXPIRY_DATE - 448)) | (1L << (EXPLICIT - 448)) | (1L << (FAIL_OPERATION - 448)) | (1L << (FAILOVER_MODE - 448)) | (1L << (FAILURE - 448)) | (1L << (FAILURE_CONDITION_LEVEL - 448)) | (1L << (FAST - 448)) | (1L << (FAST_FORWARD - 448)) | (1L << (FILEGROUP - 448)) | (1L << (FILEGROWTH - 448)) | (1L << (FILEPATH - 448)) | (1L << (FILESTREAM - 448)))) != 0) || ((((_la - 512)) & ~0x3f) == 0 && ((1L << (_la - 512)) & ((1L << (FILTER - 512)) | (1L << (FIRST - 512)) | (1L << (FIRST_VALUE - 512)) | (1L << (FOLLOWING - 512)) | (1L << (FORCE - 512)) | (1L << (FORCE_FAILOVER_ALLOW_DATA_LOSS - 512)) | (1L << (FORCED - 512)) | (1L << (FORMAT - 512)) | (1L << (FORWARD_ONLY - 512)) | (1L << (FULLSCAN - 512)) | (1L << (FULLTEXT - 512)) | (1L << (GB - 512)) | (1L << (GETDATE - 512)) | (1L << (GETUTCDATE - 512)) | (1L << (GLOBAL - 512)) | (1L << (GO - 512)) | (1L << (GROUP_MAX_REQUESTS - 512)) | (1L << (GROUPING - 512)) | (1L << (GROUPING_ID - 512)) | (1L << (HADR - 512)) | (1L << (HASH - 512)) | (1L << (HEALTH_CHECK_TIMEOUT - 512)) | (1L << (HIGH - 512)) | (1L << (HONOR_BROKER_PRIORITY - 512)) | (1L << (HOURS - 512)) | (1L << (IDENTITY_VALUE - 512)) | (1L << (IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX - 512)) | (1L << (IMMEDIATE - 512)) | (1L << (IMPERSONATE - 512)) | (1L << (IMPORTANCE - 512)) | (1L << (INCREMENTAL - 512)) | (1L << (INITIATOR - 512)) | (1L << (INPUT - 512)) | (1L << (INSENSITIVE - 512)) | (1L << (INSERTED - 512)) | (1L << (INT - 512)) | (1L << (IP - 512)) | (1L << (ISOLATION - 512)) | (1L << (KB - 512)) | (1L << (KEEP - 512)) | (1L << (KEEPFIXED - 512)) | (1L << (KEY_SOURCE - 512)) | (1L << (KEYS - 512)) | (1L << (KEYSET - 512)) | (1L << (LAG - 512)) | (1L << (LAST - 512)) | (1L << (LAST_VALUE - 512)) | (1L << (LEAD - 512)) | (1L << (LEVEL - 512)) | (1L << (LIST - 512)) | (1L << (LISTENER - 512)) | (1L << (LISTENER_URL - 512)) | (1L << (LOB_COMPACTION - 512)) | (1L << (LOCAL - 512)) | (1L << (LOCATION - 512)) | (1L << (LOCK - 512)) | (1L << (LOCK_ESCALATION - 512)) | (1L << (LOGIN - 512)) | (1L << (LOOP - 512)) | (1L << (LOW - 512)) | (1L << (MANUAL - 512)) | (1L << (MARK - 512)))) != 0) || ((((_la - 576)) & ~0x3f) == 0 && ((1L << (_la - 576)) & ((1L << (MATERIALIZED - 576)) | (1L << (MAX - 576)) | (1L << (MAX_CPU_PERCENT - 576)) | (1L << (MAX_DOP - 576)) | (1L << (MAX_FILES - 576)) | (1L << (MAX_IOPS_PER_VOLUME - 576)) | (1L << (MAX_MEMORY_PERCENT - 576)) | (1L << (MAX_PROCESSES - 576)) | (1L << (MAX_QUEUE_READERS - 576)) | (1L << (MAX_ROLLOVER_FILES - 576)) | (1L << (MAXDOP - 576)) | (1L << (MAXRECURSION - 576)) | (1L << (MAXSIZE - 576)) | (1L << (MB - 576)) | (1L << (MEDIUM - 576)) | (1L << (MEMORY_OPTIMIZED_DATA - 576)) | (1L << (MESSAGE - 576)) | (1L << (MIN - 576)) | (1L << (MIN_ACTIVE_ROWVERSION - 576)) | (1L << (MIN_CPU_PERCENT - 576)) | (1L << (MIN_IOPS_PER_VOLUME - 576)) | (1L << (MIN_MEMORY_PERCENT - 576)) | (1L << (MINUTES - 576)) | (1L << (MIRROR_ADDRESS - 576)) | (1L << (MIXED_PAGE_ALLOCATION - 576)) | (1L << (MODE - 576)) | (1L << (MODIFY - 576)) | (1L << (MOVE - 576)) | (1L << (MULTI_USER - 576)) | (1L << (NAME - 576)) | (1L << (NESTED_TRIGGERS - 576)) | (1L << (NEW_ACCOUNT - 576)) | (1L << (NEW_BROKER - 576)) | (1L << (NEW_PASSWORD - 576)) | (1L << (NEXT - 576)) | (1L << (NO - 576)) | (1L << (NO_TRUNCATE - 576)) | (1L << (NO_WAIT - 576)) | (1L << (NOCOUNT - 576)) | (1L << (NODES - 576)) | (1L << (NOEXPAND - 576)) | (1L << (NON_TRANSACTED_ACCESS - 576)) | (1L << (NORECOMPUTE - 576)) | (1L << (NORECOVERY - 576)) | (1L << (NOWAIT - 576)) | (1L << (NTILE - 576)) | (1L << (NUMANODE - 576)) | (1L << (NUMBER - 576)) | (1L << (NUMERIC_ROUNDABORT - 576)) | (1L << (OBJECT - 576)) | (1L << (OFFLINE - 576)) | (1L << (OFFSET - 576)) | (1L << (OLD_ACCOUNT - 576)) | (1L << (ONLINE - 576)) | (1L << (ONLY - 576)) | (1L << (OPEN_EXISTING - 576)) | (1L << (OPTIMISTIC - 576)) | (1L << (OPTIMIZE - 576)) | (1L << (OUT - 576)) | (1L << (OUTPUT - 576)) | (1L << (OWNER - 576)) | (1L << (PAGE_VERIFY - 576)) | (1L << (PARAMETERIZATION - 576)) | (1L << (PARTITION - 576)))) != 0) || ((((_la - 640)) & ~0x3f) == 0 && ((1L << (_la - 640)) & ((1L << (PARTITIONS - 640)) | (1L << (PARTNER - 640)) | (1L << (PATH - 640)) | (1L << (POISON_MESSAGE_HANDLING - 640)) | (1L << (POOL - 640)) | (1L << (PORT - 640)) | (1L << (PRECEDING - 640)) | (1L << (PRIMARY_ROLE - 640)) | (1L << (PRIOR - 640)) | (1L << (PRIORITY - 640)) | (1L << (PRIORITY_LEVEL - 640)) | (1L << (PRIVATE - 640)) | (1L << (PRIVATE_KEY - 640)) | (1L << (PRIVILEGES - 640)) | (1L << (PROCEDURE_NAME - 640)) | (1L << (PROPERTY - 640)) | (1L << (PROVIDER - 640)) | (1L << (PROVIDER_KEY_NAME - 640)) | (1L << (QUERY - 640)) | (1L << (QUEUE - 640)) | (1L << (QUEUE_DELAY - 640)) | (1L << (QUOTED_IDENTIFIER - 640)) | (1L << (RANGE - 640)) | (1L << (RANK - 640)) | (1L << (RC2 - 640)) | (1L << (RC4 - 640)) | (1L << (RC4_128 - 640)) | (1L << (READ_COMMITTED_SNAPSHOT - 640)) | (1L << (READ_ONLY - 640)) | (1L << (READ_ONLY_ROUTING_LIST - 640)) | (1L << (READ_WRITE - 640)) | (1L << (READONLY - 640)) | (1L << (REBUILD - 640)) | (1L << (RECEIVE - 640)) | (1L << (RECOMPILE - 640)) | (1L << (RECOVERY - 640)) | (1L << (RECURSIVE_TRIGGERS - 640)) | (1L << (RELATIVE - 640)) | (1L << (REMOTE - 640)) | (1L << (REMOTE_SERVICE_NAME - 640)) | (1L << (REMOVE - 640)) | (1L << (REORGANIZE - 640)) | (1L << (REPEATABLE - 640)) | (1L << (REPLICA - 640)) | (1L << (REQUEST_MAX_CPU_TIME_SEC - 640)) | (1L << (REQUEST_MAX_MEMORY_GRANT_PERCENT - 640)) | (1L << (REQUEST_MEMORY_GRANT_TIMEOUT_SEC - 640)) | (1L << (REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT - 640)) | (1L << (RESERVE_DISK_SPACE - 640)) | (1L << (RESOURCE - 640)) | (1L << (RESOURCE_MANAGER_LOCATION - 640)) | (1L << (RESTRICTED_USER - 640)) | (1L << (RETENTION - 640)) | (1L << (ROBUST - 640)) | (1L << (ROOT - 640)) | (1L << (ROUTE - 640)) | (1L << (ROW - 640)) | (1L << (ROW_NUMBER - 640)) | (1L << (ROWGUID - 640)) | (1L << (ROWS - 640)) | (1L << (SAMPLE - 640)) | (1L << (SCHEMABINDING - 640)) | (1L << (SCOPED - 640)) | (1L << (SCROLL - 640)))) != 0) || ((((_la - 704)) & ~0x3f) == 0 && ((1L << (_la - 704)) & ((1L << (SCROLL_LOCKS - 704)) | (1L << (SEARCH - 704)) | (1L << (SECONDARY - 704)) | (1L << (SECONDARY_ONLY - 704)) | (1L << (SECONDARY_ROLE - 704)) | (1L << (SECONDS - 704)) | (1L << (SECRET - 704)) | (1L << (SECURITY_LOG - 704)) | (1L << (SEEDING_MODE - 704)) | (1L << (SELF - 704)) | (1L << (SEMI_SENSITIVE - 704)) | (1L << (SEND - 704)) | (1L << (SENT - 704)) | (1L << (SERIALIZABLE - 704)) | (1L << (SESSION_TIMEOUT - 704)) | (1L << (SETERROR - 704)) | (1L << (SHARE - 704)) | (1L << (SHOWPLAN - 704)) | (1L << (SIGNATURE - 704)) | (1L << (SIMPLE - 704)) | (1L << (SINGLE_USER - 704)) | (1L << (SIZE - 704)) | (1L << (SMALLINT - 704)) | (1L << (SNAPSHOT - 704)) | (1L << (SPATIAL_WINDOW_MAX_CELLS - 704)) | (1L << (STANDBY - 704)) | (1L << (START_DATE - 704)) | (1L << (STATIC - 704)) | (1L << (STATS_STREAM - 704)) | (1L << (STATUS - 704)) | (1L << (STDEV - 704)) | (1L << (STDEVP - 704)) | (1L << (STOPLIST - 704)) | (1L << (STUFF - 704)) | (1L << (SUBJECT - 704)) | (1L << (SUM - 704)) | (1L << (SUSPEND - 704)) | (1L << (SYMMETRIC - 704)) | (1L << (SYNCHRONOUS_COMMIT - 704)) | (1L << (SYNONYM - 704)) | (1L << (TAKE - 704)) | (1L << (TARGET_RECOVERY_TIME - 704)) | (1L << (TB - 704)) | (1L << (TEXTIMAGE_ON - 704)) | (1L << (THROW - 704)) | (1L << (TIES - 704)) | (1L << (TIME - 704)) | (1L << (TIMEOUT - 704)) | (1L << (TIMER - 704)) | (1L << (TINYINT - 704)) | (1L << (TORN_PAGE_DETECTION - 704)) | (1L << (TRANSFORM_NOISE_WORDS - 704)) | (1L << (TRIPLE_DES - 704)) | (1L << (TRIPLE_DES_3KEY - 704)) | (1L << (TRUSTWORTHY - 704)) | (1L << (TRY - 704)) | (1L << (TSQL - 704)) | (1L << (TWO_DIGIT_YEAR_CUTOFF - 704)) | (1L << (TYPE - 704)) | (1L << (TYPE_WARNING - 704)) | (1L << (UNBOUNDED - 704)) | (1L << (UNCOMMITTED - 704)) | (1L << (UNKNOWN - 704)) | (1L << (UNLIMITED - 704)))) != 0) || ((((_la - 768)) & ~0x3f) == 0 && ((1L << (_la - 768)) & ((1L << (USING - 768)) | (1L << (VALID_XML - 768)) | (1L << (VALIDATION - 768)) | (1L << (VALUE - 768)) | (1L << (VAR - 768)) | (1L << (VARP - 768)) | (1L << (VIEW_METADATA - 768)) | (1L << (VIEWS - 768)) | (1L << (WAIT - 768)) | (1L << (WELL_FORMED_XML - 768)) | (1L << (WORK - 768)) | (1L << (WORKLOAD - 768)) | (1L << (XML - 768)) | (1L << (XMLNAMESPACES - 768)) | (1L << (DOUBLE_QUOTE_ID - 768)) | (1L << (SQUARE_BRACKET_ID - 768)) | (1L << (ID - 768)) | (1L << (COMMA - 768)))) != 0) );
				}
				break;
			case ALL:
				{
				setState(2773);
				match(ALL);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			setState(2776);
			match(ON);
			setState(2786);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case CALLED:
			case DATA_COMPRESSION:
			case EVENTDATA:
			case FILENAME:
			case FILLFACTOR:
			case FORCESEEK:
			case INIT:
			case KEY:
			case MASTER:
			case MAX_MEMORY:
			case OFFSETS:
			case PAGE:
			case PUBLIC:
			case R:
			case RAW:
			case RETURN:
			case RETURNS:
			case ROWCOUNT:
			case SAFETY:
			case SERVER:
			case SID:
			case SOURCE:
			case STATE:
			case START:
			case TARGET:
			case ABSOLUTE:
			case ACCENT_SENSITIVITY:
			case ACTION:
			case ACTIVATION:
			case ACTIVE:
			case ADDRESS:
			case AES_128:
			case AES_192:
			case AES_256:
			case AFFINITY:
			case AFTER:
			case AGGREGATE:
			case ALGORITHM:
			case ALLOW_ENCRYPTED_VALUE_MODIFICATIONS:
			case ALLOW_SNAPSHOT_ISOLATION:
			case ALLOWED:
			case ANSI_NULL_DEFAULT:
			case ANSI_NULLS:
			case ANSI_PADDING:
			case ANSI_WARNINGS:
			case APPLICATION_LOG:
			case APPLY:
			case ARITHABORT:
			case ASSEMBLY:
			case AUDIT:
			case AUDIT_GUID:
			case AUTO:
			case AUTO_CLEANUP:
			case AUTO_CLOSE:
			case AUTO_CREATE_STATISTICS:
			case AUTO_SHRINK:
			case AUTO_UPDATE_STATISTICS:
			case AUTO_UPDATE_STATISTICS_ASYNC:
			case AVAILABILITY:
			case AVG:
			case BACKUP_PRIORITY:
			case BEGIN_DIALOG:
			case BIGINT:
			case BINARY_BASE64:
			case BINARY_CHECKSUM:
			case BINDING:
			case BLOB_STORAGE:
			case BROKER:
			case BROKER_INSTANCE:
			case BULK_LOGGED:
			case CALLER:
			case CAP_CPU_PERCENT:
			case CAST:
			case CATALOG:
			case CATCH:
			case CHANGE_RETENTION:
			case CHANGE_TRACKING:
			case CHECKSUM:
			case CHECKSUM_AGG:
			case CLEANUP:
			case COLLECTION:
			case COLUMN_MASTER_KEY:
			case COMMITTED:
			case COMPATIBILITY_LEVEL:
			case CONCAT:
			case CONCAT_NULL_YIELDS_NULL:
			case CONTENT:
			case CONTROL:
			case COOKIE:
			case COUNT:
			case COUNT_BIG:
			case COUNTER:
			case CPU:
			case CREATE_NEW:
			case CREATION_DISPOSITION:
			case CREDENTIAL:
			case CRYPTOGRAPHIC:
			case CURSOR_CLOSE_ON_COMMIT:
			case CURSOR_DEFAULT:
			case DATE_CORRELATION_OPTIMIZATION:
			case DATEADD:
			case DATEDIFF:
			case DATENAME:
			case DATEPART:
			case DAYS:
			case DB_CHAINING:
			case DB_FAILOVER:
			case DECRYPTION:
			case DEFAULT_DOUBLE_QUOTE:
			case DEFAULT_FULLTEXT_LANGUAGE:
			case DEFAULT_LANGUAGE:
			case DELAY:
			case DELAYED_DURABILITY:
			case DELETED:
			case DENSE_RANK:
			case DEPENDENTS:
			case DES:
			case DESCRIPTION:
			case DESX:
			case DHCP:
			case DIALOG:
			case DIRECTORY_NAME:
			case DISABLE:
			case DISABLE_BROKER:
			case DISABLED:
			case DISK_DRIVE:
			case DOCUMENT:
			case DYNAMIC:
			case EMERGENCY:
			case EMPTY:
			case ENABLE:
			case ENABLE_BROKER:
			case ENCRYPTED_VALUE:
			case ENCRYPTION:
			case ENDPOINT_URL:
			case ERROR_BROKER_CONVERSATIONS:
			case EXCLUSIVE:
			case EXECUTABLE:
			case EXIST:
			case EXPAND:
			case EXPIRY_DATE:
			case EXPLICIT:
			case FAIL_OPERATION:
			case FAILOVER_MODE:
			case FAILURE:
			case FAILURE_CONDITION_LEVEL:
			case FAST:
			case FAST_FORWARD:
			case FILEGROUP:
			case FILEGROWTH:
			case FILEPATH:
			case FILESTREAM:
			case FILTER:
			case FIRST:
			case FIRST_VALUE:
			case FOLLOWING:
			case FORCE:
			case FORCE_FAILOVER_ALLOW_DATA_LOSS:
			case FORCED:
			case FORMAT:
			case FORWARD_ONLY:
			case FULLSCAN:
			case FULLTEXT:
			case GB:
			case GETDATE:
			case GETUTCDATE:
			case GLOBAL:
			case GO:
			case GROUP_MAX_REQUESTS:
			case GROUPING:
			case GROUPING_ID:
			case HADR:
			case HASH:
			case HEALTH_CHECK_TIMEOUT:
			case HIGH:
			case HONOR_BROKER_PRIORITY:
			case HOURS:
			case IDENTITY_VALUE:
			case IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX:
			case IMMEDIATE:
			case IMPERSONATE:
			case IMPORTANCE:
			case INCREMENTAL:
			case INITIATOR:
			case INPUT:
			case INSENSITIVE:
			case INSERTED:
			case INT:
			case IP:
			case ISOLATION:
			case KB:
			case KEEP:
			case KEEPFIXED:
			case KEY_SOURCE:
			case KEYS:
			case KEYSET:
			case LAG:
			case LAST:
			case LAST_VALUE:
			case LEAD:
			case LEVEL:
			case LIST:
			case LISTENER:
			case LISTENER_URL:
			case LOB_COMPACTION:
			case LOCAL:
			case LOCATION:
			case LOCK:
			case LOCK_ESCALATION:
			case LOGIN:
			case LOOP:
			case LOW:
			case MANUAL:
			case MARK:
			case MATERIALIZED:
			case MAX:
			case MAX_CPU_PERCENT:
			case MAX_DOP:
			case MAX_FILES:
			case MAX_IOPS_PER_VOLUME:
			case MAX_MEMORY_PERCENT:
			case MAX_PROCESSES:
			case MAX_QUEUE_READERS:
			case MAX_ROLLOVER_FILES:
			case MAXDOP:
			case MAXRECURSION:
			case MAXSIZE:
			case MB:
			case MEDIUM:
			case MEMORY_OPTIMIZED_DATA:
			case MESSAGE:
			case MIN:
			case MIN_ACTIVE_ROWVERSION:
			case MIN_CPU_PERCENT:
			case MIN_IOPS_PER_VOLUME:
			case MIN_MEMORY_PERCENT:
			case MINUTES:
			case MIRROR_ADDRESS:
			case MIXED_PAGE_ALLOCATION:
			case MODE:
			case MODIFY:
			case MOVE:
			case MULTI_USER:
			case NAME:
			case NESTED_TRIGGERS:
			case NEW_ACCOUNT:
			case NEW_BROKER:
			case NEW_PASSWORD:
			case NEXT:
			case NO:
			case NO_TRUNCATE:
			case NO_WAIT:
			case NOCOUNT:
			case NODES:
			case NOEXPAND:
			case NON_TRANSACTED_ACCESS:
			case NORECOMPUTE:
			case NORECOVERY:
			case NOWAIT:
			case NTILE:
			case NUMANODE:
			case NUMBER:
			case NUMERIC_ROUNDABORT:
			case OBJECT:
			case OFFLINE:
			case OFFSET:
			case OLD_ACCOUNT:
			case ONLINE:
			case ONLY:
			case OPEN_EXISTING:
			case OPTIMISTIC:
			case OPTIMIZE:
			case OUT:
			case OUTPUT:
			case OWNER:
			case PAGE_VERIFY:
			case PARAMETERIZATION:
			case PARTITION:
			case PARTITIONS:
			case PARTNER:
			case PATH:
			case POISON_MESSAGE_HANDLING:
			case POOL:
			case PORT:
			case PRECEDING:
			case PRIMARY_ROLE:
			case PRIOR:
			case PRIORITY:
			case PRIORITY_LEVEL:
			case PRIVATE:
			case PRIVATE_KEY:
			case PRIVILEGES:
			case PROCEDURE_NAME:
			case PROPERTY:
			case PROVIDER:
			case PROVIDER_KEY_NAME:
			case QUERY:
			case QUEUE:
			case QUEUE_DELAY:
			case QUOTED_IDENTIFIER:
			case RANGE:
			case RANK:
			case RC2:
			case RC4:
			case RC4_128:
			case READ_COMMITTED_SNAPSHOT:
			case READ_ONLY:
			case READ_ONLY_ROUTING_LIST:
			case READ_WRITE:
			case READONLY:
			case REBUILD:
			case RECEIVE:
			case RECOMPILE:
			case RECOVERY:
			case RECURSIVE_TRIGGERS:
			case RELATIVE:
			case REMOTE:
			case REMOTE_SERVICE_NAME:
			case REMOVE:
			case REORGANIZE:
			case REPEATABLE:
			case REPLICA:
			case REQUEST_MAX_CPU_TIME_SEC:
			case REQUEST_MAX_MEMORY_GRANT_PERCENT:
			case REQUEST_MEMORY_GRANT_TIMEOUT_SEC:
			case REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT:
			case RESERVE_DISK_SPACE:
			case RESOURCE:
			case RESOURCE_MANAGER_LOCATION:
			case RESTRICTED_USER:
			case RETENTION:
			case ROBUST:
			case ROOT:
			case ROUTE:
			case ROW:
			case ROW_NUMBER:
			case ROWGUID:
			case ROWS:
			case SAMPLE:
			case SCHEMABINDING:
			case SCOPED:
			case SCROLL:
			case SCROLL_LOCKS:
			case SEARCH:
			case SECONDARY:
			case SECONDARY_ONLY:
			case SECONDARY_ROLE:
			case SECONDS:
			case SECRET:
			case SECURITY_LOG:
			case SEEDING_MODE:
			case SELF:
			case SEMI_SENSITIVE:
			case SEND:
			case SENT:
			case SERIALIZABLE:
			case SESSION_TIMEOUT:
			case SETERROR:
			case SHARE:
			case SHOWPLAN:
			case SIGNATURE:
			case SIMPLE:
			case SINGLE_USER:
			case SIZE:
			case SMALLINT:
			case SNAPSHOT:
			case SPATIAL_WINDOW_MAX_CELLS:
			case STANDBY:
			case START_DATE:
			case STATIC:
			case STATS_STREAM:
			case STATUS:
			case STDEV:
			case STDEVP:
			case STOPLIST:
			case STUFF:
			case SUBJECT:
			case SUM:
			case SUSPEND:
			case SYMMETRIC:
			case SYNCHRONOUS_COMMIT:
			case SYNONYM:
			case TAKE:
			case TARGET_RECOVERY_TIME:
			case TB:
			case TEXTIMAGE_ON:
			case THROW:
			case TIES:
			case TIME:
			case TIMEOUT:
			case TIMER:
			case TINYINT:
			case TORN_PAGE_DETECTION:
			case TRANSFORM_NOISE_WORDS:
			case TRIPLE_DES:
			case TRIPLE_DES_3KEY:
			case TRUSTWORTHY:
			case TRY:
			case TSQL:
			case TWO_DIGIT_YEAR_CUTOFF:
			case TYPE:
			case TYPE_WARNING:
			case UNBOUNDED:
			case UNCOMMITTED:
			case UNKNOWN:
			case UNLIMITED:
			case USING:
			case VALID_XML:
			case VALIDATION:
			case VALUE:
			case VAR:
			case VARP:
			case VIEW_METADATA:
			case VIEWS:
			case WAIT:
			case WELL_FORMED_XML:
			case WORK:
			case WORKLOAD:
			case XML:
			case XMLNAMESPACES:
			case DOUBLE_QUOTE_ID:
			case SQUARE_BRACKET_ID:
			case ID:
				{
				setState(2780);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,214,_ctx) ) {
				case 1:
					{
					setState(2777);
					((Enable_triggerContext)_localctx).schema_id = id();
					setState(2778);
					match(DOT);
					}
					break;
				}
				setState(2782);
				((Enable_triggerContext)_localctx).object_name = id();
				}
				break;
			case DATABASE:
				{
				setState(2783);
				match(DATABASE);
				}
				break;
			case ALL:
				{
				setState(2784);
				match(ALL);
				setState(2785);
				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 Lock_tableContext extends ParserRuleContext {
		public Token seconds;
		public TerminalNode LOCK() { return getToken(TSqlParser.LOCK, 0); }
		public TerminalNode TABLE() { return getToken(TSqlParser.TABLE, 0); }
		public Table_nameContext table_name() {
			return getRuleContext(Table_nameContext.class,0);
		}
		public TerminalNode IN() { return getToken(TSqlParser.IN, 0); }
		public TerminalNode MODE() { return getToken(TSqlParser.MODE, 0); }
		public TerminalNode SHARE() { return getToken(TSqlParser.SHARE, 0); }
		public TerminalNode EXCLUSIVE() { return getToken(TSqlParser.EXCLUSIVE, 0); }
		public TerminalNode WAIT() { return getToken(TSqlParser.WAIT, 0); }
		public TerminalNode NOWAIT() { return getToken(TSqlParser.NOWAIT, 0); }
		public TerminalNode SEMI() { return getToken(TSqlParser.SEMI, 0); }
		public TerminalNode DECIMAL() { return getToken(TSqlParser.DECIMAL, 0); }
		public Lock_tableContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_lock_table; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterLock_table(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitLock_table(this);
		}
	}

	public final Lock_tableContext lock_table() throws RecognitionException {
		Lock_tableContext _localctx = new Lock_tableContext(_ctx, getState());
		enterRule(_localctx, 270, RULE_lock_table);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2788);
			match(LOCK);
			setState(2789);
			match(TABLE);
			setState(2790);
			table_name();
			setState(2791);
			match(IN);
			setState(2792);
			_la = _input.LA(1);
			if ( !(_la==EXCLUSIVE || _la==SHARE) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			setState(2793);
			match(MODE);
			setState(2797);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,216,_ctx) ) {
			case 1:
				{
				setState(2794);
				match(WAIT);
				setState(2795);
				((Lock_tableContext)_localctx).seconds = match(DECIMAL);
				}
				break;
			case 2:
				{
				setState(2796);
				match(NOWAIT);
				}
				break;
			}
			setState(2800);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,217,_ctx) ) {
			case 1:
				{
				setState(2799);
				match(SEMI);
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Truncate_tableContext extends ParserRuleContext {
		public TerminalNode TRUNCATE() { return getToken(TSqlParser.TRUNCATE, 0); }
		public TerminalNode TABLE() { return getToken(TSqlParser.TABLE, 0); }
		public Table_nameContext table_name() {
			return getRuleContext(Table_nameContext.class,0);
		}
		public TerminalNode WITH() { return getToken(TSqlParser.WITH, 0); }
		public List LR_BRACKET() { return getTokens(TSqlParser.LR_BRACKET); }
		public TerminalNode LR_BRACKET(int i) {
			return getToken(TSqlParser.LR_BRACKET, i);
		}
		public TerminalNode PARTITIONS() { return getToken(TSqlParser.PARTITIONS, 0); }
		public List RR_BRACKET() { return getTokens(TSqlParser.RR_BRACKET); }
		public TerminalNode RR_BRACKET(int i) {
			return getToken(TSqlParser.RR_BRACKET, i);
		}
		public List DECIMAL() { return getTokens(TSqlParser.DECIMAL); }
		public TerminalNode DECIMAL(int i) {
			return getToken(TSqlParser.DECIMAL, i);
		}
		public List TO() { return getTokens(TSqlParser.TO); }
		public TerminalNode TO(int i) {
			return getToken(TSqlParser.TO, i);
		}
		public List COMMA() { return getTokens(TSqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(TSqlParser.COMMA, i);
		}
		public Truncate_tableContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_truncate_table; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterTruncate_table(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitTruncate_table(this);
		}
	}

	public final Truncate_tableContext truncate_table() throws RecognitionException {
		Truncate_tableContext _localctx = new Truncate_tableContext(_ctx, getState());
		enterRule(_localctx, 272, RULE_truncate_table);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2802);
			match(TRUNCATE);
			setState(2803);
			match(TABLE);
			setState(2804);
			table_name();
			setState(2824);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,221,_ctx) ) {
			case 1:
				{
				setState(2805);
				match(WITH);
				setState(2806);
				match(LR_BRACKET);
				setState(2807);
				match(PARTITIONS);
				setState(2808);
				match(LR_BRACKET);
				setState(2818); 
				_errHandler.sync(this);
				_la = _input.LA(1);
				do {
					{
					{
					setState(2810);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==COMMA) {
						{
						setState(2809);
						match(COMMA);
						}
					}

					setState(2816);
					_errHandler.sync(this);
					switch ( getInterpreter().adaptivePredict(_input,219,_ctx) ) {
					case 1:
						{
						setState(2812);
						match(DECIMAL);
						}
						break;
					case 2:
						{
						setState(2813);
						match(DECIMAL);
						setState(2814);
						match(TO);
						setState(2815);
						match(DECIMAL);
						}
						break;
					}
					}
					}
					setState(2820); 
					_errHandler.sync(this);
					_la = _input.LA(1);
				} while ( _la==DECIMAL || _la==COMMA );
				setState(2822);
				match(RR_BRACKET);
				setState(2823);
				match(RR_BRACKET);
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Create_column_master_keyContext extends ParserRuleContext {
		public IdContext key_name;
		public Token key_store_provider_name;
		public Token key_path;
		public TerminalNode CREATE() { return getToken(TSqlParser.CREATE, 0); }
		public TerminalNode COLUMN() { return getToken(TSqlParser.COLUMN, 0); }
		public TerminalNode MASTER() { return getToken(TSqlParser.MASTER, 0); }
		public TerminalNode KEY() { return getToken(TSqlParser.KEY, 0); }
		public TerminalNode WITH() { return getToken(TSqlParser.WITH, 0); }
		public TerminalNode LR_BRACKET() { return getToken(TSqlParser.LR_BRACKET, 0); }
		public TerminalNode KEY_STORE_PROVIDER_NAME() { return getToken(TSqlParser.KEY_STORE_PROVIDER_NAME, 0); }
		public List EQUAL() { return getTokens(TSqlParser.EQUAL); }
		public TerminalNode EQUAL(int i) {
			return getToken(TSqlParser.EQUAL, i);
		}
		public TerminalNode COMMA() { return getToken(TSqlParser.COMMA, 0); }
		public TerminalNode KEY_PATH() { return getToken(TSqlParser.KEY_PATH, 0); }
		public TerminalNode RR_BRACKET() { return getToken(TSqlParser.RR_BRACKET, 0); }
		public IdContext id() {
			return getRuleContext(IdContext.class,0);
		}
		public List STRING() { return getTokens(TSqlParser.STRING); }
		public TerminalNode STRING(int i) {
			return getToken(TSqlParser.STRING, i);
		}
		public Create_column_master_keyContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_create_column_master_key; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterCreate_column_master_key(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitCreate_column_master_key(this);
		}
	}

	public final Create_column_master_keyContext create_column_master_key() throws RecognitionException {
		Create_column_master_keyContext _localctx = new Create_column_master_keyContext(_ctx, getState());
		enterRule(_localctx, 274, RULE_create_column_master_key);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2826);
			match(CREATE);
			setState(2827);
			match(COLUMN);
			setState(2828);
			match(MASTER);
			setState(2829);
			match(KEY);
			setState(2830);
			((Create_column_master_keyContext)_localctx).key_name = id();
			setState(2831);
			match(WITH);
			setState(2832);
			match(LR_BRACKET);
			setState(2833);
			match(KEY_STORE_PROVIDER_NAME);
			setState(2834);
			match(EQUAL);
			setState(2835);
			((Create_column_master_keyContext)_localctx).key_store_provider_name = match(STRING);
			setState(2836);
			match(COMMA);
			setState(2837);
			match(KEY_PATH);
			setState(2838);
			match(EQUAL);
			setState(2839);
			((Create_column_master_keyContext)_localctx).key_path = match(STRING);
			setState(2840);
			match(RR_BRACKET);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Alter_credentialContext extends ParserRuleContext {
		public IdContext credential_name;
		public Token identity_name;
		public Token secret;
		public TerminalNode ALTER() { return getToken(TSqlParser.ALTER, 0); }
		public TerminalNode CREDENTIAL() { return getToken(TSqlParser.CREDENTIAL, 0); }
		public TerminalNode WITH() { return getToken(TSqlParser.WITH, 0); }
		public TerminalNode IDENTITY() { return getToken(TSqlParser.IDENTITY, 0); }
		public List EQUAL() { return getTokens(TSqlParser.EQUAL); }
		public TerminalNode EQUAL(int i) {
			return getToken(TSqlParser.EQUAL, i);
		}
		public IdContext id() {
			return getRuleContext(IdContext.class,0);
		}
		public List STRING() { return getTokens(TSqlParser.STRING); }
		public TerminalNode STRING(int i) {
			return getToken(TSqlParser.STRING, i);
		}
		public TerminalNode COMMA() { return getToken(TSqlParser.COMMA, 0); }
		public TerminalNode SECRET() { return getToken(TSqlParser.SECRET, 0); }
		public Alter_credentialContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alter_credential; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterAlter_credential(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitAlter_credential(this);
		}
	}

	public final Alter_credentialContext alter_credential() throws RecognitionException {
		Alter_credentialContext _localctx = new Alter_credentialContext(_ctx, getState());
		enterRule(_localctx, 276, RULE_alter_credential);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2842);
			match(ALTER);
			setState(2843);
			match(CREDENTIAL);
			setState(2844);
			((Alter_credentialContext)_localctx).credential_name = id();
			setState(2845);
			match(WITH);
			setState(2846);
			match(IDENTITY);
			setState(2847);
			match(EQUAL);
			setState(2848);
			((Alter_credentialContext)_localctx).identity_name = match(STRING);
			setState(2853);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==COMMA) {
				{
				setState(2849);
				match(COMMA);
				setState(2850);
				match(SECRET);
				setState(2851);
				match(EQUAL);
				setState(2852);
				((Alter_credentialContext)_localctx).secret = match(STRING);
				}
			}

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

	public static class Create_credentialContext extends ParserRuleContext {
		public IdContext credential_name;
		public Token identity_name;
		public Token secret;
		public IdContext cryptographic_provider_name;
		public TerminalNode CREATE() { return getToken(TSqlParser.CREATE, 0); }
		public TerminalNode CREDENTIAL() { return getToken(TSqlParser.CREDENTIAL, 0); }
		public TerminalNode WITH() { return getToken(TSqlParser.WITH, 0); }
		public TerminalNode IDENTITY() { return getToken(TSqlParser.IDENTITY, 0); }
		public List EQUAL() { return getTokens(TSqlParser.EQUAL); }
		public TerminalNode EQUAL(int i) {
			return getToken(TSqlParser.EQUAL, i);
		}
		public List id() {
			return getRuleContexts(IdContext.class);
		}
		public IdContext id(int i) {
			return getRuleContext(IdContext.class,i);
		}
		public List STRING() { return getTokens(TSqlParser.STRING); }
		public TerminalNode STRING(int i) {
			return getToken(TSqlParser.STRING, i);
		}
		public TerminalNode COMMA() { return getToken(TSqlParser.COMMA, 0); }
		public TerminalNode SECRET() { return getToken(TSqlParser.SECRET, 0); }
		public TerminalNode FOR() { return getToken(TSqlParser.FOR, 0); }
		public TerminalNode CRYPTOGRAPHIC() { return getToken(TSqlParser.CRYPTOGRAPHIC, 0); }
		public TerminalNode PROVIDER() { return getToken(TSqlParser.PROVIDER, 0); }
		public Create_credentialContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_create_credential; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterCreate_credential(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitCreate_credential(this);
		}
	}

	public final Create_credentialContext create_credential() throws RecognitionException {
		Create_credentialContext _localctx = new Create_credentialContext(_ctx, getState());
		enterRule(_localctx, 278, RULE_create_credential);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2855);
			match(CREATE);
			setState(2856);
			match(CREDENTIAL);
			setState(2857);
			((Create_credentialContext)_localctx).credential_name = id();
			setState(2858);
			match(WITH);
			setState(2859);
			match(IDENTITY);
			setState(2860);
			match(EQUAL);
			setState(2861);
			((Create_credentialContext)_localctx).identity_name = match(STRING);
			setState(2866);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==COMMA) {
				{
				setState(2862);
				match(COMMA);
				setState(2863);
				match(SECRET);
				setState(2864);
				match(EQUAL);
				setState(2865);
				((Create_credentialContext)_localctx).secret = match(STRING);
				}
			}

			setState(2872);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==FOR) {
				{
				setState(2868);
				match(FOR);
				setState(2869);
				match(CRYPTOGRAPHIC);
				setState(2870);
				match(PROVIDER);
				setState(2871);
				((Create_credentialContext)_localctx).cryptographic_provider_name = id();
				}
			}

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

	public static class Alter_cryptographic_providerContext extends ParserRuleContext {
		public IdContext provider_name;
		public Token crypto_provider_ddl_file;
		public TerminalNode ALTER() { return getToken(TSqlParser.ALTER, 0); }
		public TerminalNode CRYPTOGRAPHIC() { return getToken(TSqlParser.CRYPTOGRAPHIC, 0); }
		public TerminalNode PROVIDER() { return getToken(TSqlParser.PROVIDER, 0); }
		public IdContext id() {
			return getRuleContext(IdContext.class,0);
		}
		public TerminalNode FROM() { return getToken(TSqlParser.FROM, 0); }
		public TerminalNode FILE() { return getToken(TSqlParser.FILE, 0); }
		public TerminalNode EQUAL() { return getToken(TSqlParser.EQUAL, 0); }
		public TerminalNode STRING() { return getToken(TSqlParser.STRING, 0); }
		public TerminalNode ENABLE() { return getToken(TSqlParser.ENABLE, 0); }
		public TerminalNode DISABLE() { return getToken(TSqlParser.DISABLE, 0); }
		public Alter_cryptographic_providerContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alter_cryptographic_provider; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterAlter_cryptographic_provider(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitAlter_cryptographic_provider(this);
		}
	}

	public final Alter_cryptographic_providerContext alter_cryptographic_provider() throws RecognitionException {
		Alter_cryptographic_providerContext _localctx = new Alter_cryptographic_providerContext(_ctx, getState());
		enterRule(_localctx, 280, RULE_alter_cryptographic_provider);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2874);
			match(ALTER);
			setState(2875);
			match(CRYPTOGRAPHIC);
			setState(2876);
			match(PROVIDER);
			setState(2877);
			((Alter_cryptographic_providerContext)_localctx).provider_name = id();
			setState(2882);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==FROM) {
				{
				setState(2878);
				match(FROM);
				setState(2879);
				match(FILE);
				setState(2880);
				match(EQUAL);
				setState(2881);
				((Alter_cryptographic_providerContext)_localctx).crypto_provider_ddl_file = match(STRING);
				}
			}

			setState(2885);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,226,_ctx) ) {
			case 1:
				{
				setState(2884);
				_la = _input.LA(1);
				if ( !(_la==DISABLE || _la==ENABLE) ) {
				_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 Create_cryptographic_providerContext extends ParserRuleContext {
		public IdContext provider_name;
		public Token path_of_DLL;
		public TerminalNode CREATE() { return getToken(TSqlParser.CREATE, 0); }
		public TerminalNode CRYPTOGRAPHIC() { return getToken(TSqlParser.CRYPTOGRAPHIC, 0); }
		public TerminalNode PROVIDER() { return getToken(TSqlParser.PROVIDER, 0); }
		public TerminalNode FROM() { return getToken(TSqlParser.FROM, 0); }
		public TerminalNode FILE() { return getToken(TSqlParser.FILE, 0); }
		public TerminalNode EQUAL() { return getToken(TSqlParser.EQUAL, 0); }
		public IdContext id() {
			return getRuleContext(IdContext.class,0);
		}
		public TerminalNode STRING() { return getToken(TSqlParser.STRING, 0); }
		public Create_cryptographic_providerContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_create_cryptographic_provider; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterCreate_cryptographic_provider(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitCreate_cryptographic_provider(this);
		}
	}

	public final Create_cryptographic_providerContext create_cryptographic_provider() throws RecognitionException {
		Create_cryptographic_providerContext _localctx = new Create_cryptographic_providerContext(_ctx, getState());
		enterRule(_localctx, 282, RULE_create_cryptographic_provider);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2887);
			match(CREATE);
			setState(2888);
			match(CRYPTOGRAPHIC);
			setState(2889);
			match(PROVIDER);
			setState(2890);
			((Create_cryptographic_providerContext)_localctx).provider_name = id();
			setState(2891);
			match(FROM);
			setState(2892);
			match(FILE);
			setState(2893);
			match(EQUAL);
			setState(2894);
			((Create_cryptographic_providerContext)_localctx).path_of_DLL = match(STRING);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Create_event_notificationContext extends ParserRuleContext {
		public IdContext event_notification_name;
		public IdContext queue_name;
		public IdContext event_type_or_group;
		public Token broker_service;
		public Token broker_service_specifier_or_current_database;
		public TerminalNode CREATE() { return getToken(TSqlParser.CREATE, 0); }
		public TerminalNode EVENT() { return getToken(TSqlParser.EVENT, 0); }
		public TerminalNode NOTIFICATION() { return getToken(TSqlParser.NOTIFICATION, 0); }
		public TerminalNode ON() { return getToken(TSqlParser.ON, 0); }
		public TerminalNode FOR() { return getToken(TSqlParser.FOR, 0); }
		public TerminalNode TO() { return getToken(TSqlParser.TO, 0); }
		public TerminalNode SERVICE() { return getToken(TSqlParser.SERVICE, 0); }
		public List COMMA() { return getTokens(TSqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(TSqlParser.COMMA, i);
		}
		public List id() {
			return getRuleContexts(IdContext.class);
		}
		public IdContext id(int i) {
			return getRuleContext(IdContext.class,i);
		}
		public List STRING() { return getTokens(TSqlParser.STRING); }
		public TerminalNode STRING(int i) {
			return getToken(TSqlParser.STRING, i);
		}
		public TerminalNode SERVER() { return getToken(TSqlParser.SERVER, 0); }
		public TerminalNode DATABASE() { return getToken(TSqlParser.DATABASE, 0); }
		public TerminalNode QUEUE() { return getToken(TSqlParser.QUEUE, 0); }
		public TerminalNode WITH() { return getToken(TSqlParser.WITH, 0); }
		public TerminalNode FAN_IN() { return getToken(TSqlParser.FAN_IN, 0); }
		public Create_event_notificationContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_create_event_notification; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterCreate_event_notification(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitCreate_event_notification(this);
		}
	}

	public final Create_event_notificationContext create_event_notification() throws RecognitionException {
		Create_event_notificationContext _localctx = new Create_event_notificationContext(_ctx, getState());
		enterRule(_localctx, 284, RULE_create_event_notification);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2896);
			match(CREATE);
			setState(2897);
			match(EVENT);
			setState(2898);
			match(NOTIFICATION);
			setState(2899);
			((Create_event_notificationContext)_localctx).event_notification_name = id();
			setState(2900);
			match(ON);
			setState(2905);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case SERVER:
				{
				setState(2901);
				match(SERVER);
				}
				break;
			case DATABASE:
				{
				setState(2902);
				match(DATABASE);
				}
				break;
			case QUEUE:
				{
				setState(2903);
				match(QUEUE);
				setState(2904);
				((Create_event_notificationContext)_localctx).queue_name = id();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			setState(2909);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==WITH) {
				{
				setState(2907);
				match(WITH);
				setState(2908);
				match(FAN_IN);
				}
			}

			setState(2911);
			match(FOR);
			setState(2916); 
			_errHandler.sync(this);
			_la = _input.LA(1);
			do {
				{
				{
				setState(2913);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==COMMA) {
					{
					setState(2912);
					match(COMMA);
					}
				}

				setState(2915);
				((Create_event_notificationContext)_localctx).event_type_or_group = id();
				}
				}
				setState(2918); 
				_errHandler.sync(this);
				_la = _input.LA(1);
			} while ( _la==CALLED || ((((_la - 81)) & ~0x3f) == 0 && ((1L << (_la - 81)) & ((1L << (DATA_COMPRESSION - 81)) | (1L << (EVENTDATA - 81)) | (1L << (FILENAME - 81)) | (1L << (FILLFACTOR - 81)) | (1L << (FORCESEEK - 81)))) != 0) || ((((_la - 159)) & ~0x3f) == 0 && ((1L << (_la - 159)) & ((1L << (INIT - 159)) | (1L << (KEY - 159)) | (1L << (MASTER - 159)) | (1L << (MAX_MEMORY - 159)))) != 0) || ((((_la - 226)) & ~0x3f) == 0 && ((1L << (_la - 226)) & ((1L << (OFFSETS - 226)) | (1L << (PAGE - 226)) | (1L << (PUBLIC - 226)) | (1L << (R - 226)) | (1L << (RAW - 226)) | (1L << (RETURN - 226)) | (1L << (RETURNS - 226)) | (1L << (ROWCOUNT - 226)))) != 0) || ((((_la - 296)) & ~0x3f) == 0 && ((1L << (_la - 296)) & ((1L << (SAFETY - 296)) | (1L << (SERVER - 296)) | (1L << (SID - 296)) | (1L << (SOURCE - 296)) | (1L << (STATE - 296)) | (1L << (START - 296)) | (1L << (TARGET - 296)))) != 0) || ((((_la - 384)) & ~0x3f) == 0 && ((1L << (_la - 384)) & ((1L << (ABSOLUTE - 384)) | (1L << (ACCENT_SENSITIVITY - 384)) | (1L << (ACTION - 384)) | (1L << (ACTIVATION - 384)) | (1L << (ACTIVE - 384)) | (1L << (ADDRESS - 384)) | (1L << (AES_128 - 384)) | (1L << (AES_192 - 384)) | (1L << (AES_256 - 384)) | (1L << (AFFINITY - 384)) | (1L << (AFTER - 384)) | (1L << (AGGREGATE - 384)) | (1L << (ALGORITHM - 384)) | (1L << (ALLOW_ENCRYPTED_VALUE_MODIFICATIONS - 384)) | (1L << (ALLOW_SNAPSHOT_ISOLATION - 384)) | (1L << (ALLOWED - 384)) | (1L << (ANSI_NULL_DEFAULT - 384)) | (1L << (ANSI_NULLS - 384)) | (1L << (ANSI_PADDING - 384)) | (1L << (ANSI_WARNINGS - 384)) | (1L << (APPLICATION_LOG - 384)) | (1L << (APPLY - 384)) | (1L << (ARITHABORT - 384)) | (1L << (ASSEMBLY - 384)) | (1L << (AUDIT - 384)) | (1L << (AUDIT_GUID - 384)) | (1L << (AUTO - 384)) | (1L << (AUTO_CLEANUP - 384)) | (1L << (AUTO_CLOSE - 384)) | (1L << (AUTO_CREATE_STATISTICS - 384)) | (1L << (AUTO_SHRINK - 384)) | (1L << (AUTO_UPDATE_STATISTICS - 384)) | (1L << (AUTO_UPDATE_STATISTICS_ASYNC - 384)) | (1L << (AVAILABILITY - 384)) | (1L << (AVG - 384)) | (1L << (BACKUP_PRIORITY - 384)) | (1L << (BEGIN_DIALOG - 384)) | (1L << (BIGINT - 384)) | (1L << (BINARY_BASE64 - 384)) | (1L << (BINARY_CHECKSUM - 384)) | (1L << (BINDING - 384)) | (1L << (BLOB_STORAGE - 384)) | (1L << (BROKER - 384)) | (1L << (BROKER_INSTANCE - 384)) | (1L << (BULK_LOGGED - 384)) | (1L << (CALLER - 384)) | (1L << (CAP_CPU_PERCENT - 384)) | (1L << (CAST - 384)) | (1L << (CATALOG - 384)) | (1L << (CATCH - 384)) | (1L << (CHANGE_RETENTION - 384)) | (1L << (CHANGE_TRACKING - 384)) | (1L << (CHECKSUM - 384)) | (1L << (CHECKSUM_AGG - 384)) | (1L << (CLEANUP - 384)) | (1L << (COLLECTION - 384)) | (1L << (COLUMN_MASTER_KEY - 384)) | (1L << (COMMITTED - 384)) | (1L << (COMPATIBILITY_LEVEL - 384)) | (1L << (CONCAT - 384)) | (1L << (CONCAT_NULL_YIELDS_NULL - 384)) | (1L << (CONTENT - 384)) | (1L << (CONTROL - 384)) | (1L << (COOKIE - 384)))) != 0) || ((((_la - 448)) & ~0x3f) == 0 && ((1L << (_la - 448)) & ((1L << (COUNT - 448)) | (1L << (COUNT_BIG - 448)) | (1L << (COUNTER - 448)) | (1L << (CPU - 448)) | (1L << (CREATE_NEW - 448)) | (1L << (CREATION_DISPOSITION - 448)) | (1L << (CREDENTIAL - 448)) | (1L << (CRYPTOGRAPHIC - 448)) | (1L << (CURSOR_CLOSE_ON_COMMIT - 448)) | (1L << (CURSOR_DEFAULT - 448)) | (1L << (DATE_CORRELATION_OPTIMIZATION - 448)) | (1L << (DATEADD - 448)) | (1L << (DATEDIFF - 448)) | (1L << (DATENAME - 448)) | (1L << (DATEPART - 448)) | (1L << (DAYS - 448)) | (1L << (DB_CHAINING - 448)) | (1L << (DB_FAILOVER - 448)) | (1L << (DECRYPTION - 448)) | (1L << (DEFAULT_DOUBLE_QUOTE - 448)) | (1L << (DEFAULT_FULLTEXT_LANGUAGE - 448)) | (1L << (DEFAULT_LANGUAGE - 448)) | (1L << (DELAY - 448)) | (1L << (DELAYED_DURABILITY - 448)) | (1L << (DELETED - 448)) | (1L << (DENSE_RANK - 448)) | (1L << (DEPENDENTS - 448)) | (1L << (DES - 448)) | (1L << (DESCRIPTION - 448)) | (1L << (DESX - 448)) | (1L << (DHCP - 448)) | (1L << (DIALOG - 448)) | (1L << (DIRECTORY_NAME - 448)) | (1L << (DISABLE - 448)) | (1L << (DISABLE_BROKER - 448)) | (1L << (DISABLED - 448)) | (1L << (DISK_DRIVE - 448)) | (1L << (DOCUMENT - 448)) | (1L << (DYNAMIC - 448)) | (1L << (EMERGENCY - 448)) | (1L << (EMPTY - 448)) | (1L << (ENABLE - 448)) | (1L << (ENABLE_BROKER - 448)) | (1L << (ENCRYPTED_VALUE - 448)) | (1L << (ENCRYPTION - 448)) | (1L << (ENDPOINT_URL - 448)) | (1L << (ERROR_BROKER_CONVERSATIONS - 448)) | (1L << (EXCLUSIVE - 448)) | (1L << (EXECUTABLE - 448)) | (1L << (EXIST - 448)) | (1L << (EXPAND - 448)) | (1L << (EXPIRY_DATE - 448)) | (1L << (EXPLICIT - 448)) | (1L << (FAIL_OPERATION - 448)) | (1L << (FAILOVER_MODE - 448)) | (1L << (FAILURE - 448)) | (1L << (FAILURE_CONDITION_LEVEL - 448)) | (1L << (FAST - 448)) | (1L << (FAST_FORWARD - 448)) | (1L << (FILEGROUP - 448)) | (1L << (FILEGROWTH - 448)) | (1L << (FILEPATH - 448)) | (1L << (FILESTREAM - 448)))) != 0) || ((((_la - 512)) & ~0x3f) == 0 && ((1L << (_la - 512)) & ((1L << (FILTER - 512)) | (1L << (FIRST - 512)) | (1L << (FIRST_VALUE - 512)) | (1L << (FOLLOWING - 512)) | (1L << (FORCE - 512)) | (1L << (FORCE_FAILOVER_ALLOW_DATA_LOSS - 512)) | (1L << (FORCED - 512)) | (1L << (FORMAT - 512)) | (1L << (FORWARD_ONLY - 512)) | (1L << (FULLSCAN - 512)) | (1L << (FULLTEXT - 512)) | (1L << (GB - 512)) | (1L << (GETDATE - 512)) | (1L << (GETUTCDATE - 512)) | (1L << (GLOBAL - 512)) | (1L << (GO - 512)) | (1L << (GROUP_MAX_REQUESTS - 512)) | (1L << (GROUPING - 512)) | (1L << (GROUPING_ID - 512)) | (1L << (HADR - 512)) | (1L << (HASH - 512)) | (1L << (HEALTH_CHECK_TIMEOUT - 512)) | (1L << (HIGH - 512)) | (1L << (HONOR_BROKER_PRIORITY - 512)) | (1L << (HOURS - 512)) | (1L << (IDENTITY_VALUE - 512)) | (1L << (IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX - 512)) | (1L << (IMMEDIATE - 512)) | (1L << (IMPERSONATE - 512)) | (1L << (IMPORTANCE - 512)) | (1L << (INCREMENTAL - 512)) | (1L << (INITIATOR - 512)) | (1L << (INPUT - 512)) | (1L << (INSENSITIVE - 512)) | (1L << (INSERTED - 512)) | (1L << (INT - 512)) | (1L << (IP - 512)) | (1L << (ISOLATION - 512)) | (1L << (KB - 512)) | (1L << (KEEP - 512)) | (1L << (KEEPFIXED - 512)) | (1L << (KEY_SOURCE - 512)) | (1L << (KEYS - 512)) | (1L << (KEYSET - 512)) | (1L << (LAG - 512)) | (1L << (LAST - 512)) | (1L << (LAST_VALUE - 512)) | (1L << (LEAD - 512)) | (1L << (LEVEL - 512)) | (1L << (LIST - 512)) | (1L << (LISTENER - 512)) | (1L << (LISTENER_URL - 512)) | (1L << (LOB_COMPACTION - 512)) | (1L << (LOCAL - 512)) | (1L << (LOCATION - 512)) | (1L << (LOCK - 512)) | (1L << (LOCK_ESCALATION - 512)) | (1L << (LOGIN - 512)) | (1L << (LOOP - 512)) | (1L << (LOW - 512)) | (1L << (MANUAL - 512)) | (1L << (MARK - 512)))) != 0) || ((((_la - 576)) & ~0x3f) == 0 && ((1L << (_la - 576)) & ((1L << (MATERIALIZED - 576)) | (1L << (MAX - 576)) | (1L << (MAX_CPU_PERCENT - 576)) | (1L << (MAX_DOP - 576)) | (1L << (MAX_FILES - 576)) | (1L << (MAX_IOPS_PER_VOLUME - 576)) | (1L << (MAX_MEMORY_PERCENT - 576)) | (1L << (MAX_PROCESSES - 576)) | (1L << (MAX_QUEUE_READERS - 576)) | (1L << (MAX_ROLLOVER_FILES - 576)) | (1L << (MAXDOP - 576)) | (1L << (MAXRECURSION - 576)) | (1L << (MAXSIZE - 576)) | (1L << (MB - 576)) | (1L << (MEDIUM - 576)) | (1L << (MEMORY_OPTIMIZED_DATA - 576)) | (1L << (MESSAGE - 576)) | (1L << (MIN - 576)) | (1L << (MIN_ACTIVE_ROWVERSION - 576)) | (1L << (MIN_CPU_PERCENT - 576)) | (1L << (MIN_IOPS_PER_VOLUME - 576)) | (1L << (MIN_MEMORY_PERCENT - 576)) | (1L << (MINUTES - 576)) | (1L << (MIRROR_ADDRESS - 576)) | (1L << (MIXED_PAGE_ALLOCATION - 576)) | (1L << (MODE - 576)) | (1L << (MODIFY - 576)) | (1L << (MOVE - 576)) | (1L << (MULTI_USER - 576)) | (1L << (NAME - 576)) | (1L << (NESTED_TRIGGERS - 576)) | (1L << (NEW_ACCOUNT - 576)) | (1L << (NEW_BROKER - 576)) | (1L << (NEW_PASSWORD - 576)) | (1L << (NEXT - 576)) | (1L << (NO - 576)) | (1L << (NO_TRUNCATE - 576)) | (1L << (NO_WAIT - 576)) | (1L << (NOCOUNT - 576)) | (1L << (NODES - 576)) | (1L << (NOEXPAND - 576)) | (1L << (NON_TRANSACTED_ACCESS - 576)) | (1L << (NORECOMPUTE - 576)) | (1L << (NORECOVERY - 576)) | (1L << (NOWAIT - 576)) | (1L << (NTILE - 576)) | (1L << (NUMANODE - 576)) | (1L << (NUMBER - 576)) | (1L << (NUMERIC_ROUNDABORT - 576)) | (1L << (OBJECT - 576)) | (1L << (OFFLINE - 576)) | (1L << (OFFSET - 576)) | (1L << (OLD_ACCOUNT - 576)) | (1L << (ONLINE - 576)) | (1L << (ONLY - 576)) | (1L << (OPEN_EXISTING - 576)) | (1L << (OPTIMISTIC - 576)) | (1L << (OPTIMIZE - 576)) | (1L << (OUT - 576)) | (1L << (OUTPUT - 576)) | (1L << (OWNER - 576)) | (1L << (PAGE_VERIFY - 576)) | (1L << (PARAMETERIZATION - 576)) | (1L << (PARTITION - 576)))) != 0) || ((((_la - 640)) & ~0x3f) == 0 && ((1L << (_la - 640)) & ((1L << (PARTITIONS - 640)) | (1L << (PARTNER - 640)) | (1L << (PATH - 640)) | (1L << (POISON_MESSAGE_HANDLING - 640)) | (1L << (POOL - 640)) | (1L << (PORT - 640)) | (1L << (PRECEDING - 640)) | (1L << (PRIMARY_ROLE - 640)) | (1L << (PRIOR - 640)) | (1L << (PRIORITY - 640)) | (1L << (PRIORITY_LEVEL - 640)) | (1L << (PRIVATE - 640)) | (1L << (PRIVATE_KEY - 640)) | (1L << (PRIVILEGES - 640)) | (1L << (PROCEDURE_NAME - 640)) | (1L << (PROPERTY - 640)) | (1L << (PROVIDER - 640)) | (1L << (PROVIDER_KEY_NAME - 640)) | (1L << (QUERY - 640)) | (1L << (QUEUE - 640)) | (1L << (QUEUE_DELAY - 640)) | (1L << (QUOTED_IDENTIFIER - 640)) | (1L << (RANGE - 640)) | (1L << (RANK - 640)) | (1L << (RC2 - 640)) | (1L << (RC4 - 640)) | (1L << (RC4_128 - 640)) | (1L << (READ_COMMITTED_SNAPSHOT - 640)) | (1L << (READ_ONLY - 640)) | (1L << (READ_ONLY_ROUTING_LIST - 640)) | (1L << (READ_WRITE - 640)) | (1L << (READONLY - 640)) | (1L << (REBUILD - 640)) | (1L << (RECEIVE - 640)) | (1L << (RECOMPILE - 640)) | (1L << (RECOVERY - 640)) | (1L << (RECURSIVE_TRIGGERS - 640)) | (1L << (RELATIVE - 640)) | (1L << (REMOTE - 640)) | (1L << (REMOTE_SERVICE_NAME - 640)) | (1L << (REMOVE - 640)) | (1L << (REORGANIZE - 640)) | (1L << (REPEATABLE - 640)) | (1L << (REPLICA - 640)) | (1L << (REQUEST_MAX_CPU_TIME_SEC - 640)) | (1L << (REQUEST_MAX_MEMORY_GRANT_PERCENT - 640)) | (1L << (REQUEST_MEMORY_GRANT_TIMEOUT_SEC - 640)) | (1L << (REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT - 640)) | (1L << (RESERVE_DISK_SPACE - 640)) | (1L << (RESOURCE - 640)) | (1L << (RESOURCE_MANAGER_LOCATION - 640)) | (1L << (RESTRICTED_USER - 640)) | (1L << (RETENTION - 640)) | (1L << (ROBUST - 640)) | (1L << (ROOT - 640)) | (1L << (ROUTE - 640)) | (1L << (ROW - 640)) | (1L << (ROW_NUMBER - 640)) | (1L << (ROWGUID - 640)) | (1L << (ROWS - 640)) | (1L << (SAMPLE - 640)) | (1L << (SCHEMABINDING - 640)) | (1L << (SCOPED - 640)) | (1L << (SCROLL - 640)))) != 0) || ((((_la - 704)) & ~0x3f) == 0 && ((1L << (_la - 704)) & ((1L << (SCROLL_LOCKS - 704)) | (1L << (SEARCH - 704)) | (1L << (SECONDARY - 704)) | (1L << (SECONDARY_ONLY - 704)) | (1L << (SECONDARY_ROLE - 704)) | (1L << (SECONDS - 704)) | (1L << (SECRET - 704)) | (1L << (SECURITY_LOG - 704)) | (1L << (SEEDING_MODE - 704)) | (1L << (SELF - 704)) | (1L << (SEMI_SENSITIVE - 704)) | (1L << (SEND - 704)) | (1L << (SENT - 704)) | (1L << (SERIALIZABLE - 704)) | (1L << (SESSION_TIMEOUT - 704)) | (1L << (SETERROR - 704)) | (1L << (SHARE - 704)) | (1L << (SHOWPLAN - 704)) | (1L << (SIGNATURE - 704)) | (1L << (SIMPLE - 704)) | (1L << (SINGLE_USER - 704)) | (1L << (SIZE - 704)) | (1L << (SMALLINT - 704)) | (1L << (SNAPSHOT - 704)) | (1L << (SPATIAL_WINDOW_MAX_CELLS - 704)) | (1L << (STANDBY - 704)) | (1L << (START_DATE - 704)) | (1L << (STATIC - 704)) | (1L << (STATS_STREAM - 704)) | (1L << (STATUS - 704)) | (1L << (STDEV - 704)) | (1L << (STDEVP - 704)) | (1L << (STOPLIST - 704)) | (1L << (STUFF - 704)) | (1L << (SUBJECT - 704)) | (1L << (SUM - 704)) | (1L << (SUSPEND - 704)) | (1L << (SYMMETRIC - 704)) | (1L << (SYNCHRONOUS_COMMIT - 704)) | (1L << (SYNONYM - 704)) | (1L << (TAKE - 704)) | (1L << (TARGET_RECOVERY_TIME - 704)) | (1L << (TB - 704)) | (1L << (TEXTIMAGE_ON - 704)) | (1L << (THROW - 704)) | (1L << (TIES - 704)) | (1L << (TIME - 704)) | (1L << (TIMEOUT - 704)) | (1L << (TIMER - 704)) | (1L << (TINYINT - 704)) | (1L << (TORN_PAGE_DETECTION - 704)) | (1L << (TRANSFORM_NOISE_WORDS - 704)) | (1L << (TRIPLE_DES - 704)) | (1L << (TRIPLE_DES_3KEY - 704)) | (1L << (TRUSTWORTHY - 704)) | (1L << (TRY - 704)) | (1L << (TSQL - 704)) | (1L << (TWO_DIGIT_YEAR_CUTOFF - 704)) | (1L << (TYPE - 704)) | (1L << (TYPE_WARNING - 704)) | (1L << (UNBOUNDED - 704)) | (1L << (UNCOMMITTED - 704)) | (1L << (UNKNOWN - 704)) | (1L << (UNLIMITED - 704)))) != 0) || ((((_la - 768)) & ~0x3f) == 0 && ((1L << (_la - 768)) & ((1L << (USING - 768)) | (1L << (VALID_XML - 768)) | (1L << (VALIDATION - 768)) | (1L << (VALUE - 768)) | (1L << (VAR - 768)) | (1L << (VARP - 768)) | (1L << (VIEW_METADATA - 768)) | (1L << (VIEWS - 768)) | (1L << (WAIT - 768)) | (1L << (WELL_FORMED_XML - 768)) | (1L << (WORK - 768)) | (1L << (WORKLOAD - 768)) | (1L << (XML - 768)) | (1L << (XMLNAMESPACES - 768)) | (1L << (DOUBLE_QUOTE_ID - 768)) | (1L << (SQUARE_BRACKET_ID - 768)) | (1L << (ID - 768)) | (1L << (COMMA - 768)))) != 0) );
			setState(2920);
			match(TO);
			setState(2921);
			match(SERVICE);
			setState(2922);
			((Create_event_notificationContext)_localctx).broker_service = match(STRING);
			setState(2923);
			match(COMMA);
			setState(2924);
			((Create_event_notificationContext)_localctx).broker_service_specifier_or_current_database = match(STRING);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Create_or_alter_event_sessionContext extends ParserRuleContext {
		public IdContext event_session_name;
		public IdContext event_module_guid;
		public IdContext event_package_name;
		public IdContext event_name;
		public IdContext event_customizable_attributue;
		public IdContext action_name;
		public IdContext target_name;
		public IdContext target_parameter_name;
		public Token max_memory;
		public Token max_dispatch_latency_seconds;
		public Token max_event_size;
		public List EVENT() { return getTokens(TSqlParser.EVENT); }
		public TerminalNode EVENT(int i) {
			return getToken(TSqlParser.EVENT, i);
		}
		public TerminalNode SESSION() { return getToken(TSqlParser.SESSION, 0); }
		public List ON() { return getTokens(TSqlParser.ON); }
		public TerminalNode ON(int i) {
			return getToken(TSqlParser.ON, i);
		}
		public TerminalNode SERVER() { return getToken(TSqlParser.SERVER, 0); }
		public TerminalNode CREATE() { return getToken(TSqlParser.CREATE, 0); }
		public TerminalNode ALTER() { return getToken(TSqlParser.ALTER, 0); }
		public List id() {
			return getRuleContexts(IdContext.class);
		}
		public IdContext id(int i) {
			return getRuleContext(IdContext.class,i);
		}
		public List ADD() { return getTokens(TSqlParser.ADD); }
		public TerminalNode ADD(int i) {
			return getToken(TSqlParser.ADD, i);
		}
		public List DROP() { return getTokens(TSqlParser.DROP); }
		public TerminalNode DROP(int i) {
			return getToken(TSqlParser.DROP, i);
		}
		public List DOT() { return getTokens(TSqlParser.DOT); }
		public TerminalNode DOT(int i) {
			return getToken(TSqlParser.DOT, i);
		}
		public List TARGET() { return getTokens(TSqlParser.TARGET); }
		public TerminalNode TARGET(int i) {
			return getToken(TSqlParser.TARGET, i);
		}
		public TerminalNode WITH() { return getToken(TSqlParser.WITH, 0); }
		public List LR_BRACKET() { return getTokens(TSqlParser.LR_BRACKET); }
		public TerminalNode LR_BRACKET(int i) {
			return getToken(TSqlParser.LR_BRACKET, i);
		}
		public List RR_BRACKET() { return getTokens(TSqlParser.RR_BRACKET); }
		public TerminalNode RR_BRACKET(int i) {
			return getToken(TSqlParser.RR_BRACKET, i);
		}
		public TerminalNode STATE() { return getToken(TSqlParser.STATE, 0); }
		public List EQUAL() { return getTokens(TSqlParser.EQUAL); }
		public TerminalNode EQUAL(int i) {
			return getToken(TSqlParser.EQUAL, i);
		}
		public TerminalNode START() { return getToken(TSqlParser.START, 0); }
		public TerminalNode STOP() { return getToken(TSqlParser.STOP, 0); }
		public List COMMA() { return getTokens(TSqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(TSqlParser.COMMA, i);
		}
		public List SET() { return getTokens(TSqlParser.SET); }
		public TerminalNode SET(int i) {
			return getToken(TSqlParser.SET, i);
		}
		public TerminalNode MAX_MEMORY() { return getToken(TSqlParser.MAX_MEMORY, 0); }
		public TerminalNode EVENT_RETENTION_MODE() { return getToken(TSqlParser.EVENT_RETENTION_MODE, 0); }
		public TerminalNode MAX_DISPATCH_LATENCY() { return getToken(TSqlParser.MAX_DISPATCH_LATENCY, 0); }
		public TerminalNode MAX_EVENT_SIZE() { return getToken(TSqlParser.MAX_EVENT_SIZE, 0); }
		public TerminalNode MEMORY_PARTITION_MODE() { return getToken(TSqlParser.MEMORY_PARTITION_MODE, 0); }
		public TerminalNode TRACK_CAUSALITY() { return getToken(TSqlParser.TRACK_CAUSALITY, 0); }
		public TerminalNode STARTUP_STATE() { return getToken(TSqlParser.STARTUP_STATE, 0); }
		public List DECIMAL() { return getTokens(TSqlParser.DECIMAL); }
		public TerminalNode DECIMAL(int i) {
			return getToken(TSqlParser.DECIMAL, i);
		}
		public List KB() { return getTokens(TSqlParser.KB); }
		public TerminalNode KB(int i) {
			return getToken(TSqlParser.KB, i);
		}
		public List MB() { return getTokens(TSqlParser.MB); }
		public TerminalNode MB(int i) {
			return getToken(TSqlParser.MB, i);
		}
		public TerminalNode ALLOW_SINGLE_EVENT_LOSS() { return getToken(TSqlParser.ALLOW_SINGLE_EVENT_LOSS, 0); }
		public TerminalNode ALLOW_MULTIPLE_EVENT_LOSS() { return getToken(TSqlParser.ALLOW_MULTIPLE_EVENT_LOSS, 0); }
		public TerminalNode NO_EVENT_LOSS() { return getToken(TSqlParser.NO_EVENT_LOSS, 0); }
		public TerminalNode NONE() { return getToken(TSqlParser.NONE, 0); }
		public TerminalNode PER_NODE() { return getToken(TSqlParser.PER_NODE, 0); }
		public TerminalNode PER_CPU() { return getToken(TSqlParser.PER_CPU, 0); }
		public List OFF() { return getTokens(TSqlParser.OFF); }
		public TerminalNode OFF(int i) {
			return getToken(TSqlParser.OFF, i);
		}
		public TerminalNode SECONDS() { return getToken(TSqlParser.SECONDS, 0); }
		public TerminalNode INFINITE() { return getToken(TSqlParser.INFINITE, 0); }
		public List ACTION() { return getTokens(TSqlParser.ACTION); }
		public TerminalNode ACTION(int i) {
			return getToken(TSqlParser.ACTION, i);
		}
		public List WHERE() { return getTokens(TSqlParser.WHERE); }
		public TerminalNode WHERE(int i) {
			return getToken(TSqlParser.WHERE, i);
		}
		public List event_session_predicate_expression() {
			return getRuleContexts(Event_session_predicate_expressionContext.class);
		}
		public Event_session_predicate_expressionContext event_session_predicate_expression(int i) {
			return getRuleContext(Event_session_predicate_expressionContext.class,i);
		}
		public List STRING() { return getTokens(TSqlParser.STRING); }
		public TerminalNode STRING(int i) {
			return getToken(TSqlParser.STRING, i);
		}
		public Create_or_alter_event_sessionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_create_or_alter_event_session; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterCreate_or_alter_event_session(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitCreate_or_alter_event_session(this);
		}
	}

	public final Create_or_alter_event_sessionContext create_or_alter_event_session() throws RecognitionException {
		Create_or_alter_event_sessionContext _localctx = new Create_or_alter_event_sessionContext(_ctx, getState());
		enterRule(_localctx, 286, RULE_create_or_alter_event_session);
		int _la;
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			setState(2926);
			_la = _input.LA(1);
			if ( !(_la==ALTER || _la==CREATE) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			setState(2927);
			match(EVENT);
			setState(2928);
			match(SESSION);
			setState(2929);
			((Create_or_alter_event_sessionContext)_localctx).event_session_name = id();
			setState(2930);
			match(ON);
			setState(2931);
			match(SERVER);
			setState(2999);
			_errHandler.sync(this);
			_alt = getInterpreter().adaptivePredict(_input,242,_ctx);
			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
				if ( _alt==1 ) {
					{
					{
					setState(2933);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==COMMA) {
						{
						setState(2932);
						match(COMMA);
						}
					}

					setState(2935);
					match(ADD);
					setState(2936);
					match(EVENT);
					{
					setState(2940);
					_errHandler.sync(this);
					switch ( getInterpreter().adaptivePredict(_input,232,_ctx) ) {
					case 1:
						{
						setState(2937);
						((Create_or_alter_event_sessionContext)_localctx).event_module_guid = id();
						setState(2938);
						match(DOT);
						}
						break;
					}
					setState(2942);
					((Create_or_alter_event_sessionContext)_localctx).event_package_name = id();
					setState(2943);
					match(DOT);
					setState(2944);
					((Create_or_alter_event_sessionContext)_localctx).event_name = id();
					}
					setState(2994);
					_errHandler.sync(this);
					_alt = getInterpreter().adaptivePredict(_input,241,_ctx);
					while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
						if ( _alt==1 ) {
							{
							{
							setState(2946);
							match(LR_BRACKET);
							setState(2960);
							_errHandler.sync(this);
							_la = _input.LA(1);
							if (_la==SET) {
								{
								setState(2947);
								match(SET);
								setState(2957);
								_errHandler.sync(this);
								_alt = getInterpreter().adaptivePredict(_input,234,_ctx);
								while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
									if ( _alt==1 ) {
										{
										{
										setState(2949);
										_errHandler.sync(this);
										_la = _input.LA(1);
										if (_la==COMMA) {
											{
											setState(2948);
											match(COMMA);
											}
										}

										setState(2951);
										((Create_or_alter_event_sessionContext)_localctx).event_customizable_attributue = id();
										setState(2952);
										match(EQUAL);
										setState(2953);
										_la = _input.LA(1);
										if ( !(_la==DECIMAL || _la==STRING) ) {
										_errHandler.recoverInline(this);
										}
										else {
											if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
											_errHandler.reportMatch(this);
											consume();
										}
										}
										} 
									}
									setState(2959);
									_errHandler.sync(this);
									_alt = getInterpreter().adaptivePredict(_input,234,_ctx);
								}
								}
							}

							setState(2982); 
							_errHandler.sync(this);
							_la = _input.LA(1);
							do {
								{
								{
								setState(2962);
								match(ACTION);
								setState(2963);
								match(LR_BRACKET);
								setState(2976); 
								_errHandler.sync(this);
								_la = _input.LA(1);
								do {
									{
									{
									setState(2965);
									_errHandler.sync(this);
									_la = _input.LA(1);
									if (_la==COMMA) {
										{
										setState(2964);
										match(COMMA);
										}
									}

									setState(2970);
									_errHandler.sync(this);
									switch ( getInterpreter().adaptivePredict(_input,237,_ctx) ) {
									case 1:
										{
										setState(2967);
										((Create_or_alter_event_sessionContext)_localctx).event_module_guid = id();
										setState(2968);
										match(DOT);
										}
										break;
									}
									setState(2972);
									((Create_or_alter_event_sessionContext)_localctx).event_package_name = id();
									setState(2973);
									match(DOT);
									setState(2974);
									((Create_or_alter_event_sessionContext)_localctx).action_name = id();
									}
									}
									setState(2978); 
									_errHandler.sync(this);
									_la = _input.LA(1);
								} while ( _la==CALLED || ((((_la - 81)) & ~0x3f) == 0 && ((1L << (_la - 81)) & ((1L << (DATA_COMPRESSION - 81)) | (1L << (EVENTDATA - 81)) | (1L << (FILENAME - 81)) | (1L << (FILLFACTOR - 81)) | (1L << (FORCESEEK - 81)))) != 0) || ((((_la - 159)) & ~0x3f) == 0 && ((1L << (_la - 159)) & ((1L << (INIT - 159)) | (1L << (KEY - 159)) | (1L << (MASTER - 159)) | (1L << (MAX_MEMORY - 159)))) != 0) || ((((_la - 226)) & ~0x3f) == 0 && ((1L << (_la - 226)) & ((1L << (OFFSETS - 226)) | (1L << (PAGE - 226)) | (1L << (PUBLIC - 226)) | (1L << (R - 226)) | (1L << (RAW - 226)) | (1L << (RETURN - 226)) | (1L << (RETURNS - 226)) | (1L << (ROWCOUNT - 226)))) != 0) || ((((_la - 296)) & ~0x3f) == 0 && ((1L << (_la - 296)) & ((1L << (SAFETY - 296)) | (1L << (SERVER - 296)) | (1L << (SID - 296)) | (1L << (SOURCE - 296)) | (1L << (STATE - 296)) | (1L << (START - 296)) | (1L << (TARGET - 296)))) != 0) || ((((_la - 384)) & ~0x3f) == 0 && ((1L << (_la - 384)) & ((1L << (ABSOLUTE - 384)) | (1L << (ACCENT_SENSITIVITY - 384)) | (1L << (ACTION - 384)) | (1L << (ACTIVATION - 384)) | (1L << (ACTIVE - 384)) | (1L << (ADDRESS - 384)) | (1L << (AES_128 - 384)) | (1L << (AES_192 - 384)) | (1L << (AES_256 - 384)) | (1L << (AFFINITY - 384)) | (1L << (AFTER - 384)) | (1L << (AGGREGATE - 384)) | (1L << (ALGORITHM - 384)) | (1L << (ALLOW_ENCRYPTED_VALUE_MODIFICATIONS - 384)) | (1L << (ALLOW_SNAPSHOT_ISOLATION - 384)) | (1L << (ALLOWED - 384)) | (1L << (ANSI_NULL_DEFAULT - 384)) | (1L << (ANSI_NULLS - 384)) | (1L << (ANSI_PADDING - 384)) | (1L << (ANSI_WARNINGS - 384)) | (1L << (APPLICATION_LOG - 384)) | (1L << (APPLY - 384)) | (1L << (ARITHABORT - 384)) | (1L << (ASSEMBLY - 384)) | (1L << (AUDIT - 384)) | (1L << (AUDIT_GUID - 384)) | (1L << (AUTO - 384)) | (1L << (AUTO_CLEANUP - 384)) | (1L << (AUTO_CLOSE - 384)) | (1L << (AUTO_CREATE_STATISTICS - 384)) | (1L << (AUTO_SHRINK - 384)) | (1L << (AUTO_UPDATE_STATISTICS - 384)) | (1L << (AUTO_UPDATE_STATISTICS_ASYNC - 384)) | (1L << (AVAILABILITY - 384)) | (1L << (AVG - 384)) | (1L << (BACKUP_PRIORITY - 384)) | (1L << (BEGIN_DIALOG - 384)) | (1L << (BIGINT - 384)) | (1L << (BINARY_BASE64 - 384)) | (1L << (BINARY_CHECKSUM - 384)) | (1L << (BINDING - 384)) | (1L << (BLOB_STORAGE - 384)) | (1L << (BROKER - 384)) | (1L << (BROKER_INSTANCE - 384)) | (1L << (BULK_LOGGED - 384)) | (1L << (CALLER - 384)) | (1L << (CAP_CPU_PERCENT - 384)) | (1L << (CAST - 384)) | (1L << (CATALOG - 384)) | (1L << (CATCH - 384)) | (1L << (CHANGE_RETENTION - 384)) | (1L << (CHANGE_TRACKING - 384)) | (1L << (CHECKSUM - 384)) | (1L << (CHECKSUM_AGG - 384)) | (1L << (CLEANUP - 384)) | (1L << (COLLECTION - 384)) | (1L << (COLUMN_MASTER_KEY - 384)) | (1L << (COMMITTED - 384)) | (1L << (COMPATIBILITY_LEVEL - 384)) | (1L << (CONCAT - 384)) | (1L << (CONCAT_NULL_YIELDS_NULL - 384)) | (1L << (CONTENT - 384)) | (1L << (CONTROL - 384)) | (1L << (COOKIE - 384)))) != 0) || ((((_la - 448)) & ~0x3f) == 0 && ((1L << (_la - 448)) & ((1L << (COUNT - 448)) | (1L << (COUNT_BIG - 448)) | (1L << (COUNTER - 448)) | (1L << (CPU - 448)) | (1L << (CREATE_NEW - 448)) | (1L << (CREATION_DISPOSITION - 448)) | (1L << (CREDENTIAL - 448)) | (1L << (CRYPTOGRAPHIC - 448)) | (1L << (CURSOR_CLOSE_ON_COMMIT - 448)) | (1L << (CURSOR_DEFAULT - 448)) | (1L << (DATE_CORRELATION_OPTIMIZATION - 448)) | (1L << (DATEADD - 448)) | (1L << (DATEDIFF - 448)) | (1L << (DATENAME - 448)) | (1L << (DATEPART - 448)) | (1L << (DAYS - 448)) | (1L << (DB_CHAINING - 448)) | (1L << (DB_FAILOVER - 448)) | (1L << (DECRYPTION - 448)) | (1L << (DEFAULT_DOUBLE_QUOTE - 448)) | (1L << (DEFAULT_FULLTEXT_LANGUAGE - 448)) | (1L << (DEFAULT_LANGUAGE - 448)) | (1L << (DELAY - 448)) | (1L << (DELAYED_DURABILITY - 448)) | (1L << (DELETED - 448)) | (1L << (DENSE_RANK - 448)) | (1L << (DEPENDENTS - 448)) | (1L << (DES - 448)) | (1L << (DESCRIPTION - 448)) | (1L << (DESX - 448)) | (1L << (DHCP - 448)) | (1L << (DIALOG - 448)) | (1L << (DIRECTORY_NAME - 448)) | (1L << (DISABLE - 448)) | (1L << (DISABLE_BROKER - 448)) | (1L << (DISABLED - 448)) | (1L << (DISK_DRIVE - 448)) | (1L << (DOCUMENT - 448)) | (1L << (DYNAMIC - 448)) | (1L << (EMERGENCY - 448)) | (1L << (EMPTY - 448)) | (1L << (ENABLE - 448)) | (1L << (ENABLE_BROKER - 448)) | (1L << (ENCRYPTED_VALUE - 448)) | (1L << (ENCRYPTION - 448)) | (1L << (ENDPOINT_URL - 448)) | (1L << (ERROR_BROKER_CONVERSATIONS - 448)) | (1L << (EXCLUSIVE - 448)) | (1L << (EXECUTABLE - 448)) | (1L << (EXIST - 448)) | (1L << (EXPAND - 448)) | (1L << (EXPIRY_DATE - 448)) | (1L << (EXPLICIT - 448)) | (1L << (FAIL_OPERATION - 448)) | (1L << (FAILOVER_MODE - 448)) | (1L << (FAILURE - 448)) | (1L << (FAILURE_CONDITION_LEVEL - 448)) | (1L << (FAST - 448)) | (1L << (FAST_FORWARD - 448)) | (1L << (FILEGROUP - 448)) | (1L << (FILEGROWTH - 448)) | (1L << (FILEPATH - 448)) | (1L << (FILESTREAM - 448)))) != 0) || ((((_la - 512)) & ~0x3f) == 0 && ((1L << (_la - 512)) & ((1L << (FILTER - 512)) | (1L << (FIRST - 512)) | (1L << (FIRST_VALUE - 512)) | (1L << (FOLLOWING - 512)) | (1L << (FORCE - 512)) | (1L << (FORCE_FAILOVER_ALLOW_DATA_LOSS - 512)) | (1L << (FORCED - 512)) | (1L << (FORMAT - 512)) | (1L << (FORWARD_ONLY - 512)) | (1L << (FULLSCAN - 512)) | (1L << (FULLTEXT - 512)) | (1L << (GB - 512)) | (1L << (GETDATE - 512)) | (1L << (GETUTCDATE - 512)) | (1L << (GLOBAL - 512)) | (1L << (GO - 512)) | (1L << (GROUP_MAX_REQUESTS - 512)) | (1L << (GROUPING - 512)) | (1L << (GROUPING_ID - 512)) | (1L << (HADR - 512)) | (1L << (HASH - 512)) | (1L << (HEALTH_CHECK_TIMEOUT - 512)) | (1L << (HIGH - 512)) | (1L << (HONOR_BROKER_PRIORITY - 512)) | (1L << (HOURS - 512)) | (1L << (IDENTITY_VALUE - 512)) | (1L << (IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX - 512)) | (1L << (IMMEDIATE - 512)) | (1L << (IMPERSONATE - 512)) | (1L << (IMPORTANCE - 512)) | (1L << (INCREMENTAL - 512)) | (1L << (INITIATOR - 512)) | (1L << (INPUT - 512)) | (1L << (INSENSITIVE - 512)) | (1L << (INSERTED - 512)) | (1L << (INT - 512)) | (1L << (IP - 512)) | (1L << (ISOLATION - 512)) | (1L << (KB - 512)) | (1L << (KEEP - 512)) | (1L << (KEEPFIXED - 512)) | (1L << (KEY_SOURCE - 512)) | (1L << (KEYS - 512)) | (1L << (KEYSET - 512)) | (1L << (LAG - 512)) | (1L << (LAST - 512)) | (1L << (LAST_VALUE - 512)) | (1L << (LEAD - 512)) | (1L << (LEVEL - 512)) | (1L << (LIST - 512)) | (1L << (LISTENER - 512)) | (1L << (LISTENER_URL - 512)) | (1L << (LOB_COMPACTION - 512)) | (1L << (LOCAL - 512)) | (1L << (LOCATION - 512)) | (1L << (LOCK - 512)) | (1L << (LOCK_ESCALATION - 512)) | (1L << (LOGIN - 512)) | (1L << (LOOP - 512)) | (1L << (LOW - 512)) | (1L << (MANUAL - 512)) | (1L << (MARK - 512)))) != 0) || ((((_la - 576)) & ~0x3f) == 0 && ((1L << (_la - 576)) & ((1L << (MATERIALIZED - 576)) | (1L << (MAX - 576)) | (1L << (MAX_CPU_PERCENT - 576)) | (1L << (MAX_DOP - 576)) | (1L << (MAX_FILES - 576)) | (1L << (MAX_IOPS_PER_VOLUME - 576)) | (1L << (MAX_MEMORY_PERCENT - 576)) | (1L << (MAX_PROCESSES - 576)) | (1L << (MAX_QUEUE_READERS - 576)) | (1L << (MAX_ROLLOVER_FILES - 576)) | (1L << (MAXDOP - 576)) | (1L << (MAXRECURSION - 576)) | (1L << (MAXSIZE - 576)) | (1L << (MB - 576)) | (1L << (MEDIUM - 576)) | (1L << (MEMORY_OPTIMIZED_DATA - 576)) | (1L << (MESSAGE - 576)) | (1L << (MIN - 576)) | (1L << (MIN_ACTIVE_ROWVERSION - 576)) | (1L << (MIN_CPU_PERCENT - 576)) | (1L << (MIN_IOPS_PER_VOLUME - 576)) | (1L << (MIN_MEMORY_PERCENT - 576)) | (1L << (MINUTES - 576)) | (1L << (MIRROR_ADDRESS - 576)) | (1L << (MIXED_PAGE_ALLOCATION - 576)) | (1L << (MODE - 576)) | (1L << (MODIFY - 576)) | (1L << (MOVE - 576)) | (1L << (MULTI_USER - 576)) | (1L << (NAME - 576)) | (1L << (NESTED_TRIGGERS - 576)) | (1L << (NEW_ACCOUNT - 576)) | (1L << (NEW_BROKER - 576)) | (1L << (NEW_PASSWORD - 576)) | (1L << (NEXT - 576)) | (1L << (NO - 576)) | (1L << (NO_TRUNCATE - 576)) | (1L << (NO_WAIT - 576)) | (1L << (NOCOUNT - 576)) | (1L << (NODES - 576)) | (1L << (NOEXPAND - 576)) | (1L << (NON_TRANSACTED_ACCESS - 576)) | (1L << (NORECOMPUTE - 576)) | (1L << (NORECOVERY - 576)) | (1L << (NOWAIT - 576)) | (1L << (NTILE - 576)) | (1L << (NUMANODE - 576)) | (1L << (NUMBER - 576)) | (1L << (NUMERIC_ROUNDABORT - 576)) | (1L << (OBJECT - 576)) | (1L << (OFFLINE - 576)) | (1L << (OFFSET - 576)) | (1L << (OLD_ACCOUNT - 576)) | (1L << (ONLINE - 576)) | (1L << (ONLY - 576)) | (1L << (OPEN_EXISTING - 576)) | (1L << (OPTIMISTIC - 576)) | (1L << (OPTIMIZE - 576)) | (1L << (OUT - 576)) | (1L << (OUTPUT - 576)) | (1L << (OWNER - 576)) | (1L << (PAGE_VERIFY - 576)) | (1L << (PARAMETERIZATION - 576)) | (1L << (PARTITION - 576)))) != 0) || ((((_la - 640)) & ~0x3f) == 0 && ((1L << (_la - 640)) & ((1L << (PARTITIONS - 640)) | (1L << (PARTNER - 640)) | (1L << (PATH - 640)) | (1L << (POISON_MESSAGE_HANDLING - 640)) | (1L << (POOL - 640)) | (1L << (PORT - 640)) | (1L << (PRECEDING - 640)) | (1L << (PRIMARY_ROLE - 640)) | (1L << (PRIOR - 640)) | (1L << (PRIORITY - 640)) | (1L << (PRIORITY_LEVEL - 640)) | (1L << (PRIVATE - 640)) | (1L << (PRIVATE_KEY - 640)) | (1L << (PRIVILEGES - 640)) | (1L << (PROCEDURE_NAME - 640)) | (1L << (PROPERTY - 640)) | (1L << (PROVIDER - 640)) | (1L << (PROVIDER_KEY_NAME - 640)) | (1L << (QUERY - 640)) | (1L << (QUEUE - 640)) | (1L << (QUEUE_DELAY - 640)) | (1L << (QUOTED_IDENTIFIER - 640)) | (1L << (RANGE - 640)) | (1L << (RANK - 640)) | (1L << (RC2 - 640)) | (1L << (RC4 - 640)) | (1L << (RC4_128 - 640)) | (1L << (READ_COMMITTED_SNAPSHOT - 640)) | (1L << (READ_ONLY - 640)) | (1L << (READ_ONLY_ROUTING_LIST - 640)) | (1L << (READ_WRITE - 640)) | (1L << (READONLY - 640)) | (1L << (REBUILD - 640)) | (1L << (RECEIVE - 640)) | (1L << (RECOMPILE - 640)) | (1L << (RECOVERY - 640)) | (1L << (RECURSIVE_TRIGGERS - 640)) | (1L << (RELATIVE - 640)) | (1L << (REMOTE - 640)) | (1L << (REMOTE_SERVICE_NAME - 640)) | (1L << (REMOVE - 640)) | (1L << (REORGANIZE - 640)) | (1L << (REPEATABLE - 640)) | (1L << (REPLICA - 640)) | (1L << (REQUEST_MAX_CPU_TIME_SEC - 640)) | (1L << (REQUEST_MAX_MEMORY_GRANT_PERCENT - 640)) | (1L << (REQUEST_MEMORY_GRANT_TIMEOUT_SEC - 640)) | (1L << (REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT - 640)) | (1L << (RESERVE_DISK_SPACE - 640)) | (1L << (RESOURCE - 640)) | (1L << (RESOURCE_MANAGER_LOCATION - 640)) | (1L << (RESTRICTED_USER - 640)) | (1L << (RETENTION - 640)) | (1L << (ROBUST - 640)) | (1L << (ROOT - 640)) | (1L << (ROUTE - 640)) | (1L << (ROW - 640)) | (1L << (ROW_NUMBER - 640)) | (1L << (ROWGUID - 640)) | (1L << (ROWS - 640)) | (1L << (SAMPLE - 640)) | (1L << (SCHEMABINDING - 640)) | (1L << (SCOPED - 640)) | (1L << (SCROLL - 640)))) != 0) || ((((_la - 704)) & ~0x3f) == 0 && ((1L << (_la - 704)) & ((1L << (SCROLL_LOCKS - 704)) | (1L << (SEARCH - 704)) | (1L << (SECONDARY - 704)) | (1L << (SECONDARY_ONLY - 704)) | (1L << (SECONDARY_ROLE - 704)) | (1L << (SECONDS - 704)) | (1L << (SECRET - 704)) | (1L << (SECURITY_LOG - 704)) | (1L << (SEEDING_MODE - 704)) | (1L << (SELF - 704)) | (1L << (SEMI_SENSITIVE - 704)) | (1L << (SEND - 704)) | (1L << (SENT - 704)) | (1L << (SERIALIZABLE - 704)) | (1L << (SESSION_TIMEOUT - 704)) | (1L << (SETERROR - 704)) | (1L << (SHARE - 704)) | (1L << (SHOWPLAN - 704)) | (1L << (SIGNATURE - 704)) | (1L << (SIMPLE - 704)) | (1L << (SINGLE_USER - 704)) | (1L << (SIZE - 704)) | (1L << (SMALLINT - 704)) | (1L << (SNAPSHOT - 704)) | (1L << (SPATIAL_WINDOW_MAX_CELLS - 704)) | (1L << (STANDBY - 704)) | (1L << (START_DATE - 704)) | (1L << (STATIC - 704)) | (1L << (STATS_STREAM - 704)) | (1L << (STATUS - 704)) | (1L << (STDEV - 704)) | (1L << (STDEVP - 704)) | (1L << (STOPLIST - 704)) | (1L << (STUFF - 704)) | (1L << (SUBJECT - 704)) | (1L << (SUM - 704)) | (1L << (SUSPEND - 704)) | (1L << (SYMMETRIC - 704)) | (1L << (SYNCHRONOUS_COMMIT - 704)) | (1L << (SYNONYM - 704)) | (1L << (TAKE - 704)) | (1L << (TARGET_RECOVERY_TIME - 704)) | (1L << (TB - 704)) | (1L << (TEXTIMAGE_ON - 704)) | (1L << (THROW - 704)) | (1L << (TIES - 704)) | (1L << (TIME - 704)) | (1L << (TIMEOUT - 704)) | (1L << (TIMER - 704)) | (1L << (TINYINT - 704)) | (1L << (TORN_PAGE_DETECTION - 704)) | (1L << (TRANSFORM_NOISE_WORDS - 704)) | (1L << (TRIPLE_DES - 704)) | (1L << (TRIPLE_DES_3KEY - 704)) | (1L << (TRUSTWORTHY - 704)) | (1L << (TRY - 704)) | (1L << (TSQL - 704)) | (1L << (TWO_DIGIT_YEAR_CUTOFF - 704)) | (1L << (TYPE - 704)) | (1L << (TYPE_WARNING - 704)) | (1L << (UNBOUNDED - 704)) | (1L << (UNCOMMITTED - 704)) | (1L << (UNKNOWN - 704)) | (1L << (UNLIMITED - 704)))) != 0) || ((((_la - 768)) & ~0x3f) == 0 && ((1L << (_la - 768)) & ((1L << (USING - 768)) | (1L << (VALID_XML - 768)) | (1L << (VALIDATION - 768)) | (1L << (VALUE - 768)) | (1L << (VAR - 768)) | (1L << (VARP - 768)) | (1L << (VIEW_METADATA - 768)) | (1L << (VIEWS - 768)) | (1L << (WAIT - 768)) | (1L << (WELL_FORMED_XML - 768)) | (1L << (WORK - 768)) | (1L << (WORKLOAD - 768)) | (1L << (XML - 768)) | (1L << (XMLNAMESPACES - 768)) | (1L << (DOUBLE_QUOTE_ID - 768)) | (1L << (SQUARE_BRACKET_ID - 768)) | (1L << (ID - 768)) | (1L << (COMMA - 768)))) != 0) );
								setState(2980);
								match(RR_BRACKET);
								}
								}
								setState(2984); 
								_errHandler.sync(this);
								_la = _input.LA(1);
							} while ( _la==ACTION );
							setState(2988);
							_errHandler.sync(this);
							_la = _input.LA(1);
							if (_la==WHERE) {
								{
								setState(2986);
								match(WHERE);
								setState(2987);
								event_session_predicate_expression();
								}
							}

							setState(2990);
							match(RR_BRACKET);
							}
							} 
						}
						setState(2996);
						_errHandler.sync(this);
						_alt = getInterpreter().adaptivePredict(_input,241,_ctx);
					}
					}
					} 
				}
				setState(3001);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,242,_ctx);
			}
			setState(3018);
			_errHandler.sync(this);
			_alt = getInterpreter().adaptivePredict(_input,245,_ctx);
			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
				if ( _alt==1 ) {
					{
					{
					setState(3003);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==COMMA) {
						{
						setState(3002);
						match(COMMA);
						}
					}

					setState(3005);
					match(DROP);
					setState(3006);
					match(EVENT);
					setState(3010);
					_errHandler.sync(this);
					switch ( getInterpreter().adaptivePredict(_input,244,_ctx) ) {
					case 1:
						{
						setState(3007);
						((Create_or_alter_event_sessionContext)_localctx).event_module_guid = id();
						setState(3008);
						match(DOT);
						}
						break;
					}
					setState(3012);
					((Create_or_alter_event_sessionContext)_localctx).event_package_name = id();
					setState(3013);
					match(DOT);
					setState(3014);
					((Create_or_alter_event_sessionContext)_localctx).event_name = id();
					}
					} 
				}
				setState(3020);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,245,_ctx);
			}
			setState(3062);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==ADD) {
				{
				{
				{
				setState(3021);
				match(ADD);
				setState(3022);
				match(TARGET);
				setState(3026);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,246,_ctx) ) {
				case 1:
					{
					setState(3023);
					((Create_or_alter_event_sessionContext)_localctx).event_module_guid = id();
					setState(3024);
					match(DOT);
					}
					break;
				}
				setState(3028);
				((Create_or_alter_event_sessionContext)_localctx).event_package_name = id();
				setState(3029);
				match(DOT);
				setState(3030);
				((Create_or_alter_event_sessionContext)_localctx).target_name = id();
				}
				setState(3057);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,252,_ctx);
				while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
					if ( _alt==1 ) {
						{
						{
						setState(3032);
						match(LR_BRACKET);
						setState(3033);
						match(SET);
						setState(3049); 
						_errHandler.sync(this);
						_la = _input.LA(1);
						do {
							{
							{
							setState(3035);
							_errHandler.sync(this);
							_la = _input.LA(1);
							if (_la==COMMA) {
								{
								setState(3034);
								match(COMMA);
								}
							}

							setState(3037);
							((Create_or_alter_event_sessionContext)_localctx).target_parameter_name = id();
							setState(3038);
							match(EQUAL);
							setState(3047);
							_errHandler.sync(this);
							switch (_input.LA(1)) {
							case DECIMAL:
							case LR_BRACKET:
								{
								setState(3040);
								_errHandler.sync(this);
								_la = _input.LA(1);
								if (_la==LR_BRACKET) {
									{
									setState(3039);
									match(LR_BRACKET);
									}
								}

								setState(3042);
								match(DECIMAL);
								setState(3044);
								_errHandler.sync(this);
								switch ( getInterpreter().adaptivePredict(_input,249,_ctx) ) {
								case 1:
									{
									setState(3043);
									match(RR_BRACKET);
									}
									break;
								}
								}
								break;
							case STRING:
								{
								setState(3046);
								match(STRING);
								}
								break;
							default:
								throw new NoViableAltException(this);
							}
							}
							}
							setState(3051); 
							_errHandler.sync(this);
							_la = _input.LA(1);
						} while ( _la==CALLED || ((((_la - 81)) & ~0x3f) == 0 && ((1L << (_la - 81)) & ((1L << (DATA_COMPRESSION - 81)) | (1L << (EVENTDATA - 81)) | (1L << (FILENAME - 81)) | (1L << (FILLFACTOR - 81)) | (1L << (FORCESEEK - 81)))) != 0) || ((((_la - 159)) & ~0x3f) == 0 && ((1L << (_la - 159)) & ((1L << (INIT - 159)) | (1L << (KEY - 159)) | (1L << (MASTER - 159)) | (1L << (MAX_MEMORY - 159)))) != 0) || ((((_la - 226)) & ~0x3f) == 0 && ((1L << (_la - 226)) & ((1L << (OFFSETS - 226)) | (1L << (PAGE - 226)) | (1L << (PUBLIC - 226)) | (1L << (R - 226)) | (1L << (RAW - 226)) | (1L << (RETURN - 226)) | (1L << (RETURNS - 226)) | (1L << (ROWCOUNT - 226)))) != 0) || ((((_la - 296)) & ~0x3f) == 0 && ((1L << (_la - 296)) & ((1L << (SAFETY - 296)) | (1L << (SERVER - 296)) | (1L << (SID - 296)) | (1L << (SOURCE - 296)) | (1L << (STATE - 296)) | (1L << (START - 296)) | (1L << (TARGET - 296)))) != 0) || ((((_la - 384)) & ~0x3f) == 0 && ((1L << (_la - 384)) & ((1L << (ABSOLUTE - 384)) | (1L << (ACCENT_SENSITIVITY - 384)) | (1L << (ACTION - 384)) | (1L << (ACTIVATION - 384)) | (1L << (ACTIVE - 384)) | (1L << (ADDRESS - 384)) | (1L << (AES_128 - 384)) | (1L << (AES_192 - 384)) | (1L << (AES_256 - 384)) | (1L << (AFFINITY - 384)) | (1L << (AFTER - 384)) | (1L << (AGGREGATE - 384)) | (1L << (ALGORITHM - 384)) | (1L << (ALLOW_ENCRYPTED_VALUE_MODIFICATIONS - 384)) | (1L << (ALLOW_SNAPSHOT_ISOLATION - 384)) | (1L << (ALLOWED - 384)) | (1L << (ANSI_NULL_DEFAULT - 384)) | (1L << (ANSI_NULLS - 384)) | (1L << (ANSI_PADDING - 384)) | (1L << (ANSI_WARNINGS - 384)) | (1L << (APPLICATION_LOG - 384)) | (1L << (APPLY - 384)) | (1L << (ARITHABORT - 384)) | (1L << (ASSEMBLY - 384)) | (1L << (AUDIT - 384)) | (1L << (AUDIT_GUID - 384)) | (1L << (AUTO - 384)) | (1L << (AUTO_CLEANUP - 384)) | (1L << (AUTO_CLOSE - 384)) | (1L << (AUTO_CREATE_STATISTICS - 384)) | (1L << (AUTO_SHRINK - 384)) | (1L << (AUTO_UPDATE_STATISTICS - 384)) | (1L << (AUTO_UPDATE_STATISTICS_ASYNC - 384)) | (1L << (AVAILABILITY - 384)) | (1L << (AVG - 384)) | (1L << (BACKUP_PRIORITY - 384)) | (1L << (BEGIN_DIALOG - 384)) | (1L << (BIGINT - 384)) | (1L << (BINARY_BASE64 - 384)) | (1L << (BINARY_CHECKSUM - 384)) | (1L << (BINDING - 384)) | (1L << (BLOB_STORAGE - 384)) | (1L << (BROKER - 384)) | (1L << (BROKER_INSTANCE - 384)) | (1L << (BULK_LOGGED - 384)) | (1L << (CALLER - 384)) | (1L << (CAP_CPU_PERCENT - 384)) | (1L << (CAST - 384)) | (1L << (CATALOG - 384)) | (1L << (CATCH - 384)) | (1L << (CHANGE_RETENTION - 384)) | (1L << (CHANGE_TRACKING - 384)) | (1L << (CHECKSUM - 384)) | (1L << (CHECKSUM_AGG - 384)) | (1L << (CLEANUP - 384)) | (1L << (COLLECTION - 384)) | (1L << (COLUMN_MASTER_KEY - 384)) | (1L << (COMMITTED - 384)) | (1L << (COMPATIBILITY_LEVEL - 384)) | (1L << (CONCAT - 384)) | (1L << (CONCAT_NULL_YIELDS_NULL - 384)) | (1L << (CONTENT - 384)) | (1L << (CONTROL - 384)) | (1L << (COOKIE - 384)))) != 0) || ((((_la - 448)) & ~0x3f) == 0 && ((1L << (_la - 448)) & ((1L << (COUNT - 448)) | (1L << (COUNT_BIG - 448)) | (1L << (COUNTER - 448)) | (1L << (CPU - 448)) | (1L << (CREATE_NEW - 448)) | (1L << (CREATION_DISPOSITION - 448)) | (1L << (CREDENTIAL - 448)) | (1L << (CRYPTOGRAPHIC - 448)) | (1L << (CURSOR_CLOSE_ON_COMMIT - 448)) | (1L << (CURSOR_DEFAULT - 448)) | (1L << (DATE_CORRELATION_OPTIMIZATION - 448)) | (1L << (DATEADD - 448)) | (1L << (DATEDIFF - 448)) | (1L << (DATENAME - 448)) | (1L << (DATEPART - 448)) | (1L << (DAYS - 448)) | (1L << (DB_CHAINING - 448)) | (1L << (DB_FAILOVER - 448)) | (1L << (DECRYPTION - 448)) | (1L << (DEFAULT_DOUBLE_QUOTE - 448)) | (1L << (DEFAULT_FULLTEXT_LANGUAGE - 448)) | (1L << (DEFAULT_LANGUAGE - 448)) | (1L << (DELAY - 448)) | (1L << (DELAYED_DURABILITY - 448)) | (1L << (DELETED - 448)) | (1L << (DENSE_RANK - 448)) | (1L << (DEPENDENTS - 448)) | (1L << (DES - 448)) | (1L << (DESCRIPTION - 448)) | (1L << (DESX - 448)) | (1L << (DHCP - 448)) | (1L << (DIALOG - 448)) | (1L << (DIRECTORY_NAME - 448)) | (1L << (DISABLE - 448)) | (1L << (DISABLE_BROKER - 448)) | (1L << (DISABLED - 448)) | (1L << (DISK_DRIVE - 448)) | (1L << (DOCUMENT - 448)) | (1L << (DYNAMIC - 448)) | (1L << (EMERGENCY - 448)) | (1L << (EMPTY - 448)) | (1L << (ENABLE - 448)) | (1L << (ENABLE_BROKER - 448)) | (1L << (ENCRYPTED_VALUE - 448)) | (1L << (ENCRYPTION - 448)) | (1L << (ENDPOINT_URL - 448)) | (1L << (ERROR_BROKER_CONVERSATIONS - 448)) | (1L << (EXCLUSIVE - 448)) | (1L << (EXECUTABLE - 448)) | (1L << (EXIST - 448)) | (1L << (EXPAND - 448)) | (1L << (EXPIRY_DATE - 448)) | (1L << (EXPLICIT - 448)) | (1L << (FAIL_OPERATION - 448)) | (1L << (FAILOVER_MODE - 448)) | (1L << (FAILURE - 448)) | (1L << (FAILURE_CONDITION_LEVEL - 448)) | (1L << (FAST - 448)) | (1L << (FAST_FORWARD - 448)) | (1L << (FILEGROUP - 448)) | (1L << (FILEGROWTH - 448)) | (1L << (FILEPATH - 448)) | (1L << (FILESTREAM - 448)))) != 0) || ((((_la - 512)) & ~0x3f) == 0 && ((1L << (_la - 512)) & ((1L << (FILTER - 512)) | (1L << (FIRST - 512)) | (1L << (FIRST_VALUE - 512)) | (1L << (FOLLOWING - 512)) | (1L << (FORCE - 512)) | (1L << (FORCE_FAILOVER_ALLOW_DATA_LOSS - 512)) | (1L << (FORCED - 512)) | (1L << (FORMAT - 512)) | (1L << (FORWARD_ONLY - 512)) | (1L << (FULLSCAN - 512)) | (1L << (FULLTEXT - 512)) | (1L << (GB - 512)) | (1L << (GETDATE - 512)) | (1L << (GETUTCDATE - 512)) | (1L << (GLOBAL - 512)) | (1L << (GO - 512)) | (1L << (GROUP_MAX_REQUESTS - 512)) | (1L << (GROUPING - 512)) | (1L << (GROUPING_ID - 512)) | (1L << (HADR - 512)) | (1L << (HASH - 512)) | (1L << (HEALTH_CHECK_TIMEOUT - 512)) | (1L << (HIGH - 512)) | (1L << (HONOR_BROKER_PRIORITY - 512)) | (1L << (HOURS - 512)) | (1L << (IDENTITY_VALUE - 512)) | (1L << (IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX - 512)) | (1L << (IMMEDIATE - 512)) | (1L << (IMPERSONATE - 512)) | (1L << (IMPORTANCE - 512)) | (1L << (INCREMENTAL - 512)) | (1L << (INITIATOR - 512)) | (1L << (INPUT - 512)) | (1L << (INSENSITIVE - 512)) | (1L << (INSERTED - 512)) | (1L << (INT - 512)) | (1L << (IP - 512)) | (1L << (ISOLATION - 512)) | (1L << (KB - 512)) | (1L << (KEEP - 512)) | (1L << (KEEPFIXED - 512)) | (1L << (KEY_SOURCE - 512)) | (1L << (KEYS - 512)) | (1L << (KEYSET - 512)) | (1L << (LAG - 512)) | (1L << (LAST - 512)) | (1L << (LAST_VALUE - 512)) | (1L << (LEAD - 512)) | (1L << (LEVEL - 512)) | (1L << (LIST - 512)) | (1L << (LISTENER - 512)) | (1L << (LISTENER_URL - 512)) | (1L << (LOB_COMPACTION - 512)) | (1L << (LOCAL - 512)) | (1L << (LOCATION - 512)) | (1L << (LOCK - 512)) | (1L << (LOCK_ESCALATION - 512)) | (1L << (LOGIN - 512)) | (1L << (LOOP - 512)) | (1L << (LOW - 512)) | (1L << (MANUAL - 512)) | (1L << (MARK - 512)))) != 0) || ((((_la - 576)) & ~0x3f) == 0 && ((1L << (_la - 576)) & ((1L << (MATERIALIZED - 576)) | (1L << (MAX - 576)) | (1L << (MAX_CPU_PERCENT - 576)) | (1L << (MAX_DOP - 576)) | (1L << (MAX_FILES - 576)) | (1L << (MAX_IOPS_PER_VOLUME - 576)) | (1L << (MAX_MEMORY_PERCENT - 576)) | (1L << (MAX_PROCESSES - 576)) | (1L << (MAX_QUEUE_READERS - 576)) | (1L << (MAX_ROLLOVER_FILES - 576)) | (1L << (MAXDOP - 576)) | (1L << (MAXRECURSION - 576)) | (1L << (MAXSIZE - 576)) | (1L << (MB - 576)) | (1L << (MEDIUM - 576)) | (1L << (MEMORY_OPTIMIZED_DATA - 576)) | (1L << (MESSAGE - 576)) | (1L << (MIN - 576)) | (1L << (MIN_ACTIVE_ROWVERSION - 576)) | (1L << (MIN_CPU_PERCENT - 576)) | (1L << (MIN_IOPS_PER_VOLUME - 576)) | (1L << (MIN_MEMORY_PERCENT - 576)) | (1L << (MINUTES - 576)) | (1L << (MIRROR_ADDRESS - 576)) | (1L << (MIXED_PAGE_ALLOCATION - 576)) | (1L << (MODE - 576)) | (1L << (MODIFY - 576)) | (1L << (MOVE - 576)) | (1L << (MULTI_USER - 576)) | (1L << (NAME - 576)) | (1L << (NESTED_TRIGGERS - 576)) | (1L << (NEW_ACCOUNT - 576)) | (1L << (NEW_BROKER - 576)) | (1L << (NEW_PASSWORD - 576)) | (1L << (NEXT - 576)) | (1L << (NO - 576)) | (1L << (NO_TRUNCATE - 576)) | (1L << (NO_WAIT - 576)) | (1L << (NOCOUNT - 576)) | (1L << (NODES - 576)) | (1L << (NOEXPAND - 576)) | (1L << (NON_TRANSACTED_ACCESS - 576)) | (1L << (NORECOMPUTE - 576)) | (1L << (NORECOVERY - 576)) | (1L << (NOWAIT - 576)) | (1L << (NTILE - 576)) | (1L << (NUMANODE - 576)) | (1L << (NUMBER - 576)) | (1L << (NUMERIC_ROUNDABORT - 576)) | (1L << (OBJECT - 576)) | (1L << (OFFLINE - 576)) | (1L << (OFFSET - 576)) | (1L << (OLD_ACCOUNT - 576)) | (1L << (ONLINE - 576)) | (1L << (ONLY - 576)) | (1L << (OPEN_EXISTING - 576)) | (1L << (OPTIMISTIC - 576)) | (1L << (OPTIMIZE - 576)) | (1L << (OUT - 576)) | (1L << (OUTPUT - 576)) | (1L << (OWNER - 576)) | (1L << (PAGE_VERIFY - 576)) | (1L << (PARAMETERIZATION - 576)) | (1L << (PARTITION - 576)))) != 0) || ((((_la - 640)) & ~0x3f) == 0 && ((1L << (_la - 640)) & ((1L << (PARTITIONS - 640)) | (1L << (PARTNER - 640)) | (1L << (PATH - 640)) | (1L << (POISON_MESSAGE_HANDLING - 640)) | (1L << (POOL - 640)) | (1L << (PORT - 640)) | (1L << (PRECEDING - 640)) | (1L << (PRIMARY_ROLE - 640)) | (1L << (PRIOR - 640)) | (1L << (PRIORITY - 640)) | (1L << (PRIORITY_LEVEL - 640)) | (1L << (PRIVATE - 640)) | (1L << (PRIVATE_KEY - 640)) | (1L << (PRIVILEGES - 640)) | (1L << (PROCEDURE_NAME - 640)) | (1L << (PROPERTY - 640)) | (1L << (PROVIDER - 640)) | (1L << (PROVIDER_KEY_NAME - 640)) | (1L << (QUERY - 640)) | (1L << (QUEUE - 640)) | (1L << (QUEUE_DELAY - 640)) | (1L << (QUOTED_IDENTIFIER - 640)) | (1L << (RANGE - 640)) | (1L << (RANK - 640)) | (1L << (RC2 - 640)) | (1L << (RC4 - 640)) | (1L << (RC4_128 - 640)) | (1L << (READ_COMMITTED_SNAPSHOT - 640)) | (1L << (READ_ONLY - 640)) | (1L << (READ_ONLY_ROUTING_LIST - 640)) | (1L << (READ_WRITE - 640)) | (1L << (READONLY - 640)) | (1L << (REBUILD - 640)) | (1L << (RECEIVE - 640)) | (1L << (RECOMPILE - 640)) | (1L << (RECOVERY - 640)) | (1L << (RECURSIVE_TRIGGERS - 640)) | (1L << (RELATIVE - 640)) | (1L << (REMOTE - 640)) | (1L << (REMOTE_SERVICE_NAME - 640)) | (1L << (REMOVE - 640)) | (1L << (REORGANIZE - 640)) | (1L << (REPEATABLE - 640)) | (1L << (REPLICA - 640)) | (1L << (REQUEST_MAX_CPU_TIME_SEC - 640)) | (1L << (REQUEST_MAX_MEMORY_GRANT_PERCENT - 640)) | (1L << (REQUEST_MEMORY_GRANT_TIMEOUT_SEC - 640)) | (1L << (REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT - 640)) | (1L << (RESERVE_DISK_SPACE - 640)) | (1L << (RESOURCE - 640)) | (1L << (RESOURCE_MANAGER_LOCATION - 640)) | (1L << (RESTRICTED_USER - 640)) | (1L << (RETENTION - 640)) | (1L << (ROBUST - 640)) | (1L << (ROOT - 640)) | (1L << (ROUTE - 640)) | (1L << (ROW - 640)) | (1L << (ROW_NUMBER - 640)) | (1L << (ROWGUID - 640)) | (1L << (ROWS - 640)) | (1L << (SAMPLE - 640)) | (1L << (SCHEMABINDING - 640)) | (1L << (SCOPED - 640)) | (1L << (SCROLL - 640)))) != 0) || ((((_la - 704)) & ~0x3f) == 0 && ((1L << (_la - 704)) & ((1L << (SCROLL_LOCKS - 704)) | (1L << (SEARCH - 704)) | (1L << (SECONDARY - 704)) | (1L << (SECONDARY_ONLY - 704)) | (1L << (SECONDARY_ROLE - 704)) | (1L << (SECONDS - 704)) | (1L << (SECRET - 704)) | (1L << (SECURITY_LOG - 704)) | (1L << (SEEDING_MODE - 704)) | (1L << (SELF - 704)) | (1L << (SEMI_SENSITIVE - 704)) | (1L << (SEND - 704)) | (1L << (SENT - 704)) | (1L << (SERIALIZABLE - 704)) | (1L << (SESSION_TIMEOUT - 704)) | (1L << (SETERROR - 704)) | (1L << (SHARE - 704)) | (1L << (SHOWPLAN - 704)) | (1L << (SIGNATURE - 704)) | (1L << (SIMPLE - 704)) | (1L << (SINGLE_USER - 704)) | (1L << (SIZE - 704)) | (1L << (SMALLINT - 704)) | (1L << (SNAPSHOT - 704)) | (1L << (SPATIAL_WINDOW_MAX_CELLS - 704)) | (1L << (STANDBY - 704)) | (1L << (START_DATE - 704)) | (1L << (STATIC - 704)) | (1L << (STATS_STREAM - 704)) | (1L << (STATUS - 704)) | (1L << (STDEV - 704)) | (1L << (STDEVP - 704)) | (1L << (STOPLIST - 704)) | (1L << (STUFF - 704)) | (1L << (SUBJECT - 704)) | (1L << (SUM - 704)) | (1L << (SUSPEND - 704)) | (1L << (SYMMETRIC - 704)) | (1L << (SYNCHRONOUS_COMMIT - 704)) | (1L << (SYNONYM - 704)) | (1L << (TAKE - 704)) | (1L << (TARGET_RECOVERY_TIME - 704)) | (1L << (TB - 704)) | (1L << (TEXTIMAGE_ON - 704)) | (1L << (THROW - 704)) | (1L << (TIES - 704)) | (1L << (TIME - 704)) | (1L << (TIMEOUT - 704)) | (1L << (TIMER - 704)) | (1L << (TINYINT - 704)) | (1L << (TORN_PAGE_DETECTION - 704)) | (1L << (TRANSFORM_NOISE_WORDS - 704)) | (1L << (TRIPLE_DES - 704)) | (1L << (TRIPLE_DES_3KEY - 704)) | (1L << (TRUSTWORTHY - 704)) | (1L << (TRY - 704)) | (1L << (TSQL - 704)) | (1L << (TWO_DIGIT_YEAR_CUTOFF - 704)) | (1L << (TYPE - 704)) | (1L << (TYPE_WARNING - 704)) | (1L << (UNBOUNDED - 704)) | (1L << (UNCOMMITTED - 704)) | (1L << (UNKNOWN - 704)) | (1L << (UNLIMITED - 704)))) != 0) || ((((_la - 768)) & ~0x3f) == 0 && ((1L << (_la - 768)) & ((1L << (USING - 768)) | (1L << (VALID_XML - 768)) | (1L << (VALIDATION - 768)) | (1L << (VALUE - 768)) | (1L << (VAR - 768)) | (1L << (VARP - 768)) | (1L << (VIEW_METADATA - 768)) | (1L << (VIEWS - 768)) | (1L << (WAIT - 768)) | (1L << (WELL_FORMED_XML - 768)) | (1L << (WORK - 768)) | (1L << (WORKLOAD - 768)) | (1L << (XML - 768)) | (1L << (XMLNAMESPACES - 768)) | (1L << (DOUBLE_QUOTE_ID - 768)) | (1L << (SQUARE_BRACKET_ID - 768)) | (1L << (ID - 768)) | (1L << (COMMA - 768)))) != 0) );
						setState(3053);
						match(RR_BRACKET);
						}
						} 
					}
					setState(3059);
					_errHandler.sync(this);
					_alt = getInterpreter().adaptivePredict(_input,252,_ctx);
				}
				}
				}
				setState(3064);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			setState(3078);
			_errHandler.sync(this);
			_alt = getInterpreter().adaptivePredict(_input,255,_ctx);
			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
				if ( _alt==1 ) {
					{
					{
					setState(3065);
					match(DROP);
					setState(3066);
					match(TARGET);
					setState(3070);
					_errHandler.sync(this);
					switch ( getInterpreter().adaptivePredict(_input,254,_ctx) ) {
					case 1:
						{
						setState(3067);
						((Create_or_alter_event_sessionContext)_localctx).event_module_guid = id();
						setState(3068);
						match(DOT);
						}
						break;
					}
					setState(3072);
					((Create_or_alter_event_sessionContext)_localctx).event_package_name = id();
					setState(3073);
					match(DOT);
					setState(3074);
					((Create_or_alter_event_sessionContext)_localctx).target_name = id();
					}
					} 
				}
				setState(3080);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,255,_ctx);
			}
			setState(3146);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,271,_ctx) ) {
			case 1:
				{
				setState(3081);
				match(WITH);
				setState(3082);
				match(LR_BRACKET);
				setState(3090);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,257,_ctx) ) {
				case 1:
					{
					setState(3084);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==COMMA) {
						{
						setState(3083);
						match(COMMA);
						}
					}

					setState(3086);
					match(MAX_MEMORY);
					setState(3087);
					match(EQUAL);
					setState(3088);
					((Create_or_alter_event_sessionContext)_localctx).max_memory = match(DECIMAL);
					setState(3089);
					_la = _input.LA(1);
					if ( !(_la==KB || _la==MB) ) {
					_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					}
					break;
				}
				setState(3098);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,259,_ctx) ) {
				case 1:
					{
					setState(3093);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==COMMA) {
						{
						setState(3092);
						match(COMMA);
						}
					}

					setState(3095);
					match(EVENT_RETENTION_MODE);
					setState(3096);
					match(EQUAL);
					setState(3097);
					_la = _input.LA(1);
					if ( !(_la==ALLOW_MULTIPLE_EVENT_LOSS || _la==ALLOW_SINGLE_EVENT_LOSS || _la==NO_EVENT_LOSS) ) {
					_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					}
					break;
				}
				setState(3110);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,262,_ctx) ) {
				case 1:
					{
					setState(3101);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==COMMA) {
						{
						setState(3100);
						match(COMMA);
						}
					}

					setState(3103);
					match(MAX_DISPATCH_LATENCY);
					setState(3104);
					match(EQUAL);
					setState(3108);
					_errHandler.sync(this);
					switch (_input.LA(1)) {
					case DECIMAL:
						{
						setState(3105);
						((Create_or_alter_event_sessionContext)_localctx).max_dispatch_latency_seconds = match(DECIMAL);
						setState(3106);
						match(SECONDS);
						}
						break;
					case INFINITE:
						{
						setState(3107);
						match(INFINITE);
						}
						break;
					default:
						throw new NoViableAltException(this);
					}
					}
					break;
				}
				setState(3119);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,264,_ctx) ) {
				case 1:
					{
					setState(3113);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==COMMA) {
						{
						setState(3112);
						match(COMMA);
						}
					}

					setState(3115);
					match(MAX_EVENT_SIZE);
					setState(3116);
					match(EQUAL);
					setState(3117);
					((Create_or_alter_event_sessionContext)_localctx).max_event_size = match(DECIMAL);
					setState(3118);
					_la = _input.LA(1);
					if ( !(_la==KB || _la==MB) ) {
					_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					}
					break;
				}
				setState(3127);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,266,_ctx) ) {
				case 1:
					{
					setState(3122);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==COMMA) {
						{
						setState(3121);
						match(COMMA);
						}
					}

					setState(3124);
					match(MEMORY_PARTITION_MODE);
					setState(3125);
					match(EQUAL);
					setState(3126);
					_la = _input.LA(1);
					if ( !(((((_la - 212)) & ~0x3f) == 0 && ((1L << (_la - 212)) & ((1L << (NONE - 212)) | (1L << (PER_CPU - 212)) | (1L << (PER_NODE - 212)))) != 0)) ) {
					_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					}
					break;
				}
				setState(3135);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,268,_ctx) ) {
				case 1:
					{
					setState(3130);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==COMMA) {
						{
						setState(3129);
						match(COMMA);
						}
					}

					setState(3132);
					match(TRACK_CAUSALITY);
					setState(3133);
					match(EQUAL);
					setState(3134);
					_la = _input.LA(1);
					if ( !(_la==OFF || _la==ON) ) {
					_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					}
					break;
				}
				setState(3143);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==STARTUP_STATE || _la==COMMA) {
					{
					setState(3138);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==COMMA) {
						{
						setState(3137);
						match(COMMA);
						}
					}

					setState(3140);
					match(STARTUP_STATE);
					setState(3141);
					match(EQUAL);
					setState(3142);
					_la = _input.LA(1);
					if ( !(_la==OFF || _la==ON) ) {
					_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					}
				}

				setState(3145);
				match(RR_BRACKET);
				}
				break;
			}
			setState(3151);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,272,_ctx) ) {
			case 1:
				{
				setState(3148);
				match(STATE);
				setState(3149);
				match(EQUAL);
				setState(3150);
				_la = _input.LA(1);
				if ( !(_la==START || _la==STOP) ) {
				_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 Event_session_predicate_expressionContext extends ParserRuleContext {
		public List event_session_predicate_factor() {
			return getRuleContexts(Event_session_predicate_factorContext.class);
		}
		public Event_session_predicate_factorContext event_session_predicate_factor(int i) {
			return getRuleContext(Event_session_predicate_factorContext.class,i);
		}
		public List LR_BRACKET() { return getTokens(TSqlParser.LR_BRACKET); }
		public TerminalNode LR_BRACKET(int i) {
			return getToken(TSqlParser.LR_BRACKET, i);
		}
		public List event_session_predicate_expression() {
			return getRuleContexts(Event_session_predicate_expressionContext.class);
		}
		public Event_session_predicate_expressionContext event_session_predicate_expression(int i) {
			return getRuleContext(Event_session_predicate_expressionContext.class,i);
		}
		public List RR_BRACKET() { return getTokens(TSqlParser.RR_BRACKET); }
		public TerminalNode RR_BRACKET(int i) {
			return getToken(TSqlParser.RR_BRACKET, i);
		}
		public List COMMA() { return getTokens(TSqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(TSqlParser.COMMA, i);
		}
		public List NOT() { return getTokens(TSqlParser.NOT); }
		public TerminalNode NOT(int i) {
			return getToken(TSqlParser.NOT, i);
		}
		public List AND() { return getTokens(TSqlParser.AND); }
		public TerminalNode AND(int i) {
			return getToken(TSqlParser.AND, i);
		}
		public List OR() { return getTokens(TSqlParser.OR); }
		public TerminalNode OR(int i) {
			return getToken(TSqlParser.OR, i);
		}
		public Event_session_predicate_expressionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_event_session_predicate_expression; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterEvent_session_predicate_expression(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitEvent_session_predicate_expression(this);
		}
	}

	public final Event_session_predicate_expressionContext event_session_predicate_expression() throws RecognitionException {
		Event_session_predicate_expressionContext _localctx = new Event_session_predicate_expressionContext(_ctx, getState());
		enterRule(_localctx, 288, RULE_event_session_predicate_expression);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3169); 
			_errHandler.sync(this);
			_la = _input.LA(1);
			do {
				{
				{
				setState(3154);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==COMMA) {
					{
					setState(3153);
					match(COMMA);
					}
				}

				setState(3157);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==AND || _la==OR) {
					{
					setState(3156);
					_la = _input.LA(1);
					if ( !(_la==AND || _la==OR) ) {
					_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					}
				}

				setState(3160);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==NOT) {
					{
					setState(3159);
					match(NOT);
					}
				}

				setState(3167);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,276,_ctx) ) {
				case 1:
					{
					setState(3162);
					event_session_predicate_factor();
					}
					break;
				case 2:
					{
					setState(3163);
					match(LR_BRACKET);
					setState(3164);
					event_session_predicate_expression();
					setState(3165);
					match(RR_BRACKET);
					}
					break;
				}
				}
				}
				setState(3171); 
				_errHandler.sync(this);
				_la = _input.LA(1);
			} while ( _la==AND || _la==CALLED || ((((_la - 81)) & ~0x3f) == 0 && ((1L << (_la - 81)) & ((1L << (DATA_COMPRESSION - 81)) | (1L << (EVENTDATA - 81)) | (1L << (FILENAME - 81)) | (1L << (FILLFACTOR - 81)) | (1L << (FORCESEEK - 81)))) != 0) || ((((_la - 159)) & ~0x3f) == 0 && ((1L << (_la - 159)) & ((1L << (INIT - 159)) | (1L << (KEY - 159)) | (1L << (MASTER - 159)) | (1L << (MAX_MEMORY - 159)) | (1L << (NOT - 159)))) != 0) || ((((_la - 226)) & ~0x3f) == 0 && ((1L << (_la - 226)) & ((1L << (OFFSETS - 226)) | (1L << (OR - 226)) | (1L << (PAGE - 226)) | (1L << (PUBLIC - 226)) | (1L << (R - 226)) | (1L << (RAW - 226)) | (1L << (RETURN - 226)) | (1L << (RETURNS - 226)) | (1L << (ROWCOUNT - 226)))) != 0) || ((((_la - 296)) & ~0x3f) == 0 && ((1L << (_la - 296)) & ((1L << (SAFETY - 296)) | (1L << (SERVER - 296)) | (1L << (SID - 296)) | (1L << (SOURCE - 296)) | (1L << (STATE - 296)) | (1L << (START - 296)) | (1L << (TARGET - 296)))) != 0) || ((((_la - 384)) & ~0x3f) == 0 && ((1L << (_la - 384)) & ((1L << (ABSOLUTE - 384)) | (1L << (ACCENT_SENSITIVITY - 384)) | (1L << (ACTION - 384)) | (1L << (ACTIVATION - 384)) | (1L << (ACTIVE - 384)) | (1L << (ADDRESS - 384)) | (1L << (AES_128 - 384)) | (1L << (AES_192 - 384)) | (1L << (AES_256 - 384)) | (1L << (AFFINITY - 384)) | (1L << (AFTER - 384)) | (1L << (AGGREGATE - 384)) | (1L << (ALGORITHM - 384)) | (1L << (ALLOW_ENCRYPTED_VALUE_MODIFICATIONS - 384)) | (1L << (ALLOW_SNAPSHOT_ISOLATION - 384)) | (1L << (ALLOWED - 384)) | (1L << (ANSI_NULL_DEFAULT - 384)) | (1L << (ANSI_NULLS - 384)) | (1L << (ANSI_PADDING - 384)) | (1L << (ANSI_WARNINGS - 384)) | (1L << (APPLICATION_LOG - 384)) | (1L << (APPLY - 384)) | (1L << (ARITHABORT - 384)) | (1L << (ASSEMBLY - 384)) | (1L << (AUDIT - 384)) | (1L << (AUDIT_GUID - 384)) | (1L << (AUTO - 384)) | (1L << (AUTO_CLEANUP - 384)) | (1L << (AUTO_CLOSE - 384)) | (1L << (AUTO_CREATE_STATISTICS - 384)) | (1L << (AUTO_SHRINK - 384)) | (1L << (AUTO_UPDATE_STATISTICS - 384)) | (1L << (AUTO_UPDATE_STATISTICS_ASYNC - 384)) | (1L << (AVAILABILITY - 384)) | (1L << (AVG - 384)) | (1L << (BACKUP_PRIORITY - 384)) | (1L << (BEGIN_DIALOG - 384)) | (1L << (BIGINT - 384)) | (1L << (BINARY_BASE64 - 384)) | (1L << (BINARY_CHECKSUM - 384)) | (1L << (BINDING - 384)) | (1L << (BLOB_STORAGE - 384)) | (1L << (BROKER - 384)) | (1L << (BROKER_INSTANCE - 384)) | (1L << (BULK_LOGGED - 384)) | (1L << (CALLER - 384)) | (1L << (CAP_CPU_PERCENT - 384)) | (1L << (CAST - 384)) | (1L << (CATALOG - 384)) | (1L << (CATCH - 384)) | (1L << (CHANGE_RETENTION - 384)) | (1L << (CHANGE_TRACKING - 384)) | (1L << (CHECKSUM - 384)) | (1L << (CHECKSUM_AGG - 384)) | (1L << (CLEANUP - 384)) | (1L << (COLLECTION - 384)) | (1L << (COLUMN_MASTER_KEY - 384)) | (1L << (COMMITTED - 384)) | (1L << (COMPATIBILITY_LEVEL - 384)) | (1L << (CONCAT - 384)) | (1L << (CONCAT_NULL_YIELDS_NULL - 384)) | (1L << (CONTENT - 384)) | (1L << (CONTROL - 384)) | (1L << (COOKIE - 384)))) != 0) || ((((_la - 448)) & ~0x3f) == 0 && ((1L << (_la - 448)) & ((1L << (COUNT - 448)) | (1L << (COUNT_BIG - 448)) | (1L << (COUNTER - 448)) | (1L << (CPU - 448)) | (1L << (CREATE_NEW - 448)) | (1L << (CREATION_DISPOSITION - 448)) | (1L << (CREDENTIAL - 448)) | (1L << (CRYPTOGRAPHIC - 448)) | (1L << (CURSOR_CLOSE_ON_COMMIT - 448)) | (1L << (CURSOR_DEFAULT - 448)) | (1L << (DATE_CORRELATION_OPTIMIZATION - 448)) | (1L << (DATEADD - 448)) | (1L << (DATEDIFF - 448)) | (1L << (DATENAME - 448)) | (1L << (DATEPART - 448)) | (1L << (DAYS - 448)) | (1L << (DB_CHAINING - 448)) | (1L << (DB_FAILOVER - 448)) | (1L << (DECRYPTION - 448)) | (1L << (DEFAULT_DOUBLE_QUOTE - 448)) | (1L << (DEFAULT_FULLTEXT_LANGUAGE - 448)) | (1L << (DEFAULT_LANGUAGE - 448)) | (1L << (DELAY - 448)) | (1L << (DELAYED_DURABILITY - 448)) | (1L << (DELETED - 448)) | (1L << (DENSE_RANK - 448)) | (1L << (DEPENDENTS - 448)) | (1L << (DES - 448)) | (1L << (DESCRIPTION - 448)) | (1L << (DESX - 448)) | (1L << (DHCP - 448)) | (1L << (DIALOG - 448)) | (1L << (DIRECTORY_NAME - 448)) | (1L << (DISABLE - 448)) | (1L << (DISABLE_BROKER - 448)) | (1L << (DISABLED - 448)) | (1L << (DISK_DRIVE - 448)) | (1L << (DOCUMENT - 448)) | (1L << (DYNAMIC - 448)) | (1L << (EMERGENCY - 448)) | (1L << (EMPTY - 448)) | (1L << (ENABLE - 448)) | (1L << (ENABLE_BROKER - 448)) | (1L << (ENCRYPTED_VALUE - 448)) | (1L << (ENCRYPTION - 448)) | (1L << (ENDPOINT_URL - 448)) | (1L << (ERROR_BROKER_CONVERSATIONS - 448)) | (1L << (EXCLUSIVE - 448)) | (1L << (EXECUTABLE - 448)) | (1L << (EXIST - 448)) | (1L << (EXPAND - 448)) | (1L << (EXPIRY_DATE - 448)) | (1L << (EXPLICIT - 448)) | (1L << (FAIL_OPERATION - 448)) | (1L << (FAILOVER_MODE - 448)) | (1L << (FAILURE - 448)) | (1L << (FAILURE_CONDITION_LEVEL - 448)) | (1L << (FAST - 448)) | (1L << (FAST_FORWARD - 448)) | (1L << (FILEGROUP - 448)) | (1L << (FILEGROWTH - 448)) | (1L << (FILEPATH - 448)) | (1L << (FILESTREAM - 448)))) != 0) || ((((_la - 512)) & ~0x3f) == 0 && ((1L << (_la - 512)) & ((1L << (FILTER - 512)) | (1L << (FIRST - 512)) | (1L << (FIRST_VALUE - 512)) | (1L << (FOLLOWING - 512)) | (1L << (FORCE - 512)) | (1L << (FORCE_FAILOVER_ALLOW_DATA_LOSS - 512)) | (1L << (FORCED - 512)) | (1L << (FORMAT - 512)) | (1L << (FORWARD_ONLY - 512)) | (1L << (FULLSCAN - 512)) | (1L << (FULLTEXT - 512)) | (1L << (GB - 512)) | (1L << (GETDATE - 512)) | (1L << (GETUTCDATE - 512)) | (1L << (GLOBAL - 512)) | (1L << (GO - 512)) | (1L << (GROUP_MAX_REQUESTS - 512)) | (1L << (GROUPING - 512)) | (1L << (GROUPING_ID - 512)) | (1L << (HADR - 512)) | (1L << (HASH - 512)) | (1L << (HEALTH_CHECK_TIMEOUT - 512)) | (1L << (HIGH - 512)) | (1L << (HONOR_BROKER_PRIORITY - 512)) | (1L << (HOURS - 512)) | (1L << (IDENTITY_VALUE - 512)) | (1L << (IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX - 512)) | (1L << (IMMEDIATE - 512)) | (1L << (IMPERSONATE - 512)) | (1L << (IMPORTANCE - 512)) | (1L << (INCREMENTAL - 512)) | (1L << (INITIATOR - 512)) | (1L << (INPUT - 512)) | (1L << (INSENSITIVE - 512)) | (1L << (INSERTED - 512)) | (1L << (INT - 512)) | (1L << (IP - 512)) | (1L << (ISOLATION - 512)) | (1L << (KB - 512)) | (1L << (KEEP - 512)) | (1L << (KEEPFIXED - 512)) | (1L << (KEY_SOURCE - 512)) | (1L << (KEYS - 512)) | (1L << (KEYSET - 512)) | (1L << (LAG - 512)) | (1L << (LAST - 512)) | (1L << (LAST_VALUE - 512)) | (1L << (LEAD - 512)) | (1L << (LEVEL - 512)) | (1L << (LIST - 512)) | (1L << (LISTENER - 512)) | (1L << (LISTENER_URL - 512)) | (1L << (LOB_COMPACTION - 512)) | (1L << (LOCAL - 512)) | (1L << (LOCATION - 512)) | (1L << (LOCK - 512)) | (1L << (LOCK_ESCALATION - 512)) | (1L << (LOGIN - 512)) | (1L << (LOOP - 512)) | (1L << (LOW - 512)) | (1L << (MANUAL - 512)) | (1L << (MARK - 512)))) != 0) || ((((_la - 576)) & ~0x3f) == 0 && ((1L << (_la - 576)) & ((1L << (MATERIALIZED - 576)) | (1L << (MAX - 576)) | (1L << (MAX_CPU_PERCENT - 576)) | (1L << (MAX_DOP - 576)) | (1L << (MAX_FILES - 576)) | (1L << (MAX_IOPS_PER_VOLUME - 576)) | (1L << (MAX_MEMORY_PERCENT - 576)) | (1L << (MAX_PROCESSES - 576)) | (1L << (MAX_QUEUE_READERS - 576)) | (1L << (MAX_ROLLOVER_FILES - 576)) | (1L << (MAXDOP - 576)) | (1L << (MAXRECURSION - 576)) | (1L << (MAXSIZE - 576)) | (1L << (MB - 576)) | (1L << (MEDIUM - 576)) | (1L << (MEMORY_OPTIMIZED_DATA - 576)) | (1L << (MESSAGE - 576)) | (1L << (MIN - 576)) | (1L << (MIN_ACTIVE_ROWVERSION - 576)) | (1L << (MIN_CPU_PERCENT - 576)) | (1L << (MIN_IOPS_PER_VOLUME - 576)) | (1L << (MIN_MEMORY_PERCENT - 576)) | (1L << (MINUTES - 576)) | (1L << (MIRROR_ADDRESS - 576)) | (1L << (MIXED_PAGE_ALLOCATION - 576)) | (1L << (MODE - 576)) | (1L << (MODIFY - 576)) | (1L << (MOVE - 576)) | (1L << (MULTI_USER - 576)) | (1L << (NAME - 576)) | (1L << (NESTED_TRIGGERS - 576)) | (1L << (NEW_ACCOUNT - 576)) | (1L << (NEW_BROKER - 576)) | (1L << (NEW_PASSWORD - 576)) | (1L << (NEXT - 576)) | (1L << (NO - 576)) | (1L << (NO_TRUNCATE - 576)) | (1L << (NO_WAIT - 576)) | (1L << (NOCOUNT - 576)) | (1L << (NODES - 576)) | (1L << (NOEXPAND - 576)) | (1L << (NON_TRANSACTED_ACCESS - 576)) | (1L << (NORECOMPUTE - 576)) | (1L << (NORECOVERY - 576)) | (1L << (NOWAIT - 576)) | (1L << (NTILE - 576)) | (1L << (NUMANODE - 576)) | (1L << (NUMBER - 576)) | (1L << (NUMERIC_ROUNDABORT - 576)) | (1L << (OBJECT - 576)) | (1L << (OFFLINE - 576)) | (1L << (OFFSET - 576)) | (1L << (OLD_ACCOUNT - 576)) | (1L << (ONLINE - 576)) | (1L << (ONLY - 576)) | (1L << (OPEN_EXISTING - 576)) | (1L << (OPTIMISTIC - 576)) | (1L << (OPTIMIZE - 576)) | (1L << (OUT - 576)) | (1L << (OUTPUT - 576)) | (1L << (OWNER - 576)) | (1L << (PAGE_VERIFY - 576)) | (1L << (PARAMETERIZATION - 576)) | (1L << (PARTITION - 576)))) != 0) || ((((_la - 640)) & ~0x3f) == 0 && ((1L << (_la - 640)) & ((1L << (PARTITIONS - 640)) | (1L << (PARTNER - 640)) | (1L << (PATH - 640)) | (1L << (POISON_MESSAGE_HANDLING - 640)) | (1L << (POOL - 640)) | (1L << (PORT - 640)) | (1L << (PRECEDING - 640)) | (1L << (PRIMARY_ROLE - 640)) | (1L << (PRIOR - 640)) | (1L << (PRIORITY - 640)) | (1L << (PRIORITY_LEVEL - 640)) | (1L << (PRIVATE - 640)) | (1L << (PRIVATE_KEY - 640)) | (1L << (PRIVILEGES - 640)) | (1L << (PROCEDURE_NAME - 640)) | (1L << (PROPERTY - 640)) | (1L << (PROVIDER - 640)) | (1L << (PROVIDER_KEY_NAME - 640)) | (1L << (QUERY - 640)) | (1L << (QUEUE - 640)) | (1L << (QUEUE_DELAY - 640)) | (1L << (QUOTED_IDENTIFIER - 640)) | (1L << (RANGE - 640)) | (1L << (RANK - 640)) | (1L << (RC2 - 640)) | (1L << (RC4 - 640)) | (1L << (RC4_128 - 640)) | (1L << (READ_COMMITTED_SNAPSHOT - 640)) | (1L << (READ_ONLY - 640)) | (1L << (READ_ONLY_ROUTING_LIST - 640)) | (1L << (READ_WRITE - 640)) | (1L << (READONLY - 640)) | (1L << (REBUILD - 640)) | (1L << (RECEIVE - 640)) | (1L << (RECOMPILE - 640)) | (1L << (RECOVERY - 640)) | (1L << (RECURSIVE_TRIGGERS - 640)) | (1L << (RELATIVE - 640)) | (1L << (REMOTE - 640)) | (1L << (REMOTE_SERVICE_NAME - 640)) | (1L << (REMOVE - 640)) | (1L << (REORGANIZE - 640)) | (1L << (REPEATABLE - 640)) | (1L << (REPLICA - 640)) | (1L << (REQUEST_MAX_CPU_TIME_SEC - 640)) | (1L << (REQUEST_MAX_MEMORY_GRANT_PERCENT - 640)) | (1L << (REQUEST_MEMORY_GRANT_TIMEOUT_SEC - 640)) | (1L << (REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT - 640)) | (1L << (RESERVE_DISK_SPACE - 640)) | (1L << (RESOURCE - 640)) | (1L << (RESOURCE_MANAGER_LOCATION - 640)) | (1L << (RESTRICTED_USER - 640)) | (1L << (RETENTION - 640)) | (1L << (ROBUST - 640)) | (1L << (ROOT - 640)) | (1L << (ROUTE - 640)) | (1L << (ROW - 640)) | (1L << (ROW_NUMBER - 640)) | (1L << (ROWGUID - 640)) | (1L << (ROWS - 640)) | (1L << (SAMPLE - 640)) | (1L << (SCHEMABINDING - 640)) | (1L << (SCOPED - 640)) | (1L << (SCROLL - 640)))) != 0) || ((((_la - 704)) & ~0x3f) == 0 && ((1L << (_la - 704)) & ((1L << (SCROLL_LOCKS - 704)) | (1L << (SEARCH - 704)) | (1L << (SECONDARY - 704)) | (1L << (SECONDARY_ONLY - 704)) | (1L << (SECONDARY_ROLE - 704)) | (1L << (SECONDS - 704)) | (1L << (SECRET - 704)) | (1L << (SECURITY_LOG - 704)) | (1L << (SEEDING_MODE - 704)) | (1L << (SELF - 704)) | (1L << (SEMI_SENSITIVE - 704)) | (1L << (SEND - 704)) | (1L << (SENT - 704)) | (1L << (SERIALIZABLE - 704)) | (1L << (SESSION_TIMEOUT - 704)) | (1L << (SETERROR - 704)) | (1L << (SHARE - 704)) | (1L << (SHOWPLAN - 704)) | (1L << (SIGNATURE - 704)) | (1L << (SIMPLE - 704)) | (1L << (SINGLE_USER - 704)) | (1L << (SIZE - 704)) | (1L << (SMALLINT - 704)) | (1L << (SNAPSHOT - 704)) | (1L << (SPATIAL_WINDOW_MAX_CELLS - 704)) | (1L << (STANDBY - 704)) | (1L << (START_DATE - 704)) | (1L << (STATIC - 704)) | (1L << (STATS_STREAM - 704)) | (1L << (STATUS - 704)) | (1L << (STDEV - 704)) | (1L << (STDEVP - 704)) | (1L << (STOPLIST - 704)) | (1L << (STUFF - 704)) | (1L << (SUBJECT - 704)) | (1L << (SUM - 704)) | (1L << (SUSPEND - 704)) | (1L << (SYMMETRIC - 704)) | (1L << (SYNCHRONOUS_COMMIT - 704)) | (1L << (SYNONYM - 704)) | (1L << (TAKE - 704)) | (1L << (TARGET_RECOVERY_TIME - 704)) | (1L << (TB - 704)) | (1L << (TEXTIMAGE_ON - 704)) | (1L << (THROW - 704)) | (1L << (TIES - 704)) | (1L << (TIME - 704)) | (1L << (TIMEOUT - 704)) | (1L << (TIMER - 704)) | (1L << (TINYINT - 704)) | (1L << (TORN_PAGE_DETECTION - 704)) | (1L << (TRANSFORM_NOISE_WORDS - 704)) | (1L << (TRIPLE_DES - 704)) | (1L << (TRIPLE_DES_3KEY - 704)) | (1L << (TRUSTWORTHY - 704)) | (1L << (TRY - 704)) | (1L << (TSQL - 704)) | (1L << (TWO_DIGIT_YEAR_CUTOFF - 704)) | (1L << (TYPE - 704)) | (1L << (TYPE_WARNING - 704)) | (1L << (UNBOUNDED - 704)) | (1L << (UNCOMMITTED - 704)) | (1L << (UNKNOWN - 704)) | (1L << (UNLIMITED - 704)))) != 0) || ((((_la - 768)) & ~0x3f) == 0 && ((1L << (_la - 768)) & ((1L << (USING - 768)) | (1L << (VALID_XML - 768)) | (1L << (VALIDATION - 768)) | (1L << (VALUE - 768)) | (1L << (VAR - 768)) | (1L << (VARP - 768)) | (1L << (VIEW_METADATA - 768)) | (1L << (VIEWS - 768)) | (1L << (WAIT - 768)) | (1L << (WELL_FORMED_XML - 768)) | (1L << (WORK - 768)) | (1L << (WORKLOAD - 768)) | (1L << (XML - 768)) | (1L << (XMLNAMESPACES - 768)) | (1L << (DOUBLE_QUOTE_ID - 768)) | (1L << (SQUARE_BRACKET_ID - 768)) | (1L << (ID - 768)) | (1L << (LR_BRACKET - 768)) | (1L << (COMMA - 768)))) != 0) );
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Event_session_predicate_factorContext extends ParserRuleContext {
		public Event_session_predicate_leafContext event_session_predicate_leaf() {
			return getRuleContext(Event_session_predicate_leafContext.class,0);
		}
		public TerminalNode LR_BRACKET() { return getToken(TSqlParser.LR_BRACKET, 0); }
		public Event_session_predicate_expressionContext event_session_predicate_expression() {
			return getRuleContext(Event_session_predicate_expressionContext.class,0);
		}
		public TerminalNode RR_BRACKET() { return getToken(TSqlParser.RR_BRACKET, 0); }
		public Event_session_predicate_factorContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_event_session_predicate_factor; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterEvent_session_predicate_factor(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitEvent_session_predicate_factor(this);
		}
	}

	public final Event_session_predicate_factorContext event_session_predicate_factor() throws RecognitionException {
		Event_session_predicate_factorContext _localctx = new Event_session_predicate_factorContext(_ctx, getState());
		enterRule(_localctx, 290, RULE_event_session_predicate_factor);
		try {
			setState(3178);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case CALLED:
			case DATA_COMPRESSION:
			case EVENTDATA:
			case FILENAME:
			case FILLFACTOR:
			case FORCESEEK:
			case INIT:
			case KEY:
			case MASTER:
			case MAX_MEMORY:
			case OFFSETS:
			case PAGE:
			case PUBLIC:
			case R:
			case RAW:
			case RETURN:
			case RETURNS:
			case ROWCOUNT:
			case SAFETY:
			case SERVER:
			case SID:
			case SOURCE:
			case STATE:
			case START:
			case TARGET:
			case ABSOLUTE:
			case ACCENT_SENSITIVITY:
			case ACTION:
			case ACTIVATION:
			case ACTIVE:
			case ADDRESS:
			case AES_128:
			case AES_192:
			case AES_256:
			case AFFINITY:
			case AFTER:
			case AGGREGATE:
			case ALGORITHM:
			case ALLOW_ENCRYPTED_VALUE_MODIFICATIONS:
			case ALLOW_SNAPSHOT_ISOLATION:
			case ALLOWED:
			case ANSI_NULL_DEFAULT:
			case ANSI_NULLS:
			case ANSI_PADDING:
			case ANSI_WARNINGS:
			case APPLICATION_LOG:
			case APPLY:
			case ARITHABORT:
			case ASSEMBLY:
			case AUDIT:
			case AUDIT_GUID:
			case AUTO:
			case AUTO_CLEANUP:
			case AUTO_CLOSE:
			case AUTO_CREATE_STATISTICS:
			case AUTO_SHRINK:
			case AUTO_UPDATE_STATISTICS:
			case AUTO_UPDATE_STATISTICS_ASYNC:
			case AVAILABILITY:
			case AVG:
			case BACKUP_PRIORITY:
			case BEGIN_DIALOG:
			case BIGINT:
			case BINARY_BASE64:
			case BINARY_CHECKSUM:
			case BINDING:
			case BLOB_STORAGE:
			case BROKER:
			case BROKER_INSTANCE:
			case BULK_LOGGED:
			case CALLER:
			case CAP_CPU_PERCENT:
			case CAST:
			case CATALOG:
			case CATCH:
			case CHANGE_RETENTION:
			case CHANGE_TRACKING:
			case CHECKSUM:
			case CHECKSUM_AGG:
			case CLEANUP:
			case COLLECTION:
			case COLUMN_MASTER_KEY:
			case COMMITTED:
			case COMPATIBILITY_LEVEL:
			case CONCAT:
			case CONCAT_NULL_YIELDS_NULL:
			case CONTENT:
			case CONTROL:
			case COOKIE:
			case COUNT:
			case COUNT_BIG:
			case COUNTER:
			case CPU:
			case CREATE_NEW:
			case CREATION_DISPOSITION:
			case CREDENTIAL:
			case CRYPTOGRAPHIC:
			case CURSOR_CLOSE_ON_COMMIT:
			case CURSOR_DEFAULT:
			case DATE_CORRELATION_OPTIMIZATION:
			case DATEADD:
			case DATEDIFF:
			case DATENAME:
			case DATEPART:
			case DAYS:
			case DB_CHAINING:
			case DB_FAILOVER:
			case DECRYPTION:
			case DEFAULT_DOUBLE_QUOTE:
			case DEFAULT_FULLTEXT_LANGUAGE:
			case DEFAULT_LANGUAGE:
			case DELAY:
			case DELAYED_DURABILITY:
			case DELETED:
			case DENSE_RANK:
			case DEPENDENTS:
			case DES:
			case DESCRIPTION:
			case DESX:
			case DHCP:
			case DIALOG:
			case DIRECTORY_NAME:
			case DISABLE:
			case DISABLE_BROKER:
			case DISABLED:
			case DISK_DRIVE:
			case DOCUMENT:
			case DYNAMIC:
			case EMERGENCY:
			case EMPTY:
			case ENABLE:
			case ENABLE_BROKER:
			case ENCRYPTED_VALUE:
			case ENCRYPTION:
			case ENDPOINT_URL:
			case ERROR_BROKER_CONVERSATIONS:
			case EXCLUSIVE:
			case EXECUTABLE:
			case EXIST:
			case EXPAND:
			case EXPIRY_DATE:
			case EXPLICIT:
			case FAIL_OPERATION:
			case FAILOVER_MODE:
			case FAILURE:
			case FAILURE_CONDITION_LEVEL:
			case FAST:
			case FAST_FORWARD:
			case FILEGROUP:
			case FILEGROWTH:
			case FILEPATH:
			case FILESTREAM:
			case FILTER:
			case FIRST:
			case FIRST_VALUE:
			case FOLLOWING:
			case FORCE:
			case FORCE_FAILOVER_ALLOW_DATA_LOSS:
			case FORCED:
			case FORMAT:
			case FORWARD_ONLY:
			case FULLSCAN:
			case FULLTEXT:
			case GB:
			case GETDATE:
			case GETUTCDATE:
			case GLOBAL:
			case GO:
			case GROUP_MAX_REQUESTS:
			case GROUPING:
			case GROUPING_ID:
			case HADR:
			case HASH:
			case HEALTH_CHECK_TIMEOUT:
			case HIGH:
			case HONOR_BROKER_PRIORITY:
			case HOURS:
			case IDENTITY_VALUE:
			case IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX:
			case IMMEDIATE:
			case IMPERSONATE:
			case IMPORTANCE:
			case INCREMENTAL:
			case INITIATOR:
			case INPUT:
			case INSENSITIVE:
			case INSERTED:
			case INT:
			case IP:
			case ISOLATION:
			case KB:
			case KEEP:
			case KEEPFIXED:
			case KEY_SOURCE:
			case KEYS:
			case KEYSET:
			case LAG:
			case LAST:
			case LAST_VALUE:
			case LEAD:
			case LEVEL:
			case LIST:
			case LISTENER:
			case LISTENER_URL:
			case LOB_COMPACTION:
			case LOCAL:
			case LOCATION:
			case LOCK:
			case LOCK_ESCALATION:
			case LOGIN:
			case LOOP:
			case LOW:
			case MANUAL:
			case MARK:
			case MATERIALIZED:
			case MAX:
			case MAX_CPU_PERCENT:
			case MAX_DOP:
			case MAX_FILES:
			case MAX_IOPS_PER_VOLUME:
			case MAX_MEMORY_PERCENT:
			case MAX_PROCESSES:
			case MAX_QUEUE_READERS:
			case MAX_ROLLOVER_FILES:
			case MAXDOP:
			case MAXRECURSION:
			case MAXSIZE:
			case MB:
			case MEDIUM:
			case MEMORY_OPTIMIZED_DATA:
			case MESSAGE:
			case MIN:
			case MIN_ACTIVE_ROWVERSION:
			case MIN_CPU_PERCENT:
			case MIN_IOPS_PER_VOLUME:
			case MIN_MEMORY_PERCENT:
			case MINUTES:
			case MIRROR_ADDRESS:
			case MIXED_PAGE_ALLOCATION:
			case MODE:
			case MODIFY:
			case MOVE:
			case MULTI_USER:
			case NAME:
			case NESTED_TRIGGERS:
			case NEW_ACCOUNT:
			case NEW_BROKER:
			case NEW_PASSWORD:
			case NEXT:
			case NO:
			case NO_TRUNCATE:
			case NO_WAIT:
			case NOCOUNT:
			case NODES:
			case NOEXPAND:
			case NON_TRANSACTED_ACCESS:
			case NORECOMPUTE:
			case NORECOVERY:
			case NOWAIT:
			case NTILE:
			case NUMANODE:
			case NUMBER:
			case NUMERIC_ROUNDABORT:
			case OBJECT:
			case OFFLINE:
			case OFFSET:
			case OLD_ACCOUNT:
			case ONLINE:
			case ONLY:
			case OPEN_EXISTING:
			case OPTIMISTIC:
			case OPTIMIZE:
			case OUT:
			case OUTPUT:
			case OWNER:
			case PAGE_VERIFY:
			case PARAMETERIZATION:
			case PARTITION:
			case PARTITIONS:
			case PARTNER:
			case PATH:
			case POISON_MESSAGE_HANDLING:
			case POOL:
			case PORT:
			case PRECEDING:
			case PRIMARY_ROLE:
			case PRIOR:
			case PRIORITY:
			case PRIORITY_LEVEL:
			case PRIVATE:
			case PRIVATE_KEY:
			case PRIVILEGES:
			case PROCEDURE_NAME:
			case PROPERTY:
			case PROVIDER:
			case PROVIDER_KEY_NAME:
			case QUERY:
			case QUEUE:
			case QUEUE_DELAY:
			case QUOTED_IDENTIFIER:
			case RANGE:
			case RANK:
			case RC2:
			case RC4:
			case RC4_128:
			case READ_COMMITTED_SNAPSHOT:
			case READ_ONLY:
			case READ_ONLY_ROUTING_LIST:
			case READ_WRITE:
			case READONLY:
			case REBUILD:
			case RECEIVE:
			case RECOMPILE:
			case RECOVERY:
			case RECURSIVE_TRIGGERS:
			case RELATIVE:
			case REMOTE:
			case REMOTE_SERVICE_NAME:
			case REMOVE:
			case REORGANIZE:
			case REPEATABLE:
			case REPLICA:
			case REQUEST_MAX_CPU_TIME_SEC:
			case REQUEST_MAX_MEMORY_GRANT_PERCENT:
			case REQUEST_MEMORY_GRANT_TIMEOUT_SEC:
			case REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT:
			case RESERVE_DISK_SPACE:
			case RESOURCE:
			case RESOURCE_MANAGER_LOCATION:
			case RESTRICTED_USER:
			case RETENTION:
			case ROBUST:
			case ROOT:
			case ROUTE:
			case ROW:
			case ROW_NUMBER:
			case ROWGUID:
			case ROWS:
			case SAMPLE:
			case SCHEMABINDING:
			case SCOPED:
			case SCROLL:
			case SCROLL_LOCKS:
			case SEARCH:
			case SECONDARY:
			case SECONDARY_ONLY:
			case SECONDARY_ROLE:
			case SECONDS:
			case SECRET:
			case SECURITY_LOG:
			case SEEDING_MODE:
			case SELF:
			case SEMI_SENSITIVE:
			case SEND:
			case SENT:
			case SERIALIZABLE:
			case SESSION_TIMEOUT:
			case SETERROR:
			case SHARE:
			case SHOWPLAN:
			case SIGNATURE:
			case SIMPLE:
			case SINGLE_USER:
			case SIZE:
			case SMALLINT:
			case SNAPSHOT:
			case SPATIAL_WINDOW_MAX_CELLS:
			case STANDBY:
			case START_DATE:
			case STATIC:
			case STATS_STREAM:
			case STATUS:
			case STDEV:
			case STDEVP:
			case STOPLIST:
			case STUFF:
			case SUBJECT:
			case SUM:
			case SUSPEND:
			case SYMMETRIC:
			case SYNCHRONOUS_COMMIT:
			case SYNONYM:
			case TAKE:
			case TARGET_RECOVERY_TIME:
			case TB:
			case TEXTIMAGE_ON:
			case THROW:
			case TIES:
			case TIME:
			case TIMEOUT:
			case TIMER:
			case TINYINT:
			case TORN_PAGE_DETECTION:
			case TRANSFORM_NOISE_WORDS:
			case TRIPLE_DES:
			case TRIPLE_DES_3KEY:
			case TRUSTWORTHY:
			case TRY:
			case TSQL:
			case TWO_DIGIT_YEAR_CUTOFF:
			case TYPE:
			case TYPE_WARNING:
			case UNBOUNDED:
			case UNCOMMITTED:
			case UNKNOWN:
			case UNLIMITED:
			case USING:
			case VALID_XML:
			case VALIDATION:
			case VALUE:
			case VAR:
			case VARP:
			case VIEW_METADATA:
			case VIEWS:
			case WAIT:
			case WELL_FORMED_XML:
			case WORK:
			case WORKLOAD:
			case XML:
			case XMLNAMESPACES:
			case DOUBLE_QUOTE_ID:
			case SQUARE_BRACKET_ID:
			case ID:
				enterOuterAlt(_localctx, 1);
				{
				setState(3173);
				event_session_predicate_leaf();
				}
				break;
			case LR_BRACKET:
				enterOuterAlt(_localctx, 2);
				{
				setState(3174);
				match(LR_BRACKET);
				setState(3175);
				event_session_predicate_expression();
				setState(3176);
				match(RR_BRACKET);
				}
				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 Event_session_predicate_leafContext extends ParserRuleContext {
		public IdContext event_field_name;
		public IdContext event_module_guid;
		public IdContext event_package_name;
		public IdContext predicate_source_name;
		public IdContext predicate_compare_name;
		public List id() {
			return getRuleContexts(IdContext.class);
		}
		public IdContext id(int i) {
			return getRuleContext(IdContext.class,i);
		}
		public TerminalNode DECIMAL() { return getToken(TSqlParser.DECIMAL, 0); }
		public TerminalNode STRING() { return getToken(TSqlParser.STRING, 0); }
		public TerminalNode EQUAL() { return getToken(TSqlParser.EQUAL, 0); }
		public TerminalNode GREATER() { return getToken(TSqlParser.GREATER, 0); }
		public TerminalNode LESS() { return getToken(TSqlParser.LESS, 0); }
		public List DOT() { return getTokens(TSqlParser.DOT); }
		public TerminalNode DOT(int i) {
			return getToken(TSqlParser.DOT, i);
		}
		public TerminalNode EXCLAMATION() { return getToken(TSqlParser.EXCLAMATION, 0); }
		public TerminalNode LR_BRACKET() { return getToken(TSqlParser.LR_BRACKET, 0); }
		public TerminalNode RR_BRACKET() { return getToken(TSqlParser.RR_BRACKET, 0); }
		public TerminalNode COMMA() { return getToken(TSqlParser.COMMA, 0); }
		public Event_session_predicate_leafContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_event_session_predicate_leaf; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterEvent_session_predicate_leaf(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitEvent_session_predicate_leaf(this);
		}
	}

	public final Event_session_predicate_leafContext event_session_predicate_leaf() throws RecognitionException {
		Event_session_predicate_leafContext _localctx = new Event_session_predicate_leafContext(_ctx, getState());
		enterRule(_localctx, 292, RULE_event_session_predicate_leaf);
		int _la;
		try {
			setState(3236);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,286,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(3208);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,282,_ctx) ) {
				case 1:
					{
					setState(3180);
					((Event_session_predicate_leafContext)_localctx).event_field_name = id();
					}
					break;
				case 2:
					{
					setState(3191);
					_errHandler.sync(this);
					switch ( getInterpreter().adaptivePredict(_input,280,_ctx) ) {
					case 1:
						{
						setState(3181);
						((Event_session_predicate_leafContext)_localctx).event_field_name = id();
						}
						break;
					case 2:
						{
						{
						setState(3185);
						_errHandler.sync(this);
						switch ( getInterpreter().adaptivePredict(_input,279,_ctx) ) {
						case 1:
							{
							setState(3182);
							((Event_session_predicate_leafContext)_localctx).event_module_guid = id();
							setState(3183);
							match(DOT);
							}
							break;
						}
						setState(3187);
						((Event_session_predicate_leafContext)_localctx).event_package_name = id();
						setState(3188);
						match(DOT);
						setState(3189);
						((Event_session_predicate_leafContext)_localctx).predicate_source_name = id();
						}
						}
						break;
					}
					setState(3204);
					_errHandler.sync(this);
					switch ( getInterpreter().adaptivePredict(_input,281,_ctx) ) {
					case 1:
						{
						setState(3193);
						match(EQUAL);
						}
						break;
					case 2:
						{
						{
						setState(3194);
						match(LESS);
						setState(3195);
						match(GREATER);
						}
						}
						break;
					case 3:
						{
						{
						setState(3196);
						match(EXCLAMATION);
						setState(3197);
						match(EQUAL);
						}
						}
						break;
					case 4:
						{
						setState(3198);
						match(GREATER);
						}
						break;
					case 5:
						{
						{
						setState(3199);
						match(GREATER);
						setState(3200);
						match(EQUAL);
						}
						}
						break;
					case 6:
						{
						setState(3201);
						match(LESS);
						}
						break;
					case 7:
						{
						setState(3202);
						match(LESS);
						setState(3203);
						match(EQUAL);
						}
						break;
					}
					setState(3206);
					_la = _input.LA(1);
					if ( !(_la==DECIMAL || _la==STRING) ) {
					_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					}
					break;
				}
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(3213);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,283,_ctx) ) {
				case 1:
					{
					setState(3210);
					((Event_session_predicate_leafContext)_localctx).event_module_guid = id();
					setState(3211);
					match(DOT);
					}
					break;
				}
				setState(3215);
				((Event_session_predicate_leafContext)_localctx).event_package_name = id();
				setState(3216);
				match(DOT);
				setState(3217);
				((Event_session_predicate_leafContext)_localctx).predicate_compare_name = id();
				setState(3218);
				match(LR_BRACKET);
				setState(3232);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,285,_ctx) ) {
				case 1:
					{
					setState(3219);
					((Event_session_predicate_leafContext)_localctx).event_field_name = id();
					}
					break;
				case 2:
					{
					{
					setState(3223);
					_errHandler.sync(this);
					switch ( getInterpreter().adaptivePredict(_input,284,_ctx) ) {
					case 1:
						{
						setState(3220);
						((Event_session_predicate_leafContext)_localctx).event_module_guid = id();
						setState(3221);
						match(DOT);
						}
						break;
					}
					setState(3225);
					((Event_session_predicate_leafContext)_localctx).event_package_name = id();
					setState(3226);
					match(DOT);
					setState(3227);
					((Event_session_predicate_leafContext)_localctx).predicate_source_name = id();
					}
					setState(3229);
					match(COMMA);
					setState(3230);
					_la = _input.LA(1);
					if ( !(_la==DECIMAL || _la==STRING) ) {
					_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					}
					break;
				}
				setState(3234);
				match(RR_BRACKET);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Alter_external_data_sourceContext extends ParserRuleContext {
		public IdContext data_source_name;
		public Token location;
		public Token resource_manager_location;
		public IdContext credential_name;
		public TerminalNode ALTER() { return getToken(TSqlParser.ALTER, 0); }
		public TerminalNode EXTERNAL() { return getToken(TSqlParser.EXTERNAL, 0); }
		public TerminalNode DATA() { return getToken(TSqlParser.DATA, 0); }
		public TerminalNode SOURCE() { return getToken(TSqlParser.SOURCE, 0); }
		public TerminalNode SET() { return getToken(TSqlParser.SET, 0); }
		public List id() {
			return getRuleContexts(IdContext.class);
		}
		public IdContext id(int i) {
			return getRuleContext(IdContext.class,i);
		}
		public List LOCATION() { return getTokens(TSqlParser.LOCATION); }
		public TerminalNode LOCATION(int i) {
			return getToken(TSqlParser.LOCATION, i);
		}
		public List EQUAL() { return getTokens(TSqlParser.EQUAL); }
		public TerminalNode EQUAL(int i) {
			return getToken(TSqlParser.EQUAL, i);
		}
		public List RESOURCE_MANAGER_LOCATION() { return getTokens(TSqlParser.RESOURCE_MANAGER_LOCATION); }
		public TerminalNode RESOURCE_MANAGER_LOCATION(int i) {
			return getToken(TSqlParser.RESOURCE_MANAGER_LOCATION, i);
		}
		public List CREDENTIAL() { return getTokens(TSqlParser.CREDENTIAL); }
		public TerminalNode CREDENTIAL(int i) {
			return getToken(TSqlParser.CREDENTIAL, i);
		}
		public List QUOTED_URL() { return getTokens(TSqlParser.QUOTED_URL); }
		public TerminalNode QUOTED_URL(int i) {
			return getToken(TSqlParser.QUOTED_URL, i);
		}
		public List QUOTED_HOST_AND_PORT() { return getTokens(TSqlParser.QUOTED_HOST_AND_PORT); }
		public TerminalNode QUOTED_HOST_AND_PORT(int i) {
			return getToken(TSqlParser.QUOTED_HOST_AND_PORT, i);
		}
		public List COMMA() { return getTokens(TSqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(TSqlParser.COMMA, i);
		}
		public TerminalNode WITH() { return getToken(TSqlParser.WITH, 0); }
		public TerminalNode LR_BRACKET() { return getToken(TSqlParser.LR_BRACKET, 0); }
		public TerminalNode TYPE() { return getToken(TSqlParser.TYPE, 0); }
		public TerminalNode BLOB_STORAGE() { return getToken(TSqlParser.BLOB_STORAGE, 0); }
		public TerminalNode RR_BRACKET() { return getToken(TSqlParser.RR_BRACKET, 0); }
		public TerminalNode STRING() { return getToken(TSqlParser.STRING, 0); }
		public Alter_external_data_sourceContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alter_external_data_source; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterAlter_external_data_source(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitAlter_external_data_source(this);
		}
	}

	public final Alter_external_data_sourceContext alter_external_data_source() throws RecognitionException {
		Alter_external_data_sourceContext _localctx = new Alter_external_data_sourceContext(_ctx, getState());
		enterRule(_localctx, 294, RULE_alter_external_data_source);
		int _la;
		try {
			int _alt;
			setState(3285);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,292,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(3238);
				match(ALTER);
				setState(3239);
				match(EXTERNAL);
				setState(3240);
				match(DATA);
				setState(3241);
				match(SOURCE);
				setState(3242);
				((Alter_external_data_sourceContext)_localctx).data_source_name = id();
				setState(3243);
				match(SET);
				setState(3259); 
				_errHandler.sync(this);
				_alt = 1;
				do {
					switch (_alt) {
					case 1:
						{
						setState(3259);
						_errHandler.sync(this);
						switch (_input.LA(1)) {
						case LOCATION:
							{
							setState(3244);
							match(LOCATION);
							setState(3245);
							match(EQUAL);
							setState(3246);
							((Alter_external_data_sourceContext)_localctx).location = _input.LT(1);
							_la = _input.LA(1);
							if ( !(_la==QUOTED_URL || _la==QUOTED_HOST_AND_PORT) ) {
								((Alter_external_data_sourceContext)_localctx).location = (Token)_errHandler.recoverInline(this);
							}
							else {
								if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
								_errHandler.reportMatch(this);
								consume();
							}
							setState(3248);
							_errHandler.sync(this);
							_la = _input.LA(1);
							if (_la==COMMA) {
								{
								setState(3247);
								match(COMMA);
								}
							}

							}
							break;
						case RESOURCE_MANAGER_LOCATION:
							{
							setState(3250);
							match(RESOURCE_MANAGER_LOCATION);
							setState(3251);
							match(EQUAL);
							setState(3252);
							((Alter_external_data_sourceContext)_localctx).resource_manager_location = _input.LT(1);
							_la = _input.LA(1);
							if ( !(_la==QUOTED_URL || _la==QUOTED_HOST_AND_PORT) ) {
								((Alter_external_data_sourceContext)_localctx).resource_manager_location = (Token)_errHandler.recoverInline(this);
							}
							else {
								if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
								_errHandler.reportMatch(this);
								consume();
							}
							setState(3254);
							_errHandler.sync(this);
							_la = _input.LA(1);
							if (_la==COMMA) {
								{
								setState(3253);
								match(COMMA);
								}
							}

							}
							break;
						case CREDENTIAL:
							{
							setState(3256);
							match(CREDENTIAL);
							setState(3257);
							match(EQUAL);
							setState(3258);
							((Alter_external_data_sourceContext)_localctx).credential_name = id();
							}
							break;
						default:
							throw new NoViableAltException(this);
						}
						}
						break;
					default:
						throw new NoViableAltException(this);
					}
					setState(3261); 
					_errHandler.sync(this);
					_alt = getInterpreter().adaptivePredict(_input,290,_ctx);
				} while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER );
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(3263);
				match(ALTER);
				setState(3264);
				match(EXTERNAL);
				setState(3265);
				match(DATA);
				setState(3266);
				match(SOURCE);
				setState(3267);
				((Alter_external_data_sourceContext)_localctx).data_source_name = id();
				setState(3268);
				match(WITH);
				setState(3269);
				match(LR_BRACKET);
				setState(3270);
				match(TYPE);
				setState(3271);
				match(EQUAL);
				setState(3272);
				match(BLOB_STORAGE);
				setState(3273);
				match(COMMA);
				setState(3274);
				match(LOCATION);
				setState(3275);
				match(EQUAL);
				setState(3276);
				((Alter_external_data_sourceContext)_localctx).location = match(STRING);
				setState(3281);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==COMMA) {
					{
					setState(3277);
					match(COMMA);
					setState(3278);
					match(CREDENTIAL);
					setState(3279);
					match(EQUAL);
					setState(3280);
					((Alter_external_data_sourceContext)_localctx).credential_name = id();
					}
				}

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

	public static class Alter_external_libraryContext extends ParserRuleContext {
		public IdContext library_name;
		public IdContext owner_name;
		public Token client_library;
		public IdContext external_data_source_name;
		public TerminalNode ALTER() { return getToken(TSqlParser.ALTER, 0); }
		public TerminalNode EXTERNAL() { return getToken(TSqlParser.EXTERNAL, 0); }
		public TerminalNode LIBRARY() { return getToken(TSqlParser.LIBRARY, 0); }
		public List id() {
			return getRuleContexts(IdContext.class);
		}
		public IdContext id(int i) {
			return getRuleContext(IdContext.class,i);
		}
		public TerminalNode SET() { return getToken(TSqlParser.SET, 0); }
		public TerminalNode ADD() { return getToken(TSqlParser.ADD, 0); }
		public TerminalNode LR_BRACKET() { return getToken(TSqlParser.LR_BRACKET, 0); }
		public TerminalNode CONTENT() { return getToken(TSqlParser.CONTENT, 0); }
		public List EQUAL() { return getTokens(TSqlParser.EQUAL); }
		public TerminalNode EQUAL(int i) {
			return getToken(TSqlParser.EQUAL, i);
		}
		public TerminalNode WITH() { return getToken(TSqlParser.WITH, 0); }
		public List RR_BRACKET() { return getTokens(TSqlParser.RR_BRACKET); }
		public TerminalNode RR_BRACKET(int i) {
			return getToken(TSqlParser.RR_BRACKET, i);
		}
		public TerminalNode AUTHORIZATION() { return getToken(TSqlParser.AUTHORIZATION, 0); }
		public TerminalNode BINARY() { return getToken(TSqlParser.BINARY, 0); }
		public TerminalNode NONE() { return getToken(TSqlParser.NONE, 0); }
		public List COMMA() { return getTokens(TSqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(TSqlParser.COMMA, i);
		}
		public TerminalNode PLATFORM() { return getToken(TSqlParser.PLATFORM, 0); }
		public TerminalNode STRING() { return getToken(TSqlParser.STRING, 0); }
		public List LANGUAGE() { return getTokens(TSqlParser.LANGUAGE); }
		public TerminalNode LANGUAGE(int i) {
			return getToken(TSqlParser.LANGUAGE, i);
		}
		public List DATA_SOURCE() { return getTokens(TSqlParser.DATA_SOURCE); }
		public TerminalNode DATA_SOURCE(int i) {
			return getToken(TSqlParser.DATA_SOURCE, i);
		}
		public List R() { return getTokens(TSqlParser.R); }
		public TerminalNode R(int i) {
			return getToken(TSqlParser.R, i);
		}
		public List PYTHON() { return getTokens(TSqlParser.PYTHON); }
		public TerminalNode PYTHON(int i) {
			return getToken(TSqlParser.PYTHON, i);
		}
		public TerminalNode WINDOWS() { return getToken(TSqlParser.WINDOWS, 0); }
		public TerminalNode LINUX() { return getToken(TSqlParser.LINUX, 0); }
		public Alter_external_libraryContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alter_external_library; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterAlter_external_library(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitAlter_external_library(this);
		}
	}

	public final Alter_external_libraryContext alter_external_library() throws RecognitionException {
		Alter_external_libraryContext _localctx = new Alter_external_libraryContext(_ctx, getState());
		enterRule(_localctx, 296, RULE_alter_external_library);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3287);
			match(ALTER);
			setState(3288);
			match(EXTERNAL);
			setState(3289);
			match(LIBRARY);
			setState(3290);
			((Alter_external_libraryContext)_localctx).library_name = id();
			setState(3293);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==AUTHORIZATION) {
				{
				setState(3291);
				match(AUTHORIZATION);
				setState(3292);
				((Alter_external_libraryContext)_localctx).owner_name = id();
				}
			}

			setState(3295);
			_la = _input.LA(1);
			if ( !(_la==ADD || _la==SET) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			{
			setState(3296);
			match(LR_BRACKET);
			setState(3297);
			match(CONTENT);
			setState(3298);
			match(EQUAL);
			setState(3302);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case STRING:
				{
				setState(3299);
				((Alter_external_libraryContext)_localctx).client_library = match(STRING);
				}
				break;
			case BINARY:
				{
				setState(3300);
				match(BINARY);
				}
				break;
			case NONE:
				{
				setState(3301);
				match(NONE);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			{
			setState(3304);
			match(COMMA);
			setState(3305);
			match(PLATFORM);
			setState(3306);
			match(EQUAL);
			setState(3308);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==LINUX || _la==WINDOWS) {
				{
				setState(3307);
				_la = _input.LA(1);
				if ( !(_la==LINUX || _la==WINDOWS) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
			}

			setState(3310);
			match(RR_BRACKET);
			}
			setState(3312);
			match(WITH);
			setState(3322); 
			_errHandler.sync(this);
			_la = _input.LA(1);
			do {
				{
				setState(3322);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case LANGUAGE:
				case COMMA:
					{
					setState(3314);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==COMMA) {
						{
						setState(3313);
						match(COMMA);
						}
					}

					setState(3316);
					match(LANGUAGE);
					setState(3317);
					match(EQUAL);
					setState(3318);
					_la = _input.LA(1);
					if ( !(_la==PYTHON || _la==R) ) {
					_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					}
					break;
				case DATA_SOURCE:
					{
					setState(3319);
					match(DATA_SOURCE);
					setState(3320);
					match(EQUAL);
					setState(3321);
					((Alter_external_libraryContext)_localctx).external_data_source_name = id();
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				setState(3324); 
				_errHandler.sync(this);
				_la = _input.LA(1);
			} while ( _la==DATA_SOURCE || _la==LANGUAGE || _la==COMMA );
			setState(3326);
			match(RR_BRACKET);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Create_external_libraryContext extends ParserRuleContext {
		public IdContext library_name;
		public IdContext owner_name;
		public Token client_library;
		public IdContext external_data_source_name;
		public TerminalNode CREATE() { return getToken(TSqlParser.CREATE, 0); }
		public TerminalNode EXTERNAL() { return getToken(TSqlParser.EXTERNAL, 0); }
		public TerminalNode LIBRARY() { return getToken(TSqlParser.LIBRARY, 0); }
		public TerminalNode FROM() { return getToken(TSqlParser.FROM, 0); }
		public List id() {
			return getRuleContexts(IdContext.class);
		}
		public IdContext id(int i) {
			return getRuleContext(IdContext.class,i);
		}
		public TerminalNode AUTHORIZATION() { return getToken(TSqlParser.AUTHORIZATION, 0); }
		public TerminalNode WITH() { return getToken(TSqlParser.WITH, 0); }
		public List RR_BRACKET() { return getTokens(TSqlParser.RR_BRACKET); }
		public TerminalNode RR_BRACKET(int i) {
			return getToken(TSqlParser.RR_BRACKET, i);
		}
		public TerminalNode BINARY() { return getToken(TSqlParser.BINARY, 0); }
		public TerminalNode NONE() { return getToken(TSqlParser.NONE, 0); }
		public List COMMA() { return getTokens(TSqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(TSqlParser.COMMA, i);
		}
		public TerminalNode LR_BRACKET() { return getToken(TSqlParser.LR_BRACKET, 0); }
		public TerminalNode CONTENT() { return getToken(TSqlParser.CONTENT, 0); }
		public List EQUAL() { return getTokens(TSqlParser.EQUAL); }
		public TerminalNode EQUAL(int i) {
			return getToken(TSqlParser.EQUAL, i);
		}
		public TerminalNode STRING() { return getToken(TSqlParser.STRING, 0); }
		public TerminalNode PLATFORM() { return getToken(TSqlParser.PLATFORM, 0); }
		public List LANGUAGE() { return getTokens(TSqlParser.LANGUAGE); }
		public TerminalNode LANGUAGE(int i) {
			return getToken(TSqlParser.LANGUAGE, i);
		}
		public List DATA_SOURCE() { return getTokens(TSqlParser.DATA_SOURCE); }
		public TerminalNode DATA_SOURCE(int i) {
			return getToken(TSqlParser.DATA_SOURCE, i);
		}
		public List R() { return getTokens(TSqlParser.R); }
		public TerminalNode R(int i) {
			return getToken(TSqlParser.R, i);
		}
		public List PYTHON() { return getTokens(TSqlParser.PYTHON); }
		public TerminalNode PYTHON(int i) {
			return getToken(TSqlParser.PYTHON, i);
		}
		public TerminalNode WINDOWS() { return getToken(TSqlParser.WINDOWS, 0); }
		public TerminalNode LINUX() { return getToken(TSqlParser.LINUX, 0); }
		public Create_external_libraryContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_create_external_library; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterCreate_external_library(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitCreate_external_library(this);
		}
	}

	public final Create_external_libraryContext create_external_library() throws RecognitionException {
		Create_external_libraryContext _localctx = new Create_external_libraryContext(_ctx, getState());
		enterRule(_localctx, 298, RULE_create_external_library);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3328);
			match(CREATE);
			setState(3329);
			match(EXTERNAL);
			setState(3330);
			match(LIBRARY);
			setState(3331);
			((Create_external_libraryContext)_localctx).library_name = id();
			setState(3334);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==AUTHORIZATION) {
				{
				setState(3332);
				match(AUTHORIZATION);
				setState(3333);
				((Create_external_libraryContext)_localctx).owner_name = id();
				}
			}

			setState(3336);
			match(FROM);
			{
			setState(3338);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==COMMA) {
				{
				setState(3337);
				match(COMMA);
				}
			}

			setState(3341);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==LR_BRACKET) {
				{
				setState(3340);
				match(LR_BRACKET);
				}
			}

			setState(3345);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==CONTENT) {
				{
				setState(3343);
				match(CONTENT);
				setState(3344);
				match(EQUAL);
				}
			}

			setState(3350);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case STRING:
				{
				setState(3347);
				((Create_external_libraryContext)_localctx).client_library = match(STRING);
				}
				break;
			case BINARY:
				{
				setState(3348);
				match(BINARY);
				}
				break;
			case NONE:
				{
				setState(3349);
				match(NONE);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			setState(3359);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==COMMA) {
				{
				setState(3352);
				match(COMMA);
				setState(3353);
				match(PLATFORM);
				setState(3354);
				match(EQUAL);
				setState(3356);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==LINUX || _la==WINDOWS) {
					{
					setState(3355);
					_la = _input.LA(1);
					if ( !(_la==LINUX || _la==WINDOWS) ) {
					_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					}
				}

				setState(3358);
				match(RR_BRACKET);
				}
			}

			}
			setState(3376);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,309,_ctx) ) {
			case 1:
				{
				setState(3361);
				match(WITH);
				setState(3371); 
				_errHandler.sync(this);
				_la = _input.LA(1);
				do {
					{
					setState(3371);
					_errHandler.sync(this);
					switch (_input.LA(1)) {
					case LANGUAGE:
					case COMMA:
						{
						setState(3363);
						_errHandler.sync(this);
						_la = _input.LA(1);
						if (_la==COMMA) {
							{
							setState(3362);
							match(COMMA);
							}
						}

						setState(3365);
						match(LANGUAGE);
						setState(3366);
						match(EQUAL);
						setState(3367);
						_la = _input.LA(1);
						if ( !(_la==PYTHON || _la==R) ) {
						_errHandler.recoverInline(this);
						}
						else {
							if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
							_errHandler.reportMatch(this);
							consume();
						}
						}
						break;
					case DATA_SOURCE:
						{
						setState(3368);
						match(DATA_SOURCE);
						setState(3369);
						match(EQUAL);
						setState(3370);
						((Create_external_libraryContext)_localctx).external_data_source_name = id();
						}
						break;
					default:
						throw new NoViableAltException(this);
					}
					}
					setState(3373); 
					_errHandler.sync(this);
					_la = _input.LA(1);
				} while ( _la==DATA_SOURCE || _la==LANGUAGE || _la==COMMA );
				setState(3375);
				match(RR_BRACKET);
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Alter_external_resource_poolContext extends ParserRuleContext {
		public IdContext pool_name;
		public Token max_cpu_percent;
		public Token max_memory_percent;
		public Token max_processes;
		public TerminalNode ALTER() { return getToken(TSqlParser.ALTER, 0); }
		public TerminalNode EXTERNAL() { return getToken(TSqlParser.EXTERNAL, 0); }
		public TerminalNode RESOURCE() { return getToken(TSqlParser.RESOURCE, 0); }
		public TerminalNode POOL() { return getToken(TSqlParser.POOL, 0); }
		public TerminalNode WITH() { return getToken(TSqlParser.WITH, 0); }
		public TerminalNode LR_BRACKET() { return getToken(TSqlParser.LR_BRACKET, 0); }
		public TerminalNode MAX_CPU_PERCENT() { return getToken(TSqlParser.MAX_CPU_PERCENT, 0); }
		public List EQUAL() { return getTokens(TSqlParser.EQUAL); }
		public TerminalNode EQUAL(int i) {
			return getToken(TSqlParser.EQUAL, i);
		}
		public TerminalNode RR_BRACKET() { return getToken(TSqlParser.RR_BRACKET, 0); }
		public List DECIMAL() { return getTokens(TSqlParser.DECIMAL); }
		public TerminalNode DECIMAL(int i) {
			return getToken(TSqlParser.DECIMAL, i);
		}
		public TerminalNode DEFAULT_DOUBLE_QUOTE() { return getToken(TSqlParser.DEFAULT_DOUBLE_QUOTE, 0); }
		public TerminalNode AFFINITY() { return getToken(TSqlParser.AFFINITY, 0); }
		public TerminalNode CPU() { return getToken(TSqlParser.CPU, 0); }
		public TerminalNode NUMANODE() { return getToken(TSqlParser.NUMANODE, 0); }
		public IdContext id() {
			return getRuleContext(IdContext.class,0);
		}
		public TerminalNode MAX_MEMORY_PERCENT() { return getToken(TSqlParser.MAX_MEMORY_PERCENT, 0); }
		public TerminalNode MAX_PROCESSES() { return getToken(TSqlParser.MAX_PROCESSES, 0); }
		public TerminalNode AUTO() { return getToken(TSqlParser.AUTO, 0); }
		public List COMMA() { return getTokens(TSqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(TSqlParser.COMMA, i);
		}
		public List TO() { return getTokens(TSqlParser.TO); }
		public TerminalNode TO(int i) {
			return getToken(TSqlParser.TO, i);
		}
		public Alter_external_resource_poolContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alter_external_resource_pool; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterAlter_external_resource_pool(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitAlter_external_resource_pool(this);
		}
	}

	public final Alter_external_resource_poolContext alter_external_resource_pool() throws RecognitionException {
		Alter_external_resource_poolContext _localctx = new Alter_external_resource_poolContext(_ctx, getState());
		enterRule(_localctx, 300, RULE_alter_external_resource_pool);
		int _la;
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			setState(3378);
			match(ALTER);
			setState(3379);
			match(EXTERNAL);
			setState(3380);
			match(RESOURCE);
			setState(3381);
			match(POOL);
			setState(3384);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,310,_ctx) ) {
			case 1:
				{
				setState(3382);
				((Alter_external_resource_poolContext)_localctx).pool_name = id();
				}
				break;
			case 2:
				{
				setState(3383);
				match(DEFAULT_DOUBLE_QUOTE);
				}
				break;
			}
			setState(3386);
			match(WITH);
			setState(3387);
			match(LR_BRACKET);
			setState(3388);
			match(MAX_CPU_PERCENT);
			setState(3389);
			match(EQUAL);
			setState(3390);
			((Alter_external_resource_poolContext)_localctx).max_cpu_percent = match(DECIMAL);
			setState(3428);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case AFFINITY:
			case COMMA:
				{
				setState(3392);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==COMMA) {
					{
					setState(3391);
					match(COMMA);
					}
				}

				setState(3394);
				match(AFFINITY);
				setState(3395);
				match(CPU);
				setState(3396);
				match(EQUAL);
				setState(3410);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case AUTO:
					{
					setState(3397);
					match(AUTO);
					}
					break;
				case DECIMAL:
				case COMMA:
					{
					setState(3406); 
					_errHandler.sync(this);
					_alt = 1;
					do {
						switch (_alt) {
						case 1:
							{
							setState(3406);
							_errHandler.sync(this);
							switch ( getInterpreter().adaptivePredict(_input,313,_ctx) ) {
							case 1:
								{
								setState(3399);
								_errHandler.sync(this);
								_la = _input.LA(1);
								if (_la==COMMA) {
									{
									setState(3398);
									match(COMMA);
									}
								}

								setState(3401);
								match(DECIMAL);
								setState(3402);
								match(TO);
								setState(3403);
								match(DECIMAL);
								}
								break;
							case 2:
								{
								setState(3404);
								match(COMMA);
								setState(3405);
								match(DECIMAL);
								}
								break;
							}
							}
							break;
						default:
							throw new NoViableAltException(this);
						}
						setState(3408); 
						_errHandler.sync(this);
						_alt = getInterpreter().adaptivePredict(_input,314,_ctx);
					} while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER );
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;
			case NUMANODE:
				{
				setState(3412);
				match(NUMANODE);
				setState(3413);
				match(EQUAL);
				setState(3424); 
				_errHandler.sync(this);
				_alt = 1;
				do {
					switch (_alt) {
					case 1:
						{
						setState(3424);
						_errHandler.sync(this);
						switch ( getInterpreter().adaptivePredict(_input,318,_ctx) ) {
						case 1:
							{
							setState(3415);
							_errHandler.sync(this);
							_la = _input.LA(1);
							if (_la==COMMA) {
								{
								setState(3414);
								match(COMMA);
								}
							}

							setState(3417);
							match(DECIMAL);
							setState(3418);
							match(TO);
							setState(3419);
							match(DECIMAL);
							}
							break;
						case 2:
							{
							setState(3421);
							_errHandler.sync(this);
							_la = _input.LA(1);
							if (_la==COMMA) {
								{
								setState(3420);
								match(COMMA);
								}
							}

							setState(3423);
							match(DECIMAL);
							}
							break;
						}
						}
						break;
					default:
						throw new NoViableAltException(this);
					}
					setState(3426); 
					_errHandler.sync(this);
					_alt = getInterpreter().adaptivePredict(_input,319,_ctx);
				} while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER );
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			setState(3436);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,322,_ctx) ) {
			case 1:
				{
				setState(3431);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==COMMA) {
					{
					setState(3430);
					match(COMMA);
					}
				}

				setState(3433);
				match(MAX_MEMORY_PERCENT);
				setState(3434);
				match(EQUAL);
				setState(3435);
				((Alter_external_resource_poolContext)_localctx).max_memory_percent = match(DECIMAL);
				}
				break;
			}
			setState(3444);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==MAX_PROCESSES || _la==COMMA) {
				{
				setState(3439);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==COMMA) {
					{
					setState(3438);
					match(COMMA);
					}
				}

				setState(3441);
				match(MAX_PROCESSES);
				setState(3442);
				match(EQUAL);
				setState(3443);
				((Alter_external_resource_poolContext)_localctx).max_processes = match(DECIMAL);
				}
			}

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

	public static class Create_external_resource_poolContext extends ParserRuleContext {
		public IdContext pool_name;
		public Token max_cpu_percent;
		public Token max_memory_percent;
		public Token max_processes;
		public TerminalNode CREATE() { return getToken(TSqlParser.CREATE, 0); }
		public TerminalNode EXTERNAL() { return getToken(TSqlParser.EXTERNAL, 0); }
		public TerminalNode RESOURCE() { return getToken(TSqlParser.RESOURCE, 0); }
		public TerminalNode POOL() { return getToken(TSqlParser.POOL, 0); }
		public TerminalNode WITH() { return getToken(TSqlParser.WITH, 0); }
		public TerminalNode LR_BRACKET() { return getToken(TSqlParser.LR_BRACKET, 0); }
		public TerminalNode MAX_CPU_PERCENT() { return getToken(TSqlParser.MAX_CPU_PERCENT, 0); }
		public List EQUAL() { return getTokens(TSqlParser.EQUAL); }
		public TerminalNode EQUAL(int i) {
			return getToken(TSqlParser.EQUAL, i);
		}
		public TerminalNode RR_BRACKET() { return getToken(TSqlParser.RR_BRACKET, 0); }
		public IdContext id() {
			return getRuleContext(IdContext.class,0);
		}
		public List DECIMAL() { return getTokens(TSqlParser.DECIMAL); }
		public TerminalNode DECIMAL(int i) {
			return getToken(TSqlParser.DECIMAL, i);
		}
		public TerminalNode AFFINITY() { return getToken(TSqlParser.AFFINITY, 0); }
		public TerminalNode CPU() { return getToken(TSqlParser.CPU, 0); }
		public TerminalNode NUMANODE() { return getToken(TSqlParser.NUMANODE, 0); }
		public TerminalNode MAX_MEMORY_PERCENT() { return getToken(TSqlParser.MAX_MEMORY_PERCENT, 0); }
		public TerminalNode MAX_PROCESSES() { return getToken(TSqlParser.MAX_PROCESSES, 0); }
		public TerminalNode AUTO() { return getToken(TSqlParser.AUTO, 0); }
		public List COMMA() { return getTokens(TSqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(TSqlParser.COMMA, i);
		}
		public List TO() { return getTokens(TSqlParser.TO); }
		public TerminalNode TO(int i) {
			return getToken(TSqlParser.TO, i);
		}
		public Create_external_resource_poolContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_create_external_resource_pool; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterCreate_external_resource_pool(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitCreate_external_resource_pool(this);
		}
	}

	public final Create_external_resource_poolContext create_external_resource_pool() throws RecognitionException {
		Create_external_resource_poolContext _localctx = new Create_external_resource_poolContext(_ctx, getState());
		enterRule(_localctx, 302, RULE_create_external_resource_pool);
		int _la;
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			setState(3448);
			match(CREATE);
			setState(3449);
			match(EXTERNAL);
			setState(3450);
			match(RESOURCE);
			setState(3451);
			match(POOL);
			setState(3452);
			((Create_external_resource_poolContext)_localctx).pool_name = id();
			setState(3453);
			match(WITH);
			setState(3454);
			match(LR_BRACKET);
			setState(3455);
			match(MAX_CPU_PERCENT);
			setState(3456);
			match(EQUAL);
			setState(3457);
			((Create_external_resource_poolContext)_localctx).max_cpu_percent = match(DECIMAL);
			setState(3495);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case AFFINITY:
			case COMMA:
				{
				setState(3459);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==COMMA) {
					{
					setState(3458);
					match(COMMA);
					}
				}

				setState(3461);
				match(AFFINITY);
				setState(3462);
				match(CPU);
				setState(3463);
				match(EQUAL);
				setState(3477);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case AUTO:
					{
					setState(3464);
					match(AUTO);
					}
					break;
				case DECIMAL:
				case COMMA:
					{
					setState(3473); 
					_errHandler.sync(this);
					_alt = 1;
					do {
						switch (_alt) {
						case 1:
							{
							setState(3473);
							_errHandler.sync(this);
							switch ( getInterpreter().adaptivePredict(_input,327,_ctx) ) {
							case 1:
								{
								setState(3466);
								_errHandler.sync(this);
								_la = _input.LA(1);
								if (_la==COMMA) {
									{
									setState(3465);
									match(COMMA);
									}
								}

								setState(3468);
								match(DECIMAL);
								setState(3469);
								match(TO);
								setState(3470);
								match(DECIMAL);
								}
								break;
							case 2:
								{
								setState(3471);
								match(COMMA);
								setState(3472);
								match(DECIMAL);
								}
								break;
							}
							}
							break;
						default:
							throw new NoViableAltException(this);
						}
						setState(3475); 
						_errHandler.sync(this);
						_alt = getInterpreter().adaptivePredict(_input,328,_ctx);
					} while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER );
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;
			case NUMANODE:
				{
				setState(3479);
				match(NUMANODE);
				setState(3480);
				match(EQUAL);
				setState(3491); 
				_errHandler.sync(this);
				_alt = 1;
				do {
					switch (_alt) {
					case 1:
						{
						setState(3491);
						_errHandler.sync(this);
						switch ( getInterpreter().adaptivePredict(_input,332,_ctx) ) {
						case 1:
							{
							setState(3482);
							_errHandler.sync(this);
							_la = _input.LA(1);
							if (_la==COMMA) {
								{
								setState(3481);
								match(COMMA);
								}
							}

							setState(3484);
							match(DECIMAL);
							setState(3485);
							match(TO);
							setState(3486);
							match(DECIMAL);
							}
							break;
						case 2:
							{
							setState(3488);
							_errHandler.sync(this);
							_la = _input.LA(1);
							if (_la==COMMA) {
								{
								setState(3487);
								match(COMMA);
								}
							}

							setState(3490);
							match(DECIMAL);
							}
							break;
						}
						}
						break;
					default:
						throw new NoViableAltException(this);
					}
					setState(3493); 
					_errHandler.sync(this);
					_alt = getInterpreter().adaptivePredict(_input,333,_ctx);
				} while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER );
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			setState(3503);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,336,_ctx) ) {
			case 1:
				{
				setState(3498);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==COMMA) {
					{
					setState(3497);
					match(COMMA);
					}
				}

				setState(3500);
				match(MAX_MEMORY_PERCENT);
				setState(3501);
				match(EQUAL);
				setState(3502);
				((Create_external_resource_poolContext)_localctx).max_memory_percent = match(DECIMAL);
				}
				break;
			}
			setState(3511);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==MAX_PROCESSES || _la==COMMA) {
				{
				setState(3506);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==COMMA) {
					{
					setState(3505);
					match(COMMA);
					}
				}

				setState(3508);
				match(MAX_PROCESSES);
				setState(3509);
				match(EQUAL);
				setState(3510);
				((Create_external_resource_poolContext)_localctx).max_processes = match(DECIMAL);
				}
			}

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

	public static class Alter_fulltext_catalogContext extends ParserRuleContext {
		public IdContext catalog_name;
		public TerminalNode ALTER() { return getToken(TSqlParser.ALTER, 0); }
		public TerminalNode FULLTEXT() { return getToken(TSqlParser.FULLTEXT, 0); }
		public TerminalNode CATALOG() { return getToken(TSqlParser.CATALOG, 0); }
		public IdContext id() {
			return getRuleContext(IdContext.class,0);
		}
		public TerminalNode REBUILD() { return getToken(TSqlParser.REBUILD, 0); }
		public TerminalNode REORGANIZE() { return getToken(TSqlParser.REORGANIZE, 0); }
		public TerminalNode AS() { return getToken(TSqlParser.AS, 0); }
		public TerminalNode DEFAULT() { return getToken(TSqlParser.DEFAULT, 0); }
		public TerminalNode WITH() { return getToken(TSqlParser.WITH, 0); }
		public TerminalNode ACCENT_SENSITIVITY() { return getToken(TSqlParser.ACCENT_SENSITIVITY, 0); }
		public TerminalNode EQUAL() { return getToken(TSqlParser.EQUAL, 0); }
		public TerminalNode ON() { return getToken(TSqlParser.ON, 0); }
		public TerminalNode OFF() { return getToken(TSqlParser.OFF, 0); }
		public Alter_fulltext_catalogContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alter_fulltext_catalog; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterAlter_fulltext_catalog(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitAlter_fulltext_catalog(this);
		}
	}

	public final Alter_fulltext_catalogContext alter_fulltext_catalog() throws RecognitionException {
		Alter_fulltext_catalogContext _localctx = new Alter_fulltext_catalogContext(_ctx, getState());
		enterRule(_localctx, 304, RULE_alter_fulltext_catalog);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3515);
			match(ALTER);
			setState(3516);
			match(FULLTEXT);
			setState(3517);
			match(CATALOG);
			setState(3518);
			((Alter_fulltext_catalogContext)_localctx).catalog_name = id();
			setState(3529);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case REBUILD:
				{
				setState(3519);
				match(REBUILD);
				setState(3524);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,339,_ctx) ) {
				case 1:
					{
					setState(3520);
					match(WITH);
					setState(3521);
					match(ACCENT_SENSITIVITY);
					setState(3522);
					match(EQUAL);
					setState(3523);
					_la = _input.LA(1);
					if ( !(_la==OFF || _la==ON) ) {
					_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					}
					break;
				}
				}
				break;
			case REORGANIZE:
				{
				setState(3526);
				match(REORGANIZE);
				}
				break;
			case AS:
				{
				setState(3527);
				match(AS);
				setState(3528);
				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 Create_fulltext_catalogContext extends ParserRuleContext {
		public IdContext catalog_name;
		public IdContext filegroup;
		public Token rootpath;
		public IdContext owner_name;
		public TerminalNode CREATE() { return getToken(TSqlParser.CREATE, 0); }
		public TerminalNode FULLTEXT() { return getToken(TSqlParser.FULLTEXT, 0); }
		public TerminalNode CATALOG() { return getToken(TSqlParser.CATALOG, 0); }
		public List id() {
			return getRuleContexts(IdContext.class);
		}
		public IdContext id(int i) {
			return getRuleContext(IdContext.class,i);
		}
		public List ON() { return getTokens(TSqlParser.ON); }
		public TerminalNode ON(int i) {
			return getToken(TSqlParser.ON, i);
		}
		public TerminalNode FILEGROUP() { return getToken(TSqlParser.FILEGROUP, 0); }
		public TerminalNode IN() { return getToken(TSqlParser.IN, 0); }
		public TerminalNode PATH() { return getToken(TSqlParser.PATH, 0); }
		public TerminalNode WITH() { return getToken(TSqlParser.WITH, 0); }
		public TerminalNode ACCENT_SENSITIVITY() { return getToken(TSqlParser.ACCENT_SENSITIVITY, 0); }
		public TerminalNode EQUAL() { return getToken(TSqlParser.EQUAL, 0); }
		public TerminalNode AS() { return getToken(TSqlParser.AS, 0); }
		public TerminalNode DEFAULT() { return getToken(TSqlParser.DEFAULT, 0); }
		public TerminalNode AUTHORIZATION() { return getToken(TSqlParser.AUTHORIZATION, 0); }
		public TerminalNode STRING() { return getToken(TSqlParser.STRING, 0); }
		public TerminalNode OFF() { return getToken(TSqlParser.OFF, 0); }
		public Create_fulltext_catalogContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_create_fulltext_catalog; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterCreate_fulltext_catalog(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitCreate_fulltext_catalog(this);
		}
	}

	public final Create_fulltext_catalogContext create_fulltext_catalog() throws RecognitionException {
		Create_fulltext_catalogContext _localctx = new Create_fulltext_catalogContext(_ctx, getState());
		enterRule(_localctx, 306, RULE_create_fulltext_catalog);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3531);
			match(CREATE);
			setState(3532);
			match(FULLTEXT);
			setState(3533);
			match(CATALOG);
			setState(3534);
			((Create_fulltext_catalogContext)_localctx).catalog_name = id();
			setState(3538);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==ON) {
				{
				setState(3535);
				match(ON);
				setState(3536);
				match(FILEGROUP);
				setState(3537);
				((Create_fulltext_catalogContext)_localctx).filegroup = id();
				}
			}

			setState(3543);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==IN) {
				{
				setState(3540);
				match(IN);
				setState(3541);
				match(PATH);
				setState(3542);
				((Create_fulltext_catalogContext)_localctx).rootpath = match(STRING);
				}
			}

			setState(3549);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,343,_ctx) ) {
			case 1:
				{
				setState(3545);
				match(WITH);
				setState(3546);
				match(ACCENT_SENSITIVITY);
				setState(3547);
				match(EQUAL);
				setState(3548);
				_la = _input.LA(1);
				if ( !(_la==OFF || _la==ON) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
				break;
			}
			setState(3553);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==AS) {
				{
				setState(3551);
				match(AS);
				setState(3552);
				match(DEFAULT);
				}
			}

			setState(3557);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==AUTHORIZATION) {
				{
				setState(3555);
				match(AUTHORIZATION);
				setState(3556);
				((Create_fulltext_catalogContext)_localctx).owner_name = id();
				}
			}

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

	public static class Alter_fulltext_stoplistContext extends ParserRuleContext {
		public IdContext stoplist_name;
		public Token stopword;
		public TerminalNode ALTER() { return getToken(TSqlParser.ALTER, 0); }
		public TerminalNode FULLTEXT() { return getToken(TSqlParser.FULLTEXT, 0); }
		public TerminalNode STOPLIST() { return getToken(TSqlParser.STOPLIST, 0); }
		public IdContext id() {
			return getRuleContext(IdContext.class,0);
		}
		public TerminalNode ADD() { return getToken(TSqlParser.ADD, 0); }
		public TerminalNode LANGUAGE() { return getToken(TSqlParser.LANGUAGE, 0); }
		public TerminalNode DROP() { return getToken(TSqlParser.DROP, 0); }
		public List STRING() { return getTokens(TSqlParser.STRING); }
		public TerminalNode STRING(int i) {
			return getToken(TSqlParser.STRING, i);
		}
		public TerminalNode DECIMAL() { return getToken(TSqlParser.DECIMAL, 0); }
		public TerminalNode BINARY() { return getToken(TSqlParser.BINARY, 0); }
		public TerminalNode ALL() { return getToken(TSqlParser.ALL, 0); }
		public Alter_fulltext_stoplistContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alter_fulltext_stoplist; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterAlter_fulltext_stoplist(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitAlter_fulltext_stoplist(this);
		}
	}

	public final Alter_fulltext_stoplistContext alter_fulltext_stoplist() throws RecognitionException {
		Alter_fulltext_stoplistContext _localctx = new Alter_fulltext_stoplistContext(_ctx, getState());
		enterRule(_localctx, 308, RULE_alter_fulltext_stoplist);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3559);
			match(ALTER);
			setState(3560);
			match(FULLTEXT);
			setState(3561);
			match(STOPLIST);
			setState(3562);
			((Alter_fulltext_stoplistContext)_localctx).stoplist_name = id();
			setState(3576);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case ADD:
				{
				setState(3563);
				match(ADD);
				setState(3564);
				((Alter_fulltext_stoplistContext)_localctx).stopword = match(STRING);
				setState(3565);
				match(LANGUAGE);
				setState(3566);
				_la = _input.LA(1);
				if ( !(((((_la - 794)) & ~0x3f) == 0 && ((1L << (_la - 794)) & ((1L << (DECIMAL - 794)) | (1L << (STRING - 794)) | (1L << (BINARY - 794)))) != 0)) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
				break;
			case DROP:
				{
				setState(3567);
				match(DROP);
				setState(3574);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,346,_ctx) ) {
				case 1:
					{
					setState(3568);
					((Alter_fulltext_stoplistContext)_localctx).stopword = match(STRING);
					setState(3569);
					match(LANGUAGE);
					setState(3570);
					_la = _input.LA(1);
					if ( !(((((_la - 794)) & ~0x3f) == 0 && ((1L << (_la - 794)) & ((1L << (DECIMAL - 794)) | (1L << (STRING - 794)) | (1L << (BINARY - 794)))) != 0)) ) {
					_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					}
					break;
				case 2:
					{
					setState(3571);
					match(ALL);
					setState(3572);
					_la = _input.LA(1);
					if ( !(((((_la - 794)) & ~0x3f) == 0 && ((1L << (_la - 794)) & ((1L << (DECIMAL - 794)) | (1L << (STRING - 794)) | (1L << (BINARY - 794)))) != 0)) ) {
					_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					}
					break;
				case 3:
					{
					setState(3573);
					match(ALL);
					}
					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 Create_fulltext_stoplistContext extends ParserRuleContext {
		public IdContext stoplist_name;
		public IdContext database_name;
		public IdContext source_stoplist_name;
		public IdContext owner_name;
		public TerminalNode CREATE() { return getToken(TSqlParser.CREATE, 0); }
		public TerminalNode FULLTEXT() { return getToken(TSqlParser.FULLTEXT, 0); }
		public List STOPLIST() { return getTokens(TSqlParser.STOPLIST); }
		public TerminalNode STOPLIST(int i) {
			return getToken(TSqlParser.STOPLIST, i);
		}
		public List id() {
			return getRuleContexts(IdContext.class);
		}
		public IdContext id(int i) {
			return getRuleContext(IdContext.class,i);
		}
		public TerminalNode FROM() { return getToken(TSqlParser.FROM, 0); }
		public TerminalNode AUTHORIZATION() { return getToken(TSqlParser.AUTHORIZATION, 0); }
		public TerminalNode SYSTEM() { return getToken(TSqlParser.SYSTEM, 0); }
		public TerminalNode DOT() { return getToken(TSqlParser.DOT, 0); }
		public Create_fulltext_stoplistContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_create_fulltext_stoplist; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterCreate_fulltext_stoplist(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitCreate_fulltext_stoplist(this);
		}
	}

	public final Create_fulltext_stoplistContext create_fulltext_stoplist() throws RecognitionException {
		Create_fulltext_stoplistContext _localctx = new Create_fulltext_stoplistContext(_ctx, getState());
		enterRule(_localctx, 310, RULE_create_fulltext_stoplist);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3578);
			match(CREATE);
			setState(3579);
			match(FULLTEXT);
			setState(3580);
			match(STOPLIST);
			setState(3581);
			((Create_fulltext_stoplistContext)_localctx).stoplist_name = id();
			setState(3593);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==FROM) {
				{
				setState(3582);
				match(FROM);
				setState(3591);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case CALLED:
				case DATA_COMPRESSION:
				case EVENTDATA:
				case FILENAME:
				case FILLFACTOR:
				case FORCESEEK:
				case INIT:
				case KEY:
				case MASTER:
				case MAX_MEMORY:
				case OFFSETS:
				case PAGE:
				case PUBLIC:
				case R:
				case RAW:
				case RETURN:
				case RETURNS:
				case ROWCOUNT:
				case SAFETY:
				case SERVER:
				case SID:
				case SOURCE:
				case STATE:
				case START:
				case TARGET:
				case ABSOLUTE:
				case ACCENT_SENSITIVITY:
				case ACTION:
				case ACTIVATION:
				case ACTIVE:
				case ADDRESS:
				case AES_128:
				case AES_192:
				case AES_256:
				case AFFINITY:
				case AFTER:
				case AGGREGATE:
				case ALGORITHM:
				case ALLOW_ENCRYPTED_VALUE_MODIFICATIONS:
				case ALLOW_SNAPSHOT_ISOLATION:
				case ALLOWED:
				case ANSI_NULL_DEFAULT:
				case ANSI_NULLS:
				case ANSI_PADDING:
				case ANSI_WARNINGS:
				case APPLICATION_LOG:
				case APPLY:
				case ARITHABORT:
				case ASSEMBLY:
				case AUDIT:
				case AUDIT_GUID:
				case AUTO:
				case AUTO_CLEANUP:
				case AUTO_CLOSE:
				case AUTO_CREATE_STATISTICS:
				case AUTO_SHRINK:
				case AUTO_UPDATE_STATISTICS:
				case AUTO_UPDATE_STATISTICS_ASYNC:
				case AVAILABILITY:
				case AVG:
				case BACKUP_PRIORITY:
				case BEGIN_DIALOG:
				case BIGINT:
				case BINARY_BASE64:
				case BINARY_CHECKSUM:
				case BINDING:
				case BLOB_STORAGE:
				case BROKER:
				case BROKER_INSTANCE:
				case BULK_LOGGED:
				case CALLER:
				case CAP_CPU_PERCENT:
				case CAST:
				case CATALOG:
				case CATCH:
				case CHANGE_RETENTION:
				case CHANGE_TRACKING:
				case CHECKSUM:
				case CHECKSUM_AGG:
				case CLEANUP:
				case COLLECTION:
				case COLUMN_MASTER_KEY:
				case COMMITTED:
				case COMPATIBILITY_LEVEL:
				case CONCAT:
				case CONCAT_NULL_YIELDS_NULL:
				case CONTENT:
				case CONTROL:
				case COOKIE:
				case COUNT:
				case COUNT_BIG:
				case COUNTER:
				case CPU:
				case CREATE_NEW:
				case CREATION_DISPOSITION:
				case CREDENTIAL:
				case CRYPTOGRAPHIC:
				case CURSOR_CLOSE_ON_COMMIT:
				case CURSOR_DEFAULT:
				case DATE_CORRELATION_OPTIMIZATION:
				case DATEADD:
				case DATEDIFF:
				case DATENAME:
				case DATEPART:
				case DAYS:
				case DB_CHAINING:
				case DB_FAILOVER:
				case DECRYPTION:
				case DEFAULT_DOUBLE_QUOTE:
				case DEFAULT_FULLTEXT_LANGUAGE:
				case DEFAULT_LANGUAGE:
				case DELAY:
				case DELAYED_DURABILITY:
				case DELETED:
				case DENSE_RANK:
				case DEPENDENTS:
				case DES:
				case DESCRIPTION:
				case DESX:
				case DHCP:
				case DIALOG:
				case DIRECTORY_NAME:
				case DISABLE:
				case DISABLE_BROKER:
				case DISABLED:
				case DISK_DRIVE:
				case DOCUMENT:
				case DYNAMIC:
				case EMERGENCY:
				case EMPTY:
				case ENABLE:
				case ENABLE_BROKER:
				case ENCRYPTED_VALUE:
				case ENCRYPTION:
				case ENDPOINT_URL:
				case ERROR_BROKER_CONVERSATIONS:
				case EXCLUSIVE:
				case EXECUTABLE:
				case EXIST:
				case EXPAND:
				case EXPIRY_DATE:
				case EXPLICIT:
				case FAIL_OPERATION:
				case FAILOVER_MODE:
				case FAILURE:
				case FAILURE_CONDITION_LEVEL:
				case FAST:
				case FAST_FORWARD:
				case FILEGROUP:
				case FILEGROWTH:
				case FILEPATH:
				case FILESTREAM:
				case FILTER:
				case FIRST:
				case FIRST_VALUE:
				case FOLLOWING:
				case FORCE:
				case FORCE_FAILOVER_ALLOW_DATA_LOSS:
				case FORCED:
				case FORMAT:
				case FORWARD_ONLY:
				case FULLSCAN:
				case FULLTEXT:
				case GB:
				case GETDATE:
				case GETUTCDATE:
				case GLOBAL:
				case GO:
				case GROUP_MAX_REQUESTS:
				case GROUPING:
				case GROUPING_ID:
				case HADR:
				case HASH:
				case HEALTH_CHECK_TIMEOUT:
				case HIGH:
				case HONOR_BROKER_PRIORITY:
				case HOURS:
				case IDENTITY_VALUE:
				case IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX:
				case IMMEDIATE:
				case IMPERSONATE:
				case IMPORTANCE:
				case INCREMENTAL:
				case INITIATOR:
				case INPUT:
				case INSENSITIVE:
				case INSERTED:
				case INT:
				case IP:
				case ISOLATION:
				case KB:
				case KEEP:
				case KEEPFIXED:
				case KEY_SOURCE:
				case KEYS:
				case KEYSET:
				case LAG:
				case LAST:
				case LAST_VALUE:
				case LEAD:
				case LEVEL:
				case LIST:
				case LISTENER:
				case LISTENER_URL:
				case LOB_COMPACTION:
				case LOCAL:
				case LOCATION:
				case LOCK:
				case LOCK_ESCALATION:
				case LOGIN:
				case LOOP:
				case LOW:
				case MANUAL:
				case MARK:
				case MATERIALIZED:
				case MAX:
				case MAX_CPU_PERCENT:
				case MAX_DOP:
				case MAX_FILES:
				case MAX_IOPS_PER_VOLUME:
				case MAX_MEMORY_PERCENT:
				case MAX_PROCESSES:
				case MAX_QUEUE_READERS:
				case MAX_ROLLOVER_FILES:
				case MAXDOP:
				case MAXRECURSION:
				case MAXSIZE:
				case MB:
				case MEDIUM:
				case MEMORY_OPTIMIZED_DATA:
				case MESSAGE:
				case MIN:
				case MIN_ACTIVE_ROWVERSION:
				case MIN_CPU_PERCENT:
				case MIN_IOPS_PER_VOLUME:
				case MIN_MEMORY_PERCENT:
				case MINUTES:
				case MIRROR_ADDRESS:
				case MIXED_PAGE_ALLOCATION:
				case MODE:
				case MODIFY:
				case MOVE:
				case MULTI_USER:
				case NAME:
				case NESTED_TRIGGERS:
				case NEW_ACCOUNT:
				case NEW_BROKER:
				case NEW_PASSWORD:
				case NEXT:
				case NO:
				case NO_TRUNCATE:
				case NO_WAIT:
				case NOCOUNT:
				case NODES:
				case NOEXPAND:
				case NON_TRANSACTED_ACCESS:
				case NORECOMPUTE:
				case NORECOVERY:
				case NOWAIT:
				case NTILE:
				case NUMANODE:
				case NUMBER:
				case NUMERIC_ROUNDABORT:
				case OBJECT:
				case OFFLINE:
				case OFFSET:
				case OLD_ACCOUNT:
				case ONLINE:
				case ONLY:
				case OPEN_EXISTING:
				case OPTIMISTIC:
				case OPTIMIZE:
				case OUT:
				case OUTPUT:
				case OWNER:
				case PAGE_VERIFY:
				case PARAMETERIZATION:
				case PARTITION:
				case PARTITIONS:
				case PARTNER:
				case PATH:
				case POISON_MESSAGE_HANDLING:
				case POOL:
				case PORT:
				case PRECEDING:
				case PRIMARY_ROLE:
				case PRIOR:
				case PRIORITY:
				case PRIORITY_LEVEL:
				case PRIVATE:
				case PRIVATE_KEY:
				case PRIVILEGES:
				case PROCEDURE_NAME:
				case PROPERTY:
				case PROVIDER:
				case PROVIDER_KEY_NAME:
				case QUERY:
				case QUEUE:
				case QUEUE_DELAY:
				case QUOTED_IDENTIFIER:
				case RANGE:
				case RANK:
				case RC2:
				case RC4:
				case RC4_128:
				case READ_COMMITTED_SNAPSHOT:
				case READ_ONLY:
				case READ_ONLY_ROUTING_LIST:
				case READ_WRITE:
				case READONLY:
				case REBUILD:
				case RECEIVE:
				case RECOMPILE:
				case RECOVERY:
				case RECURSIVE_TRIGGERS:
				case RELATIVE:
				case REMOTE:
				case REMOTE_SERVICE_NAME:
				case REMOVE:
				case REORGANIZE:
				case REPEATABLE:
				case REPLICA:
				case REQUEST_MAX_CPU_TIME_SEC:
				case REQUEST_MAX_MEMORY_GRANT_PERCENT:
				case REQUEST_MEMORY_GRANT_TIMEOUT_SEC:
				case REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT:
				case RESERVE_DISK_SPACE:
				case RESOURCE:
				case RESOURCE_MANAGER_LOCATION:
				case RESTRICTED_USER:
				case RETENTION:
				case ROBUST:
				case ROOT:
				case ROUTE:
				case ROW:
				case ROW_NUMBER:
				case ROWGUID:
				case ROWS:
				case SAMPLE:
				case SCHEMABINDING:
				case SCOPED:
				case SCROLL:
				case SCROLL_LOCKS:
				case SEARCH:
				case SECONDARY:
				case SECONDARY_ONLY:
				case SECONDARY_ROLE:
				case SECONDS:
				case SECRET:
				case SECURITY_LOG:
				case SEEDING_MODE:
				case SELF:
				case SEMI_SENSITIVE:
				case SEND:
				case SENT:
				case SERIALIZABLE:
				case SESSION_TIMEOUT:
				case SETERROR:
				case SHARE:
				case SHOWPLAN:
				case SIGNATURE:
				case SIMPLE:
				case SINGLE_USER:
				case SIZE:
				case SMALLINT:
				case SNAPSHOT:
				case SPATIAL_WINDOW_MAX_CELLS:
				case STANDBY:
				case START_DATE:
				case STATIC:
				case STATS_STREAM:
				case STATUS:
				case STDEV:
				case STDEVP:
				case STOPLIST:
				case STUFF:
				case SUBJECT:
				case SUM:
				case SUSPEND:
				case SYMMETRIC:
				case SYNCHRONOUS_COMMIT:
				case SYNONYM:
				case TAKE:
				case TARGET_RECOVERY_TIME:
				case TB:
				case TEXTIMAGE_ON:
				case THROW:
				case TIES:
				case TIME:
				case TIMEOUT:
				case TIMER:
				case TINYINT:
				case TORN_PAGE_DETECTION:
				case TRANSFORM_NOISE_WORDS:
				case TRIPLE_DES:
				case TRIPLE_DES_3KEY:
				case TRUSTWORTHY:
				case TRY:
				case TSQL:
				case TWO_DIGIT_YEAR_CUTOFF:
				case TYPE:
				case TYPE_WARNING:
				case UNBOUNDED:
				case UNCOMMITTED:
				case UNKNOWN:
				case UNLIMITED:
				case USING:
				case VALID_XML:
				case VALIDATION:
				case VALUE:
				case VAR:
				case VARP:
				case VIEW_METADATA:
				case VIEWS:
				case WAIT:
				case WELL_FORMED_XML:
				case WORK:
				case WORKLOAD:
				case XML:
				case XMLNAMESPACES:
				case DOUBLE_QUOTE_ID:
				case SQUARE_BRACKET_ID:
				case ID:
					{
					setState(3586);
					_errHandler.sync(this);
					switch ( getInterpreter().adaptivePredict(_input,348,_ctx) ) {
					case 1:
						{
						setState(3583);
						((Create_fulltext_stoplistContext)_localctx).database_name = id();
						setState(3584);
						match(DOT);
						}
						break;
					}
					setState(3588);
					((Create_fulltext_stoplistContext)_localctx).source_stoplist_name = id();
					}
					break;
				case SYSTEM:
					{
					setState(3589);
					match(SYSTEM);
					setState(3590);
					match(STOPLIST);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
			}

			setState(3597);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==AUTHORIZATION) {
				{
				setState(3595);
				match(AUTHORIZATION);
				setState(3596);
				((Create_fulltext_stoplistContext)_localctx).owner_name = id();
				}
			}

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

	public static class Alter_login_sql_serverContext extends ParserRuleContext {
		public IdContext login_name;
		public Token password;
		public Token password_hash;
		public Token old_password;
		public IdContext default_database;
		public IdContext default_laguage;
		public IdContext credential_name;
		public TerminalNode ALTER() { return getToken(TSqlParser.ALTER, 0); }
		public TerminalNode LOGIN() { return getToken(TSqlParser.LOGIN, 0); }
		public List id() {
			return getRuleContexts(IdContext.class);
		}
		public IdContext id(int i) {
			return getRuleContext(IdContext.class,i);
		}
		public TerminalNode WITH() { return getToken(TSqlParser.WITH, 0); }
		public List CREDENTIAL() { return getTokens(TSqlParser.CREDENTIAL); }
		public TerminalNode CREDENTIAL(int i) {
			return getToken(TSqlParser.CREDENTIAL, i);
		}
		public TerminalNode ADD() { return getToken(TSqlParser.ADD, 0); }
		public TerminalNode DROP() { return getToken(TSqlParser.DROP, 0); }
		public TerminalNode OLD_PASSWORD() { return getToken(TSqlParser.OLD_PASSWORD, 0); }
		public List EQUAL() { return getTokens(TSqlParser.EQUAL); }
		public TerminalNode EQUAL(int i) {
			return getToken(TSqlParser.EQUAL, i);
		}
		public TerminalNode DEFAULT_DATABASE() { return getToken(TSqlParser.DEFAULT_DATABASE, 0); }
		public TerminalNode DEFAULT_LANGUAGE() { return getToken(TSqlParser.DEFAULT_LANGUAGE, 0); }
		public TerminalNode NAME() { return getToken(TSqlParser.NAME, 0); }
		public TerminalNode CHECK_POLICY() { return getToken(TSqlParser.CHECK_POLICY, 0); }
		public TerminalNode CHECK_EXPIRATION() { return getToken(TSqlParser.CHECK_EXPIRATION, 0); }
		public TerminalNode NO() { return getToken(TSqlParser.NO, 0); }
		public TerminalNode ENABLE() { return getToken(TSqlParser.ENABLE, 0); }
		public TerminalNode DISABLE() { return getToken(TSqlParser.DISABLE, 0); }
		public List STRING() { return getTokens(TSqlParser.STRING); }
		public TerminalNode STRING(int i) {
			return getToken(TSqlParser.STRING, i);
		}
		public List ON() { return getTokens(TSqlParser.ON); }
		public TerminalNode ON(int i) {
			return getToken(TSqlParser.ON, i);
		}
		public List OFF() { return getTokens(TSqlParser.OFF); }
		public TerminalNode OFF(int i) {
			return getToken(TSqlParser.OFF, i);
		}
		public TerminalNode PASSWORD() { return getToken(TSqlParser.PASSWORD, 0); }
		public TerminalNode HASHED() { return getToken(TSqlParser.HASHED, 0); }
		public List MUST_CHANGE() { return getTokens(TSqlParser.MUST_CHANGE); }
		public TerminalNode MUST_CHANGE(int i) {
			return getToken(TSqlParser.MUST_CHANGE, i);
		}
		public List UNLOCK() { return getTokens(TSqlParser.UNLOCK); }
		public TerminalNode UNLOCK(int i) {
			return getToken(TSqlParser.UNLOCK, i);
		}
		public TerminalNode BINARY() { return getToken(TSqlParser.BINARY, 0); }
		public Alter_login_sql_serverContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alter_login_sql_server; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterAlter_login_sql_server(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitAlter_login_sql_server(this);
		}
	}

	public final Alter_login_sql_serverContext alter_login_sql_server() throws RecognitionException {
		Alter_login_sql_serverContext _localctx = new Alter_login_sql_serverContext(_ctx, getState());
		enterRule(_localctx, 312, RULE_alter_login_sql_server);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3599);
			match(ALTER);
			setState(3600);
			match(LOGIN);
			setState(3601);
			((Alter_login_sql_serverContext)_localctx).login_name = id();
			setState(3669);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,365,_ctx) ) {
			case 1:
				{
				setState(3603);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,352,_ctx) ) {
				case 1:
					{
					setState(3602);
					_la = _input.LA(1);
					if ( !(_la==DISABLE || _la==ENABLE) ) {
					_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					}
					break;
				}
				}
				break;
			case 2:
				{
				setState(3605);
				match(WITH);
				setState(3619);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==PASSWORD) {
					{
					{
					setState(3606);
					match(PASSWORD);
					setState(3607);
					match(EQUAL);
					setState(3611);
					_errHandler.sync(this);
					switch (_input.LA(1)) {
					case STRING:
						{
						setState(3608);
						((Alter_login_sql_serverContext)_localctx).password = match(STRING);
						}
						break;
					case BINARY:
						{
						setState(3609);
						((Alter_login_sql_serverContext)_localctx).password_hash = match(BINARY);
						setState(3610);
						match(HASHED);
						}
						break;
					default:
						throw new NoViableAltException(this);
					}
					}
					setState(3616);
					_errHandler.sync(this);
					_la = _input.LA(1);
					while (_la==MUST_CHANGE || _la==UNLOCK) {
						{
						{
						setState(3613);
						_la = _input.LA(1);
						if ( !(_la==MUST_CHANGE || _la==UNLOCK) ) {
						_errHandler.recoverInline(this);
						}
						else {
							if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
							_errHandler.reportMatch(this);
							consume();
						}
						}
						}
						setState(3618);
						_errHandler.sync(this);
						_la = _input.LA(1);
					}
					}
				}

				setState(3630);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==OLD_PASSWORD) {
					{
					setState(3621);
					match(OLD_PASSWORD);
					setState(3622);
					match(EQUAL);
					setState(3623);
					((Alter_login_sql_serverContext)_localctx).old_password = match(STRING);
					setState(3627);
					_errHandler.sync(this);
					_la = _input.LA(1);
					while (_la==MUST_CHANGE || _la==UNLOCK) {
						{
						{
						setState(3624);
						_la = _input.LA(1);
						if ( !(_la==MUST_CHANGE || _la==UNLOCK) ) {
						_errHandler.recoverInline(this);
						}
						else {
							if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
							_errHandler.reportMatch(this);
							consume();
						}
						}
						}
						setState(3629);
						_errHandler.sync(this);
						_la = _input.LA(1);
					}
					}
				}

				setState(3635);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==DEFAULT_DATABASE) {
					{
					setState(3632);
					match(DEFAULT_DATABASE);
					setState(3633);
					match(EQUAL);
					setState(3634);
					((Alter_login_sql_serverContext)_localctx).default_database = id();
					}
				}

				setState(3640);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,359,_ctx) ) {
				case 1:
					{
					setState(3637);
					match(DEFAULT_LANGUAGE);
					setState(3638);
					match(EQUAL);
					setState(3639);
					((Alter_login_sql_serverContext)_localctx).default_laguage = id();
					}
					break;
				}
				setState(3645);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,360,_ctx) ) {
				case 1:
					{
					setState(3642);
					match(NAME);
					setState(3643);
					match(EQUAL);
					setState(3644);
					((Alter_login_sql_serverContext)_localctx).login_name = id();
					}
					break;
				}
				setState(3650);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==CHECK_POLICY) {
					{
					setState(3647);
					match(CHECK_POLICY);
					setState(3648);
					match(EQUAL);
					setState(3649);
					_la = _input.LA(1);
					if ( !(_la==OFF || _la==ON) ) {
					_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					}
				}

				setState(3655);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==CHECK_EXPIRATION) {
					{
					setState(3652);
					match(CHECK_EXPIRATION);
					setState(3653);
					match(EQUAL);
					setState(3654);
					_la = _input.LA(1);
					if ( !(_la==OFF || _la==ON) ) {
					_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					}
				}

				setState(3660);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,363,_ctx) ) {
				case 1:
					{
					setState(3657);
					match(CREDENTIAL);
					setState(3658);
					match(EQUAL);
					setState(3659);
					((Alter_login_sql_serverContext)_localctx).credential_name = id();
					}
					break;
				}
				setState(3664);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,364,_ctx) ) {
				case 1:
					{
					setState(3662);
					match(NO);
					setState(3663);
					match(CREDENTIAL);
					}
					break;
				}
				}
				break;
			case 3:
				{
				setState(3666);
				_la = _input.LA(1);
				if ( !(_la==ADD || _la==DROP) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(3667);
				match(CREDENTIAL);
				setState(3668);
				((Alter_login_sql_serverContext)_localctx).credential_name = id();
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Create_login_sql_serverContext extends ParserRuleContext {
		public IdContext login_name;
		public Token password;
		public Token password_hash;
		public Token sid;
		public IdContext default_database;
		public IdContext default_laguage;
		public IdContext credential_name;
		public Token default_language;
		public IdContext certname;
		public IdContext asym_key_name;
		public TerminalNode CREATE() { return getToken(TSqlParser.CREATE, 0); }
		public TerminalNode LOGIN() { return getToken(TSqlParser.LOGIN, 0); }
		public List id() {
			return getRuleContexts(IdContext.class);
		}
		public IdContext id(int i) {
			return getRuleContext(IdContext.class,i);
		}
		public TerminalNode WITH() { return getToken(TSqlParser.WITH, 0); }
		public TerminalNode FROM() { return getToken(TSqlParser.FROM, 0); }
		public TerminalNode SID() { return getToken(TSqlParser.SID, 0); }
		public List EQUAL() { return getTokens(TSqlParser.EQUAL); }
		public TerminalNode EQUAL(int i) {
			return getToken(TSqlParser.EQUAL, i);
		}
		public TerminalNode DEFAULT_DATABASE() { return getToken(TSqlParser.DEFAULT_DATABASE, 0); }
		public TerminalNode DEFAULT_LANGUAGE() { return getToken(TSqlParser.DEFAULT_LANGUAGE, 0); }
		public TerminalNode CHECK_EXPIRATION() { return getToken(TSqlParser.CHECK_EXPIRATION, 0); }
		public TerminalNode CHECK_POLICY() { return getToken(TSqlParser.CHECK_POLICY, 0); }
		public TerminalNode CREDENTIAL() { return getToken(TSqlParser.CREDENTIAL, 0); }
		public List BINARY() { return getTokens(TSqlParser.BINARY); }
		public TerminalNode BINARY(int i) {
			return getToken(TSqlParser.BINARY, i);
		}
		public List ON() { return getTokens(TSqlParser.ON); }
		public TerminalNode ON(int i) {
			return getToken(TSqlParser.ON, i);
		}
		public List OFF() { return getTokens(TSqlParser.OFF); }
		public TerminalNode OFF(int i) {
			return getToken(TSqlParser.OFF, i);
		}
		public TerminalNode WINDOWS() { return getToken(TSqlParser.WINDOWS, 0); }
		public TerminalNode CERTIFICATE() { return getToken(TSqlParser.CERTIFICATE, 0); }
		public TerminalNode ASYMMETRIC() { return getToken(TSqlParser.ASYMMETRIC, 0); }
		public TerminalNode KEY() { return getToken(TSqlParser.KEY, 0); }
		public TerminalNode PASSWORD() { return getToken(TSqlParser.PASSWORD, 0); }
		public List COMMA() { return getTokens(TSqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(TSqlParser.COMMA, i);
		}
		public TerminalNode HASHED() { return getToken(TSqlParser.HASHED, 0); }
		public List MUST_CHANGE() { return getTokens(TSqlParser.MUST_CHANGE); }
		public TerminalNode MUST_CHANGE(int i) {
			return getToken(TSqlParser.MUST_CHANGE, i);
		}
		public List UNLOCK() { return getTokens(TSqlParser.UNLOCK); }
		public TerminalNode UNLOCK(int i) {
			return getToken(TSqlParser.UNLOCK, i);
		}
		public TerminalNode STRING() { return getToken(TSqlParser.STRING, 0); }
		public Create_login_sql_serverContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_create_login_sql_server; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterCreate_login_sql_server(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitCreate_login_sql_server(this);
		}
	}

	public final Create_login_sql_serverContext create_login_sql_server() throws RecognitionException {
		Create_login_sql_serverContext _localctx = new Create_login_sql_serverContext(_ctx, getState());
		enterRule(_localctx, 314, RULE_create_login_sql_server);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3671);
			match(CREATE);
			setState(3672);
			match(LOGIN);
			setState(3673);
			((Create_login_sql_serverContext)_localctx).login_name = id();
			setState(3764);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case WITH:
				{
				setState(3674);
				match(WITH);
				setState(3688);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==PASSWORD) {
					{
					{
					setState(3675);
					match(PASSWORD);
					setState(3676);
					match(EQUAL);
					setState(3680);
					_errHandler.sync(this);
					switch (_input.LA(1)) {
					case STRING:
						{
						setState(3677);
						((Create_login_sql_serverContext)_localctx).password = match(STRING);
						}
						break;
					case BINARY:
						{
						setState(3678);
						((Create_login_sql_serverContext)_localctx).password_hash = match(BINARY);
						setState(3679);
						match(HASHED);
						}
						break;
					default:
						throw new NoViableAltException(this);
					}
					}
					setState(3685);
					_errHandler.sync(this);
					_la = _input.LA(1);
					while (_la==MUST_CHANGE || _la==UNLOCK) {
						{
						{
						setState(3682);
						_la = _input.LA(1);
						if ( !(_la==MUST_CHANGE || _la==UNLOCK) ) {
						_errHandler.recoverInline(this);
						}
						else {
							if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
							_errHandler.reportMatch(this);
							consume();
						}
						}
						}
						setState(3687);
						_errHandler.sync(this);
						_la = _input.LA(1);
					}
					}
				}

				setState(3696);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,370,_ctx) ) {
				case 1:
					{
					setState(3691);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==COMMA) {
						{
						setState(3690);
						match(COMMA);
						}
					}

					setState(3693);
					match(SID);
					setState(3694);
					match(EQUAL);
					setState(3695);
					((Create_login_sql_serverContext)_localctx).sid = match(BINARY);
					}
					break;
				}
				setState(3704);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,372,_ctx) ) {
				case 1:
					{
					setState(3699);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==COMMA) {
						{
						setState(3698);
						match(COMMA);
						}
					}

					setState(3701);
					match(DEFAULT_DATABASE);
					setState(3702);
					match(EQUAL);
					setState(3703);
					((Create_login_sql_serverContext)_localctx).default_database = id();
					}
					break;
				}
				setState(3712);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,374,_ctx) ) {
				case 1:
					{
					setState(3707);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==COMMA) {
						{
						setState(3706);
						match(COMMA);
						}
					}

					setState(3709);
					match(DEFAULT_LANGUAGE);
					setState(3710);
					match(EQUAL);
					setState(3711);
					((Create_login_sql_serverContext)_localctx).default_laguage = id();
					}
					break;
				}
				setState(3720);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,376,_ctx) ) {
				case 1:
					{
					setState(3715);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==COMMA) {
						{
						setState(3714);
						match(COMMA);
						}
					}

					setState(3717);
					match(CHECK_EXPIRATION);
					setState(3718);
					match(EQUAL);
					setState(3719);
					_la = _input.LA(1);
					if ( !(_la==OFF || _la==ON) ) {
					_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					}
					break;
				}
				setState(3728);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,378,_ctx) ) {
				case 1:
					{
					setState(3723);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==COMMA) {
						{
						setState(3722);
						match(COMMA);
						}
					}

					setState(3725);
					match(CHECK_POLICY);
					setState(3726);
					match(EQUAL);
					setState(3727);
					_la = _input.LA(1);
					if ( !(_la==OFF || _la==ON) ) {
					_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					}
					break;
				}
				setState(3736);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,380,_ctx) ) {
				case 1:
					{
					setState(3731);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==COMMA) {
						{
						setState(3730);
						match(COMMA);
						}
					}

					setState(3733);
					match(CREDENTIAL);
					setState(3734);
					match(EQUAL);
					setState(3735);
					((Create_login_sql_serverContext)_localctx).credential_name = id();
					}
					break;
				}
				}
				break;
			case FROM:
				{
				{
				setState(3738);
				match(FROM);
				setState(3762);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case WINDOWS:
					{
					setState(3739);
					match(WINDOWS);
					{
					setState(3740);
					match(WITH);
					setState(3747);
					_errHandler.sync(this);
					switch ( getInterpreter().adaptivePredict(_input,382,_ctx) ) {
					case 1:
						{
						setState(3742);
						_errHandler.sync(this);
						_la = _input.LA(1);
						if (_la==COMMA) {
							{
							setState(3741);
							match(COMMA);
							}
						}

						setState(3744);
						match(DEFAULT_DATABASE);
						setState(3745);
						match(EQUAL);
						setState(3746);
						((Create_login_sql_serverContext)_localctx).default_database = id();
						}
						break;
					}
					setState(3755);
					_errHandler.sync(this);
					switch ( getInterpreter().adaptivePredict(_input,384,_ctx) ) {
					case 1:
						{
						setState(3750);
						_errHandler.sync(this);
						_la = _input.LA(1);
						if (_la==COMMA) {
							{
							setState(3749);
							match(COMMA);
							}
						}

						setState(3752);
						match(DEFAULT_LANGUAGE);
						setState(3753);
						match(EQUAL);
						setState(3754);
						((Create_login_sql_serverContext)_localctx).default_language = match(STRING);
						}
						break;
					}
					}
					}
					break;
				case CERTIFICATE:
					{
					setState(3757);
					match(CERTIFICATE);
					setState(3758);
					((Create_login_sql_serverContext)_localctx).certname = id();
					}
					break;
				case ASYMMETRIC:
					{
					setState(3759);
					match(ASYMMETRIC);
					setState(3760);
					match(KEY);
					setState(3761);
					((Create_login_sql_serverContext)_localctx).asym_key_name = id();
					}
					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 Alter_login_azure_sqlContext extends ParserRuleContext {
		public IdContext login_name;
		public Token password;
		public Token old_password;
		public TerminalNode ALTER() { return getToken(TSqlParser.ALTER, 0); }
		public TerminalNode LOGIN() { return getToken(TSqlParser.LOGIN, 0); }
		public List id() {
			return getRuleContexts(IdContext.class);
		}
		public IdContext id(int i) {
			return getRuleContext(IdContext.class,i);
		}
		public TerminalNode WITH() { return getToken(TSqlParser.WITH, 0); }
		public TerminalNode PASSWORD() { return getToken(TSqlParser.PASSWORD, 0); }
		public List EQUAL() { return getTokens(TSqlParser.EQUAL); }
		public TerminalNode EQUAL(int i) {
			return getToken(TSqlParser.EQUAL, i);
		}
		public TerminalNode NAME() { return getToken(TSqlParser.NAME, 0); }
		public List STRING() { return getTokens(TSqlParser.STRING); }
		public TerminalNode STRING(int i) {
			return getToken(TSqlParser.STRING, i);
		}
		public TerminalNode ENABLE() { return getToken(TSqlParser.ENABLE, 0); }
		public TerminalNode DISABLE() { return getToken(TSqlParser.DISABLE, 0); }
		public TerminalNode OLD_PASSWORD() { return getToken(TSqlParser.OLD_PASSWORD, 0); }
		public Alter_login_azure_sqlContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alter_login_azure_sql; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterAlter_login_azure_sql(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitAlter_login_azure_sql(this);
		}
	}

	public final Alter_login_azure_sqlContext alter_login_azure_sql() throws RecognitionException {
		Alter_login_azure_sqlContext _localctx = new Alter_login_azure_sqlContext(_ctx, getState());
		enterRule(_localctx, 316, RULE_alter_login_azure_sql);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3766);
			match(ALTER);
			setState(3767);
			match(LOGIN);
			setState(3768);
			((Alter_login_azure_sqlContext)_localctx).login_name = id();
			setState(3786);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,390,_ctx) ) {
			case 1:
				{
				setState(3770);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,387,_ctx) ) {
				case 1:
					{
					setState(3769);
					_la = _input.LA(1);
					if ( !(_la==DISABLE || _la==ENABLE) ) {
					_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					}
					break;
				}
				}
				break;
			case 2:
				{
				setState(3772);
				match(WITH);
				setState(3784);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case PASSWORD:
					{
					setState(3773);
					match(PASSWORD);
					setState(3774);
					match(EQUAL);
					setState(3775);
					((Alter_login_azure_sqlContext)_localctx).password = match(STRING);
					setState(3779);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==OLD_PASSWORD) {
						{
						setState(3776);
						match(OLD_PASSWORD);
						setState(3777);
						match(EQUAL);
						setState(3778);
						((Alter_login_azure_sqlContext)_localctx).old_password = match(STRING);
						}
					}

					}
					break;
				case NAME:
					{
					setState(3781);
					match(NAME);
					setState(3782);
					match(EQUAL);
					setState(3783);
					((Alter_login_azure_sqlContext)_localctx).login_name = id();
					}
					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 Create_login_azure_sqlContext extends ParserRuleContext {
		public IdContext login_name;
		public Token sid;
		public TerminalNode CREATE() { return getToken(TSqlParser.CREATE, 0); }
		public TerminalNode LOGIN() { return getToken(TSqlParser.LOGIN, 0); }
		public TerminalNode WITH() { return getToken(TSqlParser.WITH, 0); }
		public TerminalNode PASSWORD() { return getToken(TSqlParser.PASSWORD, 0); }
		public List EQUAL() { return getTokens(TSqlParser.EQUAL); }
		public TerminalNode EQUAL(int i) {
			return getToken(TSqlParser.EQUAL, i);
		}
		public TerminalNode STRING() { return getToken(TSqlParser.STRING, 0); }
		public IdContext id() {
			return getRuleContext(IdContext.class,0);
		}
		public TerminalNode SID() { return getToken(TSqlParser.SID, 0); }
		public TerminalNode BINARY() { return getToken(TSqlParser.BINARY, 0); }
		public Create_login_azure_sqlContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_create_login_azure_sql; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterCreate_login_azure_sql(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitCreate_login_azure_sql(this);
		}
	}

	public final Create_login_azure_sqlContext create_login_azure_sql() throws RecognitionException {
		Create_login_azure_sqlContext _localctx = new Create_login_azure_sqlContext(_ctx, getState());
		enterRule(_localctx, 318, RULE_create_login_azure_sql);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3788);
			match(CREATE);
			setState(3789);
			match(LOGIN);
			setState(3790);
			((Create_login_azure_sqlContext)_localctx).login_name = id();
			setState(3791);
			match(WITH);
			setState(3792);
			match(PASSWORD);
			setState(3793);
			match(EQUAL);
			setState(3794);
			match(STRING);
			setState(3798);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,391,_ctx) ) {
			case 1:
				{
				setState(3795);
				match(SID);
				setState(3796);
				match(EQUAL);
				setState(3797);
				((Create_login_azure_sqlContext)_localctx).sid = match(BINARY);
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Alter_login_azure_sql_dw_and_pdwContext extends ParserRuleContext {
		public IdContext login_name;
		public Token password;
		public Token old_password;
		public TerminalNode ALTER() { return getToken(TSqlParser.ALTER, 0); }
		public TerminalNode LOGIN() { return getToken(TSqlParser.LOGIN, 0); }
		public List id() {
			return getRuleContexts(IdContext.class);
		}
		public IdContext id(int i) {
			return getRuleContext(IdContext.class,i);
		}
		public TerminalNode WITH() { return getToken(TSqlParser.WITH, 0); }
		public TerminalNode PASSWORD() { return getToken(TSqlParser.PASSWORD, 0); }
		public List EQUAL() { return getTokens(TSqlParser.EQUAL); }
		public TerminalNode EQUAL(int i) {
			return getToken(TSqlParser.EQUAL, i);
		}
		public TerminalNode NAME() { return getToken(TSqlParser.NAME, 0); }
		public List STRING() { return getTokens(TSqlParser.STRING); }
		public TerminalNode STRING(int i) {
			return getToken(TSqlParser.STRING, i);
		}
		public TerminalNode ENABLE() { return getToken(TSqlParser.ENABLE, 0); }
		public TerminalNode DISABLE() { return getToken(TSqlParser.DISABLE, 0); }
		public TerminalNode OLD_PASSWORD() { return getToken(TSqlParser.OLD_PASSWORD, 0); }
		public List MUST_CHANGE() { return getTokens(TSqlParser.MUST_CHANGE); }
		public TerminalNode MUST_CHANGE(int i) {
			return getToken(TSqlParser.MUST_CHANGE, i);
		}
		public List UNLOCK() { return getTokens(TSqlParser.UNLOCK); }
		public TerminalNode UNLOCK(int i) {
			return getToken(TSqlParser.UNLOCK, i);
		}
		public Alter_login_azure_sql_dw_and_pdwContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alter_login_azure_sql_dw_and_pdw; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterAlter_login_azure_sql_dw_and_pdw(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitAlter_login_azure_sql_dw_and_pdw(this);
		}
	}

	public final Alter_login_azure_sql_dw_and_pdwContext alter_login_azure_sql_dw_and_pdw() throws RecognitionException {
		Alter_login_azure_sql_dw_and_pdwContext _localctx = new Alter_login_azure_sql_dw_and_pdwContext(_ctx, getState());
		enterRule(_localctx, 320, RULE_alter_login_azure_sql_dw_and_pdw);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3800);
			match(ALTER);
			setState(3801);
			match(LOGIN);
			setState(3802);
			((Alter_login_azure_sql_dw_and_pdwContext)_localctx).login_name = id();
			setState(3826);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,396,_ctx) ) {
			case 1:
				{
				setState(3804);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,392,_ctx) ) {
				case 1:
					{
					setState(3803);
					_la = _input.LA(1);
					if ( !(_la==DISABLE || _la==ENABLE) ) {
					_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					}
					break;
				}
				}
				break;
			case 2:
				{
				setState(3806);
				match(WITH);
				setState(3824);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case PASSWORD:
					{
					setState(3807);
					match(PASSWORD);
					setState(3808);
					match(EQUAL);
					setState(3809);
					((Alter_login_azure_sql_dw_and_pdwContext)_localctx).password = match(STRING);
					setState(3819);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==OLD_PASSWORD) {
						{
						setState(3810);
						match(OLD_PASSWORD);
						setState(3811);
						match(EQUAL);
						setState(3812);
						((Alter_login_azure_sql_dw_and_pdwContext)_localctx).old_password = match(STRING);
						setState(3816);
						_errHandler.sync(this);
						_la = _input.LA(1);
						while (_la==MUST_CHANGE || _la==UNLOCK) {
							{
							{
							setState(3813);
							_la = _input.LA(1);
							if ( !(_la==MUST_CHANGE || _la==UNLOCK) ) {
							_errHandler.recoverInline(this);
							}
							else {
								if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
								_errHandler.reportMatch(this);
								consume();
							}
							}
							}
							setState(3818);
							_errHandler.sync(this);
							_la = _input.LA(1);
						}
						}
					}

					}
					break;
				case NAME:
					{
					setState(3821);
					match(NAME);
					setState(3822);
					match(EQUAL);
					setState(3823);
					((Alter_login_azure_sql_dw_and_pdwContext)_localctx).login_name = id();
					}
					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 Create_login_pdwContext extends ParserRuleContext {
		public IdContext loginName;
		public Token password;
		public TerminalNode CREATE() { return getToken(TSqlParser.CREATE, 0); }
		public TerminalNode LOGIN() { return getToken(TSqlParser.LOGIN, 0); }
		public IdContext id() {
			return getRuleContext(IdContext.class,0);
		}
		public TerminalNode WITH() { return getToken(TSqlParser.WITH, 0); }
		public TerminalNode FROM() { return getToken(TSqlParser.FROM, 0); }
		public TerminalNode WINDOWS() { return getToken(TSqlParser.WINDOWS, 0); }
		public TerminalNode PASSWORD() { return getToken(TSqlParser.PASSWORD, 0); }
		public List EQUAL() { return getTokens(TSqlParser.EQUAL); }
		public TerminalNode EQUAL(int i) {
			return getToken(TSqlParser.EQUAL, i);
		}
		public TerminalNode STRING() { return getToken(TSqlParser.STRING, 0); }
		public TerminalNode MUST_CHANGE() { return getToken(TSqlParser.MUST_CHANGE, 0); }
		public TerminalNode CHECK_POLICY() { return getToken(TSqlParser.CHECK_POLICY, 0); }
		public TerminalNode ON() { return getToken(TSqlParser.ON, 0); }
		public TerminalNode OFF() { return getToken(TSqlParser.OFF, 0); }
		public Create_login_pdwContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_create_login_pdw; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterCreate_login_pdw(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitCreate_login_pdw(this);
		}
	}

	public final Create_login_pdwContext create_login_pdw() throws RecognitionException {
		Create_login_pdwContext _localctx = new Create_login_pdwContext(_ctx, getState());
		enterRule(_localctx, 322, RULE_create_login_pdw);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3828);
			match(CREATE);
			setState(3829);
			match(LOGIN);
			setState(3830);
			((Create_login_pdwContext)_localctx).loginName = id();
			setState(3847);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case WITH:
				{
				setState(3831);
				match(WITH);
				{
				setState(3832);
				match(PASSWORD);
				setState(3833);
				match(EQUAL);
				setState(3834);
				((Create_login_pdwContext)_localctx).password = match(STRING);
				setState(3836);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==MUST_CHANGE) {
					{
					setState(3835);
					match(MUST_CHANGE);
					}
				}

				setState(3843);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==CHECK_POLICY) {
					{
					setState(3838);
					match(CHECK_POLICY);
					setState(3839);
					match(EQUAL);
					setState(3841);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==OFF || _la==ON) {
						{
						setState(3840);
						_la = _input.LA(1);
						if ( !(_la==OFF || _la==ON) ) {
						_errHandler.recoverInline(this);
						}
						else {
							if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
							_errHandler.reportMatch(this);
							consume();
						}
						}
					}

					}
				}

				}
				}
				break;
			case FROM:
				{
				setState(3845);
				match(FROM);
				setState(3846);
				match(WINDOWS);
				}
				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 Alter_master_key_sql_serverContext extends ParserRuleContext {
		public Token password;
		public Token encryption_password;
		public TerminalNode ALTER() { return getToken(TSqlParser.ALTER, 0); }
		public List MASTER() { return getTokens(TSqlParser.MASTER); }
		public TerminalNode MASTER(int i) {
			return getToken(TSqlParser.MASTER, i);
		}
		public List KEY() { return getTokens(TSqlParser.KEY); }
		public TerminalNode KEY(int i) {
			return getToken(TSqlParser.KEY, i);
		}
		public TerminalNode REGENERATE() { return getToken(TSqlParser.REGENERATE, 0); }
		public TerminalNode WITH() { return getToken(TSqlParser.WITH, 0); }
		public TerminalNode ENCRYPTION() { return getToken(TSqlParser.ENCRYPTION, 0); }
		public TerminalNode BY() { return getToken(TSqlParser.BY, 0); }
		public TerminalNode PASSWORD() { return getToken(TSqlParser.PASSWORD, 0); }
		public TerminalNode EQUAL() { return getToken(TSqlParser.EQUAL, 0); }
		public TerminalNode STRING() { return getToken(TSqlParser.STRING, 0); }
		public TerminalNode ADD() { return getToken(TSqlParser.ADD, 0); }
		public TerminalNode DROP() { return getToken(TSqlParser.DROP, 0); }
		public TerminalNode SERVICE() { return getToken(TSqlParser.SERVICE, 0); }
		public TerminalNode FORCE() { return getToken(TSqlParser.FORCE, 0); }
		public Alter_master_key_sql_serverContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alter_master_key_sql_server; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterAlter_master_key_sql_server(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitAlter_master_key_sql_server(this);
		}
	}

	public final Alter_master_key_sql_serverContext alter_master_key_sql_server() throws RecognitionException {
		Alter_master_key_sql_serverContext _localctx = new Alter_master_key_sql_serverContext(_ctx, getState());
		enterRule(_localctx, 324, RULE_alter_master_key_sql_server);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3849);
			match(ALTER);
			setState(3850);
			match(MASTER);
			setState(3851);
			match(KEY);
			setState(3873);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case REGENERATE:
			case FORCE:
				{
				setState(3853);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==FORCE) {
					{
					setState(3852);
					match(FORCE);
					}
				}

				setState(3855);
				match(REGENERATE);
				setState(3856);
				match(WITH);
				setState(3857);
				match(ENCRYPTION);
				setState(3858);
				match(BY);
				setState(3859);
				match(PASSWORD);
				setState(3860);
				match(EQUAL);
				setState(3861);
				((Alter_master_key_sql_serverContext)_localctx).password = match(STRING);
				}
				break;
			case ADD:
			case DROP:
				{
				setState(3862);
				_la = _input.LA(1);
				if ( !(_la==ADD || _la==DROP) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(3863);
				match(ENCRYPTION);
				setState(3864);
				match(BY);
				setState(3871);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case SERVICE:
					{
					setState(3865);
					match(SERVICE);
					setState(3866);
					match(MASTER);
					setState(3867);
					match(KEY);
					}
					break;
				case PASSWORD:
					{
					setState(3868);
					match(PASSWORD);
					setState(3869);
					match(EQUAL);
					setState(3870);
					((Alter_master_key_sql_serverContext)_localctx).encryption_password = match(STRING);
					}
					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 Create_master_key_sql_serverContext extends ParserRuleContext {
		public Token password;
		public TerminalNode CREATE() { return getToken(TSqlParser.CREATE, 0); }
		public TerminalNode MASTER() { return getToken(TSqlParser.MASTER, 0); }
		public TerminalNode KEY() { return getToken(TSqlParser.KEY, 0); }
		public TerminalNode ENCRYPTION() { return getToken(TSqlParser.ENCRYPTION, 0); }
		public TerminalNode BY() { return getToken(TSqlParser.BY, 0); }
		public TerminalNode PASSWORD() { return getToken(TSqlParser.PASSWORD, 0); }
		public TerminalNode EQUAL() { return getToken(TSqlParser.EQUAL, 0); }
		public TerminalNode STRING() { return getToken(TSqlParser.STRING, 0); }
		public Create_master_key_sql_serverContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_create_master_key_sql_server; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterCreate_master_key_sql_server(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitCreate_master_key_sql_server(this);
		}
	}

	public final Create_master_key_sql_serverContext create_master_key_sql_server() throws RecognitionException {
		Create_master_key_sql_serverContext _localctx = new Create_master_key_sql_serverContext(_ctx, getState());
		enterRule(_localctx, 326, RULE_create_master_key_sql_server);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3875);
			match(CREATE);
			setState(3876);
			match(MASTER);
			setState(3877);
			match(KEY);
			setState(3878);
			match(ENCRYPTION);
			setState(3879);
			match(BY);
			setState(3880);
			match(PASSWORD);
			setState(3881);
			match(EQUAL);
			setState(3882);
			((Create_master_key_sql_serverContext)_localctx).password = match(STRING);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Alter_master_key_azure_sqlContext extends ParserRuleContext {
		public Token password;
		public Token encryption_password;
		public TerminalNode ALTER() { return getToken(TSqlParser.ALTER, 0); }
		public List MASTER() { return getTokens(TSqlParser.MASTER); }
		public TerminalNode MASTER(int i) {
			return getToken(TSqlParser.MASTER, i);
		}
		public List KEY() { return getTokens(TSqlParser.KEY); }
		public TerminalNode KEY(int i) {
			return getToken(TSqlParser.KEY, i);
		}
		public TerminalNode REGENERATE() { return getToken(TSqlParser.REGENERATE, 0); }
		public TerminalNode WITH() { return getToken(TSqlParser.WITH, 0); }
		public TerminalNode ENCRYPTION() { return getToken(TSqlParser.ENCRYPTION, 0); }
		public TerminalNode BY() { return getToken(TSqlParser.BY, 0); }
		public TerminalNode PASSWORD() { return getToken(TSqlParser.PASSWORD, 0); }
		public TerminalNode EQUAL() { return getToken(TSqlParser.EQUAL, 0); }
		public TerminalNode ADD() { return getToken(TSqlParser.ADD, 0); }
		public TerminalNode DROP() { return getToken(TSqlParser.DROP, 0); }
		public TerminalNode STRING() { return getToken(TSqlParser.STRING, 0); }
		public TerminalNode SERVICE() { return getToken(TSqlParser.SERVICE, 0); }
		public TerminalNode FORCE() { return getToken(TSqlParser.FORCE, 0); }
		public Alter_master_key_azure_sqlContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alter_master_key_azure_sql; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterAlter_master_key_azure_sql(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitAlter_master_key_azure_sql(this);
		}
	}

	public final Alter_master_key_azure_sqlContext alter_master_key_azure_sql() throws RecognitionException {
		Alter_master_key_azure_sqlContext _localctx = new Alter_master_key_azure_sqlContext(_ctx, getState());
		enterRule(_localctx, 328, RULE_alter_master_key_azure_sql);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3884);
			match(ALTER);
			setState(3885);
			match(MASTER);
			setState(3886);
			match(KEY);
			setState(3914);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case REGENERATE:
			case FORCE:
				{
				setState(3888);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==FORCE) {
					{
					setState(3887);
					match(FORCE);
					}
				}

				setState(3890);
				match(REGENERATE);
				setState(3891);
				match(WITH);
				setState(3892);
				match(ENCRYPTION);
				setState(3893);
				match(BY);
				setState(3894);
				match(PASSWORD);
				setState(3895);
				match(EQUAL);
				setState(3896);
				((Alter_master_key_azure_sqlContext)_localctx).password = match(STRING);
				}
				break;
			case ADD:
				{
				setState(3897);
				match(ADD);
				setState(3898);
				match(ENCRYPTION);
				setState(3899);
				match(BY);
				setState(3906);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case SERVICE:
					{
					setState(3900);
					match(SERVICE);
					setState(3901);
					match(MASTER);
					setState(3902);
					match(KEY);
					}
					break;
				case PASSWORD:
					{
					setState(3903);
					match(PASSWORD);
					setState(3904);
					match(EQUAL);
					setState(3905);
					((Alter_master_key_azure_sqlContext)_localctx).encryption_password = match(STRING);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;
			case DROP:
				{
				setState(3908);
				match(DROP);
				setState(3909);
				match(ENCRYPTION);
				setState(3910);
				match(BY);
				setState(3911);
				match(PASSWORD);
				setState(3912);
				match(EQUAL);
				setState(3913);
				((Alter_master_key_azure_sqlContext)_localctx).encryption_password = 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 Create_master_key_azure_sqlContext extends ParserRuleContext {
		public Token password;
		public TerminalNode CREATE() { return getToken(TSqlParser.CREATE, 0); }
		public TerminalNode MASTER() { return getToken(TSqlParser.MASTER, 0); }
		public TerminalNode KEY() { return getToken(TSqlParser.KEY, 0); }
		public TerminalNode ENCRYPTION() { return getToken(TSqlParser.ENCRYPTION, 0); }
		public TerminalNode BY() { return getToken(TSqlParser.BY, 0); }
		public TerminalNode PASSWORD() { return getToken(TSqlParser.PASSWORD, 0); }
		public TerminalNode EQUAL() { return getToken(TSqlParser.EQUAL, 0); }
		public TerminalNode STRING() { return getToken(TSqlParser.STRING, 0); }
		public Create_master_key_azure_sqlContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_create_master_key_azure_sql; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterCreate_master_key_azure_sql(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitCreate_master_key_azure_sql(this);
		}
	}

	public final Create_master_key_azure_sqlContext create_master_key_azure_sql() throws RecognitionException {
		Create_master_key_azure_sqlContext _localctx = new Create_master_key_azure_sqlContext(_ctx, getState());
		enterRule(_localctx, 330, RULE_create_master_key_azure_sql);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3916);
			match(CREATE);
			setState(3917);
			match(MASTER);
			setState(3918);
			match(KEY);
			setState(3924);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,407,_ctx) ) {
			case 1:
				{
				setState(3919);
				match(ENCRYPTION);
				setState(3920);
				match(BY);
				setState(3921);
				match(PASSWORD);
				setState(3922);
				match(EQUAL);
				setState(3923);
				((Create_master_key_azure_sqlContext)_localctx).password = match(STRING);
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Alter_message_typeContext extends ParserRuleContext {
		public IdContext message_type_name;
		public IdContext schema_collection_name;
		public TerminalNode ALTER() { return getToken(TSqlParser.ALTER, 0); }
		public TerminalNode MESSAGE() { return getToken(TSqlParser.MESSAGE, 0); }
		public TerminalNode TYPE() { return getToken(TSqlParser.TYPE, 0); }
		public TerminalNode VALIDATION() { return getToken(TSqlParser.VALIDATION, 0); }
		public TerminalNode EQUAL() { return getToken(TSqlParser.EQUAL, 0); }
		public List id() {
			return getRuleContexts(IdContext.class);
		}
		public IdContext id(int i) {
			return getRuleContext(IdContext.class,i);
		}
		public TerminalNode NONE() { return getToken(TSqlParser.NONE, 0); }
		public TerminalNode EMPTY() { return getToken(TSqlParser.EMPTY, 0); }
		public TerminalNode WELL_FORMED_XML() { return getToken(TSqlParser.WELL_FORMED_XML, 0); }
		public TerminalNode VALID_XML() { return getToken(TSqlParser.VALID_XML, 0); }
		public TerminalNode WITH() { return getToken(TSqlParser.WITH, 0); }
		public TerminalNode SCHEMA() { return getToken(TSqlParser.SCHEMA, 0); }
		public TerminalNode COLLECTION() { return getToken(TSqlParser.COLLECTION, 0); }
		public Alter_message_typeContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alter_message_type; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterAlter_message_type(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitAlter_message_type(this);
		}
	}

	public final Alter_message_typeContext alter_message_type() throws RecognitionException {
		Alter_message_typeContext _localctx = new Alter_message_typeContext(_ctx, getState());
		enterRule(_localctx, 332, RULE_alter_message_type);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3926);
			match(ALTER);
			setState(3927);
			match(MESSAGE);
			setState(3928);
			match(TYPE);
			setState(3929);
			((Alter_message_typeContext)_localctx).message_type_name = id();
			setState(3930);
			match(VALIDATION);
			setState(3931);
			match(EQUAL);
			setState(3940);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case NONE:
				{
				setState(3932);
				match(NONE);
				}
				break;
			case EMPTY:
				{
				setState(3933);
				match(EMPTY);
				}
				break;
			case WELL_FORMED_XML:
				{
				setState(3934);
				match(WELL_FORMED_XML);
				}
				break;
			case VALID_XML:
				{
				setState(3935);
				match(VALID_XML);
				setState(3936);
				match(WITH);
				setState(3937);
				match(SCHEMA);
				setState(3938);
				match(COLLECTION);
				setState(3939);
				((Alter_message_typeContext)_localctx).schema_collection_name = id();
				}
				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 Alter_partition_functionContext extends ParserRuleContext {
		public IdContext partition_function_name;
		public TerminalNode ALTER() { return getToken(TSqlParser.ALTER, 0); }
		public TerminalNode PARTITION() { return getToken(TSqlParser.PARTITION, 0); }
		public TerminalNode FUNCTION() { return getToken(TSqlParser.FUNCTION, 0); }
		public List LR_BRACKET() { return getTokens(TSqlParser.LR_BRACKET); }
		public TerminalNode LR_BRACKET(int i) {
			return getToken(TSqlParser.LR_BRACKET, i);
		}
		public List RR_BRACKET() { return getTokens(TSqlParser.RR_BRACKET); }
		public TerminalNode RR_BRACKET(int i) {
			return getToken(TSqlParser.RR_BRACKET, i);
		}
		public TerminalNode RANGE() { return getToken(TSqlParser.RANGE, 0); }
		public TerminalNode DECIMAL() { return getToken(TSqlParser.DECIMAL, 0); }
		public IdContext id() {
			return getRuleContext(IdContext.class,0);
		}
		public TerminalNode SPLIT() { return getToken(TSqlParser.SPLIT, 0); }
		public TerminalNode MERGE() { return getToken(TSqlParser.MERGE, 0); }
		public Alter_partition_functionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alter_partition_function; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterAlter_partition_function(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitAlter_partition_function(this);
		}
	}

	public final Alter_partition_functionContext alter_partition_function() throws RecognitionException {
		Alter_partition_functionContext _localctx = new Alter_partition_functionContext(_ctx, getState());
		enterRule(_localctx, 334, RULE_alter_partition_function);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3942);
			match(ALTER);
			setState(3943);
			match(PARTITION);
			setState(3944);
			match(FUNCTION);
			setState(3945);
			((Alter_partition_functionContext)_localctx).partition_function_name = id();
			setState(3946);
			match(LR_BRACKET);
			setState(3947);
			match(RR_BRACKET);
			setState(3948);
			_la = _input.LA(1);
			if ( !(_la==MERGE || _la==SPLIT) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			setState(3949);
			match(RANGE);
			setState(3950);
			match(LR_BRACKET);
			setState(3951);
			match(DECIMAL);
			setState(3952);
			match(RR_BRACKET);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Alter_partition_schemeContext extends ParserRuleContext {
		public IdContext partition_scheme_name;
		public IdContext file_group_name;
		public TerminalNode ALTER() { return getToken(TSqlParser.ALTER, 0); }
		public TerminalNode PARTITION() { return getToken(TSqlParser.PARTITION, 0); }
		public TerminalNode SCHEME() { return getToken(TSqlParser.SCHEME, 0); }
		public TerminalNode NEXT() { return getToken(TSqlParser.NEXT, 0); }
		public TerminalNode USED() { return getToken(TSqlParser.USED, 0); }
		public List id() {
			return getRuleContexts(IdContext.class);
		}
		public IdContext id(int i) {
			return getRuleContext(IdContext.class,i);
		}
		public Alter_partition_schemeContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alter_partition_scheme; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterAlter_partition_scheme(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitAlter_partition_scheme(this);
		}
	}

	public final Alter_partition_schemeContext alter_partition_scheme() throws RecognitionException {
		Alter_partition_schemeContext _localctx = new Alter_partition_schemeContext(_ctx, getState());
		enterRule(_localctx, 336, RULE_alter_partition_scheme);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3954);
			match(ALTER);
			setState(3955);
			match(PARTITION);
			setState(3956);
			match(SCHEME);
			setState(3957);
			((Alter_partition_schemeContext)_localctx).partition_scheme_name = id();
			setState(3958);
			match(NEXT);
			setState(3959);
			match(USED);
			setState(3961);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,409,_ctx) ) {
			case 1:
				{
				setState(3960);
				((Alter_partition_schemeContext)_localctx).file_group_name = id();
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Alter_remote_service_bindingContext extends ParserRuleContext {
		public IdContext binding_name;
		public IdContext user_name;
		public TerminalNode ALTER() { return getToken(TSqlParser.ALTER, 0); }
		public TerminalNode REMOTE() { return getToken(TSqlParser.REMOTE, 0); }
		public TerminalNode SERVICE() { return getToken(TSqlParser.SERVICE, 0); }
		public TerminalNode BINDING() { return getToken(TSqlParser.BINDING, 0); }
		public TerminalNode WITH() { return getToken(TSqlParser.WITH, 0); }
		public List id() {
			return getRuleContexts(IdContext.class);
		}
		public IdContext id(int i) {
			return getRuleContext(IdContext.class,i);
		}
		public TerminalNode USER() { return getToken(TSqlParser.USER, 0); }
		public List EQUAL() { return getTokens(TSqlParser.EQUAL); }
		public TerminalNode EQUAL(int i) {
			return getToken(TSqlParser.EQUAL, i);
		}
		public TerminalNode COMMA() { return getToken(TSqlParser.COMMA, 0); }
		public TerminalNode ANONYMOUS() { return getToken(TSqlParser.ANONYMOUS, 0); }
		public TerminalNode ON() { return getToken(TSqlParser.ON, 0); }
		public TerminalNode OFF() { return getToken(TSqlParser.OFF, 0); }
		public Alter_remote_service_bindingContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alter_remote_service_binding; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterAlter_remote_service_binding(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitAlter_remote_service_binding(this);
		}
	}

	public final Alter_remote_service_bindingContext alter_remote_service_binding() throws RecognitionException {
		Alter_remote_service_bindingContext _localctx = new Alter_remote_service_bindingContext(_ctx, getState());
		enterRule(_localctx, 338, RULE_alter_remote_service_binding);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3963);
			match(ALTER);
			setState(3964);
			match(REMOTE);
			setState(3965);
			match(SERVICE);
			setState(3966);
			match(BINDING);
			setState(3967);
			((Alter_remote_service_bindingContext)_localctx).binding_name = id();
			setState(3968);
			match(WITH);
			setState(3972);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==USER) {
				{
				setState(3969);
				match(USER);
				setState(3970);
				match(EQUAL);
				setState(3971);
				((Alter_remote_service_bindingContext)_localctx).user_name = id();
				}
			}

			setState(3978);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==COMMA) {
				{
				setState(3974);
				match(COMMA);
				setState(3975);
				match(ANONYMOUS);
				setState(3976);
				match(EQUAL);
				setState(3977);
				_la = _input.LA(1);
				if ( !(_la==OFF || _la==ON) ) {
				_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 Create_remote_service_bindingContext extends ParserRuleContext {
		public IdContext binding_name;
		public IdContext owner_name;
		public Token remote_service_name;
		public IdContext user_name;
		public TerminalNode CREATE() { return getToken(TSqlParser.CREATE, 0); }
		public TerminalNode REMOTE() { return getToken(TSqlParser.REMOTE, 0); }
		public List SERVICE() { return getTokens(TSqlParser.SERVICE); }
		public TerminalNode SERVICE(int i) {
			return getToken(TSqlParser.SERVICE, i);
		}
		public TerminalNode BINDING() { return getToken(TSqlParser.BINDING, 0); }
		public TerminalNode TO() { return getToken(TSqlParser.TO, 0); }
		public TerminalNode WITH() { return getToken(TSqlParser.WITH, 0); }
		public List id() {
			return getRuleContexts(IdContext.class);
		}
		public IdContext id(int i) {
			return getRuleContext(IdContext.class,i);
		}
		public TerminalNode STRING() { return getToken(TSqlParser.STRING, 0); }
		public TerminalNode AUTHORIZATION() { return getToken(TSqlParser.AUTHORIZATION, 0); }
		public TerminalNode USER() { return getToken(TSqlParser.USER, 0); }
		public List EQUAL() { return getTokens(TSqlParser.EQUAL); }
		public TerminalNode EQUAL(int i) {
			return getToken(TSqlParser.EQUAL, i);
		}
		public TerminalNode COMMA() { return getToken(TSqlParser.COMMA, 0); }
		public TerminalNode ANONYMOUS() { return getToken(TSqlParser.ANONYMOUS, 0); }
		public TerminalNode ON() { return getToken(TSqlParser.ON, 0); }
		public TerminalNode OFF() { return getToken(TSqlParser.OFF, 0); }
		public Create_remote_service_bindingContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_create_remote_service_binding; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterCreate_remote_service_binding(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitCreate_remote_service_binding(this);
		}
	}

	public final Create_remote_service_bindingContext create_remote_service_binding() throws RecognitionException {
		Create_remote_service_bindingContext _localctx = new Create_remote_service_bindingContext(_ctx, getState());
		enterRule(_localctx, 340, RULE_create_remote_service_binding);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3980);
			match(CREATE);
			setState(3981);
			match(REMOTE);
			setState(3982);
			match(SERVICE);
			setState(3983);
			match(BINDING);
			setState(3984);
			((Create_remote_service_bindingContext)_localctx).binding_name = id();
			setState(3987);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==AUTHORIZATION) {
				{
				setState(3985);
				match(AUTHORIZATION);
				setState(3986);
				((Create_remote_service_bindingContext)_localctx).owner_name = id();
				}
			}

			setState(3989);
			match(TO);
			setState(3990);
			match(SERVICE);
			setState(3991);
			((Create_remote_service_bindingContext)_localctx).remote_service_name = match(STRING);
			setState(3992);
			match(WITH);
			setState(3996);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==USER) {
				{
				setState(3993);
				match(USER);
				setState(3994);
				match(EQUAL);
				setState(3995);
				((Create_remote_service_bindingContext)_localctx).user_name = id();
				}
			}

			setState(4002);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==COMMA) {
				{
				setState(3998);
				match(COMMA);
				setState(3999);
				match(ANONYMOUS);
				setState(4000);
				match(EQUAL);
				setState(4001);
				_la = _input.LA(1);
				if ( !(_la==OFF || _la==ON) ) {
				_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 Create_resource_poolContext extends ParserRuleContext {
		public IdContext pool_name;
		public TerminalNode CREATE() { return getToken(TSqlParser.CREATE, 0); }
		public TerminalNode RESOURCE() { return getToken(TSqlParser.RESOURCE, 0); }
		public TerminalNode POOL() { return getToken(TSqlParser.POOL, 0); }
		public IdContext id() {
			return getRuleContext(IdContext.class,0);
		}
		public TerminalNode WITH() { return getToken(TSqlParser.WITH, 0); }
		public List LR_BRACKET() { return getTokens(TSqlParser.LR_BRACKET); }
		public TerminalNode LR_BRACKET(int i) {
			return getToken(TSqlParser.LR_BRACKET, i);
		}
		public List RR_BRACKET() { return getTokens(TSqlParser.RR_BRACKET); }
		public TerminalNode RR_BRACKET(int i) {
			return getToken(TSqlParser.RR_BRACKET, i);
		}
		public TerminalNode MIN_CPU_PERCENT() { return getToken(TSqlParser.MIN_CPU_PERCENT, 0); }
		public List EQUAL() { return getTokens(TSqlParser.EQUAL); }
		public TerminalNode EQUAL(int i) {
			return getToken(TSqlParser.EQUAL, i);
		}
		public List DECIMAL() { return getTokens(TSqlParser.DECIMAL); }
		public TerminalNode DECIMAL(int i) {
			return getToken(TSqlParser.DECIMAL, i);
		}
		public TerminalNode MAX_CPU_PERCENT() { return getToken(TSqlParser.MAX_CPU_PERCENT, 0); }
		public TerminalNode CAP_CPU_PERCENT() { return getToken(TSqlParser.CAP_CPU_PERCENT, 0); }
		public TerminalNode AFFINITY() { return getToken(TSqlParser.AFFINITY, 0); }
		public TerminalNode SCHEDULER() { return getToken(TSqlParser.SCHEDULER, 0); }
		public TerminalNode MIN_MEMORY_PERCENT() { return getToken(TSqlParser.MIN_MEMORY_PERCENT, 0); }
		public TerminalNode MAX_MEMORY_PERCENT() { return getToken(TSqlParser.MAX_MEMORY_PERCENT, 0); }
		public TerminalNode MIN_IOPS_PER_VOLUME() { return getToken(TSqlParser.MIN_IOPS_PER_VOLUME, 0); }
		public TerminalNode MAX_IOPS_PER_VOLUME() { return getToken(TSqlParser.MAX_IOPS_PER_VOLUME, 0); }
		public TerminalNode AUTO() { return getToken(TSqlParser.AUTO, 0); }
		public TerminalNode NUMANODE() { return getToken(TSqlParser.NUMANODE, 0); }
		public List COMMA() { return getTokens(TSqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(TSqlParser.COMMA, i);
		}
		public List TO() { return getTokens(TSqlParser.TO); }
		public TerminalNode TO(int i) {
			return getToken(TSqlParser.TO, i);
		}
		public Create_resource_poolContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_create_resource_pool; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterCreate_resource_pool(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitCreate_resource_pool(this);
		}
	}

	public final Create_resource_poolContext create_resource_pool() throws RecognitionException {
		Create_resource_poolContext _localctx = new Create_resource_poolContext(_ctx, getState());
		enterRule(_localctx, 342, RULE_create_resource_pool);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4004);
			match(CREATE);
			setState(4005);
			match(RESOURCE);
			setState(4006);
			match(POOL);
			setState(4007);
			((Create_resource_poolContext)_localctx).pool_name = id();
			setState(4110);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,438,_ctx) ) {
			case 1:
				{
				setState(4008);
				match(WITH);
				setState(4009);
				match(LR_BRACKET);
				setState(4016);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,416,_ctx) ) {
				case 1:
					{
					setState(4011);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==COMMA) {
						{
						setState(4010);
						match(COMMA);
						}
					}

					setState(4013);
					match(MIN_CPU_PERCENT);
					setState(4014);
					match(EQUAL);
					setState(4015);
					match(DECIMAL);
					}
					break;
				}
				setState(4024);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,418,_ctx) ) {
				case 1:
					{
					setState(4019);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==COMMA) {
						{
						setState(4018);
						match(COMMA);
						}
					}

					setState(4021);
					match(MAX_CPU_PERCENT);
					setState(4022);
					match(EQUAL);
					setState(4023);
					match(DECIMAL);
					}
					break;
				}
				setState(4032);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,420,_ctx) ) {
				case 1:
					{
					setState(4027);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==COMMA) {
						{
						setState(4026);
						match(COMMA);
						}
					}

					setState(4029);
					match(CAP_CPU_PERCENT);
					setState(4030);
					match(EQUAL);
					setState(4031);
					match(DECIMAL);
					}
					break;
				}
				setState(4075);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,429,_ctx) ) {
				case 1:
					{
					setState(4035);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==COMMA) {
						{
						setState(4034);
						match(COMMA);
						}
					}

					setState(4037);
					match(AFFINITY);
					setState(4038);
					match(SCHEDULER);
					setState(4039);
					match(EQUAL);
					setState(4073);
					_errHandler.sync(this);
					switch (_input.LA(1)) {
					case AUTO:
						{
						setState(4040);
						match(AUTO);
						}
						break;
					case LR_BRACKET:
						{
						setState(4041);
						match(LR_BRACKET);
						setState(4051); 
						_errHandler.sync(this);
						_la = _input.LA(1);
						do {
							{
							{
							setState(4043);
							_errHandler.sync(this);
							_la = _input.LA(1);
							if (_la==COMMA) {
								{
								setState(4042);
								match(COMMA);
								}
							}

							setState(4049);
							_errHandler.sync(this);
							switch ( getInterpreter().adaptivePredict(_input,423,_ctx) ) {
							case 1:
								{
								setState(4045);
								match(DECIMAL);
								}
								break;
							case 2:
								{
								setState(4046);
								match(DECIMAL);
								setState(4047);
								match(TO);
								setState(4048);
								match(DECIMAL);
								}
								break;
							}
							}
							}
							setState(4053); 
							_errHandler.sync(this);
							_la = _input.LA(1);
						} while ( _la==DECIMAL || _la==COMMA );
						setState(4055);
						match(RR_BRACKET);
						}
						break;
					case NUMANODE:
						{
						setState(4056);
						match(NUMANODE);
						setState(4057);
						match(EQUAL);
						setState(4058);
						match(LR_BRACKET);
						setState(4068); 
						_errHandler.sync(this);
						_la = _input.LA(1);
						do {
							{
							{
							setState(4060);
							_errHandler.sync(this);
							_la = _input.LA(1);
							if (_la==COMMA) {
								{
								setState(4059);
								match(COMMA);
								}
							}

							setState(4066);
							_errHandler.sync(this);
							switch ( getInterpreter().adaptivePredict(_input,426,_ctx) ) {
							case 1:
								{
								setState(4062);
								match(DECIMAL);
								}
								break;
							case 2:
								{
								setState(4063);
								match(DECIMAL);
								setState(4064);
								match(TO);
								setState(4065);
								match(DECIMAL);
								}
								break;
							}
							}
							}
							setState(4070); 
							_errHandler.sync(this);
							_la = _input.LA(1);
						} while ( _la==DECIMAL || _la==COMMA );
						setState(4072);
						match(RR_BRACKET);
						}
						break;
					default:
						throw new NoViableAltException(this);
					}
					}
					break;
				}
				setState(4083);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,431,_ctx) ) {
				case 1:
					{
					setState(4078);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==COMMA) {
						{
						setState(4077);
						match(COMMA);
						}
					}

					setState(4080);
					match(MIN_MEMORY_PERCENT);
					setState(4081);
					match(EQUAL);
					setState(4082);
					match(DECIMAL);
					}
					break;
				}
				setState(4091);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,433,_ctx) ) {
				case 1:
					{
					setState(4086);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==COMMA) {
						{
						setState(4085);
						match(COMMA);
						}
					}

					setState(4088);
					match(MAX_MEMORY_PERCENT);
					setState(4089);
					match(EQUAL);
					setState(4090);
					match(DECIMAL);
					}
					break;
				}
				setState(4099);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,435,_ctx) ) {
				case 1:
					{
					setState(4094);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==COMMA) {
						{
						setState(4093);
						match(COMMA);
						}
					}

					setState(4096);
					match(MIN_IOPS_PER_VOLUME);
					setState(4097);
					match(EQUAL);
					setState(4098);
					match(DECIMAL);
					}
					break;
				}
				setState(4107);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==MAX_IOPS_PER_VOLUME || _la==COMMA) {
					{
					setState(4102);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==COMMA) {
						{
						setState(4101);
						match(COMMA);
						}
					}

					setState(4104);
					match(MAX_IOPS_PER_VOLUME);
					setState(4105);
					match(EQUAL);
					setState(4106);
					match(DECIMAL);
					}
				}

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

	public static class Alter_resource_governorContext extends ParserRuleContext {
		public IdContext schema_name;
		public IdContext function_name;
		public Token max_outstanding_io_per_volume;
		public TerminalNode ALTER() { return getToken(TSqlParser.ALTER, 0); }
		public TerminalNode RESOURCE() { return getToken(TSqlParser.RESOURCE, 0); }
		public TerminalNode GOVERNOR() { return getToken(TSqlParser.GOVERNOR, 0); }
		public TerminalNode WITH() { return getToken(TSqlParser.WITH, 0); }
		public TerminalNode LR_BRACKET() { return getToken(TSqlParser.LR_BRACKET, 0); }
		public TerminalNode CLASSIFIER_FUNCTION() { return getToken(TSqlParser.CLASSIFIER_FUNCTION, 0); }
		public TerminalNode EQUAL() { return getToken(TSqlParser.EQUAL, 0); }
		public TerminalNode RR_BRACKET() { return getToken(TSqlParser.RR_BRACKET, 0); }
		public TerminalNode RESET() { return getToken(TSqlParser.RESET, 0); }
		public TerminalNode STATISTICS() { return getToken(TSqlParser.STATISTICS, 0); }
		public TerminalNode MAX_OUTSTANDING_IO_PER_VOLUME() { return getToken(TSqlParser.MAX_OUTSTANDING_IO_PER_VOLUME, 0); }
		public TerminalNode DISABLE() { return getToken(TSqlParser.DISABLE, 0); }
		public TerminalNode RECONFIGURE() { return getToken(TSqlParser.RECONFIGURE, 0); }
		public TerminalNode DECIMAL() { return getToken(TSqlParser.DECIMAL, 0); }
		public TerminalNode DOT() { return getToken(TSqlParser.DOT, 0); }
		public TerminalNode NULL() { return getToken(TSqlParser.NULL, 0); }
		public List id() {
			return getRuleContexts(IdContext.class);
		}
		public IdContext id(int i) {
			return getRuleContext(IdContext.class,i);
		}
		public Alter_resource_governorContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alter_resource_governor; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterAlter_resource_governor(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitAlter_resource_governor(this);
		}
	}

	public final Alter_resource_governorContext alter_resource_governor() throws RecognitionException {
		Alter_resource_governorContext _localctx = new Alter_resource_governorContext(_ctx, getState());
		enterRule(_localctx, 344, RULE_alter_resource_governor);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4112);
			match(ALTER);
			setState(4113);
			match(RESOURCE);
			setState(4114);
			match(GOVERNOR);
			setState(4136);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,440,_ctx) ) {
			case 1:
				{
				setState(4115);
				_la = _input.LA(1);
				if ( !(_la==RECONFIGURE || _la==DISABLE) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
				break;
			case 2:
				{
				setState(4116);
				match(WITH);
				setState(4117);
				match(LR_BRACKET);
				setState(4118);
				match(CLASSIFIER_FUNCTION);
				setState(4119);
				match(EQUAL);
				setState(4125);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case CALLED:
				case DATA_COMPRESSION:
				case EVENTDATA:
				case FILENAME:
				case FILLFACTOR:
				case FORCESEEK:
				case INIT:
				case KEY:
				case MASTER:
				case MAX_MEMORY:
				case OFFSETS:
				case PAGE:
				case PUBLIC:
				case R:
				case RAW:
				case RETURN:
				case RETURNS:
				case ROWCOUNT:
				case SAFETY:
				case SERVER:
				case SID:
				case SOURCE:
				case STATE:
				case START:
				case TARGET:
				case ABSOLUTE:
				case ACCENT_SENSITIVITY:
				case ACTION:
				case ACTIVATION:
				case ACTIVE:
				case ADDRESS:
				case AES_128:
				case AES_192:
				case AES_256:
				case AFFINITY:
				case AFTER:
				case AGGREGATE:
				case ALGORITHM:
				case ALLOW_ENCRYPTED_VALUE_MODIFICATIONS:
				case ALLOW_SNAPSHOT_ISOLATION:
				case ALLOWED:
				case ANSI_NULL_DEFAULT:
				case ANSI_NULLS:
				case ANSI_PADDING:
				case ANSI_WARNINGS:
				case APPLICATION_LOG:
				case APPLY:
				case ARITHABORT:
				case ASSEMBLY:
				case AUDIT:
				case AUDIT_GUID:
				case AUTO:
				case AUTO_CLEANUP:
				case AUTO_CLOSE:
				case AUTO_CREATE_STATISTICS:
				case AUTO_SHRINK:
				case AUTO_UPDATE_STATISTICS:
				case AUTO_UPDATE_STATISTICS_ASYNC:
				case AVAILABILITY:
				case AVG:
				case BACKUP_PRIORITY:
				case BEGIN_DIALOG:
				case BIGINT:
				case BINARY_BASE64:
				case BINARY_CHECKSUM:
				case BINDING:
				case BLOB_STORAGE:
				case BROKER:
				case BROKER_INSTANCE:
				case BULK_LOGGED:
				case CALLER:
				case CAP_CPU_PERCENT:
				case CAST:
				case CATALOG:
				case CATCH:
				case CHANGE_RETENTION:
				case CHANGE_TRACKING:
				case CHECKSUM:
				case CHECKSUM_AGG:
				case CLEANUP:
				case COLLECTION:
				case COLUMN_MASTER_KEY:
				case COMMITTED:
				case COMPATIBILITY_LEVEL:
				case CONCAT:
				case CONCAT_NULL_YIELDS_NULL:
				case CONTENT:
				case CONTROL:
				case COOKIE:
				case COUNT:
				case COUNT_BIG:
				case COUNTER:
				case CPU:
				case CREATE_NEW:
				case CREATION_DISPOSITION:
				case CREDENTIAL:
				case CRYPTOGRAPHIC:
				case CURSOR_CLOSE_ON_COMMIT:
				case CURSOR_DEFAULT:
				case DATE_CORRELATION_OPTIMIZATION:
				case DATEADD:
				case DATEDIFF:
				case DATENAME:
				case DATEPART:
				case DAYS:
				case DB_CHAINING:
				case DB_FAILOVER:
				case DECRYPTION:
				case DEFAULT_DOUBLE_QUOTE:
				case DEFAULT_FULLTEXT_LANGUAGE:
				case DEFAULT_LANGUAGE:
				case DELAY:
				case DELAYED_DURABILITY:
				case DELETED:
				case DENSE_RANK:
				case DEPENDENTS:
				case DES:
				case DESCRIPTION:
				case DESX:
				case DHCP:
				case DIALOG:
				case DIRECTORY_NAME:
				case DISABLE:
				case DISABLE_BROKER:
				case DISABLED:
				case DISK_DRIVE:
				case DOCUMENT:
				case DYNAMIC:
				case EMERGENCY:
				case EMPTY:
				case ENABLE:
				case ENABLE_BROKER:
				case ENCRYPTED_VALUE:
				case ENCRYPTION:
				case ENDPOINT_URL:
				case ERROR_BROKER_CONVERSATIONS:
				case EXCLUSIVE:
				case EXECUTABLE:
				case EXIST:
				case EXPAND:
				case EXPIRY_DATE:
				case EXPLICIT:
				case FAIL_OPERATION:
				case FAILOVER_MODE:
				case FAILURE:
				case FAILURE_CONDITION_LEVEL:
				case FAST:
				case FAST_FORWARD:
				case FILEGROUP:
				case FILEGROWTH:
				case FILEPATH:
				case FILESTREAM:
				case FILTER:
				case FIRST:
				case FIRST_VALUE:
				case FOLLOWING:
				case FORCE:
				case FORCE_FAILOVER_ALLOW_DATA_LOSS:
				case FORCED:
				case FORMAT:
				case FORWARD_ONLY:
				case FULLSCAN:
				case FULLTEXT:
				case GB:
				case GETDATE:
				case GETUTCDATE:
				case GLOBAL:
				case GO:
				case GROUP_MAX_REQUESTS:
				case GROUPING:
				case GROUPING_ID:
				case HADR:
				case HASH:
				case HEALTH_CHECK_TIMEOUT:
				case HIGH:
				case HONOR_BROKER_PRIORITY:
				case HOURS:
				case IDENTITY_VALUE:
				case IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX:
				case IMMEDIATE:
				case IMPERSONATE:
				case IMPORTANCE:
				case INCREMENTAL:
				case INITIATOR:
				case INPUT:
				case INSENSITIVE:
				case INSERTED:
				case INT:
				case IP:
				case ISOLATION:
				case KB:
				case KEEP:
				case KEEPFIXED:
				case KEY_SOURCE:
				case KEYS:
				case KEYSET:
				case LAG:
				case LAST:
				case LAST_VALUE:
				case LEAD:
				case LEVEL:
				case LIST:
				case LISTENER:
				case LISTENER_URL:
				case LOB_COMPACTION:
				case LOCAL:
				case LOCATION:
				case LOCK:
				case LOCK_ESCALATION:
				case LOGIN:
				case LOOP:
				case LOW:
				case MANUAL:
				case MARK:
				case MATERIALIZED:
				case MAX:
				case MAX_CPU_PERCENT:
				case MAX_DOP:
				case MAX_FILES:
				case MAX_IOPS_PER_VOLUME:
				case MAX_MEMORY_PERCENT:
				case MAX_PROCESSES:
				case MAX_QUEUE_READERS:
				case MAX_ROLLOVER_FILES:
				case MAXDOP:
				case MAXRECURSION:
				case MAXSIZE:
				case MB:
				case MEDIUM:
				case MEMORY_OPTIMIZED_DATA:
				case MESSAGE:
				case MIN:
				case MIN_ACTIVE_ROWVERSION:
				case MIN_CPU_PERCENT:
				case MIN_IOPS_PER_VOLUME:
				case MIN_MEMORY_PERCENT:
				case MINUTES:
				case MIRROR_ADDRESS:
				case MIXED_PAGE_ALLOCATION:
				case MODE:
				case MODIFY:
				case MOVE:
				case MULTI_USER:
				case NAME:
				case NESTED_TRIGGERS:
				case NEW_ACCOUNT:
				case NEW_BROKER:
				case NEW_PASSWORD:
				case NEXT:
				case NO:
				case NO_TRUNCATE:
				case NO_WAIT:
				case NOCOUNT:
				case NODES:
				case NOEXPAND:
				case NON_TRANSACTED_ACCESS:
				case NORECOMPUTE:
				case NORECOVERY:
				case NOWAIT:
				case NTILE:
				case NUMANODE:
				case NUMBER:
				case NUMERIC_ROUNDABORT:
				case OBJECT:
				case OFFLINE:
				case OFFSET:
				case OLD_ACCOUNT:
				case ONLINE:
				case ONLY:
				case OPEN_EXISTING:
				case OPTIMISTIC:
				case OPTIMIZE:
				case OUT:
				case OUTPUT:
				case OWNER:
				case PAGE_VERIFY:
				case PARAMETERIZATION:
				case PARTITION:
				case PARTITIONS:
				case PARTNER:
				case PATH:
				case POISON_MESSAGE_HANDLING:
				case POOL:
				case PORT:
				case PRECEDING:
				case PRIMARY_ROLE:
				case PRIOR:
				case PRIORITY:
				case PRIORITY_LEVEL:
				case PRIVATE:
				case PRIVATE_KEY:
				case PRIVILEGES:
				case PROCEDURE_NAME:
				case PROPERTY:
				case PROVIDER:
				case PROVIDER_KEY_NAME:
				case QUERY:
				case QUEUE:
				case QUEUE_DELAY:
				case QUOTED_IDENTIFIER:
				case RANGE:
				case RANK:
				case RC2:
				case RC4:
				case RC4_128:
				case READ_COMMITTED_SNAPSHOT:
				case READ_ONLY:
				case READ_ONLY_ROUTING_LIST:
				case READ_WRITE:
				case READONLY:
				case REBUILD:
				case RECEIVE:
				case RECOMPILE:
				case RECOVERY:
				case RECURSIVE_TRIGGERS:
				case RELATIVE:
				case REMOTE:
				case REMOTE_SERVICE_NAME:
				case REMOVE:
				case REORGANIZE:
				case REPEATABLE:
				case REPLICA:
				case REQUEST_MAX_CPU_TIME_SEC:
				case REQUEST_MAX_MEMORY_GRANT_PERCENT:
				case REQUEST_MEMORY_GRANT_TIMEOUT_SEC:
				case REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT:
				case RESERVE_DISK_SPACE:
				case RESOURCE:
				case RESOURCE_MANAGER_LOCATION:
				case RESTRICTED_USER:
				case RETENTION:
				case ROBUST:
				case ROOT:
				case ROUTE:
				case ROW:
				case ROW_NUMBER:
				case ROWGUID:
				case ROWS:
				case SAMPLE:
				case SCHEMABINDING:
				case SCOPED:
				case SCROLL:
				case SCROLL_LOCKS:
				case SEARCH:
				case SECONDARY:
				case SECONDARY_ONLY:
				case SECONDARY_ROLE:
				case SECONDS:
				case SECRET:
				case SECURITY_LOG:
				case SEEDING_MODE:
				case SELF:
				case SEMI_SENSITIVE:
				case SEND:
				case SENT:
				case SERIALIZABLE:
				case SESSION_TIMEOUT:
				case SETERROR:
				case SHARE:
				case SHOWPLAN:
				case SIGNATURE:
				case SIMPLE:
				case SINGLE_USER:
				case SIZE:
				case SMALLINT:
				case SNAPSHOT:
				case SPATIAL_WINDOW_MAX_CELLS:
				case STANDBY:
				case START_DATE:
				case STATIC:
				case STATS_STREAM:
				case STATUS:
				case STDEV:
				case STDEVP:
				case STOPLIST:
				case STUFF:
				case SUBJECT:
				case SUM:
				case SUSPEND:
				case SYMMETRIC:
				case SYNCHRONOUS_COMMIT:
				case SYNONYM:
				case TAKE:
				case TARGET_RECOVERY_TIME:
				case TB:
				case TEXTIMAGE_ON:
				case THROW:
				case TIES:
				case TIME:
				case TIMEOUT:
				case TIMER:
				case TINYINT:
				case TORN_PAGE_DETECTION:
				case TRANSFORM_NOISE_WORDS:
				case TRIPLE_DES:
				case TRIPLE_DES_3KEY:
				case TRUSTWORTHY:
				case TRY:
				case TSQL:
				case TWO_DIGIT_YEAR_CUTOFF:
				case TYPE:
				case TYPE_WARNING:
				case UNBOUNDED:
				case UNCOMMITTED:
				case UNKNOWN:
				case UNLIMITED:
				case USING:
				case VALID_XML:
				case VALIDATION:
				case VALUE:
				case VAR:
				case VARP:
				case VIEW_METADATA:
				case VIEWS:
				case WAIT:
				case WELL_FORMED_XML:
				case WORK:
				case WORKLOAD:
				case XML:
				case XMLNAMESPACES:
				case DOUBLE_QUOTE_ID:
				case SQUARE_BRACKET_ID:
				case ID:
					{
					setState(4120);
					((Alter_resource_governorContext)_localctx).schema_name = id();
					setState(4121);
					match(DOT);
					setState(4122);
					((Alter_resource_governorContext)_localctx).function_name = id();
					}
					break;
				case NULL:
					{
					setState(4124);
					match(NULL);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				setState(4127);
				match(RR_BRACKET);
				}
				break;
			case 3:
				{
				setState(4128);
				match(RESET);
				setState(4129);
				match(STATISTICS);
				}
				break;
			case 4:
				{
				setState(4130);
				match(WITH);
				setState(4131);
				match(LR_BRACKET);
				setState(4132);
				match(MAX_OUTSTANDING_IO_PER_VOLUME);
				setState(4133);
				match(EQUAL);
				setState(4134);
				((Alter_resource_governorContext)_localctx).max_outstanding_io_per_volume = match(DECIMAL);
				setState(4135);
				match(RR_BRACKET);
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Alter_db_roleContext extends ParserRuleContext {
		public IdContext role_name;
		public IdContext database_principal;
		public IdContext new_role_name;
		public TerminalNode ALTER() { return getToken(TSqlParser.ALTER, 0); }
		public TerminalNode ROLE() { return getToken(TSqlParser.ROLE, 0); }
		public List id() {
			return getRuleContexts(IdContext.class);
		}
		public IdContext id(int i) {
			return getRuleContext(IdContext.class,i);
		}
		public TerminalNode MEMBER() { return getToken(TSqlParser.MEMBER, 0); }
		public TerminalNode WITH() { return getToken(TSqlParser.WITH, 0); }
		public TerminalNode NAME() { return getToken(TSqlParser.NAME, 0); }
		public TerminalNode EQUAL() { return getToken(TSqlParser.EQUAL, 0); }
		public TerminalNode ADD() { return getToken(TSqlParser.ADD, 0); }
		public TerminalNode DROP() { return getToken(TSqlParser.DROP, 0); }
		public Alter_db_roleContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alter_db_role; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterAlter_db_role(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitAlter_db_role(this);
		}
	}

	public final Alter_db_roleContext alter_db_role() throws RecognitionException {
		Alter_db_roleContext _localctx = new Alter_db_roleContext(_ctx, getState());
		enterRule(_localctx, 346, RULE_alter_db_role);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4138);
			match(ALTER);
			setState(4139);
			match(ROLE);
			setState(4140);
			((Alter_db_roleContext)_localctx).role_name = id();
			setState(4148);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case ADD:
			case DROP:
				{
				setState(4141);
				_la = _input.LA(1);
				if ( !(_la==ADD || _la==DROP) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(4142);
				match(MEMBER);
				setState(4143);
				((Alter_db_roleContext)_localctx).database_principal = id();
				}
				break;
			case WITH:
				{
				setState(4144);
				match(WITH);
				setState(4145);
				match(NAME);
				setState(4146);
				match(EQUAL);
				setState(4147);
				((Alter_db_roleContext)_localctx).new_role_name = id();
				}
				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 Create_db_roleContext extends ParserRuleContext {
		public IdContext role_name;
		public IdContext owner_name;
		public TerminalNode CREATE() { return getToken(TSqlParser.CREATE, 0); }
		public TerminalNode ROLE() { return getToken(TSqlParser.ROLE, 0); }
		public List id() {
			return getRuleContexts(IdContext.class);
		}
		public IdContext id(int i) {
			return getRuleContext(IdContext.class,i);
		}
		public TerminalNode AUTHORIZATION() { return getToken(TSqlParser.AUTHORIZATION, 0); }
		public Create_db_roleContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_create_db_role; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterCreate_db_role(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitCreate_db_role(this);
		}
	}

	public final Create_db_roleContext create_db_role() throws RecognitionException {
		Create_db_roleContext _localctx = new Create_db_roleContext(_ctx, getState());
		enterRule(_localctx, 348, RULE_create_db_role);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4150);
			match(CREATE);
			setState(4151);
			match(ROLE);
			setState(4152);
			((Create_db_roleContext)_localctx).role_name = id();
			setState(4155);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==AUTHORIZATION) {
				{
				setState(4153);
				match(AUTHORIZATION);
				setState(4154);
				((Create_db_roleContext)_localctx).owner_name = id();
				}
			}

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

	public static class Create_routeContext extends ParserRuleContext {
		public IdContext route_name;
		public IdContext owner_name;
		public Token route_service_name;
		public Token broker_instance_identifier;
		public TerminalNode CREATE() { return getToken(TSqlParser.CREATE, 0); }
		public TerminalNode ROUTE() { return getToken(TSqlParser.ROUTE, 0); }
		public TerminalNode WITH() { return getToken(TSqlParser.WITH, 0); }
		public TerminalNode ADDRESS() { return getToken(TSqlParser.ADDRESS, 0); }
		public List EQUAL() { return getTokens(TSqlParser.EQUAL); }
		public TerminalNode EQUAL(int i) {
			return getToken(TSqlParser.EQUAL, i);
		}
		public List id() {
			return getRuleContexts(IdContext.class);
		}
		public IdContext id(int i) {
			return getRuleContext(IdContext.class,i);
		}
		public List STRING() { return getTokens(TSqlParser.STRING); }
		public TerminalNode STRING(int i) {
			return getToken(TSqlParser.STRING, i);
		}
		public List QUOTED_URL() { return getTokens(TSqlParser.QUOTED_URL); }
		public TerminalNode QUOTED_URL(int i) {
			return getToken(TSqlParser.QUOTED_URL, i);
		}
		public TerminalNode AUTHORIZATION() { return getToken(TSqlParser.AUTHORIZATION, 0); }
		public TerminalNode SERVICE_NAME() { return getToken(TSqlParser.SERVICE_NAME, 0); }
		public TerminalNode BROKER_INSTANCE() { return getToken(TSqlParser.BROKER_INSTANCE, 0); }
		public TerminalNode LIFETIME() { return getToken(TSqlParser.LIFETIME, 0); }
		public TerminalNode DECIMAL() { return getToken(TSqlParser.DECIMAL, 0); }
		public List COMMA() { return getTokens(TSqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(TSqlParser.COMMA, i);
		}
		public TerminalNode MIRROR_ADDRESS() { return getToken(TSqlParser.MIRROR_ADDRESS, 0); }
		public Create_routeContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_create_route; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterCreate_route(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitCreate_route(this);
		}
	}

	public final Create_routeContext create_route() throws RecognitionException {
		Create_routeContext _localctx = new Create_routeContext(_ctx, getState());
		enterRule(_localctx, 350, RULE_create_route);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4157);
			match(CREATE);
			setState(4158);
			match(ROUTE);
			setState(4159);
			((Create_routeContext)_localctx).route_name = id();
			setState(4162);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==AUTHORIZATION) {
				{
				setState(4160);
				match(AUTHORIZATION);
				setState(4161);
				((Create_routeContext)_localctx).owner_name = id();
				}
			}

			setState(4164);
			match(WITH);
			setState(4171);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,445,_ctx) ) {
			case 1:
				{
				setState(4166);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==COMMA) {
					{
					setState(4165);
					match(COMMA);
					}
				}

				setState(4168);
				match(SERVICE_NAME);
				setState(4169);
				match(EQUAL);
				setState(4170);
				((Create_routeContext)_localctx).route_service_name = match(STRING);
				}
				break;
			}
			setState(4179);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,447,_ctx) ) {
			case 1:
				{
				setState(4174);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==COMMA) {
					{
					setState(4173);
					match(COMMA);
					}
				}

				setState(4176);
				match(BROKER_INSTANCE);
				setState(4177);
				match(EQUAL);
				setState(4178);
				((Create_routeContext)_localctx).broker_instance_identifier = match(STRING);
				}
				break;
			}
			setState(4187);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,449,_ctx) ) {
			case 1:
				{
				setState(4182);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==COMMA) {
					{
					setState(4181);
					match(COMMA);
					}
				}

				setState(4184);
				match(LIFETIME);
				setState(4185);
				match(EQUAL);
				setState(4186);
				match(DECIMAL);
				}
				break;
			}
			setState(4190);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==COMMA) {
				{
				setState(4189);
				match(COMMA);
				}
			}

			setState(4192);
			match(ADDRESS);
			setState(4193);
			match(EQUAL);
			setState(4194);
			_la = _input.LA(1);
			if ( !(_la==QUOTED_URL || _la==STRING) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			setState(4199);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==COMMA) {
				{
				setState(4195);
				match(COMMA);
				setState(4196);
				match(MIRROR_ADDRESS);
				setState(4197);
				match(EQUAL);
				setState(4198);
				_la = _input.LA(1);
				if ( !(_la==QUOTED_URL || _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 Create_ruleContext extends ParserRuleContext {
		public IdContext schema_name;
		public IdContext rule_name;
		public TerminalNode CREATE() { return getToken(TSqlParser.CREATE, 0); }
		public TerminalNode RULE() { return getToken(TSqlParser.RULE, 0); }
		public TerminalNode AS() { return getToken(TSqlParser.AS, 0); }
		public Search_conditionContext search_condition() {
			return getRuleContext(Search_conditionContext.class,0);
		}
		public List id() {
			return getRuleContexts(IdContext.class);
		}
		public IdContext id(int i) {
			return getRuleContext(IdContext.class,i);
		}
		public TerminalNode DOT() { return getToken(TSqlParser.DOT, 0); }
		public Create_ruleContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_create_rule; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterCreate_rule(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitCreate_rule(this);
		}
	}

	public final Create_ruleContext create_rule() throws RecognitionException {
		Create_ruleContext _localctx = new Create_ruleContext(_ctx, getState());
		enterRule(_localctx, 352, RULE_create_rule);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4201);
			match(CREATE);
			setState(4202);
			match(RULE);
			setState(4206);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,452,_ctx) ) {
			case 1:
				{
				setState(4203);
				((Create_ruleContext)_localctx).schema_name = id();
				setState(4204);
				match(DOT);
				}
				break;
			}
			setState(4208);
			((Create_ruleContext)_localctx).rule_name = id();
			setState(4209);
			match(AS);
			setState(4210);
			search_condition();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Alter_schema_sqlContext extends ParserRuleContext {
		public IdContext schema_name;
		public TerminalNode ALTER() { return getToken(TSqlParser.ALTER, 0); }
		public List SCHEMA() { return getTokens(TSqlParser.SCHEMA); }
		public TerminalNode SCHEMA(int i) {
			return getToken(TSqlParser.SCHEMA, i);
		}
		public TerminalNode TRANSFER() { return getToken(TSqlParser.TRANSFER, 0); }
		public List id() {
			return getRuleContexts(IdContext.class);
		}
		public IdContext id(int i) {
			return getRuleContext(IdContext.class,i);
		}
		public List COLON() { return getTokens(TSqlParser.COLON); }
		public TerminalNode COLON(int i) {
			return getToken(TSqlParser.COLON, i);
		}
		public TerminalNode DOT() { return getToken(TSqlParser.DOT, 0); }
		public TerminalNode OBJECT() { return getToken(TSqlParser.OBJECT, 0); }
		public TerminalNode TYPE() { return getToken(TSqlParser.TYPE, 0); }
		public TerminalNode XML() { return getToken(TSqlParser.XML, 0); }
		public TerminalNode COLLECTION() { return getToken(TSqlParser.COLLECTION, 0); }
		public Alter_schema_sqlContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alter_schema_sql; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterAlter_schema_sql(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitAlter_schema_sql(this);
		}
	}

	public final Alter_schema_sqlContext alter_schema_sql() throws RecognitionException {
		Alter_schema_sqlContext _localctx = new Alter_schema_sqlContext(_ctx, getState());
		enterRule(_localctx, 354, RULE_alter_schema_sql);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4212);
			match(ALTER);
			setState(4213);
			match(SCHEMA);
			setState(4214);
			((Alter_schema_sqlContext)_localctx).schema_name = id();
			setState(4215);
			match(TRANSFER);
			setState(4225);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,454,_ctx) ) {
			case 1:
				{
				setState(4221);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case OBJECT:
					{
					setState(4216);
					match(OBJECT);
					}
					break;
				case TYPE:
					{
					setState(4217);
					match(TYPE);
					}
					break;
				case XML:
					{
					setState(4218);
					match(XML);
					setState(4219);
					match(SCHEMA);
					setState(4220);
					match(COLLECTION);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				setState(4223);
				match(COLON);
				setState(4224);
				match(COLON);
				}
				break;
			}
			setState(4227);
			id();
			setState(4230);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==DOT) {
				{
				setState(4228);
				match(DOT);
				setState(4229);
				id();
				}
			}

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

	public static class Create_schemaContext extends ParserRuleContext {
		public IdContext schema_name;
		public IdContext owner_name;
		public IdContext object_name;
		public TerminalNode CREATE() { return getToken(TSqlParser.CREATE, 0); }
		public List SCHEMA() { return getTokens(TSqlParser.SCHEMA); }
		public TerminalNode SCHEMA(int i) {
			return getToken(TSqlParser.SCHEMA, i);
		}
		public TerminalNode AUTHORIZATION() { return getToken(TSqlParser.AUTHORIZATION, 0); }
		public List id() {
			return getRuleContexts(IdContext.class);
		}
		public IdContext id(int i) {
			return getRuleContext(IdContext.class,i);
		}
		public List create_table() {
			return getRuleContexts(Create_tableContext.class);
		}
		public Create_tableContext create_table(int i) {
			return getRuleContext(Create_tableContext.class,i);
		}
		public List create_view() {
			return getRuleContexts(Create_viewContext.class);
		}
		public Create_viewContext create_view(int i) {
			return getRuleContext(Create_viewContext.class,i);
		}
		public List ON() { return getTokens(TSqlParser.ON); }
		public TerminalNode ON(int i) {
			return getToken(TSqlParser.ON, i);
		}
		public List TO() { return getTokens(TSqlParser.TO); }
		public TerminalNode TO(int i) {
			return getToken(TSqlParser.TO, i);
		}
		public List REVOKE() { return getTokens(TSqlParser.REVOKE); }
		public TerminalNode REVOKE(int i) {
			return getToken(TSqlParser.REVOKE, i);
		}
		public List FROM() { return getTokens(TSqlParser.FROM); }
		public TerminalNode FROM(int i) {
			return getToken(TSqlParser.FROM, i);
		}
		public List GRANT() { return getTokens(TSqlParser.GRANT); }
		public TerminalNode GRANT(int i) {
			return getToken(TSqlParser.GRANT, i);
		}
		public List DENY() { return getTokens(TSqlParser.DENY); }
		public TerminalNode DENY(int i) {
			return getToken(TSqlParser.DENY, i);
		}
		public List SELECT() { return getTokens(TSqlParser.SELECT); }
		public TerminalNode SELECT(int i) {
			return getToken(TSqlParser.SELECT, i);
		}
		public List INSERT() { return getTokens(TSqlParser.INSERT); }
		public TerminalNode INSERT(int i) {
			return getToken(TSqlParser.INSERT, i);
		}
		public List DELETE() { return getTokens(TSqlParser.DELETE); }
		public TerminalNode DELETE(int i) {
			return getToken(TSqlParser.DELETE, i);
		}
		public List UPDATE() { return getTokens(TSqlParser.UPDATE); }
		public TerminalNode UPDATE(int i) {
			return getToken(TSqlParser.UPDATE, i);
		}
		public List COLON() { return getTokens(TSqlParser.COLON); }
		public TerminalNode COLON(int i) {
			return getToken(TSqlParser.COLON, i);
		}
		public Create_schemaContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_create_schema; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterCreate_schema(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitCreate_schema(this);
		}
	}

	public final Create_schemaContext create_schema() throws RecognitionException {
		Create_schemaContext _localctx = new Create_schemaContext(_ctx, getState());
		enterRule(_localctx, 356, RULE_create_schema);
		int _la;
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			setState(4232);
			match(CREATE);
			setState(4233);
			match(SCHEMA);
			setState(4241);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,456,_ctx) ) {
			case 1:
				{
				setState(4234);
				((Create_schemaContext)_localctx).schema_name = id();
				}
				break;
			case 2:
				{
				setState(4235);
				match(AUTHORIZATION);
				setState(4236);
				((Create_schemaContext)_localctx).owner_name = id();
				}
				break;
			case 3:
				{
				setState(4237);
				((Create_schemaContext)_localctx).schema_name = id();
				setState(4238);
				match(AUTHORIZATION);
				setState(4239);
				((Create_schemaContext)_localctx).owner_name = id();
				}
				break;
			}
			setState(4271);
			_errHandler.sync(this);
			_alt = getInterpreter().adaptivePredict(_input,460,_ctx);
			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
				if ( _alt==1 ) {
					{
					setState(4269);
					_errHandler.sync(this);
					switch ( getInterpreter().adaptivePredict(_input,459,_ctx) ) {
					case 1:
						{
						setState(4243);
						create_table();
						}
						break;
					case 2:
						{
						setState(4244);
						create_view();
						}
						break;
					case 3:
						{
						setState(4245);
						_la = _input.LA(1);
						if ( !(_la==DENY || _la==GRANT) ) {
						_errHandler.recoverInline(this);
						}
						else {
							if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
							_errHandler.reportMatch(this);
							consume();
						}
						setState(4246);
						_la = _input.LA(1);
						if ( !(_la==DELETE || _la==INSERT || _la==SELECT || _la==UPDATE) ) {
						_errHandler.recoverInline(this);
						}
						else {
							if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
							_errHandler.reportMatch(this);
							consume();
						}
						setState(4247);
						match(ON);
						setState(4251);
						_errHandler.sync(this);
						_la = _input.LA(1);
						if (_la==SCHEMA) {
							{
							setState(4248);
							match(SCHEMA);
							setState(4249);
							match(COLON);
							setState(4250);
							match(COLON);
							}
						}

						setState(4253);
						((Create_schemaContext)_localctx).object_name = id();
						setState(4254);
						match(TO);
						setState(4255);
						((Create_schemaContext)_localctx).owner_name = id();
						}
						break;
					case 4:
						{
						setState(4257);
						match(REVOKE);
						setState(4258);
						_la = _input.LA(1);
						if ( !(_la==DELETE || _la==INSERT || _la==SELECT || _la==UPDATE) ) {
						_errHandler.recoverInline(this);
						}
						else {
							if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
							_errHandler.reportMatch(this);
							consume();
						}
						setState(4259);
						match(ON);
						setState(4263);
						_errHandler.sync(this);
						_la = _input.LA(1);
						if (_la==SCHEMA) {
							{
							setState(4260);
							match(SCHEMA);
							setState(4261);
							match(COLON);
							setState(4262);
							match(COLON);
							}
						}

						setState(4265);
						((Create_schemaContext)_localctx).object_name = id();
						setState(4266);
						match(FROM);
						setState(4267);
						((Create_schemaContext)_localctx).owner_name = id();
						}
						break;
					}
					} 
				}
				setState(4273);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,460,_ctx);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Create_schema_azure_sql_dw_and_pdwContext extends ParserRuleContext {
		public IdContext schema_name;
		public IdContext owner_name;
		public TerminalNode CREATE() { return getToken(TSqlParser.CREATE, 0); }
		public TerminalNode SCHEMA() { return getToken(TSqlParser.SCHEMA, 0); }
		public List id() {
			return getRuleContexts(IdContext.class);
		}
		public IdContext id(int i) {
			return getRuleContext(IdContext.class,i);
		}
		public TerminalNode AUTHORIZATION() { return getToken(TSqlParser.AUTHORIZATION, 0); }
		public Create_schema_azure_sql_dw_and_pdwContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_create_schema_azure_sql_dw_and_pdw; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterCreate_schema_azure_sql_dw_and_pdw(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitCreate_schema_azure_sql_dw_and_pdw(this);
		}
	}

	public final Create_schema_azure_sql_dw_and_pdwContext create_schema_azure_sql_dw_and_pdw() throws RecognitionException {
		Create_schema_azure_sql_dw_and_pdwContext _localctx = new Create_schema_azure_sql_dw_and_pdwContext(_ctx, getState());
		enterRule(_localctx, 358, RULE_create_schema_azure_sql_dw_and_pdw);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4274);
			match(CREATE);
			setState(4275);
			match(SCHEMA);
			setState(4276);
			((Create_schema_azure_sql_dw_and_pdwContext)_localctx).schema_name = id();
			setState(4279);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==AUTHORIZATION) {
				{
				setState(4277);
				match(AUTHORIZATION);
				setState(4278);
				((Create_schema_azure_sql_dw_and_pdwContext)_localctx).owner_name = id();
				}
			}

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

	public static class Alter_schema_azure_sql_dw_and_pdwContext extends ParserRuleContext {
		public IdContext schema_name;
		public TerminalNode ALTER() { return getToken(TSqlParser.ALTER, 0); }
		public TerminalNode SCHEMA() { return getToken(TSqlParser.SCHEMA, 0); }
		public TerminalNode TRANSFER() { return getToken(TSqlParser.TRANSFER, 0); }
		public List id() {
			return getRuleContexts(IdContext.class);
		}
		public IdContext id(int i) {
			return getRuleContext(IdContext.class,i);
		}
		public TerminalNode OBJECT() { return getToken(TSqlParser.OBJECT, 0); }
		public List COLON() { return getTokens(TSqlParser.COLON); }
		public TerminalNode COLON(int i) {
			return getToken(TSqlParser.COLON, i);
		}
		public TerminalNode DOT() { return getToken(TSqlParser.DOT, 0); }
		public TerminalNode ID() { return getToken(TSqlParser.ID, 0); }
		public Alter_schema_azure_sql_dw_and_pdwContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alter_schema_azure_sql_dw_and_pdw; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterAlter_schema_azure_sql_dw_and_pdw(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitAlter_schema_azure_sql_dw_and_pdw(this);
		}
	}

	public final Alter_schema_azure_sql_dw_and_pdwContext alter_schema_azure_sql_dw_and_pdw() throws RecognitionException {
		Alter_schema_azure_sql_dw_and_pdwContext _localctx = new Alter_schema_azure_sql_dw_and_pdwContext(_ctx, getState());
		enterRule(_localctx, 360, RULE_alter_schema_azure_sql_dw_and_pdw);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4281);
			match(ALTER);
			setState(4282);
			match(SCHEMA);
			setState(4283);
			((Alter_schema_azure_sql_dw_and_pdwContext)_localctx).schema_name = id();
			setState(4284);
			match(TRANSFER);
			setState(4288);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,462,_ctx) ) {
			case 1:
				{
				setState(4285);
				match(OBJECT);
				setState(4286);
				match(COLON);
				setState(4287);
				match(COLON);
				}
				break;
			}
			setState(4290);
			id();
			setState(4293);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==DOT) {
				{
				setState(4291);
				match(DOT);
				setState(4292);
				match(ID);
				}
			}

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

	public static class Create_search_property_listContext extends ParserRuleContext {
		public IdContext new_list_name;
		public IdContext database_name;
		public IdContext source_list_name;
		public IdContext owner_name;
		public TerminalNode CREATE() { return getToken(TSqlParser.CREATE, 0); }
		public TerminalNode SEARCH() { return getToken(TSqlParser.SEARCH, 0); }
		public TerminalNode PROPERTY() { return getToken(TSqlParser.PROPERTY, 0); }
		public TerminalNode LIST() { return getToken(TSqlParser.LIST, 0); }
		public List id() {
			return getRuleContexts(IdContext.class);
		}
		public IdContext id(int i) {
			return getRuleContext(IdContext.class,i);
		}
		public TerminalNode FROM() { return getToken(TSqlParser.FROM, 0); }
		public TerminalNode AUTHORIZATION() { return getToken(TSqlParser.AUTHORIZATION, 0); }
		public TerminalNode DOT() { return getToken(TSqlParser.DOT, 0); }
		public Create_search_property_listContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_create_search_property_list; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterCreate_search_property_list(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitCreate_search_property_list(this);
		}
	}

	public final Create_search_property_listContext create_search_property_list() throws RecognitionException {
		Create_search_property_listContext _localctx = new Create_search_property_listContext(_ctx, getState());
		enterRule(_localctx, 362, RULE_create_search_property_list);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4295);
			match(CREATE);
			setState(4296);
			match(SEARCH);
			setState(4297);
			match(PROPERTY);
			setState(4298);
			match(LIST);
			setState(4299);
			((Create_search_property_listContext)_localctx).new_list_name = id();
			setState(4307);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==FROM) {
				{
				setState(4300);
				match(FROM);
				setState(4304);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,464,_ctx) ) {
				case 1:
					{
					setState(4301);
					((Create_search_property_listContext)_localctx).database_name = id();
					setState(4302);
					match(DOT);
					}
					break;
				}
				setState(4306);
				((Create_search_property_listContext)_localctx).source_list_name = id();
				}
			}

			setState(4311);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==AUTHORIZATION) {
				{
				setState(4309);
				match(AUTHORIZATION);
				setState(4310);
				((Create_search_property_listContext)_localctx).owner_name = id();
				}
			}

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

	public static class Create_security_policyContext extends ParserRuleContext {
		public IdContext schema_name;
		public IdContext security_policy_name;
		public IdContext tvf_schema_name;
		public IdContext security_predicate_function_name;
		public IdContext column_name_or_arguments;
		public IdContext table_schema_name;
		public IdContext name;
		public TerminalNode CREATE() { return getToken(TSqlParser.CREATE, 0); }
		public TerminalNode SECURITY() { return getToken(TSqlParser.SECURITY, 0); }
		public TerminalNode POLICY() { return getToken(TSqlParser.POLICY, 0); }
		public List id() {
			return getRuleContexts(IdContext.class);
		}
		public IdContext id(int i) {
			return getRuleContext(IdContext.class,i);
		}
		public List DOT() { return getTokens(TSqlParser.DOT); }
		public TerminalNode DOT(int i) {
			return getToken(TSqlParser.DOT, i);
		}
		public List ADD() { return getTokens(TSqlParser.ADD); }
		public TerminalNode ADD(int i) {
			return getToken(TSqlParser.ADD, i);
		}
		public List PREDICATE() { return getTokens(TSqlParser.PREDICATE); }
		public TerminalNode PREDICATE(int i) {
			return getToken(TSqlParser.PREDICATE, i);
		}
		public List LR_BRACKET() { return getTokens(TSqlParser.LR_BRACKET); }
		public TerminalNode LR_BRACKET(int i) {
			return getToken(TSqlParser.LR_BRACKET, i);
		}
		public List RR_BRACKET() { return getTokens(TSqlParser.RR_BRACKET); }
		public TerminalNode RR_BRACKET(int i) {
			return getToken(TSqlParser.RR_BRACKET, i);
		}
		public List ON() { return getTokens(TSqlParser.ON); }
		public TerminalNode ON(int i) {
			return getToken(TSqlParser.ON, i);
		}
		public TerminalNode WITH() { return getToken(TSqlParser.WITH, 0); }
		public TerminalNode STATE() { return getToken(TSqlParser.STATE, 0); }
		public TerminalNode EQUAL() { return getToken(TSqlParser.EQUAL, 0); }
		public TerminalNode NOT() { return getToken(TSqlParser.NOT, 0); }
		public TerminalNode FOR() { return getToken(TSqlParser.FOR, 0); }
		public TerminalNode REPLICATION() { return getToken(TSqlParser.REPLICATION, 0); }
		public List OFF() { return getTokens(TSqlParser.OFF); }
		public TerminalNode OFF(int i) {
			return getToken(TSqlParser.OFF, i);
		}
		public List COMMA() { return getTokens(TSqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(TSqlParser.COMMA, i);
		}
		public List AFTER() { return getTokens(TSqlParser.AFTER); }
		public TerminalNode AFTER(int i) {
			return getToken(TSqlParser.AFTER, i);
		}
		public List BEFORE() { return getTokens(TSqlParser.BEFORE); }
		public TerminalNode BEFORE(int i) {
			return getToken(TSqlParser.BEFORE, i);
		}
		public TerminalNode SCHEMABINDING() { return getToken(TSqlParser.SCHEMABINDING, 0); }
		public List FILTER() { return getTokens(TSqlParser.FILTER); }
		public TerminalNode FILTER(int i) {
			return getToken(TSqlParser.FILTER, i);
		}
		public List BLOCK() { return getTokens(TSqlParser.BLOCK); }
		public TerminalNode BLOCK(int i) {
			return getToken(TSqlParser.BLOCK, i);
		}
		public List INSERT() { return getTokens(TSqlParser.INSERT); }
		public TerminalNode INSERT(int i) {
			return getToken(TSqlParser.INSERT, i);
		}
		public List UPDATE() { return getTokens(TSqlParser.UPDATE); }
		public TerminalNode UPDATE(int i) {
			return getToken(TSqlParser.UPDATE, i);
		}
		public List DELETE() { return getTokens(TSqlParser.DELETE); }
		public TerminalNode DELETE(int i) {
			return getToken(TSqlParser.DELETE, i);
		}
		public Create_security_policyContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_create_security_policy; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterCreate_security_policy(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitCreate_security_policy(this);
		}
	}

	public final Create_security_policyContext create_security_policy() throws RecognitionException {
		Create_security_policyContext _localctx = new Create_security_policyContext(_ctx, getState());
		enterRule(_localctx, 364, RULE_create_security_policy);
		int _la;
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			setState(4313);
			match(CREATE);
			setState(4314);
			match(SECURITY);
			setState(4315);
			match(POLICY);
			setState(4319);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,467,_ctx) ) {
			case 1:
				{
				setState(4316);
				((Create_security_policyContext)_localctx).schema_name = id();
				setState(4317);
				match(DOT);
				}
				break;
			}
			setState(4321);
			((Create_security_policyContext)_localctx).security_policy_name = id();
			setState(4362); 
			_errHandler.sync(this);
			_la = _input.LA(1);
			do {
				{
				{
				setState(4323);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==COMMA) {
					{
					setState(4322);
					match(COMMA);
					}
				}

				setState(4325);
				match(ADD);
				setState(4327);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==BLOCK || _la==FILTER) {
					{
					setState(4326);
					_la = _input.LA(1);
					if ( !(_la==BLOCK || _la==FILTER) ) {
					_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					}
				}

				setState(4329);
				match(PREDICATE);
				setState(4330);
				((Create_security_policyContext)_localctx).tvf_schema_name = id();
				setState(4331);
				match(DOT);
				setState(4332);
				((Create_security_policyContext)_localctx).security_predicate_function_name = id();
				setState(4333);
				match(LR_BRACKET);
				setState(4338); 
				_errHandler.sync(this);
				_la = _input.LA(1);
				do {
					{
					{
					setState(4335);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==COMMA) {
						{
						setState(4334);
						match(COMMA);
						}
					}

					setState(4337);
					((Create_security_policyContext)_localctx).column_name_or_arguments = id();
					}
					}
					setState(4340); 
					_errHandler.sync(this);
					_la = _input.LA(1);
				} while ( _la==CALLED || ((((_la - 81)) & ~0x3f) == 0 && ((1L << (_la - 81)) & ((1L << (DATA_COMPRESSION - 81)) | (1L << (EVENTDATA - 81)) | (1L << (FILENAME - 81)) | (1L << (FILLFACTOR - 81)) | (1L << (FORCESEEK - 81)))) != 0) || ((((_la - 159)) & ~0x3f) == 0 && ((1L << (_la - 159)) & ((1L << (INIT - 159)) | (1L << (KEY - 159)) | (1L << (MASTER - 159)) | (1L << (MAX_MEMORY - 159)))) != 0) || ((((_la - 226)) & ~0x3f) == 0 && ((1L << (_la - 226)) & ((1L << (OFFSETS - 226)) | (1L << (PAGE - 226)) | (1L << (PUBLIC - 226)) | (1L << (R - 226)) | (1L << (RAW - 226)) | (1L << (RETURN - 226)) | (1L << (RETURNS - 226)) | (1L << (ROWCOUNT - 226)))) != 0) || ((((_la - 296)) & ~0x3f) == 0 && ((1L << (_la - 296)) & ((1L << (SAFETY - 296)) | (1L << (SERVER - 296)) | (1L << (SID - 296)) | (1L << (SOURCE - 296)) | (1L << (STATE - 296)) | (1L << (START - 296)) | (1L << (TARGET - 296)))) != 0) || ((((_la - 384)) & ~0x3f) == 0 && ((1L << (_la - 384)) & ((1L << (ABSOLUTE - 384)) | (1L << (ACCENT_SENSITIVITY - 384)) | (1L << (ACTION - 384)) | (1L << (ACTIVATION - 384)) | (1L << (ACTIVE - 384)) | (1L << (ADDRESS - 384)) | (1L << (AES_128 - 384)) | (1L << (AES_192 - 384)) | (1L << (AES_256 - 384)) | (1L << (AFFINITY - 384)) | (1L << (AFTER - 384)) | (1L << (AGGREGATE - 384)) | (1L << (ALGORITHM - 384)) | (1L << (ALLOW_ENCRYPTED_VALUE_MODIFICATIONS - 384)) | (1L << (ALLOW_SNAPSHOT_ISOLATION - 384)) | (1L << (ALLOWED - 384)) | (1L << (ANSI_NULL_DEFAULT - 384)) | (1L << (ANSI_NULLS - 384)) | (1L << (ANSI_PADDING - 384)) | (1L << (ANSI_WARNINGS - 384)) | (1L << (APPLICATION_LOG - 384)) | (1L << (APPLY - 384)) | (1L << (ARITHABORT - 384)) | (1L << (ASSEMBLY - 384)) | (1L << (AUDIT - 384)) | (1L << (AUDIT_GUID - 384)) | (1L << (AUTO - 384)) | (1L << (AUTO_CLEANUP - 384)) | (1L << (AUTO_CLOSE - 384)) | (1L << (AUTO_CREATE_STATISTICS - 384)) | (1L << (AUTO_SHRINK - 384)) | (1L << (AUTO_UPDATE_STATISTICS - 384)) | (1L << (AUTO_UPDATE_STATISTICS_ASYNC - 384)) | (1L << (AVAILABILITY - 384)) | (1L << (AVG - 384)) | (1L << (BACKUP_PRIORITY - 384)) | (1L << (BEGIN_DIALOG - 384)) | (1L << (BIGINT - 384)) | (1L << (BINARY_BASE64 - 384)) | (1L << (BINARY_CHECKSUM - 384)) | (1L << (BINDING - 384)) | (1L << (BLOB_STORAGE - 384)) | (1L << (BROKER - 384)) | (1L << (BROKER_INSTANCE - 384)) | (1L << (BULK_LOGGED - 384)) | (1L << (CALLER - 384)) | (1L << (CAP_CPU_PERCENT - 384)) | (1L << (CAST - 384)) | (1L << (CATALOG - 384)) | (1L << (CATCH - 384)) | (1L << (CHANGE_RETENTION - 384)) | (1L << (CHANGE_TRACKING - 384)) | (1L << (CHECKSUM - 384)) | (1L << (CHECKSUM_AGG - 384)) | (1L << (CLEANUP - 384)) | (1L << (COLLECTION - 384)) | (1L << (COLUMN_MASTER_KEY - 384)) | (1L << (COMMITTED - 384)) | (1L << (COMPATIBILITY_LEVEL - 384)) | (1L << (CONCAT - 384)) | (1L << (CONCAT_NULL_YIELDS_NULL - 384)) | (1L << (CONTENT - 384)) | (1L << (CONTROL - 384)) | (1L << (COOKIE - 384)))) != 0) || ((((_la - 448)) & ~0x3f) == 0 && ((1L << (_la - 448)) & ((1L << (COUNT - 448)) | (1L << (COUNT_BIG - 448)) | (1L << (COUNTER - 448)) | (1L << (CPU - 448)) | (1L << (CREATE_NEW - 448)) | (1L << (CREATION_DISPOSITION - 448)) | (1L << (CREDENTIAL - 448)) | (1L << (CRYPTOGRAPHIC - 448)) | (1L << (CURSOR_CLOSE_ON_COMMIT - 448)) | (1L << (CURSOR_DEFAULT - 448)) | (1L << (DATE_CORRELATION_OPTIMIZATION - 448)) | (1L << (DATEADD - 448)) | (1L << (DATEDIFF - 448)) | (1L << (DATENAME - 448)) | (1L << (DATEPART - 448)) | (1L << (DAYS - 448)) | (1L << (DB_CHAINING - 448)) | (1L << (DB_FAILOVER - 448)) | (1L << (DECRYPTION - 448)) | (1L << (DEFAULT_DOUBLE_QUOTE - 448)) | (1L << (DEFAULT_FULLTEXT_LANGUAGE - 448)) | (1L << (DEFAULT_LANGUAGE - 448)) | (1L << (DELAY - 448)) | (1L << (DELAYED_DURABILITY - 448)) | (1L << (DELETED - 448)) | (1L << (DENSE_RANK - 448)) | (1L << (DEPENDENTS - 448)) | (1L << (DES - 448)) | (1L << (DESCRIPTION - 448)) | (1L << (DESX - 448)) | (1L << (DHCP - 448)) | (1L << (DIALOG - 448)) | (1L << (DIRECTORY_NAME - 448)) | (1L << (DISABLE - 448)) | (1L << (DISABLE_BROKER - 448)) | (1L << (DISABLED - 448)) | (1L << (DISK_DRIVE - 448)) | (1L << (DOCUMENT - 448)) | (1L << (DYNAMIC - 448)) | (1L << (EMERGENCY - 448)) | (1L << (EMPTY - 448)) | (1L << (ENABLE - 448)) | (1L << (ENABLE_BROKER - 448)) | (1L << (ENCRYPTED_VALUE - 448)) | (1L << (ENCRYPTION - 448)) | (1L << (ENDPOINT_URL - 448)) | (1L << (ERROR_BROKER_CONVERSATIONS - 448)) | (1L << (EXCLUSIVE - 448)) | (1L << (EXECUTABLE - 448)) | (1L << (EXIST - 448)) | (1L << (EXPAND - 448)) | (1L << (EXPIRY_DATE - 448)) | (1L << (EXPLICIT - 448)) | (1L << (FAIL_OPERATION - 448)) | (1L << (FAILOVER_MODE - 448)) | (1L << (FAILURE - 448)) | (1L << (FAILURE_CONDITION_LEVEL - 448)) | (1L << (FAST - 448)) | (1L << (FAST_FORWARD - 448)) | (1L << (FILEGROUP - 448)) | (1L << (FILEGROWTH - 448)) | (1L << (FILEPATH - 448)) | (1L << (FILESTREAM - 448)))) != 0) || ((((_la - 512)) & ~0x3f) == 0 && ((1L << (_la - 512)) & ((1L << (FILTER - 512)) | (1L << (FIRST - 512)) | (1L << (FIRST_VALUE - 512)) | (1L << (FOLLOWING - 512)) | (1L << (FORCE - 512)) | (1L << (FORCE_FAILOVER_ALLOW_DATA_LOSS - 512)) | (1L << (FORCED - 512)) | (1L << (FORMAT - 512)) | (1L << (FORWARD_ONLY - 512)) | (1L << (FULLSCAN - 512)) | (1L << (FULLTEXT - 512)) | (1L << (GB - 512)) | (1L << (GETDATE - 512)) | (1L << (GETUTCDATE - 512)) | (1L << (GLOBAL - 512)) | (1L << (GO - 512)) | (1L << (GROUP_MAX_REQUESTS - 512)) | (1L << (GROUPING - 512)) | (1L << (GROUPING_ID - 512)) | (1L << (HADR - 512)) | (1L << (HASH - 512)) | (1L << (HEALTH_CHECK_TIMEOUT - 512)) | (1L << (HIGH - 512)) | (1L << (HONOR_BROKER_PRIORITY - 512)) | (1L << (HOURS - 512)) | (1L << (IDENTITY_VALUE - 512)) | (1L << (IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX - 512)) | (1L << (IMMEDIATE - 512)) | (1L << (IMPERSONATE - 512)) | (1L << (IMPORTANCE - 512)) | (1L << (INCREMENTAL - 512)) | (1L << (INITIATOR - 512)) | (1L << (INPUT - 512)) | (1L << (INSENSITIVE - 512)) | (1L << (INSERTED - 512)) | (1L << (INT - 512)) | (1L << (IP - 512)) | (1L << (ISOLATION - 512)) | (1L << (KB - 512)) | (1L << (KEEP - 512)) | (1L << (KEEPFIXED - 512)) | (1L << (KEY_SOURCE - 512)) | (1L << (KEYS - 512)) | (1L << (KEYSET - 512)) | (1L << (LAG - 512)) | (1L << (LAST - 512)) | (1L << (LAST_VALUE - 512)) | (1L << (LEAD - 512)) | (1L << (LEVEL - 512)) | (1L << (LIST - 512)) | (1L << (LISTENER - 512)) | (1L << (LISTENER_URL - 512)) | (1L << (LOB_COMPACTION - 512)) | (1L << (LOCAL - 512)) | (1L << (LOCATION - 512)) | (1L << (LOCK - 512)) | (1L << (LOCK_ESCALATION - 512)) | (1L << (LOGIN - 512)) | (1L << (LOOP - 512)) | (1L << (LOW - 512)) | (1L << (MANUAL - 512)) | (1L << (MARK - 512)))) != 0) || ((((_la - 576)) & ~0x3f) == 0 && ((1L << (_la - 576)) & ((1L << (MATERIALIZED - 576)) | (1L << (MAX - 576)) | (1L << (MAX_CPU_PERCENT - 576)) | (1L << (MAX_DOP - 576)) | (1L << (MAX_FILES - 576)) | (1L << (MAX_IOPS_PER_VOLUME - 576)) | (1L << (MAX_MEMORY_PERCENT - 576)) | (1L << (MAX_PROCESSES - 576)) | (1L << (MAX_QUEUE_READERS - 576)) | (1L << (MAX_ROLLOVER_FILES - 576)) | (1L << (MAXDOP - 576)) | (1L << (MAXRECURSION - 576)) | (1L << (MAXSIZE - 576)) | (1L << (MB - 576)) | (1L << (MEDIUM - 576)) | (1L << (MEMORY_OPTIMIZED_DATA - 576)) | (1L << (MESSAGE - 576)) | (1L << (MIN - 576)) | (1L << (MIN_ACTIVE_ROWVERSION - 576)) | (1L << (MIN_CPU_PERCENT - 576)) | (1L << (MIN_IOPS_PER_VOLUME - 576)) | (1L << (MIN_MEMORY_PERCENT - 576)) | (1L << (MINUTES - 576)) | (1L << (MIRROR_ADDRESS - 576)) | (1L << (MIXED_PAGE_ALLOCATION - 576)) | (1L << (MODE - 576)) | (1L << (MODIFY - 576)) | (1L << (MOVE - 576)) | (1L << (MULTI_USER - 576)) | (1L << (NAME - 576)) | (1L << (NESTED_TRIGGERS - 576)) | (1L << (NEW_ACCOUNT - 576)) | (1L << (NEW_BROKER - 576)) | (1L << (NEW_PASSWORD - 576)) | (1L << (NEXT - 576)) | (1L << (NO - 576)) | (1L << (NO_TRUNCATE - 576)) | (1L << (NO_WAIT - 576)) | (1L << (NOCOUNT - 576)) | (1L << (NODES - 576)) | (1L << (NOEXPAND - 576)) | (1L << (NON_TRANSACTED_ACCESS - 576)) | (1L << (NORECOMPUTE - 576)) | (1L << (NORECOVERY - 576)) | (1L << (NOWAIT - 576)) | (1L << (NTILE - 576)) | (1L << (NUMANODE - 576)) | (1L << (NUMBER - 576)) | (1L << (NUMERIC_ROUNDABORT - 576)) | (1L << (OBJECT - 576)) | (1L << (OFFLINE - 576)) | (1L << (OFFSET - 576)) | (1L << (OLD_ACCOUNT - 576)) | (1L << (ONLINE - 576)) | (1L << (ONLY - 576)) | (1L << (OPEN_EXISTING - 576)) | (1L << (OPTIMISTIC - 576)) | (1L << (OPTIMIZE - 576)) | (1L << (OUT - 576)) | (1L << (OUTPUT - 576)) | (1L << (OWNER - 576)) | (1L << (PAGE_VERIFY - 576)) | (1L << (PARAMETERIZATION - 576)) | (1L << (PARTITION - 576)))) != 0) || ((((_la - 640)) & ~0x3f) == 0 && ((1L << (_la - 640)) & ((1L << (PARTITIONS - 640)) | (1L << (PARTNER - 640)) | (1L << (PATH - 640)) | (1L << (POISON_MESSAGE_HANDLING - 640)) | (1L << (POOL - 640)) | (1L << (PORT - 640)) | (1L << (PRECEDING - 640)) | (1L << (PRIMARY_ROLE - 640)) | (1L << (PRIOR - 640)) | (1L << (PRIORITY - 640)) | (1L << (PRIORITY_LEVEL - 640)) | (1L << (PRIVATE - 640)) | (1L << (PRIVATE_KEY - 640)) | (1L << (PRIVILEGES - 640)) | (1L << (PROCEDURE_NAME - 640)) | (1L << (PROPERTY - 640)) | (1L << (PROVIDER - 640)) | (1L << (PROVIDER_KEY_NAME - 640)) | (1L << (QUERY - 640)) | (1L << (QUEUE - 640)) | (1L << (QUEUE_DELAY - 640)) | (1L << (QUOTED_IDENTIFIER - 640)) | (1L << (RANGE - 640)) | (1L << (RANK - 640)) | (1L << (RC2 - 640)) | (1L << (RC4 - 640)) | (1L << (RC4_128 - 640)) | (1L << (READ_COMMITTED_SNAPSHOT - 640)) | (1L << (READ_ONLY - 640)) | (1L << (READ_ONLY_ROUTING_LIST - 640)) | (1L << (READ_WRITE - 640)) | (1L << (READONLY - 640)) | (1L << (REBUILD - 640)) | (1L << (RECEIVE - 640)) | (1L << (RECOMPILE - 640)) | (1L << (RECOVERY - 640)) | (1L << (RECURSIVE_TRIGGERS - 640)) | (1L << (RELATIVE - 640)) | (1L << (REMOTE - 640)) | (1L << (REMOTE_SERVICE_NAME - 640)) | (1L << (REMOVE - 640)) | (1L << (REORGANIZE - 640)) | (1L << (REPEATABLE - 640)) | (1L << (REPLICA - 640)) | (1L << (REQUEST_MAX_CPU_TIME_SEC - 640)) | (1L << (REQUEST_MAX_MEMORY_GRANT_PERCENT - 640)) | (1L << (REQUEST_MEMORY_GRANT_TIMEOUT_SEC - 640)) | (1L << (REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT - 640)) | (1L << (RESERVE_DISK_SPACE - 640)) | (1L << (RESOURCE - 640)) | (1L << (RESOURCE_MANAGER_LOCATION - 640)) | (1L << (RESTRICTED_USER - 640)) | (1L << (RETENTION - 640)) | (1L << (ROBUST - 640)) | (1L << (ROOT - 640)) | (1L << (ROUTE - 640)) | (1L << (ROW - 640)) | (1L << (ROW_NUMBER - 640)) | (1L << (ROWGUID - 640)) | (1L << (ROWS - 640)) | (1L << (SAMPLE - 640)) | (1L << (SCHEMABINDING - 640)) | (1L << (SCOPED - 640)) | (1L << (SCROLL - 640)))) != 0) || ((((_la - 704)) & ~0x3f) == 0 && ((1L << (_la - 704)) & ((1L << (SCROLL_LOCKS - 704)) | (1L << (SEARCH - 704)) | (1L << (SECONDARY - 704)) | (1L << (SECONDARY_ONLY - 704)) | (1L << (SECONDARY_ROLE - 704)) | (1L << (SECONDS - 704)) | (1L << (SECRET - 704)) | (1L << (SECURITY_LOG - 704)) | (1L << (SEEDING_MODE - 704)) | (1L << (SELF - 704)) | (1L << (SEMI_SENSITIVE - 704)) | (1L << (SEND - 704)) | (1L << (SENT - 704)) | (1L << (SERIALIZABLE - 704)) | (1L << (SESSION_TIMEOUT - 704)) | (1L << (SETERROR - 704)) | (1L << (SHARE - 704)) | (1L << (SHOWPLAN - 704)) | (1L << (SIGNATURE - 704)) | (1L << (SIMPLE - 704)) | (1L << (SINGLE_USER - 704)) | (1L << (SIZE - 704)) | (1L << (SMALLINT - 704)) | (1L << (SNAPSHOT - 704)) | (1L << (SPATIAL_WINDOW_MAX_CELLS - 704)) | (1L << (STANDBY - 704)) | (1L << (START_DATE - 704)) | (1L << (STATIC - 704)) | (1L << (STATS_STREAM - 704)) | (1L << (STATUS - 704)) | (1L << (STDEV - 704)) | (1L << (STDEVP - 704)) | (1L << (STOPLIST - 704)) | (1L << (STUFF - 704)) | (1L << (SUBJECT - 704)) | (1L << (SUM - 704)) | (1L << (SUSPEND - 704)) | (1L << (SYMMETRIC - 704)) | (1L << (SYNCHRONOUS_COMMIT - 704)) | (1L << (SYNONYM - 704)) | (1L << (TAKE - 704)) | (1L << (TARGET_RECOVERY_TIME - 704)) | (1L << (TB - 704)) | (1L << (TEXTIMAGE_ON - 704)) | (1L << (THROW - 704)) | (1L << (TIES - 704)) | (1L << (TIME - 704)) | (1L << (TIMEOUT - 704)) | (1L << (TIMER - 704)) | (1L << (TINYINT - 704)) | (1L << (TORN_PAGE_DETECTION - 704)) | (1L << (TRANSFORM_NOISE_WORDS - 704)) | (1L << (TRIPLE_DES - 704)) | (1L << (TRIPLE_DES_3KEY - 704)) | (1L << (TRUSTWORTHY - 704)) | (1L << (TRY - 704)) | (1L << (TSQL - 704)) | (1L << (TWO_DIGIT_YEAR_CUTOFF - 704)) | (1L << (TYPE - 704)) | (1L << (TYPE_WARNING - 704)) | (1L << (UNBOUNDED - 704)) | (1L << (UNCOMMITTED - 704)) | (1L << (UNKNOWN - 704)) | (1L << (UNLIMITED - 704)))) != 0) || ((((_la - 768)) & ~0x3f) == 0 && ((1L << (_la - 768)) & ((1L << (USING - 768)) | (1L << (VALID_XML - 768)) | (1L << (VALIDATION - 768)) | (1L << (VALUE - 768)) | (1L << (VAR - 768)) | (1L << (VARP - 768)) | (1L << (VIEW_METADATA - 768)) | (1L << (VIEWS - 768)) | (1L << (WAIT - 768)) | (1L << (WELL_FORMED_XML - 768)) | (1L << (WORK - 768)) | (1L << (WORKLOAD - 768)) | (1L << (XML - 768)) | (1L << (XMLNAMESPACES - 768)) | (1L << (DOUBLE_QUOTE_ID - 768)) | (1L << (SQUARE_BRACKET_ID - 768)) | (1L << (ID - 768)) | (1L << (COMMA - 768)))) != 0) );
				setState(4342);
				match(RR_BRACKET);
				setState(4343);
				match(ON);
				setState(4344);
				((Create_security_policyContext)_localctx).table_schema_name = id();
				setState(4345);
				match(DOT);
				setState(4346);
				((Create_security_policyContext)_localctx).name = id();
				setState(4359);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,475,_ctx);
				while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
					if ( _alt==1 ) {
						{
						setState(4357);
						_errHandler.sync(this);
						switch ( getInterpreter().adaptivePredict(_input,474,_ctx) ) {
						case 1:
							{
							setState(4348);
							_errHandler.sync(this);
							_la = _input.LA(1);
							if (_la==COMMA) {
								{
								setState(4347);
								match(COMMA);
								}
							}

							setState(4350);
							match(AFTER);
							setState(4351);
							_la = _input.LA(1);
							if ( !(_la==INSERT || _la==UPDATE) ) {
							_errHandler.recoverInline(this);
							}
							else {
								if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
								_errHandler.reportMatch(this);
								consume();
							}
							}
							break;
						case 2:
							{
							setState(4353);
							_errHandler.sync(this);
							_la = _input.LA(1);
							if (_la==COMMA) {
								{
								setState(4352);
								match(COMMA);
								}
							}

							setState(4355);
							match(BEFORE);
							setState(4356);
							_la = _input.LA(1);
							if ( !(_la==DELETE || _la==UPDATE) ) {
							_errHandler.recoverInline(this);
							}
							else {
								if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
								_errHandler.reportMatch(this);
								consume();
							}
							}
							break;
						}
						} 
					}
					setState(4361);
					_errHandler.sync(this);
					_alt = getInterpreter().adaptivePredict(_input,475,_ctx);
				}
				}
				}
				setState(4364); 
				_errHandler.sync(this);
				_la = _input.LA(1);
			} while ( _la==ADD || _la==COMMA );
			setState(4376);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,478,_ctx) ) {
			case 1:
				{
				setState(4366);
				match(WITH);
				setState(4367);
				match(LR_BRACKET);
				setState(4368);
				match(STATE);
				setState(4369);
				match(EQUAL);
				setState(4370);
				_la = _input.LA(1);
				if ( !(_la==OFF || _la==ON) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(4373);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==SCHEMABINDING) {
					{
					setState(4371);
					match(SCHEMABINDING);
					setState(4372);
					_la = _input.LA(1);
					if ( !(_la==OFF || _la==ON) ) {
					_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					}
				}

				setState(4375);
				match(RR_BRACKET);
				}
				break;
			}
			setState(4381);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==NOT) {
				{
				setState(4378);
				match(NOT);
				setState(4379);
				match(FOR);
				setState(4380);
				match(REPLICATION);
				}
			}

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

	public static class Alter_sequenceContext extends ParserRuleContext {
		public IdContext schema_name;
		public IdContext sequence_name;
		public Token sequnce_increment;
		public TerminalNode ALTER() { return getToken(TSqlParser.ALTER, 0); }
		public TerminalNode SEQUENCE() { return getToken(TSqlParser.SEQUENCE, 0); }
		public List id() {
			return getRuleContexts(IdContext.class);
		}
		public IdContext id(int i) {
			return getRuleContext(IdContext.class,i);
		}
		public TerminalNode DOT() { return getToken(TSqlParser.DOT, 0); }
		public TerminalNode RESTART() { return getToken(TSqlParser.RESTART, 0); }
		public TerminalNode INCREMENT() { return getToken(TSqlParser.INCREMENT, 0); }
		public TerminalNode BY() { return getToken(TSqlParser.BY, 0); }
		public TerminalNode MINVALUE() { return getToken(TSqlParser.MINVALUE, 0); }
		public List DECIMAL() { return getTokens(TSqlParser.DECIMAL); }
		public TerminalNode DECIMAL(int i) {
			return getToken(TSqlParser.DECIMAL, i);
		}
		public List NO() { return getTokens(TSqlParser.NO); }
		public TerminalNode NO(int i) {
			return getToken(TSqlParser.NO, i);
		}
		public TerminalNode MAXVALUE() { return getToken(TSqlParser.MAXVALUE, 0); }
		public TerminalNode CYCLE() { return getToken(TSqlParser.CYCLE, 0); }
		public TerminalNode CACHE() { return getToken(TSqlParser.CACHE, 0); }
		public TerminalNode WITH() { return getToken(TSqlParser.WITH, 0); }
		public Alter_sequenceContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alter_sequence; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterAlter_sequence(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitAlter_sequence(this);
		}
	}

	public final Alter_sequenceContext alter_sequence() throws RecognitionException {
		Alter_sequenceContext _localctx = new Alter_sequenceContext(_ctx, getState());
		enterRule(_localctx, 366, RULE_alter_sequence);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4383);
			match(ALTER);
			setState(4384);
			match(SEQUENCE);
			setState(4388);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,480,_ctx) ) {
			case 1:
				{
				setState(4385);
				((Alter_sequenceContext)_localctx).schema_name = id();
				setState(4386);
				match(DOT);
				}
				break;
			}
			setState(4390);
			((Alter_sequenceContext)_localctx).sequence_name = id();
			setState(4396);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==RESTART) {
				{
				setState(4391);
				match(RESTART);
				setState(4394);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,481,_ctx) ) {
				case 1:
					{
					setState(4392);
					match(WITH);
					setState(4393);
					match(DECIMAL);
					}
					break;
				}
				}
			}

			setState(4401);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==INCREMENT) {
				{
				setState(4398);
				match(INCREMENT);
				setState(4399);
				match(BY);
				setState(4400);
				((Alter_sequenceContext)_localctx).sequnce_increment = match(DECIMAL);
				}
			}

			setState(4407);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,484,_ctx) ) {
			case 1:
				{
				setState(4403);
				match(MINVALUE);
				setState(4404);
				match(DECIMAL);
				}
				break;
			case 2:
				{
				setState(4405);
				match(NO);
				setState(4406);
				match(MINVALUE);
				}
				break;
			}
			setState(4413);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,485,_ctx) ) {
			case 1:
				{
				setState(4409);
				match(MAXVALUE);
				setState(4410);
				match(DECIMAL);
				}
				break;
			case 2:
				{
				setState(4411);
				match(NO);
				setState(4412);
				match(MAXVALUE);
				}
				break;
			}
			setState(4418);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,486,_ctx) ) {
			case 1:
				{
				setState(4415);
				match(CYCLE);
				}
				break;
			case 2:
				{
				setState(4416);
				match(NO);
				setState(4417);
				match(CYCLE);
				}
				break;
			}
			setState(4424);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,487,_ctx) ) {
			case 1:
				{
				setState(4420);
				match(CACHE);
				setState(4421);
				match(DECIMAL);
				}
				break;
			case 2:
				{
				setState(4422);
				match(NO);
				setState(4423);
				match(CACHE);
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Create_sequenceContext extends ParserRuleContext {
		public IdContext schema_name;
		public IdContext sequence_name;
		public TerminalNode CREATE() { return getToken(TSqlParser.CREATE, 0); }
		public TerminalNode SEQUENCE() { return getToken(TSqlParser.SEQUENCE, 0); }
		public List id() {
			return getRuleContexts(IdContext.class);
		}
		public IdContext id(int i) {
			return getRuleContext(IdContext.class,i);
		}
		public TerminalNode DOT() { return getToken(TSqlParser.DOT, 0); }
		public TerminalNode AS() { return getToken(TSqlParser.AS, 0); }
		public Data_typeContext data_type() {
			return getRuleContext(Data_typeContext.class,0);
		}
		public TerminalNode START() { return getToken(TSqlParser.START, 0); }
		public TerminalNode WITH() { return getToken(TSqlParser.WITH, 0); }
		public List DECIMAL() { return getTokens(TSqlParser.DECIMAL); }
		public TerminalNode DECIMAL(int i) {
			return getToken(TSqlParser.DECIMAL, i);
		}
		public TerminalNode INCREMENT() { return getToken(TSqlParser.INCREMENT, 0); }
		public TerminalNode BY() { return getToken(TSqlParser.BY, 0); }
		public TerminalNode MINVALUE() { return getToken(TSqlParser.MINVALUE, 0); }
		public List NO() { return getTokens(TSqlParser.NO); }
		public TerminalNode NO(int i) {
			return getToken(TSqlParser.NO, i);
		}
		public TerminalNode MAXVALUE() { return getToken(TSqlParser.MAXVALUE, 0); }
		public TerminalNode CYCLE() { return getToken(TSqlParser.CYCLE, 0); }
		public TerminalNode CACHE() { return getToken(TSqlParser.CACHE, 0); }
		public TerminalNode MINUS() { return getToken(TSqlParser.MINUS, 0); }
		public Create_sequenceContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_create_sequence; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterCreate_sequence(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitCreate_sequence(this);
		}
	}

	public final Create_sequenceContext create_sequence() throws RecognitionException {
		Create_sequenceContext _localctx = new Create_sequenceContext(_ctx, getState());
		enterRule(_localctx, 368, RULE_create_sequence);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4426);
			match(CREATE);
			setState(4427);
			match(SEQUENCE);
			setState(4431);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,488,_ctx) ) {
			case 1:
				{
				setState(4428);
				((Create_sequenceContext)_localctx).schema_name = id();
				setState(4429);
				match(DOT);
				}
				break;
			}
			setState(4433);
			((Create_sequenceContext)_localctx).sequence_name = id();
			setState(4436);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==AS) {
				{
				setState(4434);
				match(AS);
				setState(4435);
				data_type();
				}
			}

			setState(4441);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,490,_ctx) ) {
			case 1:
				{
				setState(4438);
				match(START);
				setState(4439);
				match(WITH);
				setState(4440);
				match(DECIMAL);
				}
				break;
			}
			setState(4449);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==INCREMENT) {
				{
				setState(4443);
				match(INCREMENT);
				setState(4444);
				match(BY);
				setState(4446);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==MINUS) {
					{
					setState(4445);
					match(MINUS);
					}
				}

				setState(4448);
				match(DECIMAL);
				}
			}

			setState(4457);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,494,_ctx) ) {
			case 1:
				{
				setState(4451);
				match(MINVALUE);
				setState(4453);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,493,_ctx) ) {
				case 1:
					{
					setState(4452);
					match(DECIMAL);
					}
					break;
				}
				}
				break;
			case 2:
				{
				setState(4455);
				match(NO);
				setState(4456);
				match(MINVALUE);
				}
				break;
			}
			setState(4465);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,496,_ctx) ) {
			case 1:
				{
				setState(4459);
				match(MAXVALUE);
				setState(4461);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,495,_ctx) ) {
				case 1:
					{
					setState(4460);
					match(DECIMAL);
					}
					break;
				}
				}
				break;
			case 2:
				{
				setState(4463);
				match(NO);
				setState(4464);
				match(MAXVALUE);
				}
				break;
			}
			setState(4470);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,497,_ctx) ) {
			case 1:
				{
				setState(4467);
				match(CYCLE);
				}
				break;
			case 2:
				{
				setState(4468);
				match(NO);
				setState(4469);
				match(CYCLE);
				}
				break;
			}
			setState(4478);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,499,_ctx) ) {
			case 1:
				{
				setState(4472);
				match(CACHE);
				setState(4474);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,498,_ctx) ) {
				case 1:
					{
					setState(4473);
					match(DECIMAL);
					}
					break;
				}
				}
				break;
			case 2:
				{
				setState(4476);
				match(NO);
				setState(4477);
				match(CACHE);
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Alter_server_auditContext extends ParserRuleContext {
		public IdContext audit_name;
		public Token filepath;
		public Token max_rollover_files;
		public Token max_files;
		public Token queue_delay;
		public IdContext event_field_name;
		public IdContext new_audit_name;
		public TerminalNode ALTER() { return getToken(TSqlParser.ALTER, 0); }
		public TerminalNode SERVER() { return getToken(TSqlParser.SERVER, 0); }
		public TerminalNode AUDIT() { return getToken(TSqlParser.AUDIT, 0); }
		public List id() {
			return getRuleContexts(IdContext.class);
		}
		public IdContext id(int i) {
			return getRuleContext(IdContext.class,i);
		}
		public TerminalNode REMOVE() { return getToken(TSqlParser.REMOVE, 0); }
		public TerminalNode WHERE() { return getToken(TSqlParser.WHERE, 0); }
		public TerminalNode MODIFY() { return getToken(TSqlParser.MODIFY, 0); }
		public TerminalNode NAME() { return getToken(TSqlParser.NAME, 0); }
		public List EQUAL() { return getTokens(TSqlParser.EQUAL); }
		public TerminalNode EQUAL(int i) {
			return getToken(TSqlParser.EQUAL, i);
		}
		public TerminalNode TO() { return getToken(TSqlParser.TO, 0); }
		public TerminalNode WITH() { return getToken(TSqlParser.WITH, 0); }
		public List LR_BRACKET() { return getTokens(TSqlParser.LR_BRACKET); }
		public TerminalNode LR_BRACKET(int i) {
			return getToken(TSqlParser.LR_BRACKET, i);
		}
		public List RR_BRACKET() { return getTokens(TSqlParser.RR_BRACKET); }
		public TerminalNode RR_BRACKET(int i) {
			return getToken(TSqlParser.RR_BRACKET, i);
		}
		public TerminalNode FILE() { return getToken(TSqlParser.FILE, 0); }
		public TerminalNode APPLICATION_LOG() { return getToken(TSqlParser.APPLICATION_LOG, 0); }
		public TerminalNode SECURITY_LOG() { return getToken(TSqlParser.SECURITY_LOG, 0); }
		public List QUEUE_DELAY() { return getTokens(TSqlParser.QUEUE_DELAY); }
		public TerminalNode QUEUE_DELAY(int i) {
			return getToken(TSqlParser.QUEUE_DELAY, i);
		}
		public List ON_FAILURE() { return getTokens(TSqlParser.ON_FAILURE); }
		public TerminalNode ON_FAILURE(int i) {
			return getToken(TSqlParser.ON_FAILURE, i);
		}
		public List STATE() { return getTokens(TSqlParser.STATE); }
		public TerminalNode STATE(int i) {
			return getToken(TSqlParser.STATE, i);
		}
		public List DECIMAL() { return getTokens(TSqlParser.DECIMAL); }
		public TerminalNode DECIMAL(int i) {
			return getToken(TSqlParser.DECIMAL, i);
		}
		public List STRING() { return getTokens(TSqlParser.STRING); }
		public TerminalNode STRING(int i) {
			return getToken(TSqlParser.STRING, i);
		}
		public TerminalNode AND() { return getToken(TSqlParser.AND, 0); }
		public TerminalNode OR() { return getToken(TSqlParser.OR, 0); }
		public List CONTINUE() { return getTokens(TSqlParser.CONTINUE); }
		public TerminalNode CONTINUE(int i) {
			return getToken(TSqlParser.CONTINUE, i);
		}
		public List SHUTDOWN() { return getTokens(TSqlParser.SHUTDOWN); }
		public TerminalNode SHUTDOWN(int i) {
			return getToken(TSqlParser.SHUTDOWN, i);
		}
		public List FAIL_OPERATION() { return getTokens(TSqlParser.FAIL_OPERATION); }
		public TerminalNode FAIL_OPERATION(int i) {
			return getToken(TSqlParser.FAIL_OPERATION, i);
		}
		public List ON() { return getTokens(TSqlParser.ON); }
		public TerminalNode ON(int i) {
			return getToken(TSqlParser.ON, i);
		}
		public List OFF() { return getTokens(TSqlParser.OFF); }
		public TerminalNode OFF(int i) {
			return getToken(TSqlParser.OFF, i);
		}
		public TerminalNode GREATER() { return getToken(TSqlParser.GREATER, 0); }
		public TerminalNode LESS() { return getToken(TSqlParser.LESS, 0); }
		public List COMMA() { return getTokens(TSqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(TSqlParser.COMMA, i);
		}
		public TerminalNode NOT() { return getToken(TSqlParser.NOT, 0); }
		public TerminalNode EXCLAMATION() { return getToken(TSqlParser.EXCLAMATION, 0); }
		public List FILEPATH() { return getTokens(TSqlParser.FILEPATH); }
		public TerminalNode FILEPATH(int i) {
			return getToken(TSqlParser.FILEPATH, i);
		}
		public List MAXSIZE() { return getTokens(TSqlParser.MAXSIZE); }
		public TerminalNode MAXSIZE(int i) {
			return getToken(TSqlParser.MAXSIZE, i);
		}
		public List MAX_ROLLOVER_FILES() { return getTokens(TSqlParser.MAX_ROLLOVER_FILES); }
		public TerminalNode MAX_ROLLOVER_FILES(int i) {
			return getToken(TSqlParser.MAX_ROLLOVER_FILES, i);
		}
		public List MAX_FILES() { return getTokens(TSqlParser.MAX_FILES); }
		public TerminalNode MAX_FILES(int i) {
			return getToken(TSqlParser.MAX_FILES, i);
		}
		public List RESERVE_DISK_SPACE() { return getTokens(TSqlParser.RESERVE_DISK_SPACE); }
		public TerminalNode RESERVE_DISK_SPACE(int i) {
			return getToken(TSqlParser.RESERVE_DISK_SPACE, i);
		}
		public List UNLIMITED() { return getTokens(TSqlParser.UNLIMITED); }
		public TerminalNode UNLIMITED(int i) {
			return getToken(TSqlParser.UNLIMITED, i);
		}
		public List MB() { return getTokens(TSqlParser.MB); }
		public TerminalNode MB(int i) {
			return getToken(TSqlParser.MB, i);
		}
		public List GB() { return getTokens(TSqlParser.GB); }
		public TerminalNode GB(int i) {
			return getToken(TSqlParser.GB, i);
		}
		public List TB() { return getTokens(TSqlParser.TB); }
		public TerminalNode TB(int i) {
			return getToken(TSqlParser.TB, i);
		}
		public Alter_server_auditContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alter_server_audit; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterAlter_server_audit(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitAlter_server_audit(this);
		}
	}

	public final Alter_server_auditContext alter_server_audit() throws RecognitionException {
		Alter_server_auditContext _localctx = new Alter_server_auditContext(_ctx, getState());
		enterRule(_localctx, 370, RULE_alter_server_audit);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4480);
			match(ALTER);
			setState(4481);
			match(SERVER);
			setState(4482);
			match(AUDIT);
			setState(4483);
			((Alter_server_auditContext)_localctx).audit_name = id();
			setState(4615);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,524,_ctx) ) {
			case 1:
				{
				setState(4531);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==TO) {
					{
					setState(4484);
					match(TO);
					setState(4529);
					_errHandler.sync(this);
					switch (_input.LA(1)) {
					case FILE:
						{
						setState(4485);
						match(FILE);
						{
						setState(4486);
						match(LR_BRACKET);
						setState(4523);
						_errHandler.sync(this);
						_la = _input.LA(1);
						while (_la==FILEPATH || ((((_la - 580)) & ~0x3f) == 0 && ((1L << (_la - 580)) & ((1L << (MAX_FILES - 580)) | (1L << (MAX_ROLLOVER_FILES - 580)) | (1L << (MAXSIZE - 580)))) != 0) || _la==RESERVE_DISK_SPACE || _la==COMMA) {
							{
							setState(4521);
							_errHandler.sync(this);
							switch ( getInterpreter().adaptivePredict(_input,506,_ctx) ) {
							case 1:
								{
								setState(4488);
								_errHandler.sync(this);
								_la = _input.LA(1);
								if (_la==COMMA) {
									{
									setState(4487);
									match(COMMA);
									}
								}

								setState(4490);
								match(FILEPATH);
								setState(4491);
								match(EQUAL);
								setState(4492);
								((Alter_server_auditContext)_localctx).filepath = match(STRING);
								}
								break;
							case 2:
								{
								setState(4494);
								_errHandler.sync(this);
								_la = _input.LA(1);
								if (_la==COMMA) {
									{
									setState(4493);
									match(COMMA);
									}
								}

								setState(4496);
								match(MAXSIZE);
								setState(4497);
								match(EQUAL);
								setState(4501);
								_errHandler.sync(this);
								switch (_input.LA(1)) {
								case DECIMAL:
									{
									setState(4498);
									match(DECIMAL);
									setState(4499);
									_la = _input.LA(1);
									if ( !(_la==GB || _la==MB || _la==TB) ) {
									_errHandler.recoverInline(this);
									}
									else {
										if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
										_errHandler.reportMatch(this);
										consume();
									}
									}
									break;
								case UNLIMITED:
									{
									setState(4500);
									match(UNLIMITED);
									}
									break;
								default:
									throw new NoViableAltException(this);
								}
								}
								break;
							case 3:
								{
								setState(4504);
								_errHandler.sync(this);
								_la = _input.LA(1);
								if (_la==COMMA) {
									{
									setState(4503);
									match(COMMA);
									}
								}

								setState(4506);
								match(MAX_ROLLOVER_FILES);
								setState(4507);
								match(EQUAL);
								setState(4508);
								((Alter_server_auditContext)_localctx).max_rollover_files = _input.LT(1);
								_la = _input.LA(1);
								if ( !(_la==UNLIMITED || _la==DECIMAL) ) {
									((Alter_server_auditContext)_localctx).max_rollover_files = (Token)_errHandler.recoverInline(this);
								}
								else {
									if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
									_errHandler.reportMatch(this);
									consume();
								}
								}
								break;
							case 4:
								{
								setState(4510);
								_errHandler.sync(this);
								_la = _input.LA(1);
								if (_la==COMMA) {
									{
									setState(4509);
									match(COMMA);
									}
								}

								setState(4512);
								match(MAX_FILES);
								setState(4513);
								match(EQUAL);
								setState(4514);
								((Alter_server_auditContext)_localctx).max_files = match(DECIMAL);
								}
								break;
							case 5:
								{
								setState(4516);
								_errHandler.sync(this);
								_la = _input.LA(1);
								if (_la==COMMA) {
									{
									setState(4515);
									match(COMMA);
									}
								}

								setState(4518);
								match(RESERVE_DISK_SPACE);
								setState(4519);
								match(EQUAL);
								setState(4520);
								_la = _input.LA(1);
								if ( !(_la==OFF || _la==ON) ) {
								_errHandler.recoverInline(this);
								}
								else {
									if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
									_errHandler.reportMatch(this);
									consume();
								}
								}
								break;
							}
							}
							setState(4525);
							_errHandler.sync(this);
							_la = _input.LA(1);
						}
						setState(4526);
						match(RR_BRACKET);
						}
						}
						break;
					case APPLICATION_LOG:
						{
						setState(4527);
						match(APPLICATION_LOG);
						}
						break;
					case SECURITY_LOG:
						{
						setState(4528);
						match(SECURITY_LOG);
						}
						break;
					default:
						throw new NoViableAltException(this);
					}
					}
				}

				setState(4559);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,515,_ctx) ) {
				case 1:
					{
					setState(4533);
					match(WITH);
					setState(4534);
					match(LR_BRACKET);
					setState(4555);
					_errHandler.sync(this);
					_la = _input.LA(1);
					while (_la==ON_FAILURE || _la==STATE || _la==QUEUE_DELAY || _la==COMMA) {
						{
						setState(4553);
						_errHandler.sync(this);
						switch ( getInterpreter().adaptivePredict(_input,513,_ctx) ) {
						case 1:
							{
							setState(4536);
							_errHandler.sync(this);
							_la = _input.LA(1);
							if (_la==COMMA) {
								{
								setState(4535);
								match(COMMA);
								}
							}

							setState(4538);
							match(QUEUE_DELAY);
							setState(4539);
							match(EQUAL);
							setState(4540);
							((Alter_server_auditContext)_localctx).queue_delay = match(DECIMAL);
							}
							break;
						case 2:
							{
							setState(4542);
							_errHandler.sync(this);
							_la = _input.LA(1);
							if (_la==COMMA) {
								{
								setState(4541);
								match(COMMA);
								}
							}

							setState(4544);
							match(ON_FAILURE);
							setState(4545);
							match(EQUAL);
							setState(4546);
							_la = _input.LA(1);
							if ( !(_la==CONTINUE || _la==SHUTDOWN || _la==FAIL_OPERATION) ) {
							_errHandler.recoverInline(this);
							}
							else {
								if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
								_errHandler.reportMatch(this);
								consume();
							}
							}
							break;
						case 3:
							{
							setState(4548);
							_errHandler.sync(this);
							_la = _input.LA(1);
							if (_la==COMMA) {
								{
								setState(4547);
								match(COMMA);
								}
							}

							setState(4550);
							match(STATE);
							setState(4551);
							match(EQUAL);
							setState(4552);
							_la = _input.LA(1);
							if ( !(_la==OFF || _la==ON) ) {
							_errHandler.recoverInline(this);
							}
							else {
								if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
								_errHandler.reportMatch(this);
								consume();
							}
							}
							break;
						}
						}
						setState(4557);
						_errHandler.sync(this);
						_la = _input.LA(1);
					}
					setState(4558);
					match(RR_BRACKET);
					}
					break;
				}
				setState(4607);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==WHERE) {
					{
					setState(4561);
					match(WHERE);
					setState(4605);
					_errHandler.sync(this);
					switch ( getInterpreter().adaptivePredict(_input,522,_ctx) ) {
					case 1:
						{
						setState(4563);
						_errHandler.sync(this);
						_la = _input.LA(1);
						if (_la==COMMA) {
							{
							setState(4562);
							match(COMMA);
							}
						}

						{
						setState(4566);
						_errHandler.sync(this);
						_la = _input.LA(1);
						if (_la==NOT) {
							{
							setState(4565);
							match(NOT);
							}
						}

						}
						setState(4568);
						((Alter_server_auditContext)_localctx).event_field_name = id();
						setState(4580);
						_errHandler.sync(this);
						switch ( getInterpreter().adaptivePredict(_input,518,_ctx) ) {
						case 1:
							{
							setState(4569);
							match(EQUAL);
							}
							break;
						case 2:
							{
							{
							setState(4570);
							match(LESS);
							setState(4571);
							match(GREATER);
							}
							}
							break;
						case 3:
							{
							{
							setState(4572);
							match(EXCLAMATION);
							setState(4573);
							match(EQUAL);
							}
							}
							break;
						case 4:
							{
							setState(4574);
							match(GREATER);
							}
							break;
						case 5:
							{
							{
							setState(4575);
							match(GREATER);
							setState(4576);
							match(EQUAL);
							}
							}
							break;
						case 6:
							{
							setState(4577);
							match(LESS);
							}
							break;
						case 7:
							{
							setState(4578);
							match(LESS);
							setState(4579);
							match(EQUAL);
							}
							break;
						}
						setState(4582);
						_la = _input.LA(1);
						if ( !(_la==DECIMAL || _la==STRING) ) {
						_errHandler.recoverInline(this);
						}
						else {
							if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
							_errHandler.reportMatch(this);
							consume();
						}
						}
						break;
					case 2:
						{
						setState(4585);
						_errHandler.sync(this);
						_la = _input.LA(1);
						if (_la==COMMA) {
							{
							setState(4584);
							match(COMMA);
							}
						}

						setState(4587);
						_la = _input.LA(1);
						if ( !(_la==AND || _la==OR) ) {
						_errHandler.recoverInline(this);
						}
						else {
							if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
							_errHandler.reportMatch(this);
							consume();
						}
						setState(4589);
						_errHandler.sync(this);
						_la = _input.LA(1);
						if (_la==NOT) {
							{
							setState(4588);
							match(NOT);
							}
						}

						setState(4602);
						_errHandler.sync(this);
						switch ( getInterpreter().adaptivePredict(_input,521,_ctx) ) {
						case 1:
							{
							setState(4591);
							match(EQUAL);
							}
							break;
						case 2:
							{
							{
							setState(4592);
							match(LESS);
							setState(4593);
							match(GREATER);
							}
							}
							break;
						case 3:
							{
							{
							setState(4594);
							match(EXCLAMATION);
							setState(4595);
							match(EQUAL);
							}
							}
							break;
						case 4:
							{
							setState(4596);
							match(GREATER);
							}
							break;
						case 5:
							{
							{
							setState(4597);
							match(GREATER);
							setState(4598);
							match(EQUAL);
							}
							}
							break;
						case 6:
							{
							setState(4599);
							match(LESS);
							}
							break;
						case 7:
							{
							setState(4600);
							match(LESS);
							setState(4601);
							match(EQUAL);
							}
							break;
						}
						setState(4604);
						_la = _input.LA(1);
						if ( !(_la==DECIMAL || _la==STRING) ) {
						_errHandler.recoverInline(this);
						}
						else {
							if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
							_errHandler.reportMatch(this);
							consume();
						}
						}
						break;
					}
					}
				}

				}
				break;
			case 2:
				{
				setState(4609);
				match(REMOVE);
				setState(4610);
				match(WHERE);
				}
				break;
			case 3:
				{
				setState(4611);
				match(MODIFY);
				setState(4612);
				match(NAME);
				setState(4613);
				match(EQUAL);
				setState(4614);
				((Alter_server_auditContext)_localctx).new_audit_name = id();
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Create_server_auditContext extends ParserRuleContext {
		public IdContext audit_name;
		public Token filepath;
		public Token max_rollover_files;
		public Token max_files;
		public Token queue_delay;
		public IdContext audit_guid;
		public IdContext event_field_name;
		public IdContext new_audit_name;
		public TerminalNode CREATE() { return getToken(TSqlParser.CREATE, 0); }
		public TerminalNode SERVER() { return getToken(TSqlParser.SERVER, 0); }
		public TerminalNode AUDIT() { return getToken(TSqlParser.AUDIT, 0); }
		public List id() {
			return getRuleContexts(IdContext.class);
		}
		public IdContext id(int i) {
			return getRuleContext(IdContext.class,i);
		}
		public TerminalNode REMOVE() { return getToken(TSqlParser.REMOVE, 0); }
		public TerminalNode WHERE() { return getToken(TSqlParser.WHERE, 0); }
		public TerminalNode MODIFY() { return getToken(TSqlParser.MODIFY, 0); }
		public TerminalNode NAME() { return getToken(TSqlParser.NAME, 0); }
		public List EQUAL() { return getTokens(TSqlParser.EQUAL); }
		public TerminalNode EQUAL(int i) {
			return getToken(TSqlParser.EQUAL, i);
		}
		public TerminalNode TO() { return getToken(TSqlParser.TO, 0); }
		public TerminalNode WITH() { return getToken(TSqlParser.WITH, 0); }
		public List LR_BRACKET() { return getTokens(TSqlParser.LR_BRACKET); }
		public TerminalNode LR_BRACKET(int i) {
			return getToken(TSqlParser.LR_BRACKET, i);
		}
		public List RR_BRACKET() { return getTokens(TSqlParser.RR_BRACKET); }
		public TerminalNode RR_BRACKET(int i) {
			return getToken(TSqlParser.RR_BRACKET, i);
		}
		public TerminalNode FILE() { return getToken(TSqlParser.FILE, 0); }
		public TerminalNode APPLICATION_LOG() { return getToken(TSqlParser.APPLICATION_LOG, 0); }
		public TerminalNode SECURITY_LOG() { return getToken(TSqlParser.SECURITY_LOG, 0); }
		public List QUEUE_DELAY() { return getTokens(TSqlParser.QUEUE_DELAY); }
		public TerminalNode QUEUE_DELAY(int i) {
			return getToken(TSqlParser.QUEUE_DELAY, i);
		}
		public List ON_FAILURE() { return getTokens(TSqlParser.ON_FAILURE); }
		public TerminalNode ON_FAILURE(int i) {
			return getToken(TSqlParser.ON_FAILURE, i);
		}
		public List STATE() { return getTokens(TSqlParser.STATE); }
		public TerminalNode STATE(int i) {
			return getToken(TSqlParser.STATE, i);
		}
		public List AUDIT_GUID() { return getTokens(TSqlParser.AUDIT_GUID); }
		public TerminalNode AUDIT_GUID(int i) {
			return getToken(TSqlParser.AUDIT_GUID, i);
		}
		public List DECIMAL() { return getTokens(TSqlParser.DECIMAL); }
		public TerminalNode DECIMAL(int i) {
			return getToken(TSqlParser.DECIMAL, i);
		}
		public List STRING() { return getTokens(TSqlParser.STRING); }
		public TerminalNode STRING(int i) {
			return getToken(TSqlParser.STRING, i);
		}
		public TerminalNode AND() { return getToken(TSqlParser.AND, 0); }
		public TerminalNode OR() { return getToken(TSqlParser.OR, 0); }
		public List CONTINUE() { return getTokens(TSqlParser.CONTINUE); }
		public TerminalNode CONTINUE(int i) {
			return getToken(TSqlParser.CONTINUE, i);
		}
		public List SHUTDOWN() { return getTokens(TSqlParser.SHUTDOWN); }
		public TerminalNode SHUTDOWN(int i) {
			return getToken(TSqlParser.SHUTDOWN, i);
		}
		public List FAIL_OPERATION() { return getTokens(TSqlParser.FAIL_OPERATION); }
		public TerminalNode FAIL_OPERATION(int i) {
			return getToken(TSqlParser.FAIL_OPERATION, i);
		}
		public List ON() { return getTokens(TSqlParser.ON); }
		public TerminalNode ON(int i) {
			return getToken(TSqlParser.ON, i);
		}
		public List OFF() { return getTokens(TSqlParser.OFF); }
		public TerminalNode OFF(int i) {
			return getToken(TSqlParser.OFF, i);
		}
		public TerminalNode GREATER() { return getToken(TSqlParser.GREATER, 0); }
		public TerminalNode LESS() { return getToken(TSqlParser.LESS, 0); }
		public List COMMA() { return getTokens(TSqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(TSqlParser.COMMA, i);
		}
		public TerminalNode NOT() { return getToken(TSqlParser.NOT, 0); }
		public TerminalNode EXCLAMATION() { return getToken(TSqlParser.EXCLAMATION, 0); }
		public List FILEPATH() { return getTokens(TSqlParser.FILEPATH); }
		public TerminalNode FILEPATH(int i) {
			return getToken(TSqlParser.FILEPATH, i);
		}
		public List MAXSIZE() { return getTokens(TSqlParser.MAXSIZE); }
		public TerminalNode MAXSIZE(int i) {
			return getToken(TSqlParser.MAXSIZE, i);
		}
		public List MAX_ROLLOVER_FILES() { return getTokens(TSqlParser.MAX_ROLLOVER_FILES); }
		public TerminalNode MAX_ROLLOVER_FILES(int i) {
			return getToken(TSqlParser.MAX_ROLLOVER_FILES, i);
		}
		public List MAX_FILES() { return getTokens(TSqlParser.MAX_FILES); }
		public TerminalNode MAX_FILES(int i) {
			return getToken(TSqlParser.MAX_FILES, i);
		}
		public List RESERVE_DISK_SPACE() { return getTokens(TSqlParser.RESERVE_DISK_SPACE); }
		public TerminalNode RESERVE_DISK_SPACE(int i) {
			return getToken(TSqlParser.RESERVE_DISK_SPACE, i);
		}
		public List UNLIMITED() { return getTokens(TSqlParser.UNLIMITED); }
		public TerminalNode UNLIMITED(int i) {
			return getToken(TSqlParser.UNLIMITED, i);
		}
		public List MB() { return getTokens(TSqlParser.MB); }
		public TerminalNode MB(int i) {
			return getToken(TSqlParser.MB, i);
		}
		public List GB() { return getTokens(TSqlParser.GB); }
		public TerminalNode GB(int i) {
			return getToken(TSqlParser.GB, i);
		}
		public List TB() { return getTokens(TSqlParser.TB); }
		public TerminalNode TB(int i) {
			return getToken(TSqlParser.TB, i);
		}
		public Create_server_auditContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_create_server_audit; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterCreate_server_audit(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitCreate_server_audit(this);
		}
	}

	public final Create_server_auditContext create_server_audit() throws RecognitionException {
		Create_server_auditContext _localctx = new Create_server_auditContext(_ctx, getState());
		enterRule(_localctx, 372, RULE_create_server_audit);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4617);
			match(CREATE);
			setState(4618);
			match(SERVER);
			setState(4619);
			match(AUDIT);
			setState(4620);
			((Create_server_auditContext)_localctx).audit_name = id();
			setState(4758);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,550,_ctx) ) {
			case 1:
				{
				setState(4668);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==TO) {
					{
					setState(4621);
					match(TO);
					setState(4666);
					_errHandler.sync(this);
					switch (_input.LA(1)) {
					case FILE:
						{
						setState(4622);
						match(FILE);
						{
						setState(4623);
						match(LR_BRACKET);
						setState(4660);
						_errHandler.sync(this);
						_la = _input.LA(1);
						while (_la==FILEPATH || ((((_la - 580)) & ~0x3f) == 0 && ((1L << (_la - 580)) & ((1L << (MAX_FILES - 580)) | (1L << (MAX_ROLLOVER_FILES - 580)) | (1L << (MAXSIZE - 580)))) != 0) || _la==RESERVE_DISK_SPACE || _la==COMMA) {
							{
							setState(4658);
							_errHandler.sync(this);
							switch ( getInterpreter().adaptivePredict(_input,531,_ctx) ) {
							case 1:
								{
								setState(4625);
								_errHandler.sync(this);
								_la = _input.LA(1);
								if (_la==COMMA) {
									{
									setState(4624);
									match(COMMA);
									}
								}

								setState(4627);
								match(FILEPATH);
								setState(4628);
								match(EQUAL);
								setState(4629);
								((Create_server_auditContext)_localctx).filepath = match(STRING);
								}
								break;
							case 2:
								{
								setState(4631);
								_errHandler.sync(this);
								_la = _input.LA(1);
								if (_la==COMMA) {
									{
									setState(4630);
									match(COMMA);
									}
								}

								setState(4633);
								match(MAXSIZE);
								setState(4634);
								match(EQUAL);
								setState(4638);
								_errHandler.sync(this);
								switch (_input.LA(1)) {
								case DECIMAL:
									{
									setState(4635);
									match(DECIMAL);
									setState(4636);
									_la = _input.LA(1);
									if ( !(_la==GB || _la==MB || _la==TB) ) {
									_errHandler.recoverInline(this);
									}
									else {
										if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
										_errHandler.reportMatch(this);
										consume();
									}
									}
									break;
								case UNLIMITED:
									{
									setState(4637);
									match(UNLIMITED);
									}
									break;
								default:
									throw new NoViableAltException(this);
								}
								}
								break;
							case 3:
								{
								setState(4641);
								_errHandler.sync(this);
								_la = _input.LA(1);
								if (_la==COMMA) {
									{
									setState(4640);
									match(COMMA);
									}
								}

								setState(4643);
								match(MAX_ROLLOVER_FILES);
								setState(4644);
								match(EQUAL);
								setState(4645);
								((Create_server_auditContext)_localctx).max_rollover_files = _input.LT(1);
								_la = _input.LA(1);
								if ( !(_la==UNLIMITED || _la==DECIMAL) ) {
									((Create_server_auditContext)_localctx).max_rollover_files = (Token)_errHandler.recoverInline(this);
								}
								else {
									if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
									_errHandler.reportMatch(this);
									consume();
								}
								}
								break;
							case 4:
								{
								setState(4647);
								_errHandler.sync(this);
								_la = _input.LA(1);
								if (_la==COMMA) {
									{
									setState(4646);
									match(COMMA);
									}
								}

								setState(4649);
								match(MAX_FILES);
								setState(4650);
								match(EQUAL);
								setState(4651);
								((Create_server_auditContext)_localctx).max_files = match(DECIMAL);
								}
								break;
							case 5:
								{
								setState(4653);
								_errHandler.sync(this);
								_la = _input.LA(1);
								if (_la==COMMA) {
									{
									setState(4652);
									match(COMMA);
									}
								}

								setState(4655);
								match(RESERVE_DISK_SPACE);
								setState(4656);
								match(EQUAL);
								setState(4657);
								_la = _input.LA(1);
								if ( !(_la==OFF || _la==ON) ) {
								_errHandler.recoverInline(this);
								}
								else {
									if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
									_errHandler.reportMatch(this);
									consume();
								}
								}
								break;
							}
							}
							setState(4662);
							_errHandler.sync(this);
							_la = _input.LA(1);
						}
						setState(4663);
						match(RR_BRACKET);
						}
						}
						break;
					case APPLICATION_LOG:
						{
						setState(4664);
						match(APPLICATION_LOG);
						}
						break;
					case SECURITY_LOG:
						{
						setState(4665);
						match(SECURITY_LOG);
						}
						break;
					default:
						throw new NoViableAltException(this);
					}
					}
				}

				setState(4702);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,541,_ctx) ) {
				case 1:
					{
					setState(4670);
					match(WITH);
					setState(4671);
					match(LR_BRACKET);
					setState(4698);
					_errHandler.sync(this);
					_la = _input.LA(1);
					while (_la==ON_FAILURE || _la==STATE || _la==AUDIT_GUID || _la==QUEUE_DELAY || _la==COMMA) {
						{
						setState(4696);
						_errHandler.sync(this);
						switch ( getInterpreter().adaptivePredict(_input,539,_ctx) ) {
						case 1:
							{
							setState(4673);
							_errHandler.sync(this);
							_la = _input.LA(1);
							if (_la==COMMA) {
								{
								setState(4672);
								match(COMMA);
								}
							}

							setState(4675);
							match(QUEUE_DELAY);
							setState(4676);
							match(EQUAL);
							setState(4677);
							((Create_server_auditContext)_localctx).queue_delay = match(DECIMAL);
							}
							break;
						case 2:
							{
							setState(4679);
							_errHandler.sync(this);
							_la = _input.LA(1);
							if (_la==COMMA) {
								{
								setState(4678);
								match(COMMA);
								}
							}

							setState(4681);
							match(ON_FAILURE);
							setState(4682);
							match(EQUAL);
							setState(4683);
							_la = _input.LA(1);
							if ( !(_la==CONTINUE || _la==SHUTDOWN || _la==FAIL_OPERATION) ) {
							_errHandler.recoverInline(this);
							}
							else {
								if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
								_errHandler.reportMatch(this);
								consume();
							}
							}
							break;
						case 3:
							{
							setState(4685);
							_errHandler.sync(this);
							_la = _input.LA(1);
							if (_la==COMMA) {
								{
								setState(4684);
								match(COMMA);
								}
							}

							setState(4687);
							match(STATE);
							setState(4688);
							match(EQUAL);
							setState(4689);
							_la = _input.LA(1);
							if ( !(_la==OFF || _la==ON) ) {
							_errHandler.recoverInline(this);
							}
							else {
								if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
								_errHandler.reportMatch(this);
								consume();
							}
							}
							break;
						case 4:
							{
							setState(4691);
							_errHandler.sync(this);
							_la = _input.LA(1);
							if (_la==COMMA) {
								{
								setState(4690);
								match(COMMA);
								}
							}

							setState(4693);
							match(AUDIT_GUID);
							setState(4694);
							match(EQUAL);
							setState(4695);
							((Create_server_auditContext)_localctx).audit_guid = id();
							}
							break;
						}
						}
						setState(4700);
						_errHandler.sync(this);
						_la = _input.LA(1);
					}
					setState(4701);
					match(RR_BRACKET);
					}
					break;
				}
				setState(4750);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==WHERE) {
					{
					setState(4704);
					match(WHERE);
					setState(4748);
					_errHandler.sync(this);
					switch ( getInterpreter().adaptivePredict(_input,548,_ctx) ) {
					case 1:
						{
						setState(4706);
						_errHandler.sync(this);
						_la = _input.LA(1);
						if (_la==COMMA) {
							{
							setState(4705);
							match(COMMA);
							}
						}

						{
						setState(4709);
						_errHandler.sync(this);
						_la = _input.LA(1);
						if (_la==NOT) {
							{
							setState(4708);
							match(NOT);
							}
						}

						}
						setState(4711);
						((Create_server_auditContext)_localctx).event_field_name = id();
						setState(4723);
						_errHandler.sync(this);
						switch ( getInterpreter().adaptivePredict(_input,544,_ctx) ) {
						case 1:
							{
							setState(4712);
							match(EQUAL);
							}
							break;
						case 2:
							{
							{
							setState(4713);
							match(LESS);
							setState(4714);
							match(GREATER);
							}
							}
							break;
						case 3:
							{
							{
							setState(4715);
							match(EXCLAMATION);
							setState(4716);
							match(EQUAL);
							}
							}
							break;
						case 4:
							{
							setState(4717);
							match(GREATER);
							}
							break;
						case 5:
							{
							{
							setState(4718);
							match(GREATER);
							setState(4719);
							match(EQUAL);
							}
							}
							break;
						case 6:
							{
							setState(4720);
							match(LESS);
							}
							break;
						case 7:
							{
							setState(4721);
							match(LESS);
							setState(4722);
							match(EQUAL);
							}
							break;
						}
						setState(4725);
						_la = _input.LA(1);
						if ( !(_la==DECIMAL || _la==STRING) ) {
						_errHandler.recoverInline(this);
						}
						else {
							if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
							_errHandler.reportMatch(this);
							consume();
						}
						}
						break;
					case 2:
						{
						setState(4728);
						_errHandler.sync(this);
						_la = _input.LA(1);
						if (_la==COMMA) {
							{
							setState(4727);
							match(COMMA);
							}
						}

						setState(4730);
						_la = _input.LA(1);
						if ( !(_la==AND || _la==OR) ) {
						_errHandler.recoverInline(this);
						}
						else {
							if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
							_errHandler.reportMatch(this);
							consume();
						}
						setState(4732);
						_errHandler.sync(this);
						_la = _input.LA(1);
						if (_la==NOT) {
							{
							setState(4731);
							match(NOT);
							}
						}

						setState(4745);
						_errHandler.sync(this);
						switch ( getInterpreter().adaptivePredict(_input,547,_ctx) ) {
						case 1:
							{
							setState(4734);
							match(EQUAL);
							}
							break;
						case 2:
							{
							{
							setState(4735);
							match(LESS);
							setState(4736);
							match(GREATER);
							}
							}
							break;
						case 3:
							{
							{
							setState(4737);
							match(EXCLAMATION);
							setState(4738);
							match(EQUAL);
							}
							}
							break;
						case 4:
							{
							setState(4739);
							match(GREATER);
							}
							break;
						case 5:
							{
							{
							setState(4740);
							match(GREATER);
							setState(4741);
							match(EQUAL);
							}
							}
							break;
						case 6:
							{
							setState(4742);
							match(LESS);
							}
							break;
						case 7:
							{
							setState(4743);
							match(LESS);
							setState(4744);
							match(EQUAL);
							}
							break;
						}
						setState(4747);
						_la = _input.LA(1);
						if ( !(_la==DECIMAL || _la==STRING) ) {
						_errHandler.recoverInline(this);
						}
						else {
							if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
							_errHandler.reportMatch(this);
							consume();
						}
						}
						break;
					}
					}
				}

				}
				break;
			case 2:
				{
				setState(4752);
				match(REMOVE);
				setState(4753);
				match(WHERE);
				}
				break;
			case 3:
				{
				setState(4754);
				match(MODIFY);
				setState(4755);
				match(NAME);
				setState(4756);
				match(EQUAL);
				setState(4757);
				((Create_server_auditContext)_localctx).new_audit_name = id();
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Alter_server_audit_specificationContext extends ParserRuleContext {
		public IdContext audit_specification_name;
		public IdContext audit_name;
		public IdContext audit_action_group_name;
		public TerminalNode ALTER() { return getToken(TSqlParser.ALTER, 0); }
		public List SERVER() { return getTokens(TSqlParser.SERVER); }
		public TerminalNode SERVER(int i) {
			return getToken(TSqlParser.SERVER, i);
		}
		public List AUDIT() { return getTokens(TSqlParser.AUDIT); }
		public TerminalNode AUDIT(int i) {
			return getToken(TSqlParser.AUDIT, i);
		}
		public TerminalNode SPECIFICATION() { return getToken(TSqlParser.SPECIFICATION, 0); }
		public List id() {
			return getRuleContexts(IdContext.class);
		}
		public IdContext id(int i) {
			return getRuleContext(IdContext.class,i);
		}
		public TerminalNode FOR() { return getToken(TSqlParser.FOR, 0); }
		public List LR_BRACKET() { return getTokens(TSqlParser.LR_BRACKET); }
		public TerminalNode LR_BRACKET(int i) {
			return getToken(TSqlParser.LR_BRACKET, i);
		}
		public List RR_BRACKET() { return getTokens(TSqlParser.RR_BRACKET); }
		public TerminalNode RR_BRACKET(int i) {
			return getToken(TSqlParser.RR_BRACKET, i);
		}
		public TerminalNode WITH() { return getToken(TSqlParser.WITH, 0); }
		public TerminalNode STATE() { return getToken(TSqlParser.STATE, 0); }
		public TerminalNode EQUAL() { return getToken(TSqlParser.EQUAL, 0); }
		public List ADD() { return getTokens(TSqlParser.ADD); }
		public TerminalNode ADD(int i) {
			return getToken(TSqlParser.ADD, i);
		}
		public List DROP() { return getTokens(TSqlParser.DROP); }
		public TerminalNode DROP(int i) {
			return getToken(TSqlParser.DROP, i);
		}
		public TerminalNode ON() { return getToken(TSqlParser.ON, 0); }
		public TerminalNode OFF() { return getToken(TSqlParser.OFF, 0); }
		public Alter_server_audit_specificationContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alter_server_audit_specification; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterAlter_server_audit_specification(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitAlter_server_audit_specification(this);
		}
	}

	public final Alter_server_audit_specificationContext alter_server_audit_specification() throws RecognitionException {
		Alter_server_audit_specificationContext _localctx = new Alter_server_audit_specificationContext(_ctx, getState());
		enterRule(_localctx, 374, RULE_alter_server_audit_specification);
		int _la;
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			setState(4760);
			match(ALTER);
			setState(4761);
			match(SERVER);
			setState(4762);
			match(AUDIT);
			setState(4763);
			match(SPECIFICATION);
			setState(4764);
			((Alter_server_audit_specificationContext)_localctx).audit_specification_name = id();
			setState(4769);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==FOR) {
				{
				setState(4765);
				match(FOR);
				setState(4766);
				match(SERVER);
				setState(4767);
				match(AUDIT);
				setState(4768);
				((Alter_server_audit_specificationContext)_localctx).audit_name = id();
				}
			}

			setState(4778);
			_errHandler.sync(this);
			_alt = getInterpreter().adaptivePredict(_input,552,_ctx);
			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
				if ( _alt==1 ) {
					{
					{
					setState(4771);
					_la = _input.LA(1);
					if ( !(_la==ADD || _la==DROP) ) {
					_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					setState(4772);
					match(LR_BRACKET);
					setState(4773);
					((Alter_server_audit_specificationContext)_localctx).audit_action_group_name = id();
					setState(4774);
					match(RR_BRACKET);
					}
					} 
				}
				setState(4780);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,552,_ctx);
			}
			setState(4787);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,553,_ctx) ) {
			case 1:
				{
				setState(4781);
				match(WITH);
				setState(4782);
				match(LR_BRACKET);
				setState(4783);
				match(STATE);
				setState(4784);
				match(EQUAL);
				setState(4785);
				_la = _input.LA(1);
				if ( !(_la==OFF || _la==ON) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(4786);
				match(RR_BRACKET);
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Create_server_audit_specificationContext extends ParserRuleContext {
		public IdContext audit_specification_name;
		public IdContext audit_name;
		public IdContext audit_action_group_name;
		public TerminalNode CREATE() { return getToken(TSqlParser.CREATE, 0); }
		public List SERVER() { return getTokens(TSqlParser.SERVER); }
		public TerminalNode SERVER(int i) {
			return getToken(TSqlParser.SERVER, i);
		}
		public List AUDIT() { return getTokens(TSqlParser.AUDIT); }
		public TerminalNode AUDIT(int i) {
			return getToken(TSqlParser.AUDIT, i);
		}
		public TerminalNode SPECIFICATION() { return getToken(TSqlParser.SPECIFICATION, 0); }
		public List id() {
			return getRuleContexts(IdContext.class);
		}
		public IdContext id(int i) {
			return getRuleContext(IdContext.class,i);
		}
		public TerminalNode FOR() { return getToken(TSqlParser.FOR, 0); }
		public List ADD() { return getTokens(TSqlParser.ADD); }
		public TerminalNode ADD(int i) {
			return getToken(TSqlParser.ADD, i);
		}
		public List LR_BRACKET() { return getTokens(TSqlParser.LR_BRACKET); }
		public TerminalNode LR_BRACKET(int i) {
			return getToken(TSqlParser.LR_BRACKET, i);
		}
		public List RR_BRACKET() { return getTokens(TSqlParser.RR_BRACKET); }
		public TerminalNode RR_BRACKET(int i) {
			return getToken(TSqlParser.RR_BRACKET, i);
		}
		public TerminalNode WITH() { return getToken(TSqlParser.WITH, 0); }
		public TerminalNode STATE() { return getToken(TSqlParser.STATE, 0); }
		public TerminalNode EQUAL() { return getToken(TSqlParser.EQUAL, 0); }
		public TerminalNode ON() { return getToken(TSqlParser.ON, 0); }
		public TerminalNode OFF() { return getToken(TSqlParser.OFF, 0); }
		public Create_server_audit_specificationContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_create_server_audit_specification; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterCreate_server_audit_specification(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitCreate_server_audit_specification(this);
		}
	}

	public final Create_server_audit_specificationContext create_server_audit_specification() throws RecognitionException {
		Create_server_audit_specificationContext _localctx = new Create_server_audit_specificationContext(_ctx, getState());
		enterRule(_localctx, 376, RULE_create_server_audit_specification);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4789);
			match(CREATE);
			setState(4790);
			match(SERVER);
			setState(4791);
			match(AUDIT);
			setState(4792);
			match(SPECIFICATION);
			setState(4793);
			((Create_server_audit_specificationContext)_localctx).audit_specification_name = id();
			setState(4798);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==FOR) {
				{
				setState(4794);
				match(FOR);
				setState(4795);
				match(SERVER);
				setState(4796);
				match(AUDIT);
				setState(4797);
				((Create_server_audit_specificationContext)_localctx).audit_name = id();
				}
			}

			setState(4807);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==ADD) {
				{
				{
				setState(4800);
				match(ADD);
				setState(4801);
				match(LR_BRACKET);
				setState(4802);
				((Create_server_audit_specificationContext)_localctx).audit_action_group_name = id();
				setState(4803);
				match(RR_BRACKET);
				}
				}
				setState(4809);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			setState(4816);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,556,_ctx) ) {
			case 1:
				{
				setState(4810);
				match(WITH);
				setState(4811);
				match(LR_BRACKET);
				setState(4812);
				match(STATE);
				setState(4813);
				match(EQUAL);
				setState(4814);
				_la = _input.LA(1);
				if ( !(_la==OFF || _la==ON) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(4815);
				match(RR_BRACKET);
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Alter_server_configurationContext extends ParserRuleContext {
		public TerminalNode ALTER() { return getToken(TSqlParser.ALTER, 0); }
		public TerminalNode SERVER() { return getToken(TSqlParser.SERVER, 0); }
		public TerminalNode CONFIGURATION() { return getToken(TSqlParser.CONFIGURATION, 0); }
		public List SET() { return getTokens(TSqlParser.SET); }
		public TerminalNode SET(int i) {
			return getToken(TSqlParser.SET, i);
		}
		public TerminalNode PROCESS() { return getToken(TSqlParser.PROCESS, 0); }
		public TerminalNode AFFINITY() { return getToken(TSqlParser.AFFINITY, 0); }
		public TerminalNode DIAGNOSTICS() { return getToken(TSqlParser.DIAGNOSTICS, 0); }
		public TerminalNode LOG() { return getToken(TSqlParser.LOG, 0); }
		public TerminalNode FAILOVER() { return getToken(TSqlParser.FAILOVER, 0); }
		public TerminalNode CLUSTER() { return getToken(TSqlParser.CLUSTER, 0); }
		public TerminalNode PROPERTY() { return getToken(TSqlParser.PROPERTY, 0); }
		public TerminalNode HADR() { return getToken(TSqlParser.HADR, 0); }
		public TerminalNode CONTEXT() { return getToken(TSqlParser.CONTEXT, 0); }
		public List EQUAL() { return getTokens(TSqlParser.EQUAL); }
		public TerminalNode EQUAL(int i) {
			return getToken(TSqlParser.EQUAL, i);
		}
		public TerminalNode BUFFER() { return getToken(TSqlParser.BUFFER, 0); }
		public TerminalNode POOL() { return getToken(TSqlParser.POOL, 0); }
		public TerminalNode EXTENSION() { return getToken(TSqlParser.EXTENSION, 0); }
		public TerminalNode SOFTNUMA() { return getToken(TSqlParser.SOFTNUMA, 0); }
		public TerminalNode STRING() { return getToken(TSqlParser.STRING, 0); }
		public TerminalNode LOCAL() { return getToken(TSqlParser.LOCAL, 0); }
		public TerminalNode ON() { return getToken(TSqlParser.ON, 0); }
		public TerminalNode OFF() { return getToken(TSqlParser.OFF, 0); }
		public TerminalNode CPU() { return getToken(TSqlParser.CPU, 0); }
		public TerminalNode NUMANODE() { return getToken(TSqlParser.NUMANODE, 0); }
		public TerminalNode PATH() { return getToken(TSqlParser.PATH, 0); }
		public TerminalNode MAX_SIZE() { return getToken(TSqlParser.MAX_SIZE, 0); }
		public TerminalNode MAX_FILES() { return getToken(TSqlParser.MAX_FILES, 0); }
		public TerminalNode VERBOSELOGGING() { return getToken(TSqlParser.VERBOSELOGGING, 0); }
		public TerminalNode SQLDUMPERFLAGS() { return getToken(TSqlParser.SQLDUMPERFLAGS, 0); }
		public TerminalNode SQLDUMPERPATH() { return getToken(TSqlParser.SQLDUMPERPATH, 0); }
		public TerminalNode SQLDUMPERTIMEOUT() { return getToken(TSqlParser.SQLDUMPERTIMEOUT, 0); }
		public TerminalNode FAILURECONDITIONLEVEL() { return getToken(TSqlParser.FAILURECONDITIONLEVEL, 0); }
		public TerminalNode HEALTHCHECKTIMEOUT() { return getToken(TSqlParser.HEALTHCHECKTIMEOUT, 0); }
		public TerminalNode LR_BRACKET() { return getToken(TSqlParser.LR_BRACKET, 0); }
		public TerminalNode FILENAME() { return getToken(TSqlParser.FILENAME, 0); }
		public List COMMA() { return getTokens(TSqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(TSqlParser.COMMA, i);
		}
		public TerminalNode SIZE() { return getToken(TSqlParser.SIZE, 0); }
		public List DECIMAL() { return getTokens(TSqlParser.DECIMAL); }
		public TerminalNode DECIMAL(int i) {
			return getToken(TSqlParser.DECIMAL, i);
		}
		public TerminalNode RR_BRACKET() { return getToken(TSqlParser.RR_BRACKET, 0); }
		public TerminalNode DEFAULT() { return getToken(TSqlParser.DEFAULT, 0); }
		public TerminalNode KB() { return getToken(TSqlParser.KB, 0); }
		public TerminalNode MB() { return getToken(TSqlParser.MB, 0); }
		public TerminalNode GB() { return getToken(TSqlParser.GB, 0); }
		public TerminalNode AUTO() { return getToken(TSqlParser.AUTO, 0); }
		public List TO() { return getTokens(TSqlParser.TO); }
		public TerminalNode TO(int i) {
			return getToken(TSqlParser.TO, i);
		}
		public Alter_server_configurationContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alter_server_configuration; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterAlter_server_configuration(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitAlter_server_configuration(this);
		}
	}

	public final Alter_server_configurationContext alter_server_configuration() throws RecognitionException {
		Alter_server_configurationContext _localctx = new Alter_server_configurationContext(_ctx, getState());
		enterRule(_localctx, 378, RULE_alter_server_configuration);
		int _la;
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			setState(4818);
			match(ALTER);
			setState(4819);
			match(SERVER);
			setState(4820);
			match(CONFIGURATION);
			setState(4821);
			match(SET);
			{
			setState(4927);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case PROCESS:
				{
				setState(4822);
				match(PROCESS);
				setState(4823);
				match(AFFINITY);
				setState(4859);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case CPU:
					{
					setState(4824);
					match(CPU);
					setState(4825);
					match(EQUAL);
					setState(4841);
					_errHandler.sync(this);
					switch (_input.LA(1)) {
					case AUTO:
						{
						setState(4826);
						match(AUTO);
						}
						break;
					case DECIMAL:
					case COMMA:
						{
						setState(4837); 
						_errHandler.sync(this);
						_alt = 1;
						do {
							switch (_alt) {
							case 1:
								{
								setState(4837);
								_errHandler.sync(this);
								switch ( getInterpreter().adaptivePredict(_input,559,_ctx) ) {
								case 1:
									{
									setState(4828);
									_errHandler.sync(this);
									_la = _input.LA(1);
									if (_la==COMMA) {
										{
										setState(4827);
										match(COMMA);
										}
									}

									setState(4830);
									match(DECIMAL);
									}
									break;
								case 2:
									{
									setState(4832);
									_errHandler.sync(this);
									_la = _input.LA(1);
									if (_la==COMMA) {
										{
										setState(4831);
										match(COMMA);
										}
									}

									setState(4834);
									match(DECIMAL);
									setState(4835);
									match(TO);
									setState(4836);
									match(DECIMAL);
									}
									break;
								}
								}
								break;
							default:
								throw new NoViableAltException(this);
							}
							setState(4839); 
							_errHandler.sync(this);
							_alt = getInterpreter().adaptivePredict(_input,560,_ctx);
						} while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER );
						}
						break;
					default:
						throw new NoViableAltException(this);
					}
					}
					break;
				case NUMANODE:
					{
					setState(4843);
					match(NUMANODE);
					setState(4844);
					match(EQUAL);
					setState(4855); 
					_errHandler.sync(this);
					_alt = 1;
					do {
						switch (_alt) {
						case 1:
							{
							setState(4855);
							_errHandler.sync(this);
							switch ( getInterpreter().adaptivePredict(_input,564,_ctx) ) {
							case 1:
								{
								setState(4846);
								_errHandler.sync(this);
								_la = _input.LA(1);
								if (_la==COMMA) {
									{
									setState(4845);
									match(COMMA);
									}
								}

								setState(4848);
								match(DECIMAL);
								}
								break;
							case 2:
								{
								setState(4850);
								_errHandler.sync(this);
								_la = _input.LA(1);
								if (_la==COMMA) {
									{
									setState(4849);
									match(COMMA);
									}
								}

								setState(4852);
								match(DECIMAL);
								setState(4853);
								match(TO);
								setState(4854);
								match(DECIMAL);
								}
								break;
							}
							}
							break;
						default:
							throw new NoViableAltException(this);
						}
						setState(4857); 
						_errHandler.sync(this);
						_alt = getInterpreter().adaptivePredict(_input,565,_ctx);
					} while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER );
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;
			case DIAGNOSTICS:
				{
				setState(4861);
				match(DIAGNOSTICS);
				setState(4862);
				match(LOG);
				setState(4878);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case ON:
					{
					setState(4863);
					match(ON);
					}
					break;
				case OFF:
					{
					setState(4864);
					match(OFF);
					}
					break;
				case PATH:
					{
					setState(4865);
					match(PATH);
					setState(4866);
					match(EQUAL);
					setState(4867);
					_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();
					}
					}
					break;
				case MAX_SIZE:
					{
					setState(4868);
					match(MAX_SIZE);
					setState(4869);
					match(EQUAL);
					setState(4873);
					_errHandler.sync(this);
					switch (_input.LA(1)) {
					case DECIMAL:
						{
						setState(4870);
						match(DECIMAL);
						setState(4871);
						match(MB);
						}
						break;
					case DEFAULT:
						{
						setState(4872);
						match(DEFAULT);
						}
						break;
					default:
						throw new NoViableAltException(this);
					}
					}
					break;
				case MAX_FILES:
					{
					setState(4875);
					match(MAX_FILES);
					setState(4876);
					match(EQUAL);
					setState(4877);
					_la = _input.LA(1);
					if ( !(_la==DEFAULT || _la==DECIMAL) ) {
					_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;
			case FAILOVER:
				{
				setState(4880);
				match(FAILOVER);
				setState(4881);
				match(CLUSTER);
				setState(4882);
				match(PROPERTY);
				setState(4900);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case VERBOSELOGGING:
					{
					setState(4883);
					match(VERBOSELOGGING);
					setState(4884);
					match(EQUAL);
					setState(4885);
					_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();
					}
					}
					break;
				case SQLDUMPERFLAGS:
					{
					setState(4886);
					match(SQLDUMPERFLAGS);
					setState(4887);
					match(EQUAL);
					setState(4888);
					_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();
					}
					}
					break;
				case SQLDUMPERPATH:
					{
					setState(4889);
					match(SQLDUMPERPATH);
					setState(4890);
					match(EQUAL);
					setState(4891);
					_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();
					}
					}
					break;
				case SQLDUMPERTIMEOUT:
					{
					setState(4892);
					match(SQLDUMPERTIMEOUT);
					setState(4893);
					_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();
					}
					}
					break;
				case FAILURECONDITIONLEVEL:
					{
					setState(4894);
					match(FAILURECONDITIONLEVEL);
					setState(4895);
					match(EQUAL);
					setState(4896);
					_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();
					}
					}
					break;
				case HEALTHCHECKTIMEOUT:
					{
					setState(4897);
					match(HEALTHCHECKTIMEOUT);
					setState(4898);
					match(EQUAL);
					setState(4899);
					_la = _input.LA(1);
					if ( !(_la==DEFAULT || _la==DECIMAL) ) {
					_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;
			case HADR:
				{
				setState(4902);
				match(HADR);
				setState(4903);
				match(CLUSTER);
				setState(4904);
				match(CONTEXT);
				setState(4905);
				match(EQUAL);
				setState(4906);
				_la = _input.LA(1);
				if ( !(_la==LOCAL || _la==STRING) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
				break;
			case BUFFER:
				{
				setState(4907);
				match(BUFFER);
				setState(4908);
				match(POOL);
				setState(4909);
				match(EXTENSION);
				setState(4922);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case ON:
					{
					setState(4910);
					match(ON);
					setState(4911);
					match(LR_BRACKET);
					setState(4912);
					match(FILENAME);
					setState(4913);
					match(EQUAL);
					setState(4914);
					match(STRING);
					setState(4915);
					match(COMMA);
					setState(4916);
					match(SIZE);
					setState(4917);
					match(EQUAL);
					setState(4918);
					match(DECIMAL);
					setState(4919);
					_la = _input.LA(1);
					if ( !(_la==GB || _la==KB || _la==MB) ) {
					_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					setState(4920);
					match(RR_BRACKET);
					}
					break;
				case OFF:
					{
					setState(4921);
					match(OFF);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;
			case SET:
				{
				setState(4924);
				match(SET);
				setState(4925);
				match(SOFTNUMA);
				setState(4926);
				_la = _input.LA(1);
				if ( !(_la==OFF || _la==ON) ) {
				_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 Alter_server_roleContext extends ParserRuleContext {
		public IdContext server_role_name;
		public IdContext server_principal;
		public IdContext new_server_role_name;
		public TerminalNode ALTER() { return getToken(TSqlParser.ALTER, 0); }
		public TerminalNode SERVER() { return getToken(TSqlParser.SERVER, 0); }
		public TerminalNode ROLE() { return getToken(TSqlParser.ROLE, 0); }
		public List id() {
			return getRuleContexts(IdContext.class);
		}
		public IdContext id(int i) {
			return getRuleContext(IdContext.class,i);
		}
		public TerminalNode MEMBER() { return getToken(TSqlParser.MEMBER, 0); }
		public TerminalNode WITH() { return getToken(TSqlParser.WITH, 0); }
		public TerminalNode NAME() { return getToken(TSqlParser.NAME, 0); }
		public TerminalNode EQUAL() { return getToken(TSqlParser.EQUAL, 0); }
		public TerminalNode ADD() { return getToken(TSqlParser.ADD, 0); }
		public TerminalNode DROP() { return getToken(TSqlParser.DROP, 0); }
		public Alter_server_roleContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alter_server_role; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterAlter_server_role(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitAlter_server_role(this);
		}
	}

	public final Alter_server_roleContext alter_server_role() throws RecognitionException {
		Alter_server_roleContext _localctx = new Alter_server_roleContext(_ctx, getState());
		enterRule(_localctx, 380, RULE_alter_server_role);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4929);
			match(ALTER);
			setState(4930);
			match(SERVER);
			setState(4931);
			match(ROLE);
			setState(4932);
			((Alter_server_roleContext)_localctx).server_role_name = id();
			setState(4940);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case ADD:
			case DROP:
				{
				setState(4933);
				_la = _input.LA(1);
				if ( !(_la==ADD || _la==DROP) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(4934);
				match(MEMBER);
				setState(4935);
				((Alter_server_roleContext)_localctx).server_principal = id();
				}
				break;
			case WITH:
				{
				setState(4936);
				match(WITH);
				setState(4937);
				match(NAME);
				setState(4938);
				match(EQUAL);
				setState(4939);
				((Alter_server_roleContext)_localctx).new_server_role_name = id();
				}
				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 Create_server_roleContext extends ParserRuleContext {
		public IdContext server_role;
		public IdContext server_principal;
		public TerminalNode CREATE() { return getToken(TSqlParser.CREATE, 0); }
		public TerminalNode SERVER() { return getToken(TSqlParser.SERVER, 0); }
		public TerminalNode ROLE() { return getToken(TSqlParser.ROLE, 0); }
		public List id() {
			return getRuleContexts(IdContext.class);
		}
		public IdContext id(int i) {
			return getRuleContext(IdContext.class,i);
		}
		public TerminalNode AUTHORIZATION() { return getToken(TSqlParser.AUTHORIZATION, 0); }
		public Create_server_roleContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_create_server_role; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterCreate_server_role(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitCreate_server_role(this);
		}
	}

	public final Create_server_roleContext create_server_role() throws RecognitionException {
		Create_server_roleContext _localctx = new Create_server_roleContext(_ctx, getState());
		enterRule(_localctx, 382, RULE_create_server_role);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4942);
			match(CREATE);
			setState(4943);
			match(SERVER);
			setState(4944);
			match(ROLE);
			setState(4945);
			((Create_server_roleContext)_localctx).server_role = id();
			setState(4948);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==AUTHORIZATION) {
				{
				setState(4946);
				match(AUTHORIZATION);
				setState(4947);
				((Create_server_roleContext)_localctx).server_principal = id();
				}
			}

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

	public static class Alter_server_role_pdwContext extends ParserRuleContext {
		public IdContext server_role_name;
		public IdContext login;
		public TerminalNode ALTER() { return getToken(TSqlParser.ALTER, 0); }
		public TerminalNode SERVER() { return getToken(TSqlParser.SERVER, 0); }
		public TerminalNode ROLE() { return getToken(TSqlParser.ROLE, 0); }
		public TerminalNode MEMBER() { return getToken(TSqlParser.MEMBER, 0); }
		public List id() {
			return getRuleContexts(IdContext.class);
		}
		public IdContext id(int i) {
			return getRuleContext(IdContext.class,i);
		}
		public TerminalNode ADD() { return getToken(TSqlParser.ADD, 0); }
		public TerminalNode DROP() { return getToken(TSqlParser.DROP, 0); }
		public Alter_server_role_pdwContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alter_server_role_pdw; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterAlter_server_role_pdw(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitAlter_server_role_pdw(this);
		}
	}

	public final Alter_server_role_pdwContext alter_server_role_pdw() throws RecognitionException {
		Alter_server_role_pdwContext _localctx = new Alter_server_role_pdwContext(_ctx, getState());
		enterRule(_localctx, 384, RULE_alter_server_role_pdw);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4950);
			match(ALTER);
			setState(4951);
			match(SERVER);
			setState(4952);
			match(ROLE);
			setState(4953);
			((Alter_server_role_pdwContext)_localctx).server_role_name = id();
			setState(4954);
			_la = _input.LA(1);
			if ( !(_la==ADD || _la==DROP) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			setState(4955);
			match(MEMBER);
			setState(4956);
			((Alter_server_role_pdwContext)_localctx).login = id();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Alter_serviceContext extends ParserRuleContext {
		public IdContext modified_service_name;
		public IdContext schema_name;
		public IdContext queue_name;
		public IdContext modified_contract_name;
		public TerminalNode ALTER() { return getToken(TSqlParser.ALTER, 0); }
		public TerminalNode SERVICE() { return getToken(TSqlParser.SERVICE, 0); }
		public List id() {
			return getRuleContexts(IdContext.class);
		}
		public IdContext id(int i) {
			return getRuleContext(IdContext.class,i);
		}
		public TerminalNode ON() { return getToken(TSqlParser.ON, 0); }
		public TerminalNode QUEUE() { return getToken(TSqlParser.QUEUE, 0); }
		public List ADD() { return getTokens(TSqlParser.ADD); }
		public TerminalNode ADD(int i) {
			return getToken(TSqlParser.ADD, i);
		}
		public List DROP() { return getTokens(TSqlParser.DROP); }
		public TerminalNode DROP(int i) {
			return getToken(TSqlParser.DROP, i);
		}
		public TerminalNode DOT() { return getToken(TSqlParser.DOT, 0); }
		public List COMMA() { return getTokens(TSqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(TSqlParser.COMMA, i);
		}
		public Alter_serviceContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alter_service; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterAlter_service(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitAlter_service(this);
		}
	}

	public final Alter_serviceContext alter_service() throws RecognitionException {
		Alter_serviceContext _localctx = new Alter_serviceContext(_ctx, getState());
		enterRule(_localctx, 386, RULE_alter_service);
		int _la;
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			setState(4958);
			match(ALTER);
			setState(4959);
			match(SERVICE);
			setState(4960);
			((Alter_serviceContext)_localctx).modified_service_name = id();
			setState(4968);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==ON) {
				{
				setState(4961);
				match(ON);
				setState(4962);
				match(QUEUE);
				{
				setState(4963);
				((Alter_serviceContext)_localctx).schema_name = id();
				setState(4964);
				match(DOT);
				}
				setState(4966);
				((Alter_serviceContext)_localctx).queue_name = id();
				}
			}

			setState(4977);
			_errHandler.sync(this);
			_alt = getInterpreter().adaptivePredict(_input,576,_ctx);
			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
				if ( _alt==1 ) {
					{
					{
					setState(4971);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==COMMA) {
						{
						setState(4970);
						match(COMMA);
						}
					}

					setState(4973);
					_la = _input.LA(1);
					if ( !(_la==ADD || _la==DROP) ) {
					_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					setState(4974);
					((Alter_serviceContext)_localctx).modified_contract_name = id();
					}
					} 
				}
				setState(4979);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,576,_ctx);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Create_serviceContext extends ParserRuleContext {
		public IdContext create_service_name;
		public IdContext owner_name;
		public IdContext schema_name;
		public IdContext queue_name;
		public TerminalNode CREATE() { return getToken(TSqlParser.CREATE, 0); }
		public TerminalNode SERVICE() { return getToken(TSqlParser.SERVICE, 0); }
		public TerminalNode ON() { return getToken(TSqlParser.ON, 0); }
		public TerminalNode QUEUE() { return getToken(TSqlParser.QUEUE, 0); }
		public List id() {
			return getRuleContexts(IdContext.class);
		}
		public IdContext id(int i) {
			return getRuleContext(IdContext.class,i);
		}
		public TerminalNode AUTHORIZATION() { return getToken(TSqlParser.AUTHORIZATION, 0); }
		public TerminalNode DOT() { return getToken(TSqlParser.DOT, 0); }
		public TerminalNode LR_BRACKET() { return getToken(TSqlParser.LR_BRACKET, 0); }
		public TerminalNode RR_BRACKET() { return getToken(TSqlParser.RR_BRACKET, 0); }
		public List DEFAULT() { return getTokens(TSqlParser.DEFAULT); }
		public TerminalNode DEFAULT(int i) {
			return getToken(TSqlParser.DEFAULT, i);
		}
		public List COMMA() { return getTokens(TSqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(TSqlParser.COMMA, i);
		}
		public Create_serviceContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_create_service; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterCreate_service(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitCreate_service(this);
		}
	}

	public final Create_serviceContext create_service() throws RecognitionException {
		Create_serviceContext _localctx = new Create_serviceContext(_ctx, getState());
		enterRule(_localctx, 388, RULE_create_service);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4980);
			match(CREATE);
			setState(4981);
			match(SERVICE);
			setState(4982);
			((Create_serviceContext)_localctx).create_service_name = id();
			setState(4985);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==AUTHORIZATION) {
				{
				setState(4983);
				match(AUTHORIZATION);
				setState(4984);
				((Create_serviceContext)_localctx).owner_name = id();
				}
			}

			setState(4987);
			match(ON);
			setState(4988);
			match(QUEUE);
			setState(4992);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,578,_ctx) ) {
			case 1:
				{
				setState(4989);
				((Create_serviceContext)_localctx).schema_name = id();
				setState(4990);
				match(DOT);
				}
				break;
			}
			setState(4994);
			((Create_serviceContext)_localctx).queue_name = id();
			setState(5008);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,582,_ctx) ) {
			case 1:
				{
				setState(4995);
				match(LR_BRACKET);
				setState(5003); 
				_errHandler.sync(this);
				_la = _input.LA(1);
				do {
					{
					{
					setState(4997);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==COMMA) {
						{
						setState(4996);
						match(COMMA);
						}
					}

					setState(5001);
					_errHandler.sync(this);
					switch (_input.LA(1)) {
					case CALLED:
					case DATA_COMPRESSION:
					case EVENTDATA:
					case FILENAME:
					case FILLFACTOR:
					case FORCESEEK:
					case INIT:
					case KEY:
					case MASTER:
					case MAX_MEMORY:
					case OFFSETS:
					case PAGE:
					case PUBLIC:
					case R:
					case RAW:
					case RETURN:
					case RETURNS:
					case ROWCOUNT:
					case SAFETY:
					case SERVER:
					case SID:
					case SOURCE:
					case STATE:
					case START:
					case TARGET:
					case ABSOLUTE:
					case ACCENT_SENSITIVITY:
					case ACTION:
					case ACTIVATION:
					case ACTIVE:
					case ADDRESS:
					case AES_128:
					case AES_192:
					case AES_256:
					case AFFINITY:
					case AFTER:
					case AGGREGATE:
					case ALGORITHM:
					case ALLOW_ENCRYPTED_VALUE_MODIFICATIONS:
					case ALLOW_SNAPSHOT_ISOLATION:
					case ALLOWED:
					case ANSI_NULL_DEFAULT:
					case ANSI_NULLS:
					case ANSI_PADDING:
					case ANSI_WARNINGS:
					case APPLICATION_LOG:
					case APPLY:
					case ARITHABORT:
					case ASSEMBLY:
					case AUDIT:
					case AUDIT_GUID:
					case AUTO:
					case AUTO_CLEANUP:
					case AUTO_CLOSE:
					case AUTO_CREATE_STATISTICS:
					case AUTO_SHRINK:
					case AUTO_UPDATE_STATISTICS:
					case AUTO_UPDATE_STATISTICS_ASYNC:
					case AVAILABILITY:
					case AVG:
					case BACKUP_PRIORITY:
					case BEGIN_DIALOG:
					case BIGINT:
					case BINARY_BASE64:
					case BINARY_CHECKSUM:
					case BINDING:
					case BLOB_STORAGE:
					case BROKER:
					case BROKER_INSTANCE:
					case BULK_LOGGED:
					case CALLER:
					case CAP_CPU_PERCENT:
					case CAST:
					case CATALOG:
					case CATCH:
					case CHANGE_RETENTION:
					case CHANGE_TRACKING:
					case CHECKSUM:
					case CHECKSUM_AGG:
					case CLEANUP:
					case COLLECTION:
					case COLUMN_MASTER_KEY:
					case COMMITTED:
					case COMPATIBILITY_LEVEL:
					case CONCAT:
					case CONCAT_NULL_YIELDS_NULL:
					case CONTENT:
					case CONTROL:
					case COOKIE:
					case COUNT:
					case COUNT_BIG:
					case COUNTER:
					case CPU:
					case CREATE_NEW:
					case CREATION_DISPOSITION:
					case CREDENTIAL:
					case CRYPTOGRAPHIC:
					case CURSOR_CLOSE_ON_COMMIT:
					case CURSOR_DEFAULT:
					case DATE_CORRELATION_OPTIMIZATION:
					case DATEADD:
					case DATEDIFF:
					case DATENAME:
					case DATEPART:
					case DAYS:
					case DB_CHAINING:
					case DB_FAILOVER:
					case DECRYPTION:
					case DEFAULT_DOUBLE_QUOTE:
					case DEFAULT_FULLTEXT_LANGUAGE:
					case DEFAULT_LANGUAGE:
					case DELAY:
					case DELAYED_DURABILITY:
					case DELETED:
					case DENSE_RANK:
					case DEPENDENTS:
					case DES:
					case DESCRIPTION:
					case DESX:
					case DHCP:
					case DIALOG:
					case DIRECTORY_NAME:
					case DISABLE:
					case DISABLE_BROKER:
					case DISABLED:
					case DISK_DRIVE:
					case DOCUMENT:
					case DYNAMIC:
					case EMERGENCY:
					case EMPTY:
					case ENABLE:
					case ENABLE_BROKER:
					case ENCRYPTED_VALUE:
					case ENCRYPTION:
					case ENDPOINT_URL:
					case ERROR_BROKER_CONVERSATIONS:
					case EXCLUSIVE:
					case EXECUTABLE:
					case EXIST:
					case EXPAND:
					case EXPIRY_DATE:
					case EXPLICIT:
					case FAIL_OPERATION:
					case FAILOVER_MODE:
					case FAILURE:
					case FAILURE_CONDITION_LEVEL:
					case FAST:
					case FAST_FORWARD:
					case FILEGROUP:
					case FILEGROWTH:
					case FILEPATH:
					case FILESTREAM:
					case FILTER:
					case FIRST:
					case FIRST_VALUE:
					case FOLLOWING:
					case FORCE:
					case FORCE_FAILOVER_ALLOW_DATA_LOSS:
					case FORCED:
					case FORMAT:
					case FORWARD_ONLY:
					case FULLSCAN:
					case FULLTEXT:
					case GB:
					case GETDATE:
					case GETUTCDATE:
					case GLOBAL:
					case GO:
					case GROUP_MAX_REQUESTS:
					case GROUPING:
					case GROUPING_ID:
					case HADR:
					case HASH:
					case HEALTH_CHECK_TIMEOUT:
					case HIGH:
					case HONOR_BROKER_PRIORITY:
					case HOURS:
					case IDENTITY_VALUE:
					case IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX:
					case IMMEDIATE:
					case IMPERSONATE:
					case IMPORTANCE:
					case INCREMENTAL:
					case INITIATOR:
					case INPUT:
					case INSENSITIVE:
					case INSERTED:
					case INT:
					case IP:
					case ISOLATION:
					case KB:
					case KEEP:
					case KEEPFIXED:
					case KEY_SOURCE:
					case KEYS:
					case KEYSET:
					case LAG:
					case LAST:
					case LAST_VALUE:
					case LEAD:
					case LEVEL:
					case LIST:
					case LISTENER:
					case LISTENER_URL:
					case LOB_COMPACTION:
					case LOCAL:
					case LOCATION:
					case LOCK:
					case LOCK_ESCALATION:
					case LOGIN:
					case LOOP:
					case LOW:
					case MANUAL:
					case MARK:
					case MATERIALIZED:
					case MAX:
					case MAX_CPU_PERCENT:
					case MAX_DOP:
					case MAX_FILES:
					case MAX_IOPS_PER_VOLUME:
					case MAX_MEMORY_PERCENT:
					case MAX_PROCESSES:
					case MAX_QUEUE_READERS:
					case MAX_ROLLOVER_FILES:
					case MAXDOP:
					case MAXRECURSION:
					case MAXSIZE:
					case MB:
					case MEDIUM:
					case MEMORY_OPTIMIZED_DATA:
					case MESSAGE:
					case MIN:
					case MIN_ACTIVE_ROWVERSION:
					case MIN_CPU_PERCENT:
					case MIN_IOPS_PER_VOLUME:
					case MIN_MEMORY_PERCENT:
					case MINUTES:
					case MIRROR_ADDRESS:
					case MIXED_PAGE_ALLOCATION:
					case MODE:
					case MODIFY:
					case MOVE:
					case MULTI_USER:
					case NAME:
					case NESTED_TRIGGERS:
					case NEW_ACCOUNT:
					case NEW_BROKER:
					case NEW_PASSWORD:
					case NEXT:
					case NO:
					case NO_TRUNCATE:
					case NO_WAIT:
					case NOCOUNT:
					case NODES:
					case NOEXPAND:
					case NON_TRANSACTED_ACCESS:
					case NORECOMPUTE:
					case NORECOVERY:
					case NOWAIT:
					case NTILE:
					case NUMANODE:
					case NUMBER:
					case NUMERIC_ROUNDABORT:
					case OBJECT:
					case OFFLINE:
					case OFFSET:
					case OLD_ACCOUNT:
					case ONLINE:
					case ONLY:
					case OPEN_EXISTING:
					case OPTIMISTIC:
					case OPTIMIZE:
					case OUT:
					case OUTPUT:
					case OWNER:
					case PAGE_VERIFY:
					case PARAMETERIZATION:
					case PARTITION:
					case PARTITIONS:
					case PARTNER:
					case PATH:
					case POISON_MESSAGE_HANDLING:
					case POOL:
					case PORT:
					case PRECEDING:
					case PRIMARY_ROLE:
					case PRIOR:
					case PRIORITY:
					case PRIORITY_LEVEL:
					case PRIVATE:
					case PRIVATE_KEY:
					case PRIVILEGES:
					case PROCEDURE_NAME:
					case PROPERTY:
					case PROVIDER:
					case PROVIDER_KEY_NAME:
					case QUERY:
					case QUEUE:
					case QUEUE_DELAY:
					case QUOTED_IDENTIFIER:
					case RANGE:
					case RANK:
					case RC2:
					case RC4:
					case RC4_128:
					case READ_COMMITTED_SNAPSHOT:
					case READ_ONLY:
					case READ_ONLY_ROUTING_LIST:
					case READ_WRITE:
					case READONLY:
					case REBUILD:
					case RECEIVE:
					case RECOMPILE:
					case RECOVERY:
					case RECURSIVE_TRIGGERS:
					case RELATIVE:
					case REMOTE:
					case REMOTE_SERVICE_NAME:
					case REMOVE:
					case REORGANIZE:
					case REPEATABLE:
					case REPLICA:
					case REQUEST_MAX_CPU_TIME_SEC:
					case REQUEST_MAX_MEMORY_GRANT_PERCENT:
					case REQUEST_MEMORY_GRANT_TIMEOUT_SEC:
					case REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT:
					case RESERVE_DISK_SPACE:
					case RESOURCE:
					case RESOURCE_MANAGER_LOCATION:
					case RESTRICTED_USER:
					case RETENTION:
					case ROBUST:
					case ROOT:
					case ROUTE:
					case ROW:
					case ROW_NUMBER:
					case ROWGUID:
					case ROWS:
					case SAMPLE:
					case SCHEMABINDING:
					case SCOPED:
					case SCROLL:
					case SCROLL_LOCKS:
					case SEARCH:
					case SECONDARY:
					case SECONDARY_ONLY:
					case SECONDARY_ROLE:
					case SECONDS:
					case SECRET:
					case SECURITY_LOG:
					case SEEDING_MODE:
					case SELF:
					case SEMI_SENSITIVE:
					case SEND:
					case SENT:
					case SERIALIZABLE:
					case SESSION_TIMEOUT:
					case SETERROR:
					case SHARE:
					case SHOWPLAN:
					case SIGNATURE:
					case SIMPLE:
					case SINGLE_USER:
					case SIZE:
					case SMALLINT:
					case SNAPSHOT:
					case SPATIAL_WINDOW_MAX_CELLS:
					case STANDBY:
					case START_DATE:
					case STATIC:
					case STATS_STREAM:
					case STATUS:
					case STDEV:
					case STDEVP:
					case STOPLIST:
					case STUFF:
					case SUBJECT:
					case SUM:
					case SUSPEND:
					case SYMMETRIC:
					case SYNCHRONOUS_COMMIT:
					case SYNONYM:
					case TAKE:
					case TARGET_RECOVERY_TIME:
					case TB:
					case TEXTIMAGE_ON:
					case THROW:
					case TIES:
					case TIME:
					case TIMEOUT:
					case TIMER:
					case TINYINT:
					case TORN_PAGE_DETECTION:
					case TRANSFORM_NOISE_WORDS:
					case TRIPLE_DES:
					case TRIPLE_DES_3KEY:
					case TRUSTWORTHY:
					case TRY:
					case TSQL:
					case TWO_DIGIT_YEAR_CUTOFF:
					case TYPE:
					case TYPE_WARNING:
					case UNBOUNDED:
					case UNCOMMITTED:
					case UNKNOWN:
					case UNLIMITED:
					case USING:
					case VALID_XML:
					case VALIDATION:
					case VALUE:
					case VAR:
					case VARP:
					case VIEW_METADATA:
					case VIEWS:
					case WAIT:
					case WELL_FORMED_XML:
					case WORK:
					case WORKLOAD:
					case XML:
					case XMLNAMESPACES:
					case DOUBLE_QUOTE_ID:
					case SQUARE_BRACKET_ID:
					case ID:
						{
						setState(4999);
						id();
						}
						break;
					case DEFAULT:
						{
						setState(5000);
						match(DEFAULT);
						}
						break;
					default:
						throw new NoViableAltException(this);
					}
					}
					}
					setState(5005); 
					_errHandler.sync(this);
					_la = _input.LA(1);
				} while ( _la==CALLED || ((((_la - 81)) & ~0x3f) == 0 && ((1L << (_la - 81)) & ((1L << (DATA_COMPRESSION - 81)) | (1L << (DEFAULT - 81)) | (1L << (EVENTDATA - 81)) | (1L << (FILENAME - 81)) | (1L << (FILLFACTOR - 81)) | (1L << (FORCESEEK - 81)))) != 0) || ((((_la - 159)) & ~0x3f) == 0 && ((1L << (_la - 159)) & ((1L << (INIT - 159)) | (1L << (KEY - 159)) | (1L << (MASTER - 159)) | (1L << (MAX_MEMORY - 159)))) != 0) || ((((_la - 226)) & ~0x3f) == 0 && ((1L << (_la - 226)) & ((1L << (OFFSETS - 226)) | (1L << (PAGE - 226)) | (1L << (PUBLIC - 226)) | (1L << (R - 226)) | (1L << (RAW - 226)) | (1L << (RETURN - 226)) | (1L << (RETURNS - 226)) | (1L << (ROWCOUNT - 226)))) != 0) || ((((_la - 296)) & ~0x3f) == 0 && ((1L << (_la - 296)) & ((1L << (SAFETY - 296)) | (1L << (SERVER - 296)) | (1L << (SID - 296)) | (1L << (SOURCE - 296)) | (1L << (STATE - 296)) | (1L << (START - 296)) | (1L << (TARGET - 296)))) != 0) || ((((_la - 384)) & ~0x3f) == 0 && ((1L << (_la - 384)) & ((1L << (ABSOLUTE - 384)) | (1L << (ACCENT_SENSITIVITY - 384)) | (1L << (ACTION - 384)) | (1L << (ACTIVATION - 384)) | (1L << (ACTIVE - 384)) | (1L << (ADDRESS - 384)) | (1L << (AES_128 - 384)) | (1L << (AES_192 - 384)) | (1L << (AES_256 - 384)) | (1L << (AFFINITY - 384)) | (1L << (AFTER - 384)) | (1L << (AGGREGATE - 384)) | (1L << (ALGORITHM - 384)) | (1L << (ALLOW_ENCRYPTED_VALUE_MODIFICATIONS - 384)) | (1L << (ALLOW_SNAPSHOT_ISOLATION - 384)) | (1L << (ALLOWED - 384)) | (1L << (ANSI_NULL_DEFAULT - 384)) | (1L << (ANSI_NULLS - 384)) | (1L << (ANSI_PADDING - 384)) | (1L << (ANSI_WARNINGS - 384)) | (1L << (APPLICATION_LOG - 384)) | (1L << (APPLY - 384)) | (1L << (ARITHABORT - 384)) | (1L << (ASSEMBLY - 384)) | (1L << (AUDIT - 384)) | (1L << (AUDIT_GUID - 384)) | (1L << (AUTO - 384)) | (1L << (AUTO_CLEANUP - 384)) | (1L << (AUTO_CLOSE - 384)) | (1L << (AUTO_CREATE_STATISTICS - 384)) | (1L << (AUTO_SHRINK - 384)) | (1L << (AUTO_UPDATE_STATISTICS - 384)) | (1L << (AUTO_UPDATE_STATISTICS_ASYNC - 384)) | (1L << (AVAILABILITY - 384)) | (1L << (AVG - 384)) | (1L << (BACKUP_PRIORITY - 384)) | (1L << (BEGIN_DIALOG - 384)) | (1L << (BIGINT - 384)) | (1L << (BINARY_BASE64 - 384)) | (1L << (BINARY_CHECKSUM - 384)) | (1L << (BINDING - 384)) | (1L << (BLOB_STORAGE - 384)) | (1L << (BROKER - 384)) | (1L << (BROKER_INSTANCE - 384)) | (1L << (BULK_LOGGED - 384)) | (1L << (CALLER - 384)) | (1L << (CAP_CPU_PERCENT - 384)) | (1L << (CAST - 384)) | (1L << (CATALOG - 384)) | (1L << (CATCH - 384)) | (1L << (CHANGE_RETENTION - 384)) | (1L << (CHANGE_TRACKING - 384)) | (1L << (CHECKSUM - 384)) | (1L << (CHECKSUM_AGG - 384)) | (1L << (CLEANUP - 384)) | (1L << (COLLECTION - 384)) | (1L << (COLUMN_MASTER_KEY - 384)) | (1L << (COMMITTED - 384)) | (1L << (COMPATIBILITY_LEVEL - 384)) | (1L << (CONCAT - 384)) | (1L << (CONCAT_NULL_YIELDS_NULL - 384)) | (1L << (CONTENT - 384)) | (1L << (CONTROL - 384)) | (1L << (COOKIE - 384)))) != 0) || ((((_la - 448)) & ~0x3f) == 0 && ((1L << (_la - 448)) & ((1L << (COUNT - 448)) | (1L << (COUNT_BIG - 448)) | (1L << (COUNTER - 448)) | (1L << (CPU - 448)) | (1L << (CREATE_NEW - 448)) | (1L << (CREATION_DISPOSITION - 448)) | (1L << (CREDENTIAL - 448)) | (1L << (CRYPTOGRAPHIC - 448)) | (1L << (CURSOR_CLOSE_ON_COMMIT - 448)) | (1L << (CURSOR_DEFAULT - 448)) | (1L << (DATE_CORRELATION_OPTIMIZATION - 448)) | (1L << (DATEADD - 448)) | (1L << (DATEDIFF - 448)) | (1L << (DATENAME - 448)) | (1L << (DATEPART - 448)) | (1L << (DAYS - 448)) | (1L << (DB_CHAINING - 448)) | (1L << (DB_FAILOVER - 448)) | (1L << (DECRYPTION - 448)) | (1L << (DEFAULT_DOUBLE_QUOTE - 448)) | (1L << (DEFAULT_FULLTEXT_LANGUAGE - 448)) | (1L << (DEFAULT_LANGUAGE - 448)) | (1L << (DELAY - 448)) | (1L << (DELAYED_DURABILITY - 448)) | (1L << (DELETED - 448)) | (1L << (DENSE_RANK - 448)) | (1L << (DEPENDENTS - 448)) | (1L << (DES - 448)) | (1L << (DESCRIPTION - 448)) | (1L << (DESX - 448)) | (1L << (DHCP - 448)) | (1L << (DIALOG - 448)) | (1L << (DIRECTORY_NAME - 448)) | (1L << (DISABLE - 448)) | (1L << (DISABLE_BROKER - 448)) | (1L << (DISABLED - 448)) | (1L << (DISK_DRIVE - 448)) | (1L << (DOCUMENT - 448)) | (1L << (DYNAMIC - 448)) | (1L << (EMERGENCY - 448)) | (1L << (EMPTY - 448)) | (1L << (ENABLE - 448)) | (1L << (ENABLE_BROKER - 448)) | (1L << (ENCRYPTED_VALUE - 448)) | (1L << (ENCRYPTION - 448)) | (1L << (ENDPOINT_URL - 448)) | (1L << (ERROR_BROKER_CONVERSATIONS - 448)) | (1L << (EXCLUSIVE - 448)) | (1L << (EXECUTABLE - 448)) | (1L << (EXIST - 448)) | (1L << (EXPAND - 448)) | (1L << (EXPIRY_DATE - 448)) | (1L << (EXPLICIT - 448)) | (1L << (FAIL_OPERATION - 448)) | (1L << (FAILOVER_MODE - 448)) | (1L << (FAILURE - 448)) | (1L << (FAILURE_CONDITION_LEVEL - 448)) | (1L << (FAST - 448)) | (1L << (FAST_FORWARD - 448)) | (1L << (FILEGROUP - 448)) | (1L << (FILEGROWTH - 448)) | (1L << (FILEPATH - 448)) | (1L << (FILESTREAM - 448)))) != 0) || ((((_la - 512)) & ~0x3f) == 0 && ((1L << (_la - 512)) & ((1L << (FILTER - 512)) | (1L << (FIRST - 512)) | (1L << (FIRST_VALUE - 512)) | (1L << (FOLLOWING - 512)) | (1L << (FORCE - 512)) | (1L << (FORCE_FAILOVER_ALLOW_DATA_LOSS - 512)) | (1L << (FORCED - 512)) | (1L << (FORMAT - 512)) | (1L << (FORWARD_ONLY - 512)) | (1L << (FULLSCAN - 512)) | (1L << (FULLTEXT - 512)) | (1L << (GB - 512)) | (1L << (GETDATE - 512)) | (1L << (GETUTCDATE - 512)) | (1L << (GLOBAL - 512)) | (1L << (GO - 512)) | (1L << (GROUP_MAX_REQUESTS - 512)) | (1L << (GROUPING - 512)) | (1L << (GROUPING_ID - 512)) | (1L << (HADR - 512)) | (1L << (HASH - 512)) | (1L << (HEALTH_CHECK_TIMEOUT - 512)) | (1L << (HIGH - 512)) | (1L << (HONOR_BROKER_PRIORITY - 512)) | (1L << (HOURS - 512)) | (1L << (IDENTITY_VALUE - 512)) | (1L << (IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX - 512)) | (1L << (IMMEDIATE - 512)) | (1L << (IMPERSONATE - 512)) | (1L << (IMPORTANCE - 512)) | (1L << (INCREMENTAL - 512)) | (1L << (INITIATOR - 512)) | (1L << (INPUT - 512)) | (1L << (INSENSITIVE - 512)) | (1L << (INSERTED - 512)) | (1L << (INT - 512)) | (1L << (IP - 512)) | (1L << (ISOLATION - 512)) | (1L << (KB - 512)) | (1L << (KEEP - 512)) | (1L << (KEEPFIXED - 512)) | (1L << (KEY_SOURCE - 512)) | (1L << (KEYS - 512)) | (1L << (KEYSET - 512)) | (1L << (LAG - 512)) | (1L << (LAST - 512)) | (1L << (LAST_VALUE - 512)) | (1L << (LEAD - 512)) | (1L << (LEVEL - 512)) | (1L << (LIST - 512)) | (1L << (LISTENER - 512)) | (1L << (LISTENER_URL - 512)) | (1L << (LOB_COMPACTION - 512)) | (1L << (LOCAL - 512)) | (1L << (LOCATION - 512)) | (1L << (LOCK - 512)) | (1L << (LOCK_ESCALATION - 512)) | (1L << (LOGIN - 512)) | (1L << (LOOP - 512)) | (1L << (LOW - 512)) | (1L << (MANUAL - 512)) | (1L << (MARK - 512)))) != 0) || ((((_la - 576)) & ~0x3f) == 0 && ((1L << (_la - 576)) & ((1L << (MATERIALIZED - 576)) | (1L << (MAX - 576)) | (1L << (MAX_CPU_PERCENT - 576)) | (1L << (MAX_DOP - 576)) | (1L << (MAX_FILES - 576)) | (1L << (MAX_IOPS_PER_VOLUME - 576)) | (1L << (MAX_MEMORY_PERCENT - 576)) | (1L << (MAX_PROCESSES - 576)) | (1L << (MAX_QUEUE_READERS - 576)) | (1L << (MAX_ROLLOVER_FILES - 576)) | (1L << (MAXDOP - 576)) | (1L << (MAXRECURSION - 576)) | (1L << (MAXSIZE - 576)) | (1L << (MB - 576)) | (1L << (MEDIUM - 576)) | (1L << (MEMORY_OPTIMIZED_DATA - 576)) | (1L << (MESSAGE - 576)) | (1L << (MIN - 576)) | (1L << (MIN_ACTIVE_ROWVERSION - 576)) | (1L << (MIN_CPU_PERCENT - 576)) | (1L << (MIN_IOPS_PER_VOLUME - 576)) | (1L << (MIN_MEMORY_PERCENT - 576)) | (1L << (MINUTES - 576)) | (1L << (MIRROR_ADDRESS - 576)) | (1L << (MIXED_PAGE_ALLOCATION - 576)) | (1L << (MODE - 576)) | (1L << (MODIFY - 576)) | (1L << (MOVE - 576)) | (1L << (MULTI_USER - 576)) | (1L << (NAME - 576)) | (1L << (NESTED_TRIGGERS - 576)) | (1L << (NEW_ACCOUNT - 576)) | (1L << (NEW_BROKER - 576)) | (1L << (NEW_PASSWORD - 576)) | (1L << (NEXT - 576)) | (1L << (NO - 576)) | (1L << (NO_TRUNCATE - 576)) | (1L << (NO_WAIT - 576)) | (1L << (NOCOUNT - 576)) | (1L << (NODES - 576)) | (1L << (NOEXPAND - 576)) | (1L << (NON_TRANSACTED_ACCESS - 576)) | (1L << (NORECOMPUTE - 576)) | (1L << (NORECOVERY - 576)) | (1L << (NOWAIT - 576)) | (1L << (NTILE - 576)) | (1L << (NUMANODE - 576)) | (1L << (NUMBER - 576)) | (1L << (NUMERIC_ROUNDABORT - 576)) | (1L << (OBJECT - 576)) | (1L << (OFFLINE - 576)) | (1L << (OFFSET - 576)) | (1L << (OLD_ACCOUNT - 576)) | (1L << (ONLINE - 576)) | (1L << (ONLY - 576)) | (1L << (OPEN_EXISTING - 576)) | (1L << (OPTIMISTIC - 576)) | (1L << (OPTIMIZE - 576)) | (1L << (OUT - 576)) | (1L << (OUTPUT - 576)) | (1L << (OWNER - 576)) | (1L << (PAGE_VERIFY - 576)) | (1L << (PARAMETERIZATION - 576)) | (1L << (PARTITION - 576)))) != 0) || ((((_la - 640)) & ~0x3f) == 0 && ((1L << (_la - 640)) & ((1L << (PARTITIONS - 640)) | (1L << (PARTNER - 640)) | (1L << (PATH - 640)) | (1L << (POISON_MESSAGE_HANDLING - 640)) | (1L << (POOL - 640)) | (1L << (PORT - 640)) | (1L << (PRECEDING - 640)) | (1L << (PRIMARY_ROLE - 640)) | (1L << (PRIOR - 640)) | (1L << (PRIORITY - 640)) | (1L << (PRIORITY_LEVEL - 640)) | (1L << (PRIVATE - 640)) | (1L << (PRIVATE_KEY - 640)) | (1L << (PRIVILEGES - 640)) | (1L << (PROCEDURE_NAME - 640)) | (1L << (PROPERTY - 640)) | (1L << (PROVIDER - 640)) | (1L << (PROVIDER_KEY_NAME - 640)) | (1L << (QUERY - 640)) | (1L << (QUEUE - 640)) | (1L << (QUEUE_DELAY - 640)) | (1L << (QUOTED_IDENTIFIER - 640)) | (1L << (RANGE - 640)) | (1L << (RANK - 640)) | (1L << (RC2 - 640)) | (1L << (RC4 - 640)) | (1L << (RC4_128 - 640)) | (1L << (READ_COMMITTED_SNAPSHOT - 640)) | (1L << (READ_ONLY - 640)) | (1L << (READ_ONLY_ROUTING_LIST - 640)) | (1L << (READ_WRITE - 640)) | (1L << (READONLY - 640)) | (1L << (REBUILD - 640)) | (1L << (RECEIVE - 640)) | (1L << (RECOMPILE - 640)) | (1L << (RECOVERY - 640)) | (1L << (RECURSIVE_TRIGGERS - 640)) | (1L << (RELATIVE - 640)) | (1L << (REMOTE - 640)) | (1L << (REMOTE_SERVICE_NAME - 640)) | (1L << (REMOVE - 640)) | (1L << (REORGANIZE - 640)) | (1L << (REPEATABLE - 640)) | (1L << (REPLICA - 640)) | (1L << (REQUEST_MAX_CPU_TIME_SEC - 640)) | (1L << (REQUEST_MAX_MEMORY_GRANT_PERCENT - 640)) | (1L << (REQUEST_MEMORY_GRANT_TIMEOUT_SEC - 640)) | (1L << (REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT - 640)) | (1L << (RESERVE_DISK_SPACE - 640)) | (1L << (RESOURCE - 640)) | (1L << (RESOURCE_MANAGER_LOCATION - 640)) | (1L << (RESTRICTED_USER - 640)) | (1L << (RETENTION - 640)) | (1L << (ROBUST - 640)) | (1L << (ROOT - 640)) | (1L << (ROUTE - 640)) | (1L << (ROW - 640)) | (1L << (ROW_NUMBER - 640)) | (1L << (ROWGUID - 640)) | (1L << (ROWS - 640)) | (1L << (SAMPLE - 640)) | (1L << (SCHEMABINDING - 640)) | (1L << (SCOPED - 640)) | (1L << (SCROLL - 640)))) != 0) || ((((_la - 704)) & ~0x3f) == 0 && ((1L << (_la - 704)) & ((1L << (SCROLL_LOCKS - 704)) | (1L << (SEARCH - 704)) | (1L << (SECONDARY - 704)) | (1L << (SECONDARY_ONLY - 704)) | (1L << (SECONDARY_ROLE - 704)) | (1L << (SECONDS - 704)) | (1L << (SECRET - 704)) | (1L << (SECURITY_LOG - 704)) | (1L << (SEEDING_MODE - 704)) | (1L << (SELF - 704)) | (1L << (SEMI_SENSITIVE - 704)) | (1L << (SEND - 704)) | (1L << (SENT - 704)) | (1L << (SERIALIZABLE - 704)) | (1L << (SESSION_TIMEOUT - 704)) | (1L << (SETERROR - 704)) | (1L << (SHARE - 704)) | (1L << (SHOWPLAN - 704)) | (1L << (SIGNATURE - 704)) | (1L << (SIMPLE - 704)) | (1L << (SINGLE_USER - 704)) | (1L << (SIZE - 704)) | (1L << (SMALLINT - 704)) | (1L << (SNAPSHOT - 704)) | (1L << (SPATIAL_WINDOW_MAX_CELLS - 704)) | (1L << (STANDBY - 704)) | (1L << (START_DATE - 704)) | (1L << (STATIC - 704)) | (1L << (STATS_STREAM - 704)) | (1L << (STATUS - 704)) | (1L << (STDEV - 704)) | (1L << (STDEVP - 704)) | (1L << (STOPLIST - 704)) | (1L << (STUFF - 704)) | (1L << (SUBJECT - 704)) | (1L << (SUM - 704)) | (1L << (SUSPEND - 704)) | (1L << (SYMMETRIC - 704)) | (1L << (SYNCHRONOUS_COMMIT - 704)) | (1L << (SYNONYM - 704)) | (1L << (TAKE - 704)) | (1L << (TARGET_RECOVERY_TIME - 704)) | (1L << (TB - 704)) | (1L << (TEXTIMAGE_ON - 704)) | (1L << (THROW - 704)) | (1L << (TIES - 704)) | (1L << (TIME - 704)) | (1L << (TIMEOUT - 704)) | (1L << (TIMER - 704)) | (1L << (TINYINT - 704)) | (1L << (TORN_PAGE_DETECTION - 704)) | (1L << (TRANSFORM_NOISE_WORDS - 704)) | (1L << (TRIPLE_DES - 704)) | (1L << (TRIPLE_DES_3KEY - 704)) | (1L << (TRUSTWORTHY - 704)) | (1L << (TRY - 704)) | (1L << (TSQL - 704)) | (1L << (TWO_DIGIT_YEAR_CUTOFF - 704)) | (1L << (TYPE - 704)) | (1L << (TYPE_WARNING - 704)) | (1L << (UNBOUNDED - 704)) | (1L << (UNCOMMITTED - 704)) | (1L << (UNKNOWN - 704)) | (1L << (UNLIMITED - 704)))) != 0) || ((((_la - 768)) & ~0x3f) == 0 && ((1L << (_la - 768)) & ((1L << (USING - 768)) | (1L << (VALID_XML - 768)) | (1L << (VALIDATION - 768)) | (1L << (VALUE - 768)) | (1L << (VAR - 768)) | (1L << (VARP - 768)) | (1L << (VIEW_METADATA - 768)) | (1L << (VIEWS - 768)) | (1L << (WAIT - 768)) | (1L << (WELL_FORMED_XML - 768)) | (1L << (WORK - 768)) | (1L << (WORKLOAD - 768)) | (1L << (XML - 768)) | (1L << (XMLNAMESPACES - 768)) | (1L << (DOUBLE_QUOTE_ID - 768)) | (1L << (SQUARE_BRACKET_ID - 768)) | (1L << (ID - 768)) | (1L << (COMMA - 768)))) != 0) );
				setState(5007);
				match(RR_BRACKET);
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Alter_service_master_keyContext extends ParserRuleContext {
		public Token acold_account_name;
		public Token old_password;
		public Token new_account_name;
		public Token new_password;
		public TerminalNode ALTER() { return getToken(TSqlParser.ALTER, 0); }
		public TerminalNode SERVICE() { return getToken(TSqlParser.SERVICE, 0); }
		public TerminalNode MASTER() { return getToken(TSqlParser.MASTER, 0); }
		public TerminalNode KEY() { return getToken(TSqlParser.KEY, 0); }
		public TerminalNode REGENERATE() { return getToken(TSqlParser.REGENERATE, 0); }
		public TerminalNode WITH() { return getToken(TSqlParser.WITH, 0); }
		public TerminalNode FORCE() { return getToken(TSqlParser.FORCE, 0); }
		public TerminalNode OLD_ACCOUNT() { return getToken(TSqlParser.OLD_ACCOUNT, 0); }
		public List EQUAL() { return getTokens(TSqlParser.EQUAL); }
		public TerminalNode EQUAL(int i) {
			return getToken(TSqlParser.EQUAL, i);
		}
		public TerminalNode COMMA() { return getToken(TSqlParser.COMMA, 0); }
		public TerminalNode OLD_PASSWORD() { return getToken(TSqlParser.OLD_PASSWORD, 0); }
		public TerminalNode NEW_ACCOUNT() { return getToken(TSqlParser.NEW_ACCOUNT, 0); }
		public TerminalNode NEW_PASSWORD() { return getToken(TSqlParser.NEW_PASSWORD, 0); }
		public List STRING() { return getTokens(TSqlParser.STRING); }
		public TerminalNode STRING(int i) {
			return getToken(TSqlParser.STRING, i);
		}
		public Alter_service_master_keyContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alter_service_master_key; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterAlter_service_master_key(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitAlter_service_master_key(this);
		}
	}

	public final Alter_service_master_keyContext alter_service_master_key() throws RecognitionException {
		Alter_service_master_keyContext _localctx = new Alter_service_master_keyContext(_ctx, getState());
		enterRule(_localctx, 390, RULE_alter_service_master_key);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5010);
			match(ALTER);
			setState(5011);
			match(SERVICE);
			setState(5012);
			match(MASTER);
			setState(5013);
			match(KEY);
			setState(5035);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case REGENERATE:
			case FORCE:
				{
				setState(5015);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==FORCE) {
					{
					setState(5014);
					match(FORCE);
					}
				}

				setState(5017);
				match(REGENERATE);
				}
				break;
			case WITH:
				{
				{
				setState(5018);
				match(WITH);
				setState(5033);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,584,_ctx) ) {
				case 1:
					{
					setState(5019);
					match(OLD_ACCOUNT);
					setState(5020);
					match(EQUAL);
					setState(5021);
					((Alter_service_master_keyContext)_localctx).acold_account_name = match(STRING);
					setState(5022);
					match(COMMA);
					setState(5023);
					match(OLD_PASSWORD);
					setState(5024);
					match(EQUAL);
					setState(5025);
					((Alter_service_master_keyContext)_localctx).old_password = match(STRING);
					}
					break;
				case 2:
					{
					setState(5026);
					match(NEW_ACCOUNT);
					setState(5027);
					match(EQUAL);
					setState(5028);
					((Alter_service_master_keyContext)_localctx).new_account_name = match(STRING);
					setState(5029);
					match(COMMA);
					setState(5030);
					match(NEW_PASSWORD);
					setState(5031);
					match(EQUAL);
					setState(5032);
					((Alter_service_master_keyContext)_localctx).new_password = match(STRING);
					}
					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 Alter_symmetric_keyContext extends ParserRuleContext {
		public IdContext key_name;
		public IdContext certificate_name;
		public Token password;
		public IdContext symmetric_key_name;
		public IdContext Asym_key_name;
		public TerminalNode ALTER() { return getToken(TSqlParser.ALTER, 0); }
		public List SYMMETRIC() { return getTokens(TSqlParser.SYMMETRIC); }
		public TerminalNode SYMMETRIC(int i) {
			return getToken(TSqlParser.SYMMETRIC, i);
		}
		public List KEY() { return getTokens(TSqlParser.KEY); }
		public TerminalNode KEY(int i) {
			return getToken(TSqlParser.KEY, i);
		}
		public List id() {
			return getRuleContexts(IdContext.class);
		}
		public IdContext id(int i) {
			return getRuleContext(IdContext.class,i);
		}
		public TerminalNode ENCRYPTION() { return getToken(TSqlParser.ENCRYPTION, 0); }
		public TerminalNode BY() { return getToken(TSqlParser.BY, 0); }
		public TerminalNode ADD() { return getToken(TSqlParser.ADD, 0); }
		public TerminalNode DROP() { return getToken(TSqlParser.DROP, 0); }
		public TerminalNode CERTIFICATE() { return getToken(TSqlParser.CERTIFICATE, 0); }
		public TerminalNode PASSWORD() { return getToken(TSqlParser.PASSWORD, 0); }
		public TerminalNode EQUAL() { return getToken(TSqlParser.EQUAL, 0); }
		public TerminalNode ASYMMETRIC() { return getToken(TSqlParser.ASYMMETRIC, 0); }
		public TerminalNode STRING() { return getToken(TSqlParser.STRING, 0); }
		public Alter_symmetric_keyContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alter_symmetric_key; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterAlter_symmetric_key(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitAlter_symmetric_key(this);
		}
	}

	public final Alter_symmetric_keyContext alter_symmetric_key() throws RecognitionException {
		Alter_symmetric_keyContext _localctx = new Alter_symmetric_keyContext(_ctx, getState());
		enterRule(_localctx, 392, RULE_alter_symmetric_key);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5037);
			match(ALTER);
			setState(5038);
			match(SYMMETRIC);
			setState(5039);
			match(KEY);
			setState(5040);
			((Alter_symmetric_keyContext)_localctx).key_name = id();
			{
			setState(5041);
			_la = _input.LA(1);
			if ( !(_la==ADD || _la==DROP) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			setState(5042);
			match(ENCRYPTION);
			setState(5043);
			match(BY);
			setState(5055);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case CERTIFICATE:
				{
				setState(5044);
				match(CERTIFICATE);
				setState(5045);
				((Alter_symmetric_keyContext)_localctx).certificate_name = id();
				}
				break;
			case PASSWORD:
				{
				setState(5046);
				match(PASSWORD);
				setState(5047);
				match(EQUAL);
				setState(5048);
				((Alter_symmetric_keyContext)_localctx).password = match(STRING);
				}
				break;
			case SYMMETRIC:
				{
				setState(5049);
				match(SYMMETRIC);
				setState(5050);
				match(KEY);
				setState(5051);
				((Alter_symmetric_keyContext)_localctx).symmetric_key_name = id();
				}
				break;
			case ASYMMETRIC:
				{
				setState(5052);
				match(ASYMMETRIC);
				setState(5053);
				match(KEY);
				setState(5054);
				((Alter_symmetric_keyContext)_localctx).Asym_key_name = id();
				}
				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 Create_symmetric_keyContext extends ParserRuleContext {
		public IdContext key_name;
		public IdContext owner_name;
		public IdContext provider_name;
		public Token key_pass_phrase;
		public Token identity_phrase;
		public Token provider_key_name;
		public IdContext certificate_name;
		public Token password;
		public IdContext symmetric_key_name;
		public IdContext asym_key_name;
		public TerminalNode ALTER() { return getToken(TSqlParser.ALTER, 0); }
		public List SYMMETRIC() { return getTokens(TSqlParser.SYMMETRIC); }
		public TerminalNode SYMMETRIC(int i) {
			return getToken(TSqlParser.SYMMETRIC, i);
		}
		public List KEY() { return getTokens(TSqlParser.KEY); }
		public TerminalNode KEY(int i) {
			return getToken(TSqlParser.KEY, i);
		}
		public List id() {
			return getRuleContexts(IdContext.class);
		}
		public IdContext id(int i) {
			return getRuleContext(IdContext.class,i);
		}
		public TerminalNode WITH() { return getToken(TSqlParser.WITH, 0); }
		public TerminalNode AUTHORIZATION() { return getToken(TSqlParser.AUTHORIZATION, 0); }
		public TerminalNode FROM() { return getToken(TSqlParser.FROM, 0); }
		public TerminalNode PROVIDER() { return getToken(TSqlParser.PROVIDER, 0); }
		public TerminalNode ENCRYPTION() { return getToken(TSqlParser.ENCRYPTION, 0); }
		public TerminalNode BY() { return getToken(TSqlParser.BY, 0); }
		public TerminalNode KEY_SOURCE() { return getToken(TSqlParser.KEY_SOURCE, 0); }
		public TerminalNode EQUAL() { return getToken(TSqlParser.EQUAL, 0); }
		public TerminalNode ALGORITHM() { return getToken(TSqlParser.ALGORITHM, 0); }
		public TerminalNode IDENTITY_VALUE() { return getToken(TSqlParser.IDENTITY_VALUE, 0); }
		public TerminalNode PROVIDER_KEY_NAME() { return getToken(TSqlParser.PROVIDER_KEY_NAME, 0); }
		public TerminalNode CREATION_DISPOSITION() { return getToken(TSqlParser.CREATION_DISPOSITION, 0); }
		public TerminalNode CERTIFICATE() { return getToken(TSqlParser.CERTIFICATE, 0); }
		public TerminalNode PASSWORD() { return getToken(TSqlParser.PASSWORD, 0); }
		public TerminalNode ASYMMETRIC() { return getToken(TSqlParser.ASYMMETRIC, 0); }
		public TerminalNode STRING() { return getToken(TSqlParser.STRING, 0); }
		public TerminalNode DES() { return getToken(TSqlParser.DES, 0); }
		public TerminalNode TRIPLE_DES() { return getToken(TSqlParser.TRIPLE_DES, 0); }
		public TerminalNode TRIPLE_DES_3KEY() { return getToken(TSqlParser.TRIPLE_DES_3KEY, 0); }
		public TerminalNode RC2() { return getToken(TSqlParser.RC2, 0); }
		public TerminalNode RC4() { return getToken(TSqlParser.RC4, 0); }
		public TerminalNode RC4_128() { return getToken(TSqlParser.RC4_128, 0); }
		public TerminalNode DESX() { return getToken(TSqlParser.DESX, 0); }
		public TerminalNode AES_128() { return getToken(TSqlParser.AES_128, 0); }
		public TerminalNode AES_192() { return getToken(TSqlParser.AES_192, 0); }
		public TerminalNode AES_256() { return getToken(TSqlParser.AES_256, 0); }
		public TerminalNode CREATE_NEW() { return getToken(TSqlParser.CREATE_NEW, 0); }
		public TerminalNode OPEN_EXISTING() { return getToken(TSqlParser.OPEN_EXISTING, 0); }
		public Create_symmetric_keyContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_create_symmetric_key; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterCreate_symmetric_key(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitCreate_symmetric_key(this);
		}
	}

	public final Create_symmetric_keyContext create_symmetric_key() throws RecognitionException {
		Create_symmetric_keyContext _localctx = new Create_symmetric_keyContext(_ctx, getState());
		enterRule(_localctx, 394, RULE_create_symmetric_key);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5057);
			match(ALTER);
			setState(5058);
			match(SYMMETRIC);
			setState(5059);
			match(KEY);
			setState(5060);
			((Create_symmetric_keyContext)_localctx).key_name = id();
			setState(5063);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==AUTHORIZATION) {
				{
				setState(5061);
				match(AUTHORIZATION);
				setState(5062);
				((Create_symmetric_keyContext)_localctx).owner_name = id();
				}
			}

			setState(5068);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==FROM) {
				{
				setState(5065);
				match(FROM);
				setState(5066);
				match(PROVIDER);
				setState(5067);
				((Create_symmetric_keyContext)_localctx).provider_name = id();
				}
			}

			{
			setState(5070);
			match(WITH);
			setState(5103);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case ALGORITHM:
			case CREATION_DISPOSITION:
			case IDENTITY_VALUE:
			case KEY_SOURCE:
			case PROVIDER_KEY_NAME:
				{
				setState(5086);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case KEY_SOURCE:
					{
					setState(5071);
					match(KEY_SOURCE);
					setState(5072);
					match(EQUAL);
					setState(5073);
					((Create_symmetric_keyContext)_localctx).key_pass_phrase = match(STRING);
					}
					break;
				case ALGORITHM:
					{
					setState(5074);
					match(ALGORITHM);
					setState(5075);
					match(EQUAL);
					setState(5076);
					_la = _input.LA(1);
					if ( !(((((_la - 390)) & ~0x3f) == 0 && ((1L << (_la - 390)) & ((1L << (AES_128 - 390)) | (1L << (AES_192 - 390)) | (1L << (AES_256 - 390)))) != 0) || _la==DES || _la==DESX || ((((_la - 664)) & ~0x3f) == 0 && ((1L << (_la - 664)) & ((1L << (RC2 - 664)) | (1L << (RC4 - 664)) | (1L << (RC4_128 - 664)))) != 0) || _la==TRIPLE_DES || _la==TRIPLE_DES_3KEY) ) {
					_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					}
					break;
				case IDENTITY_VALUE:
					{
					setState(5077);
					match(IDENTITY_VALUE);
					setState(5078);
					match(EQUAL);
					setState(5079);
					((Create_symmetric_keyContext)_localctx).identity_phrase = match(STRING);
					}
					break;
				case PROVIDER_KEY_NAME:
					{
					setState(5080);
					match(PROVIDER_KEY_NAME);
					setState(5081);
					match(EQUAL);
					setState(5082);
					((Create_symmetric_keyContext)_localctx).provider_key_name = match(STRING);
					}
					break;
				case CREATION_DISPOSITION:
					{
					setState(5083);
					match(CREATION_DISPOSITION);
					setState(5084);
					match(EQUAL);
					setState(5085);
					_la = _input.LA(1);
					if ( !(_la==CREATE_NEW || _la==OPEN_EXISTING) ) {
					_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;
			case ENCRYPTION:
				{
				setState(5088);
				match(ENCRYPTION);
				setState(5089);
				match(BY);
				setState(5101);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case CERTIFICATE:
					{
					setState(5090);
					match(CERTIFICATE);
					setState(5091);
					((Create_symmetric_keyContext)_localctx).certificate_name = id();
					}
					break;
				case PASSWORD:
					{
					setState(5092);
					match(PASSWORD);
					setState(5093);
					match(EQUAL);
					setState(5094);
					((Create_symmetric_keyContext)_localctx).password = match(STRING);
					}
					break;
				case SYMMETRIC:
					{
					setState(5095);
					match(SYMMETRIC);
					setState(5096);
					match(KEY);
					setState(5097);
					((Create_symmetric_keyContext)_localctx).symmetric_key_name = id();
					}
					break;
				case ASYMMETRIC:
					{
					setState(5098);
					match(ASYMMETRIC);
					setState(5099);
					match(KEY);
					setState(5100);
					((Create_symmetric_keyContext)_localctx).asym_key_name = id();
					}
					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 Create_synonymContext extends ParserRuleContext {
		public IdContext schema_name_1;
		public IdContext synonym_name;
		public IdContext server_name;
		public IdContext database_name;
		public IdContext schema_name_2;
		public IdContext object_name;
		public IdContext database_or_schema2;
		public IdContext schema_id_2_or_object_name;
		public TerminalNode CREATE() { return getToken(TSqlParser.CREATE, 0); }
		public TerminalNode SYNONYM() { return getToken(TSqlParser.SYNONYM, 0); }
		public TerminalNode FOR() { return getToken(TSqlParser.FOR, 0); }
		public List id() {
			return getRuleContexts(IdContext.class);
		}
		public IdContext id(int i) {
			return getRuleContext(IdContext.class,i);
		}
		public List DOT() { return getTokens(TSqlParser.DOT); }
		public TerminalNode DOT(int i) {
			return getToken(TSqlParser.DOT, i);
		}
		public Create_synonymContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_create_synonym; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterCreate_synonym(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitCreate_synonym(this);
		}
	}

	public final Create_synonymContext create_synonym() throws RecognitionException {
		Create_synonymContext _localctx = new Create_synonymContext(_ctx, getState());
		enterRule(_localctx, 396, RULE_create_synonym);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5105);
			match(CREATE);
			setState(5106);
			match(SYNONYM);
			setState(5110);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,592,_ctx) ) {
			case 1:
				{
				setState(5107);
				((Create_synonymContext)_localctx).schema_name_1 = id();
				setState(5108);
				match(DOT);
				}
				break;
			}
			setState(5112);
			((Create_synonymContext)_localctx).synonym_name = id();
			setState(5113);
			match(FOR);
			setState(5140);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,598,_ctx) ) {
			case 1:
				{
				setState(5117);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,593,_ctx) ) {
				case 1:
					{
					setState(5114);
					((Create_synonymContext)_localctx).server_name = id();
					setState(5115);
					match(DOT);
					}
					break;
				}
				setState(5122);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,594,_ctx) ) {
				case 1:
					{
					setState(5119);
					((Create_synonymContext)_localctx).database_name = id();
					setState(5120);
					match(DOT);
					}
					break;
				}
				setState(5127);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,595,_ctx) ) {
				case 1:
					{
					setState(5124);
					((Create_synonymContext)_localctx).schema_name_2 = id();
					setState(5125);
					match(DOT);
					}
					break;
				}
				setState(5129);
				((Create_synonymContext)_localctx).object_name = id();
				}
				break;
			case 2:
				{
				setState(5133);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,596,_ctx) ) {
				case 1:
					{
					setState(5130);
					((Create_synonymContext)_localctx).database_or_schema2 = id();
					setState(5131);
					match(DOT);
					}
					break;
				}
				setState(5138);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,597,_ctx) ) {
				case 1:
					{
					setState(5135);
					((Create_synonymContext)_localctx).schema_id_2_or_object_name = id();
					setState(5136);
					match(DOT);
					}
					break;
				}
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Alter_userContext extends ParserRuleContext {
		public IdContext username;
		public IdContext newusername;
		public IdContext schema_name;
		public IdContext loginame;
		public Token lcid;
		public IdContext language_name_or_alias;
		public TerminalNode ALTER() { return getToken(TSqlParser.ALTER, 0); }
		public TerminalNode USER() { return getToken(TSqlParser.USER, 0); }
		public TerminalNode WITH() { return getToken(TSqlParser.WITH, 0); }
		public List id() {
			return getRuleContexts(IdContext.class);
		}
		public IdContext id(int i) {
			return getRuleContext(IdContext.class,i);
		}
		public List NAME() { return getTokens(TSqlParser.NAME); }
		public TerminalNode NAME(int i) {
			return getToken(TSqlParser.NAME, i);
		}
		public List EQUAL() { return getTokens(TSqlParser.EQUAL); }
		public TerminalNode EQUAL(int i) {
			return getToken(TSqlParser.EQUAL, i);
		}
		public List DEFAULT_SCHEMA() { return getTokens(TSqlParser.DEFAULT_SCHEMA); }
		public TerminalNode DEFAULT_SCHEMA(int i) {
			return getToken(TSqlParser.DEFAULT_SCHEMA, i);
		}
		public List LOGIN() { return getTokens(TSqlParser.LOGIN); }
		public TerminalNode LOGIN(int i) {
			return getToken(TSqlParser.LOGIN, i);
		}
		public List PASSWORD() { return getTokens(TSqlParser.PASSWORD); }
		public TerminalNode PASSWORD(int i) {
			return getToken(TSqlParser.PASSWORD, i);
		}
		public List STRING() { return getTokens(TSqlParser.STRING); }
		public TerminalNode STRING(int i) {
			return getToken(TSqlParser.STRING, i);
		}
		public List DEFAULT_LANGUAGE() { return getTokens(TSqlParser.DEFAULT_LANGUAGE); }
		public TerminalNode DEFAULT_LANGUAGE(int i) {
			return getToken(TSqlParser.DEFAULT_LANGUAGE, i);
		}
		public List ALLOW_ENCRYPTED_VALUE_MODIFICATIONS() { return getTokens(TSqlParser.ALLOW_ENCRYPTED_VALUE_MODIFICATIONS); }
		public TerminalNode ALLOW_ENCRYPTED_VALUE_MODIFICATIONS(int i) {
			return getToken(TSqlParser.ALLOW_ENCRYPTED_VALUE_MODIFICATIONS, i);
		}
		public List ON() { return getTokens(TSqlParser.ON); }
		public TerminalNode ON(int i) {
			return getToken(TSqlParser.ON, i);
		}
		public List OFF() { return getTokens(TSqlParser.OFF); }
		public TerminalNode OFF(int i) {
			return getToken(TSqlParser.OFF, i);
		}
		public List NULL() { return getTokens(TSqlParser.NULL); }
		public TerminalNode NULL(int i) {
			return getToken(TSqlParser.NULL, i);
		}
		public List NONE() { return getTokens(TSqlParser.NONE); }
		public TerminalNode NONE(int i) {
			return getToken(TSqlParser.NONE, i);
		}
		public List COMMA() { return getTokens(TSqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(TSqlParser.COMMA, i);
		}
		public List OLD_PASSWORD() { return getTokens(TSqlParser.OLD_PASSWORD); }
		public TerminalNode OLD_PASSWORD(int i) {
			return getToken(TSqlParser.OLD_PASSWORD, i);
		}
		public List DECIMAL() { return getTokens(TSqlParser.DECIMAL); }
		public TerminalNode DECIMAL(int i) {
			return getToken(TSqlParser.DECIMAL, i);
		}
		public Alter_userContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alter_user; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterAlter_user(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitAlter_user(this);
		}
	}

	public final Alter_userContext alter_user() throws RecognitionException {
		Alter_userContext _localctx = new Alter_userContext(_ctx, getState());
		enterRule(_localctx, 398, RULE_alter_user);
		int _la;
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			setState(5142);
			match(ALTER);
			setState(5143);
			match(USER);
			setState(5144);
			((Alter_userContext)_localctx).username = id();
			setState(5145);
			match(WITH);
			setState(5196); 
			_errHandler.sync(this);
			_alt = 1;
			do {
				switch (_alt) {
				case 1:
					{
					setState(5196);
					_errHandler.sync(this);
					switch ( getInterpreter().adaptivePredict(_input,608,_ctx) ) {
					case 1:
						{
						setState(5147);
						_errHandler.sync(this);
						_la = _input.LA(1);
						if (_la==COMMA) {
							{
							setState(5146);
							match(COMMA);
							}
						}

						setState(5149);
						match(NAME);
						setState(5150);
						match(EQUAL);
						setState(5151);
						((Alter_userContext)_localctx).newusername = id();
						}
						break;
					case 2:
						{
						setState(5153);
						_errHandler.sync(this);
						_la = _input.LA(1);
						if (_la==COMMA) {
							{
							setState(5152);
							match(COMMA);
							}
						}

						setState(5155);
						match(DEFAULT_SCHEMA);
						setState(5156);
						match(EQUAL);
						setState(5159);
						_errHandler.sync(this);
						switch (_input.LA(1)) {
						case CALLED:
						case DATA_COMPRESSION:
						case EVENTDATA:
						case FILENAME:
						case FILLFACTOR:
						case FORCESEEK:
						case INIT:
						case KEY:
						case MASTER:
						case MAX_MEMORY:
						case OFFSETS:
						case PAGE:
						case PUBLIC:
						case R:
						case RAW:
						case RETURN:
						case RETURNS:
						case ROWCOUNT:
						case SAFETY:
						case SERVER:
						case SID:
						case SOURCE:
						case STATE:
						case START:
						case TARGET:
						case ABSOLUTE:
						case ACCENT_SENSITIVITY:
						case ACTION:
						case ACTIVATION:
						case ACTIVE:
						case ADDRESS:
						case AES_128:
						case AES_192:
						case AES_256:
						case AFFINITY:
						case AFTER:
						case AGGREGATE:
						case ALGORITHM:
						case ALLOW_ENCRYPTED_VALUE_MODIFICATIONS:
						case ALLOW_SNAPSHOT_ISOLATION:
						case ALLOWED:
						case ANSI_NULL_DEFAULT:
						case ANSI_NULLS:
						case ANSI_PADDING:
						case ANSI_WARNINGS:
						case APPLICATION_LOG:
						case APPLY:
						case ARITHABORT:
						case ASSEMBLY:
						case AUDIT:
						case AUDIT_GUID:
						case AUTO:
						case AUTO_CLEANUP:
						case AUTO_CLOSE:
						case AUTO_CREATE_STATISTICS:
						case AUTO_SHRINK:
						case AUTO_UPDATE_STATISTICS:
						case AUTO_UPDATE_STATISTICS_ASYNC:
						case AVAILABILITY:
						case AVG:
						case BACKUP_PRIORITY:
						case BEGIN_DIALOG:
						case BIGINT:
						case BINARY_BASE64:
						case BINARY_CHECKSUM:
						case BINDING:
						case BLOB_STORAGE:
						case BROKER:
						case BROKER_INSTANCE:
						case BULK_LOGGED:
						case CALLER:
						case CAP_CPU_PERCENT:
						case CAST:
						case CATALOG:
						case CATCH:
						case CHANGE_RETENTION:
						case CHANGE_TRACKING:
						case CHECKSUM:
						case CHECKSUM_AGG:
						case CLEANUP:
						case COLLECTION:
						case COLUMN_MASTER_KEY:
						case COMMITTED:
						case COMPATIBILITY_LEVEL:
						case CONCAT:
						case CONCAT_NULL_YIELDS_NULL:
						case CONTENT:
						case CONTROL:
						case COOKIE:
						case COUNT:
						case COUNT_BIG:
						case COUNTER:
						case CPU:
						case CREATE_NEW:
						case CREATION_DISPOSITION:
						case CREDENTIAL:
						case CRYPTOGRAPHIC:
						case CURSOR_CLOSE_ON_COMMIT:
						case CURSOR_DEFAULT:
						case DATE_CORRELATION_OPTIMIZATION:
						case DATEADD:
						case DATEDIFF:
						case DATENAME:
						case DATEPART:
						case DAYS:
						case DB_CHAINING:
						case DB_FAILOVER:
						case DECRYPTION:
						case DEFAULT_DOUBLE_QUOTE:
						case DEFAULT_FULLTEXT_LANGUAGE:
						case DEFAULT_LANGUAGE:
						case DELAY:
						case DELAYED_DURABILITY:
						case DELETED:
						case DENSE_RANK:
						case DEPENDENTS:
						case DES:
						case DESCRIPTION:
						case DESX:
						case DHCP:
						case DIALOG:
						case DIRECTORY_NAME:
						case DISABLE:
						case DISABLE_BROKER:
						case DISABLED:
						case DISK_DRIVE:
						case DOCUMENT:
						case DYNAMIC:
						case EMERGENCY:
						case EMPTY:
						case ENABLE:
						case ENABLE_BROKER:
						case ENCRYPTED_VALUE:
						case ENCRYPTION:
						case ENDPOINT_URL:
						case ERROR_BROKER_CONVERSATIONS:
						case EXCLUSIVE:
						case EXECUTABLE:
						case EXIST:
						case EXPAND:
						case EXPIRY_DATE:
						case EXPLICIT:
						case FAIL_OPERATION:
						case FAILOVER_MODE:
						case FAILURE:
						case FAILURE_CONDITION_LEVEL:
						case FAST:
						case FAST_FORWARD:
						case FILEGROUP:
						case FILEGROWTH:
						case FILEPATH:
						case FILESTREAM:
						case FILTER:
						case FIRST:
						case FIRST_VALUE:
						case FOLLOWING:
						case FORCE:
						case FORCE_FAILOVER_ALLOW_DATA_LOSS:
						case FORCED:
						case FORMAT:
						case FORWARD_ONLY:
						case FULLSCAN:
						case FULLTEXT:
						case GB:
						case GETDATE:
						case GETUTCDATE:
						case GLOBAL:
						case GO:
						case GROUP_MAX_REQUESTS:
						case GROUPING:
						case GROUPING_ID:
						case HADR:
						case HASH:
						case HEALTH_CHECK_TIMEOUT:
						case HIGH:
						case HONOR_BROKER_PRIORITY:
						case HOURS:
						case IDENTITY_VALUE:
						case IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX:
						case IMMEDIATE:
						case IMPERSONATE:
						case IMPORTANCE:
						case INCREMENTAL:
						case INITIATOR:
						case INPUT:
						case INSENSITIVE:
						case INSERTED:
						case INT:
						case IP:
						case ISOLATION:
						case KB:
						case KEEP:
						case KEEPFIXED:
						case KEY_SOURCE:
						case KEYS:
						case KEYSET:
						case LAG:
						case LAST:
						case LAST_VALUE:
						case LEAD:
						case LEVEL:
						case LIST:
						case LISTENER:
						case LISTENER_URL:
						case LOB_COMPACTION:
						case LOCAL:
						case LOCATION:
						case LOCK:
						case LOCK_ESCALATION:
						case LOGIN:
						case LOOP:
						case LOW:
						case MANUAL:
						case MARK:
						case MATERIALIZED:
						case MAX:
						case MAX_CPU_PERCENT:
						case MAX_DOP:
						case MAX_FILES:
						case MAX_IOPS_PER_VOLUME:
						case MAX_MEMORY_PERCENT:
						case MAX_PROCESSES:
						case MAX_QUEUE_READERS:
						case MAX_ROLLOVER_FILES:
						case MAXDOP:
						case MAXRECURSION:
						case MAXSIZE:
						case MB:
						case MEDIUM:
						case MEMORY_OPTIMIZED_DATA:
						case MESSAGE:
						case MIN:
						case MIN_ACTIVE_ROWVERSION:
						case MIN_CPU_PERCENT:
						case MIN_IOPS_PER_VOLUME:
						case MIN_MEMORY_PERCENT:
						case MINUTES:
						case MIRROR_ADDRESS:
						case MIXED_PAGE_ALLOCATION:
						case MODE:
						case MODIFY:
						case MOVE:
						case MULTI_USER:
						case NAME:
						case NESTED_TRIGGERS:
						case NEW_ACCOUNT:
						case NEW_BROKER:
						case NEW_PASSWORD:
						case NEXT:
						case NO:
						case NO_TRUNCATE:
						case NO_WAIT:
						case NOCOUNT:
						case NODES:
						case NOEXPAND:
						case NON_TRANSACTED_ACCESS:
						case NORECOMPUTE:
						case NORECOVERY:
						case NOWAIT:
						case NTILE:
						case NUMANODE:
						case NUMBER:
						case NUMERIC_ROUNDABORT:
						case OBJECT:
						case OFFLINE:
						case OFFSET:
						case OLD_ACCOUNT:
						case ONLINE:
						case ONLY:
						case OPEN_EXISTING:
						case OPTIMISTIC:
						case OPTIMIZE:
						case OUT:
						case OUTPUT:
						case OWNER:
						case PAGE_VERIFY:
						case PARAMETERIZATION:
						case PARTITION:
						case PARTITIONS:
						case PARTNER:
						case PATH:
						case POISON_MESSAGE_HANDLING:
						case POOL:
						case PORT:
						case PRECEDING:
						case PRIMARY_ROLE:
						case PRIOR:
						case PRIORITY:
						case PRIORITY_LEVEL:
						case PRIVATE:
						case PRIVATE_KEY:
						case PRIVILEGES:
						case PROCEDURE_NAME:
						case PROPERTY:
						case PROVIDER:
						case PROVIDER_KEY_NAME:
						case QUERY:
						case QUEUE:
						case QUEUE_DELAY:
						case QUOTED_IDENTIFIER:
						case RANGE:
						case RANK:
						case RC2:
						case RC4:
						case RC4_128:
						case READ_COMMITTED_SNAPSHOT:
						case READ_ONLY:
						case READ_ONLY_ROUTING_LIST:
						case READ_WRITE:
						case READONLY:
						case REBUILD:
						case RECEIVE:
						case RECOMPILE:
						case RECOVERY:
						case RECURSIVE_TRIGGERS:
						case RELATIVE:
						case REMOTE:
						case REMOTE_SERVICE_NAME:
						case REMOVE:
						case REORGANIZE:
						case REPEATABLE:
						case REPLICA:
						case REQUEST_MAX_CPU_TIME_SEC:
						case REQUEST_MAX_MEMORY_GRANT_PERCENT:
						case REQUEST_MEMORY_GRANT_TIMEOUT_SEC:
						case REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT:
						case RESERVE_DISK_SPACE:
						case RESOURCE:
						case RESOURCE_MANAGER_LOCATION:
						case RESTRICTED_USER:
						case RETENTION:
						case ROBUST:
						case ROOT:
						case ROUTE:
						case ROW:
						case ROW_NUMBER:
						case ROWGUID:
						case ROWS:
						case SAMPLE:
						case SCHEMABINDING:
						case SCOPED:
						case SCROLL:
						case SCROLL_LOCKS:
						case SEARCH:
						case SECONDARY:
						case SECONDARY_ONLY:
						case SECONDARY_ROLE:
						case SECONDS:
						case SECRET:
						case SECURITY_LOG:
						case SEEDING_MODE:
						case SELF:
						case SEMI_SENSITIVE:
						case SEND:
						case SENT:
						case SERIALIZABLE:
						case SESSION_TIMEOUT:
						case SETERROR:
						case SHARE:
						case SHOWPLAN:
						case SIGNATURE:
						case SIMPLE:
						case SINGLE_USER:
						case SIZE:
						case SMALLINT:
						case SNAPSHOT:
						case SPATIAL_WINDOW_MAX_CELLS:
						case STANDBY:
						case START_DATE:
						case STATIC:
						case STATS_STREAM:
						case STATUS:
						case STDEV:
						case STDEVP:
						case STOPLIST:
						case STUFF:
						case SUBJECT:
						case SUM:
						case SUSPEND:
						case SYMMETRIC:
						case SYNCHRONOUS_COMMIT:
						case SYNONYM:
						case TAKE:
						case TARGET_RECOVERY_TIME:
						case TB:
						case TEXTIMAGE_ON:
						case THROW:
						case TIES:
						case TIME:
						case TIMEOUT:
						case TIMER:
						case TINYINT:
						case TORN_PAGE_DETECTION:
						case TRANSFORM_NOISE_WORDS:
						case TRIPLE_DES:
						case TRIPLE_DES_3KEY:
						case TRUSTWORTHY:
						case TRY:
						case TSQL:
						case TWO_DIGIT_YEAR_CUTOFF:
						case TYPE:
						case TYPE_WARNING:
						case UNBOUNDED:
						case UNCOMMITTED:
						case UNKNOWN:
						case UNLIMITED:
						case USING:
						case VALID_XML:
						case VALIDATION:
						case VALUE:
						case VAR:
						case VARP:
						case VIEW_METADATA:
						case VIEWS:
						case WAIT:
						case WELL_FORMED_XML:
						case WORK:
						case WORKLOAD:
						case XML:
						case XMLNAMESPACES:
						case DOUBLE_QUOTE_ID:
						case SQUARE_BRACKET_ID:
						case ID:
							{
							setState(5157);
							((Alter_userContext)_localctx).schema_name = id();
							}
							break;
						case NULL:
							{
							setState(5158);
							match(NULL);
							}
							break;
						default:
							throw new NoViableAltException(this);
						}
						}
						break;
					case 3:
						{
						setState(5162);
						_errHandler.sync(this);
						_la = _input.LA(1);
						if (_la==COMMA) {
							{
							setState(5161);
							match(COMMA);
							}
						}

						setState(5164);
						match(LOGIN);
						setState(5165);
						match(EQUAL);
						setState(5166);
						((Alter_userContext)_localctx).loginame = id();
						}
						break;
					case 4:
						{
						setState(5168);
						_errHandler.sync(this);
						_la = _input.LA(1);
						if (_la==COMMA) {
							{
							setState(5167);
							match(COMMA);
							}
						}

						setState(5170);
						match(PASSWORD);
						setState(5171);
						match(EQUAL);
						setState(5172);
						match(STRING);
						setState(5176); 
						_errHandler.sync(this);
						_la = _input.LA(1);
						do {
							{
							{
							setState(5173);
							match(OLD_PASSWORD);
							setState(5174);
							match(EQUAL);
							setState(5175);
							match(STRING);
							}
							}
							setState(5178); 
							_errHandler.sync(this);
							_la = _input.LA(1);
						} while ( _la==OLD_PASSWORD );
						}
						break;
					case 5:
						{
						setState(5181);
						_errHandler.sync(this);
						_la = _input.LA(1);
						if (_la==COMMA) {
							{
							setState(5180);
							match(COMMA);
							}
						}

						setState(5183);
						match(DEFAULT_LANGUAGE);
						setState(5184);
						match(EQUAL);
						setState(5188);
						_errHandler.sync(this);
						switch (_input.LA(1)) {
						case NONE:
							{
							setState(5185);
							match(NONE);
							}
							break;
						case DECIMAL:
							{
							setState(5186);
							((Alter_userContext)_localctx).lcid = match(DECIMAL);
							}
							break;
						case CALLED:
						case DATA_COMPRESSION:
						case EVENTDATA:
						case FILENAME:
						case FILLFACTOR:
						case FORCESEEK:
						case INIT:
						case KEY:
						case MASTER:
						case MAX_MEMORY:
						case OFFSETS:
						case PAGE:
						case PUBLIC:
						case R:
						case RAW:
						case RETURN:
						case RETURNS:
						case ROWCOUNT:
						case SAFETY:
						case SERVER:
						case SID:
						case SOURCE:
						case STATE:
						case START:
						case TARGET:
						case ABSOLUTE:
						case ACCENT_SENSITIVITY:
						case ACTION:
						case ACTIVATION:
						case ACTIVE:
						case ADDRESS:
						case AES_128:
						case AES_192:
						case AES_256:
						case AFFINITY:
						case AFTER:
						case AGGREGATE:
						case ALGORITHM:
						case ALLOW_ENCRYPTED_VALUE_MODIFICATIONS:
						case ALLOW_SNAPSHOT_ISOLATION:
						case ALLOWED:
						case ANSI_NULL_DEFAULT:
						case ANSI_NULLS:
						case ANSI_PADDING:
						case ANSI_WARNINGS:
						case APPLICATION_LOG:
						case APPLY:
						case ARITHABORT:
						case ASSEMBLY:
						case AUDIT:
						case AUDIT_GUID:
						case AUTO:
						case AUTO_CLEANUP:
						case AUTO_CLOSE:
						case AUTO_CREATE_STATISTICS:
						case AUTO_SHRINK:
						case AUTO_UPDATE_STATISTICS:
						case AUTO_UPDATE_STATISTICS_ASYNC:
						case AVAILABILITY:
						case AVG:
						case BACKUP_PRIORITY:
						case BEGIN_DIALOG:
						case BIGINT:
						case BINARY_BASE64:
						case BINARY_CHECKSUM:
						case BINDING:
						case BLOB_STORAGE:
						case BROKER:
						case BROKER_INSTANCE:
						case BULK_LOGGED:
						case CALLER:
						case CAP_CPU_PERCENT:
						case CAST:
						case CATALOG:
						case CATCH:
						case CHANGE_RETENTION:
						case CHANGE_TRACKING:
						case CHECKSUM:
						case CHECKSUM_AGG:
						case CLEANUP:
						case COLLECTION:
						case COLUMN_MASTER_KEY:
						case COMMITTED:
						case COMPATIBILITY_LEVEL:
						case CONCAT:
						case CONCAT_NULL_YIELDS_NULL:
						case CONTENT:
						case CONTROL:
						case COOKIE:
						case COUNT:
						case COUNT_BIG:
						case COUNTER:
						case CPU:
						case CREATE_NEW:
						case CREATION_DISPOSITION:
						case CREDENTIAL:
						case CRYPTOGRAPHIC:
						case CURSOR_CLOSE_ON_COMMIT:
						case CURSOR_DEFAULT:
						case DATE_CORRELATION_OPTIMIZATION:
						case DATEADD:
						case DATEDIFF:
						case DATENAME:
						case DATEPART:
						case DAYS:
						case DB_CHAINING:
						case DB_FAILOVER:
						case DECRYPTION:
						case DEFAULT_DOUBLE_QUOTE:
						case DEFAULT_FULLTEXT_LANGUAGE:
						case DEFAULT_LANGUAGE:
						case DELAY:
						case DELAYED_DURABILITY:
						case DELETED:
						case DENSE_RANK:
						case DEPENDENTS:
						case DES:
						case DESCRIPTION:
						case DESX:
						case DHCP:
						case DIALOG:
						case DIRECTORY_NAME:
						case DISABLE:
						case DISABLE_BROKER:
						case DISABLED:
						case DISK_DRIVE:
						case DOCUMENT:
						case DYNAMIC:
						case EMERGENCY:
						case EMPTY:
						case ENABLE:
						case ENABLE_BROKER:
						case ENCRYPTED_VALUE:
						case ENCRYPTION:
						case ENDPOINT_URL:
						case ERROR_BROKER_CONVERSATIONS:
						case EXCLUSIVE:
						case EXECUTABLE:
						case EXIST:
						case EXPAND:
						case EXPIRY_DATE:
						case EXPLICIT:
						case FAIL_OPERATION:
						case FAILOVER_MODE:
						case FAILURE:
						case FAILURE_CONDITION_LEVEL:
						case FAST:
						case FAST_FORWARD:
						case FILEGROUP:
						case FILEGROWTH:
						case FILEPATH:
						case FILESTREAM:
						case FILTER:
						case FIRST:
						case FIRST_VALUE:
						case FOLLOWING:
						case FORCE:
						case FORCE_FAILOVER_ALLOW_DATA_LOSS:
						case FORCED:
						case FORMAT:
						case FORWARD_ONLY:
						case FULLSCAN:
						case FULLTEXT:
						case GB:
						case GETDATE:
						case GETUTCDATE:
						case GLOBAL:
						case GO:
						case GROUP_MAX_REQUESTS:
						case GROUPING:
						case GROUPING_ID:
						case HADR:
						case HASH:
						case HEALTH_CHECK_TIMEOUT:
						case HIGH:
						case HONOR_BROKER_PRIORITY:
						case HOURS:
						case IDENTITY_VALUE:
						case IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX:
						case IMMEDIATE:
						case IMPERSONATE:
						case IMPORTANCE:
						case INCREMENTAL:
						case INITIATOR:
						case INPUT:
						case INSENSITIVE:
						case INSERTED:
						case INT:
						case IP:
						case ISOLATION:
						case KB:
						case KEEP:
						case KEEPFIXED:
						case KEY_SOURCE:
						case KEYS:
						case KEYSET:
						case LAG:
						case LAST:
						case LAST_VALUE:
						case LEAD:
						case LEVEL:
						case LIST:
						case LISTENER:
						case LISTENER_URL:
						case LOB_COMPACTION:
						case LOCAL:
						case LOCATION:
						case LOCK:
						case LOCK_ESCALATION:
						case LOGIN:
						case LOOP:
						case LOW:
						case MANUAL:
						case MARK:
						case MATERIALIZED:
						case MAX:
						case MAX_CPU_PERCENT:
						case MAX_DOP:
						case MAX_FILES:
						case MAX_IOPS_PER_VOLUME:
						case MAX_MEMORY_PERCENT:
						case MAX_PROCESSES:
						case MAX_QUEUE_READERS:
						case MAX_ROLLOVER_FILES:
						case MAXDOP:
						case MAXRECURSION:
						case MAXSIZE:
						case MB:
						case MEDIUM:
						case MEMORY_OPTIMIZED_DATA:
						case MESSAGE:
						case MIN:
						case MIN_ACTIVE_ROWVERSION:
						case MIN_CPU_PERCENT:
						case MIN_IOPS_PER_VOLUME:
						case MIN_MEMORY_PERCENT:
						case MINUTES:
						case MIRROR_ADDRESS:
						case MIXED_PAGE_ALLOCATION:
						case MODE:
						case MODIFY:
						case MOVE:
						case MULTI_USER:
						case NAME:
						case NESTED_TRIGGERS:
						case NEW_ACCOUNT:
						case NEW_BROKER:
						case NEW_PASSWORD:
						case NEXT:
						case NO:
						case NO_TRUNCATE:
						case NO_WAIT:
						case NOCOUNT:
						case NODES:
						case NOEXPAND:
						case NON_TRANSACTED_ACCESS:
						case NORECOMPUTE:
						case NORECOVERY:
						case NOWAIT:
						case NTILE:
						case NUMANODE:
						case NUMBER:
						case NUMERIC_ROUNDABORT:
						case OBJECT:
						case OFFLINE:
						case OFFSET:
						case OLD_ACCOUNT:
						case ONLINE:
						case ONLY:
						case OPEN_EXISTING:
						case OPTIMISTIC:
						case OPTIMIZE:
						case OUT:
						case OUTPUT:
						case OWNER:
						case PAGE_VERIFY:
						case PARAMETERIZATION:
						case PARTITION:
						case PARTITIONS:
						case PARTNER:
						case PATH:
						case POISON_MESSAGE_HANDLING:
						case POOL:
						case PORT:
						case PRECEDING:
						case PRIMARY_ROLE:
						case PRIOR:
						case PRIORITY:
						case PRIORITY_LEVEL:
						case PRIVATE:
						case PRIVATE_KEY:
						case PRIVILEGES:
						case PROCEDURE_NAME:
						case PROPERTY:
						case PROVIDER:
						case PROVIDER_KEY_NAME:
						case QUERY:
						case QUEUE:
						case QUEUE_DELAY:
						case QUOTED_IDENTIFIER:
						case RANGE:
						case RANK:
						case RC2:
						case RC4:
						case RC4_128:
						case READ_COMMITTED_SNAPSHOT:
						case READ_ONLY:
						case READ_ONLY_ROUTING_LIST:
						case READ_WRITE:
						case READONLY:
						case REBUILD:
						case RECEIVE:
						case RECOMPILE:
						case RECOVERY:
						case RECURSIVE_TRIGGERS:
						case RELATIVE:
						case REMOTE:
						case REMOTE_SERVICE_NAME:
						case REMOVE:
						case REORGANIZE:
						case REPEATABLE:
						case REPLICA:
						case REQUEST_MAX_CPU_TIME_SEC:
						case REQUEST_MAX_MEMORY_GRANT_PERCENT:
						case REQUEST_MEMORY_GRANT_TIMEOUT_SEC:
						case REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT:
						case RESERVE_DISK_SPACE:
						case RESOURCE:
						case RESOURCE_MANAGER_LOCATION:
						case RESTRICTED_USER:
						case RETENTION:
						case ROBUST:
						case ROOT:
						case ROUTE:
						case ROW:
						case ROW_NUMBER:
						case ROWGUID:
						case ROWS:
						case SAMPLE:
						case SCHEMABINDING:
						case SCOPED:
						case SCROLL:
						case SCROLL_LOCKS:
						case SEARCH:
						case SECONDARY:
						case SECONDARY_ONLY:
						case SECONDARY_ROLE:
						case SECONDS:
						case SECRET:
						case SECURITY_LOG:
						case SEEDING_MODE:
						case SELF:
						case SEMI_SENSITIVE:
						case SEND:
						case SENT:
						case SERIALIZABLE:
						case SESSION_TIMEOUT:
						case SETERROR:
						case SHARE:
						case SHOWPLAN:
						case SIGNATURE:
						case SIMPLE:
						case SINGLE_USER:
						case SIZE:
						case SMALLINT:
						case SNAPSHOT:
						case SPATIAL_WINDOW_MAX_CELLS:
						case STANDBY:
						case START_DATE:
						case STATIC:
						case STATS_STREAM:
						case STATUS:
						case STDEV:
						case STDEVP:
						case STOPLIST:
						case STUFF:
						case SUBJECT:
						case SUM:
						case SUSPEND:
						case SYMMETRIC:
						case SYNCHRONOUS_COMMIT:
						case SYNONYM:
						case TAKE:
						case TARGET_RECOVERY_TIME:
						case TB:
						case TEXTIMAGE_ON:
						case THROW:
						case TIES:
						case TIME:
						case TIMEOUT:
						case TIMER:
						case TINYINT:
						case TORN_PAGE_DETECTION:
						case TRANSFORM_NOISE_WORDS:
						case TRIPLE_DES:
						case TRIPLE_DES_3KEY:
						case TRUSTWORTHY:
						case TRY:
						case TSQL:
						case TWO_DIGIT_YEAR_CUTOFF:
						case TYPE:
						case TYPE_WARNING:
						case UNBOUNDED:
						case UNCOMMITTED:
						case UNKNOWN:
						case UNLIMITED:
						case USING:
						case VALID_XML:
						case VALIDATION:
						case VALUE:
						case VAR:
						case VARP:
						case VIEW_METADATA:
						case VIEWS:
						case WAIT:
						case WELL_FORMED_XML:
						case WORK:
						case WORKLOAD:
						case XML:
						case XMLNAMESPACES:
						case DOUBLE_QUOTE_ID:
						case SQUARE_BRACKET_ID:
						case ID:
							{
							setState(5187);
							((Alter_userContext)_localctx).language_name_or_alias = id();
							}
							break;
						default:
							throw new NoViableAltException(this);
						}
						}
						break;
					case 6:
						{
						setState(5191);
						_errHandler.sync(this);
						_la = _input.LA(1);
						if (_la==COMMA) {
							{
							setState(5190);
							match(COMMA);
							}
						}

						setState(5193);
						match(ALLOW_ENCRYPTED_VALUE_MODIFICATIONS);
						setState(5194);
						match(EQUAL);
						setState(5195);
						_la = _input.LA(1);
						if ( !(_la==OFF || _la==ON) ) {
						_errHandler.recoverInline(this);
						}
						else {
							if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
							_errHandler.reportMatch(this);
							consume();
						}
						}
						break;
					}
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				setState(5198); 
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,609,_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 Create_userContext extends ParserRuleContext {
		public IdContext user_name;
		public IdContext login_name;
		public IdContext schema_name;
		public IdContext windows_principal;
		public IdContext language_name_or_alias;
		public Token password;
		public IdContext Azure_Active_Directory_principal;
		public IdContext cert_name;
		public IdContext asym_key_name;
		public TerminalNode CREATE() { return getToken(TSqlParser.CREATE, 0); }
		public TerminalNode USER() { return getToken(TSqlParser.USER, 0); }
		public List id() {
			return getRuleContexts(IdContext.class);
		}
		public IdContext id(int i) {
			return getRuleContext(IdContext.class,i);
		}
		public TerminalNode LOGIN() { return getToken(TSqlParser.LOGIN, 0); }
		public TerminalNode WITH() { return getToken(TSqlParser.WITH, 0); }
		public TerminalNode FOR() { return getToken(TSqlParser.FOR, 0); }
		public TerminalNode FROM() { return getToken(TSqlParser.FROM, 0); }
		public List DEFAULT_SCHEMA() { return getTokens(TSqlParser.DEFAULT_SCHEMA); }
		public TerminalNode DEFAULT_SCHEMA(int i) {
			return getToken(TSqlParser.DEFAULT_SCHEMA, i);
		}
		public List EQUAL() { return getTokens(TSqlParser.EQUAL); }
		public TerminalNode EQUAL(int i) {
			return getToken(TSqlParser.EQUAL, i);
		}
		public List ALLOW_ENCRYPTED_VALUE_MODIFICATIONS() { return getTokens(TSqlParser.ALLOW_ENCRYPTED_VALUE_MODIFICATIONS); }
		public TerminalNode ALLOW_ENCRYPTED_VALUE_MODIFICATIONS(int i) {
			return getToken(TSqlParser.ALLOW_ENCRYPTED_VALUE_MODIFICATIONS, i);
		}
		public List ON() { return getTokens(TSqlParser.ON); }
		public TerminalNode ON(int i) {
			return getToken(TSqlParser.ON, i);
		}
		public List OFF() { return getTokens(TSqlParser.OFF); }
		public TerminalNode OFF(int i) {
			return getToken(TSqlParser.OFF, i);
		}
		public List COMMA() { return getTokens(TSqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(TSqlParser.COMMA, i);
		}
		public TerminalNode PASSWORD() { return getToken(TSqlParser.PASSWORD, 0); }
		public TerminalNode EXTERNAL() { return getToken(TSqlParser.EXTERNAL, 0); }
		public TerminalNode PROVIDER() { return getToken(TSqlParser.PROVIDER, 0); }
		public TerminalNode STRING() { return getToken(TSqlParser.STRING, 0); }
		public List DEFAULT_LANGUAGE() { return getTokens(TSqlParser.DEFAULT_LANGUAGE); }
		public TerminalNode DEFAULT_LANGUAGE(int i) {
			return getToken(TSqlParser.DEFAULT_LANGUAGE, i);
		}
		public List SID() { return getTokens(TSqlParser.SID); }
		public TerminalNode SID(int i) {
			return getToken(TSqlParser.SID, i);
		}
		public List BINARY() { return getTokens(TSqlParser.BINARY); }
		public TerminalNode BINARY(int i) {
			return getToken(TSqlParser.BINARY, i);
		}
		public List NONE() { return getTokens(TSqlParser.NONE); }
		public TerminalNode NONE(int i) {
			return getToken(TSqlParser.NONE, i);
		}
		public List DECIMAL() { return getTokens(TSqlParser.DECIMAL); }
		public TerminalNode DECIMAL(int i) {
			return getToken(TSqlParser.DECIMAL, i);
		}
		public TerminalNode WITHOUT() { return getToken(TSqlParser.WITHOUT, 0); }
		public TerminalNode CERTIFICATE() { return getToken(TSqlParser.CERTIFICATE, 0); }
		public TerminalNode ASYMMETRIC() { return getToken(TSqlParser.ASYMMETRIC, 0); }
		public TerminalNode KEY() { return getToken(TSqlParser.KEY, 0); }
		public Create_userContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_create_user; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterCreate_user(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitCreate_user(this);
		}
	}

	public final Create_userContext create_user() throws RecognitionException {
		Create_userContext _localctx = new Create_userContext(_ctx, getState());
		enterRule(_localctx, 400, RULE_create_user);
		int _la;
		try {
			int _alt;
			setState(5346);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,637,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(5200);
				match(CREATE);
				setState(5201);
				match(USER);
				setState(5202);
				((Create_userContext)_localctx).user_name = id();
				setState(5206);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==FOR || _la==FROM) {
					{
					setState(5203);
					_la = _input.LA(1);
					if ( !(_la==FOR || _la==FROM) ) {
					_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					setState(5204);
					match(LOGIN);
					setState(5205);
					((Create_userContext)_localctx).login_name = id();
					}
				}

				setState(5226);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,615,_ctx) ) {
				case 1:
					{
					setState(5208);
					match(WITH);
					setState(5223);
					_errHandler.sync(this);
					_alt = getInterpreter().adaptivePredict(_input,614,_ctx);
					while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
						if ( _alt==1 ) {
							{
							setState(5221);
							_errHandler.sync(this);
							switch ( getInterpreter().adaptivePredict(_input,613,_ctx) ) {
							case 1:
								{
								setState(5210);
								_errHandler.sync(this);
								_la = _input.LA(1);
								if (_la==COMMA) {
									{
									setState(5209);
									match(COMMA);
									}
								}

								setState(5212);
								match(DEFAULT_SCHEMA);
								setState(5213);
								match(EQUAL);
								setState(5214);
								((Create_userContext)_localctx).schema_name = id();
								}
								break;
							case 2:
								{
								setState(5216);
								_errHandler.sync(this);
								_la = _input.LA(1);
								if (_la==COMMA) {
									{
									setState(5215);
									match(COMMA);
									}
								}

								setState(5218);
								match(ALLOW_ENCRYPTED_VALUE_MODIFICATIONS);
								setState(5219);
								match(EQUAL);
								setState(5220);
								_la = _input.LA(1);
								if ( !(_la==OFF || _la==ON) ) {
								_errHandler.recoverInline(this);
								}
								else {
									if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
									_errHandler.reportMatch(this);
									consume();
								}
								}
								break;
							}
							} 
						}
						setState(5225);
						_errHandler.sync(this);
						_alt = getInterpreter().adaptivePredict(_input,614,_ctx);
					}
					}
					break;
				}
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(5228);
				match(CREATE);
				setState(5229);
				match(USER);
				setState(5310);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,631,_ctx) ) {
				case 1:
					{
					setState(5230);
					((Create_userContext)_localctx).windows_principal = id();
					setState(5265);
					_errHandler.sync(this);
					switch ( getInterpreter().adaptivePredict(_input,623,_ctx) ) {
					case 1:
						{
						setState(5231);
						match(WITH);
						setState(5262);
						_errHandler.sync(this);
						_alt = getInterpreter().adaptivePredict(_input,622,_ctx);
						while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
							if ( _alt==1 ) {
								{
								setState(5260);
								_errHandler.sync(this);
								switch ( getInterpreter().adaptivePredict(_input,621,_ctx) ) {
								case 1:
									{
									setState(5233);
									_errHandler.sync(this);
									_la = _input.LA(1);
									if (_la==COMMA) {
										{
										setState(5232);
										match(COMMA);
										}
									}

									setState(5235);
									match(DEFAULT_SCHEMA);
									setState(5236);
									match(EQUAL);
									setState(5237);
									((Create_userContext)_localctx).schema_name = id();
									}
									break;
								case 2:
									{
									setState(5239);
									_errHandler.sync(this);
									_la = _input.LA(1);
									if (_la==COMMA) {
										{
										setState(5238);
										match(COMMA);
										}
									}

									setState(5241);
									match(DEFAULT_LANGUAGE);
									setState(5242);
									match(EQUAL);
									setState(5246);
									_errHandler.sync(this);
									switch (_input.LA(1)) {
									case NONE:
										{
										setState(5243);
										match(NONE);
										}
										break;
									case DECIMAL:
										{
										setState(5244);
										match(DECIMAL);
										}
										break;
									case CALLED:
									case DATA_COMPRESSION:
									case EVENTDATA:
									case FILENAME:
									case FILLFACTOR:
									case FORCESEEK:
									case INIT:
									case KEY:
									case MASTER:
									case MAX_MEMORY:
									case OFFSETS:
									case PAGE:
									case PUBLIC:
									case R:
									case RAW:
									case RETURN:
									case RETURNS:
									case ROWCOUNT:
									case SAFETY:
									case SERVER:
									case SID:
									case SOURCE:
									case STATE:
									case START:
									case TARGET:
									case ABSOLUTE:
									case ACCENT_SENSITIVITY:
									case ACTION:
									case ACTIVATION:
									case ACTIVE:
									case ADDRESS:
									case AES_128:
									case AES_192:
									case AES_256:
									case AFFINITY:
									case AFTER:
									case AGGREGATE:
									case ALGORITHM:
									case ALLOW_ENCRYPTED_VALUE_MODIFICATIONS:
									case ALLOW_SNAPSHOT_ISOLATION:
									case ALLOWED:
									case ANSI_NULL_DEFAULT:
									case ANSI_NULLS:
									case ANSI_PADDING:
									case ANSI_WARNINGS:
									case APPLICATION_LOG:
									case APPLY:
									case ARITHABORT:
									case ASSEMBLY:
									case AUDIT:
									case AUDIT_GUID:
									case AUTO:
									case AUTO_CLEANUP:
									case AUTO_CLOSE:
									case AUTO_CREATE_STATISTICS:
									case AUTO_SHRINK:
									case AUTO_UPDATE_STATISTICS:
									case AUTO_UPDATE_STATISTICS_ASYNC:
									case AVAILABILITY:
									case AVG:
									case BACKUP_PRIORITY:
									case BEGIN_DIALOG:
									case BIGINT:
									case BINARY_BASE64:
									case BINARY_CHECKSUM:
									case BINDING:
									case BLOB_STORAGE:
									case BROKER:
									case BROKER_INSTANCE:
									case BULK_LOGGED:
									case CALLER:
									case CAP_CPU_PERCENT:
									case CAST:
									case CATALOG:
									case CATCH:
									case CHANGE_RETENTION:
									case CHANGE_TRACKING:
									case CHECKSUM:
									case CHECKSUM_AGG:
									case CLEANUP:
									case COLLECTION:
									case COLUMN_MASTER_KEY:
									case COMMITTED:
									case COMPATIBILITY_LEVEL:
									case CONCAT:
									case CONCAT_NULL_YIELDS_NULL:
									case CONTENT:
									case CONTROL:
									case COOKIE:
									case COUNT:
									case COUNT_BIG:
									case COUNTER:
									case CPU:
									case CREATE_NEW:
									case CREATION_DISPOSITION:
									case CREDENTIAL:
									case CRYPTOGRAPHIC:
									case CURSOR_CLOSE_ON_COMMIT:
									case CURSOR_DEFAULT:
									case DATE_CORRELATION_OPTIMIZATION:
									case DATEADD:
									case DATEDIFF:
									case DATENAME:
									case DATEPART:
									case DAYS:
									case DB_CHAINING:
									case DB_FAILOVER:
									case DECRYPTION:
									case DEFAULT_DOUBLE_QUOTE:
									case DEFAULT_FULLTEXT_LANGUAGE:
									case DEFAULT_LANGUAGE:
									case DELAY:
									case DELAYED_DURABILITY:
									case DELETED:
									case DENSE_RANK:
									case DEPENDENTS:
									case DES:
									case DESCRIPTION:
									case DESX:
									case DHCP:
									case DIALOG:
									case DIRECTORY_NAME:
									case DISABLE:
									case DISABLE_BROKER:
									case DISABLED:
									case DISK_DRIVE:
									case DOCUMENT:
									case DYNAMIC:
									case EMERGENCY:
									case EMPTY:
									case ENABLE:
									case ENABLE_BROKER:
									case ENCRYPTED_VALUE:
									case ENCRYPTION:
									case ENDPOINT_URL:
									case ERROR_BROKER_CONVERSATIONS:
									case EXCLUSIVE:
									case EXECUTABLE:
									case EXIST:
									case EXPAND:
									case EXPIRY_DATE:
									case EXPLICIT:
									case FAIL_OPERATION:
									case FAILOVER_MODE:
									case FAILURE:
									case FAILURE_CONDITION_LEVEL:
									case FAST:
									case FAST_FORWARD:
									case FILEGROUP:
									case FILEGROWTH:
									case FILEPATH:
									case FILESTREAM:
									case FILTER:
									case FIRST:
									case FIRST_VALUE:
									case FOLLOWING:
									case FORCE:
									case FORCE_FAILOVER_ALLOW_DATA_LOSS:
									case FORCED:
									case FORMAT:
									case FORWARD_ONLY:
									case FULLSCAN:
									case FULLTEXT:
									case GB:
									case GETDATE:
									case GETUTCDATE:
									case GLOBAL:
									case GO:
									case GROUP_MAX_REQUESTS:
									case GROUPING:
									case GROUPING_ID:
									case HADR:
									case HASH:
									case HEALTH_CHECK_TIMEOUT:
									case HIGH:
									case HONOR_BROKER_PRIORITY:
									case HOURS:
									case IDENTITY_VALUE:
									case IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX:
									case IMMEDIATE:
									case IMPERSONATE:
									case IMPORTANCE:
									case INCREMENTAL:
									case INITIATOR:
									case INPUT:
									case INSENSITIVE:
									case INSERTED:
									case INT:
									case IP:
									case ISOLATION:
									case KB:
									case KEEP:
									case KEEPFIXED:
									case KEY_SOURCE:
									case KEYS:
									case KEYSET:
									case LAG:
									case LAST:
									case LAST_VALUE:
									case LEAD:
									case LEVEL:
									case LIST:
									case LISTENER:
									case LISTENER_URL:
									case LOB_COMPACTION:
									case LOCAL:
									case LOCATION:
									case LOCK:
									case LOCK_ESCALATION:
									case LOGIN:
									case LOOP:
									case LOW:
									case MANUAL:
									case MARK:
									case MATERIALIZED:
									case MAX:
									case MAX_CPU_PERCENT:
									case MAX_DOP:
									case MAX_FILES:
									case MAX_IOPS_PER_VOLUME:
									case MAX_MEMORY_PERCENT:
									case MAX_PROCESSES:
									case MAX_QUEUE_READERS:
									case MAX_ROLLOVER_FILES:
									case MAXDOP:
									case MAXRECURSION:
									case MAXSIZE:
									case MB:
									case MEDIUM:
									case MEMORY_OPTIMIZED_DATA:
									case MESSAGE:
									case MIN:
									case MIN_ACTIVE_ROWVERSION:
									case MIN_CPU_PERCENT:
									case MIN_IOPS_PER_VOLUME:
									case MIN_MEMORY_PERCENT:
									case MINUTES:
									case MIRROR_ADDRESS:
									case MIXED_PAGE_ALLOCATION:
									case MODE:
									case MODIFY:
									case MOVE:
									case MULTI_USER:
									case NAME:
									case NESTED_TRIGGERS:
									case NEW_ACCOUNT:
									case NEW_BROKER:
									case NEW_PASSWORD:
									case NEXT:
									case NO:
									case NO_TRUNCATE:
									case NO_WAIT:
									case NOCOUNT:
									case NODES:
									case NOEXPAND:
									case NON_TRANSACTED_ACCESS:
									case NORECOMPUTE:
									case NORECOVERY:
									case NOWAIT:
									case NTILE:
									case NUMANODE:
									case NUMBER:
									case NUMERIC_ROUNDABORT:
									case OBJECT:
									case OFFLINE:
									case OFFSET:
									case OLD_ACCOUNT:
									case ONLINE:
									case ONLY:
									case OPEN_EXISTING:
									case OPTIMISTIC:
									case OPTIMIZE:
									case OUT:
									case OUTPUT:
									case OWNER:
									case PAGE_VERIFY:
									case PARAMETERIZATION:
									case PARTITION:
									case PARTITIONS:
									case PARTNER:
									case PATH:
									case POISON_MESSAGE_HANDLING:
									case POOL:
									case PORT:
									case PRECEDING:
									case PRIMARY_ROLE:
									case PRIOR:
									case PRIORITY:
									case PRIORITY_LEVEL:
									case PRIVATE:
									case PRIVATE_KEY:
									case PRIVILEGES:
									case PROCEDURE_NAME:
									case PROPERTY:
									case PROVIDER:
									case PROVIDER_KEY_NAME:
									case QUERY:
									case QUEUE:
									case QUEUE_DELAY:
									case QUOTED_IDENTIFIER:
									case RANGE:
									case RANK:
									case RC2:
									case RC4:
									case RC4_128:
									case READ_COMMITTED_SNAPSHOT:
									case READ_ONLY:
									case READ_ONLY_ROUTING_LIST:
									case READ_WRITE:
									case READONLY:
									case REBUILD:
									case RECEIVE:
									case RECOMPILE:
									case RECOVERY:
									case RECURSIVE_TRIGGERS:
									case RELATIVE:
									case REMOTE:
									case REMOTE_SERVICE_NAME:
									case REMOVE:
									case REORGANIZE:
									case REPEATABLE:
									case REPLICA:
									case REQUEST_MAX_CPU_TIME_SEC:
									case REQUEST_MAX_MEMORY_GRANT_PERCENT:
									case REQUEST_MEMORY_GRANT_TIMEOUT_SEC:
									case REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT:
									case RESERVE_DISK_SPACE:
									case RESOURCE:
									case RESOURCE_MANAGER_LOCATION:
									case RESTRICTED_USER:
									case RETENTION:
									case ROBUST:
									case ROOT:
									case ROUTE:
									case ROW:
									case ROW_NUMBER:
									case ROWGUID:
									case ROWS:
									case SAMPLE:
									case SCHEMABINDING:
									case SCOPED:
									case SCROLL:
									case SCROLL_LOCKS:
									case SEARCH:
									case SECONDARY:
									case SECONDARY_ONLY:
									case SECONDARY_ROLE:
									case SECONDS:
									case SECRET:
									case SECURITY_LOG:
									case SEEDING_MODE:
									case SELF:
									case SEMI_SENSITIVE:
									case SEND:
									case SENT:
									case SERIALIZABLE:
									case SESSION_TIMEOUT:
									case SETERROR:
									case SHARE:
									case SHOWPLAN:
									case SIGNATURE:
									case SIMPLE:
									case SINGLE_USER:
									case SIZE:
									case SMALLINT:
									case SNAPSHOT:
									case SPATIAL_WINDOW_MAX_CELLS:
									case STANDBY:
									case START_DATE:
									case STATIC:
									case STATS_STREAM:
									case STATUS:
									case STDEV:
									case STDEVP:
									case STOPLIST:
									case STUFF:
									case SUBJECT:
									case SUM:
									case SUSPEND:
									case SYMMETRIC:
									case SYNCHRONOUS_COMMIT:
									case SYNONYM:
									case TAKE:
									case TARGET_RECOVERY_TIME:
									case TB:
									case TEXTIMAGE_ON:
									case THROW:
									case TIES:
									case TIME:
									case TIMEOUT:
									case TIMER:
									case TINYINT:
									case TORN_PAGE_DETECTION:
									case TRANSFORM_NOISE_WORDS:
									case TRIPLE_DES:
									case TRIPLE_DES_3KEY:
									case TRUSTWORTHY:
									case TRY:
									case TSQL:
									case TWO_DIGIT_YEAR_CUTOFF:
									case TYPE:
									case TYPE_WARNING:
									case UNBOUNDED:
									case UNCOMMITTED:
									case UNKNOWN:
									case UNLIMITED:
									case USING:
									case VALID_XML:
									case VALIDATION:
									case VALUE:
									case VAR:
									case VARP:
									case VIEW_METADATA:
									case VIEWS:
									case WAIT:
									case WELL_FORMED_XML:
									case WORK:
									case WORKLOAD:
									case XML:
									case XMLNAMESPACES:
									case DOUBLE_QUOTE_ID:
									case SQUARE_BRACKET_ID:
									case ID:
										{
										setState(5245);
										((Create_userContext)_localctx).language_name_or_alias = id();
										}
										break;
									default:
										throw new NoViableAltException(this);
									}
									}
									break;
								case 3:
									{
									setState(5249);
									_errHandler.sync(this);
									_la = _input.LA(1);
									if (_la==COMMA) {
										{
										setState(5248);
										match(COMMA);
										}
									}

									setState(5251);
									match(SID);
									setState(5252);
									match(EQUAL);
									setState(5253);
									match(BINARY);
									}
									break;
								case 4:
									{
									setState(5255);
									_errHandler.sync(this);
									_la = _input.LA(1);
									if (_la==COMMA) {
										{
										setState(5254);
										match(COMMA);
										}
									}

									setState(5257);
									match(ALLOW_ENCRYPTED_VALUE_MODIFICATIONS);
									setState(5258);
									match(EQUAL);
									setState(5259);
									_la = _input.LA(1);
									if ( !(_la==OFF || _la==ON) ) {
									_errHandler.recoverInline(this);
									}
									else {
										if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
										_errHandler.reportMatch(this);
										consume();
									}
									}
									break;
								}
								} 
							}
							setState(5264);
							_errHandler.sync(this);
							_alt = getInterpreter().adaptivePredict(_input,622,_ctx);
						}
						}
						break;
					}
					}
					break;
				case 2:
					{
					setState(5267);
					((Create_userContext)_localctx).user_name = id();
					setState(5268);
					match(WITH);
					setState(5269);
					match(PASSWORD);
					setState(5270);
					match(EQUAL);
					setState(5271);
					((Create_userContext)_localctx).password = match(STRING);
					setState(5302);
					_errHandler.sync(this);
					_alt = getInterpreter().adaptivePredict(_input,630,_ctx);
					while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
						if ( _alt==1 ) {
							{
							setState(5300);
							_errHandler.sync(this);
							switch ( getInterpreter().adaptivePredict(_input,629,_ctx) ) {
							case 1:
								{
								setState(5273);
								_errHandler.sync(this);
								_la = _input.LA(1);
								if (_la==COMMA) {
									{
									setState(5272);
									match(COMMA);
									}
								}

								setState(5275);
								match(DEFAULT_SCHEMA);
								setState(5276);
								match(EQUAL);
								setState(5277);
								((Create_userContext)_localctx).schema_name = id();
								}
								break;
							case 2:
								{
								setState(5279);
								_errHandler.sync(this);
								_la = _input.LA(1);
								if (_la==COMMA) {
									{
									setState(5278);
									match(COMMA);
									}
								}

								setState(5281);
								match(DEFAULT_LANGUAGE);
								setState(5282);
								match(EQUAL);
								setState(5286);
								_errHandler.sync(this);
								switch (_input.LA(1)) {
								case NONE:
									{
									setState(5283);
									match(NONE);
									}
									break;
								case DECIMAL:
									{
									setState(5284);
									match(DECIMAL);
									}
									break;
								case CALLED:
								case DATA_COMPRESSION:
								case EVENTDATA:
								case FILENAME:
								case FILLFACTOR:
								case FORCESEEK:
								case INIT:
								case KEY:
								case MASTER:
								case MAX_MEMORY:
								case OFFSETS:
								case PAGE:
								case PUBLIC:
								case R:
								case RAW:
								case RETURN:
								case RETURNS:
								case ROWCOUNT:
								case SAFETY:
								case SERVER:
								case SID:
								case SOURCE:
								case STATE:
								case START:
								case TARGET:
								case ABSOLUTE:
								case ACCENT_SENSITIVITY:
								case ACTION:
								case ACTIVATION:
								case ACTIVE:
								case ADDRESS:
								case AES_128:
								case AES_192:
								case AES_256:
								case AFFINITY:
								case AFTER:
								case AGGREGATE:
								case ALGORITHM:
								case ALLOW_ENCRYPTED_VALUE_MODIFICATIONS:
								case ALLOW_SNAPSHOT_ISOLATION:
								case ALLOWED:
								case ANSI_NULL_DEFAULT:
								case ANSI_NULLS:
								case ANSI_PADDING:
								case ANSI_WARNINGS:
								case APPLICATION_LOG:
								case APPLY:
								case ARITHABORT:
								case ASSEMBLY:
								case AUDIT:
								case AUDIT_GUID:
								case AUTO:
								case AUTO_CLEANUP:
								case AUTO_CLOSE:
								case AUTO_CREATE_STATISTICS:
								case AUTO_SHRINK:
								case AUTO_UPDATE_STATISTICS:
								case AUTO_UPDATE_STATISTICS_ASYNC:
								case AVAILABILITY:
								case AVG:
								case BACKUP_PRIORITY:
								case BEGIN_DIALOG:
								case BIGINT:
								case BINARY_BASE64:
								case BINARY_CHECKSUM:
								case BINDING:
								case BLOB_STORAGE:
								case BROKER:
								case BROKER_INSTANCE:
								case BULK_LOGGED:
								case CALLER:
								case CAP_CPU_PERCENT:
								case CAST:
								case CATALOG:
								case CATCH:
								case CHANGE_RETENTION:
								case CHANGE_TRACKING:
								case CHECKSUM:
								case CHECKSUM_AGG:
								case CLEANUP:
								case COLLECTION:
								case COLUMN_MASTER_KEY:
								case COMMITTED:
								case COMPATIBILITY_LEVEL:
								case CONCAT:
								case CONCAT_NULL_YIELDS_NULL:
								case CONTENT:
								case CONTROL:
								case COOKIE:
								case COUNT:
								case COUNT_BIG:
								case COUNTER:
								case CPU:
								case CREATE_NEW:
								case CREATION_DISPOSITION:
								case CREDENTIAL:
								case CRYPTOGRAPHIC:
								case CURSOR_CLOSE_ON_COMMIT:
								case CURSOR_DEFAULT:
								case DATE_CORRELATION_OPTIMIZATION:
								case DATEADD:
								case DATEDIFF:
								case DATENAME:
								case DATEPART:
								case DAYS:
								case DB_CHAINING:
								case DB_FAILOVER:
								case DECRYPTION:
								case DEFAULT_DOUBLE_QUOTE:
								case DEFAULT_FULLTEXT_LANGUAGE:
								case DEFAULT_LANGUAGE:
								case DELAY:
								case DELAYED_DURABILITY:
								case DELETED:
								case DENSE_RANK:
								case DEPENDENTS:
								case DES:
								case DESCRIPTION:
								case DESX:
								case DHCP:
								case DIALOG:
								case DIRECTORY_NAME:
								case DISABLE:
								case DISABLE_BROKER:
								case DISABLED:
								case DISK_DRIVE:
								case DOCUMENT:
								case DYNAMIC:
								case EMERGENCY:
								case EMPTY:
								case ENABLE:
								case ENABLE_BROKER:
								case ENCRYPTED_VALUE:
								case ENCRYPTION:
								case ENDPOINT_URL:
								case ERROR_BROKER_CONVERSATIONS:
								case EXCLUSIVE:
								case EXECUTABLE:
								case EXIST:
								case EXPAND:
								case EXPIRY_DATE:
								case EXPLICIT:
								case FAIL_OPERATION:
								case FAILOVER_MODE:
								case FAILURE:
								case FAILURE_CONDITION_LEVEL:
								case FAST:
								case FAST_FORWARD:
								case FILEGROUP:
								case FILEGROWTH:
								case FILEPATH:
								case FILESTREAM:
								case FILTER:
								case FIRST:
								case FIRST_VALUE:
								case FOLLOWING:
								case FORCE:
								case FORCE_FAILOVER_ALLOW_DATA_LOSS:
								case FORCED:
								case FORMAT:
								case FORWARD_ONLY:
								case FULLSCAN:
								case FULLTEXT:
								case GB:
								case GETDATE:
								case GETUTCDATE:
								case GLOBAL:
								case GO:
								case GROUP_MAX_REQUESTS:
								case GROUPING:
								case GROUPING_ID:
								case HADR:
								case HASH:
								case HEALTH_CHECK_TIMEOUT:
								case HIGH:
								case HONOR_BROKER_PRIORITY:
								case HOURS:
								case IDENTITY_VALUE:
								case IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX:
								case IMMEDIATE:
								case IMPERSONATE:
								case IMPORTANCE:
								case INCREMENTAL:
								case INITIATOR:
								case INPUT:
								case INSENSITIVE:
								case INSERTED:
								case INT:
								case IP:
								case ISOLATION:
								case KB:
								case KEEP:
								case KEEPFIXED:
								case KEY_SOURCE:
								case KEYS:
								case KEYSET:
								case LAG:
								case LAST:
								case LAST_VALUE:
								case LEAD:
								case LEVEL:
								case LIST:
								case LISTENER:
								case LISTENER_URL:
								case LOB_COMPACTION:
								case LOCAL:
								case LOCATION:
								case LOCK:
								case LOCK_ESCALATION:
								case LOGIN:
								case LOOP:
								case LOW:
								case MANUAL:
								case MARK:
								case MATERIALIZED:
								case MAX:
								case MAX_CPU_PERCENT:
								case MAX_DOP:
								case MAX_FILES:
								case MAX_IOPS_PER_VOLUME:
								case MAX_MEMORY_PERCENT:
								case MAX_PROCESSES:
								case MAX_QUEUE_READERS:
								case MAX_ROLLOVER_FILES:
								case MAXDOP:
								case MAXRECURSION:
								case MAXSIZE:
								case MB:
								case MEDIUM:
								case MEMORY_OPTIMIZED_DATA:
								case MESSAGE:
								case MIN:
								case MIN_ACTIVE_ROWVERSION:
								case MIN_CPU_PERCENT:
								case MIN_IOPS_PER_VOLUME:
								case MIN_MEMORY_PERCENT:
								case MINUTES:
								case MIRROR_ADDRESS:
								case MIXED_PAGE_ALLOCATION:
								case MODE:
								case MODIFY:
								case MOVE:
								case MULTI_USER:
								case NAME:
								case NESTED_TRIGGERS:
								case NEW_ACCOUNT:
								case NEW_BROKER:
								case NEW_PASSWORD:
								case NEXT:
								case NO:
								case NO_TRUNCATE:
								case NO_WAIT:
								case NOCOUNT:
								case NODES:
								case NOEXPAND:
								case NON_TRANSACTED_ACCESS:
								case NORECOMPUTE:
								case NORECOVERY:
								case NOWAIT:
								case NTILE:
								case NUMANODE:
								case NUMBER:
								case NUMERIC_ROUNDABORT:
								case OBJECT:
								case OFFLINE:
								case OFFSET:
								case OLD_ACCOUNT:
								case ONLINE:
								case ONLY:
								case OPEN_EXISTING:
								case OPTIMISTIC:
								case OPTIMIZE:
								case OUT:
								case OUTPUT:
								case OWNER:
								case PAGE_VERIFY:
								case PARAMETERIZATION:
								case PARTITION:
								case PARTITIONS:
								case PARTNER:
								case PATH:
								case POISON_MESSAGE_HANDLING:
								case POOL:
								case PORT:
								case PRECEDING:
								case PRIMARY_ROLE:
								case PRIOR:
								case PRIORITY:
								case PRIORITY_LEVEL:
								case PRIVATE:
								case PRIVATE_KEY:
								case PRIVILEGES:
								case PROCEDURE_NAME:
								case PROPERTY:
								case PROVIDER:
								case PROVIDER_KEY_NAME:
								case QUERY:
								case QUEUE:
								case QUEUE_DELAY:
								case QUOTED_IDENTIFIER:
								case RANGE:
								case RANK:
								case RC2:
								case RC4:
								case RC4_128:
								case READ_COMMITTED_SNAPSHOT:
								case READ_ONLY:
								case READ_ONLY_ROUTING_LIST:
								case READ_WRITE:
								case READONLY:
								case REBUILD:
								case RECEIVE:
								case RECOMPILE:
								case RECOVERY:
								case RECURSIVE_TRIGGERS:
								case RELATIVE:
								case REMOTE:
								case REMOTE_SERVICE_NAME:
								case REMOVE:
								case REORGANIZE:
								case REPEATABLE:
								case REPLICA:
								case REQUEST_MAX_CPU_TIME_SEC:
								case REQUEST_MAX_MEMORY_GRANT_PERCENT:
								case REQUEST_MEMORY_GRANT_TIMEOUT_SEC:
								case REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT:
								case RESERVE_DISK_SPACE:
								case RESOURCE:
								case RESOURCE_MANAGER_LOCATION:
								case RESTRICTED_USER:
								case RETENTION:
								case ROBUST:
								case ROOT:
								case ROUTE:
								case ROW:
								case ROW_NUMBER:
								case ROWGUID:
								case ROWS:
								case SAMPLE:
								case SCHEMABINDING:
								case SCOPED:
								case SCROLL:
								case SCROLL_LOCKS:
								case SEARCH:
								case SECONDARY:
								case SECONDARY_ONLY:
								case SECONDARY_ROLE:
								case SECONDS:
								case SECRET:
								case SECURITY_LOG:
								case SEEDING_MODE:
								case SELF:
								case SEMI_SENSITIVE:
								case SEND:
								case SENT:
								case SERIALIZABLE:
								case SESSION_TIMEOUT:
								case SETERROR:
								case SHARE:
								case SHOWPLAN:
								case SIGNATURE:
								case SIMPLE:
								case SINGLE_USER:
								case SIZE:
								case SMALLINT:
								case SNAPSHOT:
								case SPATIAL_WINDOW_MAX_CELLS:
								case STANDBY:
								case START_DATE:
								case STATIC:
								case STATS_STREAM:
								case STATUS:
								case STDEV:
								case STDEVP:
								case STOPLIST:
								case STUFF:
								case SUBJECT:
								case SUM:
								case SUSPEND:
								case SYMMETRIC:
								case SYNCHRONOUS_COMMIT:
								case SYNONYM:
								case TAKE:
								case TARGET_RECOVERY_TIME:
								case TB:
								case TEXTIMAGE_ON:
								case THROW:
								case TIES:
								case TIME:
								case TIMEOUT:
								case TIMER:
								case TINYINT:
								case TORN_PAGE_DETECTION:
								case TRANSFORM_NOISE_WORDS:
								case TRIPLE_DES:
								case TRIPLE_DES_3KEY:
								case TRUSTWORTHY:
								case TRY:
								case TSQL:
								case TWO_DIGIT_YEAR_CUTOFF:
								case TYPE:
								case TYPE_WARNING:
								case UNBOUNDED:
								case UNCOMMITTED:
								case UNKNOWN:
								case UNLIMITED:
								case USING:
								case VALID_XML:
								case VALIDATION:
								case VALUE:
								case VAR:
								case VARP:
								case VIEW_METADATA:
								case VIEWS:
								case WAIT:
								case WELL_FORMED_XML:
								case WORK:
								case WORKLOAD:
								case XML:
								case XMLNAMESPACES:
								case DOUBLE_QUOTE_ID:
								case SQUARE_BRACKET_ID:
								case ID:
									{
									setState(5285);
									((Create_userContext)_localctx).language_name_or_alias = id();
									}
									break;
								default:
									throw new NoViableAltException(this);
								}
								}
								break;
							case 3:
								{
								setState(5289);
								_errHandler.sync(this);
								_la = _input.LA(1);
								if (_la==COMMA) {
									{
									setState(5288);
									match(COMMA);
									}
								}

								setState(5291);
								match(SID);
								setState(5292);
								match(EQUAL);
								setState(5293);
								match(BINARY);
								}
								break;
							case 4:
								{
								setState(5295);
								_errHandler.sync(this);
								_la = _input.LA(1);
								if (_la==COMMA) {
									{
									setState(5294);
									match(COMMA);
									}
								}

								setState(5297);
								match(ALLOW_ENCRYPTED_VALUE_MODIFICATIONS);
								setState(5298);
								match(EQUAL);
								setState(5299);
								_la = _input.LA(1);
								if ( !(_la==OFF || _la==ON) ) {
								_errHandler.recoverInline(this);
								}
								else {
									if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
									_errHandler.reportMatch(this);
									consume();
								}
								}
								break;
							}
							} 
						}
						setState(5304);
						_errHandler.sync(this);
						_alt = getInterpreter().adaptivePredict(_input,630,_ctx);
					}
					}
					break;
				case 3:
					{
					setState(5305);
					((Create_userContext)_localctx).Azure_Active_Directory_principal = id();
					setState(5306);
					match(FROM);
					setState(5307);
					match(EXTERNAL);
					setState(5308);
					match(PROVIDER);
					}
					break;
				}
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(5312);
				match(CREATE);
				setState(5313);
				match(USER);
				setState(5314);
				((Create_userContext)_localctx).user_name = id();
				setState(5341);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,636,_ctx) ) {
				case 1:
					{
					setState(5315);
					match(WITHOUT);
					setState(5316);
					match(LOGIN);
					setState(5331);
					_errHandler.sync(this);
					_alt = getInterpreter().adaptivePredict(_input,635,_ctx);
					while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
						if ( _alt==1 ) {
							{
							setState(5329);
							_errHandler.sync(this);
							switch ( getInterpreter().adaptivePredict(_input,634,_ctx) ) {
							case 1:
								{
								setState(5318);
								_errHandler.sync(this);
								_la = _input.LA(1);
								if (_la==COMMA) {
									{
									setState(5317);
									match(COMMA);
									}
								}

								setState(5320);
								match(DEFAULT_SCHEMA);
								setState(5321);
								match(EQUAL);
								setState(5322);
								((Create_userContext)_localctx).schema_name = id();
								}
								break;
							case 2:
								{
								setState(5324);
								_errHandler.sync(this);
								_la = _input.LA(1);
								if (_la==COMMA) {
									{
									setState(5323);
									match(COMMA);
									}
								}

								setState(5326);
								match(ALLOW_ENCRYPTED_VALUE_MODIFICATIONS);
								setState(5327);
								match(EQUAL);
								setState(5328);
								_la = _input.LA(1);
								if ( !(_la==OFF || _la==ON) ) {
								_errHandler.recoverInline(this);
								}
								else {
									if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
									_errHandler.reportMatch(this);
									consume();
								}
								}
								break;
							}
							} 
						}
						setState(5333);
						_errHandler.sync(this);
						_alt = getInterpreter().adaptivePredict(_input,635,_ctx);
					}
					}
					break;
				case 2:
					{
					setState(5334);
					_la = _input.LA(1);
					if ( !(_la==FOR || _la==FROM) ) {
					_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					setState(5335);
					match(CERTIFICATE);
					setState(5336);
					((Create_userContext)_localctx).cert_name = id();
					}
					break;
				case 3:
					{
					setState(5337);
					_la = _input.LA(1);
					if ( !(_la==FOR || _la==FROM) ) {
					_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					setState(5338);
					match(ASYMMETRIC);
					setState(5339);
					match(KEY);
					setState(5340);
					((Create_userContext)_localctx).asym_key_name = id();
					}
					break;
				}
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(5343);
				match(CREATE);
				setState(5344);
				match(USER);
				setState(5345);
				((Create_userContext)_localctx).user_name = id();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Create_user_azure_sql_dwContext extends ParserRuleContext {
		public IdContext user_name;
		public IdContext login_name;
		public IdContext schema_name;
		public IdContext Azure_Active_Directory_principal;
		public TerminalNode CREATE() { return getToken(TSqlParser.CREATE, 0); }
		public TerminalNode USER() { return getToken(TSqlParser.USER, 0); }
		public List id() {
			return getRuleContexts(IdContext.class);
		}
		public IdContext id(int i) {
			return getRuleContext(IdContext.class,i);
		}
		public TerminalNode LOGIN() { return getToken(TSqlParser.LOGIN, 0); }
		public TerminalNode WITHOUT() { return getToken(TSqlParser.WITHOUT, 0); }
		public TerminalNode WITH() { return getToken(TSqlParser.WITH, 0); }
		public TerminalNode DEFAULT_SCHEMA() { return getToken(TSqlParser.DEFAULT_SCHEMA, 0); }
		public TerminalNode EQUAL() { return getToken(TSqlParser.EQUAL, 0); }
		public TerminalNode FOR() { return getToken(TSqlParser.FOR, 0); }
		public TerminalNode FROM() { return getToken(TSqlParser.FROM, 0); }
		public TerminalNode EXTERNAL() { return getToken(TSqlParser.EXTERNAL, 0); }
		public TerminalNode PROVIDER() { return getToken(TSqlParser.PROVIDER, 0); }
		public Create_user_azure_sql_dwContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_create_user_azure_sql_dw; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterCreate_user_azure_sql_dw(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitCreate_user_azure_sql_dw(this);
		}
	}

	public final Create_user_azure_sql_dwContext create_user_azure_sql_dw() throws RecognitionException {
		Create_user_azure_sql_dwContext _localctx = new Create_user_azure_sql_dwContext(_ctx, getState());
		enterRule(_localctx, 402, RULE_create_user_azure_sql_dw);
		int _la;
		try {
			setState(5376);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,641,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(5348);
				match(CREATE);
				setState(5349);
				match(USER);
				setState(5350);
				((Create_user_azure_sql_dwContext)_localctx).user_name = id();
				setState(5356);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case FOR:
				case FROM:
					{
					setState(5351);
					_la = _input.LA(1);
					if ( !(_la==FOR || _la==FROM) ) {
					_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					setState(5352);
					match(LOGIN);
					setState(5353);
					((Create_user_azure_sql_dwContext)_localctx).login_name = id();
					}
					break;
				case WITHOUT:
					{
					setState(5354);
					match(WITHOUT);
					setState(5355);
					match(LOGIN);
					}
					break;
				case EOF:
				case ALTER:
				case BACKUP:
				case BEGIN:
				case BLOCKING_HIERARCHY:
				case BREAK:
				case CALLED:
				case CASE:
				case CLOSE:
				case COALESCE:
				case COMMIT:
				case CONTINUE:
				case CONVERT:
				case CREATE:
				case CURRENT_TIMESTAMP:
				case CURRENT_USER:
				case DATA_COMPRESSION:
				case DBCC:
				case DEALLOCATE:
				case DECLARE:
				case DEFAULT:
				case DELETE:
				case DROP:
				case ELSE:
				case END:
				case EVENTDATA:
				case EXECUTE:
				case FETCH:
				case FILENAME:
				case FILLFACTOR:
				case FORCESEEK:
				case GET:
				case GOTO:
				case GRANT:
				case IDENTITY:
				case IF:
				case IIF:
				case INIT:
				case INSERT:
				case ISNULL:
				case KEY:
				case LEFT:
				case MASTER:
				case MAX_MEMORY:
				case MERGE:
				case NULL:
				case NULLIF:
				case OFFSETS:
				case OPEN:
				case OVER:
				case PAGE:
				case PRINT:
				case PUBLIC:
				case R:
				case RAISERROR:
				case RAW:
				case RETURN:
				case RETURNS:
				case REVERT:
				case RIGHT:
				case ROLLBACK:
				case ROWCOUNT:
				case SAFETY:
				case SAVE:
				case SELECT:
				case SERVER:
				case SESSION_USER:
				case SET:
				case SETUSER:
				case SID:
				case SOURCE:
				case STATE:
				case START:
				case SYSTEM_USER:
				case TARGET:
				case TRUNCATE:
				case UPDATE:
				case USE:
				case WAITFOR:
				case WHILE:
				case WITH:
				case ABSOLUTE:
				case ACCENT_SENSITIVITY:
				case ACTION:
				case ACTIVATION:
				case ACTIVE:
				case ADDRESS:
				case AES_128:
				case AES_192:
				case AES_256:
				case AFFINITY:
				case AFTER:
				case AGGREGATE:
				case ALGORITHM:
				case ALLOW_ENCRYPTED_VALUE_MODIFICATIONS:
				case ALLOW_SNAPSHOT_ISOLATION:
				case ALLOWED:
				case ANSI_NULL_DEFAULT:
				case ANSI_NULLS:
				case ANSI_PADDING:
				case ANSI_WARNINGS:
				case APPLICATION_LOG:
				case APPLY:
				case ARITHABORT:
				case ASSEMBLY:
				case AUDIT:
				case AUDIT_GUID:
				case AUTO:
				case AUTO_CLEANUP:
				case AUTO_CLOSE:
				case AUTO_CREATE_STATISTICS:
				case AUTO_SHRINK:
				case AUTO_UPDATE_STATISTICS:
				case AUTO_UPDATE_STATISTICS_ASYNC:
				case AVAILABILITY:
				case AVG:
				case BACKUP_PRIORITY:
				case BEGIN_DIALOG:
				case BIGINT:
				case BINARY_BASE64:
				case BINARY_CHECKSUM:
				case BINDING:
				case BLOB_STORAGE:
				case BROKER:
				case BROKER_INSTANCE:
				case BULK_LOGGED:
				case CALLER:
				case CAP_CPU_PERCENT:
				case CAST:
				case CATALOG:
				case CATCH:
				case CHANGE_RETENTION:
				case CHANGE_TRACKING:
				case CHECKSUM:
				case CHECKSUM_AGG:
				case CLEANUP:
				case COLLECTION:
				case COLUMN_MASTER_KEY:
				case COMMITTED:
				case COMPATIBILITY_LEVEL:
				case CONCAT:
				case CONCAT_NULL_YIELDS_NULL:
				case CONTENT:
				case CONTROL:
				case COOKIE:
				case COUNT:
				case COUNT_BIG:
				case COUNTER:
				case CPU:
				case CREATE_NEW:
				case CREATION_DISPOSITION:
				case CREDENTIAL:
				case CRYPTOGRAPHIC:
				case CURSOR_CLOSE_ON_COMMIT:
				case CURSOR_DEFAULT:
				case DATE_CORRELATION_OPTIMIZATION:
				case DATEADD:
				case DATEDIFF:
				case DATENAME:
				case DATEPART:
				case DAYS:
				case DB_CHAINING:
				case DB_FAILOVER:
				case DECRYPTION:
				case DEFAULT_DOUBLE_QUOTE:
				case DEFAULT_FULLTEXT_LANGUAGE:
				case DEFAULT_LANGUAGE:
				case DELAY:
				case DELAYED_DURABILITY:
				case DELETED:
				case DENSE_RANK:
				case DEPENDENTS:
				case DES:
				case DESCRIPTION:
				case DESX:
				case DHCP:
				case DIALOG:
				case DIRECTORY_NAME:
				case DISABLE:
				case DISABLE_BROKER:
				case DISABLED:
				case DISK_DRIVE:
				case DOCUMENT:
				case DYNAMIC:
				case EMERGENCY:
				case EMPTY:
				case ENABLE:
				case ENABLE_BROKER:
				case ENCRYPTED_VALUE:
				case ENCRYPTION:
				case ENDPOINT_URL:
				case ERROR_BROKER_CONVERSATIONS:
				case EXCLUSIVE:
				case EXECUTABLE:
				case EXIST:
				case EXPAND:
				case EXPIRY_DATE:
				case EXPLICIT:
				case FAIL_OPERATION:
				case FAILOVER_MODE:
				case FAILURE:
				case FAILURE_CONDITION_LEVEL:
				case FAST:
				case FAST_FORWARD:
				case FILEGROUP:
				case FILEGROWTH:
				case FILEPATH:
				case FILESTREAM:
				case FILTER:
				case FIRST:
				case FIRST_VALUE:
				case FOLLOWING:
				case FORCE:
				case FORCE_FAILOVER_ALLOW_DATA_LOSS:
				case FORCED:
				case FORMAT:
				case FORWARD_ONLY:
				case FULLSCAN:
				case FULLTEXT:
				case GB:
				case GETDATE:
				case GETUTCDATE:
				case GLOBAL:
				case GO:
				case GROUP_MAX_REQUESTS:
				case GROUPING:
				case GROUPING_ID:
				case HADR:
				case HASH:
				case HEALTH_CHECK_TIMEOUT:
				case HIGH:
				case HONOR_BROKER_PRIORITY:
				case HOURS:
				case IDENTITY_VALUE:
				case IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX:
				case IMMEDIATE:
				case IMPERSONATE:
				case IMPORTANCE:
				case INCREMENTAL:
				case INITIATOR:
				case INPUT:
				case INSENSITIVE:
				case INSERTED:
				case INT:
				case IP:
				case ISOLATION:
				case KB:
				case KEEP:
				case KEEPFIXED:
				case KEY_SOURCE:
				case KEYS:
				case KEYSET:
				case LAG:
				case LAST:
				case LAST_VALUE:
				case LEAD:
				case LEVEL:
				case LIST:
				case LISTENER:
				case LISTENER_URL:
				case LOB_COMPACTION:
				case LOCAL:
				case LOCATION:
				case LOCK:
				case LOCK_ESCALATION:
				case LOGIN:
				case LOOP:
				case LOW:
				case MANUAL:
				case MARK:
				case MATERIALIZED:
				case MAX:
				case MAX_CPU_PERCENT:
				case MAX_DOP:
				case MAX_FILES:
				case MAX_IOPS_PER_VOLUME:
				case MAX_MEMORY_PERCENT:
				case MAX_PROCESSES:
				case MAX_QUEUE_READERS:
				case MAX_ROLLOVER_FILES:
				case MAXDOP:
				case MAXRECURSION:
				case MAXSIZE:
				case MB:
				case MEDIUM:
				case MEMORY_OPTIMIZED_DATA:
				case MESSAGE:
				case MIN:
				case MIN_ACTIVE_ROWVERSION:
				case MIN_CPU_PERCENT:
				case MIN_IOPS_PER_VOLUME:
				case MIN_MEMORY_PERCENT:
				case MINUTES:
				case MIRROR_ADDRESS:
				case MIXED_PAGE_ALLOCATION:
				case MODE:
				case MODIFY:
				case MOVE:
				case MULTI_USER:
				case NAME:
				case NESTED_TRIGGERS:
				case NEW_ACCOUNT:
				case NEW_BROKER:
				case NEW_PASSWORD:
				case NEXT:
				case NO:
				case NO_TRUNCATE:
				case NO_WAIT:
				case NOCOUNT:
				case NODES:
				case NOEXPAND:
				case NON_TRANSACTED_ACCESS:
				case NORECOMPUTE:
				case NORECOVERY:
				case NOWAIT:
				case NTILE:
				case NUMANODE:
				case NUMBER:
				case NUMERIC_ROUNDABORT:
				case OBJECT:
				case OFFLINE:
				case OFFSET:
				case OLD_ACCOUNT:
				case ONLINE:
				case ONLY:
				case OPEN_EXISTING:
				case OPTIMISTIC:
				case OPTIMIZE:
				case OUT:
				case OUTPUT:
				case OWNER:
				case PAGE_VERIFY:
				case PARAMETERIZATION:
				case PARTITION:
				case PARTITIONS:
				case PARTNER:
				case PATH:
				case POISON_MESSAGE_HANDLING:
				case POOL:
				case PORT:
				case PRECEDING:
				case PRIMARY_ROLE:
				case PRIOR:
				case PRIORITY:
				case PRIORITY_LEVEL:
				case PRIVATE:
				case PRIVATE_KEY:
				case PRIVILEGES:
				case PROCEDURE_NAME:
				case PROPERTY:
				case PROVIDER:
				case PROVIDER_KEY_NAME:
				case QUERY:
				case QUEUE:
				case QUEUE_DELAY:
				case QUOTED_IDENTIFIER:
				case RANGE:
				case RANK:
				case RC2:
				case RC4:
				case RC4_128:
				case READ_COMMITTED_SNAPSHOT:
				case READ_ONLY:
				case READ_ONLY_ROUTING_LIST:
				case READ_WRITE:
				case READONLY:
				case REBUILD:
				case RECEIVE:
				case RECOMPILE:
				case RECOVERY:
				case RECURSIVE_TRIGGERS:
				case RELATIVE:
				case REMOTE:
				case REMOTE_SERVICE_NAME:
				case REMOVE:
				case REORGANIZE:
				case REPEATABLE:
				case REPLICA:
				case REQUEST_MAX_CPU_TIME_SEC:
				case REQUEST_MAX_MEMORY_GRANT_PERCENT:
				case REQUEST_MEMORY_GRANT_TIMEOUT_SEC:
				case REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT:
				case RESERVE_DISK_SPACE:
				case RESOURCE:
				case RESOURCE_MANAGER_LOCATION:
				case RESTRICTED_USER:
				case RETENTION:
				case ROBUST:
				case ROOT:
				case ROUTE:
				case ROW:
				case ROW_NUMBER:
				case ROWGUID:
				case ROWS:
				case SAMPLE:
				case SCHEMABINDING:
				case SCOPED:
				case SCROLL:
				case SCROLL_LOCKS:
				case SEARCH:
				case SECONDARY:
				case SECONDARY_ONLY:
				case SECONDARY_ROLE:
				case SECONDS:
				case SECRET:
				case SECURITY_LOG:
				case SEEDING_MODE:
				case SELF:
				case SEMI_SENSITIVE:
				case SEND:
				case SENT:
				case SERIALIZABLE:
				case SESSION_TIMEOUT:
				case SETERROR:
				case SHARE:
				case SHOWPLAN:
				case SIGNATURE:
				case SIMPLE:
				case SINGLE_USER:
				case SIZE:
				case SMALLINT:
				case SNAPSHOT:
				case SPATIAL_WINDOW_MAX_CELLS:
				case STANDBY:
				case START_DATE:
				case STATIC:
				case STATS_STREAM:
				case STATUS:
				case STDEV:
				case STDEVP:
				case STOPLIST:
				case STUFF:
				case SUBJECT:
				case SUM:
				case SUSPEND:
				case SYMMETRIC:
				case SYNCHRONOUS_COMMIT:
				case SYNONYM:
				case TAKE:
				case TARGET_RECOVERY_TIME:
				case TB:
				case TEXTIMAGE_ON:
				case THROW:
				case TIES:
				case TIME:
				case TIMEOUT:
				case TIMER:
				case TINYINT:
				case TORN_PAGE_DETECTION:
				case TRANSFORM_NOISE_WORDS:
				case TRIPLE_DES:
				case TRIPLE_DES_3KEY:
				case TRUSTWORTHY:
				case TRY:
				case TSQL:
				case TWO_DIGIT_YEAR_CUTOFF:
				case TYPE:
				case TYPE_WARNING:
				case UNBOUNDED:
				case UNCOMMITTED:
				case UNKNOWN:
				case UNLIMITED:
				case USING:
				case VALID_XML:
				case VALIDATION:
				case VALUE:
				case VAR:
				case VARP:
				case VIEW_METADATA:
				case VIEWS:
				case WAIT:
				case WELL_FORMED_XML:
				case WORK:
				case WORKLOAD:
				case XML:
				case XMLNAMESPACES:
				case DOUBLE_QUOTE_ID:
				case SQUARE_BRACKET_ID:
				case LOCAL_ID:
				case DECIMAL:
				case ID:
				case STRING:
				case BINARY:
				case FLOAT:
				case REAL:
				case DOLLAR:
				case LR_BRACKET:
				case SEMI:
				case PLUS:
				case MINUS:
				case BIT_NOT:
					break;
				default:
					break;
				}
				setState(5362);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,639,_ctx) ) {
				case 1:
					{
					setState(5358);
					match(WITH);
					setState(5359);
					match(DEFAULT_SCHEMA);
					setState(5360);
					match(EQUAL);
					setState(5361);
					((Create_user_azure_sql_dwContext)_localctx).schema_name = id();
					}
					break;
				}
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(5364);
				match(CREATE);
				setState(5365);
				match(USER);
				setState(5366);
				((Create_user_azure_sql_dwContext)_localctx).Azure_Active_Directory_principal = id();
				setState(5367);
				match(FROM);
				setState(5368);
				match(EXTERNAL);
				setState(5369);
				match(PROVIDER);
				setState(5374);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,640,_ctx) ) {
				case 1:
					{
					setState(5370);
					match(WITH);
					setState(5371);
					match(DEFAULT_SCHEMA);
					setState(5372);
					match(EQUAL);
					setState(5373);
					((Create_user_azure_sql_dwContext)_localctx).schema_name = id();
					}
					break;
				}
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Alter_user_azure_sqlContext extends ParserRuleContext {
		public IdContext username;
		public IdContext newusername;
		public IdContext schema_name;
		public IdContext loginame;
		public TerminalNode ALTER() { return getToken(TSqlParser.ALTER, 0); }
		public TerminalNode USER() { return getToken(TSqlParser.USER, 0); }
		public TerminalNode WITH() { return getToken(TSqlParser.WITH, 0); }
		public List id() {
			return getRuleContexts(IdContext.class);
		}
		public IdContext id(int i) {
			return getRuleContext(IdContext.class,i);
		}
		public List NAME() { return getTokens(TSqlParser.NAME); }
		public TerminalNode NAME(int i) {
			return getToken(TSqlParser.NAME, i);
		}
		public List EQUAL() { return getTokens(TSqlParser.EQUAL); }
		public TerminalNode EQUAL(int i) {
			return getToken(TSqlParser.EQUAL, i);
		}
		public List DEFAULT_SCHEMA() { return getTokens(TSqlParser.DEFAULT_SCHEMA); }
		public TerminalNode DEFAULT_SCHEMA(int i) {
			return getToken(TSqlParser.DEFAULT_SCHEMA, i);
		}
		public List LOGIN() { return getTokens(TSqlParser.LOGIN); }
		public TerminalNode LOGIN(int i) {
			return getToken(TSqlParser.LOGIN, i);
		}
		public List ALLOW_ENCRYPTED_VALUE_MODIFICATIONS() { return getTokens(TSqlParser.ALLOW_ENCRYPTED_VALUE_MODIFICATIONS); }
		public TerminalNode ALLOW_ENCRYPTED_VALUE_MODIFICATIONS(int i) {
			return getToken(TSqlParser.ALLOW_ENCRYPTED_VALUE_MODIFICATIONS, i);
		}
		public List ON() { return getTokens(TSqlParser.ON); }
		public TerminalNode ON(int i) {
			return getToken(TSqlParser.ON, i);
		}
		public List OFF() { return getTokens(TSqlParser.OFF); }
		public TerminalNode OFF(int i) {
			return getToken(TSqlParser.OFF, i);
		}
		public List COMMA() { return getTokens(TSqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(TSqlParser.COMMA, i);
		}
		public Alter_user_azure_sqlContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alter_user_azure_sql; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterAlter_user_azure_sql(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitAlter_user_azure_sql(this);
		}
	}

	public final Alter_user_azure_sqlContext alter_user_azure_sql() throws RecognitionException {
		Alter_user_azure_sqlContext _localctx = new Alter_user_azure_sqlContext(_ctx, getState());
		enterRule(_localctx, 404, RULE_alter_user_azure_sql);
		int _la;
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			setState(5378);
			match(ALTER);
			setState(5379);
			match(USER);
			setState(5380);
			((Alter_user_azure_sqlContext)_localctx).username = id();
			setState(5381);
			match(WITH);
			setState(5406); 
			_errHandler.sync(this);
			_alt = 1;
			do {
				switch (_alt) {
				case 1:
					{
					setState(5406);
					_errHandler.sync(this);
					switch ( getInterpreter().adaptivePredict(_input,646,_ctx) ) {
					case 1:
						{
						setState(5383);
						_errHandler.sync(this);
						_la = _input.LA(1);
						if (_la==COMMA) {
							{
							setState(5382);
							match(COMMA);
							}
						}

						setState(5385);
						match(NAME);
						setState(5386);
						match(EQUAL);
						setState(5387);
						((Alter_user_azure_sqlContext)_localctx).newusername = id();
						}
						break;
					case 2:
						{
						setState(5389);
						_errHandler.sync(this);
						_la = _input.LA(1);
						if (_la==COMMA) {
							{
							setState(5388);
							match(COMMA);
							}
						}

						setState(5391);
						match(DEFAULT_SCHEMA);
						setState(5392);
						match(EQUAL);
						setState(5393);
						((Alter_user_azure_sqlContext)_localctx).schema_name = id();
						}
						break;
					case 3:
						{
						setState(5395);
						_errHandler.sync(this);
						_la = _input.LA(1);
						if (_la==COMMA) {
							{
							setState(5394);
							match(COMMA);
							}
						}

						setState(5397);
						match(LOGIN);
						setState(5398);
						match(EQUAL);
						setState(5399);
						((Alter_user_azure_sqlContext)_localctx).loginame = id();
						}
						break;
					case 4:
						{
						setState(5401);
						_errHandler.sync(this);
						_la = _input.LA(1);
						if (_la==COMMA) {
							{
							setState(5400);
							match(COMMA);
							}
						}

						setState(5403);
						match(ALLOW_ENCRYPTED_VALUE_MODIFICATIONS);
						setState(5404);
						match(EQUAL);
						setState(5405);
						_la = _input.LA(1);
						if ( !(_la==OFF || _la==ON) ) {
						_errHandler.recoverInline(this);
						}
						else {
							if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
							_errHandler.reportMatch(this);
							consume();
						}
						}
						break;
					}
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				setState(5408); 
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,647,_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 Alter_workload_groupContext extends ParserRuleContext {
		public IdContext workload_group_group_name;
		public Token request_max_memory_grant;
		public Token request_max_cpu_time_sec;
		public Token request_memory_grant_timeout_sec;
		public Token max_dop;
		public Token group_max_requests;
		public IdContext workload_group_pool_name;
		public TerminalNode ALTER() { return getToken(TSqlParser.ALTER, 0); }
		public TerminalNode WORKLOAD() { return getToken(TSqlParser.WORKLOAD, 0); }
		public TerminalNode GROUP() { return getToken(TSqlParser.GROUP, 0); }
		public List DEFAULT_DOUBLE_QUOTE() { return getTokens(TSqlParser.DEFAULT_DOUBLE_QUOTE); }
		public TerminalNode DEFAULT_DOUBLE_QUOTE(int i) {
			return getToken(TSqlParser.DEFAULT_DOUBLE_QUOTE, i);
		}
		public List id() {
			return getRuleContexts(IdContext.class);
		}
		public IdContext id(int i) {
			return getRuleContext(IdContext.class,i);
		}
		public TerminalNode WITH() { return getToken(TSqlParser.WITH, 0); }
		public TerminalNode LR_BRACKET() { return getToken(TSqlParser.LR_BRACKET, 0); }
		public TerminalNode RR_BRACKET() { return getToken(TSqlParser.RR_BRACKET, 0); }
		public TerminalNode USING() { return getToken(TSqlParser.USING, 0); }
		public List IMPORTANCE() { return getTokens(TSqlParser.IMPORTANCE); }
		public TerminalNode IMPORTANCE(int i) {
			return getToken(TSqlParser.IMPORTANCE, i);
		}
		public List EQUAL() { return getTokens(TSqlParser.EQUAL); }
		public TerminalNode EQUAL(int i) {
			return getToken(TSqlParser.EQUAL, i);
		}
		public List REQUEST_MAX_MEMORY_GRANT_PERCENT() { return getTokens(TSqlParser.REQUEST_MAX_MEMORY_GRANT_PERCENT); }
		public TerminalNode REQUEST_MAX_MEMORY_GRANT_PERCENT(int i) {
			return getToken(TSqlParser.REQUEST_MAX_MEMORY_GRANT_PERCENT, i);
		}
		public List REQUEST_MAX_CPU_TIME_SEC() { return getTokens(TSqlParser.REQUEST_MAX_CPU_TIME_SEC); }
		public TerminalNode REQUEST_MAX_CPU_TIME_SEC(int i) {
			return getToken(TSqlParser.REQUEST_MAX_CPU_TIME_SEC, i);
		}
		public List REQUEST_MEMORY_GRANT_TIMEOUT_SEC() { return getTokens(TSqlParser.REQUEST_MEMORY_GRANT_TIMEOUT_SEC); }
		public TerminalNode REQUEST_MEMORY_GRANT_TIMEOUT_SEC(int i) {
			return getToken(TSqlParser.REQUEST_MEMORY_GRANT_TIMEOUT_SEC, i);
		}
		public List MAX_DOP() { return getTokens(TSqlParser.MAX_DOP); }
		public TerminalNode MAX_DOP(int i) {
			return getToken(TSqlParser.MAX_DOP, i);
		}
		public List GROUP_MAX_REQUESTS() { return getTokens(TSqlParser.GROUP_MAX_REQUESTS); }
		public TerminalNode GROUP_MAX_REQUESTS(int i) {
			return getToken(TSqlParser.GROUP_MAX_REQUESTS, i);
		}
		public List LOW() { return getTokens(TSqlParser.LOW); }
		public TerminalNode LOW(int i) {
			return getToken(TSqlParser.LOW, i);
		}
		public List MEDIUM() { return getTokens(TSqlParser.MEDIUM); }
		public TerminalNode MEDIUM(int i) {
			return getToken(TSqlParser.MEDIUM, i);
		}
		public List HIGH() { return getTokens(TSqlParser.HIGH); }
		public TerminalNode HIGH(int i) {
			return getToken(TSqlParser.HIGH, i);
		}
		public List DECIMAL() { return getTokens(TSqlParser.DECIMAL); }
		public TerminalNode DECIMAL(int i) {
			return getToken(TSqlParser.DECIMAL, i);
		}
		public List COMMA() { return getTokens(TSqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(TSqlParser.COMMA, i);
		}
		public Alter_workload_groupContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alter_workload_group; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterAlter_workload_group(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitAlter_workload_group(this);
		}
	}

	public final Alter_workload_groupContext alter_workload_group() throws RecognitionException {
		Alter_workload_groupContext _localctx = new Alter_workload_groupContext(_ctx, getState());
		enterRule(_localctx, 406, RULE_alter_workload_group);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5410);
			match(ALTER);
			setState(5411);
			match(WORKLOAD);
			setState(5412);
			match(GROUP);
			setState(5415);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,648,_ctx) ) {
			case 1:
				{
				setState(5413);
				((Alter_workload_groupContext)_localctx).workload_group_group_name = id();
				}
				break;
			case 2:
				{
				setState(5414);
				match(DEFAULT_DOUBLE_QUOTE);
				}
				break;
			}
			setState(5448);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,653,_ctx) ) {
			case 1:
				{
				setState(5417);
				match(WITH);
				setState(5418);
				match(LR_BRACKET);
				setState(5443); 
				_errHandler.sync(this);
				_la = _input.LA(1);
				do {
					{
					setState(5443);
					_errHandler.sync(this);
					switch ( getInterpreter().adaptivePredict(_input,651,_ctx) ) {
					case 1:
						{
						setState(5419);
						match(IMPORTANCE);
						setState(5420);
						match(EQUAL);
						setState(5421);
						_la = _input.LA(1);
						if ( !(((((_la - 534)) & ~0x3f) == 0 && ((1L << (_la - 534)) & ((1L << (HIGH - 534)) | (1L << (LOW - 534)) | (1L << (MEDIUM - 534)))) != 0)) ) {
						_errHandler.recoverInline(this);
						}
						else {
							if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
							_errHandler.reportMatch(this);
							consume();
						}
						}
						break;
					case 2:
						{
						setState(5423);
						_errHandler.sync(this);
						_la = _input.LA(1);
						if (_la==COMMA) {
							{
							setState(5422);
							match(COMMA);
							}
						}

						setState(5425);
						match(REQUEST_MAX_MEMORY_GRANT_PERCENT);
						setState(5426);
						match(EQUAL);
						setState(5427);
						((Alter_workload_groupContext)_localctx).request_max_memory_grant = match(DECIMAL);
						}
						break;
					case 3:
						{
						setState(5429);
						_errHandler.sync(this);
						_la = _input.LA(1);
						if (_la==COMMA) {
							{
							setState(5428);
							match(COMMA);
							}
						}

						setState(5431);
						match(REQUEST_MAX_CPU_TIME_SEC);
						setState(5432);
						match(EQUAL);
						setState(5433);
						((Alter_workload_groupContext)_localctx).request_max_cpu_time_sec = match(DECIMAL);
						}
						break;
					case 4:
						{
						setState(5434);
						match(REQUEST_MEMORY_GRANT_TIMEOUT_SEC);
						setState(5435);
						match(EQUAL);
						setState(5436);
						((Alter_workload_groupContext)_localctx).request_memory_grant_timeout_sec = match(DECIMAL);
						}
						break;
					case 5:
						{
						setState(5437);
						match(MAX_DOP);
						setState(5438);
						match(EQUAL);
						setState(5439);
						((Alter_workload_groupContext)_localctx).max_dop = match(DECIMAL);
						}
						break;
					case 6:
						{
						setState(5440);
						match(GROUP_MAX_REQUESTS);
						setState(5441);
						match(EQUAL);
						setState(5442);
						((Alter_workload_groupContext)_localctx).group_max_requests = match(DECIMAL);
						}
						break;
					}
					}
					setState(5445); 
					_errHandler.sync(this);
					_la = _input.LA(1);
				} while ( ((((_la - 528)) & ~0x3f) == 0 && ((1L << (_la - 528)) & ((1L << (GROUP_MAX_REQUESTS - 528)) | (1L << (IMPORTANCE - 528)) | (1L << (MAX_DOP - 528)))) != 0) || ((((_la - 684)) & ~0x3f) == 0 && ((1L << (_la - 684)) & ((1L << (REQUEST_MAX_CPU_TIME_SEC - 684)) | (1L << (REQUEST_MAX_MEMORY_GRANT_PERCENT - 684)) | (1L << (REQUEST_MEMORY_GRANT_TIMEOUT_SEC - 684)))) != 0) || _la==COMMA );
				setState(5447);
				match(RR_BRACKET);
				}
				break;
			}
			setState(5455);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,655,_ctx) ) {
			case 1:
				{
				setState(5450);
				match(USING);
				setState(5453);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,654,_ctx) ) {
				case 1:
					{
					setState(5451);
					((Alter_workload_groupContext)_localctx).workload_group_pool_name = id();
					}
					break;
				case 2:
					{
					setState(5452);
					match(DEFAULT_DOUBLE_QUOTE);
					}
					break;
				}
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Create_workload_groupContext extends ParserRuleContext {
		public IdContext workload_group_group_name;
		public Token request_max_memory_grant;
		public Token request_max_cpu_time_sec;
		public Token request_memory_grant_timeout_sec;
		public Token max_dop;
		public Token group_max_requests;
		public IdContext workload_group_pool_name;
		public IdContext external_pool_name;
		public TerminalNode CREATE() { return getToken(TSqlParser.CREATE, 0); }
		public TerminalNode WORKLOAD() { return getToken(TSqlParser.WORKLOAD, 0); }
		public TerminalNode GROUP() { return getToken(TSqlParser.GROUP, 0); }
		public List id() {
			return getRuleContexts(IdContext.class);
		}
		public IdContext id(int i) {
			return getRuleContext(IdContext.class,i);
		}
		public TerminalNode WITH() { return getToken(TSqlParser.WITH, 0); }
		public TerminalNode LR_BRACKET() { return getToken(TSqlParser.LR_BRACKET, 0); }
		public TerminalNode RR_BRACKET() { return getToken(TSqlParser.RR_BRACKET, 0); }
		public TerminalNode USING() { return getToken(TSqlParser.USING, 0); }
		public List IMPORTANCE() { return getTokens(TSqlParser.IMPORTANCE); }
		public TerminalNode IMPORTANCE(int i) {
			return getToken(TSqlParser.IMPORTANCE, i);
		}
		public List EQUAL() { return getTokens(TSqlParser.EQUAL); }
		public TerminalNode EQUAL(int i) {
			return getToken(TSqlParser.EQUAL, i);
		}
		public List REQUEST_MAX_MEMORY_GRANT_PERCENT() { return getTokens(TSqlParser.REQUEST_MAX_MEMORY_GRANT_PERCENT); }
		public TerminalNode REQUEST_MAX_MEMORY_GRANT_PERCENT(int i) {
			return getToken(TSqlParser.REQUEST_MAX_MEMORY_GRANT_PERCENT, i);
		}
		public List REQUEST_MAX_CPU_TIME_SEC() { return getTokens(TSqlParser.REQUEST_MAX_CPU_TIME_SEC); }
		public TerminalNode REQUEST_MAX_CPU_TIME_SEC(int i) {
			return getToken(TSqlParser.REQUEST_MAX_CPU_TIME_SEC, i);
		}
		public List REQUEST_MEMORY_GRANT_TIMEOUT_SEC() { return getTokens(TSqlParser.REQUEST_MEMORY_GRANT_TIMEOUT_SEC); }
		public TerminalNode REQUEST_MEMORY_GRANT_TIMEOUT_SEC(int i) {
			return getToken(TSqlParser.REQUEST_MEMORY_GRANT_TIMEOUT_SEC, i);
		}
		public List MAX_DOP() { return getTokens(TSqlParser.MAX_DOP); }
		public TerminalNode MAX_DOP(int i) {
			return getToken(TSqlParser.MAX_DOP, i);
		}
		public List GROUP_MAX_REQUESTS() { return getTokens(TSqlParser.GROUP_MAX_REQUESTS); }
		public TerminalNode GROUP_MAX_REQUESTS(int i) {
			return getToken(TSqlParser.GROUP_MAX_REQUESTS, i);
		}
		public List DEFAULT_DOUBLE_QUOTE() { return getTokens(TSqlParser.DEFAULT_DOUBLE_QUOTE); }
		public TerminalNode DEFAULT_DOUBLE_QUOTE(int i) {
			return getToken(TSqlParser.DEFAULT_DOUBLE_QUOTE, i);
		}
		public TerminalNode EXTERNAL() { return getToken(TSqlParser.EXTERNAL, 0); }
		public List LOW() { return getTokens(TSqlParser.LOW); }
		public TerminalNode LOW(int i) {
			return getToken(TSqlParser.LOW, i);
		}
		public List MEDIUM() { return getTokens(TSqlParser.MEDIUM); }
		public TerminalNode MEDIUM(int i) {
			return getToken(TSqlParser.MEDIUM, i);
		}
		public List HIGH() { return getTokens(TSqlParser.HIGH); }
		public TerminalNode HIGH(int i) {
			return getToken(TSqlParser.HIGH, i);
		}
		public List DECIMAL() { return getTokens(TSqlParser.DECIMAL); }
		public TerminalNode DECIMAL(int i) {
			return getToken(TSqlParser.DECIMAL, i);
		}
		public List COMMA() { return getTokens(TSqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(TSqlParser.COMMA, i);
		}
		public Create_workload_groupContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_create_workload_group; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterCreate_workload_group(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitCreate_workload_group(this);
		}
	}

	public final Create_workload_groupContext create_workload_group() throws RecognitionException {
		Create_workload_groupContext _localctx = new Create_workload_groupContext(_ctx, getState());
		enterRule(_localctx, 408, RULE_create_workload_group);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5457);
			match(CREATE);
			setState(5458);
			match(WORKLOAD);
			setState(5459);
			match(GROUP);
			setState(5460);
			((Create_workload_groupContext)_localctx).workload_group_group_name = id();
			setState(5492);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,660,_ctx) ) {
			case 1:
				{
				setState(5461);
				match(WITH);
				setState(5462);
				match(LR_BRACKET);
				setState(5487); 
				_errHandler.sync(this);
				_la = _input.LA(1);
				do {
					{
					setState(5487);
					_errHandler.sync(this);
					switch ( getInterpreter().adaptivePredict(_input,658,_ctx) ) {
					case 1:
						{
						setState(5463);
						match(IMPORTANCE);
						setState(5464);
						match(EQUAL);
						setState(5465);
						_la = _input.LA(1);
						if ( !(((((_la - 534)) & ~0x3f) == 0 && ((1L << (_la - 534)) & ((1L << (HIGH - 534)) | (1L << (LOW - 534)) | (1L << (MEDIUM - 534)))) != 0)) ) {
						_errHandler.recoverInline(this);
						}
						else {
							if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
							_errHandler.reportMatch(this);
							consume();
						}
						}
						break;
					case 2:
						{
						setState(5467);
						_errHandler.sync(this);
						_la = _input.LA(1);
						if (_la==COMMA) {
							{
							setState(5466);
							match(COMMA);
							}
						}

						setState(5469);
						match(REQUEST_MAX_MEMORY_GRANT_PERCENT);
						setState(5470);
						match(EQUAL);
						setState(5471);
						((Create_workload_groupContext)_localctx).request_max_memory_grant = match(DECIMAL);
						}
						break;
					case 3:
						{
						setState(5473);
						_errHandler.sync(this);
						_la = _input.LA(1);
						if (_la==COMMA) {
							{
							setState(5472);
							match(COMMA);
							}
						}

						setState(5475);
						match(REQUEST_MAX_CPU_TIME_SEC);
						setState(5476);
						match(EQUAL);
						setState(5477);
						((Create_workload_groupContext)_localctx).request_max_cpu_time_sec = match(DECIMAL);
						}
						break;
					case 4:
						{
						setState(5478);
						match(REQUEST_MEMORY_GRANT_TIMEOUT_SEC);
						setState(5479);
						match(EQUAL);
						setState(5480);
						((Create_workload_groupContext)_localctx).request_memory_grant_timeout_sec = match(DECIMAL);
						}
						break;
					case 5:
						{
						setState(5481);
						match(MAX_DOP);
						setState(5482);
						match(EQUAL);
						setState(5483);
						((Create_workload_groupContext)_localctx).max_dop = match(DECIMAL);
						}
						break;
					case 6:
						{
						setState(5484);
						match(GROUP_MAX_REQUESTS);
						setState(5485);
						match(EQUAL);
						setState(5486);
						((Create_workload_groupContext)_localctx).group_max_requests = match(DECIMAL);
						}
						break;
					}
					}
					setState(5489); 
					_errHandler.sync(this);
					_la = _input.LA(1);
				} while ( ((((_la - 528)) & ~0x3f) == 0 && ((1L << (_la - 528)) & ((1L << (GROUP_MAX_REQUESTS - 528)) | (1L << (IMPORTANCE - 528)) | (1L << (MAX_DOP - 528)))) != 0) || ((((_la - 684)) & ~0x3f) == 0 && ((1L << (_la - 684)) & ((1L << (REQUEST_MAX_CPU_TIME_SEC - 684)) | (1L << (REQUEST_MAX_MEMORY_GRANT_PERCENT - 684)) | (1L << (REQUEST_MEMORY_GRANT_TIMEOUT_SEC - 684)))) != 0) || _la==COMMA );
				setState(5491);
				match(RR_BRACKET);
				}
				break;
			}
			setState(5507);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,664,_ctx) ) {
			case 1:
				{
				setState(5494);
				match(USING);
				setState(5497);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,661,_ctx) ) {
				case 1:
					{
					setState(5495);
					((Create_workload_groupContext)_localctx).workload_group_pool_name = id();
					}
					break;
				case 2:
					{
					setState(5496);
					match(DEFAULT_DOUBLE_QUOTE);
					}
					break;
				}
				setState(5505);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,663,_ctx) ) {
				case 1:
					{
					setState(5500);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==COMMA) {
						{
						setState(5499);
						match(COMMA);
						}
					}

					setState(5502);
					match(EXTERNAL);
					setState(5503);
					((Create_workload_groupContext)_localctx).external_pool_name = id();
					}
					break;
				case 2:
					{
					setState(5504);
					match(DEFAULT_DOUBLE_QUOTE);
					}
					break;
				}
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Create_xml_schema_collectionContext extends ParserRuleContext {
		public IdContext relational_schema;
		public IdContext sql_identifier;
		public TerminalNode CREATE() { return getToken(TSqlParser.CREATE, 0); }
		public TerminalNode XML() { return getToken(TSqlParser.XML, 0); }
		public TerminalNode SCHEMA() { return getToken(TSqlParser.SCHEMA, 0); }
		public TerminalNode COLLECTION() { return getToken(TSqlParser.COLLECTION, 0); }
		public TerminalNode AS() { return getToken(TSqlParser.AS, 0); }
		public List id() {
			return getRuleContexts(IdContext.class);
		}
		public IdContext id(int i) {
			return getRuleContext(IdContext.class,i);
		}
		public TerminalNode STRING() { return getToken(TSqlParser.STRING, 0); }
		public TerminalNode LOCAL_ID() { return getToken(TSqlParser.LOCAL_ID, 0); }
		public TerminalNode DOT() { return getToken(TSqlParser.DOT, 0); }
		public Create_xml_schema_collectionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_create_xml_schema_collection; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterCreate_xml_schema_collection(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitCreate_xml_schema_collection(this);
		}
	}

	public final Create_xml_schema_collectionContext create_xml_schema_collection() throws RecognitionException {
		Create_xml_schema_collectionContext _localctx = new Create_xml_schema_collectionContext(_ctx, getState());
		enterRule(_localctx, 410, RULE_create_xml_schema_collection);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5509);
			match(CREATE);
			setState(5510);
			match(XML);
			setState(5511);
			match(SCHEMA);
			setState(5512);
			match(COLLECTION);
			setState(5516);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,665,_ctx) ) {
			case 1:
				{
				setState(5513);
				((Create_xml_schema_collectionContext)_localctx).relational_schema = id();
				setState(5514);
				match(DOT);
				}
				break;
			}
			setState(5518);
			((Create_xml_schema_collectionContext)_localctx).sql_identifier = id();
			setState(5519);
			match(AS);
			setState(5523);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case STRING:
				{
				setState(5520);
				match(STRING);
				}
				break;
			case CALLED:
			case DATA_COMPRESSION:
			case EVENTDATA:
			case FILENAME:
			case FILLFACTOR:
			case FORCESEEK:
			case INIT:
			case KEY:
			case MASTER:
			case MAX_MEMORY:
			case OFFSETS:
			case PAGE:
			case PUBLIC:
			case R:
			case RAW:
			case RETURN:
			case RETURNS:
			case ROWCOUNT:
			case SAFETY:
			case SERVER:
			case SID:
			case SOURCE:
			case STATE:
			case START:
			case TARGET:
			case ABSOLUTE:
			case ACCENT_SENSITIVITY:
			case ACTION:
			case ACTIVATION:
			case ACTIVE:
			case ADDRESS:
			case AES_128:
			case AES_192:
			case AES_256:
			case AFFINITY:
			case AFTER:
			case AGGREGATE:
			case ALGORITHM:
			case ALLOW_ENCRYPTED_VALUE_MODIFICATIONS:
			case ALLOW_SNAPSHOT_ISOLATION:
			case ALLOWED:
			case ANSI_NULL_DEFAULT:
			case ANSI_NULLS:
			case ANSI_PADDING:
			case ANSI_WARNINGS:
			case APPLICATION_LOG:
			case APPLY:
			case ARITHABORT:
			case ASSEMBLY:
			case AUDIT:
			case AUDIT_GUID:
			case AUTO:
			case AUTO_CLEANUP:
			case AUTO_CLOSE:
			case AUTO_CREATE_STATISTICS:
			case AUTO_SHRINK:
			case AUTO_UPDATE_STATISTICS:
			case AUTO_UPDATE_STATISTICS_ASYNC:
			case AVAILABILITY:
			case AVG:
			case BACKUP_PRIORITY:
			case BEGIN_DIALOG:
			case BIGINT:
			case BINARY_BASE64:
			case BINARY_CHECKSUM:
			case BINDING:
			case BLOB_STORAGE:
			case BROKER:
			case BROKER_INSTANCE:
			case BULK_LOGGED:
			case CALLER:
			case CAP_CPU_PERCENT:
			case CAST:
			case CATALOG:
			case CATCH:
			case CHANGE_RETENTION:
			case CHANGE_TRACKING:
			case CHECKSUM:
			case CHECKSUM_AGG:
			case CLEANUP:
			case COLLECTION:
			case COLUMN_MASTER_KEY:
			case COMMITTED:
			case COMPATIBILITY_LEVEL:
			case CONCAT:
			case CONCAT_NULL_YIELDS_NULL:
			case CONTENT:
			case CONTROL:
			case COOKIE:
			case COUNT:
			case COUNT_BIG:
			case COUNTER:
			case CPU:
			case CREATE_NEW:
			case CREATION_DISPOSITION:
			case CREDENTIAL:
			case CRYPTOGRAPHIC:
			case CURSOR_CLOSE_ON_COMMIT:
			case CURSOR_DEFAULT:
			case DATE_CORRELATION_OPTIMIZATION:
			case DATEADD:
			case DATEDIFF:
			case DATENAME:
			case DATEPART:
			case DAYS:
			case DB_CHAINING:
			case DB_FAILOVER:
			case DECRYPTION:
			case DEFAULT_DOUBLE_QUOTE:
			case DEFAULT_FULLTEXT_LANGUAGE:
			case DEFAULT_LANGUAGE:
			case DELAY:
			case DELAYED_DURABILITY:
			case DELETED:
			case DENSE_RANK:
			case DEPENDENTS:
			case DES:
			case DESCRIPTION:
			case DESX:
			case DHCP:
			case DIALOG:
			case DIRECTORY_NAME:
			case DISABLE:
			case DISABLE_BROKER:
			case DISABLED:
			case DISK_DRIVE:
			case DOCUMENT:
			case DYNAMIC:
			case EMERGENCY:
			case EMPTY:
			case ENABLE:
			case ENABLE_BROKER:
			case ENCRYPTED_VALUE:
			case ENCRYPTION:
			case ENDPOINT_URL:
			case ERROR_BROKER_CONVERSATIONS:
			case EXCLUSIVE:
			case EXECUTABLE:
			case EXIST:
			case EXPAND:
			case EXPIRY_DATE:
			case EXPLICIT:
			case FAIL_OPERATION:
			case FAILOVER_MODE:
			case FAILURE:
			case FAILURE_CONDITION_LEVEL:
			case FAST:
			case FAST_FORWARD:
			case FILEGROUP:
			case FILEGROWTH:
			case FILEPATH:
			case FILESTREAM:
			case FILTER:
			case FIRST:
			case FIRST_VALUE:
			case FOLLOWING:
			case FORCE:
			case FORCE_FAILOVER_ALLOW_DATA_LOSS:
			case FORCED:
			case FORMAT:
			case FORWARD_ONLY:
			case FULLSCAN:
			case FULLTEXT:
			case GB:
			case GETDATE:
			case GETUTCDATE:
			case GLOBAL:
			case GO:
			case GROUP_MAX_REQUESTS:
			case GROUPING:
			case GROUPING_ID:
			case HADR:
			case HASH:
			case HEALTH_CHECK_TIMEOUT:
			case HIGH:
			case HONOR_BROKER_PRIORITY:
			case HOURS:
			case IDENTITY_VALUE:
			case IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX:
			case IMMEDIATE:
			case IMPERSONATE:
			case IMPORTANCE:
			case INCREMENTAL:
			case INITIATOR:
			case INPUT:
			case INSENSITIVE:
			case INSERTED:
			case INT:
			case IP:
			case ISOLATION:
			case KB:
			case KEEP:
			case KEEPFIXED:
			case KEY_SOURCE:
			case KEYS:
			case KEYSET:
			case LAG:
			case LAST:
			case LAST_VALUE:
			case LEAD:
			case LEVEL:
			case LIST:
			case LISTENER:
			case LISTENER_URL:
			case LOB_COMPACTION:
			case LOCAL:
			case LOCATION:
			case LOCK:
			case LOCK_ESCALATION:
			case LOGIN:
			case LOOP:
			case LOW:
			case MANUAL:
			case MARK:
			case MATERIALIZED:
			case MAX:
			case MAX_CPU_PERCENT:
			case MAX_DOP:
			case MAX_FILES:
			case MAX_IOPS_PER_VOLUME:
			case MAX_MEMORY_PERCENT:
			case MAX_PROCESSES:
			case MAX_QUEUE_READERS:
			case MAX_ROLLOVER_FILES:
			case MAXDOP:
			case MAXRECURSION:
			case MAXSIZE:
			case MB:
			case MEDIUM:
			case MEMORY_OPTIMIZED_DATA:
			case MESSAGE:
			case MIN:
			case MIN_ACTIVE_ROWVERSION:
			case MIN_CPU_PERCENT:
			case MIN_IOPS_PER_VOLUME:
			case MIN_MEMORY_PERCENT:
			case MINUTES:
			case MIRROR_ADDRESS:
			case MIXED_PAGE_ALLOCATION:
			case MODE:
			case MODIFY:
			case MOVE:
			case MULTI_USER:
			case NAME:
			case NESTED_TRIGGERS:
			case NEW_ACCOUNT:
			case NEW_BROKER:
			case NEW_PASSWORD:
			case NEXT:
			case NO:
			case NO_TRUNCATE:
			case NO_WAIT:
			case NOCOUNT:
			case NODES:
			case NOEXPAND:
			case NON_TRANSACTED_ACCESS:
			case NORECOMPUTE:
			case NORECOVERY:
			case NOWAIT:
			case NTILE:
			case NUMANODE:
			case NUMBER:
			case NUMERIC_ROUNDABORT:
			case OBJECT:
			case OFFLINE:
			case OFFSET:
			case OLD_ACCOUNT:
			case ONLINE:
			case ONLY:
			case OPEN_EXISTING:
			case OPTIMISTIC:
			case OPTIMIZE:
			case OUT:
			case OUTPUT:
			case OWNER:
			case PAGE_VERIFY:
			case PARAMETERIZATION:
			case PARTITION:
			case PARTITIONS:
			case PARTNER:
			case PATH:
			case POISON_MESSAGE_HANDLING:
			case POOL:
			case PORT:
			case PRECEDING:
			case PRIMARY_ROLE:
			case PRIOR:
			case PRIORITY:
			case PRIORITY_LEVEL:
			case PRIVATE:
			case PRIVATE_KEY:
			case PRIVILEGES:
			case PROCEDURE_NAME:
			case PROPERTY:
			case PROVIDER:
			case PROVIDER_KEY_NAME:
			case QUERY:
			case QUEUE:
			case QUEUE_DELAY:
			case QUOTED_IDENTIFIER:
			case RANGE:
			case RANK:
			case RC2:
			case RC4:
			case RC4_128:
			case READ_COMMITTED_SNAPSHOT:
			case READ_ONLY:
			case READ_ONLY_ROUTING_LIST:
			case READ_WRITE:
			case READONLY:
			case REBUILD:
			case RECEIVE:
			case RECOMPILE:
			case RECOVERY:
			case RECURSIVE_TRIGGERS:
			case RELATIVE:
			case REMOTE:
			case REMOTE_SERVICE_NAME:
			case REMOVE:
			case REORGANIZE:
			case REPEATABLE:
			case REPLICA:
			case REQUEST_MAX_CPU_TIME_SEC:
			case REQUEST_MAX_MEMORY_GRANT_PERCENT:
			case REQUEST_MEMORY_GRANT_TIMEOUT_SEC:
			case REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT:
			case RESERVE_DISK_SPACE:
			case RESOURCE:
			case RESOURCE_MANAGER_LOCATION:
			case RESTRICTED_USER:
			case RETENTION:
			case ROBUST:
			case ROOT:
			case ROUTE:
			case ROW:
			case ROW_NUMBER:
			case ROWGUID:
			case ROWS:
			case SAMPLE:
			case SCHEMABINDING:
			case SCOPED:
			case SCROLL:
			case SCROLL_LOCKS:
			case SEARCH:
			case SECONDARY:
			case SECONDARY_ONLY:
			case SECONDARY_ROLE:
			case SECONDS:
			case SECRET:
			case SECURITY_LOG:
			case SEEDING_MODE:
			case SELF:
			case SEMI_SENSITIVE:
			case SEND:
			case SENT:
			case SERIALIZABLE:
			case SESSION_TIMEOUT:
			case SETERROR:
			case SHARE:
			case SHOWPLAN:
			case SIGNATURE:
			case SIMPLE:
			case SINGLE_USER:
			case SIZE:
			case SMALLINT:
			case SNAPSHOT:
			case SPATIAL_WINDOW_MAX_CELLS:
			case STANDBY:
			case START_DATE:
			case STATIC:
			case STATS_STREAM:
			case STATUS:
			case STDEV:
			case STDEVP:
			case STOPLIST:
			case STUFF:
			case SUBJECT:
			case SUM:
			case SUSPEND:
			case SYMMETRIC:
			case SYNCHRONOUS_COMMIT:
			case SYNONYM:
			case TAKE:
			case TARGET_RECOVERY_TIME:
			case TB:
			case TEXTIMAGE_ON:
			case THROW:
			case TIES:
			case TIME:
			case TIMEOUT:
			case TIMER:
			case TINYINT:
			case TORN_PAGE_DETECTION:
			case TRANSFORM_NOISE_WORDS:
			case TRIPLE_DES:
			case TRIPLE_DES_3KEY:
			case TRUSTWORTHY:
			case TRY:
			case TSQL:
			case TWO_DIGIT_YEAR_CUTOFF:
			case TYPE:
			case TYPE_WARNING:
			case UNBOUNDED:
			case UNCOMMITTED:
			case UNKNOWN:
			case UNLIMITED:
			case USING:
			case VALID_XML:
			case VALIDATION:
			case VALUE:
			case VAR:
			case VARP:
			case VIEW_METADATA:
			case VIEWS:
			case WAIT:
			case WELL_FORMED_XML:
			case WORK:
			case WORKLOAD:
			case XML:
			case XMLNAMESPACES:
			case DOUBLE_QUOTE_ID:
			case SQUARE_BRACKET_ID:
			case ID:
				{
				setState(5521);
				id();
				}
				break;
			case LOCAL_ID:
				{
				setState(5522);
				match(LOCAL_ID);
				}
				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 Create_queueContext extends ParserRuleContext {
		public IdContext queue_name;
		public IdContext filegroup;
		public TerminalNode CREATE() { return getToken(TSqlParser.CREATE, 0); }
		public TerminalNode QUEUE() { return getToken(TSqlParser.QUEUE, 0); }
		public Full_table_nameContext full_table_name() {
			return getRuleContext(Full_table_nameContext.class,0);
		}
		public List id() {
			return getRuleContexts(IdContext.class);
		}
		public IdContext id(int i) {
			return getRuleContext(IdContext.class,i);
		}
		public Queue_settingsContext queue_settings() {
			return getRuleContext(Queue_settingsContext.class,0);
		}
		public TerminalNode ON() { return getToken(TSqlParser.ON, 0); }
		public TerminalNode DEFAULT() { return getToken(TSqlParser.DEFAULT, 0); }
		public Create_queueContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_create_queue; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterCreate_queue(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitCreate_queue(this);
		}
	}

	public final Create_queueContext create_queue() throws RecognitionException {
		Create_queueContext _localctx = new Create_queueContext(_ctx, getState());
		enterRule(_localctx, 412, RULE_create_queue);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5525);
			match(CREATE);
			setState(5526);
			match(QUEUE);
			setState(5529);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,667,_ctx) ) {
			case 1:
				{
				setState(5527);
				full_table_name();
				}
				break;
			case 2:
				{
				setState(5528);
				((Create_queueContext)_localctx).queue_name = id();
				}
				break;
			}
			setState(5532);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,668,_ctx) ) {
			case 1:
				{
				setState(5531);
				queue_settings();
				}
				break;
			}
			setState(5537);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,669,_ctx) ) {
			case 1:
				{
				setState(5534);
				match(ON);
				setState(5535);
				((Create_queueContext)_localctx).filegroup = id();
				}
				break;
			case 2:
				{
				setState(5536);
				match(DEFAULT);
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Queue_settingsContext extends ParserRuleContext {
		public Token max_readers;
		public Token user_name;
		public TerminalNode WITH() { return getToken(TSqlParser.WITH, 0); }
		public List STATUS() { return getTokens(TSqlParser.STATUS); }
		public TerminalNode STATUS(int i) {
			return getToken(TSqlParser.STATUS, i);
		}
		public List EQUAL() { return getTokens(TSqlParser.EQUAL); }
		public TerminalNode EQUAL(int i) {
			return getToken(TSqlParser.EQUAL, i);
		}
		public TerminalNode RETENTION() { return getToken(TSqlParser.RETENTION, 0); }
		public TerminalNode ACTIVATION() { return getToken(TSqlParser.ACTIVATION, 0); }
		public List LR_BRACKET() { return getTokens(TSqlParser.LR_BRACKET); }
		public TerminalNode LR_BRACKET(int i) {
			return getToken(TSqlParser.LR_BRACKET, i);
		}
		public List RR_BRACKET() { return getTokens(TSqlParser.RR_BRACKET); }
		public TerminalNode RR_BRACKET(int i) {
			return getToken(TSqlParser.RR_BRACKET, i);
		}
		public TerminalNode POISON_MESSAGE_HANDLING() { return getToken(TSqlParser.POISON_MESSAGE_HANDLING, 0); }
		public List ON() { return getTokens(TSqlParser.ON); }
		public TerminalNode ON(int i) {
			return getToken(TSqlParser.ON, i);
		}
		public List OFF() { return getTokens(TSqlParser.OFF); }
		public TerminalNode OFF(int i) {
			return getToken(TSqlParser.OFF, i);
		}
		public TerminalNode DROP() { return getToken(TSqlParser.DROP, 0); }
		public List COMMA() { return getTokens(TSqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(TSqlParser.COMMA, i);
		}
		public TerminalNode PROCEDURE_NAME() { return getToken(TSqlParser.PROCEDURE_NAME, 0); }
		public Func_proc_name_database_schemaContext func_proc_name_database_schema() {
			return getRuleContext(Func_proc_name_database_schemaContext.class,0);
		}
		public TerminalNode MAX_QUEUE_READERS() { return getToken(TSqlParser.MAX_QUEUE_READERS, 0); }
		public TerminalNode EXECUTE() { return getToken(TSqlParser.EXECUTE, 0); }
		public TerminalNode AS() { return getToken(TSqlParser.AS, 0); }
		public TerminalNode DECIMAL() { return getToken(TSqlParser.DECIMAL, 0); }
		public TerminalNode SELF() { return getToken(TSqlParser.SELF, 0); }
		public TerminalNode OWNER() { return getToken(TSqlParser.OWNER, 0); }
		public TerminalNode STRING() { return getToken(TSqlParser.STRING, 0); }
		public Queue_settingsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_queue_settings; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterQueue_settings(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitQueue_settings(this);
		}
	}

	public final Queue_settingsContext queue_settings() throws RecognitionException {
		Queue_settingsContext _localctx = new Queue_settingsContext(_ctx, getState());
		enterRule(_localctx, 414, RULE_queue_settings);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5539);
			match(WITH);
			setState(5546);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,671,_ctx) ) {
			case 1:
				{
				setState(5540);
				match(STATUS);
				setState(5541);
				match(EQUAL);
				setState(5542);
				_la = _input.LA(1);
				if ( !(_la==OFF || _la==ON) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(5544);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==COMMA) {
					{
					setState(5543);
					match(COMMA);
					}
				}

				}
				break;
			}
			setState(5554);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,673,_ctx) ) {
			case 1:
				{
				setState(5548);
				match(RETENTION);
				setState(5549);
				match(EQUAL);
				setState(5550);
				_la = _input.LA(1);
				if ( !(_la==OFF || _la==ON) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(5552);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==COMMA) {
					{
					setState(5551);
					match(COMMA);
					}
				}

				}
				break;
			}
			setState(5601);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,685,_ctx) ) {
			case 1:
				{
				setState(5556);
				match(ACTIVATION);
				setState(5557);
				match(LR_BRACKET);
				setState(5595);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case EXECUTE:
				case MAX_QUEUE_READERS:
				case PROCEDURE_NAME:
				case STATUS:
				case RR_BRACKET:
					{
					{
					setState(5564);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==STATUS) {
						{
						setState(5558);
						match(STATUS);
						setState(5559);
						match(EQUAL);
						setState(5560);
						_la = _input.LA(1);
						if ( !(_la==OFF || _la==ON) ) {
						_errHandler.recoverInline(this);
						}
						else {
							if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
							_errHandler.reportMatch(this);
							consume();
						}
						setState(5562);
						_errHandler.sync(this);
						_la = _input.LA(1);
						if (_la==COMMA) {
							{
							setState(5561);
							match(COMMA);
							}
						}

						}
					}

					setState(5572);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==PROCEDURE_NAME) {
						{
						setState(5566);
						match(PROCEDURE_NAME);
						setState(5567);
						match(EQUAL);
						setState(5568);
						func_proc_name_database_schema();
						setState(5570);
						_errHandler.sync(this);
						_la = _input.LA(1);
						if (_la==COMMA) {
							{
							setState(5569);
							match(COMMA);
							}
						}

						}
					}

					setState(5580);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==MAX_QUEUE_READERS) {
						{
						setState(5574);
						match(MAX_QUEUE_READERS);
						setState(5575);
						match(EQUAL);
						setState(5576);
						((Queue_settingsContext)_localctx).max_readers = match(DECIMAL);
						setState(5578);
						_errHandler.sync(this);
						_la = _input.LA(1);
						if (_la==COMMA) {
							{
							setState(5577);
							match(COMMA);
							}
						}

						}
					}

					setState(5592);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==EXECUTE) {
						{
						setState(5582);
						match(EXECUTE);
						setState(5583);
						match(AS);
						setState(5587);
						_errHandler.sync(this);
						switch (_input.LA(1)) {
						case SELF:
							{
							setState(5584);
							match(SELF);
							}
							break;
						case STRING:
							{
							setState(5585);
							((Queue_settingsContext)_localctx).user_name = match(STRING);
							}
							break;
						case OWNER:
							{
							setState(5586);
							match(OWNER);
							}
							break;
						default:
							throw new NoViableAltException(this);
						}
						setState(5590);
						_errHandler.sync(this);
						_la = _input.LA(1);
						if (_la==COMMA) {
							{
							setState(5589);
							match(COMMA);
							}
						}

						}
					}

					}
					}
					break;
				case DROP:
					{
					setState(5594);
					match(DROP);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				setState(5597);
				match(RR_BRACKET);
				setState(5599);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==COMMA) {
					{
					setState(5598);
					match(COMMA);
					}
				}

				}
				break;
			}
			setState(5610);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,686,_ctx) ) {
			case 1:
				{
				setState(5603);
				match(POISON_MESSAGE_HANDLING);
				setState(5604);
				match(LR_BRACKET);
				{
				setState(5605);
				match(STATUS);
				setState(5606);
				match(EQUAL);
				setState(5607);
				_la = _input.LA(1);
				if ( !(_la==OFF || _la==ON) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
				setState(5609);
				match(RR_BRACKET);
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Alter_queueContext extends ParserRuleContext {
		public IdContext queue_name;
		public TerminalNode ALTER() { return getToken(TSqlParser.ALTER, 0); }
		public TerminalNode QUEUE() { return getToken(TSqlParser.QUEUE, 0); }
		public Full_table_nameContext full_table_name() {
			return getRuleContext(Full_table_nameContext.class,0);
		}
		public Queue_settingsContext queue_settings() {
			return getRuleContext(Queue_settingsContext.class,0);
		}
		public Queue_actionContext queue_action() {
			return getRuleContext(Queue_actionContext.class,0);
		}
		public IdContext id() {
			return getRuleContext(IdContext.class,0);
		}
		public Alter_queueContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alter_queue; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterAlter_queue(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitAlter_queue(this);
		}
	}

	public final Alter_queueContext alter_queue() throws RecognitionException {
		Alter_queueContext _localctx = new Alter_queueContext(_ctx, getState());
		enterRule(_localctx, 416, RULE_alter_queue);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5612);
			match(ALTER);
			setState(5613);
			match(QUEUE);
			setState(5616);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,687,_ctx) ) {
			case 1:
				{
				setState(5614);
				full_table_name();
				}
				break;
			case 2:
				{
				setState(5615);
				((Alter_queueContext)_localctx).queue_name = id();
				}
				break;
			}
			setState(5620);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case WITH:
				{
				setState(5618);
				queue_settings();
				}
				break;
			case MOVE:
			case REBUILD:
			case REORGANIZE:
				{
				setState(5619);
				queue_action();
				}
				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 Queue_actionContext extends ParserRuleContext {
		public TerminalNode REBUILD() { return getToken(TSqlParser.REBUILD, 0); }
		public TerminalNode WITH() { return getToken(TSqlParser.WITH, 0); }
		public TerminalNode LR_BRACKET() { return getToken(TSqlParser.LR_BRACKET, 0); }
		public Queue_rebuild_optionsContext queue_rebuild_options() {
			return getRuleContext(Queue_rebuild_optionsContext.class,0);
		}
		public TerminalNode RR_BRACKET() { return getToken(TSqlParser.RR_BRACKET, 0); }
		public TerminalNode REORGANIZE() { return getToken(TSqlParser.REORGANIZE, 0); }
		public TerminalNode LOB_COMPACTION() { return getToken(TSqlParser.LOB_COMPACTION, 0); }
		public TerminalNode EQUAL() { return getToken(TSqlParser.EQUAL, 0); }
		public TerminalNode ON() { return getToken(TSqlParser.ON, 0); }
		public TerminalNode OFF() { return getToken(TSqlParser.OFF, 0); }
		public TerminalNode MOVE() { return getToken(TSqlParser.MOVE, 0); }
		public TerminalNode TO() { return getToken(TSqlParser.TO, 0); }
		public IdContext id() {
			return getRuleContext(IdContext.class,0);
		}
		public TerminalNode DEFAULT() { return getToken(TSqlParser.DEFAULT, 0); }
		public Queue_actionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_queue_action; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterQueue_action(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitQueue_action(this);
		}
	}

	public final Queue_actionContext queue_action() throws RecognitionException {
		Queue_actionContext _localctx = new Queue_actionContext(_ctx, getState());
		enterRule(_localctx, 418, RULE_queue_action);
		int _la;
		try {
			setState(5643);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case REBUILD:
				enterOuterAlt(_localctx, 1);
				{
				setState(5622);
				match(REBUILD);
				setState(5628);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,689,_ctx) ) {
				case 1:
					{
					setState(5623);
					match(WITH);
					setState(5624);
					match(LR_BRACKET);
					setState(5625);
					queue_rebuild_options();
					setState(5626);
					match(RR_BRACKET);
					}
					break;
				}
				}
				break;
			case REORGANIZE:
				enterOuterAlt(_localctx, 2);
				{
				setState(5630);
				match(REORGANIZE);
				setState(5635);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,690,_ctx) ) {
				case 1:
					{
					setState(5631);
					match(WITH);
					setState(5632);
					match(LOB_COMPACTION);
					setState(5633);
					match(EQUAL);
					setState(5634);
					_la = _input.LA(1);
					if ( !(_la==OFF || _la==ON) ) {
					_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					}
					break;
				}
				}
				break;
			case MOVE:
				enterOuterAlt(_localctx, 3);
				{
				setState(5637);
				match(MOVE);
				setState(5638);
				match(TO);
				setState(5641);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case CALLED:
				case DATA_COMPRESSION:
				case EVENTDATA:
				case FILENAME:
				case FILLFACTOR:
				case FORCESEEK:
				case INIT:
				case KEY:
				case MASTER:
				case MAX_MEMORY:
				case OFFSETS:
				case PAGE:
				case PUBLIC:
				case R:
				case RAW:
				case RETURN:
				case RETURNS:
				case ROWCOUNT:
				case SAFETY:
				case SERVER:
				case SID:
				case SOURCE:
				case STATE:
				case START:
				case TARGET:
				case ABSOLUTE:
				case ACCENT_SENSITIVITY:
				case ACTION:
				case ACTIVATION:
				case ACTIVE:
				case ADDRESS:
				case AES_128:
				case AES_192:
				case AES_256:
				case AFFINITY:
				case AFTER:
				case AGGREGATE:
				case ALGORITHM:
				case ALLOW_ENCRYPTED_VALUE_MODIFICATIONS:
				case ALLOW_SNAPSHOT_ISOLATION:
				case ALLOWED:
				case ANSI_NULL_DEFAULT:
				case ANSI_NULLS:
				case ANSI_PADDING:
				case ANSI_WARNINGS:
				case APPLICATION_LOG:
				case APPLY:
				case ARITHABORT:
				case ASSEMBLY:
				case AUDIT:
				case AUDIT_GUID:
				case AUTO:
				case AUTO_CLEANUP:
				case AUTO_CLOSE:
				case AUTO_CREATE_STATISTICS:
				case AUTO_SHRINK:
				case AUTO_UPDATE_STATISTICS:
				case AUTO_UPDATE_STATISTICS_ASYNC:
				case AVAILABILITY:
				case AVG:
				case BACKUP_PRIORITY:
				case BEGIN_DIALOG:
				case BIGINT:
				case BINARY_BASE64:
				case BINARY_CHECKSUM:
				case BINDING:
				case BLOB_STORAGE:
				case BROKER:
				case BROKER_INSTANCE:
				case BULK_LOGGED:
				case CALLER:
				case CAP_CPU_PERCENT:
				case CAST:
				case CATALOG:
				case CATCH:
				case CHANGE_RETENTION:
				case CHANGE_TRACKING:
				case CHECKSUM:
				case CHECKSUM_AGG:
				case CLEANUP:
				case COLLECTION:
				case COLUMN_MASTER_KEY:
				case COMMITTED:
				case COMPATIBILITY_LEVEL:
				case CONCAT:
				case CONCAT_NULL_YIELDS_NULL:
				case CONTENT:
				case CONTROL:
				case COOKIE:
				case COUNT:
				case COUNT_BIG:
				case COUNTER:
				case CPU:
				case CREATE_NEW:
				case CREATION_DISPOSITION:
				case CREDENTIAL:
				case CRYPTOGRAPHIC:
				case CURSOR_CLOSE_ON_COMMIT:
				case CURSOR_DEFAULT:
				case DATE_CORRELATION_OPTIMIZATION:
				case DATEADD:
				case DATEDIFF:
				case DATENAME:
				case DATEPART:
				case DAYS:
				case DB_CHAINING:
				case DB_FAILOVER:
				case DECRYPTION:
				case DEFAULT_DOUBLE_QUOTE:
				case DEFAULT_FULLTEXT_LANGUAGE:
				case DEFAULT_LANGUAGE:
				case DELAY:
				case DELAYED_DURABILITY:
				case DELETED:
				case DENSE_RANK:
				case DEPENDENTS:
				case DES:
				case DESCRIPTION:
				case DESX:
				case DHCP:
				case DIALOG:
				case DIRECTORY_NAME:
				case DISABLE:
				case DISABLE_BROKER:
				case DISABLED:
				case DISK_DRIVE:
				case DOCUMENT:
				case DYNAMIC:
				case EMERGENCY:
				case EMPTY:
				case ENABLE:
				case ENABLE_BROKER:
				case ENCRYPTED_VALUE:
				case ENCRYPTION:
				case ENDPOINT_URL:
				case ERROR_BROKER_CONVERSATIONS:
				case EXCLUSIVE:
				case EXECUTABLE:
				case EXIST:
				case EXPAND:
				case EXPIRY_DATE:
				case EXPLICIT:
				case FAIL_OPERATION:
				case FAILOVER_MODE:
				case FAILURE:
				case FAILURE_CONDITION_LEVEL:
				case FAST:
				case FAST_FORWARD:
				case FILEGROUP:
				case FILEGROWTH:
				case FILEPATH:
				case FILESTREAM:
				case FILTER:
				case FIRST:
				case FIRST_VALUE:
				case FOLLOWING:
				case FORCE:
				case FORCE_FAILOVER_ALLOW_DATA_LOSS:
				case FORCED:
				case FORMAT:
				case FORWARD_ONLY:
				case FULLSCAN:
				case FULLTEXT:
				case GB:
				case GETDATE:
				case GETUTCDATE:
				case GLOBAL:
				case GO:
				case GROUP_MAX_REQUESTS:
				case GROUPING:
				case GROUPING_ID:
				case HADR:
				case HASH:
				case HEALTH_CHECK_TIMEOUT:
				case HIGH:
				case HONOR_BROKER_PRIORITY:
				case HOURS:
				case IDENTITY_VALUE:
				case IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX:
				case IMMEDIATE:
				case IMPERSONATE:
				case IMPORTANCE:
				case INCREMENTAL:
				case INITIATOR:
				case INPUT:
				case INSENSITIVE:
				case INSERTED:
				case INT:
				case IP:
				case ISOLATION:
				case KB:
				case KEEP:
				case KEEPFIXED:
				case KEY_SOURCE:
				case KEYS:
				case KEYSET:
				case LAG:
				case LAST:
				case LAST_VALUE:
				case LEAD:
				case LEVEL:
				case LIST:
				case LISTENER:
				case LISTENER_URL:
				case LOB_COMPACTION:
				case LOCAL:
				case LOCATION:
				case LOCK:
				case LOCK_ESCALATION:
				case LOGIN:
				case LOOP:
				case LOW:
				case MANUAL:
				case MARK:
				case MATERIALIZED:
				case MAX:
				case MAX_CPU_PERCENT:
				case MAX_DOP:
				case MAX_FILES:
				case MAX_IOPS_PER_VOLUME:
				case MAX_MEMORY_PERCENT:
				case MAX_PROCESSES:
				case MAX_QUEUE_READERS:
				case MAX_ROLLOVER_FILES:
				case MAXDOP:
				case MAXRECURSION:
				case MAXSIZE:
				case MB:
				case MEDIUM:
				case MEMORY_OPTIMIZED_DATA:
				case MESSAGE:
				case MIN:
				case MIN_ACTIVE_ROWVERSION:
				case MIN_CPU_PERCENT:
				case MIN_IOPS_PER_VOLUME:
				case MIN_MEMORY_PERCENT:
				case MINUTES:
				case MIRROR_ADDRESS:
				case MIXED_PAGE_ALLOCATION:
				case MODE:
				case MODIFY:
				case MOVE:
				case MULTI_USER:
				case NAME:
				case NESTED_TRIGGERS:
				case NEW_ACCOUNT:
				case NEW_BROKER:
				case NEW_PASSWORD:
				case NEXT:
				case NO:
				case NO_TRUNCATE:
				case NO_WAIT:
				case NOCOUNT:
				case NODES:
				case NOEXPAND:
				case NON_TRANSACTED_ACCESS:
				case NORECOMPUTE:
				case NORECOVERY:
				case NOWAIT:
				case NTILE:
				case NUMANODE:
				case NUMBER:
				case NUMERIC_ROUNDABORT:
				case OBJECT:
				case OFFLINE:
				case OFFSET:
				case OLD_ACCOUNT:
				case ONLINE:
				case ONLY:
				case OPEN_EXISTING:
				case OPTIMISTIC:
				case OPTIMIZE:
				case OUT:
				case OUTPUT:
				case OWNER:
				case PAGE_VERIFY:
				case PARAMETERIZATION:
				case PARTITION:
				case PARTITIONS:
				case PARTNER:
				case PATH:
				case POISON_MESSAGE_HANDLING:
				case POOL:
				case PORT:
				case PRECEDING:
				case PRIMARY_ROLE:
				case PRIOR:
				case PRIORITY:
				case PRIORITY_LEVEL:
				case PRIVATE:
				case PRIVATE_KEY:
				case PRIVILEGES:
				case PROCEDURE_NAME:
				case PROPERTY:
				case PROVIDER:
				case PROVIDER_KEY_NAME:
				case QUERY:
				case QUEUE:
				case QUEUE_DELAY:
				case QUOTED_IDENTIFIER:
				case RANGE:
				case RANK:
				case RC2:
				case RC4:
				case RC4_128:
				case READ_COMMITTED_SNAPSHOT:
				case READ_ONLY:
				case READ_ONLY_ROUTING_LIST:
				case READ_WRITE:
				case READONLY:
				case REBUILD:
				case RECEIVE:
				case RECOMPILE:
				case RECOVERY:
				case RECURSIVE_TRIGGERS:
				case RELATIVE:
				case REMOTE:
				case REMOTE_SERVICE_NAME:
				case REMOVE:
				case REORGANIZE:
				case REPEATABLE:
				case REPLICA:
				case REQUEST_MAX_CPU_TIME_SEC:
				case REQUEST_MAX_MEMORY_GRANT_PERCENT:
				case REQUEST_MEMORY_GRANT_TIMEOUT_SEC:
				case REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT:
				case RESERVE_DISK_SPACE:
				case RESOURCE:
				case RESOURCE_MANAGER_LOCATION:
				case RESTRICTED_USER:
				case RETENTION:
				case ROBUST:
				case ROOT:
				case ROUTE:
				case ROW:
				case ROW_NUMBER:
				case ROWGUID:
				case ROWS:
				case SAMPLE:
				case SCHEMABINDING:
				case SCOPED:
				case SCROLL:
				case SCROLL_LOCKS:
				case SEARCH:
				case SECONDARY:
				case SECONDARY_ONLY:
				case SECONDARY_ROLE:
				case SECONDS:
				case SECRET:
				case SECURITY_LOG:
				case SEEDING_MODE:
				case SELF:
				case SEMI_SENSITIVE:
				case SEND:
				case SENT:
				case SERIALIZABLE:
				case SESSION_TIMEOUT:
				case SETERROR:
				case SHARE:
				case SHOWPLAN:
				case SIGNATURE:
				case SIMPLE:
				case SINGLE_USER:
				case SIZE:
				case SMALLINT:
				case SNAPSHOT:
				case SPATIAL_WINDOW_MAX_CELLS:
				case STANDBY:
				case START_DATE:
				case STATIC:
				case STATS_STREAM:
				case STATUS:
				case STDEV:
				case STDEVP:
				case STOPLIST:
				case STUFF:
				case SUBJECT:
				case SUM:
				case SUSPEND:
				case SYMMETRIC:
				case SYNCHRONOUS_COMMIT:
				case SYNONYM:
				case TAKE:
				case TARGET_RECOVERY_TIME:
				case TB:
				case TEXTIMAGE_ON:
				case THROW:
				case TIES:
				case TIME:
				case TIMEOUT:
				case TIMER:
				case TINYINT:
				case TORN_PAGE_DETECTION:
				case TRANSFORM_NOISE_WORDS:
				case TRIPLE_DES:
				case TRIPLE_DES_3KEY:
				case TRUSTWORTHY:
				case TRY:
				case TSQL:
				case TWO_DIGIT_YEAR_CUTOFF:
				case TYPE:
				case TYPE_WARNING:
				case UNBOUNDED:
				case UNCOMMITTED:
				case UNKNOWN:
				case UNLIMITED:
				case USING:
				case VALID_XML:
				case VALIDATION:
				case VALUE:
				case VAR:
				case VARP:
				case VIEW_METADATA:
				case VIEWS:
				case WAIT:
				case WELL_FORMED_XML:
				case WORK:
				case WORKLOAD:
				case XML:
				case XMLNAMESPACES:
				case DOUBLE_QUOTE_ID:
				case SQUARE_BRACKET_ID:
				case ID:
					{
					setState(5639);
					id();
					}
					break;
				case DEFAULT:
					{
					setState(5640);
					match(DEFAULT);
					}
					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 Queue_rebuild_optionsContext extends ParserRuleContext {
		public TerminalNode MAXDOP() { return getToken(TSqlParser.MAXDOP, 0); }
		public TerminalNode EQUAL() { return getToken(TSqlParser.EQUAL, 0); }
		public TerminalNode DECIMAL() { return getToken(TSqlParser.DECIMAL, 0); }
		public Queue_rebuild_optionsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_queue_rebuild_options; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterQueue_rebuild_options(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitQueue_rebuild_options(this);
		}
	}

	public final Queue_rebuild_optionsContext queue_rebuild_options() throws RecognitionException {
		Queue_rebuild_optionsContext _localctx = new Queue_rebuild_optionsContext(_ctx, getState());
		enterRule(_localctx, 420, RULE_queue_rebuild_options);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5645);
			match(MAXDOP);
			setState(5646);
			match(EQUAL);
			setState(5647);
			match(DECIMAL);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Create_contractContext extends ParserRuleContext {
		public IdContext owner_name;
		public IdContext message_type_name;
		public TerminalNode CREATE() { return getToken(TSqlParser.CREATE, 0); }
		public TerminalNode CONTRACT() { return getToken(TSqlParser.CONTRACT, 0); }
		public Contract_nameContext contract_name() {
			return getRuleContext(Contract_nameContext.class,0);
		}
		public TerminalNode LR_BRACKET() { return getToken(TSqlParser.LR_BRACKET, 0); }
		public TerminalNode RR_BRACKET() { return getToken(TSqlParser.RR_BRACKET, 0); }
		public TerminalNode AUTHORIZATION() { return getToken(TSqlParser.AUTHORIZATION, 0); }
		public List SENT() { return getTokens(TSqlParser.SENT); }
		public TerminalNode SENT(int i) {
			return getToken(TSqlParser.SENT, i);
		}
		public List BY() { return getTokens(TSqlParser.BY); }
		public TerminalNode BY(int i) {
			return getToken(TSqlParser.BY, i);
		}
		public List id() {
			return getRuleContexts(IdContext.class);
		}
		public IdContext id(int i) {
			return getRuleContext(IdContext.class,i);
		}
		public List INITIATOR() { return getTokens(TSqlParser.INITIATOR); }
		public TerminalNode INITIATOR(int i) {
			return getToken(TSqlParser.INITIATOR, i);
		}
		public List TARGET() { return getTokens(TSqlParser.TARGET); }
		public TerminalNode TARGET(int i) {
			return getToken(TSqlParser.TARGET, i);
		}
		public List ANY() { return getTokens(TSqlParser.ANY); }
		public TerminalNode ANY(int i) {
			return getToken(TSqlParser.ANY, i);
		}
		public List DEFAULT() { return getTokens(TSqlParser.DEFAULT); }
		public TerminalNode DEFAULT(int i) {
			return getToken(TSqlParser.DEFAULT, i);
		}
		public List COMMA() { return getTokens(TSqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(TSqlParser.COMMA, i);
		}
		public Create_contractContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_create_contract; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterCreate_contract(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitCreate_contract(this);
		}
	}

	public final Create_contractContext create_contract() throws RecognitionException {
		Create_contractContext _localctx = new Create_contractContext(_ctx, getState());
		enterRule(_localctx, 422, RULE_create_contract);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5649);
			match(CREATE);
			setState(5650);
			match(CONTRACT);
			setState(5651);
			contract_name();
			setState(5654);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==AUTHORIZATION) {
				{
				setState(5652);
				match(AUTHORIZATION);
				setState(5653);
				((Create_contractContext)_localctx).owner_name = id();
				}
			}

			setState(5656);
			match(LR_BRACKET);
			setState(5667); 
			_errHandler.sync(this);
			_la = _input.LA(1);
			do {
				{
				{
				setState(5659);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case CALLED:
				case DATA_COMPRESSION:
				case EVENTDATA:
				case FILENAME:
				case FILLFACTOR:
				case FORCESEEK:
				case INIT:
				case KEY:
				case MASTER:
				case MAX_MEMORY:
				case OFFSETS:
				case PAGE:
				case PUBLIC:
				case R:
				case RAW:
				case RETURN:
				case RETURNS:
				case ROWCOUNT:
				case SAFETY:
				case SERVER:
				case SID:
				case SOURCE:
				case STATE:
				case START:
				case TARGET:
				case ABSOLUTE:
				case ACCENT_SENSITIVITY:
				case ACTION:
				case ACTIVATION:
				case ACTIVE:
				case ADDRESS:
				case AES_128:
				case AES_192:
				case AES_256:
				case AFFINITY:
				case AFTER:
				case AGGREGATE:
				case ALGORITHM:
				case ALLOW_ENCRYPTED_VALUE_MODIFICATIONS:
				case ALLOW_SNAPSHOT_ISOLATION:
				case ALLOWED:
				case ANSI_NULL_DEFAULT:
				case ANSI_NULLS:
				case ANSI_PADDING:
				case ANSI_WARNINGS:
				case APPLICATION_LOG:
				case APPLY:
				case ARITHABORT:
				case ASSEMBLY:
				case AUDIT:
				case AUDIT_GUID:
				case AUTO:
				case AUTO_CLEANUP:
				case AUTO_CLOSE:
				case AUTO_CREATE_STATISTICS:
				case AUTO_SHRINK:
				case AUTO_UPDATE_STATISTICS:
				case AUTO_UPDATE_STATISTICS_ASYNC:
				case AVAILABILITY:
				case AVG:
				case BACKUP_PRIORITY:
				case BEGIN_DIALOG:
				case BIGINT:
				case BINARY_BASE64:
				case BINARY_CHECKSUM:
				case BINDING:
				case BLOB_STORAGE:
				case BROKER:
				case BROKER_INSTANCE:
				case BULK_LOGGED:
				case CALLER:
				case CAP_CPU_PERCENT:
				case CAST:
				case CATALOG:
				case CATCH:
				case CHANGE_RETENTION:
				case CHANGE_TRACKING:
				case CHECKSUM:
				case CHECKSUM_AGG:
				case CLEANUP:
				case COLLECTION:
				case COLUMN_MASTER_KEY:
				case COMMITTED:
				case COMPATIBILITY_LEVEL:
				case CONCAT:
				case CONCAT_NULL_YIELDS_NULL:
				case CONTENT:
				case CONTROL:
				case COOKIE:
				case COUNT:
				case COUNT_BIG:
				case COUNTER:
				case CPU:
				case CREATE_NEW:
				case CREATION_DISPOSITION:
				case CREDENTIAL:
				case CRYPTOGRAPHIC:
				case CURSOR_CLOSE_ON_COMMIT:
				case CURSOR_DEFAULT:
				case DATE_CORRELATION_OPTIMIZATION:
				case DATEADD:
				case DATEDIFF:
				case DATENAME:
				case DATEPART:
				case DAYS:
				case DB_CHAINING:
				case DB_FAILOVER:
				case DECRYPTION:
				case DEFAULT_DOUBLE_QUOTE:
				case DEFAULT_FULLTEXT_LANGUAGE:
				case DEFAULT_LANGUAGE:
				case DELAY:
				case DELAYED_DURABILITY:
				case DELETED:
				case DENSE_RANK:
				case DEPENDENTS:
				case DES:
				case DESCRIPTION:
				case DESX:
				case DHCP:
				case DIALOG:
				case DIRECTORY_NAME:
				case DISABLE:
				case DISABLE_BROKER:
				case DISABLED:
				case DISK_DRIVE:
				case DOCUMENT:
				case DYNAMIC:
				case EMERGENCY:
				case EMPTY:
				case ENABLE:
				case ENABLE_BROKER:
				case ENCRYPTED_VALUE:
				case ENCRYPTION:
				case ENDPOINT_URL:
				case ERROR_BROKER_CONVERSATIONS:
				case EXCLUSIVE:
				case EXECUTABLE:
				case EXIST:
				case EXPAND:
				case EXPIRY_DATE:
				case EXPLICIT:
				case FAIL_OPERATION:
				case FAILOVER_MODE:
				case FAILURE:
				case FAILURE_CONDITION_LEVEL:
				case FAST:
				case FAST_FORWARD:
				case FILEGROUP:
				case FILEGROWTH:
				case FILEPATH:
				case FILESTREAM:
				case FILTER:
				case FIRST:
				case FIRST_VALUE:
				case FOLLOWING:
				case FORCE:
				case FORCE_FAILOVER_ALLOW_DATA_LOSS:
				case FORCED:
				case FORMAT:
				case FORWARD_ONLY:
				case FULLSCAN:
				case FULLTEXT:
				case GB:
				case GETDATE:
				case GETUTCDATE:
				case GLOBAL:
				case GO:
				case GROUP_MAX_REQUESTS:
				case GROUPING:
				case GROUPING_ID:
				case HADR:
				case HASH:
				case HEALTH_CHECK_TIMEOUT:
				case HIGH:
				case HONOR_BROKER_PRIORITY:
				case HOURS:
				case IDENTITY_VALUE:
				case IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX:
				case IMMEDIATE:
				case IMPERSONATE:
				case IMPORTANCE:
				case INCREMENTAL:
				case INITIATOR:
				case INPUT:
				case INSENSITIVE:
				case INSERTED:
				case INT:
				case IP:
				case ISOLATION:
				case KB:
				case KEEP:
				case KEEPFIXED:
				case KEY_SOURCE:
				case KEYS:
				case KEYSET:
				case LAG:
				case LAST:
				case LAST_VALUE:
				case LEAD:
				case LEVEL:
				case LIST:
				case LISTENER:
				case LISTENER_URL:
				case LOB_COMPACTION:
				case LOCAL:
				case LOCATION:
				case LOCK:
				case LOCK_ESCALATION:
				case LOGIN:
				case LOOP:
				case LOW:
				case MANUAL:
				case MARK:
				case MATERIALIZED:
				case MAX:
				case MAX_CPU_PERCENT:
				case MAX_DOP:
				case MAX_FILES:
				case MAX_IOPS_PER_VOLUME:
				case MAX_MEMORY_PERCENT:
				case MAX_PROCESSES:
				case MAX_QUEUE_READERS:
				case MAX_ROLLOVER_FILES:
				case MAXDOP:
				case MAXRECURSION:
				case MAXSIZE:
				case MB:
				case MEDIUM:
				case MEMORY_OPTIMIZED_DATA:
				case MESSAGE:
				case MIN:
				case MIN_ACTIVE_ROWVERSION:
				case MIN_CPU_PERCENT:
				case MIN_IOPS_PER_VOLUME:
				case MIN_MEMORY_PERCENT:
				case MINUTES:
				case MIRROR_ADDRESS:
				case MIXED_PAGE_ALLOCATION:
				case MODE:
				case MODIFY:
				case MOVE:
				case MULTI_USER:
				case NAME:
				case NESTED_TRIGGERS:
				case NEW_ACCOUNT:
				case NEW_BROKER:
				case NEW_PASSWORD:
				case NEXT:
				case NO:
				case NO_TRUNCATE:
				case NO_WAIT:
				case NOCOUNT:
				case NODES:
				case NOEXPAND:
				case NON_TRANSACTED_ACCESS:
				case NORECOMPUTE:
				case NORECOVERY:
				case NOWAIT:
				case NTILE:
				case NUMANODE:
				case NUMBER:
				case NUMERIC_ROUNDABORT:
				case OBJECT:
				case OFFLINE:
				case OFFSET:
				case OLD_ACCOUNT:
				case ONLINE:
				case ONLY:
				case OPEN_EXISTING:
				case OPTIMISTIC:
				case OPTIMIZE:
				case OUT:
				case OUTPUT:
				case OWNER:
				case PAGE_VERIFY:
				case PARAMETERIZATION:
				case PARTITION:
				case PARTITIONS:
				case PARTNER:
				case PATH:
				case POISON_MESSAGE_HANDLING:
				case POOL:
				case PORT:
				case PRECEDING:
				case PRIMARY_ROLE:
				case PRIOR:
				case PRIORITY:
				case PRIORITY_LEVEL:
				case PRIVATE:
				case PRIVATE_KEY:
				case PRIVILEGES:
				case PROCEDURE_NAME:
				case PROPERTY:
				case PROVIDER:
				case PROVIDER_KEY_NAME:
				case QUERY:
				case QUEUE:
				case QUEUE_DELAY:
				case QUOTED_IDENTIFIER:
				case RANGE:
				case RANK:
				case RC2:
				case RC4:
				case RC4_128:
				case READ_COMMITTED_SNAPSHOT:
				case READ_ONLY:
				case READ_ONLY_ROUTING_LIST:
				case READ_WRITE:
				case READONLY:
				case REBUILD:
				case RECEIVE:
				case RECOMPILE:
				case RECOVERY:
				case RECURSIVE_TRIGGERS:
				case RELATIVE:
				case REMOTE:
				case REMOTE_SERVICE_NAME:
				case REMOVE:
				case REORGANIZE:
				case REPEATABLE:
				case REPLICA:
				case REQUEST_MAX_CPU_TIME_SEC:
				case REQUEST_MAX_MEMORY_GRANT_PERCENT:
				case REQUEST_MEMORY_GRANT_TIMEOUT_SEC:
				case REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT:
				case RESERVE_DISK_SPACE:
				case RESOURCE:
				case RESOURCE_MANAGER_LOCATION:
				case RESTRICTED_USER:
				case RETENTION:
				case ROBUST:
				case ROOT:
				case ROUTE:
				case ROW:
				case ROW_NUMBER:
				case ROWGUID:
				case ROWS:
				case SAMPLE:
				case SCHEMABINDING:
				case SCOPED:
				case SCROLL:
				case SCROLL_LOCKS:
				case SEARCH:
				case SECONDARY:
				case SECONDARY_ONLY:
				case SECONDARY_ROLE:
				case SECONDS:
				case SECRET:
				case SECURITY_LOG:
				case SEEDING_MODE:
				case SELF:
				case SEMI_SENSITIVE:
				case SEND:
				case SENT:
				case SERIALIZABLE:
				case SESSION_TIMEOUT:
				case SETERROR:
				case SHARE:
				case SHOWPLAN:
				case SIGNATURE:
				case SIMPLE:
				case SINGLE_USER:
				case SIZE:
				case SMALLINT:
				case SNAPSHOT:
				case SPATIAL_WINDOW_MAX_CELLS:
				case STANDBY:
				case START_DATE:
				case STATIC:
				case STATS_STREAM:
				case STATUS:
				case STDEV:
				case STDEVP:
				case STOPLIST:
				case STUFF:
				case SUBJECT:
				case SUM:
				case SUSPEND:
				case SYMMETRIC:
				case SYNCHRONOUS_COMMIT:
				case SYNONYM:
				case TAKE:
				case TARGET_RECOVERY_TIME:
				case TB:
				case TEXTIMAGE_ON:
				case THROW:
				case TIES:
				case TIME:
				case TIMEOUT:
				case TIMER:
				case TINYINT:
				case TORN_PAGE_DETECTION:
				case TRANSFORM_NOISE_WORDS:
				case TRIPLE_DES:
				case TRIPLE_DES_3KEY:
				case TRUSTWORTHY:
				case TRY:
				case TSQL:
				case TWO_DIGIT_YEAR_CUTOFF:
				case TYPE:
				case TYPE_WARNING:
				case UNBOUNDED:
				case UNCOMMITTED:
				case UNKNOWN:
				case UNLIMITED:
				case USING:
				case VALID_XML:
				case VALIDATION:
				case VALUE:
				case VAR:
				case VARP:
				case VIEW_METADATA:
				case VIEWS:
				case WAIT:
				case WELL_FORMED_XML:
				case WORK:
				case WORKLOAD:
				case XML:
				case XMLNAMESPACES:
				case DOUBLE_QUOTE_ID:
				case SQUARE_BRACKET_ID:
				case ID:
					{
					setState(5657);
					((Create_contractContext)_localctx).message_type_name = id();
					}
					break;
				case DEFAULT:
					{
					setState(5658);
					match(DEFAULT);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				setState(5661);
				match(SENT);
				setState(5662);
				match(BY);
				setState(5663);
				_la = _input.LA(1);
				if ( !(_la==ANY || _la==TARGET || _la==INITIATOR) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(5665);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==COMMA) {
					{
					setState(5664);
					match(COMMA);
					}
				}

				}
				}
				setState(5669); 
				_errHandler.sync(this);
				_la = _input.LA(1);
			} while ( _la==CALLED || ((((_la - 81)) & ~0x3f) == 0 && ((1L << (_la - 81)) & ((1L << (DATA_COMPRESSION - 81)) | (1L << (DEFAULT - 81)) | (1L << (EVENTDATA - 81)) | (1L << (FILENAME - 81)) | (1L << (FILLFACTOR - 81)) | (1L << (FORCESEEK - 81)))) != 0) || ((((_la - 159)) & ~0x3f) == 0 && ((1L << (_la - 159)) & ((1L << (INIT - 159)) | (1L << (KEY - 159)) | (1L << (MASTER - 159)) | (1L << (MAX_MEMORY - 159)))) != 0) || ((((_la - 226)) & ~0x3f) == 0 && ((1L << (_la - 226)) & ((1L << (OFFSETS - 226)) | (1L << (PAGE - 226)) | (1L << (PUBLIC - 226)) | (1L << (R - 226)) | (1L << (RAW - 226)) | (1L << (RETURN - 226)) | (1L << (RETURNS - 226)) | (1L << (ROWCOUNT - 226)))) != 0) || ((((_la - 296)) & ~0x3f) == 0 && ((1L << (_la - 296)) & ((1L << (SAFETY - 296)) | (1L << (SERVER - 296)) | (1L << (SID - 296)) | (1L << (SOURCE - 296)) | (1L << (STATE - 296)) | (1L << (START - 296)) | (1L << (TARGET - 296)))) != 0) || ((((_la - 384)) & ~0x3f) == 0 && ((1L << (_la - 384)) & ((1L << (ABSOLUTE - 384)) | (1L << (ACCENT_SENSITIVITY - 384)) | (1L << (ACTION - 384)) | (1L << (ACTIVATION - 384)) | (1L << (ACTIVE - 384)) | (1L << (ADDRESS - 384)) | (1L << (AES_128 - 384)) | (1L << (AES_192 - 384)) | (1L << (AES_256 - 384)) | (1L << (AFFINITY - 384)) | (1L << (AFTER - 384)) | (1L << (AGGREGATE - 384)) | (1L << (ALGORITHM - 384)) | (1L << (ALLOW_ENCRYPTED_VALUE_MODIFICATIONS - 384)) | (1L << (ALLOW_SNAPSHOT_ISOLATION - 384)) | (1L << (ALLOWED - 384)) | (1L << (ANSI_NULL_DEFAULT - 384)) | (1L << (ANSI_NULLS - 384)) | (1L << (ANSI_PADDING - 384)) | (1L << (ANSI_WARNINGS - 384)) | (1L << (APPLICATION_LOG - 384)) | (1L << (APPLY - 384)) | (1L << (ARITHABORT - 384)) | (1L << (ASSEMBLY - 384)) | (1L << (AUDIT - 384)) | (1L << (AUDIT_GUID - 384)) | (1L << (AUTO - 384)) | (1L << (AUTO_CLEANUP - 384)) | (1L << (AUTO_CLOSE - 384)) | (1L << (AUTO_CREATE_STATISTICS - 384)) | (1L << (AUTO_SHRINK - 384)) | (1L << (AUTO_UPDATE_STATISTICS - 384)) | (1L << (AUTO_UPDATE_STATISTICS_ASYNC - 384)) | (1L << (AVAILABILITY - 384)) | (1L << (AVG - 384)) | (1L << (BACKUP_PRIORITY - 384)) | (1L << (BEGIN_DIALOG - 384)) | (1L << (BIGINT - 384)) | (1L << (BINARY_BASE64 - 384)) | (1L << (BINARY_CHECKSUM - 384)) | (1L << (BINDING - 384)) | (1L << (BLOB_STORAGE - 384)) | (1L << (BROKER - 384)) | (1L << (BROKER_INSTANCE - 384)) | (1L << (BULK_LOGGED - 384)) | (1L << (CALLER - 384)) | (1L << (CAP_CPU_PERCENT - 384)) | (1L << (CAST - 384)) | (1L << (CATALOG - 384)) | (1L << (CATCH - 384)) | (1L << (CHANGE_RETENTION - 384)) | (1L << (CHANGE_TRACKING - 384)) | (1L << (CHECKSUM - 384)) | (1L << (CHECKSUM_AGG - 384)) | (1L << (CLEANUP - 384)) | (1L << (COLLECTION - 384)) | (1L << (COLUMN_MASTER_KEY - 384)) | (1L << (COMMITTED - 384)) | (1L << (COMPATIBILITY_LEVEL - 384)) | (1L << (CONCAT - 384)) | (1L << (CONCAT_NULL_YIELDS_NULL - 384)) | (1L << (CONTENT - 384)) | (1L << (CONTROL - 384)) | (1L << (COOKIE - 384)))) != 0) || ((((_la - 448)) & ~0x3f) == 0 && ((1L << (_la - 448)) & ((1L << (COUNT - 448)) | (1L << (COUNT_BIG - 448)) | (1L << (COUNTER - 448)) | (1L << (CPU - 448)) | (1L << (CREATE_NEW - 448)) | (1L << (CREATION_DISPOSITION - 448)) | (1L << (CREDENTIAL - 448)) | (1L << (CRYPTOGRAPHIC - 448)) | (1L << (CURSOR_CLOSE_ON_COMMIT - 448)) | (1L << (CURSOR_DEFAULT - 448)) | (1L << (DATE_CORRELATION_OPTIMIZATION - 448)) | (1L << (DATEADD - 448)) | (1L << (DATEDIFF - 448)) | (1L << (DATENAME - 448)) | (1L << (DATEPART - 448)) | (1L << (DAYS - 448)) | (1L << (DB_CHAINING - 448)) | (1L << (DB_FAILOVER - 448)) | (1L << (DECRYPTION - 448)) | (1L << (DEFAULT_DOUBLE_QUOTE - 448)) | (1L << (DEFAULT_FULLTEXT_LANGUAGE - 448)) | (1L << (DEFAULT_LANGUAGE - 448)) | (1L << (DELAY - 448)) | (1L << (DELAYED_DURABILITY - 448)) | (1L << (DELETED - 448)) | (1L << (DENSE_RANK - 448)) | (1L << (DEPENDENTS - 448)) | (1L << (DES - 448)) | (1L << (DESCRIPTION - 448)) | (1L << (DESX - 448)) | (1L << (DHCP - 448)) | (1L << (DIALOG - 448)) | (1L << (DIRECTORY_NAME - 448)) | (1L << (DISABLE - 448)) | (1L << (DISABLE_BROKER - 448)) | (1L << (DISABLED - 448)) | (1L << (DISK_DRIVE - 448)) | (1L << (DOCUMENT - 448)) | (1L << (DYNAMIC - 448)) | (1L << (EMERGENCY - 448)) | (1L << (EMPTY - 448)) | (1L << (ENABLE - 448)) | (1L << (ENABLE_BROKER - 448)) | (1L << (ENCRYPTED_VALUE - 448)) | (1L << (ENCRYPTION - 448)) | (1L << (ENDPOINT_URL - 448)) | (1L << (ERROR_BROKER_CONVERSATIONS - 448)) | (1L << (EXCLUSIVE - 448)) | (1L << (EXECUTABLE - 448)) | (1L << (EXIST - 448)) | (1L << (EXPAND - 448)) | (1L << (EXPIRY_DATE - 448)) | (1L << (EXPLICIT - 448)) | (1L << (FAIL_OPERATION - 448)) | (1L << (FAILOVER_MODE - 448)) | (1L << (FAILURE - 448)) | (1L << (FAILURE_CONDITION_LEVEL - 448)) | (1L << (FAST - 448)) | (1L << (FAST_FORWARD - 448)) | (1L << (FILEGROUP - 448)) | (1L << (FILEGROWTH - 448)) | (1L << (FILEPATH - 448)) | (1L << (FILESTREAM - 448)))) != 0) || ((((_la - 512)) & ~0x3f) == 0 && ((1L << (_la - 512)) & ((1L << (FILTER - 512)) | (1L << (FIRST - 512)) | (1L << (FIRST_VALUE - 512)) | (1L << (FOLLOWING - 512)) | (1L << (FORCE - 512)) | (1L << (FORCE_FAILOVER_ALLOW_DATA_LOSS - 512)) | (1L << (FORCED - 512)) | (1L << (FORMAT - 512)) | (1L << (FORWARD_ONLY - 512)) | (1L << (FULLSCAN - 512)) | (1L << (FULLTEXT - 512)) | (1L << (GB - 512)) | (1L << (GETDATE - 512)) | (1L << (GETUTCDATE - 512)) | (1L << (GLOBAL - 512)) | (1L << (GO - 512)) | (1L << (GROUP_MAX_REQUESTS - 512)) | (1L << (GROUPING - 512)) | (1L << (GROUPING_ID - 512)) | (1L << (HADR - 512)) | (1L << (HASH - 512)) | (1L << (HEALTH_CHECK_TIMEOUT - 512)) | (1L << (HIGH - 512)) | (1L << (HONOR_BROKER_PRIORITY - 512)) | (1L << (HOURS - 512)) | (1L << (IDENTITY_VALUE - 512)) | (1L << (IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX - 512)) | (1L << (IMMEDIATE - 512)) | (1L << (IMPERSONATE - 512)) | (1L << (IMPORTANCE - 512)) | (1L << (INCREMENTAL - 512)) | (1L << (INITIATOR - 512)) | (1L << (INPUT - 512)) | (1L << (INSENSITIVE - 512)) | (1L << (INSERTED - 512)) | (1L << (INT - 512)) | (1L << (IP - 512)) | (1L << (ISOLATION - 512)) | (1L << (KB - 512)) | (1L << (KEEP - 512)) | (1L << (KEEPFIXED - 512)) | (1L << (KEY_SOURCE - 512)) | (1L << (KEYS - 512)) | (1L << (KEYSET - 512)) | (1L << (LAG - 512)) | (1L << (LAST - 512)) | (1L << (LAST_VALUE - 512)) | (1L << (LEAD - 512)) | (1L << (LEVEL - 512)) | (1L << (LIST - 512)) | (1L << (LISTENER - 512)) | (1L << (LISTENER_URL - 512)) | (1L << (LOB_COMPACTION - 512)) | (1L << (LOCAL - 512)) | (1L << (LOCATION - 512)) | (1L << (LOCK - 512)) | (1L << (LOCK_ESCALATION - 512)) | (1L << (LOGIN - 512)) | (1L << (LOOP - 512)) | (1L << (LOW - 512)) | (1L << (MANUAL - 512)) | (1L << (MARK - 512)))) != 0) || ((((_la - 576)) & ~0x3f) == 0 && ((1L << (_la - 576)) & ((1L << (MATERIALIZED - 576)) | (1L << (MAX - 576)) | (1L << (MAX_CPU_PERCENT - 576)) | (1L << (MAX_DOP - 576)) | (1L << (MAX_FILES - 576)) | (1L << (MAX_IOPS_PER_VOLUME - 576)) | (1L << (MAX_MEMORY_PERCENT - 576)) | (1L << (MAX_PROCESSES - 576)) | (1L << (MAX_QUEUE_READERS - 576)) | (1L << (MAX_ROLLOVER_FILES - 576)) | (1L << (MAXDOP - 576)) | (1L << (MAXRECURSION - 576)) | (1L << (MAXSIZE - 576)) | (1L << (MB - 576)) | (1L << (MEDIUM - 576)) | (1L << (MEMORY_OPTIMIZED_DATA - 576)) | (1L << (MESSAGE - 576)) | (1L << (MIN - 576)) | (1L << (MIN_ACTIVE_ROWVERSION - 576)) | (1L << (MIN_CPU_PERCENT - 576)) | (1L << (MIN_IOPS_PER_VOLUME - 576)) | (1L << (MIN_MEMORY_PERCENT - 576)) | (1L << (MINUTES - 576)) | (1L << (MIRROR_ADDRESS - 576)) | (1L << (MIXED_PAGE_ALLOCATION - 576)) | (1L << (MODE - 576)) | (1L << (MODIFY - 576)) | (1L << (MOVE - 576)) | (1L << (MULTI_USER - 576)) | (1L << (NAME - 576)) | (1L << (NESTED_TRIGGERS - 576)) | (1L << (NEW_ACCOUNT - 576)) | (1L << (NEW_BROKER - 576)) | (1L << (NEW_PASSWORD - 576)) | (1L << (NEXT - 576)) | (1L << (NO - 576)) | (1L << (NO_TRUNCATE - 576)) | (1L << (NO_WAIT - 576)) | (1L << (NOCOUNT - 576)) | (1L << (NODES - 576)) | (1L << (NOEXPAND - 576)) | (1L << (NON_TRANSACTED_ACCESS - 576)) | (1L << (NORECOMPUTE - 576)) | (1L << (NORECOVERY - 576)) | (1L << (NOWAIT - 576)) | (1L << (NTILE - 576)) | (1L << (NUMANODE - 576)) | (1L << (NUMBER - 576)) | (1L << (NUMERIC_ROUNDABORT - 576)) | (1L << (OBJECT - 576)) | (1L << (OFFLINE - 576)) | (1L << (OFFSET - 576)) | (1L << (OLD_ACCOUNT - 576)) | (1L << (ONLINE - 576)) | (1L << (ONLY - 576)) | (1L << (OPEN_EXISTING - 576)) | (1L << (OPTIMISTIC - 576)) | (1L << (OPTIMIZE - 576)) | (1L << (OUT - 576)) | (1L << (OUTPUT - 576)) | (1L << (OWNER - 576)) | (1L << (PAGE_VERIFY - 576)) | (1L << (PARAMETERIZATION - 576)) | (1L << (PARTITION - 576)))) != 0) || ((((_la - 640)) & ~0x3f) == 0 && ((1L << (_la - 640)) & ((1L << (PARTITIONS - 640)) | (1L << (PARTNER - 640)) | (1L << (PATH - 640)) | (1L << (POISON_MESSAGE_HANDLING - 640)) | (1L << (POOL - 640)) | (1L << (PORT - 640)) | (1L << (PRECEDING - 640)) | (1L << (PRIMARY_ROLE - 640)) | (1L << (PRIOR - 640)) | (1L << (PRIORITY - 640)) | (1L << (PRIORITY_LEVEL - 640)) | (1L << (PRIVATE - 640)) | (1L << (PRIVATE_KEY - 640)) | (1L << (PRIVILEGES - 640)) | (1L << (PROCEDURE_NAME - 640)) | (1L << (PROPERTY - 640)) | (1L << (PROVIDER - 640)) | (1L << (PROVIDER_KEY_NAME - 640)) | (1L << (QUERY - 640)) | (1L << (QUEUE - 640)) | (1L << (QUEUE_DELAY - 640)) | (1L << (QUOTED_IDENTIFIER - 640)) | (1L << (RANGE - 640)) | (1L << (RANK - 640)) | (1L << (RC2 - 640)) | (1L << (RC4 - 640)) | (1L << (RC4_128 - 640)) | (1L << (READ_COMMITTED_SNAPSHOT - 640)) | (1L << (READ_ONLY - 640)) | (1L << (READ_ONLY_ROUTING_LIST - 640)) | (1L << (READ_WRITE - 640)) | (1L << (READONLY - 640)) | (1L << (REBUILD - 640)) | (1L << (RECEIVE - 640)) | (1L << (RECOMPILE - 640)) | (1L << (RECOVERY - 640)) | (1L << (RECURSIVE_TRIGGERS - 640)) | (1L << (RELATIVE - 640)) | (1L << (REMOTE - 640)) | (1L << (REMOTE_SERVICE_NAME - 640)) | (1L << (REMOVE - 640)) | (1L << (REORGANIZE - 640)) | (1L << (REPEATABLE - 640)) | (1L << (REPLICA - 640)) | (1L << (REQUEST_MAX_CPU_TIME_SEC - 640)) | (1L << (REQUEST_MAX_MEMORY_GRANT_PERCENT - 640)) | (1L << (REQUEST_MEMORY_GRANT_TIMEOUT_SEC - 640)) | (1L << (REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT - 640)) | (1L << (RESERVE_DISK_SPACE - 640)) | (1L << (RESOURCE - 640)) | (1L << (RESOURCE_MANAGER_LOCATION - 640)) | (1L << (RESTRICTED_USER - 640)) | (1L << (RETENTION - 640)) | (1L << (ROBUST - 640)) | (1L << (ROOT - 640)) | (1L << (ROUTE - 640)) | (1L << (ROW - 640)) | (1L << (ROW_NUMBER - 640)) | (1L << (ROWGUID - 640)) | (1L << (ROWS - 640)) | (1L << (SAMPLE - 640)) | (1L << (SCHEMABINDING - 640)) | (1L << (SCOPED - 640)) | (1L << (SCROLL - 640)))) != 0) || ((((_la - 704)) & ~0x3f) == 0 && ((1L << (_la - 704)) & ((1L << (SCROLL_LOCKS - 704)) | (1L << (SEARCH - 704)) | (1L << (SECONDARY - 704)) | (1L << (SECONDARY_ONLY - 704)) | (1L << (SECONDARY_ROLE - 704)) | (1L << (SECONDS - 704)) | (1L << (SECRET - 704)) | (1L << (SECURITY_LOG - 704)) | (1L << (SEEDING_MODE - 704)) | (1L << (SELF - 704)) | (1L << (SEMI_SENSITIVE - 704)) | (1L << (SEND - 704)) | (1L << (SENT - 704)) | (1L << (SERIALIZABLE - 704)) | (1L << (SESSION_TIMEOUT - 704)) | (1L << (SETERROR - 704)) | (1L << (SHARE - 704)) | (1L << (SHOWPLAN - 704)) | (1L << (SIGNATURE - 704)) | (1L << (SIMPLE - 704)) | (1L << (SINGLE_USER - 704)) | (1L << (SIZE - 704)) | (1L << (SMALLINT - 704)) | (1L << (SNAPSHOT - 704)) | (1L << (SPATIAL_WINDOW_MAX_CELLS - 704)) | (1L << (STANDBY - 704)) | (1L << (START_DATE - 704)) | (1L << (STATIC - 704)) | (1L << (STATS_STREAM - 704)) | (1L << (STATUS - 704)) | (1L << (STDEV - 704)) | (1L << (STDEVP - 704)) | (1L << (STOPLIST - 704)) | (1L << (STUFF - 704)) | (1L << (SUBJECT - 704)) | (1L << (SUM - 704)) | (1L << (SUSPEND - 704)) | (1L << (SYMMETRIC - 704)) | (1L << (SYNCHRONOUS_COMMIT - 704)) | (1L << (SYNONYM - 704)) | (1L << (TAKE - 704)) | (1L << (TARGET_RECOVERY_TIME - 704)) | (1L << (TB - 704)) | (1L << (TEXTIMAGE_ON - 704)) | (1L << (THROW - 704)) | (1L << (TIES - 704)) | (1L << (TIME - 704)) | (1L << (TIMEOUT - 704)) | (1L << (TIMER - 704)) | (1L << (TINYINT - 704)) | (1L << (TORN_PAGE_DETECTION - 704)) | (1L << (TRANSFORM_NOISE_WORDS - 704)) | (1L << (TRIPLE_DES - 704)) | (1L << (TRIPLE_DES_3KEY - 704)) | (1L << (TRUSTWORTHY - 704)) | (1L << (TRY - 704)) | (1L << (TSQL - 704)) | (1L << (TWO_DIGIT_YEAR_CUTOFF - 704)) | (1L << (TYPE - 704)) | (1L << (TYPE_WARNING - 704)) | (1L << (UNBOUNDED - 704)) | (1L << (UNCOMMITTED - 704)) | (1L << (UNKNOWN - 704)) | (1L << (UNLIMITED - 704)))) != 0) || ((((_la - 768)) & ~0x3f) == 0 && ((1L << (_la - 768)) & ((1L << (USING - 768)) | (1L << (VALID_XML - 768)) | (1L << (VALIDATION - 768)) | (1L << (VALUE - 768)) | (1L << (VAR - 768)) | (1L << (VARP - 768)) | (1L << (VIEW_METADATA - 768)) | (1L << (VIEWS - 768)) | (1L << (WAIT - 768)) | (1L << (WELL_FORMED_XML - 768)) | (1L << (WORK - 768)) | (1L << (WORKLOAD - 768)) | (1L << (XML - 768)) | (1L << (XMLNAMESPACES - 768)) | (1L << (DOUBLE_QUOTE_ID - 768)) | (1L << (SQUARE_BRACKET_ID - 768)) | (1L << (ID - 768)))) != 0) );
			setState(5671);
			match(RR_BRACKET);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Conversation_statementContext extends ParserRuleContext {
		public Begin_conversation_timerContext begin_conversation_timer() {
			return getRuleContext(Begin_conversation_timerContext.class,0);
		}
		public Begin_conversation_dialogContext begin_conversation_dialog() {
			return getRuleContext(Begin_conversation_dialogContext.class,0);
		}
		public End_conversationContext end_conversation() {
			return getRuleContext(End_conversationContext.class,0);
		}
		public Get_conversationContext get_conversation() {
			return getRuleContext(Get_conversationContext.class,0);
		}
		public Send_conversationContext send_conversation() {
			return getRuleContext(Send_conversationContext.class,0);
		}
		public Waitfor_conversationContext waitfor_conversation() {
			return getRuleContext(Waitfor_conversationContext.class,0);
		}
		public Conversation_statementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_conversation_statement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterConversation_statement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitConversation_statement(this);
		}
	}

	public final Conversation_statementContext conversation_statement() throws RecognitionException {
		Conversation_statementContext _localctx = new Conversation_statementContext(_ctx, getState());
		enterRule(_localctx, 424, RULE_conversation_statement);
		try {
			setState(5679);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,697,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(5673);
				begin_conversation_timer();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(5674);
				begin_conversation_dialog();
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(5675);
				end_conversation();
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(5676);
				get_conversation();
				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(5677);
				send_conversation();
				}
				break;
			case 6:
				enterOuterAlt(_localctx, 6);
				{
				setState(5678);
				waitfor_conversation();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Message_statementContext extends ParserRuleContext {
		public IdContext message_type_name;
		public IdContext owner_name;
		public IdContext schema_collection_name;
		public TerminalNode CREATE() { return getToken(TSqlParser.CREATE, 0); }
		public TerminalNode MESSAGE() { return getToken(TSqlParser.MESSAGE, 0); }
		public TerminalNode TYPE() { return getToken(TSqlParser.TYPE, 0); }
		public List id() {
			return getRuleContexts(IdContext.class);
		}
		public IdContext id(int i) {
			return getRuleContext(IdContext.class,i);
		}
		public TerminalNode VALIDATION() { return getToken(TSqlParser.VALIDATION, 0); }
		public TerminalNode EQUAL() { return getToken(TSqlParser.EQUAL, 0); }
		public TerminalNode AUTHORIZATION() { return getToken(TSqlParser.AUTHORIZATION, 0); }
		public TerminalNode NONE() { return getToken(TSqlParser.NONE, 0); }
		public TerminalNode EMPTY() { return getToken(TSqlParser.EMPTY, 0); }
		public TerminalNode WELL_FORMED_XML() { return getToken(TSqlParser.WELL_FORMED_XML, 0); }
		public TerminalNode VALID_XML() { return getToken(TSqlParser.VALID_XML, 0); }
		public TerminalNode WITH() { return getToken(TSqlParser.WITH, 0); }
		public TerminalNode SCHEMA() { return getToken(TSqlParser.SCHEMA, 0); }
		public TerminalNode COLLECTION() { return getToken(TSqlParser.COLLECTION, 0); }
		public Message_statementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_message_statement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterMessage_statement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitMessage_statement(this);
		}
	}

	public final Message_statementContext message_statement() throws RecognitionException {
		Message_statementContext _localctx = new Message_statementContext(_ctx, getState());
		enterRule(_localctx, 426, RULE_message_statement);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5681);
			match(CREATE);
			setState(5682);
			match(MESSAGE);
			setState(5683);
			match(TYPE);
			setState(5684);
			((Message_statementContext)_localctx).message_type_name = id();
			setState(5687);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==AUTHORIZATION) {
				{
				setState(5685);
				match(AUTHORIZATION);
				setState(5686);
				((Message_statementContext)_localctx).owner_name = id();
				}
			}

			{
			setState(5689);
			match(VALIDATION);
			setState(5690);
			match(EQUAL);
			setState(5699);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case NONE:
				{
				setState(5691);
				match(NONE);
				}
				break;
			case EMPTY:
				{
				setState(5692);
				match(EMPTY);
				}
				break;
			case WELL_FORMED_XML:
				{
				setState(5693);
				match(WELL_FORMED_XML);
				}
				break;
			case VALID_XML:
				{
				setState(5694);
				match(VALID_XML);
				setState(5695);
				match(WITH);
				setState(5696);
				match(SCHEMA);
				setState(5697);
				match(COLLECTION);
				setState(5698);
				((Message_statementContext)_localctx).schema_collection_name = id();
				}
				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 Merge_statementContext extends ParserRuleContext {
		public TerminalNode MERGE() { return getToken(TSqlParser.MERGE, 0); }
		public Ddl_objectContext ddl_object() {
			return getRuleContext(Ddl_objectContext.class,0);
		}
		public TerminalNode USING() { return getToken(TSqlParser.USING, 0); }
		public Table_sourcesContext table_sources() {
			return getRuleContext(Table_sourcesContext.class,0);
		}
		public TerminalNode ON() { return getToken(TSqlParser.ON, 0); }
		public List search_condition() {
			return getRuleContexts(Search_conditionContext.class);
		}
		public Search_conditionContext search_condition(int i) {
			return getRuleContext(Search_conditionContext.class,i);
		}
		public TerminalNode SEMI() { return getToken(TSqlParser.SEMI, 0); }
		public With_expressionContext with_expression() {
			return getRuleContext(With_expressionContext.class,0);
		}
		public TerminalNode TOP() { return getToken(TSqlParser.TOP, 0); }
		public TerminalNode LR_BRACKET() { return getToken(TSqlParser.LR_BRACKET, 0); }
		public ExpressionContext expression() {
			return getRuleContext(ExpressionContext.class,0);
		}
		public TerminalNode RR_BRACKET() { return getToken(TSqlParser.RR_BRACKET, 0); }
		public TerminalNode INTO() { return getToken(TSqlParser.INTO, 0); }
		public Insert_with_table_hintsContext insert_with_table_hints() {
			return getRuleContext(Insert_with_table_hintsContext.class,0);
		}
		public As_table_aliasContext as_table_alias() {
			return getRuleContext(As_table_aliasContext.class,0);
		}
		public List WHEN() { return getTokens(TSqlParser.WHEN); }
		public TerminalNode WHEN(int i) {
			return getToken(TSqlParser.WHEN, i);
		}
		public List MATCHED() { return getTokens(TSqlParser.MATCHED); }
		public TerminalNode MATCHED(int i) {
			return getToken(TSqlParser.MATCHED, i);
		}
		public List THEN() { return getTokens(TSqlParser.THEN); }
		public TerminalNode THEN(int i) {
			return getToken(TSqlParser.THEN, i);
		}
		public List merge_matched() {
			return getRuleContexts(Merge_matchedContext.class);
		}
		public Merge_matchedContext merge_matched(int i) {
			return getRuleContext(Merge_matchedContext.class,i);
		}
		public List NOT() { return getTokens(TSqlParser.NOT); }
		public TerminalNode NOT(int i) {
			return getToken(TSqlParser.NOT, i);
		}
		public Merge_not_matchedContext merge_not_matched() {
			return getRuleContext(Merge_not_matchedContext.class,0);
		}
		public List BY() { return getTokens(TSqlParser.BY); }
		public TerminalNode BY(int i) {
			return getToken(TSqlParser.BY, i);
		}
		public List SOURCE() { return getTokens(TSqlParser.SOURCE); }
		public TerminalNode SOURCE(int i) {
			return getToken(TSqlParser.SOURCE, i);
		}
		public Output_clauseContext output_clause() {
			return getRuleContext(Output_clauseContext.class,0);
		}
		public Option_clauseContext option_clause() {
			return getRuleContext(Option_clauseContext.class,0);
		}
		public TerminalNode PERCENT() { return getToken(TSqlParser.PERCENT, 0); }
		public List AND() { return getTokens(TSqlParser.AND); }
		public TerminalNode AND(int i) {
			return getToken(TSqlParser.AND, i);
		}
		public TerminalNode TARGET() { return getToken(TSqlParser.TARGET, 0); }
		public Merge_statementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_merge_statement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterMerge_statement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitMerge_statement(this);
		}
	}

	public final Merge_statementContext merge_statement() throws RecognitionException {
		Merge_statementContext _localctx = new Merge_statementContext(_ctx, getState());
		enterRule(_localctx, 428, RULE_merge_statement);
		int _la;
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			setState(5702);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==WITH) {
				{
				setState(5701);
				with_expression();
				}
			}

			setState(5704);
			match(MERGE);
			setState(5712);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==TOP) {
				{
				setState(5705);
				match(TOP);
				setState(5706);
				match(LR_BRACKET);
				setState(5707);
				expression(0);
				setState(5708);
				match(RR_BRACKET);
				setState(5710);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==PERCENT) {
					{
					setState(5709);
					match(PERCENT);
					}
				}

				}
			}

			setState(5715);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==INTO) {
				{
				setState(5714);
				match(INTO);
				}
			}

			setState(5717);
			ddl_object();
			setState(5719);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==WITH) {
				{
				setState(5718);
				insert_with_table_hints();
				}
			}

			setState(5722);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,705,_ctx) ) {
			case 1:
				{
				setState(5721);
				as_table_alias();
				}
				break;
			}
			setState(5724);
			match(USING);
			setState(5725);
			table_sources();
			setState(5726);
			match(ON);
			setState(5727);
			search_condition();
			setState(5738);
			_errHandler.sync(this);
			_alt = getInterpreter().adaptivePredict(_input,707,_ctx);
			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
				if ( _alt==1 ) {
					{
					{
					setState(5728);
					match(WHEN);
					setState(5729);
					match(MATCHED);
					setState(5732);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==AND) {
						{
						setState(5730);
						match(AND);
						setState(5731);
						search_condition();
						}
					}

					setState(5734);
					match(THEN);
					setState(5735);
					merge_matched();
					}
					} 
				}
				setState(5740);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,707,_ctx);
			}
			setState(5754);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,710,_ctx) ) {
			case 1:
				{
				setState(5741);
				match(WHEN);
				setState(5742);
				match(NOT);
				setState(5743);
				match(MATCHED);
				setState(5746);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==BY) {
					{
					setState(5744);
					match(BY);
					setState(5745);
					match(TARGET);
					}
				}

				setState(5750);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==AND) {
					{
					setState(5748);
					match(AND);
					setState(5749);
					search_condition();
					}
				}

				setState(5752);
				match(THEN);
				setState(5753);
				merge_not_matched();
				}
				break;
			}
			setState(5769);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==WHEN) {
				{
				{
				setState(5756);
				match(WHEN);
				setState(5757);
				match(NOT);
				setState(5758);
				match(MATCHED);
				setState(5759);
				match(BY);
				setState(5760);
				match(SOURCE);
				setState(5763);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==AND) {
					{
					setState(5761);
					match(AND);
					setState(5762);
					search_condition();
					}
				}

				setState(5765);
				match(THEN);
				setState(5766);
				merge_matched();
				}
				}
				setState(5771);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			setState(5773);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==OUTPUT) {
				{
				setState(5772);
				output_clause();
				}
			}

			setState(5776);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==OPTION) {
				{
				setState(5775);
				option_clause();
				}
			}

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

	public static class Merge_matchedContext extends ParserRuleContext {
		public TerminalNode UPDATE() { return getToken(TSqlParser.UPDATE, 0); }
		public TerminalNode SET() { return getToken(TSqlParser.SET, 0); }
		public List update_elem() {
			return getRuleContexts(Update_elemContext.class);
		}
		public Update_elemContext update_elem(int i) {
			return getRuleContext(Update_elemContext.class,i);
		}
		public List COMMA() { return getTokens(TSqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(TSqlParser.COMMA, i);
		}
		public TerminalNode DELETE() { return getToken(TSqlParser.DELETE, 0); }
		public Merge_matchedContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_merge_matched; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterMerge_matched(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitMerge_matched(this);
		}
	}

	public final Merge_matchedContext merge_matched() throws RecognitionException {
		Merge_matchedContext _localctx = new Merge_matchedContext(_ctx, getState());
		enterRule(_localctx, 430, RULE_merge_matched);
		int _la;
		try {
			setState(5791);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case UPDATE:
				enterOuterAlt(_localctx, 1);
				{
				setState(5780);
				match(UPDATE);
				setState(5781);
				match(SET);
				setState(5782);
				update_elem();
				setState(5787);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA) {
					{
					{
					setState(5783);
					match(COMMA);
					setState(5784);
					update_elem();
					}
					}
					setState(5789);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				}
				break;
			case DELETE:
				enterOuterAlt(_localctx, 2);
				{
				setState(5790);
				match(DELETE);
				}
				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 Merge_not_matchedContext extends ParserRuleContext {
		public TerminalNode INSERT() { return getToken(TSqlParser.INSERT, 0); }
		public Table_value_constructorContext table_value_constructor() {
			return getRuleContext(Table_value_constructorContext.class,0);
		}
		public TerminalNode DEFAULT() { return getToken(TSqlParser.DEFAULT, 0); }
		public TerminalNode VALUES() { return getToken(TSqlParser.VALUES, 0); }
		public TerminalNode LR_BRACKET() { return getToken(TSqlParser.LR_BRACKET, 0); }
		public Column_name_listContext column_name_list() {
			return getRuleContext(Column_name_listContext.class,0);
		}
		public TerminalNode RR_BRACKET() { return getToken(TSqlParser.RR_BRACKET, 0); }
		public Merge_not_matchedContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_merge_not_matched; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterMerge_not_matched(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitMerge_not_matched(this);
		}
	}

	public final Merge_not_matchedContext merge_not_matched() throws RecognitionException {
		Merge_not_matchedContext _localctx = new Merge_not_matchedContext(_ctx, getState());
		enterRule(_localctx, 432, RULE_merge_not_matched);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5793);
			match(INSERT);
			setState(5798);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==LR_BRACKET) {
				{
				setState(5794);
				match(LR_BRACKET);
				setState(5795);
				column_name_list();
				setState(5796);
				match(RR_BRACKET);
				}
			}

			setState(5803);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case VALUES:
				{
				setState(5800);
				table_value_constructor();
				}
				break;
			case DEFAULT:
				{
				setState(5801);
				match(DEFAULT);
				setState(5802);
				match(VALUES);
				}
				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 Delete_statementContext extends ParserRuleContext {
		public Token cursor_var;
		public TerminalNode DELETE() { return getToken(TSqlParser.DELETE, 0); }
		public Delete_statement_fromContext delete_statement_from() {
			return getRuleContext(Delete_statement_fromContext.class,0);
		}
		public With_expressionContext with_expression() {
			return getRuleContext(With_expressionContext.class,0);
		}
		public TerminalNode TOP() { return getToken(TSqlParser.TOP, 0); }
		public TerminalNode LR_BRACKET() { return getToken(TSqlParser.LR_BRACKET, 0); }
		public ExpressionContext expression() {
			return getRuleContext(ExpressionContext.class,0);
		}
		public TerminalNode RR_BRACKET() { return getToken(TSqlParser.RR_BRACKET, 0); }
		public TerminalNode DECIMAL() { return getToken(TSqlParser.DECIMAL, 0); }
		public List FROM() { return getTokens(TSqlParser.FROM); }
		public TerminalNode FROM(int i) {
			return getToken(TSqlParser.FROM, i);
		}
		public Insert_with_table_hintsContext insert_with_table_hints() {
			return getRuleContext(Insert_with_table_hintsContext.class,0);
		}
		public Output_clauseContext output_clause() {
			return getRuleContext(Output_clauseContext.class,0);
		}
		public Table_sourcesContext table_sources() {
			return getRuleContext(Table_sourcesContext.class,0);
		}
		public TerminalNode WHERE() { return getToken(TSqlParser.WHERE, 0); }
		public For_clauseContext for_clause() {
			return getRuleContext(For_clauseContext.class,0);
		}
		public Option_clauseContext option_clause() {
			return getRuleContext(Option_clauseContext.class,0);
		}
		public TerminalNode SEMI() { return getToken(TSqlParser.SEMI, 0); }
		public Search_conditionContext search_condition() {
			return getRuleContext(Search_conditionContext.class,0);
		}
		public TerminalNode CURRENT() { return getToken(TSqlParser.CURRENT, 0); }
		public TerminalNode OF() { return getToken(TSqlParser.OF, 0); }
		public TerminalNode PERCENT() { return getToken(TSqlParser.PERCENT, 0); }
		public Cursor_nameContext cursor_name() {
			return getRuleContext(Cursor_nameContext.class,0);
		}
		public TerminalNode LOCAL_ID() { return getToken(TSqlParser.LOCAL_ID, 0); }
		public TerminalNode GLOBAL() { return getToken(TSqlParser.GLOBAL, 0); }
		public Delete_statementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_delete_statement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterDelete_statement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitDelete_statement(this);
		}
	}

	public final Delete_statementContext delete_statement() throws RecognitionException {
		Delete_statementContext _localctx = new Delete_statementContext(_ctx, getState());
		enterRule(_localctx, 434, RULE_delete_statement);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5806);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==WITH) {
				{
				setState(5805);
				with_expression();
				}
			}

			setState(5808);
			match(DELETE);
			setState(5818);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,721,_ctx) ) {
			case 1:
				{
				setState(5809);
				match(TOP);
				setState(5810);
				match(LR_BRACKET);
				setState(5811);
				expression(0);
				setState(5812);
				match(RR_BRACKET);
				setState(5814);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==PERCENT) {
					{
					setState(5813);
					match(PERCENT);
					}
				}

				}
				break;
			case 2:
				{
				setState(5816);
				match(TOP);
				setState(5817);
				match(DECIMAL);
				}
				break;
			}
			setState(5821);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==FROM) {
				{
				setState(5820);
				match(FROM);
				}
			}

			setState(5823);
			delete_statement_from();
			setState(5825);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,723,_ctx) ) {
			case 1:
				{
				setState(5824);
				insert_with_table_hints();
				}
				break;
			}
			setState(5828);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,724,_ctx) ) {
			case 1:
				{
				setState(5827);
				output_clause();
				}
				break;
			}
			setState(5832);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==FROM) {
				{
				setState(5830);
				match(FROM);
				setState(5831);
				table_sources();
				}
			}

			setState(5847);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==WHERE) {
				{
				setState(5834);
				match(WHERE);
				setState(5845);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case BLOCKING_HIERARCHY:
				case CALLED:
				case CASE:
				case COALESCE:
				case CONVERT:
				case CURRENT_TIMESTAMP:
				case CURRENT_USER:
				case DATA_COMPRESSION:
				case DEFAULT:
				case EVENTDATA:
				case EXISTS:
				case FILENAME:
				case FILLFACTOR:
				case FORCESEEK:
				case IDENTITY:
				case IIF:
				case INIT:
				case ISNULL:
				case KEY:
				case LEFT:
				case MASTER:
				case MAX_MEMORY:
				case NOT:
				case NULL:
				case NULLIF:
				case OFFSETS:
				case OVER:
				case PAGE:
				case PUBLIC:
				case R:
				case RAW:
				case RETURN:
				case RETURNS:
				case RIGHT:
				case ROWCOUNT:
				case SAFETY:
				case SERVER:
				case SESSION_USER:
				case SID:
				case SOURCE:
				case STATE:
				case START:
				case SYSTEM_USER:
				case TARGET:
				case ABSOLUTE:
				case ACCENT_SENSITIVITY:
				case ACTION:
				case ACTIVATION:
				case ACTIVE:
				case ADDRESS:
				case AES_128:
				case AES_192:
				case AES_256:
				case AFFINITY:
				case AFTER:
				case AGGREGATE:
				case ALGORITHM:
				case ALLOW_ENCRYPTED_VALUE_MODIFICATIONS:
				case ALLOW_SNAPSHOT_ISOLATION:
				case ALLOWED:
				case ANSI_NULL_DEFAULT:
				case ANSI_NULLS:
				case ANSI_PADDING:
				case ANSI_WARNINGS:
				case APPLICATION_LOG:
				case APPLY:
				case ARITHABORT:
				case ASSEMBLY:
				case AUDIT:
				case AUDIT_GUID:
				case AUTO:
				case AUTO_CLEANUP:
				case AUTO_CLOSE:
				case AUTO_CREATE_STATISTICS:
				case AUTO_SHRINK:
				case AUTO_UPDATE_STATISTICS:
				case AUTO_UPDATE_STATISTICS_ASYNC:
				case AVAILABILITY:
				case AVG:
				case BACKUP_PRIORITY:
				case BEGIN_DIALOG:
				case BIGINT:
				case BINARY_BASE64:
				case BINARY_CHECKSUM:
				case BINDING:
				case BLOB_STORAGE:
				case BROKER:
				case BROKER_INSTANCE:
				case BULK_LOGGED:
				case CALLER:
				case CAP_CPU_PERCENT:
				case CAST:
				case CATALOG:
				case CATCH:
				case CHANGE_RETENTION:
				case CHANGE_TRACKING:
				case CHECKSUM:
				case CHECKSUM_AGG:
				case CLEANUP:
				case COLLECTION:
				case COLUMN_MASTER_KEY:
				case COMMITTED:
				case COMPATIBILITY_LEVEL:
				case CONCAT:
				case CONCAT_NULL_YIELDS_NULL:
				case CONTENT:
				case CONTROL:
				case COOKIE:
				case COUNT:
				case COUNT_BIG:
				case COUNTER:
				case CPU:
				case CREATE_NEW:
				case CREATION_DISPOSITION:
				case CREDENTIAL:
				case CRYPTOGRAPHIC:
				case CURSOR_CLOSE_ON_COMMIT:
				case CURSOR_DEFAULT:
				case DATE_CORRELATION_OPTIMIZATION:
				case DATEADD:
				case DATEDIFF:
				case DATENAME:
				case DATEPART:
				case DAYS:
				case DB_CHAINING:
				case DB_FAILOVER:
				case DECRYPTION:
				case DEFAULT_DOUBLE_QUOTE:
				case DEFAULT_FULLTEXT_LANGUAGE:
				case DEFAULT_LANGUAGE:
				case DELAY:
				case DELAYED_DURABILITY:
				case DELETED:
				case DENSE_RANK:
				case DEPENDENTS:
				case DES:
				case DESCRIPTION:
				case DESX:
				case DHCP:
				case DIALOG:
				case DIRECTORY_NAME:
				case DISABLE:
				case DISABLE_BROKER:
				case DISABLED:
				case DISK_DRIVE:
				case DOCUMENT:
				case DYNAMIC:
				case EMERGENCY:
				case EMPTY:
				case ENABLE:
				case ENABLE_BROKER:
				case ENCRYPTED_VALUE:
				case ENCRYPTION:
				case ENDPOINT_URL:
				case ERROR_BROKER_CONVERSATIONS:
				case EXCLUSIVE:
				case EXECUTABLE:
				case EXIST:
				case EXPAND:
				case EXPIRY_DATE:
				case EXPLICIT:
				case FAIL_OPERATION:
				case FAILOVER_MODE:
				case FAILURE:
				case FAILURE_CONDITION_LEVEL:
				case FAST:
				case FAST_FORWARD:
				case FILEGROUP:
				case FILEGROWTH:
				case FILEPATH:
				case FILESTREAM:
				case FILTER:
				case FIRST:
				case FIRST_VALUE:
				case FOLLOWING:
				case FORCE:
				case FORCE_FAILOVER_ALLOW_DATA_LOSS:
				case FORCED:
				case FORMAT:
				case FORWARD_ONLY:
				case FULLSCAN:
				case FULLTEXT:
				case GB:
				case GETDATE:
				case GETUTCDATE:
				case GLOBAL:
				case GO:
				case GROUP_MAX_REQUESTS:
				case GROUPING:
				case GROUPING_ID:
				case HADR:
				case HASH:
				case HEALTH_CHECK_TIMEOUT:
				case HIGH:
				case HONOR_BROKER_PRIORITY:
				case HOURS:
				case IDENTITY_VALUE:
				case IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX:
				case IMMEDIATE:
				case IMPERSONATE:
				case IMPORTANCE:
				case INCREMENTAL:
				case INITIATOR:
				case INPUT:
				case INSENSITIVE:
				case INSERTED:
				case INT:
				case IP:
				case ISOLATION:
				case KB:
				case KEEP:
				case KEEPFIXED:
				case KEY_SOURCE:
				case KEYS:
				case KEYSET:
				case LAG:
				case LAST:
				case LAST_VALUE:
				case LEAD:
				case LEVEL:
				case LIST:
				case LISTENER:
				case LISTENER_URL:
				case LOB_COMPACTION:
				case LOCAL:
				case LOCATION:
				case LOCK:
				case LOCK_ESCALATION:
				case LOGIN:
				case LOOP:
				case LOW:
				case MANUAL:
				case MARK:
				case MATERIALIZED:
				case MAX:
				case MAX_CPU_PERCENT:
				case MAX_DOP:
				case MAX_FILES:
				case MAX_IOPS_PER_VOLUME:
				case MAX_MEMORY_PERCENT:
				case MAX_PROCESSES:
				case MAX_QUEUE_READERS:
				case MAX_ROLLOVER_FILES:
				case MAXDOP:
				case MAXRECURSION:
				case MAXSIZE:
				case MB:
				case MEDIUM:
				case MEMORY_OPTIMIZED_DATA:
				case MESSAGE:
				case MIN:
				case MIN_ACTIVE_ROWVERSION:
				case MIN_CPU_PERCENT:
				case MIN_IOPS_PER_VOLUME:
				case MIN_MEMORY_PERCENT:
				case MINUTES:
				case MIRROR_ADDRESS:
				case MIXED_PAGE_ALLOCATION:
				case MODE:
				case MODIFY:
				case MOVE:
				case MULTI_USER:
				case NAME:
				case NESTED_TRIGGERS:
				case NEW_ACCOUNT:
				case NEW_BROKER:
				case NEW_PASSWORD:
				case NEXT:
				case NO:
				case NO_TRUNCATE:
				case NO_WAIT:
				case NOCOUNT:
				case NODES:
				case NOEXPAND:
				case NON_TRANSACTED_ACCESS:
				case NORECOMPUTE:
				case NORECOVERY:
				case NOWAIT:
				case NTILE:
				case NUMANODE:
				case NUMBER:
				case NUMERIC_ROUNDABORT:
				case OBJECT:
				case OFFLINE:
				case OFFSET:
				case OLD_ACCOUNT:
				case ONLINE:
				case ONLY:
				case OPEN_EXISTING:
				case OPTIMISTIC:
				case OPTIMIZE:
				case OUT:
				case OUTPUT:
				case OWNER:
				case PAGE_VERIFY:
				case PARAMETERIZATION:
				case PARTITION:
				case PARTITIONS:
				case PARTNER:
				case PATH:
				case POISON_MESSAGE_HANDLING:
				case POOL:
				case PORT:
				case PRECEDING:
				case PRIMARY_ROLE:
				case PRIOR:
				case PRIORITY:
				case PRIORITY_LEVEL:
				case PRIVATE:
				case PRIVATE_KEY:
				case PRIVILEGES:
				case PROCEDURE_NAME:
				case PROPERTY:
				case PROVIDER:
				case PROVIDER_KEY_NAME:
				case QUERY:
				case QUEUE:
				case QUEUE_DELAY:
				case QUOTED_IDENTIFIER:
				case RANGE:
				case RANK:
				case RC2:
				case RC4:
				case RC4_128:
				case READ_COMMITTED_SNAPSHOT:
				case READ_ONLY:
				case READ_ONLY_ROUTING_LIST:
				case READ_WRITE:
				case READONLY:
				case REBUILD:
				case RECEIVE:
				case RECOMPILE:
				case RECOVERY:
				case RECURSIVE_TRIGGERS:
				case RELATIVE:
				case REMOTE:
				case REMOTE_SERVICE_NAME:
				case REMOVE:
				case REORGANIZE:
				case REPEATABLE:
				case REPLICA:
				case REQUEST_MAX_CPU_TIME_SEC:
				case REQUEST_MAX_MEMORY_GRANT_PERCENT:
				case REQUEST_MEMORY_GRANT_TIMEOUT_SEC:
				case REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT:
				case RESERVE_DISK_SPACE:
				case RESOURCE:
				case RESOURCE_MANAGER_LOCATION:
				case RESTRICTED_USER:
				case RETENTION:
				case ROBUST:
				case ROOT:
				case ROUTE:
				case ROW:
				case ROW_NUMBER:
				case ROWGUID:
				case ROWS:
				case SAMPLE:
				case SCHEMABINDING:
				case SCOPED:
				case SCROLL:
				case SCROLL_LOCKS:
				case SEARCH:
				case SECONDARY:
				case SECONDARY_ONLY:
				case SECONDARY_ROLE:
				case SECONDS:
				case SECRET:
				case SECURITY_LOG:
				case SEEDING_MODE:
				case SELF:
				case SEMI_SENSITIVE:
				case SEND:
				case SENT:
				case SERIALIZABLE:
				case SESSION_TIMEOUT:
				case SETERROR:
				case SHARE:
				case SHOWPLAN:
				case SIGNATURE:
				case SIMPLE:
				case SINGLE_USER:
				case SIZE:
				case SMALLINT:
				case SNAPSHOT:
				case SPATIAL_WINDOW_MAX_CELLS:
				case STANDBY:
				case START_DATE:
				case STATIC:
				case STATS_STREAM:
				case STATUS:
				case STDEV:
				case STDEVP:
				case STOPLIST:
				case STUFF:
				case SUBJECT:
				case SUM:
				case SUSPEND:
				case SYMMETRIC:
				case SYNCHRONOUS_COMMIT:
				case SYNONYM:
				case TAKE:
				case TARGET_RECOVERY_TIME:
				case TB:
				case TEXTIMAGE_ON:
				case THROW:
				case TIES:
				case TIME:
				case TIMEOUT:
				case TIMER:
				case TINYINT:
				case TORN_PAGE_DETECTION:
				case TRANSFORM_NOISE_WORDS:
				case TRIPLE_DES:
				case TRIPLE_DES_3KEY:
				case TRUSTWORTHY:
				case TRY:
				case TSQL:
				case TWO_DIGIT_YEAR_CUTOFF:
				case TYPE:
				case TYPE_WARNING:
				case UNBOUNDED:
				case UNCOMMITTED:
				case UNKNOWN:
				case UNLIMITED:
				case USING:
				case VALID_XML:
				case VALIDATION:
				case VALUE:
				case VAR:
				case VARP:
				case VIEW_METADATA:
				case VIEWS:
				case WAIT:
				case WELL_FORMED_XML:
				case WORK:
				case WORKLOAD:
				case XML:
				case XMLNAMESPACES:
				case DOUBLE_QUOTE_ID:
				case SQUARE_BRACKET_ID:
				case LOCAL_ID:
				case DECIMAL:
				case ID:
				case STRING:
				case BINARY:
				case FLOAT:
				case REAL:
				case DOLLAR:
				case LR_BRACKET:
				case PLUS:
				case MINUS:
				case BIT_NOT:
					{
					setState(5835);
					search_condition();
					}
					break;
				case CURRENT:
					{
					setState(5836);
					match(CURRENT);
					setState(5837);
					match(OF);
					setState(5843);
					_errHandler.sync(this);
					switch ( getInterpreter().adaptivePredict(_input,727,_ctx) ) {
					case 1:
						{
						setState(5839);
						_errHandler.sync(this);
						switch ( getInterpreter().adaptivePredict(_input,726,_ctx) ) {
						case 1:
							{
							setState(5838);
							match(GLOBAL);
							}
							break;
						}
						setState(5841);
						cursor_name();
						}
						break;
					case 2:
						{
						setState(5842);
						((Delete_statementContext)_localctx).cursor_var = match(LOCAL_ID);
						}
						break;
					}
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
			}

			setState(5850);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==FOR) {
				{
				setState(5849);
				for_clause();
				}
			}

			setState(5853);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==OPTION) {
				{
				setState(5852);
				option_clause();
				}
			}

			setState(5856);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,732,_ctx) ) {
			case 1:
				{
				setState(5855);
				match(SEMI);
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Delete_statement_fromContext extends ParserRuleContext {
		public Token table_var;
		public Ddl_objectContext ddl_object() {
			return getRuleContext(Ddl_objectContext.class,0);
		}
		public Table_aliasContext table_alias() {
			return getRuleContext(Table_aliasContext.class,0);
		}
		public Rowset_function_limitedContext rowset_function_limited() {
			return getRuleContext(Rowset_function_limitedContext.class,0);
		}
		public TerminalNode LOCAL_ID() { return getToken(TSqlParser.LOCAL_ID, 0); }
		public Delete_statement_fromContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_delete_statement_from; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterDelete_statement_from(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitDelete_statement_from(this);
		}
	}

	public final Delete_statement_fromContext delete_statement_from() throws RecognitionException {
		Delete_statement_fromContext _localctx = new Delete_statement_fromContext(_ctx, getState());
		enterRule(_localctx, 436, RULE_delete_statement_from);
		try {
			setState(5862);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,733,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(5858);
				ddl_object();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(5859);
				table_alias();
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(5860);
				rowset_function_limited();
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(5861);
				((Delete_statement_fromContext)_localctx).table_var = match(LOCAL_ID);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Insert_statementContext extends ParserRuleContext {
		public TerminalNode INSERT() { return getToken(TSqlParser.INSERT, 0); }
		public Insert_statement_valueContext insert_statement_value() {
			return getRuleContext(Insert_statement_valueContext.class,0);
		}
		public Ddl_objectContext ddl_object() {
			return getRuleContext(Ddl_objectContext.class,0);
		}
		public Rowset_function_limitedContext rowset_function_limited() {
			return getRuleContext(Rowset_function_limitedContext.class,0);
		}
		public With_expressionContext with_expression() {
			return getRuleContext(With_expressionContext.class,0);
		}
		public TerminalNode TOP() { return getToken(TSqlParser.TOP, 0); }
		public List LR_BRACKET() { return getTokens(TSqlParser.LR_BRACKET); }
		public TerminalNode LR_BRACKET(int i) {
			return getToken(TSqlParser.LR_BRACKET, i);
		}
		public ExpressionContext expression() {
			return getRuleContext(ExpressionContext.class,0);
		}
		public List RR_BRACKET() { return getTokens(TSqlParser.RR_BRACKET); }
		public TerminalNode RR_BRACKET(int i) {
			return getToken(TSqlParser.RR_BRACKET, i);
		}
		public TerminalNode INTO() { return getToken(TSqlParser.INTO, 0); }
		public Insert_with_table_hintsContext insert_with_table_hints() {
			return getRuleContext(Insert_with_table_hintsContext.class,0);
		}
		public Column_name_listContext column_name_list() {
			return getRuleContext(Column_name_listContext.class,0);
		}
		public Output_clauseContext output_clause() {
			return getRuleContext(Output_clauseContext.class,0);
		}
		public For_clauseContext for_clause() {
			return getRuleContext(For_clauseContext.class,0);
		}
		public Option_clauseContext option_clause() {
			return getRuleContext(Option_clauseContext.class,0);
		}
		public TerminalNode SEMI() { return getToken(TSqlParser.SEMI, 0); }
		public TerminalNode PERCENT() { return getToken(TSqlParser.PERCENT, 0); }
		public Insert_statementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_insert_statement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterInsert_statement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitInsert_statement(this);
		}
	}

	public final Insert_statementContext insert_statement() throws RecognitionException {
		Insert_statementContext _localctx = new Insert_statementContext(_ctx, getState());
		enterRule(_localctx, 438, RULE_insert_statement);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5865);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==WITH) {
				{
				setState(5864);
				with_expression();
				}
			}

			setState(5867);
			match(INSERT);
			setState(5875);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==TOP) {
				{
				setState(5868);
				match(TOP);
				setState(5869);
				match(LR_BRACKET);
				setState(5870);
				expression(0);
				setState(5871);
				match(RR_BRACKET);
				setState(5873);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==PERCENT) {
					{
					setState(5872);
					match(PERCENT);
					}
				}

				}
			}

			setState(5878);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==INTO) {
				{
				setState(5877);
				match(INTO);
				}
			}

			setState(5882);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case CALLED:
			case DATA_COMPRESSION:
			case EVENTDATA:
			case FILENAME:
			case FILLFACTOR:
			case FORCESEEK:
			case INIT:
			case KEY:
			case MASTER:
			case MAX_MEMORY:
			case OFFSETS:
			case PAGE:
			case PUBLIC:
			case R:
			case RAW:
			case RETURN:
			case RETURNS:
			case ROWCOUNT:
			case SAFETY:
			case SERVER:
			case SID:
			case SOURCE:
			case STATE:
			case START:
			case TARGET:
			case ABSOLUTE:
			case ACCENT_SENSITIVITY:
			case ACTION:
			case ACTIVATION:
			case ACTIVE:
			case ADDRESS:
			case AES_128:
			case AES_192:
			case AES_256:
			case AFFINITY:
			case AFTER:
			case AGGREGATE:
			case ALGORITHM:
			case ALLOW_ENCRYPTED_VALUE_MODIFICATIONS:
			case ALLOW_SNAPSHOT_ISOLATION:
			case ALLOWED:
			case ANSI_NULL_DEFAULT:
			case ANSI_NULLS:
			case ANSI_PADDING:
			case ANSI_WARNINGS:
			case APPLICATION_LOG:
			case APPLY:
			case ARITHABORT:
			case ASSEMBLY:
			case AUDIT:
			case AUDIT_GUID:
			case AUTO:
			case AUTO_CLEANUP:
			case AUTO_CLOSE:
			case AUTO_CREATE_STATISTICS:
			case AUTO_SHRINK:
			case AUTO_UPDATE_STATISTICS:
			case AUTO_UPDATE_STATISTICS_ASYNC:
			case AVAILABILITY:
			case AVG:
			case BACKUP_PRIORITY:
			case BEGIN_DIALOG:
			case BIGINT:
			case BINARY_BASE64:
			case BINARY_CHECKSUM:
			case BINDING:
			case BLOB_STORAGE:
			case BROKER:
			case BROKER_INSTANCE:
			case BULK_LOGGED:
			case CALLER:
			case CAP_CPU_PERCENT:
			case CAST:
			case CATALOG:
			case CATCH:
			case CHANGE_RETENTION:
			case CHANGE_TRACKING:
			case CHECKSUM:
			case CHECKSUM_AGG:
			case CLEANUP:
			case COLLECTION:
			case COLUMN_MASTER_KEY:
			case COMMITTED:
			case COMPATIBILITY_LEVEL:
			case CONCAT:
			case CONCAT_NULL_YIELDS_NULL:
			case CONTENT:
			case CONTROL:
			case COOKIE:
			case COUNT:
			case COUNT_BIG:
			case COUNTER:
			case CPU:
			case CREATE_NEW:
			case CREATION_DISPOSITION:
			case CREDENTIAL:
			case CRYPTOGRAPHIC:
			case CURSOR_CLOSE_ON_COMMIT:
			case CURSOR_DEFAULT:
			case DATE_CORRELATION_OPTIMIZATION:
			case DATEADD:
			case DATEDIFF:
			case DATENAME:
			case DATEPART:
			case DAYS:
			case DB_CHAINING:
			case DB_FAILOVER:
			case DECRYPTION:
			case DEFAULT_DOUBLE_QUOTE:
			case DEFAULT_FULLTEXT_LANGUAGE:
			case DEFAULT_LANGUAGE:
			case DELAY:
			case DELAYED_DURABILITY:
			case DELETED:
			case DENSE_RANK:
			case DEPENDENTS:
			case DES:
			case DESCRIPTION:
			case DESX:
			case DHCP:
			case DIALOG:
			case DIRECTORY_NAME:
			case DISABLE:
			case DISABLE_BROKER:
			case DISABLED:
			case DISK_DRIVE:
			case DOCUMENT:
			case DYNAMIC:
			case EMERGENCY:
			case EMPTY:
			case ENABLE:
			case ENABLE_BROKER:
			case ENCRYPTED_VALUE:
			case ENCRYPTION:
			case ENDPOINT_URL:
			case ERROR_BROKER_CONVERSATIONS:
			case EXCLUSIVE:
			case EXECUTABLE:
			case EXIST:
			case EXPAND:
			case EXPIRY_DATE:
			case EXPLICIT:
			case FAIL_OPERATION:
			case FAILOVER_MODE:
			case FAILURE:
			case FAILURE_CONDITION_LEVEL:
			case FAST:
			case FAST_FORWARD:
			case FILEGROUP:
			case FILEGROWTH:
			case FILEPATH:
			case FILESTREAM:
			case FILTER:
			case FIRST:
			case FIRST_VALUE:
			case FOLLOWING:
			case FORCE:
			case FORCE_FAILOVER_ALLOW_DATA_LOSS:
			case FORCED:
			case FORMAT:
			case FORWARD_ONLY:
			case FULLSCAN:
			case FULLTEXT:
			case GB:
			case GETDATE:
			case GETUTCDATE:
			case GLOBAL:
			case GO:
			case GROUP_MAX_REQUESTS:
			case GROUPING:
			case GROUPING_ID:
			case HADR:
			case HASH:
			case HEALTH_CHECK_TIMEOUT:
			case HIGH:
			case HONOR_BROKER_PRIORITY:
			case HOURS:
			case IDENTITY_VALUE:
			case IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX:
			case IMMEDIATE:
			case IMPERSONATE:
			case IMPORTANCE:
			case INCREMENTAL:
			case INITIATOR:
			case INPUT:
			case INSENSITIVE:
			case INSERTED:
			case INT:
			case IP:
			case ISOLATION:
			case KB:
			case KEEP:
			case KEEPFIXED:
			case KEY_SOURCE:
			case KEYS:
			case KEYSET:
			case LAG:
			case LAST:
			case LAST_VALUE:
			case LEAD:
			case LEVEL:
			case LIST:
			case LISTENER:
			case LISTENER_URL:
			case LOB_COMPACTION:
			case LOCAL:
			case LOCATION:
			case LOCK:
			case LOCK_ESCALATION:
			case LOGIN:
			case LOOP:
			case LOW:
			case MANUAL:
			case MARK:
			case MATERIALIZED:
			case MAX:
			case MAX_CPU_PERCENT:
			case MAX_DOP:
			case MAX_FILES:
			case MAX_IOPS_PER_VOLUME:
			case MAX_MEMORY_PERCENT:
			case MAX_PROCESSES:
			case MAX_QUEUE_READERS:
			case MAX_ROLLOVER_FILES:
			case MAXDOP:
			case MAXRECURSION:
			case MAXSIZE:
			case MB:
			case MEDIUM:
			case MEMORY_OPTIMIZED_DATA:
			case MESSAGE:
			case MIN:
			case MIN_ACTIVE_ROWVERSION:
			case MIN_CPU_PERCENT:
			case MIN_IOPS_PER_VOLUME:
			case MIN_MEMORY_PERCENT:
			case MINUTES:
			case MIRROR_ADDRESS:
			case MIXED_PAGE_ALLOCATION:
			case MODE:
			case MODIFY:
			case MOVE:
			case MULTI_USER:
			case NAME:
			case NESTED_TRIGGERS:
			case NEW_ACCOUNT:
			case NEW_BROKER:
			case NEW_PASSWORD:
			case NEXT:
			case NO:
			case NO_TRUNCATE:
			case NO_WAIT:
			case NOCOUNT:
			case NODES:
			case NOEXPAND:
			case NON_TRANSACTED_ACCESS:
			case NORECOMPUTE:
			case NORECOVERY:
			case NOWAIT:
			case NTILE:
			case NUMANODE:
			case NUMBER:
			case NUMERIC_ROUNDABORT:
			case OBJECT:
			case OFFLINE:
			case OFFSET:
			case OLD_ACCOUNT:
			case ONLINE:
			case ONLY:
			case OPEN_EXISTING:
			case OPTIMISTIC:
			case OPTIMIZE:
			case OUT:
			case OUTPUT:
			case OWNER:
			case PAGE_VERIFY:
			case PARAMETERIZATION:
			case PARTITION:
			case PARTITIONS:
			case PARTNER:
			case PATH:
			case POISON_MESSAGE_HANDLING:
			case POOL:
			case PORT:
			case PRECEDING:
			case PRIMARY_ROLE:
			case PRIOR:
			case PRIORITY:
			case PRIORITY_LEVEL:
			case PRIVATE:
			case PRIVATE_KEY:
			case PRIVILEGES:
			case PROCEDURE_NAME:
			case PROPERTY:
			case PROVIDER:
			case PROVIDER_KEY_NAME:
			case QUERY:
			case QUEUE:
			case QUEUE_DELAY:
			case QUOTED_IDENTIFIER:
			case RANGE:
			case RANK:
			case RC2:
			case RC4:
			case RC4_128:
			case READ_COMMITTED_SNAPSHOT:
			case READ_ONLY:
			case READ_ONLY_ROUTING_LIST:
			case READ_WRITE:
			case READONLY:
			case REBUILD:
			case RECEIVE:
			case RECOMPILE:
			case RECOVERY:
			case RECURSIVE_TRIGGERS:
			case RELATIVE:
			case REMOTE:
			case REMOTE_SERVICE_NAME:
			case REMOVE:
			case REORGANIZE:
			case REPEATABLE:
			case REPLICA:
			case REQUEST_MAX_CPU_TIME_SEC:
			case REQUEST_MAX_MEMORY_GRANT_PERCENT:
			case REQUEST_MEMORY_GRANT_TIMEOUT_SEC:
			case REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT:
			case RESERVE_DISK_SPACE:
			case RESOURCE:
			case RESOURCE_MANAGER_LOCATION:
			case RESTRICTED_USER:
			case RETENTION:
			case ROBUST:
			case ROOT:
			case ROUTE:
			case ROW:
			case ROW_NUMBER:
			case ROWGUID:
			case ROWS:
			case SAMPLE:
			case SCHEMABINDING:
			case SCOPED:
			case SCROLL:
			case SCROLL_LOCKS:
			case SEARCH:
			case SECONDARY:
			case SECONDARY_ONLY:
			case SECONDARY_ROLE:
			case SECONDS:
			case SECRET:
			case SECURITY_LOG:
			case SEEDING_MODE:
			case SELF:
			case SEMI_SENSITIVE:
			case SEND:
			case SENT:
			case SERIALIZABLE:
			case SESSION_TIMEOUT:
			case SETERROR:
			case SHARE:
			case SHOWPLAN:
			case SIGNATURE:
			case SIMPLE:
			case SINGLE_USER:
			case SIZE:
			case SMALLINT:
			case SNAPSHOT:
			case SPATIAL_WINDOW_MAX_CELLS:
			case STANDBY:
			case START_DATE:
			case STATIC:
			case STATS_STREAM:
			case STATUS:
			case STDEV:
			case STDEVP:
			case STOPLIST:
			case STUFF:
			case SUBJECT:
			case SUM:
			case SUSPEND:
			case SYMMETRIC:
			case SYNCHRONOUS_COMMIT:
			case SYNONYM:
			case TAKE:
			case TARGET_RECOVERY_TIME:
			case TB:
			case TEXTIMAGE_ON:
			case THROW:
			case TIES:
			case TIME:
			case TIMEOUT:
			case TIMER:
			case TINYINT:
			case TORN_PAGE_DETECTION:
			case TRANSFORM_NOISE_WORDS:
			case TRIPLE_DES:
			case TRIPLE_DES_3KEY:
			case TRUSTWORTHY:
			case TRY:
			case TSQL:
			case TWO_DIGIT_YEAR_CUTOFF:
			case TYPE:
			case TYPE_WARNING:
			case UNBOUNDED:
			case UNCOMMITTED:
			case UNKNOWN:
			case UNLIMITED:
			case USING:
			case VALID_XML:
			case VALIDATION:
			case VALUE:
			case VAR:
			case VARP:
			case VIEW_METADATA:
			case VIEWS:
			case WAIT:
			case WELL_FORMED_XML:
			case WORK:
			case WORKLOAD:
			case XML:
			case XMLNAMESPACES:
			case DOUBLE_QUOTE_ID:
			case SQUARE_BRACKET_ID:
			case LOCAL_ID:
			case ID:
				{
				setState(5880);
				ddl_object();
				}
				break;
			case OPENDATASOURCE:
			case OPENQUERY:
				{
				setState(5881);
				rowset_function_limited();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			setState(5885);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,739,_ctx) ) {
			case 1:
				{
				setState(5884);
				insert_with_table_hints();
				}
				break;
			}
			setState(5891);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,740,_ctx) ) {
			case 1:
				{
				setState(5887);
				match(LR_BRACKET);
				setState(5888);
				column_name_list();
				setState(5889);
				match(RR_BRACKET);
				}
				break;
			}
			setState(5894);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==OUTPUT) {
				{
				setState(5893);
				output_clause();
				}
			}

			setState(5896);
			insert_statement_value();
			setState(5898);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==FOR) {
				{
				setState(5897);
				for_clause();
				}
			}

			setState(5901);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==OPTION) {
				{
				setState(5900);
				option_clause();
				}
			}

			setState(5904);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,744,_ctx) ) {
			case 1:
				{
				setState(5903);
				match(SEMI);
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Insert_statement_valueContext extends ParserRuleContext {
		public Table_value_constructorContext table_value_constructor() {
			return getRuleContext(Table_value_constructorContext.class,0);
		}
		public Derived_tableContext derived_table() {
			return getRuleContext(Derived_tableContext.class,0);
		}
		public Execute_statementContext execute_statement() {
			return getRuleContext(Execute_statementContext.class,0);
		}
		public TerminalNode DEFAULT() { return getToken(TSqlParser.DEFAULT, 0); }
		public TerminalNode VALUES() { return getToken(TSqlParser.VALUES, 0); }
		public Insert_statement_valueContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_insert_statement_value; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterInsert_statement_value(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitInsert_statement_value(this);
		}
	}

	public final Insert_statement_valueContext insert_statement_value() throws RecognitionException {
		Insert_statement_valueContext _localctx = new Insert_statement_valueContext(_ctx, getState());
		enterRule(_localctx, 440, RULE_insert_statement_value);
		try {
			setState(5911);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,745,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(5906);
				table_value_constructor();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(5907);
				derived_table();
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(5908);
				execute_statement();
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(5909);
				match(DEFAULT);
				setState(5910);
				match(VALUES);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Receive_statementContext extends ParserRuleContext {
		public IdContext table_variable;
		public Search_conditionContext where;
		public TerminalNode RECEIVE() { return getToken(TSqlParser.RECEIVE, 0); }
		public TerminalNode FROM() { return getToken(TSqlParser.FROM, 0); }
		public Full_table_nameContext full_table_name() {
			return getRuleContext(Full_table_nameContext.class,0);
		}
		public TerminalNode ALL() { return getToken(TSqlParser.ALL, 0); }
		public TerminalNode DISTINCT() { return getToken(TSqlParser.DISTINCT, 0); }
		public Top_clauseContext top_clause() {
			return getRuleContext(Top_clauseContext.class,0);
		}
		public TerminalNode STAR() { return getToken(TSqlParser.STAR, 0); }
		public TerminalNode LR_BRACKET() { return getToken(TSqlParser.LR_BRACKET, 0); }
		public List LOCAL_ID() { return getTokens(TSqlParser.LOCAL_ID); }
		public TerminalNode LOCAL_ID(int i) {
			return getToken(TSqlParser.LOCAL_ID, i);
		}
		public List EQUAL() { return getTokens(TSqlParser.EQUAL); }
		public TerminalNode EQUAL(int i) {
			return getToken(TSqlParser.EQUAL, i);
		}
		public List expression() {
			return getRuleContexts(ExpressionContext.class);
		}
		public ExpressionContext expression(int i) {
			return getRuleContext(ExpressionContext.class,i);
		}
		public TerminalNode INTO() { return getToken(TSqlParser.INTO, 0); }
		public TerminalNode RR_BRACKET() { return getToken(TSqlParser.RR_BRACKET, 0); }
		public IdContext id() {
			return getRuleContext(IdContext.class,0);
		}
		public TerminalNode WHERE() { return getToken(TSqlParser.WHERE, 0); }
		public List COMMA() { return getTokens(TSqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(TSqlParser.COMMA, i);
		}
		public Search_conditionContext search_condition() {
			return getRuleContext(Search_conditionContext.class,0);
		}
		public Receive_statementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_receive_statement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterReceive_statement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitReceive_statement(this);
		}
	}

	public final Receive_statementContext receive_statement() throws RecognitionException {
		Receive_statementContext _localctx = new Receive_statementContext(_ctx, getState());
		enterRule(_localctx, 442, RULE_receive_statement);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5914);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==LR_BRACKET) {
				{
				setState(5913);
				match(LR_BRACKET);
				}
			}

			setState(5916);
			match(RECEIVE);
			setState(5921);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case ALL:
				{
				setState(5917);
				match(ALL);
				}
				break;
			case DISTINCT:
				{
				setState(5918);
				match(DISTINCT);
				}
				break;
			case TOP:
				{
				setState(5919);
				top_clause();
				}
				break;
			case STAR:
				{
				setState(5920);
				match(STAR);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			setState(5931);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==LOCAL_ID) {
				{
				{
				setState(5923);
				match(LOCAL_ID);
				setState(5924);
				match(EQUAL);
				setState(5925);
				expression(0);
				setState(5927);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==COMMA) {
					{
					setState(5926);
					match(COMMA);
					}
				}

				}
				}
				setState(5933);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			setState(5934);
			match(FROM);
			setState(5935);
			full_table_name();
			setState(5941);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==INTO) {
				{
				setState(5936);
				match(INTO);
				setState(5937);
				((Receive_statementContext)_localctx).table_variable = id();
				{
				setState(5938);
				match(WHERE);
				setState(5939);
				((Receive_statementContext)_localctx).where = search_condition();
				}
				}
			}

			setState(5944);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==RR_BRACKET) {
				{
				setState(5943);
				match(RR_BRACKET);
				}
			}

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

	public static class Select_statementContext extends ParserRuleContext {
		public Query_expressionContext query_expression() {
			return getRuleContext(Query_expressionContext.class,0);
		}
		public With_expressionContext with_expression() {
			return getRuleContext(With_expressionContext.class,0);
		}
		public Order_by_clauseContext order_by_clause() {
			return getRuleContext(Order_by_clauseContext.class,0);
		}
		public For_clauseContext for_clause() {
			return getRuleContext(For_clauseContext.class,0);
		}
		public Option_clauseContext option_clause() {
			return getRuleContext(Option_clauseContext.class,0);
		}
		public TerminalNode SEMI() { return getToken(TSqlParser.SEMI, 0); }
		public Select_statementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_select_statement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterSelect_statement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitSelect_statement(this);
		}
	}

	public final Select_statementContext select_statement() throws RecognitionException {
		Select_statementContext _localctx = new Select_statementContext(_ctx, getState());
		enterRule(_localctx, 444, RULE_select_statement);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5947);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==WITH) {
				{
				setState(5946);
				with_expression();
				}
			}

			setState(5949);
			query_expression();
			setState(5951);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,753,_ctx) ) {
			case 1:
				{
				setState(5950);
				order_by_clause();
				}
				break;
			}
			setState(5954);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,754,_ctx) ) {
			case 1:
				{
				setState(5953);
				for_clause();
				}
				break;
			}
			setState(5957);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,755,_ctx) ) {
			case 1:
				{
				setState(5956);
				option_clause();
				}
				break;
			}
			setState(5960);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,756,_ctx) ) {
			case 1:
				{
				setState(5959);
				match(SEMI);
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class TimeContext extends ParserRuleContext {
		public TerminalNode LOCAL_ID() { return getToken(TSqlParser.LOCAL_ID, 0); }
		public ConstantContext constant() {
			return getRuleContext(ConstantContext.class,0);
		}
		public TimeContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_time; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterTime(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitTime(this);
		}
	}

	public final TimeContext time() throws RecognitionException {
		TimeContext _localctx = new TimeContext(_ctx, getState());
		enterRule(_localctx, 446, RULE_time);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5964);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case LOCAL_ID:
				{
				setState(5962);
				match(LOCAL_ID);
				}
				break;
			case DECIMAL:
			case STRING:
			case BINARY:
			case FLOAT:
			case REAL:
			case DOLLAR:
			case PLUS:
			case MINUS:
				{
				setState(5963);
				constant();
				}
				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 Update_statementContext extends ParserRuleContext {
		public Token cursor_var;
		public TerminalNode UPDATE() { return getToken(TSqlParser.UPDATE, 0); }
		public TerminalNode SET() { return getToken(TSqlParser.SET, 0); }
		public List update_elem() {
			return getRuleContexts(Update_elemContext.class);
		}
		public Update_elemContext update_elem(int i) {
			return getRuleContext(Update_elemContext.class,i);
		}
		public Ddl_objectContext ddl_object() {
			return getRuleContext(Ddl_objectContext.class,0);
		}
		public Rowset_function_limitedContext rowset_function_limited() {
			return getRuleContext(Rowset_function_limitedContext.class,0);
		}
		public With_expressionContext with_expression() {
			return getRuleContext(With_expressionContext.class,0);
		}
		public TerminalNode TOP() { return getToken(TSqlParser.TOP, 0); }
		public TerminalNode LR_BRACKET() { return getToken(TSqlParser.LR_BRACKET, 0); }
		public ExpressionContext expression() {
			return getRuleContext(ExpressionContext.class,0);
		}
		public TerminalNode RR_BRACKET() { return getToken(TSqlParser.RR_BRACKET, 0); }
		public With_table_hintsContext with_table_hints() {
			return getRuleContext(With_table_hintsContext.class,0);
		}
		public List COMMA() { return getTokens(TSqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(TSqlParser.COMMA, i);
		}
		public Output_clauseContext output_clause() {
			return getRuleContext(Output_clauseContext.class,0);
		}
		public TerminalNode FROM() { return getToken(TSqlParser.FROM, 0); }
		public Table_sourcesContext table_sources() {
			return getRuleContext(Table_sourcesContext.class,0);
		}
		public TerminalNode WHERE() { return getToken(TSqlParser.WHERE, 0); }
		public For_clauseContext for_clause() {
			return getRuleContext(For_clauseContext.class,0);
		}
		public Option_clauseContext option_clause() {
			return getRuleContext(Option_clauseContext.class,0);
		}
		public TerminalNode SEMI() { return getToken(TSqlParser.SEMI, 0); }
		public Search_condition_listContext search_condition_list() {
			return getRuleContext(Search_condition_listContext.class,0);
		}
		public TerminalNode CURRENT() { return getToken(TSqlParser.CURRENT, 0); }
		public TerminalNode OF() { return getToken(TSqlParser.OF, 0); }
		public TerminalNode PERCENT() { return getToken(TSqlParser.PERCENT, 0); }
		public Cursor_nameContext cursor_name() {
			return getRuleContext(Cursor_nameContext.class,0);
		}
		public TerminalNode LOCAL_ID() { return getToken(TSqlParser.LOCAL_ID, 0); }
		public TerminalNode GLOBAL() { return getToken(TSqlParser.GLOBAL, 0); }
		public Update_statementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_update_statement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterUpdate_statement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitUpdate_statement(this);
		}
	}

	public final Update_statementContext update_statement() throws RecognitionException {
		Update_statementContext _localctx = new Update_statementContext(_ctx, getState());
		enterRule(_localctx, 448, RULE_update_statement);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5967);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==WITH) {
				{
				setState(5966);
				with_expression();
				}
			}

			setState(5969);
			match(UPDATE);
			setState(5977);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==TOP) {
				{
				setState(5970);
				match(TOP);
				setState(5971);
				match(LR_BRACKET);
				setState(5972);
				expression(0);
				setState(5973);
				match(RR_BRACKET);
				setState(5975);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==PERCENT) {
					{
					setState(5974);
					match(PERCENT);
					}
				}

				}
			}

			setState(5981);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case CALLED:
			case DATA_COMPRESSION:
			case EVENTDATA:
			case FILENAME:
			case FILLFACTOR:
			case FORCESEEK:
			case INIT:
			case KEY:
			case MASTER:
			case MAX_MEMORY:
			case OFFSETS:
			case PAGE:
			case PUBLIC:
			case R:
			case RAW:
			case RETURN:
			case RETURNS:
			case ROWCOUNT:
			case SAFETY:
			case SERVER:
			case SID:
			case SOURCE:
			case STATE:
			case START:
			case TARGET:
			case ABSOLUTE:
			case ACCENT_SENSITIVITY:
			case ACTION:
			case ACTIVATION:
			case ACTIVE:
			case ADDRESS:
			case AES_128:
			case AES_192:
			case AES_256:
			case AFFINITY:
			case AFTER:
			case AGGREGATE:
			case ALGORITHM:
			case ALLOW_ENCRYPTED_VALUE_MODIFICATIONS:
			case ALLOW_SNAPSHOT_ISOLATION:
			case ALLOWED:
			case ANSI_NULL_DEFAULT:
			case ANSI_NULLS:
			case ANSI_PADDING:
			case ANSI_WARNINGS:
			case APPLICATION_LOG:
			case APPLY:
			case ARITHABORT:
			case ASSEMBLY:
			case AUDIT:
			case AUDIT_GUID:
			case AUTO:
			case AUTO_CLEANUP:
			case AUTO_CLOSE:
			case AUTO_CREATE_STATISTICS:
			case AUTO_SHRINK:
			case AUTO_UPDATE_STATISTICS:
			case AUTO_UPDATE_STATISTICS_ASYNC:
			case AVAILABILITY:
			case AVG:
			case BACKUP_PRIORITY:
			case BEGIN_DIALOG:
			case BIGINT:
			case BINARY_BASE64:
			case BINARY_CHECKSUM:
			case BINDING:
			case BLOB_STORAGE:
			case BROKER:
			case BROKER_INSTANCE:
			case BULK_LOGGED:
			case CALLER:
			case CAP_CPU_PERCENT:
			case CAST:
			case CATALOG:
			case CATCH:
			case CHANGE_RETENTION:
			case CHANGE_TRACKING:
			case CHECKSUM:
			case CHECKSUM_AGG:
			case CLEANUP:
			case COLLECTION:
			case COLUMN_MASTER_KEY:
			case COMMITTED:
			case COMPATIBILITY_LEVEL:
			case CONCAT:
			case CONCAT_NULL_YIELDS_NULL:
			case CONTENT:
			case CONTROL:
			case COOKIE:
			case COUNT:
			case COUNT_BIG:
			case COUNTER:
			case CPU:
			case CREATE_NEW:
			case CREATION_DISPOSITION:
			case CREDENTIAL:
			case CRYPTOGRAPHIC:
			case CURSOR_CLOSE_ON_COMMIT:
			case CURSOR_DEFAULT:
			case DATE_CORRELATION_OPTIMIZATION:
			case DATEADD:
			case DATEDIFF:
			case DATENAME:
			case DATEPART:
			case DAYS:
			case DB_CHAINING:
			case DB_FAILOVER:
			case DECRYPTION:
			case DEFAULT_DOUBLE_QUOTE:
			case DEFAULT_FULLTEXT_LANGUAGE:
			case DEFAULT_LANGUAGE:
			case DELAY:
			case DELAYED_DURABILITY:
			case DELETED:
			case DENSE_RANK:
			case DEPENDENTS:
			case DES:
			case DESCRIPTION:
			case DESX:
			case DHCP:
			case DIALOG:
			case DIRECTORY_NAME:
			case DISABLE:
			case DISABLE_BROKER:
			case DISABLED:
			case DISK_DRIVE:
			case DOCUMENT:
			case DYNAMIC:
			case EMERGENCY:
			case EMPTY:
			case ENABLE:
			case ENABLE_BROKER:
			case ENCRYPTED_VALUE:
			case ENCRYPTION:
			case ENDPOINT_URL:
			case ERROR_BROKER_CONVERSATIONS:
			case EXCLUSIVE:
			case EXECUTABLE:
			case EXIST:
			case EXPAND:
			case EXPIRY_DATE:
			case EXPLICIT:
			case FAIL_OPERATION:
			case FAILOVER_MODE:
			case FAILURE:
			case FAILURE_CONDITION_LEVEL:
			case FAST:
			case FAST_FORWARD:
			case FILEGROUP:
			case FILEGROWTH:
			case FILEPATH:
			case FILESTREAM:
			case FILTER:
			case FIRST:
			case FIRST_VALUE:
			case FOLLOWING:
			case FORCE:
			case FORCE_FAILOVER_ALLOW_DATA_LOSS:
			case FORCED:
			case FORMAT:
			case FORWARD_ONLY:
			case FULLSCAN:
			case FULLTEXT:
			case GB:
			case GETDATE:
			case GETUTCDATE:
			case GLOBAL:
			case GO:
			case GROUP_MAX_REQUESTS:
			case GROUPING:
			case GROUPING_ID:
			case HADR:
			case HASH:
			case HEALTH_CHECK_TIMEOUT:
			case HIGH:
			case HONOR_BROKER_PRIORITY:
			case HOURS:
			case IDENTITY_VALUE:
			case IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX:
			case IMMEDIATE:
			case IMPERSONATE:
			case IMPORTANCE:
			case INCREMENTAL:
			case INITIATOR:
			case INPUT:
			case INSENSITIVE:
			case INSERTED:
			case INT:
			case IP:
			case ISOLATION:
			case KB:
			case KEEP:
			case KEEPFIXED:
			case KEY_SOURCE:
			case KEYS:
			case KEYSET:
			case LAG:
			case LAST:
			case LAST_VALUE:
			case LEAD:
			case LEVEL:
			case LIST:
			case LISTENER:
			case LISTENER_URL:
			case LOB_COMPACTION:
			case LOCAL:
			case LOCATION:
			case LOCK:
			case LOCK_ESCALATION:
			case LOGIN:
			case LOOP:
			case LOW:
			case MANUAL:
			case MARK:
			case MATERIALIZED:
			case MAX:
			case MAX_CPU_PERCENT:
			case MAX_DOP:
			case MAX_FILES:
			case MAX_IOPS_PER_VOLUME:
			case MAX_MEMORY_PERCENT:
			case MAX_PROCESSES:
			case MAX_QUEUE_READERS:
			case MAX_ROLLOVER_FILES:
			case MAXDOP:
			case MAXRECURSION:
			case MAXSIZE:
			case MB:
			case MEDIUM:
			case MEMORY_OPTIMIZED_DATA:
			case MESSAGE:
			case MIN:
			case MIN_ACTIVE_ROWVERSION:
			case MIN_CPU_PERCENT:
			case MIN_IOPS_PER_VOLUME:
			case MIN_MEMORY_PERCENT:
			case MINUTES:
			case MIRROR_ADDRESS:
			case MIXED_PAGE_ALLOCATION:
			case MODE:
			case MODIFY:
			case MOVE:
			case MULTI_USER:
			case NAME:
			case NESTED_TRIGGERS:
			case NEW_ACCOUNT:
			case NEW_BROKER:
			case NEW_PASSWORD:
			case NEXT:
			case NO:
			case NO_TRUNCATE:
			case NO_WAIT:
			case NOCOUNT:
			case NODES:
			case NOEXPAND:
			case NON_TRANSACTED_ACCESS:
			case NORECOMPUTE:
			case NORECOVERY:
			case NOWAIT:
			case NTILE:
			case NUMANODE:
			case NUMBER:
			case NUMERIC_ROUNDABORT:
			case OBJECT:
			case OFFLINE:
			case OFFSET:
			case OLD_ACCOUNT:
			case ONLINE:
			case ONLY:
			case OPEN_EXISTING:
			case OPTIMISTIC:
			case OPTIMIZE:
			case OUT:
			case OUTPUT:
			case OWNER:
			case PAGE_VERIFY:
			case PARAMETERIZATION:
			case PARTITION:
			case PARTITIONS:
			case PARTNER:
			case PATH:
			case POISON_MESSAGE_HANDLING:
			case POOL:
			case PORT:
			case PRECEDING:
			case PRIMARY_ROLE:
			case PRIOR:
			case PRIORITY:
			case PRIORITY_LEVEL:
			case PRIVATE:
			case PRIVATE_KEY:
			case PRIVILEGES:
			case PROCEDURE_NAME:
			case PROPERTY:
			case PROVIDER:
			case PROVIDER_KEY_NAME:
			case QUERY:
			case QUEUE:
			case QUEUE_DELAY:
			case QUOTED_IDENTIFIER:
			case RANGE:
			case RANK:
			case RC2:
			case RC4:
			case RC4_128:
			case READ_COMMITTED_SNAPSHOT:
			case READ_ONLY:
			case READ_ONLY_ROUTING_LIST:
			case READ_WRITE:
			case READONLY:
			case REBUILD:
			case RECEIVE:
			case RECOMPILE:
			case RECOVERY:
			case RECURSIVE_TRIGGERS:
			case RELATIVE:
			case REMOTE:
			case REMOTE_SERVICE_NAME:
			case REMOVE:
			case REORGANIZE:
			case REPEATABLE:
			case REPLICA:
			case REQUEST_MAX_CPU_TIME_SEC:
			case REQUEST_MAX_MEMORY_GRANT_PERCENT:
			case REQUEST_MEMORY_GRANT_TIMEOUT_SEC:
			case REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT:
			case RESERVE_DISK_SPACE:
			case RESOURCE:
			case RESOURCE_MANAGER_LOCATION:
			case RESTRICTED_USER:
			case RETENTION:
			case ROBUST:
			case ROOT:
			case ROUTE:
			case ROW:
			case ROW_NUMBER:
			case ROWGUID:
			case ROWS:
			case SAMPLE:
			case SCHEMABINDING:
			case SCOPED:
			case SCROLL:
			case SCROLL_LOCKS:
			case SEARCH:
			case SECONDARY:
			case SECONDARY_ONLY:
			case SECONDARY_ROLE:
			case SECONDS:
			case SECRET:
			case SECURITY_LOG:
			case SEEDING_MODE:
			case SELF:
			case SEMI_SENSITIVE:
			case SEND:
			case SENT:
			case SERIALIZABLE:
			case SESSION_TIMEOUT:
			case SETERROR:
			case SHARE:
			case SHOWPLAN:
			case SIGNATURE:
			case SIMPLE:
			case SINGLE_USER:
			case SIZE:
			case SMALLINT:
			case SNAPSHOT:
			case SPATIAL_WINDOW_MAX_CELLS:
			case STANDBY:
			case START_DATE:
			case STATIC:
			case STATS_STREAM:
			case STATUS:
			case STDEV:
			case STDEVP:
			case STOPLIST:
			case STUFF:
			case SUBJECT:
			case SUM:
			case SUSPEND:
			case SYMMETRIC:
			case SYNCHRONOUS_COMMIT:
			case SYNONYM:
			case TAKE:
			case TARGET_RECOVERY_TIME:
			case TB:
			case TEXTIMAGE_ON:
			case THROW:
			case TIES:
			case TIME:
			case TIMEOUT:
			case TIMER:
			case TINYINT:
			case TORN_PAGE_DETECTION:
			case TRANSFORM_NOISE_WORDS:
			case TRIPLE_DES:
			case TRIPLE_DES_3KEY:
			case TRUSTWORTHY:
			case TRY:
			case TSQL:
			case TWO_DIGIT_YEAR_CUTOFF:
			case TYPE:
			case TYPE_WARNING:
			case UNBOUNDED:
			case UNCOMMITTED:
			case UNKNOWN:
			case UNLIMITED:
			case USING:
			case VALID_XML:
			case VALIDATION:
			case VALUE:
			case VAR:
			case VARP:
			case VIEW_METADATA:
			case VIEWS:
			case WAIT:
			case WELL_FORMED_XML:
			case WORK:
			case WORKLOAD:
			case XML:
			case XMLNAMESPACES:
			case DOUBLE_QUOTE_ID:
			case SQUARE_BRACKET_ID:
			case LOCAL_ID:
			case ID:
				{
				setState(5979);
				ddl_object();
				}
				break;
			case OPENDATASOURCE:
			case OPENQUERY:
				{
				setState(5980);
				rowset_function_limited();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			setState(5984);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==WITH || _la==LR_BRACKET) {
				{
				setState(5983);
				with_table_hints();
				}
			}

			setState(5986);
			match(SET);
			setState(5987);
			update_elem();
			setState(5992);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA) {
				{
				{
				setState(5988);
				match(COMMA);
				setState(5989);
				update_elem();
				}
				}
				setState(5994);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			setState(5996);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,764,_ctx) ) {
			case 1:
				{
				setState(5995);
				output_clause();
				}
				break;
			}
			setState(6000);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==FROM) {
				{
				setState(5998);
				match(FROM);
				setState(5999);
				table_sources();
				}
			}

			setState(6015);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==WHERE) {
				{
				setState(6002);
				match(WHERE);
				setState(6013);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case BLOCKING_HIERARCHY:
				case CALLED:
				case CASE:
				case COALESCE:
				case CONVERT:
				case CURRENT_TIMESTAMP:
				case CURRENT_USER:
				case DATA_COMPRESSION:
				case DEFAULT:
				case EVENTDATA:
				case EXISTS:
				case FILENAME:
				case FILLFACTOR:
				case FORCESEEK:
				case IDENTITY:
				case IIF:
				case INIT:
				case ISNULL:
				case KEY:
				case LEFT:
				case MASTER:
				case MAX_MEMORY:
				case NOT:
				case NULL:
				case NULLIF:
				case OFFSETS:
				case OVER:
				case PAGE:
				case PUBLIC:
				case R:
				case RAW:
				case RETURN:
				case RETURNS:
				case RIGHT:
				case ROWCOUNT:
				case SAFETY:
				case SERVER:
				case SESSION_USER:
				case SID:
				case SOURCE:
				case STATE:
				case START:
				case SYSTEM_USER:
				case TARGET:
				case ABSOLUTE:
				case ACCENT_SENSITIVITY:
				case ACTION:
				case ACTIVATION:
				case ACTIVE:
				case ADDRESS:
				case AES_128:
				case AES_192:
				case AES_256:
				case AFFINITY:
				case AFTER:
				case AGGREGATE:
				case ALGORITHM:
				case ALLOW_ENCRYPTED_VALUE_MODIFICATIONS:
				case ALLOW_SNAPSHOT_ISOLATION:
				case ALLOWED:
				case ANSI_NULL_DEFAULT:
				case ANSI_NULLS:
				case ANSI_PADDING:
				case ANSI_WARNINGS:
				case APPLICATION_LOG:
				case APPLY:
				case ARITHABORT:
				case ASSEMBLY:
				case AUDIT:
				case AUDIT_GUID:
				case AUTO:
				case AUTO_CLEANUP:
				case AUTO_CLOSE:
				case AUTO_CREATE_STATISTICS:
				case AUTO_SHRINK:
				case AUTO_UPDATE_STATISTICS:
				case AUTO_UPDATE_STATISTICS_ASYNC:
				case AVAILABILITY:
				case AVG:
				case BACKUP_PRIORITY:
				case BEGIN_DIALOG:
				case BIGINT:
				case BINARY_BASE64:
				case BINARY_CHECKSUM:
				case BINDING:
				case BLOB_STORAGE:
				case BROKER:
				case BROKER_INSTANCE:
				case BULK_LOGGED:
				case CALLER:
				case CAP_CPU_PERCENT:
				case CAST:
				case CATALOG:
				case CATCH:
				case CHANGE_RETENTION:
				case CHANGE_TRACKING:
				case CHECKSUM:
				case CHECKSUM_AGG:
				case CLEANUP:
				case COLLECTION:
				case COLUMN_MASTER_KEY:
				case COMMITTED:
				case COMPATIBILITY_LEVEL:
				case CONCAT:
				case CONCAT_NULL_YIELDS_NULL:
				case CONTENT:
				case CONTROL:
				case COOKIE:
				case COUNT:
				case COUNT_BIG:
				case COUNTER:
				case CPU:
				case CREATE_NEW:
				case CREATION_DISPOSITION:
				case CREDENTIAL:
				case CRYPTOGRAPHIC:
				case CURSOR_CLOSE_ON_COMMIT:
				case CURSOR_DEFAULT:
				case DATE_CORRELATION_OPTIMIZATION:
				case DATEADD:
				case DATEDIFF:
				case DATENAME:
				case DATEPART:
				case DAYS:
				case DB_CHAINING:
				case DB_FAILOVER:
				case DECRYPTION:
				case DEFAULT_DOUBLE_QUOTE:
				case DEFAULT_FULLTEXT_LANGUAGE:
				case DEFAULT_LANGUAGE:
				case DELAY:
				case DELAYED_DURABILITY:
				case DELETED:
				case DENSE_RANK:
				case DEPENDENTS:
				case DES:
				case DESCRIPTION:
				case DESX:
				case DHCP:
				case DIALOG:
				case DIRECTORY_NAME:
				case DISABLE:
				case DISABLE_BROKER:
				case DISABLED:
				case DISK_DRIVE:
				case DOCUMENT:
				case DYNAMIC:
				case EMERGENCY:
				case EMPTY:
				case ENABLE:
				case ENABLE_BROKER:
				case ENCRYPTED_VALUE:
				case ENCRYPTION:
				case ENDPOINT_URL:
				case ERROR_BROKER_CONVERSATIONS:
				case EXCLUSIVE:
				case EXECUTABLE:
				case EXIST:
				case EXPAND:
				case EXPIRY_DATE:
				case EXPLICIT:
				case FAIL_OPERATION:
				case FAILOVER_MODE:
				case FAILURE:
				case FAILURE_CONDITION_LEVEL:
				case FAST:
				case FAST_FORWARD:
				case FILEGROUP:
				case FILEGROWTH:
				case FILEPATH:
				case FILESTREAM:
				case FILTER:
				case FIRST:
				case FIRST_VALUE:
				case FOLLOWING:
				case FORCE:
				case FORCE_FAILOVER_ALLOW_DATA_LOSS:
				case FORCED:
				case FORMAT:
				case FORWARD_ONLY:
				case FULLSCAN:
				case FULLTEXT:
				case GB:
				case GETDATE:
				case GETUTCDATE:
				case GLOBAL:
				case GO:
				case GROUP_MAX_REQUESTS:
				case GROUPING:
				case GROUPING_ID:
				case HADR:
				case HASH:
				case HEALTH_CHECK_TIMEOUT:
				case HIGH:
				case HONOR_BROKER_PRIORITY:
				case HOURS:
				case IDENTITY_VALUE:
				case IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX:
				case IMMEDIATE:
				case IMPERSONATE:
				case IMPORTANCE:
				case INCREMENTAL:
				case INITIATOR:
				case INPUT:
				case INSENSITIVE:
				case INSERTED:
				case INT:
				case IP:
				case ISOLATION:
				case KB:
				case KEEP:
				case KEEPFIXED:
				case KEY_SOURCE:
				case KEYS:
				case KEYSET:
				case LAG:
				case LAST:
				case LAST_VALUE:
				case LEAD:
				case LEVEL:
				case LIST:
				case LISTENER:
				case LISTENER_URL:
				case LOB_COMPACTION:
				case LOCAL:
				case LOCATION:
				case LOCK:
				case LOCK_ESCALATION:
				case LOGIN:
				case LOOP:
				case LOW:
				case MANUAL:
				case MARK:
				case MATERIALIZED:
				case MAX:
				case MAX_CPU_PERCENT:
				case MAX_DOP:
				case MAX_FILES:
				case MAX_IOPS_PER_VOLUME:
				case MAX_MEMORY_PERCENT:
				case MAX_PROCESSES:
				case MAX_QUEUE_READERS:
				case MAX_ROLLOVER_FILES:
				case MAXDOP:
				case MAXRECURSION:
				case MAXSIZE:
				case MB:
				case MEDIUM:
				case MEMORY_OPTIMIZED_DATA:
				case MESSAGE:
				case MIN:
				case MIN_ACTIVE_ROWVERSION:
				case MIN_CPU_PERCENT:
				case MIN_IOPS_PER_VOLUME:
				case MIN_MEMORY_PERCENT:
				case MINUTES:
				case MIRROR_ADDRESS:
				case MIXED_PAGE_ALLOCATION:
				case MODE:
				case MODIFY:
				case MOVE:
				case MULTI_USER:
				case NAME:
				case NESTED_TRIGGERS:
				case NEW_ACCOUNT:
				case NEW_BROKER:
				case NEW_PASSWORD:
				case NEXT:
				case NO:
				case NO_TRUNCATE:
				case NO_WAIT:
				case NOCOUNT:
				case NODES:
				case NOEXPAND:
				case NON_TRANSACTED_ACCESS:
				case NORECOMPUTE:
				case NORECOVERY:
				case NOWAIT:
				case NTILE:
				case NUMANODE:
				case NUMBER:
				case NUMERIC_ROUNDABORT:
				case OBJECT:
				case OFFLINE:
				case OFFSET:
				case OLD_ACCOUNT:
				case ONLINE:
				case ONLY:
				case OPEN_EXISTING:
				case OPTIMISTIC:
				case OPTIMIZE:
				case OUT:
				case OUTPUT:
				case OWNER:
				case PAGE_VERIFY:
				case PARAMETERIZATION:
				case PARTITION:
				case PARTITIONS:
				case PARTNER:
				case PATH:
				case POISON_MESSAGE_HANDLING:
				case POOL:
				case PORT:
				case PRECEDING:
				case PRIMARY_ROLE:
				case PRIOR:
				case PRIORITY:
				case PRIORITY_LEVEL:
				case PRIVATE:
				case PRIVATE_KEY:
				case PRIVILEGES:
				case PROCEDURE_NAME:
				case PROPERTY:
				case PROVIDER:
				case PROVIDER_KEY_NAME:
				case QUERY:
				case QUEUE:
				case QUEUE_DELAY:
				case QUOTED_IDENTIFIER:
				case RANGE:
				case RANK:
				case RC2:
				case RC4:
				case RC4_128:
				case READ_COMMITTED_SNAPSHOT:
				case READ_ONLY:
				case READ_ONLY_ROUTING_LIST:
				case READ_WRITE:
				case READONLY:
				case REBUILD:
				case RECEIVE:
				case RECOMPILE:
				case RECOVERY:
				case RECURSIVE_TRIGGERS:
				case RELATIVE:
				case REMOTE:
				case REMOTE_SERVICE_NAME:
				case REMOVE:
				case REORGANIZE:
				case REPEATABLE:
				case REPLICA:
				case REQUEST_MAX_CPU_TIME_SEC:
				case REQUEST_MAX_MEMORY_GRANT_PERCENT:
				case REQUEST_MEMORY_GRANT_TIMEOUT_SEC:
				case REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT:
				case RESERVE_DISK_SPACE:
				case RESOURCE:
				case RESOURCE_MANAGER_LOCATION:
				case RESTRICTED_USER:
				case RETENTION:
				case ROBUST:
				case ROOT:
				case ROUTE:
				case ROW:
				case ROW_NUMBER:
				case ROWGUID:
				case ROWS:
				case SAMPLE:
				case SCHEMABINDING:
				case SCOPED:
				case SCROLL:
				case SCROLL_LOCKS:
				case SEARCH:
				case SECONDARY:
				case SECONDARY_ONLY:
				case SECONDARY_ROLE:
				case SECONDS:
				case SECRET:
				case SECURITY_LOG:
				case SEEDING_MODE:
				case SELF:
				case SEMI_SENSITIVE:
				case SEND:
				case SENT:
				case SERIALIZABLE:
				case SESSION_TIMEOUT:
				case SETERROR:
				case SHARE:
				case SHOWPLAN:
				case SIGNATURE:
				case SIMPLE:
				case SINGLE_USER:
				case SIZE:
				case SMALLINT:
				case SNAPSHOT:
				case SPATIAL_WINDOW_MAX_CELLS:
				case STANDBY:
				case START_DATE:
				case STATIC:
				case STATS_STREAM:
				case STATUS:
				case STDEV:
				case STDEVP:
				case STOPLIST:
				case STUFF:
				case SUBJECT:
				case SUM:
				case SUSPEND:
				case SYMMETRIC:
				case SYNCHRONOUS_COMMIT:
				case SYNONYM:
				case TAKE:
				case TARGET_RECOVERY_TIME:
				case TB:
				case TEXTIMAGE_ON:
				case THROW:
				case TIES:
				case TIME:
				case TIMEOUT:
				case TIMER:
				case TINYINT:
				case TORN_PAGE_DETECTION:
				case TRANSFORM_NOISE_WORDS:
				case TRIPLE_DES:
				case TRIPLE_DES_3KEY:
				case TRUSTWORTHY:
				case TRY:
				case TSQL:
				case TWO_DIGIT_YEAR_CUTOFF:
				case TYPE:
				case TYPE_WARNING:
				case UNBOUNDED:
				case UNCOMMITTED:
				case UNKNOWN:
				case UNLIMITED:
				case USING:
				case VALID_XML:
				case VALIDATION:
				case VALUE:
				case VAR:
				case VARP:
				case VIEW_METADATA:
				case VIEWS:
				case WAIT:
				case WELL_FORMED_XML:
				case WORK:
				case WORKLOAD:
				case XML:
				case XMLNAMESPACES:
				case DOUBLE_QUOTE_ID:
				case SQUARE_BRACKET_ID:
				case LOCAL_ID:
				case DECIMAL:
				case ID:
				case STRING:
				case BINARY:
				case FLOAT:
				case REAL:
				case DOLLAR:
				case LR_BRACKET:
				case PLUS:
				case MINUS:
				case BIT_NOT:
					{
					setState(6003);
					search_condition_list();
					}
					break;
				case CURRENT:
					{
					setState(6004);
					match(CURRENT);
					setState(6005);
					match(OF);
					setState(6011);
					_errHandler.sync(this);
					switch ( getInterpreter().adaptivePredict(_input,767,_ctx) ) {
					case 1:
						{
						setState(6007);
						_errHandler.sync(this);
						switch ( getInterpreter().adaptivePredict(_input,766,_ctx) ) {
						case 1:
							{
							setState(6006);
							match(GLOBAL);
							}
							break;
						}
						setState(6009);
						cursor_name();
						}
						break;
					case 2:
						{
						setState(6010);
						((Update_statementContext)_localctx).cursor_var = match(LOCAL_ID);
						}
						break;
					}
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
			}

			setState(6018);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==FOR) {
				{
				setState(6017);
				for_clause();
				}
			}

			setState(6021);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==OPTION) {
				{
				setState(6020);
				option_clause();
				}
			}

			setState(6024);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,772,_ctx) ) {
			case 1:
				{
				setState(6023);
				match(SEMI);
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Output_clauseContext extends ParserRuleContext {
		public TerminalNode OUTPUT() { return getToken(TSqlParser.OUTPUT, 0); }
		public List output_dml_list_elem() {
			return getRuleContexts(Output_dml_list_elemContext.class);
		}
		public Output_dml_list_elemContext output_dml_list_elem(int i) {
			return getRuleContext(Output_dml_list_elemContext.class,i);
		}
		public List COMMA() { return getTokens(TSqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(TSqlParser.COMMA, i);
		}
		public TerminalNode INTO() { return getToken(TSqlParser.INTO, 0); }
		public TerminalNode LOCAL_ID() { return getToken(TSqlParser.LOCAL_ID, 0); }
		public Table_nameContext table_name() {
			return getRuleContext(Table_nameContext.class,0);
		}
		public TerminalNode LR_BRACKET() { return getToken(TSqlParser.LR_BRACKET, 0); }
		public Column_name_listContext column_name_list() {
			return getRuleContext(Column_name_listContext.class,0);
		}
		public TerminalNode RR_BRACKET() { return getToken(TSqlParser.RR_BRACKET, 0); }
		public Output_clauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_output_clause; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterOutput_clause(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitOutput_clause(this);
		}
	}

	public final Output_clauseContext output_clause() throws RecognitionException {
		Output_clauseContext _localctx = new Output_clauseContext(_ctx, getState());
		enterRule(_localctx, 450, RULE_output_clause);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6026);
			match(OUTPUT);
			setState(6027);
			output_dml_list_elem();
			setState(6032);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA) {
				{
				{
				setState(6028);
				match(COMMA);
				setState(6029);
				output_dml_list_elem();
				}
				}
				setState(6034);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			setState(6046);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==INTO) {
				{
				setState(6035);
				match(INTO);
				setState(6038);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case LOCAL_ID:
					{
					setState(6036);
					match(LOCAL_ID);
					}
					break;
				case BLOCKING_HIERARCHY:
				case CALLED:
				case DATA_COMPRESSION:
				case EVENTDATA:
				case FILENAME:
				case FILLFACTOR:
				case FORCESEEK:
				case INIT:
				case KEY:
				case MASTER:
				case MAX_MEMORY:
				case OFFSETS:
				case PAGE:
				case PUBLIC:
				case R:
				case RAW:
				case RETURN:
				case RETURNS:
				case ROWCOUNT:
				case SAFETY:
				case SERVER:
				case SID:
				case SOURCE:
				case STATE:
				case START:
				case TARGET:
				case ABSOLUTE:
				case ACCENT_SENSITIVITY:
				case ACTION:
				case ACTIVATION:
				case ACTIVE:
				case ADDRESS:
				case AES_128:
				case AES_192:
				case AES_256:
				case AFFINITY:
				case AFTER:
				case AGGREGATE:
				case ALGORITHM:
				case ALLOW_ENCRYPTED_VALUE_MODIFICATIONS:
				case ALLOW_SNAPSHOT_ISOLATION:
				case ALLOWED:
				case ANSI_NULL_DEFAULT:
				case ANSI_NULLS:
				case ANSI_PADDING:
				case ANSI_WARNINGS:
				case APPLICATION_LOG:
				case APPLY:
				case ARITHABORT:
				case ASSEMBLY:
				case AUDIT:
				case AUDIT_GUID:
				case AUTO:
				case AUTO_CLEANUP:
				case AUTO_CLOSE:
				case AUTO_CREATE_STATISTICS:
				case AUTO_SHRINK:
				case AUTO_UPDATE_STATISTICS:
				case AUTO_UPDATE_STATISTICS_ASYNC:
				case AVAILABILITY:
				case AVG:
				case BACKUP_PRIORITY:
				case BEGIN_DIALOG:
				case BIGINT:
				case BINARY_BASE64:
				case BINARY_CHECKSUM:
				case BINDING:
				case BLOB_STORAGE:
				case BROKER:
				case BROKER_INSTANCE:
				case BULK_LOGGED:
				case CALLER:
				case CAP_CPU_PERCENT:
				case CAST:
				case CATALOG:
				case CATCH:
				case CHANGE_RETENTION:
				case CHANGE_TRACKING:
				case CHECKSUM:
				case CHECKSUM_AGG:
				case CLEANUP:
				case COLLECTION:
				case COLUMN_MASTER_KEY:
				case COMMITTED:
				case COMPATIBILITY_LEVEL:
				case CONCAT:
				case CONCAT_NULL_YIELDS_NULL:
				case CONTENT:
				case CONTROL:
				case COOKIE:
				case COUNT:
				case COUNT_BIG:
				case COUNTER:
				case CPU:
				case CREATE_NEW:
				case CREATION_DISPOSITION:
				case CREDENTIAL:
				case CRYPTOGRAPHIC:
				case CURSOR_CLOSE_ON_COMMIT:
				case CURSOR_DEFAULT:
				case DATE_CORRELATION_OPTIMIZATION:
				case DATEADD:
				case DATEDIFF:
				case DATENAME:
				case DATEPART:
				case DAYS:
				case DB_CHAINING:
				case DB_FAILOVER:
				case DECRYPTION:
				case DEFAULT_DOUBLE_QUOTE:
				case DEFAULT_FULLTEXT_LANGUAGE:
				case DEFAULT_LANGUAGE:
				case DELAY:
				case DELAYED_DURABILITY:
				case DELETED:
				case DENSE_RANK:
				case DEPENDENTS:
				case DES:
				case DESCRIPTION:
				case DESX:
				case DHCP:
				case DIALOG:
				case DIRECTORY_NAME:
				case DISABLE:
				case DISABLE_BROKER:
				case DISABLED:
				case DISK_DRIVE:
				case DOCUMENT:
				case DYNAMIC:
				case EMERGENCY:
				case EMPTY:
				case ENABLE:
				case ENABLE_BROKER:
				case ENCRYPTED_VALUE:
				case ENCRYPTION:
				case ENDPOINT_URL:
				case ERROR_BROKER_CONVERSATIONS:
				case EXCLUSIVE:
				case EXECUTABLE:
				case EXIST:
				case EXPAND:
				case EXPIRY_DATE:
				case EXPLICIT:
				case FAIL_OPERATION:
				case FAILOVER_MODE:
				case FAILURE:
				case FAILURE_CONDITION_LEVEL:
				case FAST:
				case FAST_FORWARD:
				case FILEGROUP:
				case FILEGROWTH:
				case FILEPATH:
				case FILESTREAM:
				case FILTER:
				case FIRST:
				case FIRST_VALUE:
				case FOLLOWING:
				case FORCE:
				case FORCE_FAILOVER_ALLOW_DATA_LOSS:
				case FORCED:
				case FORMAT:
				case FORWARD_ONLY:
				case FULLSCAN:
				case FULLTEXT:
				case GB:
				case GETDATE:
				case GETUTCDATE:
				case GLOBAL:
				case GO:
				case GROUP_MAX_REQUESTS:
				case GROUPING:
				case GROUPING_ID:
				case HADR:
				case HASH:
				case HEALTH_CHECK_TIMEOUT:
				case HIGH:
				case HONOR_BROKER_PRIORITY:
				case HOURS:
				case IDENTITY_VALUE:
				case IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX:
				case IMMEDIATE:
				case IMPERSONATE:
				case IMPORTANCE:
				case INCREMENTAL:
				case INITIATOR:
				case INPUT:
				case INSENSITIVE:
				case INSERTED:
				case INT:
				case IP:
				case ISOLATION:
				case KB:
				case KEEP:
				case KEEPFIXED:
				case KEY_SOURCE:
				case KEYS:
				case KEYSET:
				case LAG:
				case LAST:
				case LAST_VALUE:
				case LEAD:
				case LEVEL:
				case LIST:
				case LISTENER:
				case LISTENER_URL:
				case LOB_COMPACTION:
				case LOCAL:
				case LOCATION:
				case LOCK:
				case LOCK_ESCALATION:
				case LOGIN:
				case LOOP:
				case LOW:
				case MANUAL:
				case MARK:
				case MATERIALIZED:
				case MAX:
				case MAX_CPU_PERCENT:
				case MAX_DOP:
				case MAX_FILES:
				case MAX_IOPS_PER_VOLUME:
				case MAX_MEMORY_PERCENT:
				case MAX_PROCESSES:
				case MAX_QUEUE_READERS:
				case MAX_ROLLOVER_FILES:
				case MAXDOP:
				case MAXRECURSION:
				case MAXSIZE:
				case MB:
				case MEDIUM:
				case MEMORY_OPTIMIZED_DATA:
				case MESSAGE:
				case MIN:
				case MIN_ACTIVE_ROWVERSION:
				case MIN_CPU_PERCENT:
				case MIN_IOPS_PER_VOLUME:
				case MIN_MEMORY_PERCENT:
				case MINUTES:
				case MIRROR_ADDRESS:
				case MIXED_PAGE_ALLOCATION:
				case MODE:
				case MODIFY:
				case MOVE:
				case MULTI_USER:
				case NAME:
				case NESTED_TRIGGERS:
				case NEW_ACCOUNT:
				case NEW_BROKER:
				case NEW_PASSWORD:
				case NEXT:
				case NO:
				case NO_TRUNCATE:
				case NO_WAIT:
				case NOCOUNT:
				case NODES:
				case NOEXPAND:
				case NON_TRANSACTED_ACCESS:
				case NORECOMPUTE:
				case NORECOVERY:
				case NOWAIT:
				case NTILE:
				case NUMANODE:
				case NUMBER:
				case NUMERIC_ROUNDABORT:
				case OBJECT:
				case OFFLINE:
				case OFFSET:
				case OLD_ACCOUNT:
				case ONLINE:
				case ONLY:
				case OPEN_EXISTING:
				case OPTIMISTIC:
				case OPTIMIZE:
				case OUT:
				case OUTPUT:
				case OWNER:
				case PAGE_VERIFY:
				case PARAMETERIZATION:
				case PARTITION:
				case PARTITIONS:
				case PARTNER:
				case PATH:
				case POISON_MESSAGE_HANDLING:
				case POOL:
				case PORT:
				case PRECEDING:
				case PRIMARY_ROLE:
				case PRIOR:
				case PRIORITY:
				case PRIORITY_LEVEL:
				case PRIVATE:
				case PRIVATE_KEY:
				case PRIVILEGES:
				case PROCEDURE_NAME:
				case PROPERTY:
				case PROVIDER:
				case PROVIDER_KEY_NAME:
				case QUERY:
				case QUEUE:
				case QUEUE_DELAY:
				case QUOTED_IDENTIFIER:
				case RANGE:
				case RANK:
				case RC2:
				case RC4:
				case RC4_128:
				case READ_COMMITTED_SNAPSHOT:
				case READ_ONLY:
				case READ_ONLY_ROUTING_LIST:
				case READ_WRITE:
				case READONLY:
				case REBUILD:
				case RECEIVE:
				case RECOMPILE:
				case RECOVERY:
				case RECURSIVE_TRIGGERS:
				case RELATIVE:
				case REMOTE:
				case REMOTE_SERVICE_NAME:
				case REMOVE:
				case REORGANIZE:
				case REPEATABLE:
				case REPLICA:
				case REQUEST_MAX_CPU_TIME_SEC:
				case REQUEST_MAX_MEMORY_GRANT_PERCENT:
				case REQUEST_MEMORY_GRANT_TIMEOUT_SEC:
				case REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT:
				case RESERVE_DISK_SPACE:
				case RESOURCE:
				case RESOURCE_MANAGER_LOCATION:
				case RESTRICTED_USER:
				case RETENTION:
				case ROBUST:
				case ROOT:
				case ROUTE:
				case ROW:
				case ROW_NUMBER:
				case ROWGUID:
				case ROWS:
				case SAMPLE:
				case SCHEMABINDING:
				case SCOPED:
				case SCROLL:
				case SCROLL_LOCKS:
				case SEARCH:
				case SECONDARY:
				case SECONDARY_ONLY:
				case SECONDARY_ROLE:
				case SECONDS:
				case SECRET:
				case SECURITY_LOG:
				case SEEDING_MODE:
				case SELF:
				case SEMI_SENSITIVE:
				case SEND:
				case SENT:
				case SERIALIZABLE:
				case SESSION_TIMEOUT:
				case SETERROR:
				case SHARE:
				case SHOWPLAN:
				case SIGNATURE:
				case SIMPLE:
				case SINGLE_USER:
				case SIZE:
				case SMALLINT:
				case SNAPSHOT:
				case SPATIAL_WINDOW_MAX_CELLS:
				case STANDBY:
				case START_DATE:
				case STATIC:
				case STATS_STREAM:
				case STATUS:
				case STDEV:
				case STDEVP:
				case STOPLIST:
				case STUFF:
				case SUBJECT:
				case SUM:
				case SUSPEND:
				case SYMMETRIC:
				case SYNCHRONOUS_COMMIT:
				case SYNONYM:
				case TAKE:
				case TARGET_RECOVERY_TIME:
				case TB:
				case TEXTIMAGE_ON:
				case THROW:
				case TIES:
				case TIME:
				case TIMEOUT:
				case TIMER:
				case TINYINT:
				case TORN_PAGE_DETECTION:
				case TRANSFORM_NOISE_WORDS:
				case TRIPLE_DES:
				case TRIPLE_DES_3KEY:
				case TRUSTWORTHY:
				case TRY:
				case TSQL:
				case TWO_DIGIT_YEAR_CUTOFF:
				case TYPE:
				case TYPE_WARNING:
				case UNBOUNDED:
				case UNCOMMITTED:
				case UNKNOWN:
				case UNLIMITED:
				case USING:
				case VALID_XML:
				case VALIDATION:
				case VALUE:
				case VAR:
				case VARP:
				case VIEW_METADATA:
				case VIEWS:
				case WAIT:
				case WELL_FORMED_XML:
				case WORK:
				case WORKLOAD:
				case XML:
				case XMLNAMESPACES:
				case DOUBLE_QUOTE_ID:
				case SQUARE_BRACKET_ID:
				case ID:
					{
					setState(6037);
					table_name();
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				setState(6044);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,775,_ctx) ) {
				case 1:
					{
					setState(6040);
					match(LR_BRACKET);
					setState(6041);
					column_name_list();
					setState(6042);
					match(RR_BRACKET);
					}
					break;
				}
				}
			}

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

	public static class Output_dml_list_elemContext extends ParserRuleContext {
		public Output_column_nameContext output_column_name() {
			return getRuleContext(Output_column_nameContext.class,0);
		}
		public ExpressionContext expression() {
			return getRuleContext(ExpressionContext.class,0);
		}
		public As_column_aliasContext as_column_alias() {
			return getRuleContext(As_column_aliasContext.class,0);
		}
		public Output_dml_list_elemContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_output_dml_list_elem; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterOutput_dml_list_elem(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitOutput_dml_list_elem(this);
		}
	}

	public final Output_dml_list_elemContext output_dml_list_elem() throws RecognitionException {
		Output_dml_list_elemContext _localctx = new Output_dml_list_elemContext(_ctx, getState());
		enterRule(_localctx, 452, RULE_output_dml_list_elem);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6050);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,777,_ctx) ) {
			case 1:
				{
				setState(6048);
				output_column_name();
				}
				break;
			case 2:
				{
				setState(6049);
				expression(0);
				}
				break;
			}
			setState(6053);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,778,_ctx) ) {
			case 1:
				{
				setState(6052);
				as_column_alias();
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Output_column_nameContext extends ParserRuleContext {
		public TerminalNode DOT() { return getToken(TSqlParser.DOT, 0); }
		public TerminalNode DELETED() { return getToken(TSqlParser.DELETED, 0); }
		public TerminalNode INSERTED() { return getToken(TSqlParser.INSERTED, 0); }
		public Table_nameContext table_name() {
			return getRuleContext(Table_nameContext.class,0);
		}
		public TerminalNode STAR() { return getToken(TSqlParser.STAR, 0); }
		public IdContext id() {
			return getRuleContext(IdContext.class,0);
		}
		public TerminalNode DOLLAR_ACTION() { return getToken(TSqlParser.DOLLAR_ACTION, 0); }
		public Output_column_nameContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_output_column_name; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterOutput_column_name(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitOutput_column_name(this);
		}
	}

	public final Output_column_nameContext output_column_name() throws RecognitionException {
		Output_column_nameContext _localctx = new Output_column_nameContext(_ctx, getState());
		enterRule(_localctx, 454, RULE_output_column_name);
		try {
			setState(6066);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case BLOCKING_HIERARCHY:
			case CALLED:
			case DATA_COMPRESSION:
			case EVENTDATA:
			case FILENAME:
			case FILLFACTOR:
			case FORCESEEK:
			case INIT:
			case KEY:
			case MASTER:
			case MAX_MEMORY:
			case OFFSETS:
			case PAGE:
			case PUBLIC:
			case R:
			case RAW:
			case RETURN:
			case RETURNS:
			case ROWCOUNT:
			case SAFETY:
			case SERVER:
			case SID:
			case SOURCE:
			case STATE:
			case START:
			case TARGET:
			case ABSOLUTE:
			case ACCENT_SENSITIVITY:
			case ACTION:
			case ACTIVATION:
			case ACTIVE:
			case ADDRESS:
			case AES_128:
			case AES_192:
			case AES_256:
			case AFFINITY:
			case AFTER:
			case AGGREGATE:
			case ALGORITHM:
			case ALLOW_ENCRYPTED_VALUE_MODIFICATIONS:
			case ALLOW_SNAPSHOT_ISOLATION:
			case ALLOWED:
			case ANSI_NULL_DEFAULT:
			case ANSI_NULLS:
			case ANSI_PADDING:
			case ANSI_WARNINGS:
			case APPLICATION_LOG:
			case APPLY:
			case ARITHABORT:
			case ASSEMBLY:
			case AUDIT:
			case AUDIT_GUID:
			case AUTO:
			case AUTO_CLEANUP:
			case AUTO_CLOSE:
			case AUTO_CREATE_STATISTICS:
			case AUTO_SHRINK:
			case AUTO_UPDATE_STATISTICS:
			case AUTO_UPDATE_STATISTICS_ASYNC:
			case AVAILABILITY:
			case AVG:
			case BACKUP_PRIORITY:
			case BEGIN_DIALOG:
			case BIGINT:
			case BINARY_BASE64:
			case BINARY_CHECKSUM:
			case BINDING:
			case BLOB_STORAGE:
			case BROKER:
			case BROKER_INSTANCE:
			case BULK_LOGGED:
			case CALLER:
			case CAP_CPU_PERCENT:
			case CAST:
			case CATALOG:
			case CATCH:
			case CHANGE_RETENTION:
			case CHANGE_TRACKING:
			case CHECKSUM:
			case CHECKSUM_AGG:
			case CLEANUP:
			case COLLECTION:
			case COLUMN_MASTER_KEY:
			case COMMITTED:
			case COMPATIBILITY_LEVEL:
			case CONCAT:
			case CONCAT_NULL_YIELDS_NULL:
			case CONTENT:
			case CONTROL:
			case COOKIE:
			case COUNT:
			case COUNT_BIG:
			case COUNTER:
			case CPU:
			case CREATE_NEW:
			case CREATION_DISPOSITION:
			case CREDENTIAL:
			case CRYPTOGRAPHIC:
			case CURSOR_CLOSE_ON_COMMIT:
			case CURSOR_DEFAULT:
			case DATE_CORRELATION_OPTIMIZATION:
			case DATEADD:
			case DATEDIFF:
			case DATENAME:
			case DATEPART:
			case DAYS:
			case DB_CHAINING:
			case DB_FAILOVER:
			case DECRYPTION:
			case DEFAULT_DOUBLE_QUOTE:
			case DEFAULT_FULLTEXT_LANGUAGE:
			case DEFAULT_LANGUAGE:
			case DELAY:
			case DELAYED_DURABILITY:
			case DELETED:
			case DENSE_RANK:
			case DEPENDENTS:
			case DES:
			case DESCRIPTION:
			case DESX:
			case DHCP:
			case DIALOG:
			case DIRECTORY_NAME:
			case DISABLE:
			case DISABLE_BROKER:
			case DISABLED:
			case DISK_DRIVE:
			case DOCUMENT:
			case DYNAMIC:
			case EMERGENCY:
			case EMPTY:
			case ENABLE:
			case ENABLE_BROKER:
			case ENCRYPTED_VALUE:
			case ENCRYPTION:
			case ENDPOINT_URL:
			case ERROR_BROKER_CONVERSATIONS:
			case EXCLUSIVE:
			case EXECUTABLE:
			case EXIST:
			case EXPAND:
			case EXPIRY_DATE:
			case EXPLICIT:
			case FAIL_OPERATION:
			case FAILOVER_MODE:
			case FAILURE:
			case FAILURE_CONDITION_LEVEL:
			case FAST:
			case FAST_FORWARD:
			case FILEGROUP:
			case FILEGROWTH:
			case FILEPATH:
			case FILESTREAM:
			case FILTER:
			case FIRST:
			case FIRST_VALUE:
			case FOLLOWING:
			case FORCE:
			case FORCE_FAILOVER_ALLOW_DATA_LOSS:
			case FORCED:
			case FORMAT:
			case FORWARD_ONLY:
			case FULLSCAN:
			case FULLTEXT:
			case GB:
			case GETDATE:
			case GETUTCDATE:
			case GLOBAL:
			case GO:
			case GROUP_MAX_REQUESTS:
			case GROUPING:
			case GROUPING_ID:
			case HADR:
			case HASH:
			case HEALTH_CHECK_TIMEOUT:
			case HIGH:
			case HONOR_BROKER_PRIORITY:
			case HOURS:
			case IDENTITY_VALUE:
			case IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX:
			case IMMEDIATE:
			case IMPERSONATE:
			case IMPORTANCE:
			case INCREMENTAL:
			case INITIATOR:
			case INPUT:
			case INSENSITIVE:
			case INSERTED:
			case INT:
			case IP:
			case ISOLATION:
			case KB:
			case KEEP:
			case KEEPFIXED:
			case KEY_SOURCE:
			case KEYS:
			case KEYSET:
			case LAG:
			case LAST:
			case LAST_VALUE:
			case LEAD:
			case LEVEL:
			case LIST:
			case LISTENER:
			case LISTENER_URL:
			case LOB_COMPACTION:
			case LOCAL:
			case LOCATION:
			case LOCK:
			case LOCK_ESCALATION:
			case LOGIN:
			case LOOP:
			case LOW:
			case MANUAL:
			case MARK:
			case MATERIALIZED:
			case MAX:
			case MAX_CPU_PERCENT:
			case MAX_DOP:
			case MAX_FILES:
			case MAX_IOPS_PER_VOLUME:
			case MAX_MEMORY_PERCENT:
			case MAX_PROCESSES:
			case MAX_QUEUE_READERS:
			case MAX_ROLLOVER_FILES:
			case MAXDOP:
			case MAXRECURSION:
			case MAXSIZE:
			case MB:
			case MEDIUM:
			case MEMORY_OPTIMIZED_DATA:
			case MESSAGE:
			case MIN:
			case MIN_ACTIVE_ROWVERSION:
			case MIN_CPU_PERCENT:
			case MIN_IOPS_PER_VOLUME:
			case MIN_MEMORY_PERCENT:
			case MINUTES:
			case MIRROR_ADDRESS:
			case MIXED_PAGE_ALLOCATION:
			case MODE:
			case MODIFY:
			case MOVE:
			case MULTI_USER:
			case NAME:
			case NESTED_TRIGGERS:
			case NEW_ACCOUNT:
			case NEW_BROKER:
			case NEW_PASSWORD:
			case NEXT:
			case NO:
			case NO_TRUNCATE:
			case NO_WAIT:
			case NOCOUNT:
			case NODES:
			case NOEXPAND:
			case NON_TRANSACTED_ACCESS:
			case NORECOMPUTE:
			case NORECOVERY:
			case NOWAIT:
			case NTILE:
			case NUMANODE:
			case NUMBER:
			case NUMERIC_ROUNDABORT:
			case OBJECT:
			case OFFLINE:
			case OFFSET:
			case OLD_ACCOUNT:
			case ONLINE:
			case ONLY:
			case OPEN_EXISTING:
			case OPTIMISTIC:
			case OPTIMIZE:
			case OUT:
			case OUTPUT:
			case OWNER:
			case PAGE_VERIFY:
			case PARAMETERIZATION:
			case PARTITION:
			case PARTITIONS:
			case PARTNER:
			case PATH:
			case POISON_MESSAGE_HANDLING:
			case POOL:
			case PORT:
			case PRECEDING:
			case PRIMARY_ROLE:
			case PRIOR:
			case PRIORITY:
			case PRIORITY_LEVEL:
			case PRIVATE:
			case PRIVATE_KEY:
			case PRIVILEGES:
			case PROCEDURE_NAME:
			case PROPERTY:
			case PROVIDER:
			case PROVIDER_KEY_NAME:
			case QUERY:
			case QUEUE:
			case QUEUE_DELAY:
			case QUOTED_IDENTIFIER:
			case RANGE:
			case RANK:
			case RC2:
			case RC4:
			case RC4_128:
			case READ_COMMITTED_SNAPSHOT:
			case READ_ONLY:
			case READ_ONLY_ROUTING_LIST:
			case READ_WRITE:
			case READONLY:
			case REBUILD:
			case RECEIVE:
			case RECOMPILE:
			case RECOVERY:
			case RECURSIVE_TRIGGERS:
			case RELATIVE:
			case REMOTE:
			case REMOTE_SERVICE_NAME:
			case REMOVE:
			case REORGANIZE:
			case REPEATABLE:
			case REPLICA:
			case REQUEST_MAX_CPU_TIME_SEC:
			case REQUEST_MAX_MEMORY_GRANT_PERCENT:
			case REQUEST_MEMORY_GRANT_TIMEOUT_SEC:
			case REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT:
			case RESERVE_DISK_SPACE:
			case RESOURCE:
			case RESOURCE_MANAGER_LOCATION:
			case RESTRICTED_USER:
			case RETENTION:
			case ROBUST:
			case ROOT:
			case ROUTE:
			case ROW:
			case ROW_NUMBER:
			case ROWGUID:
			case ROWS:
			case SAMPLE:
			case SCHEMABINDING:
			case SCOPED:
			case SCROLL:
			case SCROLL_LOCKS:
			case SEARCH:
			case SECONDARY:
			case SECONDARY_ONLY:
			case SECONDARY_ROLE:
			case SECONDS:
			case SECRET:
			case SECURITY_LOG:
			case SEEDING_MODE:
			case SELF:
			case SEMI_SENSITIVE:
			case SEND:
			case SENT:
			case SERIALIZABLE:
			case SESSION_TIMEOUT:
			case SETERROR:
			case SHARE:
			case SHOWPLAN:
			case SIGNATURE:
			case SIMPLE:
			case SINGLE_USER:
			case SIZE:
			case SMALLINT:
			case SNAPSHOT:
			case SPATIAL_WINDOW_MAX_CELLS:
			case STANDBY:
			case START_DATE:
			case STATIC:
			case STATS_STREAM:
			case STATUS:
			case STDEV:
			case STDEVP:
			case STOPLIST:
			case STUFF:
			case SUBJECT:
			case SUM:
			case SUSPEND:
			case SYMMETRIC:
			case SYNCHRONOUS_COMMIT:
			case SYNONYM:
			case TAKE:
			case TARGET_RECOVERY_TIME:
			case TB:
			case TEXTIMAGE_ON:
			case THROW:
			case TIES:
			case TIME:
			case TIMEOUT:
			case TIMER:
			case TINYINT:
			case TORN_PAGE_DETECTION:
			case TRANSFORM_NOISE_WORDS:
			case TRIPLE_DES:
			case TRIPLE_DES_3KEY:
			case TRUSTWORTHY:
			case TRY:
			case TSQL:
			case TWO_DIGIT_YEAR_CUTOFF:
			case TYPE:
			case TYPE_WARNING:
			case UNBOUNDED:
			case UNCOMMITTED:
			case UNKNOWN:
			case UNLIMITED:
			case USING:
			case VALID_XML:
			case VALIDATION:
			case VALUE:
			case VAR:
			case VARP:
			case VIEW_METADATA:
			case VIEWS:
			case WAIT:
			case WELL_FORMED_XML:
			case WORK:
			case WORKLOAD:
			case XML:
			case XMLNAMESPACES:
			case DOUBLE_QUOTE_ID:
			case SQUARE_BRACKET_ID:
			case ID:
				enterOuterAlt(_localctx, 1);
				{
				setState(6058);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,779,_ctx) ) {
				case 1:
					{
					setState(6055);
					match(DELETED);
					}
					break;
				case 2:
					{
					setState(6056);
					match(INSERTED);
					}
					break;
				case 3:
					{
					setState(6057);
					table_name();
					}
					break;
				}
				setState(6060);
				match(DOT);
				setState(6063);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case STAR:
					{
					setState(6061);
					match(STAR);
					}
					break;
				case CALLED:
				case DATA_COMPRESSION:
				case EVENTDATA:
				case FILENAME:
				case FILLFACTOR:
				case FORCESEEK:
				case INIT:
				case KEY:
				case MASTER:
				case MAX_MEMORY:
				case OFFSETS:
				case PAGE:
				case PUBLIC:
				case R:
				case RAW:
				case RETURN:
				case RETURNS:
				case ROWCOUNT:
				case SAFETY:
				case SERVER:
				case SID:
				case SOURCE:
				case STATE:
				case START:
				case TARGET:
				case ABSOLUTE:
				case ACCENT_SENSITIVITY:
				case ACTION:
				case ACTIVATION:
				case ACTIVE:
				case ADDRESS:
				case AES_128:
				case AES_192:
				case AES_256:
				case AFFINITY:
				case AFTER:
				case AGGREGATE:
				case ALGORITHM:
				case ALLOW_ENCRYPTED_VALUE_MODIFICATIONS:
				case ALLOW_SNAPSHOT_ISOLATION:
				case ALLOWED:
				case ANSI_NULL_DEFAULT:
				case ANSI_NULLS:
				case ANSI_PADDING:
				case ANSI_WARNINGS:
				case APPLICATION_LOG:
				case APPLY:
				case ARITHABORT:
				case ASSEMBLY:
				case AUDIT:
				case AUDIT_GUID:
				case AUTO:
				case AUTO_CLEANUP:
				case AUTO_CLOSE:
				case AUTO_CREATE_STATISTICS:
				case AUTO_SHRINK:
				case AUTO_UPDATE_STATISTICS:
				case AUTO_UPDATE_STATISTICS_ASYNC:
				case AVAILABILITY:
				case AVG:
				case BACKUP_PRIORITY:
				case BEGIN_DIALOG:
				case BIGINT:
				case BINARY_BASE64:
				case BINARY_CHECKSUM:
				case BINDING:
				case BLOB_STORAGE:
				case BROKER:
				case BROKER_INSTANCE:
				case BULK_LOGGED:
				case CALLER:
				case CAP_CPU_PERCENT:
				case CAST:
				case CATALOG:
				case CATCH:
				case CHANGE_RETENTION:
				case CHANGE_TRACKING:
				case CHECKSUM:
				case CHECKSUM_AGG:
				case CLEANUP:
				case COLLECTION:
				case COLUMN_MASTER_KEY:
				case COMMITTED:
				case COMPATIBILITY_LEVEL:
				case CONCAT:
				case CONCAT_NULL_YIELDS_NULL:
				case CONTENT:
				case CONTROL:
				case COOKIE:
				case COUNT:
				case COUNT_BIG:
				case COUNTER:
				case CPU:
				case CREATE_NEW:
				case CREATION_DISPOSITION:
				case CREDENTIAL:
				case CRYPTOGRAPHIC:
				case CURSOR_CLOSE_ON_COMMIT:
				case CURSOR_DEFAULT:
				case DATE_CORRELATION_OPTIMIZATION:
				case DATEADD:
				case DATEDIFF:
				case DATENAME:
				case DATEPART:
				case DAYS:
				case DB_CHAINING:
				case DB_FAILOVER:
				case DECRYPTION:
				case DEFAULT_DOUBLE_QUOTE:
				case DEFAULT_FULLTEXT_LANGUAGE:
				case DEFAULT_LANGUAGE:
				case DELAY:
				case DELAYED_DURABILITY:
				case DELETED:
				case DENSE_RANK:
				case DEPENDENTS:
				case DES:
				case DESCRIPTION:
				case DESX:
				case DHCP:
				case DIALOG:
				case DIRECTORY_NAME:
				case DISABLE:
				case DISABLE_BROKER:
				case DISABLED:
				case DISK_DRIVE:
				case DOCUMENT:
				case DYNAMIC:
				case EMERGENCY:
				case EMPTY:
				case ENABLE:
				case ENABLE_BROKER:
				case ENCRYPTED_VALUE:
				case ENCRYPTION:
				case ENDPOINT_URL:
				case ERROR_BROKER_CONVERSATIONS:
				case EXCLUSIVE:
				case EXECUTABLE:
				case EXIST:
				case EXPAND:
				case EXPIRY_DATE:
				case EXPLICIT:
				case FAIL_OPERATION:
				case FAILOVER_MODE:
				case FAILURE:
				case FAILURE_CONDITION_LEVEL:
				case FAST:
				case FAST_FORWARD:
				case FILEGROUP:
				case FILEGROWTH:
				case FILEPATH:
				case FILESTREAM:
				case FILTER:
				case FIRST:
				case FIRST_VALUE:
				case FOLLOWING:
				case FORCE:
				case FORCE_FAILOVER_ALLOW_DATA_LOSS:
				case FORCED:
				case FORMAT:
				case FORWARD_ONLY:
				case FULLSCAN:
				case FULLTEXT:
				case GB:
				case GETDATE:
				case GETUTCDATE:
				case GLOBAL:
				case GO:
				case GROUP_MAX_REQUESTS:
				case GROUPING:
				case GROUPING_ID:
				case HADR:
				case HASH:
				case HEALTH_CHECK_TIMEOUT:
				case HIGH:
				case HONOR_BROKER_PRIORITY:
				case HOURS:
				case IDENTITY_VALUE:
				case IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX:
				case IMMEDIATE:
				case IMPERSONATE:
				case IMPORTANCE:
				case INCREMENTAL:
				case INITIATOR:
				case INPUT:
				case INSENSITIVE:
				case INSERTED:
				case INT:
				case IP:
				case ISOLATION:
				case KB:
				case KEEP:
				case KEEPFIXED:
				case KEY_SOURCE:
				case KEYS:
				case KEYSET:
				case LAG:
				case LAST:
				case LAST_VALUE:
				case LEAD:
				case LEVEL:
				case LIST:
				case LISTENER:
				case LISTENER_URL:
				case LOB_COMPACTION:
				case LOCAL:
				case LOCATION:
				case LOCK:
				case LOCK_ESCALATION:
				case LOGIN:
				case LOOP:
				case LOW:
				case MANUAL:
				case MARK:
				case MATERIALIZED:
				case MAX:
				case MAX_CPU_PERCENT:
				case MAX_DOP:
				case MAX_FILES:
				case MAX_IOPS_PER_VOLUME:
				case MAX_MEMORY_PERCENT:
				case MAX_PROCESSES:
				case MAX_QUEUE_READERS:
				case MAX_ROLLOVER_FILES:
				case MAXDOP:
				case MAXRECURSION:
				case MAXSIZE:
				case MB:
				case MEDIUM:
				case MEMORY_OPTIMIZED_DATA:
				case MESSAGE:
				case MIN:
				case MIN_ACTIVE_ROWVERSION:
				case MIN_CPU_PERCENT:
				case MIN_IOPS_PER_VOLUME:
				case MIN_MEMORY_PERCENT:
				case MINUTES:
				case MIRROR_ADDRESS:
				case MIXED_PAGE_ALLOCATION:
				case MODE:
				case MODIFY:
				case MOVE:
				case MULTI_USER:
				case NAME:
				case NESTED_TRIGGERS:
				case NEW_ACCOUNT:
				case NEW_BROKER:
				case NEW_PASSWORD:
				case NEXT:
				case NO:
				case NO_TRUNCATE:
				case NO_WAIT:
				case NOCOUNT:
				case NODES:
				case NOEXPAND:
				case NON_TRANSACTED_ACCESS:
				case NORECOMPUTE:
				case NORECOVERY:
				case NOWAIT:
				case NTILE:
				case NUMANODE:
				case NUMBER:
				case NUMERIC_ROUNDABORT:
				case OBJECT:
				case OFFLINE:
				case OFFSET:
				case OLD_ACCOUNT:
				case ONLINE:
				case ONLY:
				case OPEN_EXISTING:
				case OPTIMISTIC:
				case OPTIMIZE:
				case OUT:
				case OUTPUT:
				case OWNER:
				case PAGE_VERIFY:
				case PARAMETERIZATION:
				case PARTITION:
				case PARTITIONS:
				case PARTNER:
				case PATH:
				case POISON_MESSAGE_HANDLING:
				case POOL:
				case PORT:
				case PRECEDING:
				case PRIMARY_ROLE:
				case PRIOR:
				case PRIORITY:
				case PRIORITY_LEVEL:
				case PRIVATE:
				case PRIVATE_KEY:
				case PRIVILEGES:
				case PROCEDURE_NAME:
				case PROPERTY:
				case PROVIDER:
				case PROVIDER_KEY_NAME:
				case QUERY:
				case QUEUE:
				case QUEUE_DELAY:
				case QUOTED_IDENTIFIER:
				case RANGE:
				case RANK:
				case RC2:
				case RC4:
				case RC4_128:
				case READ_COMMITTED_SNAPSHOT:
				case READ_ONLY:
				case READ_ONLY_ROUTING_LIST:
				case READ_WRITE:
				case READONLY:
				case REBUILD:
				case RECEIVE:
				case RECOMPILE:
				case RECOVERY:
				case RECURSIVE_TRIGGERS:
				case RELATIVE:
				case REMOTE:
				case REMOTE_SERVICE_NAME:
				case REMOVE:
				case REORGANIZE:
				case REPEATABLE:
				case REPLICA:
				case REQUEST_MAX_CPU_TIME_SEC:
				case REQUEST_MAX_MEMORY_GRANT_PERCENT:
				case REQUEST_MEMORY_GRANT_TIMEOUT_SEC:
				case REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT:
				case RESERVE_DISK_SPACE:
				case RESOURCE:
				case RESOURCE_MANAGER_LOCATION:
				case RESTRICTED_USER:
				case RETENTION:
				case ROBUST:
				case ROOT:
				case ROUTE:
				case ROW:
				case ROW_NUMBER:
				case ROWGUID:
				case ROWS:
				case SAMPLE:
				case SCHEMABINDING:
				case SCOPED:
				case SCROLL:
				case SCROLL_LOCKS:
				case SEARCH:
				case SECONDARY:
				case SECONDARY_ONLY:
				case SECONDARY_ROLE:
				case SECONDS:
				case SECRET:
				case SECURITY_LOG:
				case SEEDING_MODE:
				case SELF:
				case SEMI_SENSITIVE:
				case SEND:
				case SENT:
				case SERIALIZABLE:
				case SESSION_TIMEOUT:
				case SETERROR:
				case SHARE:
				case SHOWPLAN:
				case SIGNATURE:
				case SIMPLE:
				case SINGLE_USER:
				case SIZE:
				case SMALLINT:
				case SNAPSHOT:
				case SPATIAL_WINDOW_MAX_CELLS:
				case STANDBY:
				case START_DATE:
				case STATIC:
				case STATS_STREAM:
				case STATUS:
				case STDEV:
				case STDEVP:
				case STOPLIST:
				case STUFF:
				case SUBJECT:
				case SUM:
				case SUSPEND:
				case SYMMETRIC:
				case SYNCHRONOUS_COMMIT:
				case SYNONYM:
				case TAKE:
				case TARGET_RECOVERY_TIME:
				case TB:
				case TEXTIMAGE_ON:
				case THROW:
				case TIES:
				case TIME:
				case TIMEOUT:
				case TIMER:
				case TINYINT:
				case TORN_PAGE_DETECTION:
				case TRANSFORM_NOISE_WORDS:
				case TRIPLE_DES:
				case TRIPLE_DES_3KEY:
				case TRUSTWORTHY:
				case TRY:
				case TSQL:
				case TWO_DIGIT_YEAR_CUTOFF:
				case TYPE:
				case TYPE_WARNING:
				case UNBOUNDED:
				case UNCOMMITTED:
				case UNKNOWN:
				case UNLIMITED:
				case USING:
				case VALID_XML:
				case VALIDATION:
				case VALUE:
				case VAR:
				case VARP:
				case VIEW_METADATA:
				case VIEWS:
				case WAIT:
				case WELL_FORMED_XML:
				case WORK:
				case WORKLOAD:
				case XML:
				case XMLNAMESPACES:
				case DOUBLE_QUOTE_ID:
				case SQUARE_BRACKET_ID:
				case ID:
					{
					setState(6062);
					id();
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;
			case DOLLAR_ACTION:
				enterOuterAlt(_localctx, 2);
				{
				setState(6065);
				match(DOLLAR_ACTION);
				}
				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 Create_databaseContext extends ParserRuleContext {
		public IdContext database;
		public IdContext collation_name;
		public TerminalNode CREATE() { return getToken(TSqlParser.CREATE, 0); }
		public TerminalNode DATABASE() { return getToken(TSqlParser.DATABASE, 0); }
		public List id() {
			return getRuleContexts(IdContext.class);
		}
		public IdContext id(int i) {
			return getRuleContext(IdContext.class,i);
		}
		public TerminalNode CONTAINMENT() { return getToken(TSqlParser.CONTAINMENT, 0); }
		public TerminalNode EQUAL() { return getToken(TSqlParser.EQUAL, 0); }
		public List ON() { return getTokens(TSqlParser.ON); }
		public TerminalNode ON(int i) {
			return getToken(TSqlParser.ON, i);
		}
		public List database_file_spec() {
			return getRuleContexts(Database_file_specContext.class);
		}
		public Database_file_specContext database_file_spec(int i) {
			return getRuleContext(Database_file_specContext.class,i);
		}
		public TerminalNode LOG() { return getToken(TSqlParser.LOG, 0); }
		public TerminalNode COLLATE() { return getToken(TSqlParser.COLLATE, 0); }
		public TerminalNode WITH() { return getToken(TSqlParser.WITH, 0); }
		public List create_database_option() {
			return getRuleContexts(Create_database_optionContext.class);
		}
		public Create_database_optionContext create_database_option(int i) {
			return getRuleContext(Create_database_optionContext.class,i);
		}
		public TerminalNode NONE() { return getToken(TSqlParser.NONE, 0); }
		public TerminalNode PARTIAL() { return getToken(TSqlParser.PARTIAL, 0); }
		public TerminalNode PRIMARY() { return getToken(TSqlParser.PRIMARY, 0); }
		public List COMMA() { return getTokens(TSqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(TSqlParser.COMMA, i);
		}
		public Create_databaseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_create_database; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterCreate_database(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitCreate_database(this);
		}
	}

	public final Create_databaseContext create_database() throws RecognitionException {
		Create_databaseContext _localctx = new Create_databaseContext(_ctx, getState());
		enterRule(_localctx, 456, RULE_create_database);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6068);
			match(CREATE);
			setState(6069);
			match(DATABASE);
			{
			setState(6070);
			((Create_databaseContext)_localctx).database = id();
			}
			setState(6074);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==CONTAINMENT) {
				{
				setState(6071);
				match(CONTAINMENT);
				setState(6072);
				match(EQUAL);
				setState(6073);
				_la = _input.LA(1);
				if ( !(_la==NONE || _la==PARTIAL) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
			}

			setState(6088);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==ON) {
				{
				setState(6076);
				match(ON);
				setState(6078);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==PRIMARY) {
					{
					setState(6077);
					match(PRIMARY);
					}
				}

				setState(6080);
				database_file_spec();
				setState(6085);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA) {
					{
					{
					setState(6081);
					match(COMMA);
					setState(6082);
					database_file_spec();
					}
					}
					setState(6087);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				}
			}

			setState(6100);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==LOG) {
				{
				setState(6090);
				match(LOG);
				setState(6091);
				match(ON);
				setState(6092);
				database_file_spec();
				setState(6097);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA) {
					{
					{
					setState(6093);
					match(COMMA);
					setState(6094);
					database_file_spec();
					}
					}
					setState(6099);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				}
			}

			setState(6104);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==COLLATE) {
				{
				setState(6102);
				match(COLLATE);
				setState(6103);
				((Create_databaseContext)_localctx).collation_name = id();
				}
			}

			setState(6115);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,790,_ctx) ) {
			case 1:
				{
				setState(6106);
				match(WITH);
				setState(6107);
				create_database_option();
				setState(6112);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA) {
					{
					{
					setState(6108);
					match(COMMA);
					setState(6109);
					create_database_option();
					}
					}
					setState(6114);
					_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 Create_indexContext extends ParserRuleContext {
		public Search_conditionContext where;
		public TerminalNode CREATE() { return getToken(TSqlParser.CREATE, 0); }
		public TerminalNode INDEX() { return getToken(TSqlParser.INDEX, 0); }
		public List id() {
			return getRuleContexts(IdContext.class);
		}
		public IdContext id(int i) {
			return getRuleContext(IdContext.class,i);
		}
		public List ON() { return getTokens(TSqlParser.ON); }
		public TerminalNode ON(int i) {
			return getToken(TSqlParser.ON, i);
		}
		public Table_name_with_hintContext table_name_with_hint() {
			return getRuleContext(Table_name_with_hintContext.class,0);
		}
		public List LR_BRACKET() { return getTokens(TSqlParser.LR_BRACKET); }
		public TerminalNode LR_BRACKET(int i) {
			return getToken(TSqlParser.LR_BRACKET, i);
		}
		public Column_name_list_with_orderContext column_name_list_with_order() {
			return getRuleContext(Column_name_list_with_orderContext.class,0);
		}
		public List RR_BRACKET() { return getTokens(TSqlParser.RR_BRACKET); }
		public TerminalNode RR_BRACKET(int i) {
			return getToken(TSqlParser.RR_BRACKET, i);
		}
		public TerminalNode UNIQUE() { return getToken(TSqlParser.UNIQUE, 0); }
		public ClusteredContext clustered() {
			return getRuleContext(ClusteredContext.class,0);
		}
		public TerminalNode INCLUDE() { return getToken(TSqlParser.INCLUDE, 0); }
		public Column_name_listContext column_name_list() {
			return getRuleContext(Column_name_listContext.class,0);
		}
		public TerminalNode WHERE() { return getToken(TSqlParser.WHERE, 0); }
		public Index_optionsContext index_options() {
			return getRuleContext(Index_optionsContext.class,0);
		}
		public TerminalNode SEMI() { return getToken(TSqlParser.SEMI, 0); }
		public Search_conditionContext search_condition() {
			return getRuleContext(Search_conditionContext.class,0);
		}
		public Create_indexContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_create_index; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterCreate_index(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitCreate_index(this);
		}
	}

	public final Create_indexContext create_index() throws RecognitionException {
		Create_indexContext _localctx = new Create_indexContext(_ctx, getState());
		enterRule(_localctx, 458, RULE_create_index);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6117);
			match(CREATE);
			setState(6119);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==UNIQUE) {
				{
				setState(6118);
				match(UNIQUE);
				}
			}

			setState(6122);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==CLUSTERED || _la==NONCLUSTERED) {
				{
				setState(6121);
				clustered();
				}
			}

			setState(6124);
			match(INDEX);
			setState(6125);
			id();
			setState(6126);
			match(ON);
			setState(6127);
			table_name_with_hint();
			setState(6128);
			match(LR_BRACKET);
			setState(6129);
			column_name_list_with_order();
			setState(6130);
			match(RR_BRACKET);
			setState(6136);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==INCLUDE) {
				{
				setState(6131);
				match(INCLUDE);
				setState(6132);
				match(LR_BRACKET);
				setState(6133);
				column_name_list();
				setState(6134);
				match(RR_BRACKET);
				}
			}

			setState(6140);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==WHERE) {
				{
				setState(6138);
				match(WHERE);
				setState(6139);
				((Create_indexContext)_localctx).where = search_condition();
				}
			}

			setState(6143);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,795,_ctx) ) {
			case 1:
				{
				setState(6142);
				index_options();
				}
				break;
			}
			setState(6147);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==ON) {
				{
				setState(6145);
				match(ON);
				setState(6146);
				id();
				}
			}

			setState(6150);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,797,_ctx) ) {
			case 1:
				{
				setState(6149);
				match(SEMI);
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Create_or_alter_procedureContext extends ParserRuleContext {
		public Token proc;
		public Func_proc_name_schemaContext func_proc_name_schema() {
			return getRuleContext(Func_proc_name_schemaContext.class,0);
		}
		public TerminalNode AS() { return getToken(TSqlParser.AS, 0); }
		public Sql_clausesContext sql_clauses() {
			return getRuleContext(Sql_clausesContext.class,0);
		}
		public TerminalNode ALTER() { return getToken(TSqlParser.ALTER, 0); }
		public TerminalNode PROC() { return getToken(TSqlParser.PROC, 0); }
		public TerminalNode PROCEDURE() { return getToken(TSqlParser.PROCEDURE, 0); }
		public TerminalNode SEMI() { return getToken(TSqlParser.SEMI, 0); }
		public TerminalNode DECIMAL() { return getToken(TSqlParser.DECIMAL, 0); }
		public List procedure_param() {
			return getRuleContexts(Procedure_paramContext.class);
		}
		public Procedure_paramContext procedure_param(int i) {
			return getRuleContext(Procedure_paramContext.class,i);
		}
		public TerminalNode WITH() { return getToken(TSqlParser.WITH, 0); }
		public List procedure_option() {
			return getRuleContexts(Procedure_optionContext.class);
		}
		public Procedure_optionContext procedure_option(int i) {
			return getRuleContext(Procedure_optionContext.class,i);
		}
		public TerminalNode FOR() { return getToken(TSqlParser.FOR, 0); }
		public TerminalNode REPLICATION() { return getToken(TSqlParser.REPLICATION, 0); }
		public TerminalNode CREATE() { return getToken(TSqlParser.CREATE, 0); }
		public TerminalNode LR_BRACKET() { return getToken(TSqlParser.LR_BRACKET, 0); }
		public List COMMA() { return getTokens(TSqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(TSqlParser.COMMA, i);
		}
		public TerminalNode RR_BRACKET() { return getToken(TSqlParser.RR_BRACKET, 0); }
		public TerminalNode OR() { return getToken(TSqlParser.OR, 0); }
		public Create_or_alter_procedureContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_create_or_alter_procedure; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterCreate_or_alter_procedure(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitCreate_or_alter_procedure(this);
		}
	}

	public final Create_or_alter_procedureContext create_or_alter_procedure() throws RecognitionException {
		Create_or_alter_procedureContext _localctx = new Create_or_alter_procedureContext(_ctx, getState());
		enterRule(_localctx, 460, RULE_create_or_alter_procedure);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6158);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case CREATE:
				{
				{
				setState(6152);
				match(CREATE);
				setState(6155);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==OR) {
					{
					setState(6153);
					match(OR);
					setState(6154);
					match(ALTER);
					}
				}

				}
				}
				break;
			case ALTER:
				{
				setState(6157);
				match(ALTER);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			setState(6160);
			((Create_or_alter_procedureContext)_localctx).proc = _input.LT(1);
			_la = _input.LA(1);
			if ( !(_la==PROC || _la==PROCEDURE) ) {
				((Create_or_alter_procedureContext)_localctx).proc = (Token)_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			setState(6161);
			func_proc_name_schema();
			setState(6164);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==SEMI) {
				{
				setState(6162);
				match(SEMI);
				setState(6163);
				match(DECIMAL);
				}
			}

			setState(6180);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==LOCAL_ID || _la==LR_BRACKET) {
				{
				setState(6167);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==LR_BRACKET) {
					{
					setState(6166);
					match(LR_BRACKET);
					}
				}

				setState(6169);
				procedure_param();
				setState(6174);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA) {
					{
					{
					setState(6170);
					match(COMMA);
					setState(6171);
					procedure_param();
					}
					}
					setState(6176);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				setState(6178);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==RR_BRACKET) {
					{
					setState(6177);
					match(RR_BRACKET);
					}
				}

				}
			}

			setState(6191);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==WITH) {
				{
				setState(6182);
				match(WITH);
				setState(6183);
				procedure_option();
				setState(6188);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA) {
					{
					{
					setState(6184);
					match(COMMA);
					setState(6185);
					procedure_option();
					}
					}
					setState(6190);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				}
			}

			setState(6195);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==FOR) {
				{
				setState(6193);
				match(FOR);
				setState(6194);
				match(REPLICATION);
				}
			}

			setState(6197);
			match(AS);
			setState(6198);
			sql_clauses();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Create_or_alter_triggerContext extends ParserRuleContext {
		public Create_or_alter_dml_triggerContext create_or_alter_dml_trigger() {
			return getRuleContext(Create_or_alter_dml_triggerContext.class,0);
		}
		public Create_or_alter_ddl_triggerContext create_or_alter_ddl_trigger() {
			return getRuleContext(Create_or_alter_ddl_triggerContext.class,0);
		}
		public Create_or_alter_triggerContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_create_or_alter_trigger; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterCreate_or_alter_trigger(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitCreate_or_alter_trigger(this);
		}
	}

	public final Create_or_alter_triggerContext create_or_alter_trigger() throws RecognitionException {
		Create_or_alter_triggerContext _localctx = new Create_or_alter_triggerContext(_ctx, getState());
		enterRule(_localctx, 462, RULE_create_or_alter_trigger);
		try {
			setState(6202);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,808,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(6200);
				create_or_alter_dml_trigger();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(6201);
				create_or_alter_ddl_trigger();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Create_or_alter_dml_triggerContext extends ParserRuleContext {
		public TerminalNode TRIGGER() { return getToken(TSqlParser.TRIGGER, 0); }
		public Simple_nameContext simple_name() {
			return getRuleContext(Simple_nameContext.class,0);
		}
		public TerminalNode ON() { return getToken(TSqlParser.ON, 0); }
		public Table_nameContext table_name() {
			return getRuleContext(Table_nameContext.class,0);
		}
		public List dml_trigger_operation() {
			return getRuleContexts(Dml_trigger_operationContext.class);
		}
		public Dml_trigger_operationContext dml_trigger_operation(int i) {
			return getRuleContext(Dml_trigger_operationContext.class,i);
		}
		public TerminalNode AS() { return getToken(TSqlParser.AS, 0); }
		public Sql_clausesContext sql_clauses() {
			return getRuleContext(Sql_clausesContext.class,0);
		}
		public TerminalNode ALTER() { return getToken(TSqlParser.ALTER, 0); }
		public List FOR() { return getTokens(TSqlParser.FOR); }
		public TerminalNode FOR(int i) {
			return getToken(TSqlParser.FOR, i);
		}
		public TerminalNode AFTER() { return getToken(TSqlParser.AFTER, 0); }
		public TerminalNode INSTEAD() { return getToken(TSqlParser.INSTEAD, 0); }
		public TerminalNode OF() { return getToken(TSqlParser.OF, 0); }
		public List WITH() { return getTokens(TSqlParser.WITH); }
		public TerminalNode WITH(int i) {
			return getToken(TSqlParser.WITH, i);
		}
		public List dml_trigger_option() {
			return getRuleContexts(Dml_trigger_optionContext.class);
		}
		public Dml_trigger_optionContext dml_trigger_option(int i) {
			return getRuleContext(Dml_trigger_optionContext.class,i);
		}
		public List COMMA() { return getTokens(TSqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(TSqlParser.COMMA, i);
		}
		public TerminalNode APPEND() { return getToken(TSqlParser.APPEND, 0); }
		public TerminalNode NOT() { return getToken(TSqlParser.NOT, 0); }
		public TerminalNode REPLICATION() { return getToken(TSqlParser.REPLICATION, 0); }
		public TerminalNode CREATE() { return getToken(TSqlParser.CREATE, 0); }
		public TerminalNode OR() { return getToken(TSqlParser.OR, 0); }
		public Create_or_alter_dml_triggerContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_create_or_alter_dml_trigger; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterCreate_or_alter_dml_trigger(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitCreate_or_alter_dml_trigger(this);
		}
	}

	public final Create_or_alter_dml_triggerContext create_or_alter_dml_trigger() throws RecognitionException {
		Create_or_alter_dml_triggerContext _localctx = new Create_or_alter_dml_triggerContext(_ctx, getState());
		enterRule(_localctx, 464, RULE_create_or_alter_dml_trigger);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6210);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case CREATE:
				{
				{
				setState(6204);
				match(CREATE);
				setState(6207);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==OR) {
					{
					setState(6205);
					match(OR);
					setState(6206);
					match(ALTER);
					}
				}

				}
				}
				break;
			case ALTER:
				{
				setState(6209);
				match(ALTER);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			setState(6212);
			match(TRIGGER);
			setState(6213);
			simple_name();
			setState(6214);
			match(ON);
			setState(6215);
			table_name();
			setState(6225);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==WITH) {
				{
				setState(6216);
				match(WITH);
				setState(6217);
				dml_trigger_option();
				setState(6222);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA) {
					{
					{
					setState(6218);
					match(COMMA);
					setState(6219);
					dml_trigger_option();
					}
					}
					setState(6224);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				}
			}

			setState(6231);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case FOR:
				{
				setState(6227);
				match(FOR);
				}
				break;
			case AFTER:
				{
				setState(6228);
				match(AFTER);
				}
				break;
			case INSTEAD:
				{
				setState(6229);
				match(INSTEAD);
				setState(6230);
				match(OF);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			setState(6233);
			dml_trigger_operation();
			setState(6238);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA) {
				{
				{
				setState(6234);
				match(COMMA);
				setState(6235);
				dml_trigger_operation();
				}
				}
				setState(6240);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			setState(6243);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==WITH) {
				{
				setState(6241);
				match(WITH);
				setState(6242);
				match(APPEND);
				}
			}

			setState(6248);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==NOT) {
				{
				setState(6245);
				match(NOT);
				setState(6246);
				match(FOR);
				setState(6247);
				match(REPLICATION);
				}
			}

			setState(6250);
			match(AS);
			setState(6251);
			sql_clauses();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Dml_trigger_optionContext extends ParserRuleContext {
		public TerminalNode ENCRYPTION() { return getToken(TSqlParser.ENCRYPTION, 0); }
		public Execute_clauseContext execute_clause() {
			return getRuleContext(Execute_clauseContext.class,0);
		}
		public Dml_trigger_optionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_dml_trigger_option; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterDml_trigger_option(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitDml_trigger_option(this);
		}
	}

	public final Dml_trigger_optionContext dml_trigger_option() throws RecognitionException {
		Dml_trigger_optionContext _localctx = new Dml_trigger_optionContext(_ctx, getState());
		enterRule(_localctx, 466, RULE_dml_trigger_option);
		try {
			setState(6255);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case ENCRYPTION:
				enterOuterAlt(_localctx, 1);
				{
				setState(6253);
				match(ENCRYPTION);
				}
				break;
			case EXECUTE:
				enterOuterAlt(_localctx, 2);
				{
				setState(6254);
				execute_clause();
				}
				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 Dml_trigger_operationContext extends ParserRuleContext {
		public TerminalNode INSERT() { return getToken(TSqlParser.INSERT, 0); }
		public TerminalNode UPDATE() { return getToken(TSqlParser.UPDATE, 0); }
		public TerminalNode DELETE() { return getToken(TSqlParser.DELETE, 0); }
		public Dml_trigger_operationContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_dml_trigger_operation; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterDml_trigger_operation(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitDml_trigger_operation(this);
		}
	}

	public final Dml_trigger_operationContext dml_trigger_operation() throws RecognitionException {
		Dml_trigger_operationContext _localctx = new Dml_trigger_operationContext(_ctx, getState());
		enterRule(_localctx, 468, RULE_dml_trigger_operation);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6257);
			_la = _input.LA(1);
			if ( !(_la==DELETE || _la==INSERT || _la==UPDATE) ) {
			_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 Create_or_alter_ddl_triggerContext extends ParserRuleContext {
		public TerminalNode TRIGGER() { return getToken(TSqlParser.TRIGGER, 0); }
		public Simple_idContext simple_id() {
			return getRuleContext(Simple_idContext.class,0);
		}
		public TerminalNode ON() { return getToken(TSqlParser.ON, 0); }
		public Ddl_trigger_operationContext ddl_trigger_operation() {
			return getRuleContext(Ddl_trigger_operationContext.class,0);
		}
		public TerminalNode AS() { return getToken(TSqlParser.AS, 0); }
		public Sql_clausesContext sql_clauses() {
			return getRuleContext(Sql_clausesContext.class,0);
		}
		public TerminalNode FOR() { return getToken(TSqlParser.FOR, 0); }
		public TerminalNode AFTER() { return getToken(TSqlParser.AFTER, 0); }
		public TerminalNode ALTER() { return getToken(TSqlParser.ALTER, 0); }
		public TerminalNode ALL() { return getToken(TSqlParser.ALL, 0); }
		public TerminalNode SERVER() { return getToken(TSqlParser.SERVER, 0); }
		public TerminalNode DATABASE() { return getToken(TSqlParser.DATABASE, 0); }
		public TerminalNode WITH() { return getToken(TSqlParser.WITH, 0); }
		public List dml_trigger_option() {
			return getRuleContexts(Dml_trigger_optionContext.class);
		}
		public Dml_trigger_optionContext dml_trigger_option(int i) {
			return getRuleContext(Dml_trigger_optionContext.class,i);
		}
		public List COMMA() { return getTokens(TSqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(TSqlParser.COMMA, i);
		}
		public List dml_trigger_operation() {
			return getRuleContexts(Dml_trigger_operationContext.class);
		}
		public Dml_trigger_operationContext dml_trigger_operation(int i) {
			return getRuleContext(Dml_trigger_operationContext.class,i);
		}
		public TerminalNode CREATE() { return getToken(TSqlParser.CREATE, 0); }
		public TerminalNode OR() { return getToken(TSqlParser.OR, 0); }
		public Create_or_alter_ddl_triggerContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_create_or_alter_ddl_trigger; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterCreate_or_alter_ddl_trigger(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitCreate_or_alter_ddl_trigger(this);
		}
	}

	public final Create_or_alter_ddl_triggerContext create_or_alter_ddl_trigger() throws RecognitionException {
		Create_or_alter_ddl_triggerContext _localctx = new Create_or_alter_ddl_triggerContext(_ctx, getState());
		enterRule(_localctx, 470, RULE_create_or_alter_ddl_trigger);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6265);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case CREATE:
				{
				{
				setState(6259);
				match(CREATE);
				setState(6262);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==OR) {
					{
					setState(6260);
					match(OR);
					setState(6261);
					match(ALTER);
					}
				}

				}
				}
				break;
			case ALTER:
				{
				setState(6264);
				match(ALTER);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			setState(6267);
			match(TRIGGER);
			setState(6268);
			simple_id();
			setState(6269);
			match(ON);
			setState(6273);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case ALL:
				{
				setState(6270);
				match(ALL);
				setState(6271);
				match(SERVER);
				}
				break;
			case DATABASE:
				{
				setState(6272);
				match(DATABASE);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			setState(6284);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==WITH) {
				{
				setState(6275);
				match(WITH);
				setState(6276);
				dml_trigger_option();
				setState(6281);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA) {
					{
					{
					setState(6277);
					match(COMMA);
					setState(6278);
					dml_trigger_option();
					}
					}
					setState(6283);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				}
			}

			setState(6286);
			_la = _input.LA(1);
			if ( !(_la==FOR || _la==AFTER) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			setState(6287);
			ddl_trigger_operation();
			setState(6292);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA) {
				{
				{
				setState(6288);
				match(COMMA);
				setState(6289);
				dml_trigger_operation();
				}
				}
				setState(6294);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			setState(6295);
			match(AS);
			setState(6296);
			sql_clauses();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Ddl_trigger_operationContext extends ParserRuleContext {
		public Simple_idContext simple_id() {
			return getRuleContext(Simple_idContext.class,0);
		}
		public Ddl_trigger_operationContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_ddl_trigger_operation; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterDdl_trigger_operation(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitDdl_trigger_operation(this);
		}
	}

	public final Ddl_trigger_operationContext ddl_trigger_operation() throws RecognitionException {
		Ddl_trigger_operationContext _localctx = new Ddl_trigger_operationContext(_ctx, getState());
		enterRule(_localctx, 472, RULE_ddl_trigger_operation);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6298);
			simple_id();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Create_or_alter_functionContext extends ParserRuleContext {
		public TerminalNode FUNCTION() { return getToken(TSqlParser.FUNCTION, 0); }
		public Func_proc_name_schemaContext func_proc_name_schema() {
			return getRuleContext(Func_proc_name_schemaContext.class,0);
		}
		public TerminalNode ALTER() { return getToken(TSqlParser.ALTER, 0); }
		public TerminalNode LR_BRACKET() { return getToken(TSqlParser.LR_BRACKET, 0); }
		public TerminalNode RR_BRACKET() { return getToken(TSqlParser.RR_BRACKET, 0); }
		public Func_body_returns_selectContext func_body_returns_select() {
			return getRuleContext(Func_body_returns_selectContext.class,0);
		}
		public Func_body_returns_tableContext func_body_returns_table() {
			return getRuleContext(Func_body_returns_tableContext.class,0);
		}
		public Func_body_returns_scalarContext func_body_returns_scalar() {
			return getRuleContext(Func_body_returns_scalarContext.class,0);
		}
		public TerminalNode SEMI() { return getToken(TSqlParser.SEMI, 0); }
		public TerminalNode CREATE() { return getToken(TSqlParser.CREATE, 0); }
		public List procedure_param() {
			return getRuleContexts(Procedure_paramContext.class);
		}
		public Procedure_paramContext procedure_param(int i) {
			return getRuleContext(Procedure_paramContext.class,i);
		}
		public TerminalNode OR() { return getToken(TSqlParser.OR, 0); }
		public List COMMA() { return getTokens(TSqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(TSqlParser.COMMA, i);
		}
		public Create_or_alter_functionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_create_or_alter_function; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterCreate_or_alter_function(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitCreate_or_alter_function(this);
		}
	}

	public final Create_or_alter_functionContext create_or_alter_function() throws RecognitionException {
		Create_or_alter_functionContext _localctx = new Create_or_alter_functionContext(_ctx, getState());
		enterRule(_localctx, 474, RULE_create_or_alter_function);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6306);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case CREATE:
				{
				{
				setState(6300);
				match(CREATE);
				setState(6303);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==OR) {
					{
					setState(6301);
					match(OR);
					setState(6302);
					match(ALTER);
					}
				}

				}
				}
				break;
			case ALTER:
				{
				setState(6305);
				match(ALTER);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			setState(6308);
			match(FUNCTION);
			setState(6309);
			func_proc_name_schema();
			setState(6323);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,827,_ctx) ) {
			case 1:
				{
				{
				setState(6310);
				match(LR_BRACKET);
				setState(6311);
				procedure_param();
				setState(6316);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA) {
					{
					{
					setState(6312);
					match(COMMA);
					setState(6313);
					procedure_param();
					}
					}
					setState(6318);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				setState(6319);
				match(RR_BRACKET);
				}
				}
				break;
			case 2:
				{
				setState(6321);
				match(LR_BRACKET);
				setState(6322);
				match(RR_BRACKET);
				}
				break;
			}
			setState(6328);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,828,_ctx) ) {
			case 1:
				{
				setState(6325);
				func_body_returns_select();
				}
				break;
			case 2:
				{
				setState(6326);
				func_body_returns_table();
				}
				break;
			case 3:
				{
				setState(6327);
				func_body_returns_scalar();
				}
				break;
			}
			setState(6331);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,829,_ctx) ) {
			case 1:
				{
				setState(6330);
				match(SEMI);
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Func_body_returns_selectContext extends ParserRuleContext {
		public TerminalNode RETURNS() { return getToken(TSqlParser.RETURNS, 0); }
		public TerminalNode TABLE() { return getToken(TSqlParser.TABLE, 0); }
		public TerminalNode RETURN() { return getToken(TSqlParser.RETURN, 0); }
		public TerminalNode LR_BRACKET() { return getToken(TSqlParser.LR_BRACKET, 0); }
		public Select_statementContext select_statement() {
			return getRuleContext(Select_statementContext.class,0);
		}
		public TerminalNode RR_BRACKET() { return getToken(TSqlParser.RR_BRACKET, 0); }
		public TerminalNode WITH() { return getToken(TSqlParser.WITH, 0); }
		public List function_option() {
			return getRuleContexts(Function_optionContext.class);
		}
		public Function_optionContext function_option(int i) {
			return getRuleContext(Function_optionContext.class,i);
		}
		public TerminalNode AS() { return getToken(TSqlParser.AS, 0); }
		public List COMMA() { return getTokens(TSqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(TSqlParser.COMMA, i);
		}
		public Func_body_returns_selectContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_func_body_returns_select; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterFunc_body_returns_select(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitFunc_body_returns_select(this);
		}
	}

	public final Func_body_returns_selectContext func_body_returns_select() throws RecognitionException {
		Func_body_returns_selectContext _localctx = new Func_body_returns_selectContext(_ctx, getState());
		enterRule(_localctx, 476, RULE_func_body_returns_select);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6333);
			match(RETURNS);
			setState(6334);
			match(TABLE);
			setState(6344);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==WITH) {
				{
				setState(6335);
				match(WITH);
				setState(6336);
				function_option();
				setState(6341);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA) {
					{
					{
					setState(6337);
					match(COMMA);
					setState(6338);
					function_option();
					}
					}
					setState(6343);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				}
			}

			setState(6347);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==AS) {
				{
				setState(6346);
				match(AS);
				}
			}

			setState(6349);
			match(RETURN);
			setState(6355);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,833,_ctx) ) {
			case 1:
				{
				setState(6350);
				match(LR_BRACKET);
				setState(6351);
				select_statement();
				setState(6352);
				match(RR_BRACKET);
				}
				break;
			case 2:
				{
				setState(6354);
				select_statement();
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Func_body_returns_tableContext extends ParserRuleContext {
		public TerminalNode RETURNS() { return getToken(TSqlParser.RETURNS, 0); }
		public TerminalNode LOCAL_ID() { return getToken(TSqlParser.LOCAL_ID, 0); }
		public Table_type_definitionContext table_type_definition() {
			return getRuleContext(Table_type_definitionContext.class,0);
		}
		public TerminalNode BEGIN() { return getToken(TSqlParser.BEGIN, 0); }
		public TerminalNode RETURN() { return getToken(TSqlParser.RETURN, 0); }
		public TerminalNode END() { return getToken(TSqlParser.END, 0); }
		public TerminalNode WITH() { return getToken(TSqlParser.WITH, 0); }
		public List function_option() {
			return getRuleContexts(Function_optionContext.class);
		}
		public Function_optionContext function_option(int i) {
			return getRuleContext(Function_optionContext.class,i);
		}
		public TerminalNode AS() { return getToken(TSqlParser.AS, 0); }
		public List sql_clause() {
			return getRuleContexts(Sql_clauseContext.class);
		}
		public Sql_clauseContext sql_clause(int i) {
			return getRuleContext(Sql_clauseContext.class,i);
		}
		public List SEMI() { return getTokens(TSqlParser.SEMI); }
		public TerminalNode SEMI(int i) {
			return getToken(TSqlParser.SEMI, i);
		}
		public List COMMA() { return getTokens(TSqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(TSqlParser.COMMA, i);
		}
		public Func_body_returns_tableContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_func_body_returns_table; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterFunc_body_returns_table(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitFunc_body_returns_table(this);
		}
	}

	public final Func_body_returns_tableContext func_body_returns_table() throws RecognitionException {
		Func_body_returns_tableContext _localctx = new Func_body_returns_tableContext(_ctx, getState());
		enterRule(_localctx, 478, RULE_func_body_returns_table);
		int _la;
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			setState(6357);
			match(RETURNS);
			setState(6358);
			match(LOCAL_ID);
			setState(6359);
			table_type_definition();
			setState(6369);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==WITH) {
				{
				setState(6360);
				match(WITH);
				setState(6361);
				function_option();
				setState(6366);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA) {
					{
					{
					setState(6362);
					match(COMMA);
					setState(6363);
					function_option();
					}
					}
					setState(6368);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				}
			}

			setState(6372);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==AS) {
				{
				setState(6371);
				match(AS);
				}
			}

			setState(6374);
			match(BEGIN);
			setState(6378);
			_errHandler.sync(this);
			_alt = getInterpreter().adaptivePredict(_input,837,_ctx);
			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
				if ( _alt==1 ) {
					{
					{
					setState(6375);
					sql_clause();
					}
					} 
				}
				setState(6380);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,837,_ctx);
			}
			setState(6381);
			match(RETURN);
			setState(6383);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==SEMI) {
				{
				setState(6382);
				match(SEMI);
				}
			}

			setState(6385);
			match(END);
			setState(6387);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,839,_ctx) ) {
			case 1:
				{
				setState(6386);
				match(SEMI);
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Func_body_returns_scalarContext extends ParserRuleContext {
		public ExpressionContext ret;
		public TerminalNode RETURNS() { return getToken(TSqlParser.RETURNS, 0); }
		public Data_typeContext data_type() {
			return getRuleContext(Data_typeContext.class,0);
		}
		public TerminalNode BEGIN() { return getToken(TSqlParser.BEGIN, 0); }
		public TerminalNode RETURN() { return getToken(TSqlParser.RETURN, 0); }
		public TerminalNode END() { return getToken(TSqlParser.END, 0); }
		public ExpressionContext expression() {
			return getRuleContext(ExpressionContext.class,0);
		}
		public TerminalNode WITH() { return getToken(TSqlParser.WITH, 0); }
		public List function_option() {
			return getRuleContexts(Function_optionContext.class);
		}
		public Function_optionContext function_option(int i) {
			return getRuleContext(Function_optionContext.class,i);
		}
		public TerminalNode AS() { return getToken(TSqlParser.AS, 0); }
		public List sql_clause() {
			return getRuleContexts(Sql_clauseContext.class);
		}
		public Sql_clauseContext sql_clause(int i) {
			return getRuleContext(Sql_clauseContext.class,i);
		}
		public TerminalNode SEMI() { return getToken(TSqlParser.SEMI, 0); }
		public List COMMA() { return getTokens(TSqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(TSqlParser.COMMA, i);
		}
		public Func_body_returns_scalarContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_func_body_returns_scalar; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterFunc_body_returns_scalar(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitFunc_body_returns_scalar(this);
		}
	}

	public final Func_body_returns_scalarContext func_body_returns_scalar() throws RecognitionException {
		Func_body_returns_scalarContext _localctx = new Func_body_returns_scalarContext(_ctx, getState());
		enterRule(_localctx, 480, RULE_func_body_returns_scalar);
		int _la;
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			setState(6389);
			match(RETURNS);
			setState(6390);
			data_type();
			setState(6400);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==WITH) {
				{
				setState(6391);
				match(WITH);
				setState(6392);
				function_option();
				setState(6397);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA) {
					{
					{
					setState(6393);
					match(COMMA);
					setState(6394);
					function_option();
					}
					}
					setState(6399);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				}
			}

			setState(6403);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==AS) {
				{
				setState(6402);
				match(AS);
				}
			}

			setState(6405);
			match(BEGIN);
			setState(6409);
			_errHandler.sync(this);
			_alt = getInterpreter().adaptivePredict(_input,843,_ctx);
			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
				if ( _alt==1 ) {
					{
					{
					setState(6406);
					sql_clause();
					}
					} 
				}
				setState(6411);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,843,_ctx);
			}
			setState(6412);
			match(RETURN);
			setState(6413);
			((Func_body_returns_scalarContext)_localctx).ret = expression(0);
			setState(6415);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==SEMI) {
				{
				setState(6414);
				match(SEMI);
				}
			}

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

	public static class Procedure_paramContext extends ParserRuleContext {
		public Default_valueContext default_val;
		public TerminalNode LOCAL_ID() { return getToken(TSqlParser.LOCAL_ID, 0); }
		public Data_typeContext data_type() {
			return getRuleContext(Data_typeContext.class,0);
		}
		public IdContext id() {
			return getRuleContext(IdContext.class,0);
		}
		public TerminalNode DOT() { return getToken(TSqlParser.DOT, 0); }
		public TerminalNode AS() { return getToken(TSqlParser.AS, 0); }
		public TerminalNode VARYING() { return getToken(TSqlParser.VARYING, 0); }
		public TerminalNode EQUAL() { return getToken(TSqlParser.EQUAL, 0); }
		public Default_valueContext default_value() {
			return getRuleContext(Default_valueContext.class,0);
		}
		public TerminalNode OUT() { return getToken(TSqlParser.OUT, 0); }
		public TerminalNode OUTPUT() { return getToken(TSqlParser.OUTPUT, 0); }
		public TerminalNode READONLY() { return getToken(TSqlParser.READONLY, 0); }
		public Procedure_paramContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_procedure_param; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterProcedure_param(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitProcedure_param(this);
		}
	}

	public final Procedure_paramContext procedure_param() throws RecognitionException {
		Procedure_paramContext _localctx = new Procedure_paramContext(_ctx, getState());
		enterRule(_localctx, 482, RULE_procedure_param);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6419);
			match(LOCAL_ID);
			setState(6423);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,845,_ctx) ) {
			case 1:
				{
				setState(6420);
				id();
				setState(6421);
				match(DOT);
				}
				break;
			}
			setState(6426);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==AS) {
				{
				setState(6425);
				match(AS);
				}
			}

			setState(6428);
			data_type();
			setState(6430);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==VARYING) {
				{
				setState(6429);
				match(VARYING);
				}
			}

			setState(6434);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==EQUAL) {
				{
				setState(6432);
				match(EQUAL);
				setState(6433);
				((Procedure_paramContext)_localctx).default_val = default_value();
				}
			}

			setState(6437);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (((((_la - 634)) & ~0x3f) == 0 && ((1L << (_la - 634)) & ((1L << (OUT - 634)) | (1L << (OUTPUT - 634)) | (1L << (READONLY - 634)))) != 0)) {
				{
				setState(6436);
				_la = _input.LA(1);
				if ( !(((((_la - 634)) & ~0x3f) == 0 && ((1L << (_la - 634)) & ((1L << (OUT - 634)) | (1L << (OUTPUT - 634)) | (1L << (READONLY - 634)))) != 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 Procedure_optionContext extends ParserRuleContext {
		public TerminalNode ENCRYPTION() { return getToken(TSqlParser.ENCRYPTION, 0); }
		public TerminalNode RECOMPILE() { return getToken(TSqlParser.RECOMPILE, 0); }
		public Execute_clauseContext execute_clause() {
			return getRuleContext(Execute_clauseContext.class,0);
		}
		public Procedure_optionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_procedure_option; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterProcedure_option(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitProcedure_option(this);
		}
	}

	public final Procedure_optionContext procedure_option() throws RecognitionException {
		Procedure_optionContext _localctx = new Procedure_optionContext(_ctx, getState());
		enterRule(_localctx, 484, RULE_procedure_option);
		try {
			setState(6442);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case ENCRYPTION:
				enterOuterAlt(_localctx, 1);
				{
				setState(6439);
				match(ENCRYPTION);
				}
				break;
			case RECOMPILE:
				enterOuterAlt(_localctx, 2);
				{
				setState(6440);
				match(RECOMPILE);
				}
				break;
			case EXECUTE:
				enterOuterAlt(_localctx, 3);
				{
				setState(6441);
				execute_clause();
				}
				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 Function_optionContext extends ParserRuleContext {
		public TerminalNode ENCRYPTION() { return getToken(TSqlParser.ENCRYPTION, 0); }
		public TerminalNode SCHEMABINDING() { return getToken(TSqlParser.SCHEMABINDING, 0); }
		public TerminalNode RETURNS() { return getToken(TSqlParser.RETURNS, 0); }
		public List NULL() { return getTokens(TSqlParser.NULL); }
		public TerminalNode NULL(int i) {
			return getToken(TSqlParser.NULL, i);
		}
		public TerminalNode ON() { return getToken(TSqlParser.ON, 0); }
		public TerminalNode INPUT() { return getToken(TSqlParser.INPUT, 0); }
		public TerminalNode CALLED() { return getToken(TSqlParser.CALLED, 0); }
		public Execute_clauseContext execute_clause() {
			return getRuleContext(Execute_clauseContext.class,0);
		}
		public Function_optionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_function_option; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterFunction_option(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitFunction_option(this);
		}
	}

	public final Function_optionContext function_option() throws RecognitionException {
		Function_optionContext _localctx = new Function_optionContext(_ctx, getState());
		enterRule(_localctx, 486, RULE_function_option);
		try {
			setState(6456);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case ENCRYPTION:
				enterOuterAlt(_localctx, 1);
				{
				setState(6444);
				match(ENCRYPTION);
				}
				break;
			case SCHEMABINDING:
				enterOuterAlt(_localctx, 2);
				{
				setState(6445);
				match(SCHEMABINDING);
				}
				break;
			case RETURNS:
				enterOuterAlt(_localctx, 3);
				{
				setState(6446);
				match(RETURNS);
				setState(6447);
				match(NULL);
				setState(6448);
				match(ON);
				setState(6449);
				match(NULL);
				setState(6450);
				match(INPUT);
				}
				break;
			case CALLED:
				enterOuterAlt(_localctx, 4);
				{
				setState(6451);
				match(CALLED);
				setState(6452);
				match(ON);
				setState(6453);
				match(NULL);
				setState(6454);
				match(INPUT);
				}
				break;
			case EXECUTE:
				enterOuterAlt(_localctx, 5);
				{
				setState(6455);
				execute_clause();
				}
				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 Create_statisticsContext extends ParserRuleContext {
		public TerminalNode CREATE() { return getToken(TSqlParser.CREATE, 0); }
		public TerminalNode STATISTICS() { return getToken(TSqlParser.STATISTICS, 0); }
		public IdContext id() {
			return getRuleContext(IdContext.class,0);
		}
		public TerminalNode ON() { return getToken(TSqlParser.ON, 0); }
		public Table_name_with_hintContext table_name_with_hint() {
			return getRuleContext(Table_name_with_hintContext.class,0);
		}
		public TerminalNode LR_BRACKET() { return getToken(TSqlParser.LR_BRACKET, 0); }
		public Column_name_listContext column_name_list() {
			return getRuleContext(Column_name_listContext.class,0);
		}
		public TerminalNode RR_BRACKET() { return getToken(TSqlParser.RR_BRACKET, 0); }
		public TerminalNode WITH() { return getToken(TSqlParser.WITH, 0); }
		public TerminalNode SEMI() { return getToken(TSqlParser.SEMI, 0); }
		public TerminalNode FULLSCAN() { return getToken(TSqlParser.FULLSCAN, 0); }
		public TerminalNode SAMPLE() { return getToken(TSqlParser.SAMPLE, 0); }
		public TerminalNode DECIMAL() { return getToken(TSqlParser.DECIMAL, 0); }
		public TerminalNode STATS_STREAM() { return getToken(TSqlParser.STATS_STREAM, 0); }
		public TerminalNode PERCENT() { return getToken(TSqlParser.PERCENT, 0); }
		public TerminalNode ROWS() { return getToken(TSqlParser.ROWS, 0); }
		public List COMMA() { return getTokens(TSqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(TSqlParser.COMMA, i);
		}
		public TerminalNode NORECOMPUTE() { return getToken(TSqlParser.NORECOMPUTE, 0); }
		public TerminalNode INCREMENTAL() { return getToken(TSqlParser.INCREMENTAL, 0); }
		public TerminalNode EQUAL() { return getToken(TSqlParser.EQUAL, 0); }
		public On_offContext on_off() {
			return getRuleContext(On_offContext.class,0);
		}
		public Create_statisticsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_create_statistics; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterCreate_statistics(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitCreate_statistics(this);
		}
	}

	public final Create_statisticsContext create_statistics() throws RecognitionException {
		Create_statisticsContext _localctx = new Create_statisticsContext(_ctx, getState());
		enterRule(_localctx, 488, RULE_create_statistics);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6458);
			match(CREATE);
			setState(6459);
			match(STATISTICS);
			setState(6460);
			id();
			setState(6461);
			match(ON);
			setState(6462);
			table_name_with_hint();
			setState(6463);
			match(LR_BRACKET);
			setState(6464);
			column_name_list();
			setState(6465);
			match(RR_BRACKET);
			setState(6484);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,855,_ctx) ) {
			case 1:
				{
				setState(6466);
				match(WITH);
				setState(6472);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case FULLSCAN:
					{
					setState(6467);
					match(FULLSCAN);
					}
					break;
				case SAMPLE:
					{
					setState(6468);
					match(SAMPLE);
					setState(6469);
					match(DECIMAL);
					setState(6470);
					_la = _input.LA(1);
					if ( !(_la==PERCENT || _la==ROWS) ) {
					_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					}
					break;
				case STATS_STREAM:
					{
					setState(6471);
					match(STATS_STREAM);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				setState(6476);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,853,_ctx) ) {
				case 1:
					{
					setState(6474);
					match(COMMA);
					setState(6475);
					match(NORECOMPUTE);
					}
					break;
				}
				setState(6482);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==COMMA) {
					{
					setState(6478);
					match(COMMA);
					setState(6479);
					match(INCREMENTAL);
					setState(6480);
					match(EQUAL);
					setState(6481);
					on_off();
					}
				}

				}
				break;
			}
			setState(6487);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,856,_ctx) ) {
			case 1:
				{
				setState(6486);
				match(SEMI);
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Update_statisticsContext extends ParserRuleContext {
		public TerminalNode UPDATE() { return getToken(TSqlParser.UPDATE, 0); }
		public TerminalNode STATISTICS() { return getToken(TSqlParser.STATISTICS, 0); }
		public Full_table_nameContext full_table_name() {
			return getRuleContext(Full_table_nameContext.class,0);
		}
		public IdContext id() {
			return getRuleContext(IdContext.class,0);
		}
		public TerminalNode USING() { return getToken(TSqlParser.USING, 0); }
		public TerminalNode DECIMAL() { return getToken(TSqlParser.DECIMAL, 0); }
		public TerminalNode VALUES() { return getToken(TSqlParser.VALUES, 0); }
		public TerminalNode INDEX() { return getToken(TSqlParser.INDEX, 0); }
		public TerminalNode ALL() { return getToken(TSqlParser.ALL, 0); }
		public Update_statisticsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_update_statistics; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterUpdate_statistics(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitUpdate_statistics(this);
		}
	}

	public final Update_statisticsContext update_statistics() throws RecognitionException {
		Update_statisticsContext _localctx = new Update_statisticsContext(_ctx, getState());
		enterRule(_localctx, 490, RULE_update_statistics);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6489);
			match(UPDATE);
			setState(6491);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==ALL || _la==INDEX) {
				{
				setState(6490);
				_la = _input.LA(1);
				if ( !(_la==ALL || _la==INDEX) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
			}

			setState(6493);
			match(STATISTICS);
			setState(6494);
			full_table_name();
			setState(6496);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,858,_ctx) ) {
			case 1:
				{
				setState(6495);
				id();
				}
				break;
			}
			setState(6501);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,859,_ctx) ) {
			case 1:
				{
				setState(6498);
				match(USING);
				setState(6499);
				match(DECIMAL);
				setState(6500);
				match(VALUES);
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Create_tableContext extends ParserRuleContext {
		public TerminalNode CREATE() { return getToken(TSqlParser.CREATE, 0); }
		public TerminalNode TABLE() { return getToken(TSqlParser.TABLE, 0); }
		public Table_nameContext table_name() {
			return getRuleContext(Table_nameContext.class,0);
		}
		public TerminalNode LR_BRACKET() { return getToken(TSqlParser.LR_BRACKET, 0); }
		public Column_def_table_constraintsContext column_def_table_constraints() {
			return getRuleContext(Column_def_table_constraintsContext.class,0);
		}
		public TerminalNode RR_BRACKET() { return getToken(TSqlParser.RR_BRACKET, 0); }
		public TerminalNode COMMA() { return getToken(TSqlParser.COMMA, 0); }
		public TerminalNode LOCK() { return getToken(TSqlParser.LOCK, 0); }
		public Simple_idContext simple_id() {
			return getRuleContext(Simple_idContext.class,0);
		}
		public List table_options() {
			return getRuleContexts(Table_optionsContext.class);
		}
		public Table_optionsContext table_options(int i) {
			return getRuleContext(Table_optionsContext.class,i);
		}
		public TerminalNode ON() { return getToken(TSqlParser.ON, 0); }
		public List id() {
			return getRuleContexts(IdContext.class);
		}
		public IdContext id(int i) {
			return getRuleContext(IdContext.class,i);
		}
		public List DEFAULT() { return getTokens(TSqlParser.DEFAULT); }
		public TerminalNode DEFAULT(int i) {
			return getToken(TSqlParser.DEFAULT, i);
		}
		public TerminalNode TEXTIMAGE_ON() { return getToken(TSqlParser.TEXTIMAGE_ON, 0); }
		public TerminalNode SEMI() { return getToken(TSqlParser.SEMI, 0); }
		public Create_tableContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_create_table; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterCreate_table(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitCreate_table(this);
		}
	}

	public final Create_tableContext create_table() throws RecognitionException {
		Create_tableContext _localctx = new Create_tableContext(_ctx, getState());
		enterRule(_localctx, 492, RULE_create_table);
		int _la;
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			setState(6503);
			match(CREATE);
			setState(6504);
			match(TABLE);
			setState(6505);
			table_name();
			setState(6506);
			match(LR_BRACKET);
			setState(6507);
			column_def_table_constraints();
			setState(6509);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==COMMA) {
				{
				setState(6508);
				match(COMMA);
				}
			}

			setState(6511);
			match(RR_BRACKET);
			setState(6514);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,861,_ctx) ) {
			case 1:
				{
				setState(6512);
				match(LOCK);
				setState(6513);
				simple_id();
				}
				break;
			}
			setState(6519);
			_errHandler.sync(this);
			_alt = getInterpreter().adaptivePredict(_input,862,_ctx);
			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
				if ( _alt==1 ) {
					{
					{
					setState(6516);
					table_options();
					}
					} 
				}
				setState(6521);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,862,_ctx);
			}
			setState(6525);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,863,_ctx) ) {
			case 1:
				{
				setState(6522);
				match(ON);
				setState(6523);
				id();
				}
				break;
			case 2:
				{
				setState(6524);
				match(DEFAULT);
				}
				break;
			}
			setState(6530);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,864,_ctx) ) {
			case 1:
				{
				setState(6527);
				match(TEXTIMAGE_ON);
				setState(6528);
				id();
				}
				break;
			case 2:
				{
				setState(6529);
				match(DEFAULT);
				}
				break;
			}
			setState(6533);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,865,_ctx) ) {
			case 1:
				{
				setState(6532);
				match(SEMI);
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Table_optionsContext extends ParserRuleContext {
		public TerminalNode WITH() { return getToken(TSqlParser.WITH, 0); }
		public TerminalNode LR_BRACKET() { return getToken(TSqlParser.LR_BRACKET, 0); }
		public List index_option() {
			return getRuleContexts(Index_optionContext.class);
		}
		public Index_optionContext index_option(int i) {
			return getRuleContext(Index_optionContext.class,i);
		}
		public TerminalNode RR_BRACKET() { return getToken(TSqlParser.RR_BRACKET, 0); }
		public List COMMA() { return getTokens(TSqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(TSqlParser.COMMA, i);
		}
		public Table_optionsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_table_options; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterTable_options(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitTable_options(this);
		}
	}

	public final Table_optionsContext table_options() throws RecognitionException {
		Table_optionsContext _localctx = new Table_optionsContext(_ctx, getState());
		enterRule(_localctx, 494, RULE_table_options);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6535);
			match(WITH);
			setState(6555);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case LR_BRACKET:
				{
				setState(6536);
				match(LR_BRACKET);
				setState(6537);
				index_option();
				setState(6542);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA) {
					{
					{
					setState(6538);
					match(COMMA);
					setState(6539);
					index_option();
					}
					}
					setState(6544);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				setState(6545);
				match(RR_BRACKET);
				}
				break;
			case CALLED:
			case DATA_COMPRESSION:
			case EVENTDATA:
			case FILENAME:
			case FILLFACTOR:
			case FORCESEEK:
			case INIT:
			case KEY:
			case MASTER:
			case MAX_MEMORY:
			case OFFSETS:
			case PAGE:
			case PUBLIC:
			case R:
			case RAW:
			case RETURN:
			case RETURNS:
			case ROWCOUNT:
			case SAFETY:
			case SERVER:
			case SID:
			case SOURCE:
			case STATE:
			case START:
			case TARGET:
			case ABSOLUTE:
			case ACCENT_SENSITIVITY:
			case ACTION:
			case ACTIVATION:
			case ACTIVE:
			case ADDRESS:
			case AES_128:
			case AES_192:
			case AES_256:
			case AFFINITY:
			case AFTER:
			case AGGREGATE:
			case ALGORITHM:
			case ALLOW_ENCRYPTED_VALUE_MODIFICATIONS:
			case ALLOW_SNAPSHOT_ISOLATION:
			case ALLOWED:
			case ANSI_NULL_DEFAULT:
			case ANSI_NULLS:
			case ANSI_PADDING:
			case ANSI_WARNINGS:
			case APPLICATION_LOG:
			case APPLY:
			case ARITHABORT:
			case ASSEMBLY:
			case AUDIT:
			case AUDIT_GUID:
			case AUTO:
			case AUTO_CLEANUP:
			case AUTO_CLOSE:
			case AUTO_CREATE_STATISTICS:
			case AUTO_SHRINK:
			case AUTO_UPDATE_STATISTICS:
			case AUTO_UPDATE_STATISTICS_ASYNC:
			case AVAILABILITY:
			case AVG:
			case BACKUP_PRIORITY:
			case BEGIN_DIALOG:
			case BIGINT:
			case BINARY_BASE64:
			case BINARY_CHECKSUM:
			case BINDING:
			case BLOB_STORAGE:
			case BROKER:
			case BROKER_INSTANCE:
			case BULK_LOGGED:
			case CALLER:
			case CAP_CPU_PERCENT:
			case CAST:
			case CATALOG:
			case CATCH:
			case CHANGE_RETENTION:
			case CHANGE_TRACKING:
			case CHECKSUM:
			case CHECKSUM_AGG:
			case CLEANUP:
			case COLLECTION:
			case COLUMN_MASTER_KEY:
			case COMMITTED:
			case COMPATIBILITY_LEVEL:
			case CONCAT:
			case CONCAT_NULL_YIELDS_NULL:
			case CONTENT:
			case CONTROL:
			case COOKIE:
			case COUNT:
			case COUNT_BIG:
			case COUNTER:
			case CPU:
			case CREATE_NEW:
			case CREATION_DISPOSITION:
			case CREDENTIAL:
			case CRYPTOGRAPHIC:
			case CURSOR_CLOSE_ON_COMMIT:
			case CURSOR_DEFAULT:
			case DATE_CORRELATION_OPTIMIZATION:
			case DATEADD:
			case DATEDIFF:
			case DATENAME:
			case DATEPART:
			case DAYS:
			case DB_CHAINING:
			case DB_FAILOVER:
			case DECRYPTION:
			case DEFAULT_DOUBLE_QUOTE:
			case DEFAULT_FULLTEXT_LANGUAGE:
			case DEFAULT_LANGUAGE:
			case DELAY:
			case DELAYED_DURABILITY:
			case DELETED:
			case DENSE_RANK:
			case DEPENDENTS:
			case DES:
			case DESCRIPTION:
			case DESX:
			case DHCP:
			case DIALOG:
			case DIRECTORY_NAME:
			case DISABLE:
			case DISABLE_BROKER:
			case DISABLED:
			case DISK_DRIVE:
			case DOCUMENT:
			case DYNAMIC:
			case EMERGENCY:
			case EMPTY:
			case ENABLE:
			case ENABLE_BROKER:
			case ENCRYPTED_VALUE:
			case ENCRYPTION:
			case ENDPOINT_URL:
			case ERROR_BROKER_CONVERSATIONS:
			case EXCLUSIVE:
			case EXECUTABLE:
			case EXIST:
			case EXPAND:
			case EXPIRY_DATE:
			case EXPLICIT:
			case FAIL_OPERATION:
			case FAILOVER_MODE:
			case FAILURE:
			case FAILURE_CONDITION_LEVEL:
			case FAST:
			case FAST_FORWARD:
			case FILEGROUP:
			case FILEGROWTH:
			case FILEPATH:
			case FILESTREAM:
			case FILTER:
			case FIRST:
			case FIRST_VALUE:
			case FOLLOWING:
			case FORCE:
			case FORCE_FAILOVER_ALLOW_DATA_LOSS:
			case FORCED:
			case FORMAT:
			case FORWARD_ONLY:
			case FULLSCAN:
			case FULLTEXT:
			case GB:
			case GETDATE:
			case GETUTCDATE:
			case GLOBAL:
			case GO:
			case GROUP_MAX_REQUESTS:
			case GROUPING:
			case GROUPING_ID:
			case HADR:
			case HASH:
			case HEALTH_CHECK_TIMEOUT:
			case HIGH:
			case HONOR_BROKER_PRIORITY:
			case HOURS:
			case IDENTITY_VALUE:
			case IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX:
			case IMMEDIATE:
			case IMPERSONATE:
			case IMPORTANCE:
			case INCREMENTAL:
			case INITIATOR:
			case INPUT:
			case INSENSITIVE:
			case INSERTED:
			case INT:
			case IP:
			case ISOLATION:
			case KB:
			case KEEP:
			case KEEPFIXED:
			case KEY_SOURCE:
			case KEYS:
			case KEYSET:
			case LAG:
			case LAST:
			case LAST_VALUE:
			case LEAD:
			case LEVEL:
			case LIST:
			case LISTENER:
			case LISTENER_URL:
			case LOB_COMPACTION:
			case LOCAL:
			case LOCATION:
			case LOCK:
			case LOCK_ESCALATION:
			case LOGIN:
			case LOOP:
			case LOW:
			case MANUAL:
			case MARK:
			case MATERIALIZED:
			case MAX:
			case MAX_CPU_PERCENT:
			case MAX_DOP:
			case MAX_FILES:
			case MAX_IOPS_PER_VOLUME:
			case MAX_MEMORY_PERCENT:
			case MAX_PROCESSES:
			case MAX_QUEUE_READERS:
			case MAX_ROLLOVER_FILES:
			case MAXDOP:
			case MAXRECURSION:
			case MAXSIZE:
			case MB:
			case MEDIUM:
			case MEMORY_OPTIMIZED_DATA:
			case MESSAGE:
			case MIN:
			case MIN_ACTIVE_ROWVERSION:
			case MIN_CPU_PERCENT:
			case MIN_IOPS_PER_VOLUME:
			case MIN_MEMORY_PERCENT:
			case MINUTES:
			case MIRROR_ADDRESS:
			case MIXED_PAGE_ALLOCATION:
			case MODE:
			case MODIFY:
			case MOVE:
			case MULTI_USER:
			case NAME:
			case NESTED_TRIGGERS:
			case NEW_ACCOUNT:
			case NEW_BROKER:
			case NEW_PASSWORD:
			case NEXT:
			case NO:
			case NO_TRUNCATE:
			case NO_WAIT:
			case NOCOUNT:
			case NODES:
			case NOEXPAND:
			case NON_TRANSACTED_ACCESS:
			case NORECOMPUTE:
			case NORECOVERY:
			case NOWAIT:
			case NTILE:
			case NUMANODE:
			case NUMBER:
			case NUMERIC_ROUNDABORT:
			case OBJECT:
			case OFFLINE:
			case OFFSET:
			case OLD_ACCOUNT:
			case ONLINE:
			case ONLY:
			case OPEN_EXISTING:
			case OPTIMISTIC:
			case OPTIMIZE:
			case OUT:
			case OUTPUT:
			case OWNER:
			case PAGE_VERIFY:
			case PARAMETERIZATION:
			case PARTITION:
			case PARTITIONS:
			case PARTNER:
			case PATH:
			case POISON_MESSAGE_HANDLING:
			case POOL:
			case PORT:
			case PRECEDING:
			case PRIMARY_ROLE:
			case PRIOR:
			case PRIORITY:
			case PRIORITY_LEVEL:
			case PRIVATE:
			case PRIVATE_KEY:
			case PRIVILEGES:
			case PROCEDURE_NAME:
			case PROPERTY:
			case PROVIDER:
			case PROVIDER_KEY_NAME:
			case QUERY:
			case QUEUE:
			case QUEUE_DELAY:
			case QUOTED_IDENTIFIER:
			case RANGE:
			case RANK:
			case RC2:
			case RC4:
			case RC4_128:
			case READ_COMMITTED_SNAPSHOT:
			case READ_ONLY:
			case READ_ONLY_ROUTING_LIST:
			case READ_WRITE:
			case READONLY:
			case REBUILD:
			case RECEIVE:
			case RECOMPILE:
			case RECOVERY:
			case RECURSIVE_TRIGGERS:
			case RELATIVE:
			case REMOTE:
			case REMOTE_SERVICE_NAME:
			case REMOVE:
			case REORGANIZE:
			case REPEATABLE:
			case REPLICA:
			case REQUEST_MAX_CPU_TIME_SEC:
			case REQUEST_MAX_MEMORY_GRANT_PERCENT:
			case REQUEST_MEMORY_GRANT_TIMEOUT_SEC:
			case REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT:
			case RESERVE_DISK_SPACE:
			case RESOURCE:
			case RESOURCE_MANAGER_LOCATION:
			case RESTRICTED_USER:
			case RETENTION:
			case ROBUST:
			case ROOT:
			case ROUTE:
			case ROW:
			case ROW_NUMBER:
			case ROWGUID:
			case ROWS:
			case SAMPLE:
			case SCHEMABINDING:
			case SCOPED:
			case SCROLL:
			case SCROLL_LOCKS:
			case SEARCH:
			case SECONDARY:
			case SECONDARY_ONLY:
			case SECONDARY_ROLE:
			case SECONDS:
			case SECRET:
			case SECURITY_LOG:
			case SEEDING_MODE:
			case SELF:
			case SEMI_SENSITIVE:
			case SEND:
			case SENT:
			case SERIALIZABLE:
			case SESSION_TIMEOUT:
			case SETERROR:
			case SHARE:
			case SHOWPLAN:
			case SIGNATURE:
			case SIMPLE:
			case SINGLE_USER:
			case SIZE:
			case SMALLINT:
			case SNAPSHOT:
			case SPATIAL_WINDOW_MAX_CELLS:
			case STANDBY:
			case START_DATE:
			case STATIC:
			case STATS_STREAM:
			case STATUS:
			case STDEV:
			case STDEVP:
			case STOPLIST:
			case STUFF:
			case SUBJECT:
			case SUM:
			case SUSPEND:
			case SYMMETRIC:
			case SYNCHRONOUS_COMMIT:
			case SYNONYM:
			case TAKE:
			case TARGET_RECOVERY_TIME:
			case TB:
			case TEXTIMAGE_ON:
			case THROW:
			case TIES:
			case TIME:
			case TIMEOUT:
			case TIMER:
			case TINYINT:
			case TORN_PAGE_DETECTION:
			case TRANSFORM_NOISE_WORDS:
			case TRIPLE_DES:
			case TRIPLE_DES_3KEY:
			case TRUSTWORTHY:
			case TRY:
			case TSQL:
			case TWO_DIGIT_YEAR_CUTOFF:
			case TYPE:
			case TYPE_WARNING:
			case UNBOUNDED:
			case UNCOMMITTED:
			case UNKNOWN:
			case UNLIMITED:
			case USING:
			case VALID_XML:
			case VALIDATION:
			case VALUE:
			case VAR:
			case VARP:
			case VIEW_METADATA:
			case VIEWS:
			case WAIT:
			case WELL_FORMED_XML:
			case WORK:
			case WORKLOAD:
			case XML:
			case XMLNAMESPACES:
			case ID:
				{
				setState(6547);
				index_option();
				setState(6552);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA) {
					{
					{
					setState(6548);
					match(COMMA);
					setState(6549);
					index_option();
					}
					}
					setState(6554);
					_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 Create_viewContext extends ParserRuleContext {
		public TerminalNode CREATE() { return getToken(TSqlParser.CREATE, 0); }
		public TerminalNode VIEW() { return getToken(TSqlParser.VIEW, 0); }
		public Simple_nameContext simple_name() {
			return getRuleContext(Simple_nameContext.class,0);
		}
		public TerminalNode AS() { return getToken(TSqlParser.AS, 0); }
		public Select_statementContext select_statement() {
			return getRuleContext(Select_statementContext.class,0);
		}
		public TerminalNode LR_BRACKET() { return getToken(TSqlParser.LR_BRACKET, 0); }
		public Column_name_listContext column_name_list() {
			return getRuleContext(Column_name_listContext.class,0);
		}
		public TerminalNode RR_BRACKET() { return getToken(TSqlParser.RR_BRACKET, 0); }
		public List WITH() { return getTokens(TSqlParser.WITH); }
		public TerminalNode WITH(int i) {
			return getToken(TSqlParser.WITH, i);
		}
		public List view_attribute() {
			return getRuleContexts(View_attributeContext.class);
		}
		public View_attributeContext view_attribute(int i) {
			return getRuleContext(View_attributeContext.class,i);
		}
		public TerminalNode CHECK() { return getToken(TSqlParser.CHECK, 0); }
		public TerminalNode OPTION() { return getToken(TSqlParser.OPTION, 0); }
		public TerminalNode SEMI() { return getToken(TSqlParser.SEMI, 0); }
		public List COMMA() { return getTokens(TSqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(TSqlParser.COMMA, i);
		}
		public Create_viewContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_create_view; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterCreate_view(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitCreate_view(this);
		}
	}

	public final Create_viewContext create_view() throws RecognitionException {
		Create_viewContext _localctx = new Create_viewContext(_ctx, getState());
		enterRule(_localctx, 496, RULE_create_view);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6557);
			match(CREATE);
			setState(6558);
			match(VIEW);
			setState(6559);
			simple_name();
			setState(6564);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==LR_BRACKET) {
				{
				setState(6560);
				match(LR_BRACKET);
				setState(6561);
				column_name_list();
				setState(6562);
				match(RR_BRACKET);
				}
			}

			setState(6575);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==WITH) {
				{
				setState(6566);
				match(WITH);
				setState(6567);
				view_attribute();
				setState(6572);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA) {
					{
					{
					setState(6568);
					match(COMMA);
					setState(6569);
					view_attribute();
					}
					}
					setState(6574);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				}
			}

			setState(6577);
			match(AS);
			setState(6578);
			select_statement();
			setState(6582);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,872,_ctx) ) {
			case 1:
				{
				setState(6579);
				match(WITH);
				setState(6580);
				match(CHECK);
				setState(6581);
				match(OPTION);
				}
				break;
			}
			setState(6585);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,873,_ctx) ) {
			case 1:
				{
				setState(6584);
				match(SEMI);
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class View_attributeContext extends ParserRuleContext {
		public TerminalNode ENCRYPTION() { return getToken(TSqlParser.ENCRYPTION, 0); }
		public TerminalNode SCHEMABINDING() { return getToken(TSqlParser.SCHEMABINDING, 0); }
		public TerminalNode VIEW_METADATA() { return getToken(TSqlParser.VIEW_METADATA, 0); }
		public View_attributeContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_view_attribute; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterView_attribute(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitView_attribute(this);
		}
	}

	public final View_attributeContext view_attribute() throws RecognitionException {
		View_attributeContext _localctx = new View_attributeContext(_ctx, getState());
		enterRule(_localctx, 498, RULE_view_attribute);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6587);
			_la = _input.LA(1);
			if ( !(_la==ENCRYPTION || _la==SCHEMABINDING || _la==VIEW_METADATA) ) {
			_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 Alter_tableContext extends ParserRuleContext {
		public IdContext constraint;
		public Column_name_listContext fk;
		public Column_name_listContext pk;
		public List ALTER() { return getTokens(TSqlParser.ALTER); }
		public TerminalNode ALTER(int i) {
			return getToken(TSqlParser.ALTER, i);
		}
		public List TABLE() { return getTokens(TSqlParser.TABLE); }
		public TerminalNode TABLE(int i) {
			return getToken(TSqlParser.TABLE, i);
		}
		public List table_name() {
			return getRuleContexts(Table_nameContext.class);
		}
		public Table_nameContext table_name(int i) {
			return getRuleContext(Table_nameContext.class,i);
		}
		public TerminalNode SET() { return getToken(TSqlParser.SET, 0); }
		public List LR_BRACKET() { return getTokens(TSqlParser.LR_BRACKET); }
		public TerminalNode LR_BRACKET(int i) {
			return getToken(TSqlParser.LR_BRACKET, i);
		}
		public TerminalNode LOCK_ESCALATION() { return getToken(TSqlParser.LOCK_ESCALATION, 0); }
		public TerminalNode EQUAL() { return getToken(TSqlParser.EQUAL, 0); }
		public List RR_BRACKET() { return getTokens(TSqlParser.RR_BRACKET); }
		public TerminalNode RR_BRACKET(int i) {
			return getToken(TSqlParser.RR_BRACKET, i);
		}
		public TerminalNode ADD() { return getToken(TSqlParser.ADD, 0); }
		public Column_def_table_constraintContext column_def_table_constraint() {
			return getRuleContext(Column_def_table_constraintContext.class,0);
		}
		public TerminalNode COLUMN() { return getToken(TSqlParser.COLUMN, 0); }
		public Column_definitionContext column_definition() {
			return getRuleContext(Column_definitionContext.class,0);
		}
		public TerminalNode DROP() { return getToken(TSqlParser.DROP, 0); }
		public IdContext id() {
			return getRuleContext(IdContext.class,0);
		}
		public TerminalNode CONSTRAINT() { return getToken(TSqlParser.CONSTRAINT, 0); }
		public TerminalNode WITH() { return getToken(TSqlParser.WITH, 0); }
		public TerminalNode CHECK() { return getToken(TSqlParser.CHECK, 0); }
		public TerminalNode FOREIGN() { return getToken(TSqlParser.FOREIGN, 0); }
		public TerminalNode KEY() { return getToken(TSqlParser.KEY, 0); }
		public TerminalNode REFERENCES() { return getToken(TSqlParser.REFERENCES, 0); }
		public TerminalNode TRIGGER() { return getToken(TSqlParser.TRIGGER, 0); }
		public TerminalNode REBUILD() { return getToken(TSqlParser.REBUILD, 0); }
		public Table_optionsContext table_options() {
			return getRuleContext(Table_optionsContext.class,0);
		}
		public TerminalNode AUTO() { return getToken(TSqlParser.AUTO, 0); }
		public TerminalNode DISABLE() { return getToken(TSqlParser.DISABLE, 0); }
		public List column_name_list() {
			return getRuleContexts(Column_name_listContext.class);
		}
		public Column_name_listContext column_name_list(int i) {
			return getRuleContext(Column_name_listContext.class,i);
		}
		public TerminalNode ENABLE() { return getToken(TSqlParser.ENABLE, 0); }
		public TerminalNode SEMI() { return getToken(TSqlParser.SEMI, 0); }
		public Alter_tableContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alter_table; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterAlter_table(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitAlter_table(this);
		}
	}

	public final Alter_tableContext alter_table() throws RecognitionException {
		Alter_tableContext _localctx = new Alter_tableContext(_ctx, getState());
		enterRule(_localctx, 500, RULE_alter_table);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6589);
			match(ALTER);
			setState(6590);
			match(TABLE);
			setState(6591);
			table_name();
			setState(6635);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,875,_ctx) ) {
			case 1:
				{
				setState(6592);
				match(SET);
				setState(6593);
				match(LR_BRACKET);
				setState(6594);
				match(LOCK_ESCALATION);
				setState(6595);
				match(EQUAL);
				setState(6596);
				_la = _input.LA(1);
				if ( !(_la==TABLE || _la==AUTO || _la==DISABLE) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(6597);
				match(RR_BRACKET);
				}
				break;
			case 2:
				{
				setState(6598);
				match(ADD);
				setState(6599);
				column_def_table_constraint();
				}
				break;
			case 3:
				{
				setState(6600);
				match(ALTER);
				setState(6601);
				match(COLUMN);
				setState(6602);
				column_definition();
				}
				break;
			case 4:
				{
				setState(6603);
				match(DROP);
				setState(6604);
				match(COLUMN);
				setState(6605);
				id();
				}
				break;
			case 5:
				{
				setState(6606);
				match(DROP);
				setState(6607);
				match(CONSTRAINT);
				setState(6608);
				((Alter_tableContext)_localctx).constraint = id();
				}
				break;
			case 6:
				{
				setState(6609);
				match(WITH);
				setState(6610);
				match(CHECK);
				setState(6611);
				match(ADD);
				setState(6612);
				match(CONSTRAINT);
				setState(6613);
				((Alter_tableContext)_localctx).constraint = id();
				setState(6614);
				match(FOREIGN);
				setState(6615);
				match(KEY);
				setState(6616);
				match(LR_BRACKET);
				setState(6617);
				((Alter_tableContext)_localctx).fk = column_name_list();
				setState(6618);
				match(RR_BRACKET);
				setState(6619);
				match(REFERENCES);
				setState(6620);
				table_name();
				setState(6621);
				match(LR_BRACKET);
				setState(6622);
				((Alter_tableContext)_localctx).pk = column_name_list();
				setState(6623);
				match(RR_BRACKET);
				}
				break;
			case 7:
				{
				setState(6625);
				match(CHECK);
				setState(6626);
				match(CONSTRAINT);
				setState(6627);
				((Alter_tableContext)_localctx).constraint = id();
				}
				break;
			case 8:
				{
				setState(6628);
				_la = _input.LA(1);
				if ( !(_la==DISABLE || _la==ENABLE) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(6629);
				match(TRIGGER);
				setState(6631);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,874,_ctx) ) {
				case 1:
					{
					setState(6630);
					id();
					}
					break;
				}
				}
				break;
			case 9:
				{
				setState(6633);
				match(REBUILD);
				setState(6634);
				table_options();
				}
				break;
			}
			setState(6638);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,876,_ctx) ) {
			case 1:
				{
				setState(6637);
				match(SEMI);
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Alter_databaseContext extends ParserRuleContext {
		public IdContext database;
		public IdContext new_name;
		public IdContext collation;
		public TerminalNode ALTER() { return getToken(TSqlParser.ALTER, 0); }
		public TerminalNode DATABASE() { return getToken(TSqlParser.DATABASE, 0); }
		public TerminalNode CURRENT() { return getToken(TSqlParser.CURRENT, 0); }
		public TerminalNode MODIFY() { return getToken(TSqlParser.MODIFY, 0); }
		public TerminalNode NAME() { return getToken(TSqlParser.NAME, 0); }
		public TerminalNode EQUAL() { return getToken(TSqlParser.EQUAL, 0); }
		public TerminalNode COLLATE() { return getToken(TSqlParser.COLLATE, 0); }
		public TerminalNode SET() { return getToken(TSqlParser.SET, 0); }
		public Database_optionspecContext database_optionspec() {
			return getRuleContext(Database_optionspecContext.class,0);
		}
		public List id() {
			return getRuleContexts(IdContext.class);
		}
		public IdContext id(int i) {
			return getRuleContext(IdContext.class,i);
		}
		public TerminalNode SEMI() { return getToken(TSqlParser.SEMI, 0); }
		public TerminalNode WITH() { return getToken(TSqlParser.WITH, 0); }
		public TerminationContext termination() {
			return getRuleContext(TerminationContext.class,0);
		}
		public Alter_databaseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alter_database; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterAlter_database(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitAlter_database(this);
		}
	}

	public final Alter_databaseContext alter_database() throws RecognitionException {
		Alter_databaseContext _localctx = new Alter_databaseContext(_ctx, getState());
		enterRule(_localctx, 502, RULE_alter_database);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6640);
			match(ALTER);
			setState(6641);
			match(DATABASE);
			setState(6644);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case CALLED:
			case DATA_COMPRESSION:
			case EVENTDATA:
			case FILENAME:
			case FILLFACTOR:
			case FORCESEEK:
			case INIT:
			case KEY:
			case MASTER:
			case MAX_MEMORY:
			case OFFSETS:
			case PAGE:
			case PUBLIC:
			case R:
			case RAW:
			case RETURN:
			case RETURNS:
			case ROWCOUNT:
			case SAFETY:
			case SERVER:
			case SID:
			case SOURCE:
			case STATE:
			case START:
			case TARGET:
			case ABSOLUTE:
			case ACCENT_SENSITIVITY:
			case ACTION:
			case ACTIVATION:
			case ACTIVE:
			case ADDRESS:
			case AES_128:
			case AES_192:
			case AES_256:
			case AFFINITY:
			case AFTER:
			case AGGREGATE:
			case ALGORITHM:
			case ALLOW_ENCRYPTED_VALUE_MODIFICATIONS:
			case ALLOW_SNAPSHOT_ISOLATION:
			case ALLOWED:
			case ANSI_NULL_DEFAULT:
			case ANSI_NULLS:
			case ANSI_PADDING:
			case ANSI_WARNINGS:
			case APPLICATION_LOG:
			case APPLY:
			case ARITHABORT:
			case ASSEMBLY:
			case AUDIT:
			case AUDIT_GUID:
			case AUTO:
			case AUTO_CLEANUP:
			case AUTO_CLOSE:
			case AUTO_CREATE_STATISTICS:
			case AUTO_SHRINK:
			case AUTO_UPDATE_STATISTICS:
			case AUTO_UPDATE_STATISTICS_ASYNC:
			case AVAILABILITY:
			case AVG:
			case BACKUP_PRIORITY:
			case BEGIN_DIALOG:
			case BIGINT:
			case BINARY_BASE64:
			case BINARY_CHECKSUM:
			case BINDING:
			case BLOB_STORAGE:
			case BROKER:
			case BROKER_INSTANCE:
			case BULK_LOGGED:
			case CALLER:
			case CAP_CPU_PERCENT:
			case CAST:
			case CATALOG:
			case CATCH:
			case CHANGE_RETENTION:
			case CHANGE_TRACKING:
			case CHECKSUM:
			case CHECKSUM_AGG:
			case CLEANUP:
			case COLLECTION:
			case COLUMN_MASTER_KEY:
			case COMMITTED:
			case COMPATIBILITY_LEVEL:
			case CONCAT:
			case CONCAT_NULL_YIELDS_NULL:
			case CONTENT:
			case CONTROL:
			case COOKIE:
			case COUNT:
			case COUNT_BIG:
			case COUNTER:
			case CPU:
			case CREATE_NEW:
			case CREATION_DISPOSITION:
			case CREDENTIAL:
			case CRYPTOGRAPHIC:
			case CURSOR_CLOSE_ON_COMMIT:
			case CURSOR_DEFAULT:
			case DATE_CORRELATION_OPTIMIZATION:
			case DATEADD:
			case DATEDIFF:
			case DATENAME:
			case DATEPART:
			case DAYS:
			case DB_CHAINING:
			case DB_FAILOVER:
			case DECRYPTION:
			case DEFAULT_DOUBLE_QUOTE:
			case DEFAULT_FULLTEXT_LANGUAGE:
			case DEFAULT_LANGUAGE:
			case DELAY:
			case DELAYED_DURABILITY:
			case DELETED:
			case DENSE_RANK:
			case DEPENDENTS:
			case DES:
			case DESCRIPTION:
			case DESX:
			case DHCP:
			case DIALOG:
			case DIRECTORY_NAME:
			case DISABLE:
			case DISABLE_BROKER:
			case DISABLED:
			case DISK_DRIVE:
			case DOCUMENT:
			case DYNAMIC:
			case EMERGENCY:
			case EMPTY:
			case ENABLE:
			case ENABLE_BROKER:
			case ENCRYPTED_VALUE:
			case ENCRYPTION:
			case ENDPOINT_URL:
			case ERROR_BROKER_CONVERSATIONS:
			case EXCLUSIVE:
			case EXECUTABLE:
			case EXIST:
			case EXPAND:
			case EXPIRY_DATE:
			case EXPLICIT:
			case FAIL_OPERATION:
			case FAILOVER_MODE:
			case FAILURE:
			case FAILURE_CONDITION_LEVEL:
			case FAST:
			case FAST_FORWARD:
			case FILEGROUP:
			case FILEGROWTH:
			case FILEPATH:
			case FILESTREAM:
			case FILTER:
			case FIRST:
			case FIRST_VALUE:
			case FOLLOWING:
			case FORCE:
			case FORCE_FAILOVER_ALLOW_DATA_LOSS:
			case FORCED:
			case FORMAT:
			case FORWARD_ONLY:
			case FULLSCAN:
			case FULLTEXT:
			case GB:
			case GETDATE:
			case GETUTCDATE:
			case GLOBAL:
			case GO:
			case GROUP_MAX_REQUESTS:
			case GROUPING:
			case GROUPING_ID:
			case HADR:
			case HASH:
			case HEALTH_CHECK_TIMEOUT:
			case HIGH:
			case HONOR_BROKER_PRIORITY:
			case HOURS:
			case IDENTITY_VALUE:
			case IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX:
			case IMMEDIATE:
			case IMPERSONATE:
			case IMPORTANCE:
			case INCREMENTAL:
			case INITIATOR:
			case INPUT:
			case INSENSITIVE:
			case INSERTED:
			case INT:
			case IP:
			case ISOLATION:
			case KB:
			case KEEP:
			case KEEPFIXED:
			case KEY_SOURCE:
			case KEYS:
			case KEYSET:
			case LAG:
			case LAST:
			case LAST_VALUE:
			case LEAD:
			case LEVEL:
			case LIST:
			case LISTENER:
			case LISTENER_URL:
			case LOB_COMPACTION:
			case LOCAL:
			case LOCATION:
			case LOCK:
			case LOCK_ESCALATION:
			case LOGIN:
			case LOOP:
			case LOW:
			case MANUAL:
			case MARK:
			case MATERIALIZED:
			case MAX:
			case MAX_CPU_PERCENT:
			case MAX_DOP:
			case MAX_FILES:
			case MAX_IOPS_PER_VOLUME:
			case MAX_MEMORY_PERCENT:
			case MAX_PROCESSES:
			case MAX_QUEUE_READERS:
			case MAX_ROLLOVER_FILES:
			case MAXDOP:
			case MAXRECURSION:
			case MAXSIZE:
			case MB:
			case MEDIUM:
			case MEMORY_OPTIMIZED_DATA:
			case MESSAGE:
			case MIN:
			case MIN_ACTIVE_ROWVERSION:
			case MIN_CPU_PERCENT:
			case MIN_IOPS_PER_VOLUME:
			case MIN_MEMORY_PERCENT:
			case MINUTES:
			case MIRROR_ADDRESS:
			case MIXED_PAGE_ALLOCATION:
			case MODE:
			case MODIFY:
			case MOVE:
			case MULTI_USER:
			case NAME:
			case NESTED_TRIGGERS:
			case NEW_ACCOUNT:
			case NEW_BROKER:
			case NEW_PASSWORD:
			case NEXT:
			case NO:
			case NO_TRUNCATE:
			case NO_WAIT:
			case NOCOUNT:
			case NODES:
			case NOEXPAND:
			case NON_TRANSACTED_ACCESS:
			case NORECOMPUTE:
			case NORECOVERY:
			case NOWAIT:
			case NTILE:
			case NUMANODE:
			case NUMBER:
			case NUMERIC_ROUNDABORT:
			case OBJECT:
			case OFFLINE:
			case OFFSET:
			case OLD_ACCOUNT:
			case ONLINE:
			case ONLY:
			case OPEN_EXISTING:
			case OPTIMISTIC:
			case OPTIMIZE:
			case OUT:
			case OUTPUT:
			case OWNER:
			case PAGE_VERIFY:
			case PARAMETERIZATION:
			case PARTITION:
			case PARTITIONS:
			case PARTNER:
			case PATH:
			case POISON_MESSAGE_HANDLING:
			case POOL:
			case PORT:
			case PRECEDING:
			case PRIMARY_ROLE:
			case PRIOR:
			case PRIORITY:
			case PRIORITY_LEVEL:
			case PRIVATE:
			case PRIVATE_KEY:
			case PRIVILEGES:
			case PROCEDURE_NAME:
			case PROPERTY:
			case PROVIDER:
			case PROVIDER_KEY_NAME:
			case QUERY:
			case QUEUE:
			case QUEUE_DELAY:
			case QUOTED_IDENTIFIER:
			case RANGE:
			case RANK:
			case RC2:
			case RC4:
			case RC4_128:
			case READ_COMMITTED_SNAPSHOT:
			case READ_ONLY:
			case READ_ONLY_ROUTING_LIST:
			case READ_WRITE:
			case READONLY:
			case REBUILD:
			case RECEIVE:
			case RECOMPILE:
			case RECOVERY:
			case RECURSIVE_TRIGGERS:
			case RELATIVE:
			case REMOTE:
			case REMOTE_SERVICE_NAME:
			case REMOVE:
			case REORGANIZE:
			case REPEATABLE:
			case REPLICA:
			case REQUEST_MAX_CPU_TIME_SEC:
			case REQUEST_MAX_MEMORY_GRANT_PERCENT:
			case REQUEST_MEMORY_GRANT_TIMEOUT_SEC:
			case REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT:
			case RESERVE_DISK_SPACE:
			case RESOURCE:
			case RESOURCE_MANAGER_LOCATION:
			case RESTRICTED_USER:
			case RETENTION:
			case ROBUST:
			case ROOT:
			case ROUTE:
			case ROW:
			case ROW_NUMBER:
			case ROWGUID:
			case ROWS:
			case SAMPLE:
			case SCHEMABINDING:
			case SCOPED:
			case SCROLL:
			case SCROLL_LOCKS:
			case SEARCH:
			case SECONDARY:
			case SECONDARY_ONLY:
			case SECONDARY_ROLE:
			case SECONDS:
			case SECRET:
			case SECURITY_LOG:
			case SEEDING_MODE:
			case SELF:
			case SEMI_SENSITIVE:
			case SEND:
			case SENT:
			case SERIALIZABLE:
			case SESSION_TIMEOUT:
			case SETERROR:
			case SHARE:
			case SHOWPLAN:
			case SIGNATURE:
			case SIMPLE:
			case SINGLE_USER:
			case SIZE:
			case SMALLINT:
			case SNAPSHOT:
			case SPATIAL_WINDOW_MAX_CELLS:
			case STANDBY:
			case START_DATE:
			case STATIC:
			case STATS_STREAM:
			case STATUS:
			case STDEV:
			case STDEVP:
			case STOPLIST:
			case STUFF:
			case SUBJECT:
			case SUM:
			case SUSPEND:
			case SYMMETRIC:
			case SYNCHRONOUS_COMMIT:
			case SYNONYM:
			case TAKE:
			case TARGET_RECOVERY_TIME:
			case TB:
			case TEXTIMAGE_ON:
			case THROW:
			case TIES:
			case TIME:
			case TIMEOUT:
			case TIMER:
			case TINYINT:
			case TORN_PAGE_DETECTION:
			case TRANSFORM_NOISE_WORDS:
			case TRIPLE_DES:
			case TRIPLE_DES_3KEY:
			case TRUSTWORTHY:
			case TRY:
			case TSQL:
			case TWO_DIGIT_YEAR_CUTOFF:
			case TYPE:
			case TYPE_WARNING:
			case UNBOUNDED:
			case UNCOMMITTED:
			case UNKNOWN:
			case UNLIMITED:
			case USING:
			case VALID_XML:
			case VALIDATION:
			case VALUE:
			case VAR:
			case VARP:
			case VIEW_METADATA:
			case VIEWS:
			case WAIT:
			case WELL_FORMED_XML:
			case WORK:
			case WORKLOAD:
			case XML:
			case XMLNAMESPACES:
			case DOUBLE_QUOTE_ID:
			case SQUARE_BRACKET_ID:
			case ID:
				{
				setState(6642);
				((Alter_databaseContext)_localctx).database = id();
				}
				break;
			case CURRENT:
				{
				setState(6643);
				match(CURRENT);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			setState(6658);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case MODIFY:
				{
				setState(6646);
				match(MODIFY);
				setState(6647);
				match(NAME);
				setState(6648);
				match(EQUAL);
				setState(6649);
				((Alter_databaseContext)_localctx).new_name = id();
				}
				break;
			case COLLATE:
				{
				setState(6650);
				match(COLLATE);
				setState(6651);
				((Alter_databaseContext)_localctx).collation = id();
				}
				break;
			case SET:
				{
				setState(6652);
				match(SET);
				setState(6653);
				database_optionspec();
				setState(6656);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,878,_ctx) ) {
				case 1:
					{
					setState(6654);
					match(WITH);
					setState(6655);
					termination();
					}
					break;
				}
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			setState(6661);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,880,_ctx) ) {
			case 1:
				{
				setState(6660);
				match(SEMI);
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Database_optionspecContext extends ParserRuleContext {
		public Auto_optionContext auto_option() {
			return getRuleContext(Auto_optionContext.class,0);
		}
		public Change_tracking_optionContext change_tracking_option() {
			return getRuleContext(Change_tracking_optionContext.class,0);
		}
		public Containment_optionContext containment_option() {
			return getRuleContext(Containment_optionContext.class,0);
		}
		public Cursor_optionContext cursor_option() {
			return getRuleContext(Cursor_optionContext.class,0);
		}
		public Database_mirroring_optionContext database_mirroring_option() {
			return getRuleContext(Database_mirroring_optionContext.class,0);
		}
		public Date_correlation_optimization_optionContext date_correlation_optimization_option() {
			return getRuleContext(Date_correlation_optimization_optionContext.class,0);
		}
		public Db_encryption_optionContext db_encryption_option() {
			return getRuleContext(Db_encryption_optionContext.class,0);
		}
		public Db_state_optionContext db_state_option() {
			return getRuleContext(Db_state_optionContext.class,0);
		}
		public Db_update_optionContext db_update_option() {
			return getRuleContext(Db_update_optionContext.class,0);
		}
		public Db_user_access_optionContext db_user_access_option() {
			return getRuleContext(Db_user_access_optionContext.class,0);
		}
		public Delayed_durability_optionContext delayed_durability_option() {
			return getRuleContext(Delayed_durability_optionContext.class,0);
		}
		public External_access_optionContext external_access_option() {
			return getRuleContext(External_access_optionContext.class,0);
		}
		public TerminalNode FILESTREAM() { return getToken(TSqlParser.FILESTREAM, 0); }
		public Database_filestream_optionContext database_filestream_option() {
			return getRuleContext(Database_filestream_optionContext.class,0);
		}
		public Hadr_optionsContext hadr_options() {
			return getRuleContext(Hadr_optionsContext.class,0);
		}
		public Mixed_page_allocation_optionContext mixed_page_allocation_option() {
			return getRuleContext(Mixed_page_allocation_optionContext.class,0);
		}
		public Parameterization_optionContext parameterization_option() {
			return getRuleContext(Parameterization_optionContext.class,0);
		}
		public Recovery_optionContext recovery_option() {
			return getRuleContext(Recovery_optionContext.class,0);
		}
		public Service_broker_optionContext service_broker_option() {
			return getRuleContext(Service_broker_optionContext.class,0);
		}
		public Snapshot_optionContext snapshot_option() {
			return getRuleContext(Snapshot_optionContext.class,0);
		}
		public Sql_optionContext sql_option() {
			return getRuleContext(Sql_optionContext.class,0);
		}
		public Target_recovery_time_optionContext target_recovery_time_option() {
			return getRuleContext(Target_recovery_time_optionContext.class,0);
		}
		public TerminationContext termination() {
			return getRuleContext(TerminationContext.class,0);
		}
		public Database_optionspecContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_database_optionspec; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterDatabase_optionspec(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitDatabase_optionspec(this);
		}
	}

	public final Database_optionspecContext database_optionspec() throws RecognitionException {
		Database_optionspecContext _localctx = new Database_optionspecContext(_ctx, getState());
		enterRule(_localctx, 504, RULE_database_optionspec);
		try {
			setState(6686);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,881,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(6663);
				auto_option();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(6664);
				change_tracking_option();
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(6665);
				containment_option();
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(6666);
				cursor_option();
				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(6667);
				database_mirroring_option();
				}
				break;
			case 6:
				enterOuterAlt(_localctx, 6);
				{
				setState(6668);
				date_correlation_optimization_option();
				}
				break;
			case 7:
				enterOuterAlt(_localctx, 7);
				{
				setState(6669);
				db_encryption_option();
				}
				break;
			case 8:
				enterOuterAlt(_localctx, 8);
				{
				setState(6670);
				db_state_option();
				}
				break;
			case 9:
				enterOuterAlt(_localctx, 9);
				{
				setState(6671);
				db_update_option();
				}
				break;
			case 10:
				enterOuterAlt(_localctx, 10);
				{
				setState(6672);
				db_user_access_option();
				}
				break;
			case 11:
				enterOuterAlt(_localctx, 11);
				{
				setState(6673);
				delayed_durability_option();
				}
				break;
			case 12:
				enterOuterAlt(_localctx, 12);
				{
				setState(6674);
				external_access_option();
				}
				break;
			case 13:
				enterOuterAlt(_localctx, 13);
				{
				setState(6675);
				match(FILESTREAM);
				setState(6676);
				database_filestream_option();
				}
				break;
			case 14:
				enterOuterAlt(_localctx, 14);
				{
				setState(6677);
				hadr_options();
				}
				break;
			case 15:
				enterOuterAlt(_localctx, 15);
				{
				setState(6678);
				mixed_page_allocation_option();
				}
				break;
			case 16:
				enterOuterAlt(_localctx, 16);
				{
				setState(6679);
				parameterization_option();
				}
				break;
			case 17:
				enterOuterAlt(_localctx, 17);
				{
				setState(6680);
				recovery_option();
				}
				break;
			case 18:
				enterOuterAlt(_localctx, 18);
				{
				setState(6681);
				service_broker_option();
				}
				break;
			case 19:
				enterOuterAlt(_localctx, 19);
				{
				setState(6682);
				snapshot_option();
				}
				break;
			case 20:
				enterOuterAlt(_localctx, 20);
				{
				setState(6683);
				sql_option();
				}
				break;
			case 21:
				enterOuterAlt(_localctx, 21);
				{
				setState(6684);
				target_recovery_time_option();
				}
				break;
			case 22:
				enterOuterAlt(_localctx, 22);
				{
				setState(6685);
				termination();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Auto_optionContext extends ParserRuleContext {
		public TerminalNode AUTO_CLOSE() { return getToken(TSqlParser.AUTO_CLOSE, 0); }
		public On_offContext on_off() {
			return getRuleContext(On_offContext.class,0);
		}
		public TerminalNode AUTO_CREATE_STATISTICS() { return getToken(TSqlParser.AUTO_CREATE_STATISTICS, 0); }
		public TerminalNode OFF() { return getToken(TSqlParser.OFF, 0); }
		public List ON() { return getTokens(TSqlParser.ON); }
		public TerminalNode ON(int i) {
			return getToken(TSqlParser.ON, i);
		}
		public TerminalNode INCREMENTAL() { return getToken(TSqlParser.INCREMENTAL, 0); }
		public TerminalNode EQUAL() { return getToken(TSqlParser.EQUAL, 0); }
		public TerminalNode AUTO_SHRINK() { return getToken(TSqlParser.AUTO_SHRINK, 0); }
		public TerminalNode AUTO_UPDATE_STATISTICS() { return getToken(TSqlParser.AUTO_UPDATE_STATISTICS, 0); }
		public TerminalNode AUTO_UPDATE_STATISTICS_ASYNC() { return getToken(TSqlParser.AUTO_UPDATE_STATISTICS_ASYNC, 0); }
		public Auto_optionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_auto_option; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterAuto_option(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitAuto_option(this);
		}
	}

	public final Auto_optionContext auto_option() throws RecognitionException {
		Auto_optionContext _localctx = new Auto_optionContext(_ctx, getState());
		enterRule(_localctx, 506, RULE_auto_option);
		int _la;
		try {
			setState(6705);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case AUTO_CLOSE:
				enterOuterAlt(_localctx, 1);
				{
				setState(6688);
				match(AUTO_CLOSE);
				setState(6689);
				on_off();
				}
				break;
			case AUTO_CREATE_STATISTICS:
				enterOuterAlt(_localctx, 2);
				{
				setState(6690);
				match(AUTO_CREATE_STATISTICS);
				setState(6691);
				match(OFF);
				}
				break;
			case ON:
				enterOuterAlt(_localctx, 3);
				{
				setState(6692);
				match(ON);
				setState(6697);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case INCREMENTAL:
					{
					setState(6693);
					match(INCREMENTAL);
					setState(6694);
					match(EQUAL);
					setState(6695);
					match(ON);
					}
					break;
				case OFF:
					{
					setState(6696);
					match(OFF);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;
			case AUTO_SHRINK:
				enterOuterAlt(_localctx, 4);
				{
				setState(6699);
				match(AUTO_SHRINK);
				setState(6700);
				on_off();
				}
				break;
			case AUTO_UPDATE_STATISTICS:
				enterOuterAlt(_localctx, 5);
				{
				setState(6701);
				match(AUTO_UPDATE_STATISTICS);
				setState(6702);
				on_off();
				}
				break;
			case AUTO_UPDATE_STATISTICS_ASYNC:
				enterOuterAlt(_localctx, 6);
				{
				setState(6703);
				match(AUTO_UPDATE_STATISTICS_ASYNC);
				setState(6704);
				_la = _input.LA(1);
				if ( !(_la==OFF || _la==ON) ) {
				_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 Change_tracking_optionContext extends ParserRuleContext {
		public TerminalNode CHANGE_TRACKING() { return getToken(TSqlParser.CHANGE_TRACKING, 0); }
		public TerminalNode EQUAL() { return getToken(TSqlParser.EQUAL, 0); }
		public TerminalNode OFF() { return getToken(TSqlParser.OFF, 0); }
		public TerminalNode ON() { return getToken(TSqlParser.ON, 0); }
		public List change_tracking_option_list() {
			return getRuleContexts(Change_tracking_option_listContext.class);
		}
		public Change_tracking_option_listContext change_tracking_option_list(int i) {
			return getRuleContext(Change_tracking_option_listContext.class,i);
		}
		public List COMMA() { return getTokens(TSqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(TSqlParser.COMMA, i);
		}
		public Change_tracking_optionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_change_tracking_option; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterChange_tracking_option(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitChange_tracking_option(this);
		}
	}

	public final Change_tracking_optionContext change_tracking_option() throws RecognitionException {
		Change_tracking_optionContext _localctx = new Change_tracking_optionContext(_ctx, getState());
		enterRule(_localctx, 508, RULE_change_tracking_option);
		int _la;
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			setState(6707);
			match(CHANGE_TRACKING);
			setState(6708);
			match(EQUAL);
			setState(6724);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case OFF:
				{
				setState(6709);
				match(OFF);
				}
				break;
			case ON:
				{
				setState(6710);
				match(ON);
				setState(6721);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,885,_ctx);
				while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
					if ( _alt==1 ) {
						{
						{
						setState(6711);
						change_tracking_option_list();
						setState(6716);
						_errHandler.sync(this);
						_la = _input.LA(1);
						while (_la==COMMA) {
							{
							{
							setState(6712);
							match(COMMA);
							setState(6713);
							change_tracking_option_list();
							}
							}
							setState(6718);
							_errHandler.sync(this);
							_la = _input.LA(1);
						}
						}
						} 
					}
					setState(6723);
					_errHandler.sync(this);
					_alt = getInterpreter().adaptivePredict(_input,885,_ctx);
				}
				}
				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 Change_tracking_option_listContext extends ParserRuleContext {
		public TerminalNode AUTO_CLEANUP() { return getToken(TSqlParser.AUTO_CLEANUP, 0); }
		public TerminalNode EQUAL() { return getToken(TSqlParser.EQUAL, 0); }
		public On_offContext on_off() {
			return getRuleContext(On_offContext.class,0);
		}
		public TerminalNode CHANGE_RETENTION() { return getToken(TSqlParser.CHANGE_RETENTION, 0); }
		public TerminalNode DAYS() { return getToken(TSqlParser.DAYS, 0); }
		public TerminalNode HOURS() { return getToken(TSqlParser.HOURS, 0); }
		public TerminalNode MINUTES() { return getToken(TSqlParser.MINUTES, 0); }
		public Change_tracking_option_listContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_change_tracking_option_list; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterChange_tracking_option_list(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitChange_tracking_option_list(this);
		}
	}

	public final Change_tracking_option_listContext change_tracking_option_list() throws RecognitionException {
		Change_tracking_option_listContext _localctx = new Change_tracking_option_listContext(_ctx, getState());
		enterRule(_localctx, 510, RULE_change_tracking_option_list);
		int _la;
		try {
			setState(6732);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case AUTO_CLEANUP:
				enterOuterAlt(_localctx, 1);
				{
				setState(6726);
				match(AUTO_CLEANUP);
				setState(6727);
				match(EQUAL);
				setState(6728);
				on_off();
				}
				break;
			case CHANGE_RETENTION:
				enterOuterAlt(_localctx, 2);
				{
				setState(6729);
				match(CHANGE_RETENTION);
				setState(6730);
				match(EQUAL);
				setState(6731);
				_la = _input.LA(1);
				if ( !(_la==DAYS || _la==HOURS || _la==MINUTES) ) {
				_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 Containment_optionContext extends ParserRuleContext {
		public TerminalNode CONTAINMENT() { return getToken(TSqlParser.CONTAINMENT, 0); }
		public TerminalNode EQUAL() { return getToken(TSqlParser.EQUAL, 0); }
		public TerminalNode NONE() { return getToken(TSqlParser.NONE, 0); }
		public TerminalNode PARTIAL() { return getToken(TSqlParser.PARTIAL, 0); }
		public Containment_optionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_containment_option; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterContainment_option(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitContainment_option(this);
		}
	}

	public final Containment_optionContext containment_option() throws RecognitionException {
		Containment_optionContext _localctx = new Containment_optionContext(_ctx, getState());
		enterRule(_localctx, 512, RULE_containment_option);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6734);
			match(CONTAINMENT);
			setState(6735);
			match(EQUAL);
			setState(6736);
			_la = _input.LA(1);
			if ( !(_la==NONE || _la==PARTIAL) ) {
			_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 Cursor_optionContext extends ParserRuleContext {
		public TerminalNode CURSOR_CLOSE_ON_COMMIT() { return getToken(TSqlParser.CURSOR_CLOSE_ON_COMMIT, 0); }
		public On_offContext on_off() {
			return getRuleContext(On_offContext.class,0);
		}
		public TerminalNode CURSOR_DEFAULT() { return getToken(TSqlParser.CURSOR_DEFAULT, 0); }
		public TerminalNode LOCAL() { return getToken(TSqlParser.LOCAL, 0); }
		public TerminalNode GLOBAL() { return getToken(TSqlParser.GLOBAL, 0); }
		public Cursor_optionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_cursor_option; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterCursor_option(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitCursor_option(this);
		}
	}

	public final Cursor_optionContext cursor_option() throws RecognitionException {
		Cursor_optionContext _localctx = new Cursor_optionContext(_ctx, getState());
		enterRule(_localctx, 514, RULE_cursor_option);
		int _la;
		try {
			setState(6742);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case CURSOR_CLOSE_ON_COMMIT:
				enterOuterAlt(_localctx, 1);
				{
				setState(6738);
				match(CURSOR_CLOSE_ON_COMMIT);
				setState(6739);
				on_off();
				}
				break;
			case CURSOR_DEFAULT:
				enterOuterAlt(_localctx, 2);
				{
				setState(6740);
				match(CURSOR_DEFAULT);
				setState(6741);
				_la = _input.LA(1);
				if ( !(_la==GLOBAL || _la==LOCAL) ) {
				_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 Alter_endpointContext extends ParserRuleContext {
		public IdContext endpointname;
		public IdContext login;
		public Token state;
		public Token port;
		public IdContext cert_name;
		public TerminalNode ALTER() { return getToken(TSqlParser.ALTER, 0); }
		public TerminalNode ENDPOINT() { return getToken(TSqlParser.ENDPOINT, 0); }
		public TerminalNode AS() { return getToken(TSqlParser.AS, 0); }
		public TerminalNode TCP() { return getToken(TSqlParser.TCP, 0); }
		public List LR_BRACKET() { return getTokens(TSqlParser.LR_BRACKET); }
		public TerminalNode LR_BRACKET(int i) {
			return getToken(TSqlParser.LR_BRACKET, i);
		}
		public TerminalNode LISTENER_PORT() { return getToken(TSqlParser.LISTENER_PORT, 0); }
		public List EQUAL() { return getTokens(TSqlParser.EQUAL); }
		public TerminalNode EQUAL(int i) {
			return getToken(TSqlParser.EQUAL, i);
		}
		public List RR_BRACKET() { return getTokens(TSqlParser.RR_BRACKET); }
		public TerminalNode RR_BRACKET(int i) {
			return getToken(TSqlParser.RR_BRACKET, i);
		}
		public List id() {
			return getRuleContexts(IdContext.class);
		}
		public IdContext id(int i) {
			return getRuleContext(IdContext.class,i);
		}
		public List DECIMAL() { return getTokens(TSqlParser.DECIMAL); }
		public TerminalNode DECIMAL(int i) {
			return getToken(TSqlParser.DECIMAL, i);
		}
		public TerminalNode TSQL() { return getToken(TSqlParser.TSQL, 0); }
		public TerminalNode FOR() { return getToken(TSqlParser.FOR, 0); }
		public TerminalNode SERVICE_BROKER() { return getToken(TSqlParser.SERVICE_BROKER, 0); }
		public TerminalNode AUTHENTICATION() { return getToken(TSqlParser.AUTHENTICATION, 0); }
		public TerminalNode DATABASE_MIRRORING() { return getToken(TSqlParser.DATABASE_MIRRORING, 0); }
		public TerminalNode ROLE() { return getToken(TSqlParser.ROLE, 0); }
		public TerminalNode AUTHORIZATION() { return getToken(TSqlParser.AUTHORIZATION, 0); }
		public TerminalNode STATE() { return getToken(TSqlParser.STATE, 0); }
		public List COMMA() { return getTokens(TSqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(TSqlParser.COMMA, i);
		}
		public TerminalNode LISTENER_IP() { return getToken(TSqlParser.LISTENER_IP, 0); }
		public TerminalNode WITNESS() { return getToken(TSqlParser.WITNESS, 0); }
		public TerminalNode PARTNER() { return getToken(TSqlParser.PARTNER, 0); }
		public List ALL() { return getTokens(TSqlParser.ALL); }
		public TerminalNode ALL(int i) {
			return getToken(TSqlParser.ALL, i);
		}
		public TerminalNode IPV4_ADDR() { return getToken(TSqlParser.IPV4_ADDR, 0); }
		public TerminalNode IPV6_ADDR() { return getToken(TSqlParser.IPV6_ADDR, 0); }
		public TerminalNode WINDOWS() { return getToken(TSqlParser.WINDOWS, 0); }
		public TerminalNode CERTIFICATE() { return getToken(TSqlParser.CERTIFICATE, 0); }
		public TerminalNode ENCRYPTION() { return getToken(TSqlParser.ENCRYPTION, 0); }
		public TerminalNode MESSAGE_FORWARDING() { return getToken(TSqlParser.MESSAGE_FORWARDING, 0); }
		public TerminalNode MESSAGE_FORWARD_SIZE() { return getToken(TSqlParser.MESSAGE_FORWARD_SIZE, 0); }
		public TerminalNode STARTED() { return getToken(TSqlParser.STARTED, 0); }
		public TerminalNode STOPPED() { return getToken(TSqlParser.STOPPED, 0); }
		public List DISABLED() { return getTokens(TSqlParser.DISABLED); }
		public TerminalNode DISABLED(int i) {
			return getToken(TSqlParser.DISABLED, i);
		}
		public TerminalNode SUPPORTED() { return getToken(TSqlParser.SUPPORTED, 0); }
		public TerminalNode REQUIRED() { return getToken(TSqlParser.REQUIRED, 0); }
		public TerminalNode ENABLED() { return getToken(TSqlParser.ENABLED, 0); }
		public TerminalNode NTLM() { return getToken(TSqlParser.NTLM, 0); }
		public TerminalNode KERBEROS() { return getToken(TSqlParser.KERBEROS, 0); }
		public TerminalNode NEGOTIATE() { return getToken(TSqlParser.NEGOTIATE, 0); }
		public TerminalNode ALGORITHM() { return getToken(TSqlParser.ALGORITHM, 0); }
		public TerminalNode AES() { return getToken(TSqlParser.AES, 0); }
		public TerminalNode RC4() { return getToken(TSqlParser.RC4, 0); }
		public Alter_endpointContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alter_endpoint; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterAlter_endpoint(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitAlter_endpoint(this);
		}
	}

	public final Alter_endpointContext alter_endpoint() throws RecognitionException {
		Alter_endpointContext _localctx = new Alter_endpointContext(_ctx, getState());
		enterRule(_localctx, 516, RULE_alter_endpoint);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6744);
			match(ALTER);
			setState(6745);
			match(ENDPOINT);
			setState(6746);
			((Alter_endpointContext)_localctx).endpointname = id();
			setState(6749);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==AUTHORIZATION) {
				{
				setState(6747);
				match(AUTHORIZATION);
				setState(6748);
				((Alter_endpointContext)_localctx).login = id();
				}
			}

			setState(6758);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==STATE) {
				{
				setState(6751);
				match(STATE);
				setState(6752);
				match(EQUAL);
				setState(6756);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case STARTED:
					{
					setState(6753);
					((Alter_endpointContext)_localctx).state = match(STARTED);
					}
					break;
				case STOPPED:
					{
					setState(6754);
					((Alter_endpointContext)_localctx).state = match(STOPPED);
					}
					break;
				case DISABLED:
					{
					setState(6755);
					((Alter_endpointContext)_localctx).state = match(DISABLED);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
			}

			setState(6760);
			match(AS);
			setState(6761);
			match(TCP);
			setState(6762);
			match(LR_BRACKET);
			setState(6763);
			match(LISTENER_PORT);
			setState(6764);
			match(EQUAL);
			setState(6765);
			((Alter_endpointContext)_localctx).port = match(DECIMAL);
			setState(6770);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==COMMA) {
				{
				setState(6766);
				match(COMMA);
				setState(6767);
				match(LISTENER_IP);
				setState(6768);
				match(EQUAL);
				setState(6769);
				_la = _input.LA(1);
				if ( !(_la==ALL || _la==IPV4_ADDR || _la==IPV6_ADDR) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
			}

			setState(6772);
			match(RR_BRACKET);
			setState(6882);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,916,_ctx) ) {
			case 1:
				{
				setState(6773);
				match(TSQL);
				}
				break;
			case 2:
				{
				setState(6774);
				match(FOR);
				setState(6775);
				match(SERVICE_BROKER);
				setState(6776);
				match(LR_BRACKET);
				setState(6777);
				match(AUTHENTICATION);
				setState(6778);
				match(EQUAL);
				setState(6795);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case WINDOWS:
					{
					setState(6779);
					match(WINDOWS);
					setState(6781);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (((((_la - 170)) & ~0x3f) == 0 && ((1L << (_la - 170)) & ((1L << (KERBEROS - 170)) | (1L << (NEGOTIATE - 170)) | (1L << (NTLM - 170)))) != 0)) {
						{
						setState(6780);
						_la = _input.LA(1);
						if ( !(((((_la - 170)) & ~0x3f) == 0 && ((1L << (_la - 170)) & ((1L << (KERBEROS - 170)) | (1L << (NEGOTIATE - 170)) | (1L << (NTLM - 170)))) != 0)) ) {
						_errHandler.recoverInline(this);
						}
						else {
							if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
							_errHandler.reportMatch(this);
							consume();
						}
						}
					}

					setState(6785);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==CERTIFICATE) {
						{
						setState(6783);
						match(CERTIFICATE);
						setState(6784);
						((Alter_endpointContext)_localctx).cert_name = id();
						}
					}

					}
					break;
				case CERTIFICATE:
					{
					setState(6787);
					match(CERTIFICATE);
					setState(6788);
					((Alter_endpointContext)_localctx).cert_name = id();
					setState(6790);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==WINDOWS) {
						{
						setState(6789);
						match(WINDOWS);
						}
					}

					setState(6793);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (((((_la - 170)) & ~0x3f) == 0 && ((1L << (_la - 170)) & ((1L << (KERBEROS - 170)) | (1L << (NEGOTIATE - 170)) | (1L << (NTLM - 170)))) != 0)) {
						{
						setState(6792);
						_la = _input.LA(1);
						if ( !(((((_la - 170)) & ~0x3f) == 0 && ((1L << (_la - 170)) & ((1L << (KERBEROS - 170)) | (1L << (NEGOTIATE - 170)) | (1L << (NTLM - 170)))) != 0)) ) {
						_errHandler.recoverInline(this);
						}
						else {
							if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
							_errHandler.reportMatch(this);
							consume();
						}
						}
					}

					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				setState(6814);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,901,_ctx) ) {
				case 1:
					{
					setState(6798);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==COMMA) {
						{
						setState(6797);
						match(COMMA);
						}
					}

					setState(6800);
					match(ENCRYPTION);
					setState(6801);
					match(EQUAL);
					setState(6802);
					_la = _input.LA(1);
					if ( !(_la==REQUIRED || _la==SUPPORTED || _la==DISABLED) ) {
					_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					setState(6812);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==ALGORITHM) {
						{
						setState(6803);
						match(ALGORITHM);
						setState(6810);
						_errHandler.sync(this);
						switch ( getInterpreter().adaptivePredict(_input,899,_ctx) ) {
						case 1:
							{
							setState(6804);
							match(AES);
							}
							break;
						case 2:
							{
							setState(6805);
							match(RC4);
							}
							break;
						case 3:
							{
							setState(6806);
							match(AES);
							setState(6807);
							match(RC4);
							}
							break;
						case 4:
							{
							setState(6808);
							match(RC4);
							setState(6809);
							match(AES);
							}
							break;
						}
						}
					}

					}
					break;
				}
				setState(6822);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,903,_ctx) ) {
				case 1:
					{
					setState(6817);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==COMMA) {
						{
						setState(6816);
						match(COMMA);
						}
					}

					setState(6819);
					match(MESSAGE_FORWARDING);
					setState(6820);
					match(EQUAL);
					setState(6821);
					_la = _input.LA(1);
					if ( !(_la==ENABLED || _la==DISABLED) ) {
					_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					}
					break;
				}
				setState(6830);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==MESSAGE_FORWARD_SIZE || _la==COMMA) {
					{
					setState(6825);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==COMMA) {
						{
						setState(6824);
						match(COMMA);
						}
					}

					setState(6827);
					match(MESSAGE_FORWARD_SIZE);
					setState(6828);
					match(EQUAL);
					setState(6829);
					match(DECIMAL);
					}
				}

				setState(6832);
				match(RR_BRACKET);
				}
				break;
			case 3:
				{
				setState(6833);
				match(FOR);
				setState(6834);
				match(DATABASE_MIRRORING);
				setState(6835);
				match(LR_BRACKET);
				setState(6836);
				match(AUTHENTICATION);
				setState(6837);
				match(EQUAL);
				setState(6854);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case WINDOWS:
					{
					setState(6838);
					match(WINDOWS);
					setState(6840);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (((((_la - 170)) & ~0x3f) == 0 && ((1L << (_la - 170)) & ((1L << (KERBEROS - 170)) | (1L << (NEGOTIATE - 170)) | (1L << (NTLM - 170)))) != 0)) {
						{
						setState(6839);
						_la = _input.LA(1);
						if ( !(((((_la - 170)) & ~0x3f) == 0 && ((1L << (_la - 170)) & ((1L << (KERBEROS - 170)) | (1L << (NEGOTIATE - 170)) | (1L << (NTLM - 170)))) != 0)) ) {
						_errHandler.recoverInline(this);
						}
						else {
							if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
							_errHandler.reportMatch(this);
							consume();
						}
						}
					}

					setState(6844);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==CERTIFICATE) {
						{
						setState(6842);
						match(CERTIFICATE);
						setState(6843);
						((Alter_endpointContext)_localctx).cert_name = id();
						}
					}

					}
					break;
				case CERTIFICATE:
					{
					setState(6846);
					match(CERTIFICATE);
					setState(6847);
					((Alter_endpointContext)_localctx).cert_name = id();
					setState(6849);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==WINDOWS) {
						{
						setState(6848);
						match(WINDOWS);
						}
					}

					setState(6852);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (((((_la - 170)) & ~0x3f) == 0 && ((1L << (_la - 170)) & ((1L << (KERBEROS - 170)) | (1L << (NEGOTIATE - 170)) | (1L << (NTLM - 170)))) != 0)) {
						{
						setState(6851);
						_la = _input.LA(1);
						if ( !(((((_la - 170)) & ~0x3f) == 0 && ((1L << (_la - 170)) & ((1L << (KERBEROS - 170)) | (1L << (NEGOTIATE - 170)) | (1L << (NTLM - 170)))) != 0)) ) {
						_errHandler.recoverInline(this);
						}
						else {
							if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
							_errHandler.reportMatch(this);
							consume();
						}
						}
					}

					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				setState(6873);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,914,_ctx) ) {
				case 1:
					{
					setState(6857);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==COMMA) {
						{
						setState(6856);
						match(COMMA);
						}
					}

					setState(6859);
					match(ENCRYPTION);
					setState(6860);
					match(EQUAL);
					setState(6861);
					_la = _input.LA(1);
					if ( !(_la==REQUIRED || _la==SUPPORTED || _la==DISABLED) ) {
					_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					setState(6871);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==ALGORITHM) {
						{
						setState(6862);
						match(ALGORITHM);
						setState(6869);
						_errHandler.sync(this);
						switch ( getInterpreter().adaptivePredict(_input,912,_ctx) ) {
						case 1:
							{
							setState(6863);
							match(AES);
							}
							break;
						case 2:
							{
							setState(6864);
							match(RC4);
							}
							break;
						case 3:
							{
							setState(6865);
							match(AES);
							setState(6866);
							match(RC4);
							}
							break;
						case 4:
							{
							setState(6867);
							match(RC4);
							setState(6868);
							match(AES);
							}
							break;
						}
						}
					}

					}
					break;
				}
				setState(6876);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==COMMA) {
					{
					setState(6875);
					match(COMMA);
					}
				}

				setState(6878);
				match(ROLE);
				setState(6879);
				match(EQUAL);
				setState(6880);
				_la = _input.LA(1);
				if ( !(_la==ALL || _la==WITNESS || _la==PARTNER) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(6881);
				match(RR_BRACKET);
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Database_mirroring_optionContext extends ParserRuleContext {
		public Mirroring_set_optionContext mirroring_set_option() {
			return getRuleContext(Mirroring_set_optionContext.class,0);
		}
		public Database_mirroring_optionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_database_mirroring_option; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterDatabase_mirroring_option(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitDatabase_mirroring_option(this);
		}
	}

	public final Database_mirroring_optionContext database_mirroring_option() throws RecognitionException {
		Database_mirroring_optionContext _localctx = new Database_mirroring_optionContext(_ctx, getState());
		enterRule(_localctx, 518, RULE_database_mirroring_option);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6884);
			mirroring_set_option();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Mirroring_set_optionContext extends ParserRuleContext {
		public Mirroring_partnerContext mirroring_partner() {
			return getRuleContext(Mirroring_partnerContext.class,0);
		}
		public Partner_optionContext partner_option() {
			return getRuleContext(Partner_optionContext.class,0);
		}
		public Mirroring_witnessContext mirroring_witness() {
			return getRuleContext(Mirroring_witnessContext.class,0);
		}
		public Witness_optionContext witness_option() {
			return getRuleContext(Witness_optionContext.class,0);
		}
		public Mirroring_set_optionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_mirroring_set_option; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterMirroring_set_option(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitMirroring_set_option(this);
		}
	}

	public final Mirroring_set_optionContext mirroring_set_option() throws RecognitionException {
		Mirroring_set_optionContext _localctx = new Mirroring_set_optionContext(_ctx, getState());
		enterRule(_localctx, 520, RULE_mirroring_set_option);
		try {
			setState(6892);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case PARTNER:
				enterOuterAlt(_localctx, 1);
				{
				setState(6886);
				mirroring_partner();
				setState(6887);
				partner_option();
				}
				break;
			case WITNESS:
				enterOuterAlt(_localctx, 2);
				{
				setState(6889);
				mirroring_witness();
				setState(6890);
				witness_option();
				}
				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 Mirroring_partnerContext extends ParserRuleContext {
		public TerminalNode PARTNER() { return getToken(TSqlParser.PARTNER, 0); }
		public Mirroring_partnerContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_mirroring_partner; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterMirroring_partner(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitMirroring_partner(this);
		}
	}

	public final Mirroring_partnerContext mirroring_partner() throws RecognitionException {
		Mirroring_partnerContext _localctx = new Mirroring_partnerContext(_ctx, getState());
		enterRule(_localctx, 522, RULE_mirroring_partner);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6894);
			match(PARTNER);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Mirroring_witnessContext extends ParserRuleContext {
		public TerminalNode WITNESS() { return getToken(TSqlParser.WITNESS, 0); }
		public Mirroring_witnessContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_mirroring_witness; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterMirroring_witness(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitMirroring_witness(this);
		}
	}

	public final Mirroring_witnessContext mirroring_witness() throws RecognitionException {
		Mirroring_witnessContext _localctx = new Mirroring_witnessContext(_ctx, getState());
		enterRule(_localctx, 524, RULE_mirroring_witness);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6896);
			match(WITNESS);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Witness_partner_equalContext extends ParserRuleContext {
		public TerminalNode EQUAL() { return getToken(TSqlParser.EQUAL, 0); }
		public Witness_partner_equalContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_witness_partner_equal; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterWitness_partner_equal(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitWitness_partner_equal(this);
		}
	}

	public final Witness_partner_equalContext witness_partner_equal() throws RecognitionException {
		Witness_partner_equalContext _localctx = new Witness_partner_equalContext(_ctx, getState());
		enterRule(_localctx, 526, RULE_witness_partner_equal);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6898);
			match(EQUAL);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Partner_optionContext extends ParserRuleContext {
		public Witness_partner_equalContext witness_partner_equal() {
			return getRuleContext(Witness_partner_equalContext.class,0);
		}
		public Partner_serverContext partner_server() {
			return getRuleContext(Partner_serverContext.class,0);
		}
		public TerminalNode FAILOVER() { return getToken(TSqlParser.FAILOVER, 0); }
		public TerminalNode FORCE_SERVICE_ALLOW_DATA_LOSS() { return getToken(TSqlParser.FORCE_SERVICE_ALLOW_DATA_LOSS, 0); }
		public TerminalNode OFF() { return getToken(TSqlParser.OFF, 0); }
		public TerminalNode RESUME() { return getToken(TSqlParser.RESUME, 0); }
		public TerminalNode SAFETY() { return getToken(TSqlParser.SAFETY, 0); }
		public TerminalNode FULL() { return getToken(TSqlParser.FULL, 0); }
		public TerminalNode SUSPEND() { return getToken(TSqlParser.SUSPEND, 0); }
		public TerminalNode TIMEOUT() { return getToken(TSqlParser.TIMEOUT, 0); }
		public TerminalNode DECIMAL() { return getToken(TSqlParser.DECIMAL, 0); }
		public Partner_optionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_partner_option; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterPartner_option(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitPartner_option(this);
		}
	}

	public final Partner_optionContext partner_option() throws RecognitionException {
		Partner_optionContext _localctx = new Partner_optionContext(_ctx, getState());
		enterRule(_localctx, 528, RULE_partner_option);
		int _la;
		try {
			setState(6912);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case EQUAL:
				enterOuterAlt(_localctx, 1);
				{
				setState(6900);
				witness_partner_equal();
				setState(6901);
				partner_server();
				}
				break;
			case FAILOVER:
				enterOuterAlt(_localctx, 2);
				{
				setState(6903);
				match(FAILOVER);
				}
				break;
			case FORCE_SERVICE_ALLOW_DATA_LOSS:
				enterOuterAlt(_localctx, 3);
				{
				setState(6904);
				match(FORCE_SERVICE_ALLOW_DATA_LOSS);
				}
				break;
			case OFF:
				enterOuterAlt(_localctx, 4);
				{
				setState(6905);
				match(OFF);
				}
				break;
			case RESUME:
				enterOuterAlt(_localctx, 5);
				{
				setState(6906);
				match(RESUME);
				}
				break;
			case SAFETY:
				enterOuterAlt(_localctx, 6);
				{
				setState(6907);
				match(SAFETY);
				setState(6908);
				_la = _input.LA(1);
				if ( !(_la==FULL || _la==OFF) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
				break;
			case SUSPEND:
				enterOuterAlt(_localctx, 7);
				{
				setState(6909);
				match(SUSPEND);
				}
				break;
			case TIMEOUT:
				enterOuterAlt(_localctx, 8);
				{
				setState(6910);
				match(TIMEOUT);
				setState(6911);
				match(DECIMAL);
				}
				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 Witness_optionContext extends ParserRuleContext {
		public Witness_partner_equalContext witness_partner_equal() {
			return getRuleContext(Witness_partner_equalContext.class,0);
		}
		public Witness_serverContext witness_server() {
			return getRuleContext(Witness_serverContext.class,0);
		}
		public TerminalNode OFF() { return getToken(TSqlParser.OFF, 0); }
		public Witness_optionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_witness_option; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterWitness_option(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitWitness_option(this);
		}
	}

	public final Witness_optionContext witness_option() throws RecognitionException {
		Witness_optionContext _localctx = new Witness_optionContext(_ctx, getState());
		enterRule(_localctx, 530, RULE_witness_option);
		try {
			setState(6918);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case EQUAL:
				enterOuterAlt(_localctx, 1);
				{
				setState(6914);
				witness_partner_equal();
				setState(6915);
				witness_server();
				}
				break;
			case OFF:
				enterOuterAlt(_localctx, 2);
				{
				setState(6917);
				match(OFF);
				}
				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 Witness_serverContext extends ParserRuleContext {
		public Partner_serverContext partner_server() {
			return getRuleContext(Partner_serverContext.class,0);
		}
		public Witness_serverContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_witness_server; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterWitness_server(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitWitness_server(this);
		}
	}

	public final Witness_serverContext witness_server() throws RecognitionException {
		Witness_serverContext _localctx = new Witness_serverContext(_ctx, getState());
		enterRule(_localctx, 532, RULE_witness_server);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6920);
			partner_server();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Partner_serverContext extends ParserRuleContext {
		public Partner_server_tcp_prefixContext partner_server_tcp_prefix() {
			return getRuleContext(Partner_server_tcp_prefixContext.class,0);
		}
		public HostContext host() {
			return getRuleContext(HostContext.class,0);
		}
		public Mirroring_host_port_seperatorContext mirroring_host_port_seperator() {
			return getRuleContext(Mirroring_host_port_seperatorContext.class,0);
		}
		public Port_numberContext port_number() {
			return getRuleContext(Port_numberContext.class,0);
		}
		public Partner_serverContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_partner_server; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterPartner_server(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitPartner_server(this);
		}
	}

	public final Partner_serverContext partner_server() throws RecognitionException {
		Partner_serverContext _localctx = new Partner_serverContext(_ctx, getState());
		enterRule(_localctx, 534, RULE_partner_server);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6922);
			partner_server_tcp_prefix();
			setState(6923);
			host();
			setState(6924);
			mirroring_host_port_seperator();
			setState(6925);
			port_number();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Mirroring_host_port_seperatorContext extends ParserRuleContext {
		public TerminalNode COLON() { return getToken(TSqlParser.COLON, 0); }
		public Mirroring_host_port_seperatorContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_mirroring_host_port_seperator; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterMirroring_host_port_seperator(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitMirroring_host_port_seperator(this);
		}
	}

	public final Mirroring_host_port_seperatorContext mirroring_host_port_seperator() throws RecognitionException {
		Mirroring_host_port_seperatorContext _localctx = new Mirroring_host_port_seperatorContext(_ctx, getState());
		enterRule(_localctx, 536, RULE_mirroring_host_port_seperator);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6927);
			match(COLON);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Partner_server_tcp_prefixContext extends ParserRuleContext {
		public TerminalNode TCP() { return getToken(TSqlParser.TCP, 0); }
		public TerminalNode COLON() { return getToken(TSqlParser.COLON, 0); }
		public TerminalNode DOUBLE_FORWARD_SLASH() { return getToken(TSqlParser.DOUBLE_FORWARD_SLASH, 0); }
		public Partner_server_tcp_prefixContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_partner_server_tcp_prefix; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterPartner_server_tcp_prefix(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitPartner_server_tcp_prefix(this);
		}
	}

	public final Partner_server_tcp_prefixContext partner_server_tcp_prefix() throws RecognitionException {
		Partner_server_tcp_prefixContext _localctx = new Partner_server_tcp_prefixContext(_ctx, getState());
		enterRule(_localctx, 538, RULE_partner_server_tcp_prefix);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6929);
			match(TCP);
			setState(6930);
			match(COLON);
			setState(6931);
			match(DOUBLE_FORWARD_SLASH);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Port_numberContext extends ParserRuleContext {
		public Token port;
		public TerminalNode DECIMAL() { return getToken(TSqlParser.DECIMAL, 0); }
		public Port_numberContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_port_number; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterPort_number(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitPort_number(this);
		}
	}

	public final Port_numberContext port_number() throws RecognitionException {
		Port_numberContext _localctx = new Port_numberContext(_ctx, getState());
		enterRule(_localctx, 540, RULE_port_number);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6933);
			((Port_numberContext)_localctx).port = match(DECIMAL);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class HostContext extends ParserRuleContext {
		public IdContext id() {
			return getRuleContext(IdContext.class,0);
		}
		public TerminalNode DOT() { return getToken(TSqlParser.DOT, 0); }
		public HostContext host() {
			return getRuleContext(HostContext.class,0);
		}
		public HostContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_host; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterHost(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitHost(this);
		}
	}

	public final HostContext host() throws RecognitionException {
		HostContext _localctx = new HostContext(_ctx, getState());
		enterRule(_localctx, 542, RULE_host);
		try {
			setState(6945);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,921,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(6935);
				id();
				setState(6936);
				match(DOT);
				setState(6937);
				host();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(6943);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,920,_ctx) ) {
				case 1:
					{
					setState(6939);
					id();
					setState(6940);
					match(DOT);
					}
					break;
				case 2:
					{
					setState(6942);
					id();
					}
					break;
				}
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Date_correlation_optimization_optionContext extends ParserRuleContext {
		public TerminalNode DATE_CORRELATION_OPTIMIZATION() { return getToken(TSqlParser.DATE_CORRELATION_OPTIMIZATION, 0); }
		public On_offContext on_off() {
			return getRuleContext(On_offContext.class,0);
		}
		public Date_correlation_optimization_optionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_date_correlation_optimization_option; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterDate_correlation_optimization_option(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitDate_correlation_optimization_option(this);
		}
	}

	public final Date_correlation_optimization_optionContext date_correlation_optimization_option() throws RecognitionException {
		Date_correlation_optimization_optionContext _localctx = new Date_correlation_optimization_optionContext(_ctx, getState());
		enterRule(_localctx, 544, RULE_date_correlation_optimization_option);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6947);
			match(DATE_CORRELATION_OPTIMIZATION);
			setState(6948);
			on_off();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Db_encryption_optionContext extends ParserRuleContext {
		public TerminalNode ENCRYPTION() { return getToken(TSqlParser.ENCRYPTION, 0); }
		public On_offContext on_off() {
			return getRuleContext(On_offContext.class,0);
		}
		public Db_encryption_optionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_db_encryption_option; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterDb_encryption_option(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitDb_encryption_option(this);
		}
	}

	public final Db_encryption_optionContext db_encryption_option() throws RecognitionException {
		Db_encryption_optionContext _localctx = new Db_encryption_optionContext(_ctx, getState());
		enterRule(_localctx, 546, RULE_db_encryption_option);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6950);
			match(ENCRYPTION);
			setState(6951);
			on_off();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Db_state_optionContext extends ParserRuleContext {
		public TerminalNode ONLINE() { return getToken(TSqlParser.ONLINE, 0); }
		public TerminalNode OFFLINE() { return getToken(TSqlParser.OFFLINE, 0); }
		public TerminalNode EMERGENCY() { return getToken(TSqlParser.EMERGENCY, 0); }
		public Db_state_optionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_db_state_option; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterDb_state_option(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitDb_state_option(this);
		}
	}

	public final Db_state_optionContext db_state_option() throws RecognitionException {
		Db_state_optionContext _localctx = new Db_state_optionContext(_ctx, getState());
		enterRule(_localctx, 548, RULE_db_state_option);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6953);
			_la = _input.LA(1);
			if ( !(_la==EMERGENCY || _la==OFFLINE || _la==ONLINE) ) {
			_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 Db_update_optionContext extends ParserRuleContext {
		public TerminalNode READ_ONLY() { return getToken(TSqlParser.READ_ONLY, 0); }
		public TerminalNode READ_WRITE() { return getToken(TSqlParser.READ_WRITE, 0); }
		public Db_update_optionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_db_update_option; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterDb_update_option(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitDb_update_option(this);
		}
	}

	public final Db_update_optionContext db_update_option() throws RecognitionException {
		Db_update_optionContext _localctx = new Db_update_optionContext(_ctx, getState());
		enterRule(_localctx, 550, RULE_db_update_option);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6955);
			_la = _input.LA(1);
			if ( !(_la==READ_ONLY || _la==READ_WRITE) ) {
			_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 Db_user_access_optionContext extends ParserRuleContext {
		public TerminalNode SINGLE_USER() { return getToken(TSqlParser.SINGLE_USER, 0); }
		public TerminalNode RESTRICTED_USER() { return getToken(TSqlParser.RESTRICTED_USER, 0); }
		public TerminalNode MULTI_USER() { return getToken(TSqlParser.MULTI_USER, 0); }
		public Db_user_access_optionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_db_user_access_option; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterDb_user_access_option(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitDb_user_access_option(this);
		}
	}

	public final Db_user_access_optionContext db_user_access_option() throws RecognitionException {
		Db_user_access_optionContext _localctx = new Db_user_access_optionContext(_ctx, getState());
		enterRule(_localctx, 552, RULE_db_user_access_option);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6957);
			_la = _input.LA(1);
			if ( !(_la==MULTI_USER || _la==RESTRICTED_USER || _la==SINGLE_USER) ) {
			_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 Delayed_durability_optionContext extends ParserRuleContext {
		public TerminalNode DELAYED_DURABILITY() { return getToken(TSqlParser.DELAYED_DURABILITY, 0); }
		public TerminalNode EQUAL() { return getToken(TSqlParser.EQUAL, 0); }
		public TerminalNode DISABLED() { return getToken(TSqlParser.DISABLED, 0); }
		public TerminalNode ALLOWED() { return getToken(TSqlParser.ALLOWED, 0); }
		public TerminalNode FORCED() { return getToken(TSqlParser.FORCED, 0); }
		public Delayed_durability_optionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_delayed_durability_option; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterDelayed_durability_option(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitDelayed_durability_option(this);
		}
	}

	public final Delayed_durability_optionContext delayed_durability_option() throws RecognitionException {
		Delayed_durability_optionContext _localctx = new Delayed_durability_optionContext(_ctx, getState());
		enterRule(_localctx, 554, RULE_delayed_durability_option);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6959);
			match(DELAYED_DURABILITY);
			setState(6960);
			match(EQUAL);
			setState(6961);
			_la = _input.LA(1);
			if ( !(_la==ALLOWED || _la==DISABLED || _la==FORCED) ) {
			_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 External_access_optionContext extends ParserRuleContext {
		public TerminalNode DB_CHAINING() { return getToken(TSqlParser.DB_CHAINING, 0); }
		public On_offContext on_off() {
			return getRuleContext(On_offContext.class,0);
		}
		public TerminalNode TRUSTWORTHY() { return getToken(TSqlParser.TRUSTWORTHY, 0); }
		public TerminalNode DEFAULT_LANGUAGE() { return getToken(TSqlParser.DEFAULT_LANGUAGE, 0); }
		public TerminalNode EQUAL() { return getToken(TSqlParser.EQUAL, 0); }
		public IdContext id() {
			return getRuleContext(IdContext.class,0);
		}
		public TerminalNode STRING() { return getToken(TSqlParser.STRING, 0); }
		public TerminalNode DEFAULT_FULLTEXT_LANGUAGE() { return getToken(TSqlParser.DEFAULT_FULLTEXT_LANGUAGE, 0); }
		public TerminalNode NESTED_TRIGGERS() { return getToken(TSqlParser.NESTED_TRIGGERS, 0); }
		public TerminalNode OFF() { return getToken(TSqlParser.OFF, 0); }
		public TerminalNode ON() { return getToken(TSqlParser.ON, 0); }
		public TerminalNode TRANSFORM_NOISE_WORDS() { return getToken(TSqlParser.TRANSFORM_NOISE_WORDS, 0); }
		public TerminalNode TWO_DIGIT_YEAR_CUTOFF() { return getToken(TSqlParser.TWO_DIGIT_YEAR_CUTOFF, 0); }
		public TerminalNode DECIMAL() { return getToken(TSqlParser.DECIMAL, 0); }
		public External_access_optionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_external_access_option; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterExternal_access_option(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitExternal_access_option(this);
		}
	}

	public final External_access_optionContext external_access_option() throws RecognitionException {
		External_access_optionContext _localctx = new External_access_optionContext(_ctx, getState());
		enterRule(_localctx, 556, RULE_external_access_option);
		int _la;
		try {
			setState(6988);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case DB_CHAINING:
				enterOuterAlt(_localctx, 1);
				{
				setState(6963);
				match(DB_CHAINING);
				setState(6964);
				on_off();
				}
				break;
			case TRUSTWORTHY:
				enterOuterAlt(_localctx, 2);
				{
				setState(6965);
				match(TRUSTWORTHY);
				setState(6966);
				on_off();
				}
				break;
			case DEFAULT_LANGUAGE:
				enterOuterAlt(_localctx, 3);
				{
				setState(6967);
				match(DEFAULT_LANGUAGE);
				setState(6968);
				match(EQUAL);
				setState(6971);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case CALLED:
				case DATA_COMPRESSION:
				case EVENTDATA:
				case FILENAME:
				case FILLFACTOR:
				case FORCESEEK:
				case INIT:
				case KEY:
				case MASTER:
				case MAX_MEMORY:
				case OFFSETS:
				case PAGE:
				case PUBLIC:
				case R:
				case RAW:
				case RETURN:
				case RETURNS:
				case ROWCOUNT:
				case SAFETY:
				case SERVER:
				case SID:
				case SOURCE:
				case STATE:
				case START:
				case TARGET:
				case ABSOLUTE:
				case ACCENT_SENSITIVITY:
				case ACTION:
				case ACTIVATION:
				case ACTIVE:
				case ADDRESS:
				case AES_128:
				case AES_192:
				case AES_256:
				case AFFINITY:
				case AFTER:
				case AGGREGATE:
				case ALGORITHM:
				case ALLOW_ENCRYPTED_VALUE_MODIFICATIONS:
				case ALLOW_SNAPSHOT_ISOLATION:
				case ALLOWED:
				case ANSI_NULL_DEFAULT:
				case ANSI_NULLS:
				case ANSI_PADDING:
				case ANSI_WARNINGS:
				case APPLICATION_LOG:
				case APPLY:
				case ARITHABORT:
				case ASSEMBLY:
				case AUDIT:
				case AUDIT_GUID:
				case AUTO:
				case AUTO_CLEANUP:
				case AUTO_CLOSE:
				case AUTO_CREATE_STATISTICS:
				case AUTO_SHRINK:
				case AUTO_UPDATE_STATISTICS:
				case AUTO_UPDATE_STATISTICS_ASYNC:
				case AVAILABILITY:
				case AVG:
				case BACKUP_PRIORITY:
				case BEGIN_DIALOG:
				case BIGINT:
				case BINARY_BASE64:
				case BINARY_CHECKSUM:
				case BINDING:
				case BLOB_STORAGE:
				case BROKER:
				case BROKER_INSTANCE:
				case BULK_LOGGED:
				case CALLER:
				case CAP_CPU_PERCENT:
				case CAST:
				case CATALOG:
				case CATCH:
				case CHANGE_RETENTION:
				case CHANGE_TRACKING:
				case CHECKSUM:
				case CHECKSUM_AGG:
				case CLEANUP:
				case COLLECTION:
				case COLUMN_MASTER_KEY:
				case COMMITTED:
				case COMPATIBILITY_LEVEL:
				case CONCAT:
				case CONCAT_NULL_YIELDS_NULL:
				case CONTENT:
				case CONTROL:
				case COOKIE:
				case COUNT:
				case COUNT_BIG:
				case COUNTER:
				case CPU:
				case CREATE_NEW:
				case CREATION_DISPOSITION:
				case CREDENTIAL:
				case CRYPTOGRAPHIC:
				case CURSOR_CLOSE_ON_COMMIT:
				case CURSOR_DEFAULT:
				case DATE_CORRELATION_OPTIMIZATION:
				case DATEADD:
				case DATEDIFF:
				case DATENAME:
				case DATEPART:
				case DAYS:
				case DB_CHAINING:
				case DB_FAILOVER:
				case DECRYPTION:
				case DEFAULT_DOUBLE_QUOTE:
				case DEFAULT_FULLTEXT_LANGUAGE:
				case DEFAULT_LANGUAGE:
				case DELAY:
				case DELAYED_DURABILITY:
				case DELETED:
				case DENSE_RANK:
				case DEPENDENTS:
				case DES:
				case DESCRIPTION:
				case DESX:
				case DHCP:
				case DIALOG:
				case DIRECTORY_NAME:
				case DISABLE:
				case DISABLE_BROKER:
				case DISABLED:
				case DISK_DRIVE:
				case DOCUMENT:
				case DYNAMIC:
				case EMERGENCY:
				case EMPTY:
				case ENABLE:
				case ENABLE_BROKER:
				case ENCRYPTED_VALUE:
				case ENCRYPTION:
				case ENDPOINT_URL:
				case ERROR_BROKER_CONVERSATIONS:
				case EXCLUSIVE:
				case EXECUTABLE:
				case EXIST:
				case EXPAND:
				case EXPIRY_DATE:
				case EXPLICIT:
				case FAIL_OPERATION:
				case FAILOVER_MODE:
				case FAILURE:
				case FAILURE_CONDITION_LEVEL:
				case FAST:
				case FAST_FORWARD:
				case FILEGROUP:
				case FILEGROWTH:
				case FILEPATH:
				case FILESTREAM:
				case FILTER:
				case FIRST:
				case FIRST_VALUE:
				case FOLLOWING:
				case FORCE:
				case FORCE_FAILOVER_ALLOW_DATA_LOSS:
				case FORCED:
				case FORMAT:
				case FORWARD_ONLY:
				case FULLSCAN:
				case FULLTEXT:
				case GB:
				case GETDATE:
				case GETUTCDATE:
				case GLOBAL:
				case GO:
				case GROUP_MAX_REQUESTS:
				case GROUPING:
				case GROUPING_ID:
				case HADR:
				case HASH:
				case HEALTH_CHECK_TIMEOUT:
				case HIGH:
				case HONOR_BROKER_PRIORITY:
				case HOURS:
				case IDENTITY_VALUE:
				case IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX:
				case IMMEDIATE:
				case IMPERSONATE:
				case IMPORTANCE:
				case INCREMENTAL:
				case INITIATOR:
				case INPUT:
				case INSENSITIVE:
				case INSERTED:
				case INT:
				case IP:
				case ISOLATION:
				case KB:
				case KEEP:
				case KEEPFIXED:
				case KEY_SOURCE:
				case KEYS:
				case KEYSET:
				case LAG:
				case LAST:
				case LAST_VALUE:
				case LEAD:
				case LEVEL:
				case LIST:
				case LISTENER:
				case LISTENER_URL:
				case LOB_COMPACTION:
				case LOCAL:
				case LOCATION:
				case LOCK:
				case LOCK_ESCALATION:
				case LOGIN:
				case LOOP:
				case LOW:
				case MANUAL:
				case MARK:
				case MATERIALIZED:
				case MAX:
				case MAX_CPU_PERCENT:
				case MAX_DOP:
				case MAX_FILES:
				case MAX_IOPS_PER_VOLUME:
				case MAX_MEMORY_PERCENT:
				case MAX_PROCESSES:
				case MAX_QUEUE_READERS:
				case MAX_ROLLOVER_FILES:
				case MAXDOP:
				case MAXRECURSION:
				case MAXSIZE:
				case MB:
				case MEDIUM:
				case MEMORY_OPTIMIZED_DATA:
				case MESSAGE:
				case MIN:
				case MIN_ACTIVE_ROWVERSION:
				case MIN_CPU_PERCENT:
				case MIN_IOPS_PER_VOLUME:
				case MIN_MEMORY_PERCENT:
				case MINUTES:
				case MIRROR_ADDRESS:
				case MIXED_PAGE_ALLOCATION:
				case MODE:
				case MODIFY:
				case MOVE:
				case MULTI_USER:
				case NAME:
				case NESTED_TRIGGERS:
				case NEW_ACCOUNT:
				case NEW_BROKER:
				case NEW_PASSWORD:
				case NEXT:
				case NO:
				case NO_TRUNCATE:
				case NO_WAIT:
				case NOCOUNT:
				case NODES:
				case NOEXPAND:
				case NON_TRANSACTED_ACCESS:
				case NORECOMPUTE:
				case NORECOVERY:
				case NOWAIT:
				case NTILE:
				case NUMANODE:
				case NUMBER:
				case NUMERIC_ROUNDABORT:
				case OBJECT:
				case OFFLINE:
				case OFFSET:
				case OLD_ACCOUNT:
				case ONLINE:
				case ONLY:
				case OPEN_EXISTING:
				case OPTIMISTIC:
				case OPTIMIZE:
				case OUT:
				case OUTPUT:
				case OWNER:
				case PAGE_VERIFY:
				case PARAMETERIZATION:
				case PARTITION:
				case PARTITIONS:
				case PARTNER:
				case PATH:
				case POISON_MESSAGE_HANDLING:
				case POOL:
				case PORT:
				case PRECEDING:
				case PRIMARY_ROLE:
				case PRIOR:
				case PRIORITY:
				case PRIORITY_LEVEL:
				case PRIVATE:
				case PRIVATE_KEY:
				case PRIVILEGES:
				case PROCEDURE_NAME:
				case PROPERTY:
				case PROVIDER:
				case PROVIDER_KEY_NAME:
				case QUERY:
				case QUEUE:
				case QUEUE_DELAY:
				case QUOTED_IDENTIFIER:
				case RANGE:
				case RANK:
				case RC2:
				case RC4:
				case RC4_128:
				case READ_COMMITTED_SNAPSHOT:
				case READ_ONLY:
				case READ_ONLY_ROUTING_LIST:
				case READ_WRITE:
				case READONLY:
				case REBUILD:
				case RECEIVE:
				case RECOMPILE:
				case RECOVERY:
				case RECURSIVE_TRIGGERS:
				case RELATIVE:
				case REMOTE:
				case REMOTE_SERVICE_NAME:
				case REMOVE:
				case REORGANIZE:
				case REPEATABLE:
				case REPLICA:
				case REQUEST_MAX_CPU_TIME_SEC:
				case REQUEST_MAX_MEMORY_GRANT_PERCENT:
				case REQUEST_MEMORY_GRANT_TIMEOUT_SEC:
				case REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT:
				case RESERVE_DISK_SPACE:
				case RESOURCE:
				case RESOURCE_MANAGER_LOCATION:
				case RESTRICTED_USER:
				case RETENTION:
				case ROBUST:
				case ROOT:
				case ROUTE:
				case ROW:
				case ROW_NUMBER:
				case ROWGUID:
				case ROWS:
				case SAMPLE:
				case SCHEMABINDING:
				case SCOPED:
				case SCROLL:
				case SCROLL_LOCKS:
				case SEARCH:
				case SECONDARY:
				case SECONDARY_ONLY:
				case SECONDARY_ROLE:
				case SECONDS:
				case SECRET:
				case SECURITY_LOG:
				case SEEDING_MODE:
				case SELF:
				case SEMI_SENSITIVE:
				case SEND:
				case SENT:
				case SERIALIZABLE:
				case SESSION_TIMEOUT:
				case SETERROR:
				case SHARE:
				case SHOWPLAN:
				case SIGNATURE:
				case SIMPLE:
				case SINGLE_USER:
				case SIZE:
				case SMALLINT:
				case SNAPSHOT:
				case SPATIAL_WINDOW_MAX_CELLS:
				case STANDBY:
				case START_DATE:
				case STATIC:
				case STATS_STREAM:
				case STATUS:
				case STDEV:
				case STDEVP:
				case STOPLIST:
				case STUFF:
				case SUBJECT:
				case SUM:
				case SUSPEND:
				case SYMMETRIC:
				case SYNCHRONOUS_COMMIT:
				case SYNONYM:
				case TAKE:
				case TARGET_RECOVERY_TIME:
				case TB:
				case TEXTIMAGE_ON:
				case THROW:
				case TIES:
				case TIME:
				case TIMEOUT:
				case TIMER:
				case TINYINT:
				case TORN_PAGE_DETECTION:
				case TRANSFORM_NOISE_WORDS:
				case TRIPLE_DES:
				case TRIPLE_DES_3KEY:
				case TRUSTWORTHY:
				case TRY:
				case TSQL:
				case TWO_DIGIT_YEAR_CUTOFF:
				case TYPE:
				case TYPE_WARNING:
				case UNBOUNDED:
				case UNCOMMITTED:
				case UNKNOWN:
				case UNLIMITED:
				case USING:
				case VALID_XML:
				case VALIDATION:
				case VALUE:
				case VAR:
				case VARP:
				case VIEW_METADATA:
				case VIEWS:
				case WAIT:
				case WELL_FORMED_XML:
				case WORK:
				case WORKLOAD:
				case XML:
				case XMLNAMESPACES:
				case DOUBLE_QUOTE_ID:
				case SQUARE_BRACKET_ID:
				case ID:
					{
					setState(6969);
					id();
					}
					break;
				case STRING:
					{
					setState(6970);
					match(STRING);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;
			case DEFAULT_FULLTEXT_LANGUAGE:
				enterOuterAlt(_localctx, 4);
				{
				setState(6973);
				match(DEFAULT_FULLTEXT_LANGUAGE);
				setState(6974);
				match(EQUAL);
				setState(6977);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case CALLED:
				case DATA_COMPRESSION:
				case EVENTDATA:
				case FILENAME:
				case FILLFACTOR:
				case FORCESEEK:
				case INIT:
				case KEY:
				case MASTER:
				case MAX_MEMORY:
				case OFFSETS:
				case PAGE:
				case PUBLIC:
				case R:
				case RAW:
				case RETURN:
				case RETURNS:
				case ROWCOUNT:
				case SAFETY:
				case SERVER:
				case SID:
				case SOURCE:
				case STATE:
				case START:
				case TARGET:
				case ABSOLUTE:
				case ACCENT_SENSITIVITY:
				case ACTION:
				case ACTIVATION:
				case ACTIVE:
				case ADDRESS:
				case AES_128:
				case AES_192:
				case AES_256:
				case AFFINITY:
				case AFTER:
				case AGGREGATE:
				case ALGORITHM:
				case ALLOW_ENCRYPTED_VALUE_MODIFICATIONS:
				case ALLOW_SNAPSHOT_ISOLATION:
				case ALLOWED:
				case ANSI_NULL_DEFAULT:
				case ANSI_NULLS:
				case ANSI_PADDING:
				case ANSI_WARNINGS:
				case APPLICATION_LOG:
				case APPLY:
				case ARITHABORT:
				case ASSEMBLY:
				case AUDIT:
				case AUDIT_GUID:
				case AUTO:
				case AUTO_CLEANUP:
				case AUTO_CLOSE:
				case AUTO_CREATE_STATISTICS:
				case AUTO_SHRINK:
				case AUTO_UPDATE_STATISTICS:
				case AUTO_UPDATE_STATISTICS_ASYNC:
				case AVAILABILITY:
				case AVG:
				case BACKUP_PRIORITY:
				case BEGIN_DIALOG:
				case BIGINT:
				case BINARY_BASE64:
				case BINARY_CHECKSUM:
				case BINDING:
				case BLOB_STORAGE:
				case BROKER:
				case BROKER_INSTANCE:
				case BULK_LOGGED:
				case CALLER:
				case CAP_CPU_PERCENT:
				case CAST:
				case CATALOG:
				case CATCH:
				case CHANGE_RETENTION:
				case CHANGE_TRACKING:
				case CHECKSUM:
				case CHECKSUM_AGG:
				case CLEANUP:
				case COLLECTION:
				case COLUMN_MASTER_KEY:
				case COMMITTED:
				case COMPATIBILITY_LEVEL:
				case CONCAT:
				case CONCAT_NULL_YIELDS_NULL:
				case CONTENT:
				case CONTROL:
				case COOKIE:
				case COUNT:
				case COUNT_BIG:
				case COUNTER:
				case CPU:
				case CREATE_NEW:
				case CREATION_DISPOSITION:
				case CREDENTIAL:
				case CRYPTOGRAPHIC:
				case CURSOR_CLOSE_ON_COMMIT:
				case CURSOR_DEFAULT:
				case DATE_CORRELATION_OPTIMIZATION:
				case DATEADD:
				case DATEDIFF:
				case DATENAME:
				case DATEPART:
				case DAYS:
				case DB_CHAINING:
				case DB_FAILOVER:
				case DECRYPTION:
				case DEFAULT_DOUBLE_QUOTE:
				case DEFAULT_FULLTEXT_LANGUAGE:
				case DEFAULT_LANGUAGE:
				case DELAY:
				case DELAYED_DURABILITY:
				case DELETED:
				case DENSE_RANK:
				case DEPENDENTS:
				case DES:
				case DESCRIPTION:
				case DESX:
				case DHCP:
				case DIALOG:
				case DIRECTORY_NAME:
				case DISABLE:
				case DISABLE_BROKER:
				case DISABLED:
				case DISK_DRIVE:
				case DOCUMENT:
				case DYNAMIC:
				case EMERGENCY:
				case EMPTY:
				case ENABLE:
				case ENABLE_BROKER:
				case ENCRYPTED_VALUE:
				case ENCRYPTION:
				case ENDPOINT_URL:
				case ERROR_BROKER_CONVERSATIONS:
				case EXCLUSIVE:
				case EXECUTABLE:
				case EXIST:
				case EXPAND:
				case EXPIRY_DATE:
				case EXPLICIT:
				case FAIL_OPERATION:
				case FAILOVER_MODE:
				case FAILURE:
				case FAILURE_CONDITION_LEVEL:
				case FAST:
				case FAST_FORWARD:
				case FILEGROUP:
				case FILEGROWTH:
				case FILEPATH:
				case FILESTREAM:
				case FILTER:
				case FIRST:
				case FIRST_VALUE:
				case FOLLOWING:
				case FORCE:
				case FORCE_FAILOVER_ALLOW_DATA_LOSS:
				case FORCED:
				case FORMAT:
				case FORWARD_ONLY:
				case FULLSCAN:
				case FULLTEXT:
				case GB:
				case GETDATE:
				case GETUTCDATE:
				case GLOBAL:
				case GO:
				case GROUP_MAX_REQUESTS:
				case GROUPING:
				case GROUPING_ID:
				case HADR:
				case HASH:
				case HEALTH_CHECK_TIMEOUT:
				case HIGH:
				case HONOR_BROKER_PRIORITY:
				case HOURS:
				case IDENTITY_VALUE:
				case IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX:
				case IMMEDIATE:
				case IMPERSONATE:
				case IMPORTANCE:
				case INCREMENTAL:
				case INITIATOR:
				case INPUT:
				case INSENSITIVE:
				case INSERTED:
				case INT:
				case IP:
				case ISOLATION:
				case KB:
				case KEEP:
				case KEEPFIXED:
				case KEY_SOURCE:
				case KEYS:
				case KEYSET:
				case LAG:
				case LAST:
				case LAST_VALUE:
				case LEAD:
				case LEVEL:
				case LIST:
				case LISTENER:
				case LISTENER_URL:
				case LOB_COMPACTION:
				case LOCAL:
				case LOCATION:
				case LOCK:
				case LOCK_ESCALATION:
				case LOGIN:
				case LOOP:
				case LOW:
				case MANUAL:
				case MARK:
				case MATERIALIZED:
				case MAX:
				case MAX_CPU_PERCENT:
				case MAX_DOP:
				case MAX_FILES:
				case MAX_IOPS_PER_VOLUME:
				case MAX_MEMORY_PERCENT:
				case MAX_PROCESSES:
				case MAX_QUEUE_READERS:
				case MAX_ROLLOVER_FILES:
				case MAXDOP:
				case MAXRECURSION:
				case MAXSIZE:
				case MB:
				case MEDIUM:
				case MEMORY_OPTIMIZED_DATA:
				case MESSAGE:
				case MIN:
				case MIN_ACTIVE_ROWVERSION:
				case MIN_CPU_PERCENT:
				case MIN_IOPS_PER_VOLUME:
				case MIN_MEMORY_PERCENT:
				case MINUTES:
				case MIRROR_ADDRESS:
				case MIXED_PAGE_ALLOCATION:
				case MODE:
				case MODIFY:
				case MOVE:
				case MULTI_USER:
				case NAME:
				case NESTED_TRIGGERS:
				case NEW_ACCOUNT:
				case NEW_BROKER:
				case NEW_PASSWORD:
				case NEXT:
				case NO:
				case NO_TRUNCATE:
				case NO_WAIT:
				case NOCOUNT:
				case NODES:
				case NOEXPAND:
				case NON_TRANSACTED_ACCESS:
				case NORECOMPUTE:
				case NORECOVERY:
				case NOWAIT:
				case NTILE:
				case NUMANODE:
				case NUMBER:
				case NUMERIC_ROUNDABORT:
				case OBJECT:
				case OFFLINE:
				case OFFSET:
				case OLD_ACCOUNT:
				case ONLINE:
				case ONLY:
				case OPEN_EXISTING:
				case OPTIMISTIC:
				case OPTIMIZE:
				case OUT:
				case OUTPUT:
				case OWNER:
				case PAGE_VERIFY:
				case PARAMETERIZATION:
				case PARTITION:
				case PARTITIONS:
				case PARTNER:
				case PATH:
				case POISON_MESSAGE_HANDLING:
				case POOL:
				case PORT:
				case PRECEDING:
				case PRIMARY_ROLE:
				case PRIOR:
				case PRIORITY:
				case PRIORITY_LEVEL:
				case PRIVATE:
				case PRIVATE_KEY:
				case PRIVILEGES:
				case PROCEDURE_NAME:
				case PROPERTY:
				case PROVIDER:
				case PROVIDER_KEY_NAME:
				case QUERY:
				case QUEUE:
				case QUEUE_DELAY:
				case QUOTED_IDENTIFIER:
				case RANGE:
				case RANK:
				case RC2:
				case RC4:
				case RC4_128:
				case READ_COMMITTED_SNAPSHOT:
				case READ_ONLY:
				case READ_ONLY_ROUTING_LIST:
				case READ_WRITE:
				case READONLY:
				case REBUILD:
				case RECEIVE:
				case RECOMPILE:
				case RECOVERY:
				case RECURSIVE_TRIGGERS:
				case RELATIVE:
				case REMOTE:
				case REMOTE_SERVICE_NAME:
				case REMOVE:
				case REORGANIZE:
				case REPEATABLE:
				case REPLICA:
				case REQUEST_MAX_CPU_TIME_SEC:
				case REQUEST_MAX_MEMORY_GRANT_PERCENT:
				case REQUEST_MEMORY_GRANT_TIMEOUT_SEC:
				case REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT:
				case RESERVE_DISK_SPACE:
				case RESOURCE:
				case RESOURCE_MANAGER_LOCATION:
				case RESTRICTED_USER:
				case RETENTION:
				case ROBUST:
				case ROOT:
				case ROUTE:
				case ROW:
				case ROW_NUMBER:
				case ROWGUID:
				case ROWS:
				case SAMPLE:
				case SCHEMABINDING:
				case SCOPED:
				case SCROLL:
				case SCROLL_LOCKS:
				case SEARCH:
				case SECONDARY:
				case SECONDARY_ONLY:
				case SECONDARY_ROLE:
				case SECONDS:
				case SECRET:
				case SECURITY_LOG:
				case SEEDING_MODE:
				case SELF:
				case SEMI_SENSITIVE:
				case SEND:
				case SENT:
				case SERIALIZABLE:
				case SESSION_TIMEOUT:
				case SETERROR:
				case SHARE:
				case SHOWPLAN:
				case SIGNATURE:
				case SIMPLE:
				case SINGLE_USER:
				case SIZE:
				case SMALLINT:
				case SNAPSHOT:
				case SPATIAL_WINDOW_MAX_CELLS:
				case STANDBY:
				case START_DATE:
				case STATIC:
				case STATS_STREAM:
				case STATUS:
				case STDEV:
				case STDEVP:
				case STOPLIST:
				case STUFF:
				case SUBJECT:
				case SUM:
				case SUSPEND:
				case SYMMETRIC:
				case SYNCHRONOUS_COMMIT:
				case SYNONYM:
				case TAKE:
				case TARGET_RECOVERY_TIME:
				case TB:
				case TEXTIMAGE_ON:
				case THROW:
				case TIES:
				case TIME:
				case TIMEOUT:
				case TIMER:
				case TINYINT:
				case TORN_PAGE_DETECTION:
				case TRANSFORM_NOISE_WORDS:
				case TRIPLE_DES:
				case TRIPLE_DES_3KEY:
				case TRUSTWORTHY:
				case TRY:
				case TSQL:
				case TWO_DIGIT_YEAR_CUTOFF:
				case TYPE:
				case TYPE_WARNING:
				case UNBOUNDED:
				case UNCOMMITTED:
				case UNKNOWN:
				case UNLIMITED:
				case USING:
				case VALID_XML:
				case VALIDATION:
				case VALUE:
				case VAR:
				case VARP:
				case VIEW_METADATA:
				case VIEWS:
				case WAIT:
				case WELL_FORMED_XML:
				case WORK:
				case WORKLOAD:
				case XML:
				case XMLNAMESPACES:
				case DOUBLE_QUOTE_ID:
				case SQUARE_BRACKET_ID:
				case ID:
					{
					setState(6975);
					id();
					}
					break;
				case STRING:
					{
					setState(6976);
					match(STRING);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;
			case NESTED_TRIGGERS:
				enterOuterAlt(_localctx, 5);
				{
				setState(6979);
				match(NESTED_TRIGGERS);
				setState(6980);
				match(EQUAL);
				setState(6981);
				_la = _input.LA(1);
				if ( !(_la==OFF || _la==ON) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
				break;
			case TRANSFORM_NOISE_WORDS:
				enterOuterAlt(_localctx, 6);
				{
				setState(6982);
				match(TRANSFORM_NOISE_WORDS);
				setState(6983);
				match(EQUAL);
				setState(6984);
				_la = _input.LA(1);
				if ( !(_la==OFF || _la==ON) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
				break;
			case TWO_DIGIT_YEAR_CUTOFF:
				enterOuterAlt(_localctx, 7);
				{
				setState(6985);
				match(TWO_DIGIT_YEAR_CUTOFF);
				setState(6986);
				match(EQUAL);
				setState(6987);
				match(DECIMAL);
				}
				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 Hadr_optionsContext extends ParserRuleContext {
		public IdContext availability_group_name;
		public TerminalNode HADR() { return getToken(TSqlParser.HADR, 0); }
		public TerminalNode SUSPEND() { return getToken(TSqlParser.SUSPEND, 0); }
		public TerminalNode RESUME() { return getToken(TSqlParser.RESUME, 0); }
		public TerminalNode AVAILABILITY() { return getToken(TSqlParser.AVAILABILITY, 0); }
		public TerminalNode GROUP() { return getToken(TSqlParser.GROUP, 0); }
		public TerminalNode EQUAL() { return getToken(TSqlParser.EQUAL, 0); }
		public TerminalNode OFF() { return getToken(TSqlParser.OFF, 0); }
		public IdContext id() {
			return getRuleContext(IdContext.class,0);
		}
		public Hadr_optionsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_hadr_options; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterHadr_options(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitHadr_options(this);
		}
	}

	public final Hadr_optionsContext hadr_options() throws RecognitionException {
		Hadr_optionsContext _localctx = new Hadr_optionsContext(_ctx, getState());
		enterRule(_localctx, 558, RULE_hadr_options);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6990);
			match(HADR);
			setState(6999);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case OFF:
			case AVAILABILITY:
				{
				setState(6996);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case AVAILABILITY:
					{
					setState(6991);
					match(AVAILABILITY);
					setState(6992);
					match(GROUP);
					setState(6993);
					match(EQUAL);
					setState(6994);
					((Hadr_optionsContext)_localctx).availability_group_name = id();
					}
					break;
				case OFF:
					{
					setState(6995);
					match(OFF);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;
			case RESUME:
			case SUSPEND:
				{
				setState(6998);
				_la = _input.LA(1);
				if ( !(_la==RESUME || _la==SUSPEND) ) {
				_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 Mixed_page_allocation_optionContext extends ParserRuleContext {
		public TerminalNode MIXED_PAGE_ALLOCATION() { return getToken(TSqlParser.MIXED_PAGE_ALLOCATION, 0); }
		public TerminalNode OFF() { return getToken(TSqlParser.OFF, 0); }
		public TerminalNode ON() { return getToken(TSqlParser.ON, 0); }
		public Mixed_page_allocation_optionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_mixed_page_allocation_option; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterMixed_page_allocation_option(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitMixed_page_allocation_option(this);
		}
	}

	public final Mixed_page_allocation_optionContext mixed_page_allocation_option() throws RecognitionException {
		Mixed_page_allocation_optionContext _localctx = new Mixed_page_allocation_optionContext(_ctx, getState());
		enterRule(_localctx, 560, RULE_mixed_page_allocation_option);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7001);
			match(MIXED_PAGE_ALLOCATION);
			setState(7002);
			_la = _input.LA(1);
			if ( !(_la==OFF || _la==ON) ) {
			_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 Parameterization_optionContext extends ParserRuleContext {
		public TerminalNode PARAMETERIZATION() { return getToken(TSqlParser.PARAMETERIZATION, 0); }
		public TerminalNode SIMPLE() { return getToken(TSqlParser.SIMPLE, 0); }
		public TerminalNode FORCED() { return getToken(TSqlParser.FORCED, 0); }
		public Parameterization_optionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_parameterization_option; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterParameterization_option(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitParameterization_option(this);
		}
	}

	public final Parameterization_optionContext parameterization_option() throws RecognitionException {
		Parameterization_optionContext _localctx = new Parameterization_optionContext(_ctx, getState());
		enterRule(_localctx, 562, RULE_parameterization_option);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7004);
			match(PARAMETERIZATION);
			setState(7005);
			_la = _input.LA(1);
			if ( !(_la==FORCED || _la==SIMPLE) ) {
			_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 Recovery_optionContext extends ParserRuleContext {
		public TerminalNode RECOVERY() { return getToken(TSqlParser.RECOVERY, 0); }
		public TerminalNode FULL() { return getToken(TSqlParser.FULL, 0); }
		public TerminalNode BULK_LOGGED() { return getToken(TSqlParser.BULK_LOGGED, 0); }
		public TerminalNode SIMPLE() { return getToken(TSqlParser.SIMPLE, 0); }
		public TerminalNode TORN_PAGE_DETECTION() { return getToken(TSqlParser.TORN_PAGE_DETECTION, 0); }
		public On_offContext on_off() {
			return getRuleContext(On_offContext.class,0);
		}
		public TerminalNode PAGE_VERIFY() { return getToken(TSqlParser.PAGE_VERIFY, 0); }
		public TerminalNode CHECKSUM() { return getToken(TSqlParser.CHECKSUM, 0); }
		public TerminalNode NONE() { return getToken(TSqlParser.NONE, 0); }
		public Recovery_optionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_recovery_option; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterRecovery_option(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitRecovery_option(this);
		}
	}

	public final Recovery_optionContext recovery_option() throws RecognitionException {
		Recovery_optionContext _localctx = new Recovery_optionContext(_ctx, getState());
		enterRule(_localctx, 564, RULE_recovery_option);
		int _la;
		try {
			setState(7013);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case RECOVERY:
				enterOuterAlt(_localctx, 1);
				{
				setState(7007);
				match(RECOVERY);
				setState(7008);
				_la = _input.LA(1);
				if ( !(_la==FULL || _la==BULK_LOGGED || _la==SIMPLE) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
				break;
			case TORN_PAGE_DETECTION:
				enterOuterAlt(_localctx, 2);
				{
				setState(7009);
				match(TORN_PAGE_DETECTION);
				setState(7010);
				on_off();
				}
				break;
			case PAGE_VERIFY:
				enterOuterAlt(_localctx, 3);
				{
				setState(7011);
				match(PAGE_VERIFY);
				setState(7012);
				_la = _input.LA(1);
				if ( !(_la==NONE || _la==CHECKSUM || _la==TORN_PAGE_DETECTION) ) {
				_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 Service_broker_optionContext extends ParserRuleContext {
		public TerminalNode ENABLE_BROKER() { return getToken(TSqlParser.ENABLE_BROKER, 0); }
		public TerminalNode DISABLE_BROKER() { return getToken(TSqlParser.DISABLE_BROKER, 0); }
		public TerminalNode NEW_BROKER() { return getToken(TSqlParser.NEW_BROKER, 0); }
		public TerminalNode ERROR_BROKER_CONVERSATIONS() { return getToken(TSqlParser.ERROR_BROKER_CONVERSATIONS, 0); }
		public TerminalNode HONOR_BROKER_PRIORITY() { return getToken(TSqlParser.HONOR_BROKER_PRIORITY, 0); }
		public On_offContext on_off() {
			return getRuleContext(On_offContext.class,0);
		}
		public Service_broker_optionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_service_broker_option; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterService_broker_option(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitService_broker_option(this);
		}
	}

	public final Service_broker_optionContext service_broker_option() throws RecognitionException {
		Service_broker_optionContext _localctx = new Service_broker_optionContext(_ctx, getState());
		enterRule(_localctx, 566, RULE_service_broker_option);
		try {
			setState(7021);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case ENABLE_BROKER:
				enterOuterAlt(_localctx, 1);
				{
				setState(7015);
				match(ENABLE_BROKER);
				}
				break;
			case DISABLE_BROKER:
				enterOuterAlt(_localctx, 2);
				{
				setState(7016);
				match(DISABLE_BROKER);
				}
				break;
			case NEW_BROKER:
				enterOuterAlt(_localctx, 3);
				{
				setState(7017);
				match(NEW_BROKER);
				}
				break;
			case ERROR_BROKER_CONVERSATIONS:
				enterOuterAlt(_localctx, 4);
				{
				setState(7018);
				match(ERROR_BROKER_CONVERSATIONS);
				}
				break;
			case HONOR_BROKER_PRIORITY:
				enterOuterAlt(_localctx, 5);
				{
				setState(7019);
				match(HONOR_BROKER_PRIORITY);
				setState(7020);
				on_off();
				}
				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 Snapshot_optionContext extends ParserRuleContext {
		public Token MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT;
		public TerminalNode ALLOW_SNAPSHOT_ISOLATION() { return getToken(TSqlParser.ALLOW_SNAPSHOT_ISOLATION, 0); }
		public On_offContext on_off() {
			return getRuleContext(On_offContext.class,0);
		}
		public TerminalNode READ_COMMITTED_SNAPSHOT() { return getToken(TSqlParser.READ_COMMITTED_SNAPSHOT, 0); }
		public TerminalNode ON() { return getToken(TSqlParser.ON, 0); }
		public TerminalNode OFF() { return getToken(TSqlParser.OFF, 0); }
		public Snapshot_optionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_snapshot_option; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterSnapshot_option(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitSnapshot_option(this);
		}
	}

	public final Snapshot_optionContext snapshot_option() throws RecognitionException {
		Snapshot_optionContext _localctx = new Snapshot_optionContext(_ctx, getState());
		enterRule(_localctx, 568, RULE_snapshot_option);
		int _la;
		try {
			setState(7028);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case ALLOW_SNAPSHOT_ISOLATION:
				enterOuterAlt(_localctx, 1);
				{
				setState(7023);
				match(ALLOW_SNAPSHOT_ISOLATION);
				setState(7024);
				on_off();
				}
				break;
			case READ_COMMITTED_SNAPSHOT:
				enterOuterAlt(_localctx, 2);
				{
				setState(7025);
				match(READ_COMMITTED_SNAPSHOT);
				setState(7026);
				_la = _input.LA(1);
				if ( !(_la==OFF || _la==ON) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
				break;
			case OFF:
			case ON:
				enterOuterAlt(_localctx, 3);
				{
				setState(7027);
				((Snapshot_optionContext)_localctx).MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==OFF || _la==ON) ) {
					((Snapshot_optionContext)_localctx).MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT = (Token)_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 Sql_optionContext extends ParserRuleContext {
		public TerminalNode ANSI_NULL_DEFAULT() { return getToken(TSqlParser.ANSI_NULL_DEFAULT, 0); }
		public On_offContext on_off() {
			return getRuleContext(On_offContext.class,0);
		}
		public TerminalNode ANSI_NULLS() { return getToken(TSqlParser.ANSI_NULLS, 0); }
		public TerminalNode ANSI_PADDING() { return getToken(TSqlParser.ANSI_PADDING, 0); }
		public TerminalNode ANSI_WARNINGS() { return getToken(TSqlParser.ANSI_WARNINGS, 0); }
		public TerminalNode ARITHABORT() { return getToken(TSqlParser.ARITHABORT, 0); }
		public TerminalNode COMPATIBILITY_LEVEL() { return getToken(TSqlParser.COMPATIBILITY_LEVEL, 0); }
		public TerminalNode EQUAL() { return getToken(TSqlParser.EQUAL, 0); }
		public TerminalNode DECIMAL() { return getToken(TSqlParser.DECIMAL, 0); }
		public TerminalNode CONCAT_NULL_YIELDS_NULL() { return getToken(TSqlParser.CONCAT_NULL_YIELDS_NULL, 0); }
		public TerminalNode NUMERIC_ROUNDABORT() { return getToken(TSqlParser.NUMERIC_ROUNDABORT, 0); }
		public TerminalNode QUOTED_IDENTIFIER() { return getToken(TSqlParser.QUOTED_IDENTIFIER, 0); }
		public TerminalNode RECURSIVE_TRIGGERS() { return getToken(TSqlParser.RECURSIVE_TRIGGERS, 0); }
		public Sql_optionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_sql_option; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterSql_option(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitSql_option(this);
		}
	}

	public final Sql_optionContext sql_option() throws RecognitionException {
		Sql_optionContext _localctx = new Sql_optionContext(_ctx, getState());
		enterRule(_localctx, 570, RULE_sql_option);
		try {
			setState(7051);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case ANSI_NULL_DEFAULT:
				enterOuterAlt(_localctx, 1);
				{
				setState(7030);
				match(ANSI_NULL_DEFAULT);
				setState(7031);
				on_off();
				}
				break;
			case ANSI_NULLS:
				enterOuterAlt(_localctx, 2);
				{
				setState(7032);
				match(ANSI_NULLS);
				setState(7033);
				on_off();
				}
				break;
			case ANSI_PADDING:
				enterOuterAlt(_localctx, 3);
				{
				setState(7034);
				match(ANSI_PADDING);
				setState(7035);
				on_off();
				}
				break;
			case ANSI_WARNINGS:
				enterOuterAlt(_localctx, 4);
				{
				setState(7036);
				match(ANSI_WARNINGS);
				setState(7037);
				on_off();
				}
				break;
			case ARITHABORT:
				enterOuterAlt(_localctx, 5);
				{
				setState(7038);
				match(ARITHABORT);
				setState(7039);
				on_off();
				}
				break;
			case COMPATIBILITY_LEVEL:
				enterOuterAlt(_localctx, 6);
				{
				setState(7040);
				match(COMPATIBILITY_LEVEL);
				setState(7041);
				match(EQUAL);
				setState(7042);
				match(DECIMAL);
				}
				break;
			case CONCAT_NULL_YIELDS_NULL:
				enterOuterAlt(_localctx, 7);
				{
				setState(7043);
				match(CONCAT_NULL_YIELDS_NULL);
				setState(7044);
				on_off();
				}
				break;
			case NUMERIC_ROUNDABORT:
				enterOuterAlt(_localctx, 8);
				{
				setState(7045);
				match(NUMERIC_ROUNDABORT);
				setState(7046);
				on_off();
				}
				break;
			case QUOTED_IDENTIFIER:
				enterOuterAlt(_localctx, 9);
				{
				setState(7047);
				match(QUOTED_IDENTIFIER);
				setState(7048);
				on_off();
				}
				break;
			case RECURSIVE_TRIGGERS:
				enterOuterAlt(_localctx, 10);
				{
				setState(7049);
				match(RECURSIVE_TRIGGERS);
				setState(7050);
				on_off();
				}
				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 Target_recovery_time_optionContext extends ParserRuleContext {
		public TerminalNode TARGET_RECOVERY_TIME() { return getToken(TSqlParser.TARGET_RECOVERY_TIME, 0); }
		public TerminalNode EQUAL() { return getToken(TSqlParser.EQUAL, 0); }
		public TerminalNode DECIMAL() { return getToken(TSqlParser.DECIMAL, 0); }
		public TerminalNode SECONDS() { return getToken(TSqlParser.SECONDS, 0); }
		public TerminalNode MINUTES() { return getToken(TSqlParser.MINUTES, 0); }
		public Target_recovery_time_optionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_target_recovery_time_option; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterTarget_recovery_time_option(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitTarget_recovery_time_option(this);
		}
	}

	public final Target_recovery_time_optionContext target_recovery_time_option() throws RecognitionException {
		Target_recovery_time_optionContext _localctx = new Target_recovery_time_optionContext(_ctx, getState());
		enterRule(_localctx, 572, RULE_target_recovery_time_option);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7053);
			match(TARGET_RECOVERY_TIME);
			setState(7054);
			match(EQUAL);
			setState(7055);
			match(DECIMAL);
			setState(7056);
			_la = _input.LA(1);
			if ( !(_la==MINUTES || _la==SECONDS) ) {
			_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 TerminationContext extends ParserRuleContext {
		public Token seconds;
		public TerminalNode ROLLBACK() { return getToken(TSqlParser.ROLLBACK, 0); }
		public TerminalNode AFTER() { return getToken(TSqlParser.AFTER, 0); }
		public TerminalNode DECIMAL() { return getToken(TSqlParser.DECIMAL, 0); }
		public TerminalNode IMMEDIATE() { return getToken(TSqlParser.IMMEDIATE, 0); }
		public TerminalNode NO_WAIT() { return getToken(TSqlParser.NO_WAIT, 0); }
		public TerminationContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_termination; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterTermination(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitTermination(this);
		}
	}

	public final TerminationContext termination() throws RecognitionException {
		TerminationContext _localctx = new TerminationContext(_ctx, getState());
		enterRule(_localctx, 574, RULE_termination);
		try {
			setState(7064);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,931,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(7058);
				match(ROLLBACK);
				setState(7059);
				match(AFTER);
				setState(7060);
				((TerminationContext)_localctx).seconds = match(DECIMAL);
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(7061);
				match(ROLLBACK);
				setState(7062);
				match(IMMEDIATE);
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(7063);
				match(NO_WAIT);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Drop_indexContext extends ParserRuleContext {
		public TerminalNode DROP() { return getToken(TSqlParser.DROP, 0); }
		public TerminalNode INDEX() { return getToken(TSqlParser.INDEX, 0); }
		public List drop_relational_or_xml_or_spatial_index() {
			return getRuleContexts(Drop_relational_or_xml_or_spatial_indexContext.class);
		}
		public Drop_relational_or_xml_or_spatial_indexContext drop_relational_or_xml_or_spatial_index(int i) {
			return getRuleContext(Drop_relational_or_xml_or_spatial_indexContext.class,i);
		}
		public List drop_backward_compatible_index() {
			return getRuleContexts(Drop_backward_compatible_indexContext.class);
		}
		public Drop_backward_compatible_indexContext drop_backward_compatible_index(int i) {
			return getRuleContext(Drop_backward_compatible_indexContext.class,i);
		}
		public TerminalNode IF() { return getToken(TSqlParser.IF, 0); }
		public TerminalNode EXISTS() { return getToken(TSqlParser.EXISTS, 0); }
		public TerminalNode SEMI() { return getToken(TSqlParser.SEMI, 0); }
		public List COMMA() { return getTokens(TSqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(TSqlParser.COMMA, i);
		}
		public Drop_indexContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_drop_index; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterDrop_index(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitDrop_index(this);
		}
	}

	public final Drop_indexContext drop_index() throws RecognitionException {
		Drop_indexContext _localctx = new Drop_indexContext(_ctx, getState());
		enterRule(_localctx, 576, RULE_drop_index);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7066);
			match(DROP);
			setState(7067);
			match(INDEX);
			setState(7070);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==IF) {
				{
				setState(7068);
				match(IF);
				setState(7069);
				match(EXISTS);
				}
			}

			setState(7088);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,935,_ctx) ) {
			case 1:
				{
				setState(7072);
				drop_relational_or_xml_or_spatial_index();
				setState(7077);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA) {
					{
					{
					setState(7073);
					match(COMMA);
					setState(7074);
					drop_relational_or_xml_or_spatial_index();
					}
					}
					setState(7079);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				}
				break;
			case 2:
				{
				setState(7080);
				drop_backward_compatible_index();
				setState(7085);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA) {
					{
					{
					setState(7081);
					match(COMMA);
					setState(7082);
					drop_backward_compatible_index();
					}
					}
					setState(7087);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				}
				break;
			}
			setState(7091);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,936,_ctx) ) {
			case 1:
				{
				setState(7090);
				match(SEMI);
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Drop_relational_or_xml_or_spatial_indexContext extends ParserRuleContext {
		public IdContext index_name;
		public TerminalNode ON() { return getToken(TSqlParser.ON, 0); }
		public Full_table_nameContext full_table_name() {
			return getRuleContext(Full_table_nameContext.class,0);
		}
		public IdContext id() {
			return getRuleContext(IdContext.class,0);
		}
		public Drop_relational_or_xml_or_spatial_indexContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_drop_relational_or_xml_or_spatial_index; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterDrop_relational_or_xml_or_spatial_index(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitDrop_relational_or_xml_or_spatial_index(this);
		}
	}

	public final Drop_relational_or_xml_or_spatial_indexContext drop_relational_or_xml_or_spatial_index() throws RecognitionException {
		Drop_relational_or_xml_or_spatial_indexContext _localctx = new Drop_relational_or_xml_or_spatial_indexContext(_ctx, getState());
		enterRule(_localctx, 578, RULE_drop_relational_or_xml_or_spatial_index);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7093);
			((Drop_relational_or_xml_or_spatial_indexContext)_localctx).index_name = id();
			setState(7094);
			match(ON);
			setState(7095);
			full_table_name();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Drop_backward_compatible_indexContext extends ParserRuleContext {
		public IdContext owner_name;
		public IdContext table_or_view_name;
		public IdContext index_name;
		public List DOT() { return getTokens(TSqlParser.DOT); }
		public TerminalNode DOT(int i) {
			return getToken(TSqlParser.DOT, i);
		}
		public List id() {
			return getRuleContexts(IdContext.class);
		}
		public IdContext id(int i) {
			return getRuleContext(IdContext.class,i);
		}
		public Drop_backward_compatible_indexContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_drop_backward_compatible_index; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterDrop_backward_compatible_index(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitDrop_backward_compatible_index(this);
		}
	}

	public final Drop_backward_compatible_indexContext drop_backward_compatible_index() throws RecognitionException {
		Drop_backward_compatible_indexContext _localctx = new Drop_backward_compatible_indexContext(_ctx, getState());
		enterRule(_localctx, 580, RULE_drop_backward_compatible_index);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7100);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,937,_ctx) ) {
			case 1:
				{
				setState(7097);
				((Drop_backward_compatible_indexContext)_localctx).owner_name = id();
				setState(7098);
				match(DOT);
				}
				break;
			}
			setState(7102);
			((Drop_backward_compatible_indexContext)_localctx).table_or_view_name = id();
			setState(7103);
			match(DOT);
			setState(7104);
			((Drop_backward_compatible_indexContext)_localctx).index_name = id();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Drop_procedureContext extends ParserRuleContext {
		public Token proc;
		public TerminalNode DROP() { return getToken(TSqlParser.DROP, 0); }
		public List func_proc_name_schema() {
			return getRuleContexts(Func_proc_name_schemaContext.class);
		}
		public Func_proc_name_schemaContext func_proc_name_schema(int i) {
			return getRuleContext(Func_proc_name_schemaContext.class,i);
		}
		public TerminalNode PROC() { return getToken(TSqlParser.PROC, 0); }
		public TerminalNode PROCEDURE() { return getToken(TSqlParser.PROCEDURE, 0); }
		public TerminalNode IF() { return getToken(TSqlParser.IF, 0); }
		public TerminalNode EXISTS() { return getToken(TSqlParser.EXISTS, 0); }
		public List COMMA() { return getTokens(TSqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(TSqlParser.COMMA, i);
		}
		public TerminalNode SEMI() { return getToken(TSqlParser.SEMI, 0); }
		public Drop_procedureContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_drop_procedure; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterDrop_procedure(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitDrop_procedure(this);
		}
	}

	public final Drop_procedureContext drop_procedure() throws RecognitionException {
		Drop_procedureContext _localctx = new Drop_procedureContext(_ctx, getState());
		enterRule(_localctx, 582, RULE_drop_procedure);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7106);
			match(DROP);
			setState(7107);
			((Drop_procedureContext)_localctx).proc = _input.LT(1);
			_la = _input.LA(1);
			if ( !(_la==PROC || _la==PROCEDURE) ) {
				((Drop_procedureContext)_localctx).proc = (Token)_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			setState(7110);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==IF) {
				{
				setState(7108);
				match(IF);
				setState(7109);
				match(EXISTS);
				}
			}

			setState(7112);
			func_proc_name_schema();
			setState(7117);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA) {
				{
				{
				setState(7113);
				match(COMMA);
				setState(7114);
				func_proc_name_schema();
				}
				}
				setState(7119);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			setState(7121);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,940,_ctx) ) {
			case 1:
				{
				setState(7120);
				match(SEMI);
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Drop_triggerContext extends ParserRuleContext {
		public Drop_dml_triggerContext drop_dml_trigger() {
			return getRuleContext(Drop_dml_triggerContext.class,0);
		}
		public Drop_ddl_triggerContext drop_ddl_trigger() {
			return getRuleContext(Drop_ddl_triggerContext.class,0);
		}
		public Drop_triggerContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_drop_trigger; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterDrop_trigger(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitDrop_trigger(this);
		}
	}

	public final Drop_triggerContext drop_trigger() throws RecognitionException {
		Drop_triggerContext _localctx = new Drop_triggerContext(_ctx, getState());
		enterRule(_localctx, 584, RULE_drop_trigger);
		try {
			setState(7125);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,941,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(7123);
				drop_dml_trigger();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(7124);
				drop_ddl_trigger();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Drop_dml_triggerContext extends ParserRuleContext {
		public TerminalNode DROP() { return getToken(TSqlParser.DROP, 0); }
		public TerminalNode TRIGGER() { return getToken(TSqlParser.TRIGGER, 0); }
		public List simple_name() {
			return getRuleContexts(Simple_nameContext.class);
		}
		public Simple_nameContext simple_name(int i) {
			return getRuleContext(Simple_nameContext.class,i);
		}
		public TerminalNode IF() { return getToken(TSqlParser.IF, 0); }
		public TerminalNode EXISTS() { return getToken(TSqlParser.EXISTS, 0); }
		public List COMMA() { return getTokens(TSqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(TSqlParser.COMMA, i);
		}
		public TerminalNode SEMI() { return getToken(TSqlParser.SEMI, 0); }
		public Drop_dml_triggerContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_drop_dml_trigger; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterDrop_dml_trigger(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitDrop_dml_trigger(this);
		}
	}

	public final Drop_dml_triggerContext drop_dml_trigger() throws RecognitionException {
		Drop_dml_triggerContext _localctx = new Drop_dml_triggerContext(_ctx, getState());
		enterRule(_localctx, 586, RULE_drop_dml_trigger);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7127);
			match(DROP);
			setState(7128);
			match(TRIGGER);
			setState(7131);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==IF) {
				{
				setState(7129);
				match(IF);
				setState(7130);
				match(EXISTS);
				}
			}

			setState(7133);
			simple_name();
			setState(7138);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA) {
				{
				{
				setState(7134);
				match(COMMA);
				setState(7135);
				simple_name();
				}
				}
				setState(7140);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			setState(7142);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,944,_ctx) ) {
			case 1:
				{
				setState(7141);
				match(SEMI);
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Drop_ddl_triggerContext extends ParserRuleContext {
		public TerminalNode DROP() { return getToken(TSqlParser.DROP, 0); }
		public TerminalNode TRIGGER() { return getToken(TSqlParser.TRIGGER, 0); }
		public List simple_name() {
			return getRuleContexts(Simple_nameContext.class);
		}
		public Simple_nameContext simple_name(int i) {
			return getRuleContext(Simple_nameContext.class,i);
		}
		public TerminalNode ON() { return getToken(TSqlParser.ON, 0); }
		public TerminalNode DATABASE() { return getToken(TSqlParser.DATABASE, 0); }
		public TerminalNode ALL() { return getToken(TSqlParser.ALL, 0); }
		public TerminalNode SERVER() { return getToken(TSqlParser.SERVER, 0); }
		public TerminalNode IF() { return getToken(TSqlParser.IF, 0); }
		public TerminalNode EXISTS() { return getToken(TSqlParser.EXISTS, 0); }
		public List COMMA() { return getTokens(TSqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(TSqlParser.COMMA, i);
		}
		public TerminalNode SEMI() { return getToken(TSqlParser.SEMI, 0); }
		public Drop_ddl_triggerContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_drop_ddl_trigger; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterDrop_ddl_trigger(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitDrop_ddl_trigger(this);
		}
	}

	public final Drop_ddl_triggerContext drop_ddl_trigger() throws RecognitionException {
		Drop_ddl_triggerContext _localctx = new Drop_ddl_triggerContext(_ctx, getState());
		enterRule(_localctx, 588, RULE_drop_ddl_trigger);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7144);
			match(DROP);
			setState(7145);
			match(TRIGGER);
			setState(7148);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==IF) {
				{
				setState(7146);
				match(IF);
				setState(7147);
				match(EXISTS);
				}
			}

			setState(7150);
			simple_name();
			setState(7155);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA) {
				{
				{
				setState(7151);
				match(COMMA);
				setState(7152);
				simple_name();
				}
				}
				setState(7157);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			setState(7158);
			match(ON);
			setState(7162);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case DATABASE:
				{
				setState(7159);
				match(DATABASE);
				}
				break;
			case ALL:
				{
				setState(7160);
				match(ALL);
				setState(7161);
				match(SERVER);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			setState(7165);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,948,_ctx) ) {
			case 1:
				{
				setState(7164);
				match(SEMI);
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Drop_functionContext extends ParserRuleContext {
		public TerminalNode DROP() { return getToken(TSqlParser.DROP, 0); }
		public TerminalNode FUNCTION() { return getToken(TSqlParser.FUNCTION, 0); }
		public List func_proc_name_schema() {
			return getRuleContexts(Func_proc_name_schemaContext.class);
		}
		public Func_proc_name_schemaContext func_proc_name_schema(int i) {
			return getRuleContext(Func_proc_name_schemaContext.class,i);
		}
		public TerminalNode IF() { return getToken(TSqlParser.IF, 0); }
		public TerminalNode EXISTS() { return getToken(TSqlParser.EXISTS, 0); }
		public List COMMA() { return getTokens(TSqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(TSqlParser.COMMA, i);
		}
		public TerminalNode SEMI() { return getToken(TSqlParser.SEMI, 0); }
		public Drop_functionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_drop_function; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterDrop_function(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitDrop_function(this);
		}
	}

	public final Drop_functionContext drop_function() throws RecognitionException {
		Drop_functionContext _localctx = new Drop_functionContext(_ctx, getState());
		enterRule(_localctx, 590, RULE_drop_function);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7167);
			match(DROP);
			setState(7168);
			match(FUNCTION);
			setState(7171);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==IF) {
				{
				setState(7169);
				match(IF);
				setState(7170);
				match(EXISTS);
				}
			}

			setState(7173);
			func_proc_name_schema();
			setState(7178);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA) {
				{
				{
				setState(7174);
				match(COMMA);
				setState(7175);
				func_proc_name_schema();
				}
				}
				setState(7180);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			setState(7182);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,951,_ctx) ) {
			case 1:
				{
				setState(7181);
				match(SEMI);
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Drop_statisticsContext extends ParserRuleContext {
		public IdContext name;
		public TerminalNode DROP() { return getToken(TSqlParser.DROP, 0); }
		public TerminalNode STATISTICS() { return getToken(TSqlParser.STATISTICS, 0); }
		public TerminalNode SEMI() { return getToken(TSqlParser.SEMI, 0); }
		public List id() {
			return getRuleContexts(IdContext.class);
		}
		public IdContext id(int i) {
			return getRuleContext(IdContext.class,i);
		}
		public List COMMA() { return getTokens(TSqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(TSqlParser.COMMA, i);
		}
		public List table_name() {
			return getRuleContexts(Table_nameContext.class);
		}
		public Table_nameContext table_name(int i) {
			return getRuleContext(Table_nameContext.class,i);
		}
		public List DOT() { return getTokens(TSqlParser.DOT); }
		public TerminalNode DOT(int i) {
			return getToken(TSqlParser.DOT, i);
		}
		public Drop_statisticsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_drop_statistics; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterDrop_statistics(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitDrop_statistics(this);
		}
	}

	public final Drop_statisticsContext drop_statistics() throws RecognitionException {
		Drop_statisticsContext _localctx = new Drop_statisticsContext(_ctx, getState());
		enterRule(_localctx, 592, RULE_drop_statistics);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7184);
			match(DROP);
			setState(7185);
			match(STATISTICS);
			setState(7195); 
			_errHandler.sync(this);
			_la = _input.LA(1);
			do {
				{
				{
				setState(7187);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==COMMA) {
					{
					setState(7186);
					match(COMMA);
					}
				}

				setState(7192);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,953,_ctx) ) {
				case 1:
					{
					setState(7189);
					table_name();
					setState(7190);
					match(DOT);
					}
					break;
				}
				setState(7194);
				((Drop_statisticsContext)_localctx).name = id();
				}
				}
				setState(7197); 
				_errHandler.sync(this);
				_la = _input.LA(1);
			} while ( _la==BLOCKING_HIERARCHY || _la==CALLED || ((((_la - 81)) & ~0x3f) == 0 && ((1L << (_la - 81)) & ((1L << (DATA_COMPRESSION - 81)) | (1L << (EVENTDATA - 81)) | (1L << (FILENAME - 81)) | (1L << (FILLFACTOR - 81)) | (1L << (FORCESEEK - 81)))) != 0) || ((((_la - 159)) & ~0x3f) == 0 && ((1L << (_la - 159)) & ((1L << (INIT - 159)) | (1L << (KEY - 159)) | (1L << (MASTER - 159)) | (1L << (MAX_MEMORY - 159)))) != 0) || ((((_la - 226)) & ~0x3f) == 0 && ((1L << (_la - 226)) & ((1L << (OFFSETS - 226)) | (1L << (PAGE - 226)) | (1L << (PUBLIC - 226)) | (1L << (R - 226)) | (1L << (RAW - 226)) | (1L << (RETURN - 226)) | (1L << (RETURNS - 226)) | (1L << (ROWCOUNT - 226)))) != 0) || ((((_la - 296)) & ~0x3f) == 0 && ((1L << (_la - 296)) & ((1L << (SAFETY - 296)) | (1L << (SERVER - 296)) | (1L << (SID - 296)) | (1L << (SOURCE - 296)) | (1L << (STATE - 296)) | (1L << (START - 296)) | (1L << (TARGET - 296)))) != 0) || ((((_la - 384)) & ~0x3f) == 0 && ((1L << (_la - 384)) & ((1L << (ABSOLUTE - 384)) | (1L << (ACCENT_SENSITIVITY - 384)) | (1L << (ACTION - 384)) | (1L << (ACTIVATION - 384)) | (1L << (ACTIVE - 384)) | (1L << (ADDRESS - 384)) | (1L << (AES_128 - 384)) | (1L << (AES_192 - 384)) | (1L << (AES_256 - 384)) | (1L << (AFFINITY - 384)) | (1L << (AFTER - 384)) | (1L << (AGGREGATE - 384)) | (1L << (ALGORITHM - 384)) | (1L << (ALLOW_ENCRYPTED_VALUE_MODIFICATIONS - 384)) | (1L << (ALLOW_SNAPSHOT_ISOLATION - 384)) | (1L << (ALLOWED - 384)) | (1L << (ANSI_NULL_DEFAULT - 384)) | (1L << (ANSI_NULLS - 384)) | (1L << (ANSI_PADDING - 384)) | (1L << (ANSI_WARNINGS - 384)) | (1L << (APPLICATION_LOG - 384)) | (1L << (APPLY - 384)) | (1L << (ARITHABORT - 384)) | (1L << (ASSEMBLY - 384)) | (1L << (AUDIT - 384)) | (1L << (AUDIT_GUID - 384)) | (1L << (AUTO - 384)) | (1L << (AUTO_CLEANUP - 384)) | (1L << (AUTO_CLOSE - 384)) | (1L << (AUTO_CREATE_STATISTICS - 384)) | (1L << (AUTO_SHRINK - 384)) | (1L << (AUTO_UPDATE_STATISTICS - 384)) | (1L << (AUTO_UPDATE_STATISTICS_ASYNC - 384)) | (1L << (AVAILABILITY - 384)) | (1L << (AVG - 384)) | (1L << (BACKUP_PRIORITY - 384)) | (1L << (BEGIN_DIALOG - 384)) | (1L << (BIGINT - 384)) | (1L << (BINARY_BASE64 - 384)) | (1L << (BINARY_CHECKSUM - 384)) | (1L << (BINDING - 384)) | (1L << (BLOB_STORAGE - 384)) | (1L << (BROKER - 384)) | (1L << (BROKER_INSTANCE - 384)) | (1L << (BULK_LOGGED - 384)) | (1L << (CALLER - 384)) | (1L << (CAP_CPU_PERCENT - 384)) | (1L << (CAST - 384)) | (1L << (CATALOG - 384)) | (1L << (CATCH - 384)) | (1L << (CHANGE_RETENTION - 384)) | (1L << (CHANGE_TRACKING - 384)) | (1L << (CHECKSUM - 384)) | (1L << (CHECKSUM_AGG - 384)) | (1L << (CLEANUP - 384)) | (1L << (COLLECTION - 384)) | (1L << (COLUMN_MASTER_KEY - 384)) | (1L << (COMMITTED - 384)) | (1L << (COMPATIBILITY_LEVEL - 384)) | (1L << (CONCAT - 384)) | (1L << (CONCAT_NULL_YIELDS_NULL - 384)) | (1L << (CONTENT - 384)) | (1L << (CONTROL - 384)) | (1L << (COOKIE - 384)))) != 0) || ((((_la - 448)) & ~0x3f) == 0 && ((1L << (_la - 448)) & ((1L << (COUNT - 448)) | (1L << (COUNT_BIG - 448)) | (1L << (COUNTER - 448)) | (1L << (CPU - 448)) | (1L << (CREATE_NEW - 448)) | (1L << (CREATION_DISPOSITION - 448)) | (1L << (CREDENTIAL - 448)) | (1L << (CRYPTOGRAPHIC - 448)) | (1L << (CURSOR_CLOSE_ON_COMMIT - 448)) | (1L << (CURSOR_DEFAULT - 448)) | (1L << (DATE_CORRELATION_OPTIMIZATION - 448)) | (1L << (DATEADD - 448)) | (1L << (DATEDIFF - 448)) | (1L << (DATENAME - 448)) | (1L << (DATEPART - 448)) | (1L << (DAYS - 448)) | (1L << (DB_CHAINING - 448)) | (1L << (DB_FAILOVER - 448)) | (1L << (DECRYPTION - 448)) | (1L << (DEFAULT_DOUBLE_QUOTE - 448)) | (1L << (DEFAULT_FULLTEXT_LANGUAGE - 448)) | (1L << (DEFAULT_LANGUAGE - 448)) | (1L << (DELAY - 448)) | (1L << (DELAYED_DURABILITY - 448)) | (1L << (DELETED - 448)) | (1L << (DENSE_RANK - 448)) | (1L << (DEPENDENTS - 448)) | (1L << (DES - 448)) | (1L << (DESCRIPTION - 448)) | (1L << (DESX - 448)) | (1L << (DHCP - 448)) | (1L << (DIALOG - 448)) | (1L << (DIRECTORY_NAME - 448)) | (1L << (DISABLE - 448)) | (1L << (DISABLE_BROKER - 448)) | (1L << (DISABLED - 448)) | (1L << (DISK_DRIVE - 448)) | (1L << (DOCUMENT - 448)) | (1L << (DYNAMIC - 448)) | (1L << (EMERGENCY - 448)) | (1L << (EMPTY - 448)) | (1L << (ENABLE - 448)) | (1L << (ENABLE_BROKER - 448)) | (1L << (ENCRYPTED_VALUE - 448)) | (1L << (ENCRYPTION - 448)) | (1L << (ENDPOINT_URL - 448)) | (1L << (ERROR_BROKER_CONVERSATIONS - 448)) | (1L << (EXCLUSIVE - 448)) | (1L << (EXECUTABLE - 448)) | (1L << (EXIST - 448)) | (1L << (EXPAND - 448)) | (1L << (EXPIRY_DATE - 448)) | (1L << (EXPLICIT - 448)) | (1L << (FAIL_OPERATION - 448)) | (1L << (FAILOVER_MODE - 448)) | (1L << (FAILURE - 448)) | (1L << (FAILURE_CONDITION_LEVEL - 448)) | (1L << (FAST - 448)) | (1L << (FAST_FORWARD - 448)) | (1L << (FILEGROUP - 448)) | (1L << (FILEGROWTH - 448)) | (1L << (FILEPATH - 448)) | (1L << (FILESTREAM - 448)))) != 0) || ((((_la - 512)) & ~0x3f) == 0 && ((1L << (_la - 512)) & ((1L << (FILTER - 512)) | (1L << (FIRST - 512)) | (1L << (FIRST_VALUE - 512)) | (1L << (FOLLOWING - 512)) | (1L << (FORCE - 512)) | (1L << (FORCE_FAILOVER_ALLOW_DATA_LOSS - 512)) | (1L << (FORCED - 512)) | (1L << (FORMAT - 512)) | (1L << (FORWARD_ONLY - 512)) | (1L << (FULLSCAN - 512)) | (1L << (FULLTEXT - 512)) | (1L << (GB - 512)) | (1L << (GETDATE - 512)) | (1L << (GETUTCDATE - 512)) | (1L << (GLOBAL - 512)) | (1L << (GO - 512)) | (1L << (GROUP_MAX_REQUESTS - 512)) | (1L << (GROUPING - 512)) | (1L << (GROUPING_ID - 512)) | (1L << (HADR - 512)) | (1L << (HASH - 512)) | (1L << (HEALTH_CHECK_TIMEOUT - 512)) | (1L << (HIGH - 512)) | (1L << (HONOR_BROKER_PRIORITY - 512)) | (1L << (HOURS - 512)) | (1L << (IDENTITY_VALUE - 512)) | (1L << (IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX - 512)) | (1L << (IMMEDIATE - 512)) | (1L << (IMPERSONATE - 512)) | (1L << (IMPORTANCE - 512)) | (1L << (INCREMENTAL - 512)) | (1L << (INITIATOR - 512)) | (1L << (INPUT - 512)) | (1L << (INSENSITIVE - 512)) | (1L << (INSERTED - 512)) | (1L << (INT - 512)) | (1L << (IP - 512)) | (1L << (ISOLATION - 512)) | (1L << (KB - 512)) | (1L << (KEEP - 512)) | (1L << (KEEPFIXED - 512)) | (1L << (KEY_SOURCE - 512)) | (1L << (KEYS - 512)) | (1L << (KEYSET - 512)) | (1L << (LAG - 512)) | (1L << (LAST - 512)) | (1L << (LAST_VALUE - 512)) | (1L << (LEAD - 512)) | (1L << (LEVEL - 512)) | (1L << (LIST - 512)) | (1L << (LISTENER - 512)) | (1L << (LISTENER_URL - 512)) | (1L << (LOB_COMPACTION - 512)) | (1L << (LOCAL - 512)) | (1L << (LOCATION - 512)) | (1L << (LOCK - 512)) | (1L << (LOCK_ESCALATION - 512)) | (1L << (LOGIN - 512)) | (1L << (LOOP - 512)) | (1L << (LOW - 512)) | (1L << (MANUAL - 512)) | (1L << (MARK - 512)))) != 0) || ((((_la - 576)) & ~0x3f) == 0 && ((1L << (_la - 576)) & ((1L << (MATERIALIZED - 576)) | (1L << (MAX - 576)) | (1L << (MAX_CPU_PERCENT - 576)) | (1L << (MAX_DOP - 576)) | (1L << (MAX_FILES - 576)) | (1L << (MAX_IOPS_PER_VOLUME - 576)) | (1L << (MAX_MEMORY_PERCENT - 576)) | (1L << (MAX_PROCESSES - 576)) | (1L << (MAX_QUEUE_READERS - 576)) | (1L << (MAX_ROLLOVER_FILES - 576)) | (1L << (MAXDOP - 576)) | (1L << (MAXRECURSION - 576)) | (1L << (MAXSIZE - 576)) | (1L << (MB - 576)) | (1L << (MEDIUM - 576)) | (1L << (MEMORY_OPTIMIZED_DATA - 576)) | (1L << (MESSAGE - 576)) | (1L << (MIN - 576)) | (1L << (MIN_ACTIVE_ROWVERSION - 576)) | (1L << (MIN_CPU_PERCENT - 576)) | (1L << (MIN_IOPS_PER_VOLUME - 576)) | (1L << (MIN_MEMORY_PERCENT - 576)) | (1L << (MINUTES - 576)) | (1L << (MIRROR_ADDRESS - 576)) | (1L << (MIXED_PAGE_ALLOCATION - 576)) | (1L << (MODE - 576)) | (1L << (MODIFY - 576)) | (1L << (MOVE - 576)) | (1L << (MULTI_USER - 576)) | (1L << (NAME - 576)) | (1L << (NESTED_TRIGGERS - 576)) | (1L << (NEW_ACCOUNT - 576)) | (1L << (NEW_BROKER - 576)) | (1L << (NEW_PASSWORD - 576)) | (1L << (NEXT - 576)) | (1L << (NO - 576)) | (1L << (NO_TRUNCATE - 576)) | (1L << (NO_WAIT - 576)) | (1L << (NOCOUNT - 576)) | (1L << (NODES - 576)) | (1L << (NOEXPAND - 576)) | (1L << (NON_TRANSACTED_ACCESS - 576)) | (1L << (NORECOMPUTE - 576)) | (1L << (NORECOVERY - 576)) | (1L << (NOWAIT - 576)) | (1L << (NTILE - 576)) | (1L << (NUMANODE - 576)) | (1L << (NUMBER - 576)) | (1L << (NUMERIC_ROUNDABORT - 576)) | (1L << (OBJECT - 576)) | (1L << (OFFLINE - 576)) | (1L << (OFFSET - 576)) | (1L << (OLD_ACCOUNT - 576)) | (1L << (ONLINE - 576)) | (1L << (ONLY - 576)) | (1L << (OPEN_EXISTING - 576)) | (1L << (OPTIMISTIC - 576)) | (1L << (OPTIMIZE - 576)) | (1L << (OUT - 576)) | (1L << (OUTPUT - 576)) | (1L << (OWNER - 576)) | (1L << (PAGE_VERIFY - 576)) | (1L << (PARAMETERIZATION - 576)) | (1L << (PARTITION - 576)))) != 0) || ((((_la - 640)) & ~0x3f) == 0 && ((1L << (_la - 640)) & ((1L << (PARTITIONS - 640)) | (1L << (PARTNER - 640)) | (1L << (PATH - 640)) | (1L << (POISON_MESSAGE_HANDLING - 640)) | (1L << (POOL - 640)) | (1L << (PORT - 640)) | (1L << (PRECEDING - 640)) | (1L << (PRIMARY_ROLE - 640)) | (1L << (PRIOR - 640)) | (1L << (PRIORITY - 640)) | (1L << (PRIORITY_LEVEL - 640)) | (1L << (PRIVATE - 640)) | (1L << (PRIVATE_KEY - 640)) | (1L << (PRIVILEGES - 640)) | (1L << (PROCEDURE_NAME - 640)) | (1L << (PROPERTY - 640)) | (1L << (PROVIDER - 640)) | (1L << (PROVIDER_KEY_NAME - 640)) | (1L << (QUERY - 640)) | (1L << (QUEUE - 640)) | (1L << (QUEUE_DELAY - 640)) | (1L << (QUOTED_IDENTIFIER - 640)) | (1L << (RANGE - 640)) | (1L << (RANK - 640)) | (1L << (RC2 - 640)) | (1L << (RC4 - 640)) | (1L << (RC4_128 - 640)) | (1L << (READ_COMMITTED_SNAPSHOT - 640)) | (1L << (READ_ONLY - 640)) | (1L << (READ_ONLY_ROUTING_LIST - 640)) | (1L << (READ_WRITE - 640)) | (1L << (READONLY - 640)) | (1L << (REBUILD - 640)) | (1L << (RECEIVE - 640)) | (1L << (RECOMPILE - 640)) | (1L << (RECOVERY - 640)) | (1L << (RECURSIVE_TRIGGERS - 640)) | (1L << (RELATIVE - 640)) | (1L << (REMOTE - 640)) | (1L << (REMOTE_SERVICE_NAME - 640)) | (1L << (REMOVE - 640)) | (1L << (REORGANIZE - 640)) | (1L << (REPEATABLE - 640)) | (1L << (REPLICA - 640)) | (1L << (REQUEST_MAX_CPU_TIME_SEC - 640)) | (1L << (REQUEST_MAX_MEMORY_GRANT_PERCENT - 640)) | (1L << (REQUEST_MEMORY_GRANT_TIMEOUT_SEC - 640)) | (1L << (REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT - 640)) | (1L << (RESERVE_DISK_SPACE - 640)) | (1L << (RESOURCE - 640)) | (1L << (RESOURCE_MANAGER_LOCATION - 640)) | (1L << (RESTRICTED_USER - 640)) | (1L << (RETENTION - 640)) | (1L << (ROBUST - 640)) | (1L << (ROOT - 640)) | (1L << (ROUTE - 640)) | (1L << (ROW - 640)) | (1L << (ROW_NUMBER - 640)) | (1L << (ROWGUID - 640)) | (1L << (ROWS - 640)) | (1L << (SAMPLE - 640)) | (1L << (SCHEMABINDING - 640)) | (1L << (SCOPED - 640)) | (1L << (SCROLL - 640)))) != 0) || ((((_la - 704)) & ~0x3f) == 0 && ((1L << (_la - 704)) & ((1L << (SCROLL_LOCKS - 704)) | (1L << (SEARCH - 704)) | (1L << (SECONDARY - 704)) | (1L << (SECONDARY_ONLY - 704)) | (1L << (SECONDARY_ROLE - 704)) | (1L << (SECONDS - 704)) | (1L << (SECRET - 704)) | (1L << (SECURITY_LOG - 704)) | (1L << (SEEDING_MODE - 704)) | (1L << (SELF - 704)) | (1L << (SEMI_SENSITIVE - 704)) | (1L << (SEND - 704)) | (1L << (SENT - 704)) | (1L << (SERIALIZABLE - 704)) | (1L << (SESSION_TIMEOUT - 704)) | (1L << (SETERROR - 704)) | (1L << (SHARE - 704)) | (1L << (SHOWPLAN - 704)) | (1L << (SIGNATURE - 704)) | (1L << (SIMPLE - 704)) | (1L << (SINGLE_USER - 704)) | (1L << (SIZE - 704)) | (1L << (SMALLINT - 704)) | (1L << (SNAPSHOT - 704)) | (1L << (SPATIAL_WINDOW_MAX_CELLS - 704)) | (1L << (STANDBY - 704)) | (1L << (START_DATE - 704)) | (1L << (STATIC - 704)) | (1L << (STATS_STREAM - 704)) | (1L << (STATUS - 704)) | (1L << (STDEV - 704)) | (1L << (STDEVP - 704)) | (1L << (STOPLIST - 704)) | (1L << (STUFF - 704)) | (1L << (SUBJECT - 704)) | (1L << (SUM - 704)) | (1L << (SUSPEND - 704)) | (1L << (SYMMETRIC - 704)) | (1L << (SYNCHRONOUS_COMMIT - 704)) | (1L << (SYNONYM - 704)) | (1L << (TAKE - 704)) | (1L << (TARGET_RECOVERY_TIME - 704)) | (1L << (TB - 704)) | (1L << (TEXTIMAGE_ON - 704)) | (1L << (THROW - 704)) | (1L << (TIES - 704)) | (1L << (TIME - 704)) | (1L << (TIMEOUT - 704)) | (1L << (TIMER - 704)) | (1L << (TINYINT - 704)) | (1L << (TORN_PAGE_DETECTION - 704)) | (1L << (TRANSFORM_NOISE_WORDS - 704)) | (1L << (TRIPLE_DES - 704)) | (1L << (TRIPLE_DES_3KEY - 704)) | (1L << (TRUSTWORTHY - 704)) | (1L << (TRY - 704)) | (1L << (TSQL - 704)) | (1L << (TWO_DIGIT_YEAR_CUTOFF - 704)) | (1L << (TYPE - 704)) | (1L << (TYPE_WARNING - 704)) | (1L << (UNBOUNDED - 704)) | (1L << (UNCOMMITTED - 704)) | (1L << (UNKNOWN - 704)) | (1L << (UNLIMITED - 704)))) != 0) || ((((_la - 768)) & ~0x3f) == 0 && ((1L << (_la - 768)) & ((1L << (USING - 768)) | (1L << (VALID_XML - 768)) | (1L << (VALIDATION - 768)) | (1L << (VALUE - 768)) | (1L << (VAR - 768)) | (1L << (VARP - 768)) | (1L << (VIEW_METADATA - 768)) | (1L << (VIEWS - 768)) | (1L << (WAIT - 768)) | (1L << (WELL_FORMED_XML - 768)) | (1L << (WORK - 768)) | (1L << (WORKLOAD - 768)) | (1L << (XML - 768)) | (1L << (XMLNAMESPACES - 768)) | (1L << (DOUBLE_QUOTE_ID - 768)) | (1L << (SQUARE_BRACKET_ID - 768)) | (1L << (ID - 768)) | (1L << (COMMA - 768)))) != 0) );
			setState(7199);
			match(SEMI);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Drop_tableContext extends ParserRuleContext {
		public TerminalNode DROP() { return getToken(TSqlParser.DROP, 0); }
		public TerminalNode TABLE() { return getToken(TSqlParser.TABLE, 0); }
		public Table_nameContext table_name() {
			return getRuleContext(Table_nameContext.class,0);
		}
		public TerminalNode IF() { return getToken(TSqlParser.IF, 0); }
		public TerminalNode EXISTS() { return getToken(TSqlParser.EXISTS, 0); }
		public TerminalNode SEMI() { return getToken(TSqlParser.SEMI, 0); }
		public Drop_tableContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_drop_table; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterDrop_table(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitDrop_table(this);
		}
	}

	public final Drop_tableContext drop_table() throws RecognitionException {
		Drop_tableContext _localctx = new Drop_tableContext(_ctx, getState());
		enterRule(_localctx, 594, RULE_drop_table);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7201);
			match(DROP);
			setState(7202);
			match(TABLE);
			setState(7205);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==IF) {
				{
				setState(7203);
				match(IF);
				setState(7204);
				match(EXISTS);
				}
			}

			setState(7207);
			table_name();
			setState(7209);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,956,_ctx) ) {
			case 1:
				{
				setState(7208);
				match(SEMI);
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Drop_viewContext extends ParserRuleContext {
		public TerminalNode DROP() { return getToken(TSqlParser.DROP, 0); }
		public TerminalNode VIEW() { return getToken(TSqlParser.VIEW, 0); }
		public List simple_name() {
			return getRuleContexts(Simple_nameContext.class);
		}
		public Simple_nameContext simple_name(int i) {
			return getRuleContext(Simple_nameContext.class,i);
		}
		public TerminalNode IF() { return getToken(TSqlParser.IF, 0); }
		public TerminalNode EXISTS() { return getToken(TSqlParser.EXISTS, 0); }
		public List COMMA() { return getTokens(TSqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(TSqlParser.COMMA, i);
		}
		public TerminalNode SEMI() { return getToken(TSqlParser.SEMI, 0); }
		public Drop_viewContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_drop_view; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterDrop_view(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitDrop_view(this);
		}
	}

	public final Drop_viewContext drop_view() throws RecognitionException {
		Drop_viewContext _localctx = new Drop_viewContext(_ctx, getState());
		enterRule(_localctx, 596, RULE_drop_view);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7211);
			match(DROP);
			setState(7212);
			match(VIEW);
			setState(7215);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==IF) {
				{
				setState(7213);
				match(IF);
				setState(7214);
				match(EXISTS);
				}
			}

			setState(7217);
			simple_name();
			setState(7222);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA) {
				{
				{
				setState(7218);
				match(COMMA);
				setState(7219);
				simple_name();
				}
				}
				setState(7224);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			setState(7226);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,959,_ctx) ) {
			case 1:
				{
				setState(7225);
				match(SEMI);
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Create_typeContext extends ParserRuleContext {
		public Simple_nameContext name;
		public TerminalNode CREATE() { return getToken(TSqlParser.CREATE, 0); }
		public TerminalNode TYPE() { return getToken(TSqlParser.TYPE, 0); }
		public Simple_nameContext simple_name() {
			return getRuleContext(Simple_nameContext.class,0);
		}
		public TerminalNode FROM() { return getToken(TSqlParser.FROM, 0); }
		public Data_typeContext data_type() {
			return getRuleContext(Data_typeContext.class,0);
		}
		public Default_valueContext default_value() {
			return getRuleContext(Default_valueContext.class,0);
		}
		public TerminalNode AS() { return getToken(TSqlParser.AS, 0); }
		public TerminalNode TABLE() { return getToken(TSqlParser.TABLE, 0); }
		public TerminalNode LR_BRACKET() { return getToken(TSqlParser.LR_BRACKET, 0); }
		public Column_def_table_constraintsContext column_def_table_constraints() {
			return getRuleContext(Column_def_table_constraintsContext.class,0);
		}
		public TerminalNode RR_BRACKET() { return getToken(TSqlParser.RR_BRACKET, 0); }
		public Create_typeContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_create_type; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterCreate_type(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitCreate_type(this);
		}
	}

	public final Create_typeContext create_type() throws RecognitionException {
		Create_typeContext _localctx = new Create_typeContext(_ctx, getState());
		enterRule(_localctx, 598, RULE_create_type);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7228);
			match(CREATE);
			setState(7229);
			match(TYPE);
			setState(7230);
			((Create_typeContext)_localctx).name = simple_name();
			setState(7235);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==FROM) {
				{
				setState(7231);
				match(FROM);
				setState(7232);
				data_type();
				setState(7233);
				default_value();
				}
			}

			setState(7243);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==AS) {
				{
				setState(7237);
				match(AS);
				setState(7238);
				match(TABLE);
				setState(7239);
				match(LR_BRACKET);
				setState(7240);
				column_def_table_constraints();
				setState(7241);
				match(RR_BRACKET);
				}
			}

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

	public static class Drop_typeContext extends ParserRuleContext {
		public Simple_nameContext name;
		public TerminalNode DROP() { return getToken(TSqlParser.DROP, 0); }
		public TerminalNode TYPE() { return getToken(TSqlParser.TYPE, 0); }
		public Simple_nameContext simple_name() {
			return getRuleContext(Simple_nameContext.class,0);
		}
		public TerminalNode IF() { return getToken(TSqlParser.IF, 0); }
		public TerminalNode EXISTS() { return getToken(TSqlParser.EXISTS, 0); }
		public Drop_typeContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_drop_type; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterDrop_type(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitDrop_type(this);
		}
	}

	public final Drop_typeContext drop_type() throws RecognitionException {
		Drop_typeContext _localctx = new Drop_typeContext(_ctx, getState());
		enterRule(_localctx, 600, RULE_drop_type);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7245);
			match(DROP);
			setState(7246);
			match(TYPE);
			setState(7249);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==IF) {
				{
				setState(7247);
				match(IF);
				setState(7248);
				match(EXISTS);
				}
			}

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

	public static class Rowset_function_limitedContext extends ParserRuleContext {
		public OpenqueryContext openquery() {
			return getRuleContext(OpenqueryContext.class,0);
		}
		public OpendatasourceContext opendatasource() {
			return getRuleContext(OpendatasourceContext.class,0);
		}
		public Rowset_function_limitedContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_rowset_function_limited; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterRowset_function_limited(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitRowset_function_limited(this);
		}
	}

	public final Rowset_function_limitedContext rowset_function_limited() throws RecognitionException {
		Rowset_function_limitedContext _localctx = new Rowset_function_limitedContext(_ctx, getState());
		enterRule(_localctx, 602, RULE_rowset_function_limited);
		try {
			setState(7255);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case OPENQUERY:
				enterOuterAlt(_localctx, 1);
				{
				setState(7253);
				openquery();
				}
				break;
			case OPENDATASOURCE:
				enterOuterAlt(_localctx, 2);
				{
				setState(7254);
				opendatasource();
				}
				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 OpenqueryContext extends ParserRuleContext {
		public IdContext linked_server;
		public Token query;
		public TerminalNode OPENQUERY() { return getToken(TSqlParser.OPENQUERY, 0); }
		public TerminalNode LR_BRACKET() { return getToken(TSqlParser.LR_BRACKET, 0); }
		public TerminalNode COMMA() { return getToken(TSqlParser.COMMA, 0); }
		public TerminalNode RR_BRACKET() { return getToken(TSqlParser.RR_BRACKET, 0); }
		public IdContext id() {
			return getRuleContext(IdContext.class,0);
		}
		public TerminalNode STRING() { return getToken(TSqlParser.STRING, 0); }
		public OpenqueryContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_openquery; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterOpenquery(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitOpenquery(this);
		}
	}

	public final OpenqueryContext openquery() throws RecognitionException {
		OpenqueryContext _localctx = new OpenqueryContext(_ctx, getState());
		enterRule(_localctx, 604, RULE_openquery);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7257);
			match(OPENQUERY);
			setState(7258);
			match(LR_BRACKET);
			setState(7259);
			((OpenqueryContext)_localctx).linked_server = id();
			setState(7260);
			match(COMMA);
			setState(7261);
			((OpenqueryContext)_localctx).query = match(STRING);
			setState(7262);
			match(RR_BRACKET);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class OpendatasourceContext extends ParserRuleContext {
		public Token provider;
		public Token init;
		public IdContext database;
		public IdContext scheme;
		public IdContext table;
		public TerminalNode OPENDATASOURCE() { return getToken(TSqlParser.OPENDATASOURCE, 0); }
		public TerminalNode LR_BRACKET() { return getToken(TSqlParser.LR_BRACKET, 0); }
		public TerminalNode COMMA() { return getToken(TSqlParser.COMMA, 0); }
		public TerminalNode RR_BRACKET() { return getToken(TSqlParser.RR_BRACKET, 0); }
		public List DOT() { return getTokens(TSqlParser.DOT); }
		public TerminalNode DOT(int i) {
			return getToken(TSqlParser.DOT, i);
		}
		public List STRING() { return getTokens(TSqlParser.STRING); }
		public TerminalNode STRING(int i) {
			return getToken(TSqlParser.STRING, i);
		}
		public List id() {
			return getRuleContexts(IdContext.class);
		}
		public IdContext id(int i) {
			return getRuleContext(IdContext.class,i);
		}
		public OpendatasourceContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_opendatasource; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterOpendatasource(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitOpendatasource(this);
		}
	}

	public final OpendatasourceContext opendatasource() throws RecognitionException {
		OpendatasourceContext _localctx = new OpendatasourceContext(_ctx, getState());
		enterRule(_localctx, 606, RULE_opendatasource);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7264);
			match(OPENDATASOURCE);
			setState(7265);
			match(LR_BRACKET);
			setState(7266);
			((OpendatasourceContext)_localctx).provider = match(STRING);
			setState(7267);
			match(COMMA);
			setState(7268);
			((OpendatasourceContext)_localctx).init = match(STRING);
			setState(7269);
			match(RR_BRACKET);
			setState(7270);
			match(DOT);
			setState(7272);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==CALLED || ((((_la - 81)) & ~0x3f) == 0 && ((1L << (_la - 81)) & ((1L << (DATA_COMPRESSION - 81)) | (1L << (EVENTDATA - 81)) | (1L << (FILENAME - 81)) | (1L << (FILLFACTOR - 81)) | (1L << (FORCESEEK - 81)))) != 0) || ((((_la - 159)) & ~0x3f) == 0 && ((1L << (_la - 159)) & ((1L << (INIT - 159)) | (1L << (KEY - 159)) | (1L << (MASTER - 159)) | (1L << (MAX_MEMORY - 159)))) != 0) || ((((_la - 226)) & ~0x3f) == 0 && ((1L << (_la - 226)) & ((1L << (OFFSETS - 226)) | (1L << (PAGE - 226)) | (1L << (PUBLIC - 226)) | (1L << (R - 226)) | (1L << (RAW - 226)) | (1L << (RETURN - 226)) | (1L << (RETURNS - 226)) | (1L << (ROWCOUNT - 226)))) != 0) || ((((_la - 296)) & ~0x3f) == 0 && ((1L << (_la - 296)) & ((1L << (SAFETY - 296)) | (1L << (SERVER - 296)) | (1L << (SID - 296)) | (1L << (SOURCE - 296)) | (1L << (STATE - 296)) | (1L << (START - 296)) | (1L << (TARGET - 296)))) != 0) || ((((_la - 384)) & ~0x3f) == 0 && ((1L << (_la - 384)) & ((1L << (ABSOLUTE - 384)) | (1L << (ACCENT_SENSITIVITY - 384)) | (1L << (ACTION - 384)) | (1L << (ACTIVATION - 384)) | (1L << (ACTIVE - 384)) | (1L << (ADDRESS - 384)) | (1L << (AES_128 - 384)) | (1L << (AES_192 - 384)) | (1L << (AES_256 - 384)) | (1L << (AFFINITY - 384)) | (1L << (AFTER - 384)) | (1L << (AGGREGATE - 384)) | (1L << (ALGORITHM - 384)) | (1L << (ALLOW_ENCRYPTED_VALUE_MODIFICATIONS - 384)) | (1L << (ALLOW_SNAPSHOT_ISOLATION - 384)) | (1L << (ALLOWED - 384)) | (1L << (ANSI_NULL_DEFAULT - 384)) | (1L << (ANSI_NULLS - 384)) | (1L << (ANSI_PADDING - 384)) | (1L << (ANSI_WARNINGS - 384)) | (1L << (APPLICATION_LOG - 384)) | (1L << (APPLY - 384)) | (1L << (ARITHABORT - 384)) | (1L << (ASSEMBLY - 384)) | (1L << (AUDIT - 384)) | (1L << (AUDIT_GUID - 384)) | (1L << (AUTO - 384)) | (1L << (AUTO_CLEANUP - 384)) | (1L << (AUTO_CLOSE - 384)) | (1L << (AUTO_CREATE_STATISTICS - 384)) | (1L << (AUTO_SHRINK - 384)) | (1L << (AUTO_UPDATE_STATISTICS - 384)) | (1L << (AUTO_UPDATE_STATISTICS_ASYNC - 384)) | (1L << (AVAILABILITY - 384)) | (1L << (AVG - 384)) | (1L << (BACKUP_PRIORITY - 384)) | (1L << (BEGIN_DIALOG - 384)) | (1L << (BIGINT - 384)) | (1L << (BINARY_BASE64 - 384)) | (1L << (BINARY_CHECKSUM - 384)) | (1L << (BINDING - 384)) | (1L << (BLOB_STORAGE - 384)) | (1L << (BROKER - 384)) | (1L << (BROKER_INSTANCE - 384)) | (1L << (BULK_LOGGED - 384)) | (1L << (CALLER - 384)) | (1L << (CAP_CPU_PERCENT - 384)) | (1L << (CAST - 384)) | (1L << (CATALOG - 384)) | (1L << (CATCH - 384)) | (1L << (CHANGE_RETENTION - 384)) | (1L << (CHANGE_TRACKING - 384)) | (1L << (CHECKSUM - 384)) | (1L << (CHECKSUM_AGG - 384)) | (1L << (CLEANUP - 384)) | (1L << (COLLECTION - 384)) | (1L << (COLUMN_MASTER_KEY - 384)) | (1L << (COMMITTED - 384)) | (1L << (COMPATIBILITY_LEVEL - 384)) | (1L << (CONCAT - 384)) | (1L << (CONCAT_NULL_YIELDS_NULL - 384)) | (1L << (CONTENT - 384)) | (1L << (CONTROL - 384)) | (1L << (COOKIE - 384)))) != 0) || ((((_la - 448)) & ~0x3f) == 0 && ((1L << (_la - 448)) & ((1L << (COUNT - 448)) | (1L << (COUNT_BIG - 448)) | (1L << (COUNTER - 448)) | (1L << (CPU - 448)) | (1L << (CREATE_NEW - 448)) | (1L << (CREATION_DISPOSITION - 448)) | (1L << (CREDENTIAL - 448)) | (1L << (CRYPTOGRAPHIC - 448)) | (1L << (CURSOR_CLOSE_ON_COMMIT - 448)) | (1L << (CURSOR_DEFAULT - 448)) | (1L << (DATE_CORRELATION_OPTIMIZATION - 448)) | (1L << (DATEADD - 448)) | (1L << (DATEDIFF - 448)) | (1L << (DATENAME - 448)) | (1L << (DATEPART - 448)) | (1L << (DAYS - 448)) | (1L << (DB_CHAINING - 448)) | (1L << (DB_FAILOVER - 448)) | (1L << (DECRYPTION - 448)) | (1L << (DEFAULT_DOUBLE_QUOTE - 448)) | (1L << (DEFAULT_FULLTEXT_LANGUAGE - 448)) | (1L << (DEFAULT_LANGUAGE - 448)) | (1L << (DELAY - 448)) | (1L << (DELAYED_DURABILITY - 448)) | (1L << (DELETED - 448)) | (1L << (DENSE_RANK - 448)) | (1L << (DEPENDENTS - 448)) | (1L << (DES - 448)) | (1L << (DESCRIPTION - 448)) | (1L << (DESX - 448)) | (1L << (DHCP - 448)) | (1L << (DIALOG - 448)) | (1L << (DIRECTORY_NAME - 448)) | (1L << (DISABLE - 448)) | (1L << (DISABLE_BROKER - 448)) | (1L << (DISABLED - 448)) | (1L << (DISK_DRIVE - 448)) | (1L << (DOCUMENT - 448)) | (1L << (DYNAMIC - 448)) | (1L << (EMERGENCY - 448)) | (1L << (EMPTY - 448)) | (1L << (ENABLE - 448)) | (1L << (ENABLE_BROKER - 448)) | (1L << (ENCRYPTED_VALUE - 448)) | (1L << (ENCRYPTION - 448)) | (1L << (ENDPOINT_URL - 448)) | (1L << (ERROR_BROKER_CONVERSATIONS - 448)) | (1L << (EXCLUSIVE - 448)) | (1L << (EXECUTABLE - 448)) | (1L << (EXIST - 448)) | (1L << (EXPAND - 448)) | (1L << (EXPIRY_DATE - 448)) | (1L << (EXPLICIT - 448)) | (1L << (FAIL_OPERATION - 448)) | (1L << (FAILOVER_MODE - 448)) | (1L << (FAILURE - 448)) | (1L << (FAILURE_CONDITION_LEVEL - 448)) | (1L << (FAST - 448)) | (1L << (FAST_FORWARD - 448)) | (1L << (FILEGROUP - 448)) | (1L << (FILEGROWTH - 448)) | (1L << (FILEPATH - 448)) | (1L << (FILESTREAM - 448)))) != 0) || ((((_la - 512)) & ~0x3f) == 0 && ((1L << (_la - 512)) & ((1L << (FILTER - 512)) | (1L << (FIRST - 512)) | (1L << (FIRST_VALUE - 512)) | (1L << (FOLLOWING - 512)) | (1L << (FORCE - 512)) | (1L << (FORCE_FAILOVER_ALLOW_DATA_LOSS - 512)) | (1L << (FORCED - 512)) | (1L << (FORMAT - 512)) | (1L << (FORWARD_ONLY - 512)) | (1L << (FULLSCAN - 512)) | (1L << (FULLTEXT - 512)) | (1L << (GB - 512)) | (1L << (GETDATE - 512)) | (1L << (GETUTCDATE - 512)) | (1L << (GLOBAL - 512)) | (1L << (GO - 512)) | (1L << (GROUP_MAX_REQUESTS - 512)) | (1L << (GROUPING - 512)) | (1L << (GROUPING_ID - 512)) | (1L << (HADR - 512)) | (1L << (HASH - 512)) | (1L << (HEALTH_CHECK_TIMEOUT - 512)) | (1L << (HIGH - 512)) | (1L << (HONOR_BROKER_PRIORITY - 512)) | (1L << (HOURS - 512)) | (1L << (IDENTITY_VALUE - 512)) | (1L << (IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX - 512)) | (1L << (IMMEDIATE - 512)) | (1L << (IMPERSONATE - 512)) | (1L << (IMPORTANCE - 512)) | (1L << (INCREMENTAL - 512)) | (1L << (INITIATOR - 512)) | (1L << (INPUT - 512)) | (1L << (INSENSITIVE - 512)) | (1L << (INSERTED - 512)) | (1L << (INT - 512)) | (1L << (IP - 512)) | (1L << (ISOLATION - 512)) | (1L << (KB - 512)) | (1L << (KEEP - 512)) | (1L << (KEEPFIXED - 512)) | (1L << (KEY_SOURCE - 512)) | (1L << (KEYS - 512)) | (1L << (KEYSET - 512)) | (1L << (LAG - 512)) | (1L << (LAST - 512)) | (1L << (LAST_VALUE - 512)) | (1L << (LEAD - 512)) | (1L << (LEVEL - 512)) | (1L << (LIST - 512)) | (1L << (LISTENER - 512)) | (1L << (LISTENER_URL - 512)) | (1L << (LOB_COMPACTION - 512)) | (1L << (LOCAL - 512)) | (1L << (LOCATION - 512)) | (1L << (LOCK - 512)) | (1L << (LOCK_ESCALATION - 512)) | (1L << (LOGIN - 512)) | (1L << (LOOP - 512)) | (1L << (LOW - 512)) | (1L << (MANUAL - 512)) | (1L << (MARK - 512)))) != 0) || ((((_la - 576)) & ~0x3f) == 0 && ((1L << (_la - 576)) & ((1L << (MATERIALIZED - 576)) | (1L << (MAX - 576)) | (1L << (MAX_CPU_PERCENT - 576)) | (1L << (MAX_DOP - 576)) | (1L << (MAX_FILES - 576)) | (1L << (MAX_IOPS_PER_VOLUME - 576)) | (1L << (MAX_MEMORY_PERCENT - 576)) | (1L << (MAX_PROCESSES - 576)) | (1L << (MAX_QUEUE_READERS - 576)) | (1L << (MAX_ROLLOVER_FILES - 576)) | (1L << (MAXDOP - 576)) | (1L << (MAXRECURSION - 576)) | (1L << (MAXSIZE - 576)) | (1L << (MB - 576)) | (1L << (MEDIUM - 576)) | (1L << (MEMORY_OPTIMIZED_DATA - 576)) | (1L << (MESSAGE - 576)) | (1L << (MIN - 576)) | (1L << (MIN_ACTIVE_ROWVERSION - 576)) | (1L << (MIN_CPU_PERCENT - 576)) | (1L << (MIN_IOPS_PER_VOLUME - 576)) | (1L << (MIN_MEMORY_PERCENT - 576)) | (1L << (MINUTES - 576)) | (1L << (MIRROR_ADDRESS - 576)) | (1L << (MIXED_PAGE_ALLOCATION - 576)) | (1L << (MODE - 576)) | (1L << (MODIFY - 576)) | (1L << (MOVE - 576)) | (1L << (MULTI_USER - 576)) | (1L << (NAME - 576)) | (1L << (NESTED_TRIGGERS - 576)) | (1L << (NEW_ACCOUNT - 576)) | (1L << (NEW_BROKER - 576)) | (1L << (NEW_PASSWORD - 576)) | (1L << (NEXT - 576)) | (1L << (NO - 576)) | (1L << (NO_TRUNCATE - 576)) | (1L << (NO_WAIT - 576)) | (1L << (NOCOUNT - 576)) | (1L << (NODES - 576)) | (1L << (NOEXPAND - 576)) | (1L << (NON_TRANSACTED_ACCESS - 576)) | (1L << (NORECOMPUTE - 576)) | (1L << (NORECOVERY - 576)) | (1L << (NOWAIT - 576)) | (1L << (NTILE - 576)) | (1L << (NUMANODE - 576)) | (1L << (NUMBER - 576)) | (1L << (NUMERIC_ROUNDABORT - 576)) | (1L << (OBJECT - 576)) | (1L << (OFFLINE - 576)) | (1L << (OFFSET - 576)) | (1L << (OLD_ACCOUNT - 576)) | (1L << (ONLINE - 576)) | (1L << (ONLY - 576)) | (1L << (OPEN_EXISTING - 576)) | (1L << (OPTIMISTIC - 576)) | (1L << (OPTIMIZE - 576)) | (1L << (OUT - 576)) | (1L << (OUTPUT - 576)) | (1L << (OWNER - 576)) | (1L << (PAGE_VERIFY - 576)) | (1L << (PARAMETERIZATION - 576)) | (1L << (PARTITION - 576)))) != 0) || ((((_la - 640)) & ~0x3f) == 0 && ((1L << (_la - 640)) & ((1L << (PARTITIONS - 640)) | (1L << (PARTNER - 640)) | (1L << (PATH - 640)) | (1L << (POISON_MESSAGE_HANDLING - 640)) | (1L << (POOL - 640)) | (1L << (PORT - 640)) | (1L << (PRECEDING - 640)) | (1L << (PRIMARY_ROLE - 640)) | (1L << (PRIOR - 640)) | (1L << (PRIORITY - 640)) | (1L << (PRIORITY_LEVEL - 640)) | (1L << (PRIVATE - 640)) | (1L << (PRIVATE_KEY - 640)) | (1L << (PRIVILEGES - 640)) | (1L << (PROCEDURE_NAME - 640)) | (1L << (PROPERTY - 640)) | (1L << (PROVIDER - 640)) | (1L << (PROVIDER_KEY_NAME - 640)) | (1L << (QUERY - 640)) | (1L << (QUEUE - 640)) | (1L << (QUEUE_DELAY - 640)) | (1L << (QUOTED_IDENTIFIER - 640)) | (1L << (RANGE - 640)) | (1L << (RANK - 640)) | (1L << (RC2 - 640)) | (1L << (RC4 - 640)) | (1L << (RC4_128 - 640)) | (1L << (READ_COMMITTED_SNAPSHOT - 640)) | (1L << (READ_ONLY - 640)) | (1L << (READ_ONLY_ROUTING_LIST - 640)) | (1L << (READ_WRITE - 640)) | (1L << (READONLY - 640)) | (1L << (REBUILD - 640)) | (1L << (RECEIVE - 640)) | (1L << (RECOMPILE - 640)) | (1L << (RECOVERY - 640)) | (1L << (RECURSIVE_TRIGGERS - 640)) | (1L << (RELATIVE - 640)) | (1L << (REMOTE - 640)) | (1L << (REMOTE_SERVICE_NAME - 640)) | (1L << (REMOVE - 640)) | (1L << (REORGANIZE - 640)) | (1L << (REPEATABLE - 640)) | (1L << (REPLICA - 640)) | (1L << (REQUEST_MAX_CPU_TIME_SEC - 640)) | (1L << (REQUEST_MAX_MEMORY_GRANT_PERCENT - 640)) | (1L << (REQUEST_MEMORY_GRANT_TIMEOUT_SEC - 640)) | (1L << (REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT - 640)) | (1L << (RESERVE_DISK_SPACE - 640)) | (1L << (RESOURCE - 640)) | (1L << (RESOURCE_MANAGER_LOCATION - 640)) | (1L << (RESTRICTED_USER - 640)) | (1L << (RETENTION - 640)) | (1L << (ROBUST - 640)) | (1L << (ROOT - 640)) | (1L << (ROUTE - 640)) | (1L << (ROW - 640)) | (1L << (ROW_NUMBER - 640)) | (1L << (ROWGUID - 640)) | (1L << (ROWS - 640)) | (1L << (SAMPLE - 640)) | (1L << (SCHEMABINDING - 640)) | (1L << (SCOPED - 640)) | (1L << (SCROLL - 640)))) != 0) || ((((_la - 704)) & ~0x3f) == 0 && ((1L << (_la - 704)) & ((1L << (SCROLL_LOCKS - 704)) | (1L << (SEARCH - 704)) | (1L << (SECONDARY - 704)) | (1L << (SECONDARY_ONLY - 704)) | (1L << (SECONDARY_ROLE - 704)) | (1L << (SECONDS - 704)) | (1L << (SECRET - 704)) | (1L << (SECURITY_LOG - 704)) | (1L << (SEEDING_MODE - 704)) | (1L << (SELF - 704)) | (1L << (SEMI_SENSITIVE - 704)) | (1L << (SEND - 704)) | (1L << (SENT - 704)) | (1L << (SERIALIZABLE - 704)) | (1L << (SESSION_TIMEOUT - 704)) | (1L << (SETERROR - 704)) | (1L << (SHARE - 704)) | (1L << (SHOWPLAN - 704)) | (1L << (SIGNATURE - 704)) | (1L << (SIMPLE - 704)) | (1L << (SINGLE_USER - 704)) | (1L << (SIZE - 704)) | (1L << (SMALLINT - 704)) | (1L << (SNAPSHOT - 704)) | (1L << (SPATIAL_WINDOW_MAX_CELLS - 704)) | (1L << (STANDBY - 704)) | (1L << (START_DATE - 704)) | (1L << (STATIC - 704)) | (1L << (STATS_STREAM - 704)) | (1L << (STATUS - 704)) | (1L << (STDEV - 704)) | (1L << (STDEVP - 704)) | (1L << (STOPLIST - 704)) | (1L << (STUFF - 704)) | (1L << (SUBJECT - 704)) | (1L << (SUM - 704)) | (1L << (SUSPEND - 704)) | (1L << (SYMMETRIC - 704)) | (1L << (SYNCHRONOUS_COMMIT - 704)) | (1L << (SYNONYM - 704)) | (1L << (TAKE - 704)) | (1L << (TARGET_RECOVERY_TIME - 704)) | (1L << (TB - 704)) | (1L << (TEXTIMAGE_ON - 704)) | (1L << (THROW - 704)) | (1L << (TIES - 704)) | (1L << (TIME - 704)) | (1L << (TIMEOUT - 704)) | (1L << (TIMER - 704)) | (1L << (TINYINT - 704)) | (1L << (TORN_PAGE_DETECTION - 704)) | (1L << (TRANSFORM_NOISE_WORDS - 704)) | (1L << (TRIPLE_DES - 704)) | (1L << (TRIPLE_DES_3KEY - 704)) | (1L << (TRUSTWORTHY - 704)) | (1L << (TRY - 704)) | (1L << (TSQL - 704)) | (1L << (TWO_DIGIT_YEAR_CUTOFF - 704)) | (1L << (TYPE - 704)) | (1L << (TYPE_WARNING - 704)) | (1L << (UNBOUNDED - 704)) | (1L << (UNCOMMITTED - 704)) | (1L << (UNKNOWN - 704)) | (1L << (UNLIMITED - 704)))) != 0) || ((((_la - 768)) & ~0x3f) == 0 && ((1L << (_la - 768)) & ((1L << (USING - 768)) | (1L << (VALID_XML - 768)) | (1L << (VALIDATION - 768)) | (1L << (VALUE - 768)) | (1L << (VAR - 768)) | (1L << (VARP - 768)) | (1L << (VIEW_METADATA - 768)) | (1L << (VIEWS - 768)) | (1L << (WAIT - 768)) | (1L << (WELL_FORMED_XML - 768)) | (1L << (WORK - 768)) | (1L << (WORKLOAD - 768)) | (1L << (XML - 768)) | (1L << (XMLNAMESPACES - 768)) | (1L << (DOUBLE_QUOTE_ID - 768)) | (1L << (SQUARE_BRACKET_ID - 768)) | (1L << (ID - 768)))) != 0)) {
				{
				setState(7271);
				((OpendatasourceContext)_localctx).database = id();
				}
			}

			setState(7274);
			match(DOT);
			setState(7276);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==CALLED || ((((_la - 81)) & ~0x3f) == 0 && ((1L << (_la - 81)) & ((1L << (DATA_COMPRESSION - 81)) | (1L << (EVENTDATA - 81)) | (1L << (FILENAME - 81)) | (1L << (FILLFACTOR - 81)) | (1L << (FORCESEEK - 81)))) != 0) || ((((_la - 159)) & ~0x3f) == 0 && ((1L << (_la - 159)) & ((1L << (INIT - 159)) | (1L << (KEY - 159)) | (1L << (MASTER - 159)) | (1L << (MAX_MEMORY - 159)))) != 0) || ((((_la - 226)) & ~0x3f) == 0 && ((1L << (_la - 226)) & ((1L << (OFFSETS - 226)) | (1L << (PAGE - 226)) | (1L << (PUBLIC - 226)) | (1L << (R - 226)) | (1L << (RAW - 226)) | (1L << (RETURN - 226)) | (1L << (RETURNS - 226)) | (1L << (ROWCOUNT - 226)))) != 0) || ((((_la - 296)) & ~0x3f) == 0 && ((1L << (_la - 296)) & ((1L << (SAFETY - 296)) | (1L << (SERVER - 296)) | (1L << (SID - 296)) | (1L << (SOURCE - 296)) | (1L << (STATE - 296)) | (1L << (START - 296)) | (1L << (TARGET - 296)))) != 0) || ((((_la - 384)) & ~0x3f) == 0 && ((1L << (_la - 384)) & ((1L << (ABSOLUTE - 384)) | (1L << (ACCENT_SENSITIVITY - 384)) | (1L << (ACTION - 384)) | (1L << (ACTIVATION - 384)) | (1L << (ACTIVE - 384)) | (1L << (ADDRESS - 384)) | (1L << (AES_128 - 384)) | (1L << (AES_192 - 384)) | (1L << (AES_256 - 384)) | (1L << (AFFINITY - 384)) | (1L << (AFTER - 384)) | (1L << (AGGREGATE - 384)) | (1L << (ALGORITHM - 384)) | (1L << (ALLOW_ENCRYPTED_VALUE_MODIFICATIONS - 384)) | (1L << (ALLOW_SNAPSHOT_ISOLATION - 384)) | (1L << (ALLOWED - 384)) | (1L << (ANSI_NULL_DEFAULT - 384)) | (1L << (ANSI_NULLS - 384)) | (1L << (ANSI_PADDING - 384)) | (1L << (ANSI_WARNINGS - 384)) | (1L << (APPLICATION_LOG - 384)) | (1L << (APPLY - 384)) | (1L << (ARITHABORT - 384)) | (1L << (ASSEMBLY - 384)) | (1L << (AUDIT - 384)) | (1L << (AUDIT_GUID - 384)) | (1L << (AUTO - 384)) | (1L << (AUTO_CLEANUP - 384)) | (1L << (AUTO_CLOSE - 384)) | (1L << (AUTO_CREATE_STATISTICS - 384)) | (1L << (AUTO_SHRINK - 384)) | (1L << (AUTO_UPDATE_STATISTICS - 384)) | (1L << (AUTO_UPDATE_STATISTICS_ASYNC - 384)) | (1L << (AVAILABILITY - 384)) | (1L << (AVG - 384)) | (1L << (BACKUP_PRIORITY - 384)) | (1L << (BEGIN_DIALOG - 384)) | (1L << (BIGINT - 384)) | (1L << (BINARY_BASE64 - 384)) | (1L << (BINARY_CHECKSUM - 384)) | (1L << (BINDING - 384)) | (1L << (BLOB_STORAGE - 384)) | (1L << (BROKER - 384)) | (1L << (BROKER_INSTANCE - 384)) | (1L << (BULK_LOGGED - 384)) | (1L << (CALLER - 384)) | (1L << (CAP_CPU_PERCENT - 384)) | (1L << (CAST - 384)) | (1L << (CATALOG - 384)) | (1L << (CATCH - 384)) | (1L << (CHANGE_RETENTION - 384)) | (1L << (CHANGE_TRACKING - 384)) | (1L << (CHECKSUM - 384)) | (1L << (CHECKSUM_AGG - 384)) | (1L << (CLEANUP - 384)) | (1L << (COLLECTION - 384)) | (1L << (COLUMN_MASTER_KEY - 384)) | (1L << (COMMITTED - 384)) | (1L << (COMPATIBILITY_LEVEL - 384)) | (1L << (CONCAT - 384)) | (1L << (CONCAT_NULL_YIELDS_NULL - 384)) | (1L << (CONTENT - 384)) | (1L << (CONTROL - 384)) | (1L << (COOKIE - 384)))) != 0) || ((((_la - 448)) & ~0x3f) == 0 && ((1L << (_la - 448)) & ((1L << (COUNT - 448)) | (1L << (COUNT_BIG - 448)) | (1L << (COUNTER - 448)) | (1L << (CPU - 448)) | (1L << (CREATE_NEW - 448)) | (1L << (CREATION_DISPOSITION - 448)) | (1L << (CREDENTIAL - 448)) | (1L << (CRYPTOGRAPHIC - 448)) | (1L << (CURSOR_CLOSE_ON_COMMIT - 448)) | (1L << (CURSOR_DEFAULT - 448)) | (1L << (DATE_CORRELATION_OPTIMIZATION - 448)) | (1L << (DATEADD - 448)) | (1L << (DATEDIFF - 448)) | (1L << (DATENAME - 448)) | (1L << (DATEPART - 448)) | (1L << (DAYS - 448)) | (1L << (DB_CHAINING - 448)) | (1L << (DB_FAILOVER - 448)) | (1L << (DECRYPTION - 448)) | (1L << (DEFAULT_DOUBLE_QUOTE - 448)) | (1L << (DEFAULT_FULLTEXT_LANGUAGE - 448)) | (1L << (DEFAULT_LANGUAGE - 448)) | (1L << (DELAY - 448)) | (1L << (DELAYED_DURABILITY - 448)) | (1L << (DELETED - 448)) | (1L << (DENSE_RANK - 448)) | (1L << (DEPENDENTS - 448)) | (1L << (DES - 448)) | (1L << (DESCRIPTION - 448)) | (1L << (DESX - 448)) | (1L << (DHCP - 448)) | (1L << (DIALOG - 448)) | (1L << (DIRECTORY_NAME - 448)) | (1L << (DISABLE - 448)) | (1L << (DISABLE_BROKER - 448)) | (1L << (DISABLED - 448)) | (1L << (DISK_DRIVE - 448)) | (1L << (DOCUMENT - 448)) | (1L << (DYNAMIC - 448)) | (1L << (EMERGENCY - 448)) | (1L << (EMPTY - 448)) | (1L << (ENABLE - 448)) | (1L << (ENABLE_BROKER - 448)) | (1L << (ENCRYPTED_VALUE - 448)) | (1L << (ENCRYPTION - 448)) | (1L << (ENDPOINT_URL - 448)) | (1L << (ERROR_BROKER_CONVERSATIONS - 448)) | (1L << (EXCLUSIVE - 448)) | (1L << (EXECUTABLE - 448)) | (1L << (EXIST - 448)) | (1L << (EXPAND - 448)) | (1L << (EXPIRY_DATE - 448)) | (1L << (EXPLICIT - 448)) | (1L << (FAIL_OPERATION - 448)) | (1L << (FAILOVER_MODE - 448)) | (1L << (FAILURE - 448)) | (1L << (FAILURE_CONDITION_LEVEL - 448)) | (1L << (FAST - 448)) | (1L << (FAST_FORWARD - 448)) | (1L << (FILEGROUP - 448)) | (1L << (FILEGROWTH - 448)) | (1L << (FILEPATH - 448)) | (1L << (FILESTREAM - 448)))) != 0) || ((((_la - 512)) & ~0x3f) == 0 && ((1L << (_la - 512)) & ((1L << (FILTER - 512)) | (1L << (FIRST - 512)) | (1L << (FIRST_VALUE - 512)) | (1L << (FOLLOWING - 512)) | (1L << (FORCE - 512)) | (1L << (FORCE_FAILOVER_ALLOW_DATA_LOSS - 512)) | (1L << (FORCED - 512)) | (1L << (FORMAT - 512)) | (1L << (FORWARD_ONLY - 512)) | (1L << (FULLSCAN - 512)) | (1L << (FULLTEXT - 512)) | (1L << (GB - 512)) | (1L << (GETDATE - 512)) | (1L << (GETUTCDATE - 512)) | (1L << (GLOBAL - 512)) | (1L << (GO - 512)) | (1L << (GROUP_MAX_REQUESTS - 512)) | (1L << (GROUPING - 512)) | (1L << (GROUPING_ID - 512)) | (1L << (HADR - 512)) | (1L << (HASH - 512)) | (1L << (HEALTH_CHECK_TIMEOUT - 512)) | (1L << (HIGH - 512)) | (1L << (HONOR_BROKER_PRIORITY - 512)) | (1L << (HOURS - 512)) | (1L << (IDENTITY_VALUE - 512)) | (1L << (IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX - 512)) | (1L << (IMMEDIATE - 512)) | (1L << (IMPERSONATE - 512)) | (1L << (IMPORTANCE - 512)) | (1L << (INCREMENTAL - 512)) | (1L << (INITIATOR - 512)) | (1L << (INPUT - 512)) | (1L << (INSENSITIVE - 512)) | (1L << (INSERTED - 512)) | (1L << (INT - 512)) | (1L << (IP - 512)) | (1L << (ISOLATION - 512)) | (1L << (KB - 512)) | (1L << (KEEP - 512)) | (1L << (KEEPFIXED - 512)) | (1L << (KEY_SOURCE - 512)) | (1L << (KEYS - 512)) | (1L << (KEYSET - 512)) | (1L << (LAG - 512)) | (1L << (LAST - 512)) | (1L << (LAST_VALUE - 512)) | (1L << (LEAD - 512)) | (1L << (LEVEL - 512)) | (1L << (LIST - 512)) | (1L << (LISTENER - 512)) | (1L << (LISTENER_URL - 512)) | (1L << (LOB_COMPACTION - 512)) | (1L << (LOCAL - 512)) | (1L << (LOCATION - 512)) | (1L << (LOCK - 512)) | (1L << (LOCK_ESCALATION - 512)) | (1L << (LOGIN - 512)) | (1L << (LOOP - 512)) | (1L << (LOW - 512)) | (1L << (MANUAL - 512)) | (1L << (MARK - 512)))) != 0) || ((((_la - 576)) & ~0x3f) == 0 && ((1L << (_la - 576)) & ((1L << (MATERIALIZED - 576)) | (1L << (MAX - 576)) | (1L << (MAX_CPU_PERCENT - 576)) | (1L << (MAX_DOP - 576)) | (1L << (MAX_FILES - 576)) | (1L << (MAX_IOPS_PER_VOLUME - 576)) | (1L << (MAX_MEMORY_PERCENT - 576)) | (1L << (MAX_PROCESSES - 576)) | (1L << (MAX_QUEUE_READERS - 576)) | (1L << (MAX_ROLLOVER_FILES - 576)) | (1L << (MAXDOP - 576)) | (1L << (MAXRECURSION - 576)) | (1L << (MAXSIZE - 576)) | (1L << (MB - 576)) | (1L << (MEDIUM - 576)) | (1L << (MEMORY_OPTIMIZED_DATA - 576)) | (1L << (MESSAGE - 576)) | (1L << (MIN - 576)) | (1L << (MIN_ACTIVE_ROWVERSION - 576)) | (1L << (MIN_CPU_PERCENT - 576)) | (1L << (MIN_IOPS_PER_VOLUME - 576)) | (1L << (MIN_MEMORY_PERCENT - 576)) | (1L << (MINUTES - 576)) | (1L << (MIRROR_ADDRESS - 576)) | (1L << (MIXED_PAGE_ALLOCATION - 576)) | (1L << (MODE - 576)) | (1L << (MODIFY - 576)) | (1L << (MOVE - 576)) | (1L << (MULTI_USER - 576)) | (1L << (NAME - 576)) | (1L << (NESTED_TRIGGERS - 576)) | (1L << (NEW_ACCOUNT - 576)) | (1L << (NEW_BROKER - 576)) | (1L << (NEW_PASSWORD - 576)) | (1L << (NEXT - 576)) | (1L << (NO - 576)) | (1L << (NO_TRUNCATE - 576)) | (1L << (NO_WAIT - 576)) | (1L << (NOCOUNT - 576)) | (1L << (NODES - 576)) | (1L << (NOEXPAND - 576)) | (1L << (NON_TRANSACTED_ACCESS - 576)) | (1L << (NORECOMPUTE - 576)) | (1L << (NORECOVERY - 576)) | (1L << (NOWAIT - 576)) | (1L << (NTILE - 576)) | (1L << (NUMANODE - 576)) | (1L << (NUMBER - 576)) | (1L << (NUMERIC_ROUNDABORT - 576)) | (1L << (OBJECT - 576)) | (1L << (OFFLINE - 576)) | (1L << (OFFSET - 576)) | (1L << (OLD_ACCOUNT - 576)) | (1L << (ONLINE - 576)) | (1L << (ONLY - 576)) | (1L << (OPEN_EXISTING - 576)) | (1L << (OPTIMISTIC - 576)) | (1L << (OPTIMIZE - 576)) | (1L << (OUT - 576)) | (1L << (OUTPUT - 576)) | (1L << (OWNER - 576)) | (1L << (PAGE_VERIFY - 576)) | (1L << (PARAMETERIZATION - 576)) | (1L << (PARTITION - 576)))) != 0) || ((((_la - 640)) & ~0x3f) == 0 && ((1L << (_la - 640)) & ((1L << (PARTITIONS - 640)) | (1L << (PARTNER - 640)) | (1L << (PATH - 640)) | (1L << (POISON_MESSAGE_HANDLING - 640)) | (1L << (POOL - 640)) | (1L << (PORT - 640)) | (1L << (PRECEDING - 640)) | (1L << (PRIMARY_ROLE - 640)) | (1L << (PRIOR - 640)) | (1L << (PRIORITY - 640)) | (1L << (PRIORITY_LEVEL - 640)) | (1L << (PRIVATE - 640)) | (1L << (PRIVATE_KEY - 640)) | (1L << (PRIVILEGES - 640)) | (1L << (PROCEDURE_NAME - 640)) | (1L << (PROPERTY - 640)) | (1L << (PROVIDER - 640)) | (1L << (PROVIDER_KEY_NAME - 640)) | (1L << (QUERY - 640)) | (1L << (QUEUE - 640)) | (1L << (QUEUE_DELAY - 640)) | (1L << (QUOTED_IDENTIFIER - 640)) | (1L << (RANGE - 640)) | (1L << (RANK - 640)) | (1L << (RC2 - 640)) | (1L << (RC4 - 640)) | (1L << (RC4_128 - 640)) | (1L << (READ_COMMITTED_SNAPSHOT - 640)) | (1L << (READ_ONLY - 640)) | (1L << (READ_ONLY_ROUTING_LIST - 640)) | (1L << (READ_WRITE - 640)) | (1L << (READONLY - 640)) | (1L << (REBUILD - 640)) | (1L << (RECEIVE - 640)) | (1L << (RECOMPILE - 640)) | (1L << (RECOVERY - 640)) | (1L << (RECURSIVE_TRIGGERS - 640)) | (1L << (RELATIVE - 640)) | (1L << (REMOTE - 640)) | (1L << (REMOTE_SERVICE_NAME - 640)) | (1L << (REMOVE - 640)) | (1L << (REORGANIZE - 640)) | (1L << (REPEATABLE - 640)) | (1L << (REPLICA - 640)) | (1L << (REQUEST_MAX_CPU_TIME_SEC - 640)) | (1L << (REQUEST_MAX_MEMORY_GRANT_PERCENT - 640)) | (1L << (REQUEST_MEMORY_GRANT_TIMEOUT_SEC - 640)) | (1L << (REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT - 640)) | (1L << (RESERVE_DISK_SPACE - 640)) | (1L << (RESOURCE - 640)) | (1L << (RESOURCE_MANAGER_LOCATION - 640)) | (1L << (RESTRICTED_USER - 640)) | (1L << (RETENTION - 640)) | (1L << (ROBUST - 640)) | (1L << (ROOT - 640)) | (1L << (ROUTE - 640)) | (1L << (ROW - 640)) | (1L << (ROW_NUMBER - 640)) | (1L << (ROWGUID - 640)) | (1L << (ROWS - 640)) | (1L << (SAMPLE - 640)) | (1L << (SCHEMABINDING - 640)) | (1L << (SCOPED - 640)) | (1L << (SCROLL - 640)))) != 0) || ((((_la - 704)) & ~0x3f) == 0 && ((1L << (_la - 704)) & ((1L << (SCROLL_LOCKS - 704)) | (1L << (SEARCH - 704)) | (1L << (SECONDARY - 704)) | (1L << (SECONDARY_ONLY - 704)) | (1L << (SECONDARY_ROLE - 704)) | (1L << (SECONDS - 704)) | (1L << (SECRET - 704)) | (1L << (SECURITY_LOG - 704)) | (1L << (SEEDING_MODE - 704)) | (1L << (SELF - 704)) | (1L << (SEMI_SENSITIVE - 704)) | (1L << (SEND - 704)) | (1L << (SENT - 704)) | (1L << (SERIALIZABLE - 704)) | (1L << (SESSION_TIMEOUT - 704)) | (1L << (SETERROR - 704)) | (1L << (SHARE - 704)) | (1L << (SHOWPLAN - 704)) | (1L << (SIGNATURE - 704)) | (1L << (SIMPLE - 704)) | (1L << (SINGLE_USER - 704)) | (1L << (SIZE - 704)) | (1L << (SMALLINT - 704)) | (1L << (SNAPSHOT - 704)) | (1L << (SPATIAL_WINDOW_MAX_CELLS - 704)) | (1L << (STANDBY - 704)) | (1L << (START_DATE - 704)) | (1L << (STATIC - 704)) | (1L << (STATS_STREAM - 704)) | (1L << (STATUS - 704)) | (1L << (STDEV - 704)) | (1L << (STDEVP - 704)) | (1L << (STOPLIST - 704)) | (1L << (STUFF - 704)) | (1L << (SUBJECT - 704)) | (1L << (SUM - 704)) | (1L << (SUSPEND - 704)) | (1L << (SYMMETRIC - 704)) | (1L << (SYNCHRONOUS_COMMIT - 704)) | (1L << (SYNONYM - 704)) | (1L << (TAKE - 704)) | (1L << (TARGET_RECOVERY_TIME - 704)) | (1L << (TB - 704)) | (1L << (TEXTIMAGE_ON - 704)) | (1L << (THROW - 704)) | (1L << (TIES - 704)) | (1L << (TIME - 704)) | (1L << (TIMEOUT - 704)) | (1L << (TIMER - 704)) | (1L << (TINYINT - 704)) | (1L << (TORN_PAGE_DETECTION - 704)) | (1L << (TRANSFORM_NOISE_WORDS - 704)) | (1L << (TRIPLE_DES - 704)) | (1L << (TRIPLE_DES_3KEY - 704)) | (1L << (TRUSTWORTHY - 704)) | (1L << (TRY - 704)) | (1L << (TSQL - 704)) | (1L << (TWO_DIGIT_YEAR_CUTOFF - 704)) | (1L << (TYPE - 704)) | (1L << (TYPE_WARNING - 704)) | (1L << (UNBOUNDED - 704)) | (1L << (UNCOMMITTED - 704)) | (1L << (UNKNOWN - 704)) | (1L << (UNLIMITED - 704)))) != 0) || ((((_la - 768)) & ~0x3f) == 0 && ((1L << (_la - 768)) & ((1L << (USING - 768)) | (1L << (VALID_XML - 768)) | (1L << (VALIDATION - 768)) | (1L << (VALUE - 768)) | (1L << (VAR - 768)) | (1L << (VARP - 768)) | (1L << (VIEW_METADATA - 768)) | (1L << (VIEWS - 768)) | (1L << (WAIT - 768)) | (1L << (WELL_FORMED_XML - 768)) | (1L << (WORK - 768)) | (1L << (WORKLOAD - 768)) | (1L << (XML - 768)) | (1L << (XMLNAMESPACES - 768)) | (1L << (DOUBLE_QUOTE_ID - 768)) | (1L << (SQUARE_BRACKET_ID - 768)) | (1L << (ID - 768)))) != 0)) {
				{
				setState(7275);
				((OpendatasourceContext)_localctx).scheme = id();
				}
			}

			setState(7278);
			match(DOT);
			{
			setState(7279);
			((OpendatasourceContext)_localctx).table = id();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Declare_statementContext extends ParserRuleContext {
		public Token xml_namespace_uri;
		public TerminalNode DECLARE() { return getToken(TSqlParser.DECLARE, 0); }
		public TerminalNode LOCAL_ID() { return getToken(TSqlParser.LOCAL_ID, 0); }
		public Table_type_definitionContext table_type_definition() {
			return getRuleContext(Table_type_definitionContext.class,0);
		}
		public TerminalNode AS() { return getToken(TSqlParser.AS, 0); }
		public TerminalNode SEMI() { return getToken(TSqlParser.SEMI, 0); }
		public List declare_local() {
			return getRuleContexts(Declare_localContext.class);
		}
		public Declare_localContext declare_local(int i) {
			return getRuleContext(Declare_localContext.class,i);
		}
		public List COMMA() { return getTokens(TSqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(TSqlParser.COMMA, i);
		}
		public Xml_type_definitionContext xml_type_definition() {
			return getRuleContext(Xml_type_definitionContext.class,0);
		}
		public TerminalNode WITH() { return getToken(TSqlParser.WITH, 0); }
		public TerminalNode XMLNAMESPACES() { return getToken(TSqlParser.XMLNAMESPACES, 0); }
		public TerminalNode LR_BRACKET() { return getToken(TSqlParser.LR_BRACKET, 0); }
		public IdContext id() {
			return getRuleContext(IdContext.class,0);
		}
		public TerminalNode RR_BRACKET() { return getToken(TSqlParser.RR_BRACKET, 0); }
		public TerminalNode STRING() { return getToken(TSqlParser.STRING, 0); }
		public Declare_statementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_declare_statement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterDeclare_statement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitDeclare_statement(this);
		}
	}

	public final Declare_statementContext declare_statement() throws RecognitionException {
		Declare_statementContext _localctx = new Declare_statementContext(_ctx, getState());
		enterRule(_localctx, 608, RULE_declare_statement);
		int _la;
		try {
			setState(7324);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,974,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(7281);
				match(DECLARE);
				setState(7282);
				match(LOCAL_ID);
				setState(7284);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==AS) {
					{
					setState(7283);
					match(AS);
					}
				}

				setState(7286);
				table_type_definition();
				setState(7288);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,967,_ctx) ) {
				case 1:
					{
					setState(7287);
					match(SEMI);
					}
					break;
				}
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(7290);
				match(DECLARE);
				setState(7291);
				declare_local();
				setState(7296);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA) {
					{
					{
					setState(7292);
					match(COMMA);
					setState(7293);
					declare_local();
					}
					}
					setState(7298);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				setState(7300);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,969,_ctx) ) {
				case 1:
					{
					setState(7299);
					match(SEMI);
					}
					break;
				}
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(7302);
				match(DECLARE);
				setState(7303);
				match(LOCAL_ID);
				setState(7305);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==AS) {
					{
					setState(7304);
					match(AS);
					}
				}

				setState(7307);
				xml_type_definition();
				setState(7309);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,971,_ctx) ) {
				case 1:
					{
					setState(7308);
					match(SEMI);
					}
					break;
				}
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(7311);
				match(WITH);
				setState(7312);
				match(XMLNAMESPACES);
				setState(7313);
				match(LR_BRACKET);
				setState(7314);
				((Declare_statementContext)_localctx).xml_namespace_uri = match(STRING);
				setState(7316);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==COMMA) {
					{
					setState(7315);
					match(COMMA);
					}
				}

				setState(7318);
				match(AS);
				setState(7319);
				id();
				setState(7320);
				match(RR_BRACKET);
				setState(7322);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,973,_ctx) ) {
				case 1:
					{
					setState(7321);
					match(SEMI);
					}
					break;
				}
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Cursor_statementContext extends ParserRuleContext {
		public TerminalNode CLOSE() { return getToken(TSqlParser.CLOSE, 0); }
		public Cursor_nameContext cursor_name() {
			return getRuleContext(Cursor_nameContext.class,0);
		}
		public TerminalNode GLOBAL() { return getToken(TSqlParser.GLOBAL, 0); }
		public TerminalNode SEMI() { return getToken(TSqlParser.SEMI, 0); }
		public TerminalNode DEALLOCATE() { return getToken(TSqlParser.DEALLOCATE, 0); }
		public TerminalNode CURSOR() { return getToken(TSqlParser.CURSOR, 0); }
		public Declare_cursorContext declare_cursor() {
			return getRuleContext(Declare_cursorContext.class,0);
		}
		public Fetch_cursorContext fetch_cursor() {
			return getRuleContext(Fetch_cursorContext.class,0);
		}
		public TerminalNode OPEN() { return getToken(TSqlParser.OPEN, 0); }
		public Cursor_statementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_cursor_statement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterCursor_statement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitCursor_statement(this);
		}
	}

	public final Cursor_statementContext cursor_statement() throws RecognitionException {
		Cursor_statementContext _localctx = new Cursor_statementContext(_ctx, getState());
		enterRule(_localctx, 610, RULE_cursor_statement);
		int _la;
		try {
			setState(7355);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case CLOSE:
				enterOuterAlt(_localctx, 1);
				{
				setState(7326);
				match(CLOSE);
				setState(7328);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,975,_ctx) ) {
				case 1:
					{
					setState(7327);
					match(GLOBAL);
					}
					break;
				}
				setState(7330);
				cursor_name();
				setState(7332);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,976,_ctx) ) {
				case 1:
					{
					setState(7331);
					match(SEMI);
					}
					break;
				}
				}
				break;
			case DEALLOCATE:
				enterOuterAlt(_localctx, 2);
				{
				setState(7334);
				match(DEALLOCATE);
				setState(7336);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,977,_ctx) ) {
				case 1:
					{
					setState(7335);
					match(GLOBAL);
					}
					break;
				}
				setState(7339);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==CURSOR) {
					{
					setState(7338);
					match(CURSOR);
					}
				}

				setState(7341);
				cursor_name();
				setState(7343);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,979,_ctx) ) {
				case 1:
					{
					setState(7342);
					match(SEMI);
					}
					break;
				}
				}
				break;
			case DECLARE:
				enterOuterAlt(_localctx, 3);
				{
				setState(7345);
				declare_cursor();
				}
				break;
			case FETCH:
				enterOuterAlt(_localctx, 4);
				{
				setState(7346);
				fetch_cursor();
				}
				break;
			case OPEN:
				enterOuterAlt(_localctx, 5);
				{
				setState(7347);
				match(OPEN);
				setState(7349);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,980,_ctx) ) {
				case 1:
					{
					setState(7348);
					match(GLOBAL);
					}
					break;
				}
				setState(7351);
				cursor_name();
				setState(7353);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,981,_ctx) ) {
				case 1:
					{
					setState(7352);
					match(SEMI);
					}
					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 Backup_databaseContext extends ParserRuleContext {
		public IdContext database_name;
		public Token file_or_filegroup;
		public IdContext logical_device_name;
		public IdContext backup_set_name;
		public Token medianame;
		public Token stats_percent;
		public IdContext encryptor_name;
		public TerminalNode BACKUP() { return getToken(TSqlParser.BACKUP, 0); }
		public TerminalNode DATABASE() { return getToken(TSqlParser.DATABASE, 0); }
		public List TO() { return getTokens(TSqlParser.TO); }
		public TerminalNode TO(int i) {
			return getToken(TSqlParser.TO, i);
		}
		public List id() {
			return getRuleContexts(IdContext.class);
		}
		public IdContext id(int i) {
			return getRuleContext(IdContext.class,i);
		}
		public TerminalNode READ_WRITE_FILEGROUPS() { return getToken(TSqlParser.READ_WRITE_FILEGROUPS, 0); }
		public List EQUAL() { return getTokens(TSqlParser.EQUAL); }
		public TerminalNode EQUAL(int i) {
			return getToken(TSqlParser.EQUAL, i);
		}
		public TerminalNode WITH() { return getToken(TSqlParser.WITH, 0); }
		public List FILE() { return getTokens(TSqlParser.FILE); }
		public TerminalNode FILE(int i) {
			return getToken(TSqlParser.FILE, i);
		}
		public List FILEGROUP() { return getTokens(TSqlParser.FILEGROUP); }
		public TerminalNode FILEGROUP(int i) {
			return getToken(TSqlParser.FILEGROUP, i);
		}
		public List STRING() { return getTokens(TSqlParser.STRING); }
		public TerminalNode STRING(int i) {
			return getToken(TSqlParser.STRING, i);
		}
		public List COMMA() { return getTokens(TSqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(TSqlParser.COMMA, i);
		}
		public List DISK() { return getTokens(TSqlParser.DISK); }
		public TerminalNode DISK(int i) {
			return getToken(TSqlParser.DISK, i);
		}
		public List TAPE() { return getTokens(TSqlParser.TAPE); }
		public TerminalNode TAPE(int i) {
			return getToken(TSqlParser.TAPE, i);
		}
		public List URL() { return getTokens(TSqlParser.URL); }
		public TerminalNode URL(int i) {
			return getToken(TSqlParser.URL, i);
		}
		public List MIRROR() { return getTokens(TSqlParser.MIRROR); }
		public TerminalNode MIRROR(int i) {
			return getToken(TSqlParser.MIRROR, i);
		}
		public List DIFFERENTIAL() { return getTokens(TSqlParser.DIFFERENTIAL); }
		public TerminalNode DIFFERENTIAL(int i) {
			return getToken(TSqlParser.DIFFERENTIAL, i);
		}
		public List COPY_ONLY() { return getTokens(TSqlParser.COPY_ONLY); }
		public TerminalNode COPY_ONLY(int i) {
			return getToken(TSqlParser.COPY_ONLY, i);
		}
		public List DESCRIPTION() { return getTokens(TSqlParser.DESCRIPTION); }
		public TerminalNode DESCRIPTION(int i) {
			return getToken(TSqlParser.DESCRIPTION, i);
		}
		public List NAME() { return getTokens(TSqlParser.NAME); }
		public TerminalNode NAME(int i) {
			return getToken(TSqlParser.NAME, i);
		}
		public List CREDENTIAL() { return getTokens(TSqlParser.CREDENTIAL); }
		public TerminalNode CREDENTIAL(int i) {
			return getToken(TSqlParser.CREDENTIAL, i);
		}
		public List FILE_SNAPSHOT() { return getTokens(TSqlParser.FILE_SNAPSHOT); }
		public TerminalNode FILE_SNAPSHOT(int i) {
			return getToken(TSqlParser.FILE_SNAPSHOT, i);
		}
		public List MEDIADESCRIPTION() { return getTokens(TSqlParser.MEDIADESCRIPTION); }
		public TerminalNode MEDIADESCRIPTION(int i) {
			return getToken(TSqlParser.MEDIADESCRIPTION, i);
		}
		public List MEDIANAME() { return getTokens(TSqlParser.MEDIANAME); }
		public TerminalNode MEDIANAME(int i) {
			return getToken(TSqlParser.MEDIANAME, i);
		}
		public List BLOCKSIZE() { return getTokens(TSqlParser.BLOCKSIZE); }
		public TerminalNode BLOCKSIZE(int i) {
			return getToken(TSqlParser.BLOCKSIZE, i);
		}
		public List BUFFERCOUNT() { return getTokens(TSqlParser.BUFFERCOUNT); }
		public TerminalNode BUFFERCOUNT(int i) {
			return getToken(TSqlParser.BUFFERCOUNT, i);
		}
		public List MAXTRANSFER() { return getTokens(TSqlParser.MAXTRANSFER); }
		public TerminalNode MAXTRANSFER(int i) {
			return getToken(TSqlParser.MAXTRANSFER, i);
		}
		public List RESTART() { return getTokens(TSqlParser.RESTART); }
		public TerminalNode RESTART(int i) {
			return getToken(TSqlParser.RESTART, i);
		}
		public List STATS() { return getTokens(TSqlParser.STATS); }
		public TerminalNode STATS(int i) {
			return getToken(TSqlParser.STATS, i);
		}
		public List ENCRYPTION() { return getTokens(TSqlParser.ENCRYPTION); }
		public TerminalNode ENCRYPTION(int i) {
			return getToken(TSqlParser.ENCRYPTION, i);
		}
		public List LR_BRACKET() { return getTokens(TSqlParser.LR_BRACKET); }
		public TerminalNode LR_BRACKET(int i) {
			return getToken(TSqlParser.LR_BRACKET, i);
		}
		public List ALGORITHM() { return getTokens(TSqlParser.ALGORITHM); }
		public TerminalNode ALGORITHM(int i) {
			return getToken(TSqlParser.ALGORITHM, i);
		}
		public List SERVER() { return getTokens(TSqlParser.SERVER); }
		public TerminalNode SERVER(int i) {
			return getToken(TSqlParser.SERVER, i);
		}
		public List CERTIFICATE() { return getTokens(TSqlParser.CERTIFICATE); }
		public TerminalNode CERTIFICATE(int i) {
			return getToken(TSqlParser.CERTIFICATE, i);
		}
		public List COMPRESSION() { return getTokens(TSqlParser.COMPRESSION); }
		public TerminalNode COMPRESSION(int i) {
			return getToken(TSqlParser.COMPRESSION, i);
		}
		public List NO_COMPRESSION() { return getTokens(TSqlParser.NO_COMPRESSION); }
		public TerminalNode NO_COMPRESSION(int i) {
			return getToken(TSqlParser.NO_COMPRESSION, i);
		}
		public List NOINIT() { return getTokens(TSqlParser.NOINIT); }
		public TerminalNode NOINIT(int i) {
			return getToken(TSqlParser.NOINIT, i);
		}
		public List INIT() { return getTokens(TSqlParser.INIT); }
		public TerminalNode INIT(int i) {
			return getToken(TSqlParser.INIT, i);
		}
		public List NOSKIP() { return getTokens(TSqlParser.NOSKIP); }
		public TerminalNode NOSKIP(int i) {
			return getToken(TSqlParser.NOSKIP, i);
		}
		public List SKIP_KEYWORD() { return getTokens(TSqlParser.SKIP_KEYWORD); }
		public TerminalNode SKIP_KEYWORD(int i) {
			return getToken(TSqlParser.SKIP_KEYWORD, i);
		}
		public List NOFORMAT() { return getTokens(TSqlParser.NOFORMAT); }
		public TerminalNode NOFORMAT(int i) {
			return getToken(TSqlParser.NOFORMAT, i);
		}
		public List FORMAT() { return getTokens(TSqlParser.FORMAT); }
		public TerminalNode FORMAT(int i) {
			return getToken(TSqlParser.FORMAT, i);
		}
		public List NO_CHECKSUM() { return getTokens(TSqlParser.NO_CHECKSUM); }
		public TerminalNode NO_CHECKSUM(int i) {
			return getToken(TSqlParser.NO_CHECKSUM, i);
		}
		public List CHECKSUM() { return getTokens(TSqlParser.CHECKSUM); }
		public TerminalNode CHECKSUM(int i) {
			return getToken(TSqlParser.CHECKSUM, i);
		}
		public List STOP_ON_ERROR() { return getTokens(TSqlParser.STOP_ON_ERROR); }
		public TerminalNode STOP_ON_ERROR(int i) {
			return getToken(TSqlParser.STOP_ON_ERROR, i);
		}
		public List CONTINUE_AFTER_ERROR() { return getTokens(TSqlParser.CONTINUE_AFTER_ERROR); }
		public TerminalNode CONTINUE_AFTER_ERROR(int i) {
			return getToken(TSqlParser.CONTINUE_AFTER_ERROR, i);
		}
		public List REWIND() { return getTokens(TSqlParser.REWIND); }
		public TerminalNode REWIND(int i) {
			return getToken(TSqlParser.REWIND, i);
		}
		public List NOREWIND() { return getTokens(TSqlParser.NOREWIND); }
		public TerminalNode NOREWIND(int i) {
			return getToken(TSqlParser.NOREWIND, i);
		}
		public List LOAD() { return getTokens(TSqlParser.LOAD); }
		public TerminalNode LOAD(int i) {
			return getToken(TSqlParser.LOAD, i);
		}
		public List NOUNLOAD() { return getTokens(TSqlParser.NOUNLOAD); }
		public TerminalNode NOUNLOAD(int i) {
			return getToken(TSqlParser.NOUNLOAD, i);
		}
		public List AES_128() { return getTokens(TSqlParser.AES_128); }
		public TerminalNode AES_128(int i) {
			return getToken(TSqlParser.AES_128, i);
		}
		public List AES_192() { return getTokens(TSqlParser.AES_192); }
		public TerminalNode AES_192(int i) {
			return getToken(TSqlParser.AES_192, i);
		}
		public List AES_256() { return getTokens(TSqlParser.AES_256); }
		public TerminalNode AES_256(int i) {
			return getToken(TSqlParser.AES_256, i);
		}
		public List TRIPLE_DES_3KEY() { return getTokens(TSqlParser.TRIPLE_DES_3KEY); }
		public TerminalNode TRIPLE_DES_3KEY(int i) {
			return getToken(TSqlParser.TRIPLE_DES_3KEY, i);
		}
		public List EXPIREDATE() { return getTokens(TSqlParser.EXPIREDATE); }
		public TerminalNode EXPIREDATE(int i) {
			return getToken(TSqlParser.EXPIREDATE, i);
		}
		public List RETAINDAYS() { return getTokens(TSqlParser.RETAINDAYS); }
		public TerminalNode RETAINDAYS(int i) {
			return getToken(TSqlParser.RETAINDAYS, i);
		}
		public List DECIMAL() { return getTokens(TSqlParser.DECIMAL); }
		public TerminalNode DECIMAL(int i) {
			return getToken(TSqlParser.DECIMAL, i);
		}
		public List ASYMMETRIC() { return getTokens(TSqlParser.ASYMMETRIC); }
		public TerminalNode ASYMMETRIC(int i) {
			return getToken(TSqlParser.ASYMMETRIC, i);
		}
		public List KEY() { return getTokens(TSqlParser.KEY); }
		public TerminalNode KEY(int i) {
			return getToken(TSqlParser.KEY, i);
		}
		public Backup_databaseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_backup_database; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterBackup_database(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitBackup_database(this);
		}
	}

	public final Backup_databaseContext backup_database() throws RecognitionException {
		Backup_databaseContext _localctx = new Backup_databaseContext(_ctx, getState());
		enterRule(_localctx, 612, RULE_backup_database);
		int _la;
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			setState(7357);
			match(BACKUP);
			setState(7358);
			match(DATABASE);
			{
			setState(7359);
			((Backup_databaseContext)_localctx).database_name = id();
			}
			setState(7372);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==READ_WRITE_FILEGROUPS) {
				{
				setState(7360);
				match(READ_WRITE_FILEGROUPS);
				setState(7369);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,984,_ctx);
				while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
					if ( _alt==1 ) {
						{
						{
						setState(7362);
						_errHandler.sync(this);
						_la = _input.LA(1);
						if (_la==COMMA) {
							{
							setState(7361);
							match(COMMA);
							}
						}

						setState(7364);
						_la = _input.LA(1);
						if ( !(_la==FILE || _la==FILEGROUP) ) {
						_errHandler.recoverInline(this);
						}
						else {
							if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
							_errHandler.reportMatch(this);
							consume();
						}
						setState(7365);
						match(EQUAL);
						setState(7366);
						((Backup_databaseContext)_localctx).file_or_filegroup = match(STRING);
						}
						} 
					}
					setState(7371);
					_errHandler.sync(this);
					_alt = getInterpreter().adaptivePredict(_input,984,_ctx);
				}
				}
			}

			setState(7382);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==FILE || _la==FILEGROUP || _la==COMMA) {
				{
				{
				setState(7375);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==COMMA) {
					{
					setState(7374);
					match(COMMA);
					}
				}

				setState(7377);
				_la = _input.LA(1);
				if ( !(_la==FILE || _la==FILEGROUP) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(7378);
				match(EQUAL);
				setState(7379);
				((Backup_databaseContext)_localctx).file_or_filegroup = match(STRING);
				}
				}
				setState(7384);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			setState(7408);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,993,_ctx) ) {
			case 1:
				{
				setState(7385);
				match(TO);
				setState(7390); 
				_errHandler.sync(this);
				_alt = 1;
				do {
					switch (_alt) {
					case 1:
						{
						{
						setState(7387);
						_errHandler.sync(this);
						_la = _input.LA(1);
						if (_la==COMMA) {
							{
							setState(7386);
							match(COMMA);
							}
						}

						setState(7389);
						((Backup_databaseContext)_localctx).logical_device_name = id();
						}
						}
						break;
					default:
						throw new NoViableAltException(this);
					}
					setState(7392); 
					_errHandler.sync(this);
					_alt = getInterpreter().adaptivePredict(_input,989,_ctx);
				} while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER );
				}
				break;
			case 2:
				{
				setState(7394);
				match(TO);
				setState(7404); 
				_errHandler.sync(this);
				_la = _input.LA(1);
				do {
					{
					{
					setState(7396);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==COMMA) {
						{
						setState(7395);
						match(COMMA);
						}
					}

					setState(7398);
					_la = _input.LA(1);
					if ( !(_la==DISK || _la==TAPE || _la==URL) ) {
					_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					setState(7399);
					match(EQUAL);
					setState(7402);
					_errHandler.sync(this);
					switch (_input.LA(1)) {
					case STRING:
						{
						setState(7400);
						match(STRING);
						}
						break;
					case CALLED:
					case DATA_COMPRESSION:
					case EVENTDATA:
					case FILENAME:
					case FILLFACTOR:
					case FORCESEEK:
					case INIT:
					case KEY:
					case MASTER:
					case MAX_MEMORY:
					case OFFSETS:
					case PAGE:
					case PUBLIC:
					case R:
					case RAW:
					case RETURN:
					case RETURNS:
					case ROWCOUNT:
					case SAFETY:
					case SERVER:
					case SID:
					case SOURCE:
					case STATE:
					case START:
					case TARGET:
					case ABSOLUTE:
					case ACCENT_SENSITIVITY:
					case ACTION:
					case ACTIVATION:
					case ACTIVE:
					case ADDRESS:
					case AES_128:
					case AES_192:
					case AES_256:
					case AFFINITY:
					case AFTER:
					case AGGREGATE:
					case ALGORITHM:
					case ALLOW_ENCRYPTED_VALUE_MODIFICATIONS:
					case ALLOW_SNAPSHOT_ISOLATION:
					case ALLOWED:
					case ANSI_NULL_DEFAULT:
					case ANSI_NULLS:
					case ANSI_PADDING:
					case ANSI_WARNINGS:
					case APPLICATION_LOG:
					case APPLY:
					case ARITHABORT:
					case ASSEMBLY:
					case AUDIT:
					case AUDIT_GUID:
					case AUTO:
					case AUTO_CLEANUP:
					case AUTO_CLOSE:
					case AUTO_CREATE_STATISTICS:
					case AUTO_SHRINK:
					case AUTO_UPDATE_STATISTICS:
					case AUTO_UPDATE_STATISTICS_ASYNC:
					case AVAILABILITY:
					case AVG:
					case BACKUP_PRIORITY:
					case BEGIN_DIALOG:
					case BIGINT:
					case BINARY_BASE64:
					case BINARY_CHECKSUM:
					case BINDING:
					case BLOB_STORAGE:
					case BROKER:
					case BROKER_INSTANCE:
					case BULK_LOGGED:
					case CALLER:
					case CAP_CPU_PERCENT:
					case CAST:
					case CATALOG:
					case CATCH:
					case CHANGE_RETENTION:
					case CHANGE_TRACKING:
					case CHECKSUM:
					case CHECKSUM_AGG:
					case CLEANUP:
					case COLLECTION:
					case COLUMN_MASTER_KEY:
					case COMMITTED:
					case COMPATIBILITY_LEVEL:
					case CONCAT:
					case CONCAT_NULL_YIELDS_NULL:
					case CONTENT:
					case CONTROL:
					case COOKIE:
					case COUNT:
					case COUNT_BIG:
					case COUNTER:
					case CPU:
					case CREATE_NEW:
					case CREATION_DISPOSITION:
					case CREDENTIAL:
					case CRYPTOGRAPHIC:
					case CURSOR_CLOSE_ON_COMMIT:
					case CURSOR_DEFAULT:
					case DATE_CORRELATION_OPTIMIZATION:
					case DATEADD:
					case DATEDIFF:
					case DATENAME:
					case DATEPART:
					case DAYS:
					case DB_CHAINING:
					case DB_FAILOVER:
					case DECRYPTION:
					case DEFAULT_DOUBLE_QUOTE:
					case DEFAULT_FULLTEXT_LANGUAGE:
					case DEFAULT_LANGUAGE:
					case DELAY:
					case DELAYED_DURABILITY:
					case DELETED:
					case DENSE_RANK:
					case DEPENDENTS:
					case DES:
					case DESCRIPTION:
					case DESX:
					case DHCP:
					case DIALOG:
					case DIRECTORY_NAME:
					case DISABLE:
					case DISABLE_BROKER:
					case DISABLED:
					case DISK_DRIVE:
					case DOCUMENT:
					case DYNAMIC:
					case EMERGENCY:
					case EMPTY:
					case ENABLE:
					case ENABLE_BROKER:
					case ENCRYPTED_VALUE:
					case ENCRYPTION:
					case ENDPOINT_URL:
					case ERROR_BROKER_CONVERSATIONS:
					case EXCLUSIVE:
					case EXECUTABLE:
					case EXIST:
					case EXPAND:
					case EXPIRY_DATE:
					case EXPLICIT:
					case FAIL_OPERATION:
					case FAILOVER_MODE:
					case FAILURE:
					case FAILURE_CONDITION_LEVEL:
					case FAST:
					case FAST_FORWARD:
					case FILEGROUP:
					case FILEGROWTH:
					case FILEPATH:
					case FILESTREAM:
					case FILTER:
					case FIRST:
					case FIRST_VALUE:
					case FOLLOWING:
					case FORCE:
					case FORCE_FAILOVER_ALLOW_DATA_LOSS:
					case FORCED:
					case FORMAT:
					case FORWARD_ONLY:
					case FULLSCAN:
					case FULLTEXT:
					case GB:
					case GETDATE:
					case GETUTCDATE:
					case GLOBAL:
					case GO:
					case GROUP_MAX_REQUESTS:
					case GROUPING:
					case GROUPING_ID:
					case HADR:
					case HASH:
					case HEALTH_CHECK_TIMEOUT:
					case HIGH:
					case HONOR_BROKER_PRIORITY:
					case HOURS:
					case IDENTITY_VALUE:
					case IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX:
					case IMMEDIATE:
					case IMPERSONATE:
					case IMPORTANCE:
					case INCREMENTAL:
					case INITIATOR:
					case INPUT:
					case INSENSITIVE:
					case INSERTED:
					case INT:
					case IP:
					case ISOLATION:
					case KB:
					case KEEP:
					case KEEPFIXED:
					case KEY_SOURCE:
					case KEYS:
					case KEYSET:
					case LAG:
					case LAST:
					case LAST_VALUE:
					case LEAD:
					case LEVEL:
					case LIST:
					case LISTENER:
					case LISTENER_URL:
					case LOB_COMPACTION:
					case LOCAL:
					case LOCATION:
					case LOCK:
					case LOCK_ESCALATION:
					case LOGIN:
					case LOOP:
					case LOW:
					case MANUAL:
					case MARK:
					case MATERIALIZED:
					case MAX:
					case MAX_CPU_PERCENT:
					case MAX_DOP:
					case MAX_FILES:
					case MAX_IOPS_PER_VOLUME:
					case MAX_MEMORY_PERCENT:
					case MAX_PROCESSES:
					case MAX_QUEUE_READERS:
					case MAX_ROLLOVER_FILES:
					case MAXDOP:
					case MAXRECURSION:
					case MAXSIZE:
					case MB:
					case MEDIUM:
					case MEMORY_OPTIMIZED_DATA:
					case MESSAGE:
					case MIN:
					case MIN_ACTIVE_ROWVERSION:
					case MIN_CPU_PERCENT:
					case MIN_IOPS_PER_VOLUME:
					case MIN_MEMORY_PERCENT:
					case MINUTES:
					case MIRROR_ADDRESS:
					case MIXED_PAGE_ALLOCATION:
					case MODE:
					case MODIFY:
					case MOVE:
					case MULTI_USER:
					case NAME:
					case NESTED_TRIGGERS:
					case NEW_ACCOUNT:
					case NEW_BROKER:
					case NEW_PASSWORD:
					case NEXT:
					case NO:
					case NO_TRUNCATE:
					case NO_WAIT:
					case NOCOUNT:
					case NODES:
					case NOEXPAND:
					case NON_TRANSACTED_ACCESS:
					case NORECOMPUTE:
					case NORECOVERY:
					case NOWAIT:
					case NTILE:
					case NUMANODE:
					case NUMBER:
					case NUMERIC_ROUNDABORT:
					case OBJECT:
					case OFFLINE:
					case OFFSET:
					case OLD_ACCOUNT:
					case ONLINE:
					case ONLY:
					case OPEN_EXISTING:
					case OPTIMISTIC:
					case OPTIMIZE:
					case OUT:
					case OUTPUT:
					case OWNER:
					case PAGE_VERIFY:
					case PARAMETERIZATION:
					case PARTITION:
					case PARTITIONS:
					case PARTNER:
					case PATH:
					case POISON_MESSAGE_HANDLING:
					case POOL:
					case PORT:
					case PRECEDING:
					case PRIMARY_ROLE:
					case PRIOR:
					case PRIORITY:
					case PRIORITY_LEVEL:
					case PRIVATE:
					case PRIVATE_KEY:
					case PRIVILEGES:
					case PROCEDURE_NAME:
					case PROPERTY:
					case PROVIDER:
					case PROVIDER_KEY_NAME:
					case QUERY:
					case QUEUE:
					case QUEUE_DELAY:
					case QUOTED_IDENTIFIER:
					case RANGE:
					case RANK:
					case RC2:
					case RC4:
					case RC4_128:
					case READ_COMMITTED_SNAPSHOT:
					case READ_ONLY:
					case READ_ONLY_ROUTING_LIST:
					case READ_WRITE:
					case READONLY:
					case REBUILD:
					case RECEIVE:
					case RECOMPILE:
					case RECOVERY:
					case RECURSIVE_TRIGGERS:
					case RELATIVE:
					case REMOTE:
					case REMOTE_SERVICE_NAME:
					case REMOVE:
					case REORGANIZE:
					case REPEATABLE:
					case REPLICA:
					case REQUEST_MAX_CPU_TIME_SEC:
					case REQUEST_MAX_MEMORY_GRANT_PERCENT:
					case REQUEST_MEMORY_GRANT_TIMEOUT_SEC:
					case REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT:
					case RESERVE_DISK_SPACE:
					case RESOURCE:
					case RESOURCE_MANAGER_LOCATION:
					case RESTRICTED_USER:
					case RETENTION:
					case ROBUST:
					case ROOT:
					case ROUTE:
					case ROW:
					case ROW_NUMBER:
					case ROWGUID:
					case ROWS:
					case SAMPLE:
					case SCHEMABINDING:
					case SCOPED:
					case SCROLL:
					case SCROLL_LOCKS:
					case SEARCH:
					case SECONDARY:
					case SECONDARY_ONLY:
					case SECONDARY_ROLE:
					case SECONDS:
					case SECRET:
					case SECURITY_LOG:
					case SEEDING_MODE:
					case SELF:
					case SEMI_SENSITIVE:
					case SEND:
					case SENT:
					case SERIALIZABLE:
					case SESSION_TIMEOUT:
					case SETERROR:
					case SHARE:
					case SHOWPLAN:
					case SIGNATURE:
					case SIMPLE:
					case SINGLE_USER:
					case SIZE:
					case SMALLINT:
					case SNAPSHOT:
					case SPATIAL_WINDOW_MAX_CELLS:
					case STANDBY:
					case START_DATE:
					case STATIC:
					case STATS_STREAM:
					case STATUS:
					case STDEV:
					case STDEVP:
					case STOPLIST:
					case STUFF:
					case SUBJECT:
					case SUM:
					case SUSPEND:
					case SYMMETRIC:
					case SYNCHRONOUS_COMMIT:
					case SYNONYM:
					case TAKE:
					case TARGET_RECOVERY_TIME:
					case TB:
					case TEXTIMAGE_ON:
					case THROW:
					case TIES:
					case TIME:
					case TIMEOUT:
					case TIMER:
					case TINYINT:
					case TORN_PAGE_DETECTION:
					case TRANSFORM_NOISE_WORDS:
					case TRIPLE_DES:
					case TRIPLE_DES_3KEY:
					case TRUSTWORTHY:
					case TRY:
					case TSQL:
					case TWO_DIGIT_YEAR_CUTOFF:
					case TYPE:
					case TYPE_WARNING:
					case UNBOUNDED:
					case UNCOMMITTED:
					case UNKNOWN:
					case UNLIMITED:
					case USING:
					case VALID_XML:
					case VALIDATION:
					case VALUE:
					case VAR:
					case VARP:
					case VIEW_METADATA:
					case VIEWS:
					case WAIT:
					case WELL_FORMED_XML:
					case WORK:
					case WORKLOAD:
					case XML:
					case XMLNAMESPACES:
					case DOUBLE_QUOTE_ID:
					case SQUARE_BRACKET_ID:
					case ID:
						{
						setState(7401);
						id();
						}
						break;
					default:
						throw new NoViableAltException(this);
					}
					}
					}
					setState(7406); 
					_errHandler.sync(this);
					_la = _input.LA(1);
				} while ( _la==DISK || _la==TAPE || _la==URL || _la==COMMA );
				}
				break;
			}
			setState(7443);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,1001,_ctx) ) {
			case 1:
				{
				setState(7420); 
				_errHandler.sync(this);
				_la = _input.LA(1);
				do {
					{
					{
					setState(7410);
					match(MIRROR);
					setState(7411);
					match(TO);
					setState(7416); 
					_errHandler.sync(this);
					_alt = 1;
					do {
						switch (_alt) {
						case 1:
							{
							{
							setState(7413);
							_errHandler.sync(this);
							_la = _input.LA(1);
							if (_la==COMMA) {
								{
								setState(7412);
								match(COMMA);
								}
							}

							setState(7415);
							((Backup_databaseContext)_localctx).logical_device_name = id();
							}
							}
							break;
						default:
							throw new NoViableAltException(this);
						}
						setState(7418); 
						_errHandler.sync(this);
						_alt = getInterpreter().adaptivePredict(_input,995,_ctx);
					} while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER );
					}
					}
					setState(7422); 
					_errHandler.sync(this);
					_la = _input.LA(1);
				} while ( _la==MIRROR );
				}
				break;
			case 2:
				{
				setState(7439); 
				_errHandler.sync(this);
				_la = _input.LA(1);
				do {
					{
					{
					setState(7424);
					match(MIRROR);
					setState(7425);
					match(TO);
					setState(7435); 
					_errHandler.sync(this);
					_la = _input.LA(1);
					do {
						{
						{
						setState(7427);
						_errHandler.sync(this);
						_la = _input.LA(1);
						if (_la==COMMA) {
							{
							setState(7426);
							match(COMMA);
							}
						}

						setState(7429);
						_la = _input.LA(1);
						if ( !(_la==DISK || _la==TAPE || _la==URL) ) {
						_errHandler.recoverInline(this);
						}
						else {
							if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
							_errHandler.reportMatch(this);
							consume();
						}
						setState(7430);
						match(EQUAL);
						setState(7433);
						_errHandler.sync(this);
						switch (_input.LA(1)) {
						case STRING:
							{
							setState(7431);
							match(STRING);
							}
							break;
						case CALLED:
						case DATA_COMPRESSION:
						case EVENTDATA:
						case FILENAME:
						case FILLFACTOR:
						case FORCESEEK:
						case INIT:
						case KEY:
						case MASTER:
						case MAX_MEMORY:
						case OFFSETS:
						case PAGE:
						case PUBLIC:
						case R:
						case RAW:
						case RETURN:
						case RETURNS:
						case ROWCOUNT:
						case SAFETY:
						case SERVER:
						case SID:
						case SOURCE:
						case STATE:
						case START:
						case TARGET:
						case ABSOLUTE:
						case ACCENT_SENSITIVITY:
						case ACTION:
						case ACTIVATION:
						case ACTIVE:
						case ADDRESS:
						case AES_128:
						case AES_192:
						case AES_256:
						case AFFINITY:
						case AFTER:
						case AGGREGATE:
						case ALGORITHM:
						case ALLOW_ENCRYPTED_VALUE_MODIFICATIONS:
						case ALLOW_SNAPSHOT_ISOLATION:
						case ALLOWED:
						case ANSI_NULL_DEFAULT:
						case ANSI_NULLS:
						case ANSI_PADDING:
						case ANSI_WARNINGS:
						case APPLICATION_LOG:
						case APPLY:
						case ARITHABORT:
						case ASSEMBLY:
						case AUDIT:
						case AUDIT_GUID:
						case AUTO:
						case AUTO_CLEANUP:
						case AUTO_CLOSE:
						case AUTO_CREATE_STATISTICS:
						case AUTO_SHRINK:
						case AUTO_UPDATE_STATISTICS:
						case AUTO_UPDATE_STATISTICS_ASYNC:
						case AVAILABILITY:
						case AVG:
						case BACKUP_PRIORITY:
						case BEGIN_DIALOG:
						case BIGINT:
						case BINARY_BASE64:
						case BINARY_CHECKSUM:
						case BINDING:
						case BLOB_STORAGE:
						case BROKER:
						case BROKER_INSTANCE:
						case BULK_LOGGED:
						case CALLER:
						case CAP_CPU_PERCENT:
						case CAST:
						case CATALOG:
						case CATCH:
						case CHANGE_RETENTION:
						case CHANGE_TRACKING:
						case CHECKSUM:
						case CHECKSUM_AGG:
						case CLEANUP:
						case COLLECTION:
						case COLUMN_MASTER_KEY:
						case COMMITTED:
						case COMPATIBILITY_LEVEL:
						case CONCAT:
						case CONCAT_NULL_YIELDS_NULL:
						case CONTENT:
						case CONTROL:
						case COOKIE:
						case COUNT:
						case COUNT_BIG:
						case COUNTER:
						case CPU:
						case CREATE_NEW:
						case CREATION_DISPOSITION:
						case CREDENTIAL:
						case CRYPTOGRAPHIC:
						case CURSOR_CLOSE_ON_COMMIT:
						case CURSOR_DEFAULT:
						case DATE_CORRELATION_OPTIMIZATION:
						case DATEADD:
						case DATEDIFF:
						case DATENAME:
						case DATEPART:
						case DAYS:
						case DB_CHAINING:
						case DB_FAILOVER:
						case DECRYPTION:
						case DEFAULT_DOUBLE_QUOTE:
						case DEFAULT_FULLTEXT_LANGUAGE:
						case DEFAULT_LANGUAGE:
						case DELAY:
						case DELAYED_DURABILITY:
						case DELETED:
						case DENSE_RANK:
						case DEPENDENTS:
						case DES:
						case DESCRIPTION:
						case DESX:
						case DHCP:
						case DIALOG:
						case DIRECTORY_NAME:
						case DISABLE:
						case DISABLE_BROKER:
						case DISABLED:
						case DISK_DRIVE:
						case DOCUMENT:
						case DYNAMIC:
						case EMERGENCY:
						case EMPTY:
						case ENABLE:
						case ENABLE_BROKER:
						case ENCRYPTED_VALUE:
						case ENCRYPTION:
						case ENDPOINT_URL:
						case ERROR_BROKER_CONVERSATIONS:
						case EXCLUSIVE:
						case EXECUTABLE:
						case EXIST:
						case EXPAND:
						case EXPIRY_DATE:
						case EXPLICIT:
						case FAIL_OPERATION:
						case FAILOVER_MODE:
						case FAILURE:
						case FAILURE_CONDITION_LEVEL:
						case FAST:
						case FAST_FORWARD:
						case FILEGROUP:
						case FILEGROWTH:
						case FILEPATH:
						case FILESTREAM:
						case FILTER:
						case FIRST:
						case FIRST_VALUE:
						case FOLLOWING:
						case FORCE:
						case FORCE_FAILOVER_ALLOW_DATA_LOSS:
						case FORCED:
						case FORMAT:
						case FORWARD_ONLY:
						case FULLSCAN:
						case FULLTEXT:
						case GB:
						case GETDATE:
						case GETUTCDATE:
						case GLOBAL:
						case GO:
						case GROUP_MAX_REQUESTS:
						case GROUPING:
						case GROUPING_ID:
						case HADR:
						case HASH:
						case HEALTH_CHECK_TIMEOUT:
						case HIGH:
						case HONOR_BROKER_PRIORITY:
						case HOURS:
						case IDENTITY_VALUE:
						case IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX:
						case IMMEDIATE:
						case IMPERSONATE:
						case IMPORTANCE:
						case INCREMENTAL:
						case INITIATOR:
						case INPUT:
						case INSENSITIVE:
						case INSERTED:
						case INT:
						case IP:
						case ISOLATION:
						case KB:
						case KEEP:
						case KEEPFIXED:
						case KEY_SOURCE:
						case KEYS:
						case KEYSET:
						case LAG:
						case LAST:
						case LAST_VALUE:
						case LEAD:
						case LEVEL:
						case LIST:
						case LISTENER:
						case LISTENER_URL:
						case LOB_COMPACTION:
						case LOCAL:
						case LOCATION:
						case LOCK:
						case LOCK_ESCALATION:
						case LOGIN:
						case LOOP:
						case LOW:
						case MANUAL:
						case MARK:
						case MATERIALIZED:
						case MAX:
						case MAX_CPU_PERCENT:
						case MAX_DOP:
						case MAX_FILES:
						case MAX_IOPS_PER_VOLUME:
						case MAX_MEMORY_PERCENT:
						case MAX_PROCESSES:
						case MAX_QUEUE_READERS:
						case MAX_ROLLOVER_FILES:
						case MAXDOP:
						case MAXRECURSION:
						case MAXSIZE:
						case MB:
						case MEDIUM:
						case MEMORY_OPTIMIZED_DATA:
						case MESSAGE:
						case MIN:
						case MIN_ACTIVE_ROWVERSION:
						case MIN_CPU_PERCENT:
						case MIN_IOPS_PER_VOLUME:
						case MIN_MEMORY_PERCENT:
						case MINUTES:
						case MIRROR_ADDRESS:
						case MIXED_PAGE_ALLOCATION:
						case MODE:
						case MODIFY:
						case MOVE:
						case MULTI_USER:
						case NAME:
						case NESTED_TRIGGERS:
						case NEW_ACCOUNT:
						case NEW_BROKER:
						case NEW_PASSWORD:
						case NEXT:
						case NO:
						case NO_TRUNCATE:
						case NO_WAIT:
						case NOCOUNT:
						case NODES:
						case NOEXPAND:
						case NON_TRANSACTED_ACCESS:
						case NORECOMPUTE:
						case NORECOVERY:
						case NOWAIT:
						case NTILE:
						case NUMANODE:
						case NUMBER:
						case NUMERIC_ROUNDABORT:
						case OBJECT:
						case OFFLINE:
						case OFFSET:
						case OLD_ACCOUNT:
						case ONLINE:
						case ONLY:
						case OPEN_EXISTING:
						case OPTIMISTIC:
						case OPTIMIZE:
						case OUT:
						case OUTPUT:
						case OWNER:
						case PAGE_VERIFY:
						case PARAMETERIZATION:
						case PARTITION:
						case PARTITIONS:
						case PARTNER:
						case PATH:
						case POISON_MESSAGE_HANDLING:
						case POOL:
						case PORT:
						case PRECEDING:
						case PRIMARY_ROLE:
						case PRIOR:
						case PRIORITY:
						case PRIORITY_LEVEL:
						case PRIVATE:
						case PRIVATE_KEY:
						case PRIVILEGES:
						case PROCEDURE_NAME:
						case PROPERTY:
						case PROVIDER:
						case PROVIDER_KEY_NAME:
						case QUERY:
						case QUEUE:
						case QUEUE_DELAY:
						case QUOTED_IDENTIFIER:
						case RANGE:
						case RANK:
						case RC2:
						case RC4:
						case RC4_128:
						case READ_COMMITTED_SNAPSHOT:
						case READ_ONLY:
						case READ_ONLY_ROUTING_LIST:
						case READ_WRITE:
						case READONLY:
						case REBUILD:
						case RECEIVE:
						case RECOMPILE:
						case RECOVERY:
						case RECURSIVE_TRIGGERS:
						case RELATIVE:
						case REMOTE:
						case REMOTE_SERVICE_NAME:
						case REMOVE:
						case REORGANIZE:
						case REPEATABLE:
						case REPLICA:
						case REQUEST_MAX_CPU_TIME_SEC:
						case REQUEST_MAX_MEMORY_GRANT_PERCENT:
						case REQUEST_MEMORY_GRANT_TIMEOUT_SEC:
						case REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT:
						case RESERVE_DISK_SPACE:
						case RESOURCE:
						case RESOURCE_MANAGER_LOCATION:
						case RESTRICTED_USER:
						case RETENTION:
						case ROBUST:
						case ROOT:
						case ROUTE:
						case ROW:
						case ROW_NUMBER:
						case ROWGUID:
						case ROWS:
						case SAMPLE:
						case SCHEMABINDING:
						case SCOPED:
						case SCROLL:
						case SCROLL_LOCKS:
						case SEARCH:
						case SECONDARY:
						case SECONDARY_ONLY:
						case SECONDARY_ROLE:
						case SECONDS:
						case SECRET:
						case SECURITY_LOG:
						case SEEDING_MODE:
						case SELF:
						case SEMI_SENSITIVE:
						case SEND:
						case SENT:
						case SERIALIZABLE:
						case SESSION_TIMEOUT:
						case SETERROR:
						case SHARE:
						case SHOWPLAN:
						case SIGNATURE:
						case SIMPLE:
						case SINGLE_USER:
						case SIZE:
						case SMALLINT:
						case SNAPSHOT:
						case SPATIAL_WINDOW_MAX_CELLS:
						case STANDBY:
						case START_DATE:
						case STATIC:
						case STATS_STREAM:
						case STATUS:
						case STDEV:
						case STDEVP:
						case STOPLIST:
						case STUFF:
						case SUBJECT:
						case SUM:
						case SUSPEND:
						case SYMMETRIC:
						case SYNCHRONOUS_COMMIT:
						case SYNONYM:
						case TAKE:
						case TARGET_RECOVERY_TIME:
						case TB:
						case TEXTIMAGE_ON:
						case THROW:
						case TIES:
						case TIME:
						case TIMEOUT:
						case TIMER:
						case TINYINT:
						case TORN_PAGE_DETECTION:
						case TRANSFORM_NOISE_WORDS:
						case TRIPLE_DES:
						case TRIPLE_DES_3KEY:
						case TRUSTWORTHY:
						case TRY:
						case TSQL:
						case TWO_DIGIT_YEAR_CUTOFF:
						case TYPE:
						case TYPE_WARNING:
						case UNBOUNDED:
						case UNCOMMITTED:
						case UNKNOWN:
						case UNLIMITED:
						case USING:
						case VALID_XML:
						case VALIDATION:
						case VALUE:
						case VAR:
						case VARP:
						case VIEW_METADATA:
						case VIEWS:
						case WAIT:
						case WELL_FORMED_XML:
						case WORK:
						case WORKLOAD:
						case XML:
						case XMLNAMESPACES:
						case DOUBLE_QUOTE_ID:
						case SQUARE_BRACKET_ID:
						case ID:
							{
							setState(7432);
							id();
							}
							break;
						default:
							throw new NoViableAltException(this);
						}
						}
						}
						setState(7437); 
						_errHandler.sync(this);
						_la = _input.LA(1);
					} while ( _la==DISK || _la==TAPE || _la==URL || _la==COMMA );
					}
					}
					setState(7441); 
					_errHandler.sync(this);
					_la = _input.LA(1);
				} while ( _la==MIRROR );
				}
				break;
			}
			setState(7605);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,1037,_ctx) ) {
			case 1:
				{
				setState(7445);
				match(WITH);
				setState(7602);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,1036,_ctx);
				while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
					if ( _alt==1 ) {
						{
						setState(7600);
						_errHandler.sync(this);
						switch ( getInterpreter().adaptivePredict(_input,1035,_ctx) ) {
						case 1:
							{
							setState(7447);
							_errHandler.sync(this);
							_la = _input.LA(1);
							if (_la==COMMA) {
								{
								setState(7446);
								match(COMMA);
								}
							}

							setState(7449);
							match(DIFFERENTIAL);
							}
							break;
						case 2:
							{
							setState(7451);
							_errHandler.sync(this);
							_la = _input.LA(1);
							if (_la==COMMA) {
								{
								setState(7450);
								match(COMMA);
								}
							}

							setState(7453);
							match(COPY_ONLY);
							}
							break;
						case 3:
							{
							setState(7455);
							_errHandler.sync(this);
							_la = _input.LA(1);
							if (_la==COMMA) {
								{
								setState(7454);
								match(COMMA);
								}
							}

							setState(7457);
							_la = _input.LA(1);
							if ( !(_la==COMPRESSION || _la==NO_COMPRESSION) ) {
							_errHandler.recoverInline(this);
							}
							else {
								if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
								_errHandler.reportMatch(this);
								consume();
							}
							}
							break;
						case 4:
							{
							setState(7459);
							_errHandler.sync(this);
							_la = _input.LA(1);
							if (_la==COMMA) {
								{
								setState(7458);
								match(COMMA);
								}
							}

							setState(7461);
							match(DESCRIPTION);
							setState(7462);
							match(EQUAL);
							setState(7465);
							_errHandler.sync(this);
							switch (_input.LA(1)) {
							case STRING:
								{
								setState(7463);
								match(STRING);
								}
								break;
							case CALLED:
							case DATA_COMPRESSION:
							case EVENTDATA:
							case FILENAME:
							case FILLFACTOR:
							case FORCESEEK:
							case INIT:
							case KEY:
							case MASTER:
							case MAX_MEMORY:
							case OFFSETS:
							case PAGE:
							case PUBLIC:
							case R:
							case RAW:
							case RETURN:
							case RETURNS:
							case ROWCOUNT:
							case SAFETY:
							case SERVER:
							case SID:
							case SOURCE:
							case STATE:
							case START:
							case TARGET:
							case ABSOLUTE:
							case ACCENT_SENSITIVITY:
							case ACTION:
							case ACTIVATION:
							case ACTIVE:
							case ADDRESS:
							case AES_128:
							case AES_192:
							case AES_256:
							case AFFINITY:
							case AFTER:
							case AGGREGATE:
							case ALGORITHM:
							case ALLOW_ENCRYPTED_VALUE_MODIFICATIONS:
							case ALLOW_SNAPSHOT_ISOLATION:
							case ALLOWED:
							case ANSI_NULL_DEFAULT:
							case ANSI_NULLS:
							case ANSI_PADDING:
							case ANSI_WARNINGS:
							case APPLICATION_LOG:
							case APPLY:
							case ARITHABORT:
							case ASSEMBLY:
							case AUDIT:
							case AUDIT_GUID:
							case AUTO:
							case AUTO_CLEANUP:
							case AUTO_CLOSE:
							case AUTO_CREATE_STATISTICS:
							case AUTO_SHRINK:
							case AUTO_UPDATE_STATISTICS:
							case AUTO_UPDATE_STATISTICS_ASYNC:
							case AVAILABILITY:
							case AVG:
							case BACKUP_PRIORITY:
							case BEGIN_DIALOG:
							case BIGINT:
							case BINARY_BASE64:
							case BINARY_CHECKSUM:
							case BINDING:
							case BLOB_STORAGE:
							case BROKER:
							case BROKER_INSTANCE:
							case BULK_LOGGED:
							case CALLER:
							case CAP_CPU_PERCENT:
							case CAST:
							case CATALOG:
							case CATCH:
							case CHANGE_RETENTION:
							case CHANGE_TRACKING:
							case CHECKSUM:
							case CHECKSUM_AGG:
							case CLEANUP:
							case COLLECTION:
							case COLUMN_MASTER_KEY:
							case COMMITTED:
							case COMPATIBILITY_LEVEL:
							case CONCAT:
							case CONCAT_NULL_YIELDS_NULL:
							case CONTENT:
							case CONTROL:
							case COOKIE:
							case COUNT:
							case COUNT_BIG:
							case COUNTER:
							case CPU:
							case CREATE_NEW:
							case CREATION_DISPOSITION:
							case CREDENTIAL:
							case CRYPTOGRAPHIC:
							case CURSOR_CLOSE_ON_COMMIT:
							case CURSOR_DEFAULT:
							case DATE_CORRELATION_OPTIMIZATION:
							case DATEADD:
							case DATEDIFF:
							case DATENAME:
							case DATEPART:
							case DAYS:
							case DB_CHAINING:
							case DB_FAILOVER:
							case DECRYPTION:
							case DEFAULT_DOUBLE_QUOTE:
							case DEFAULT_FULLTEXT_LANGUAGE:
							case DEFAULT_LANGUAGE:
							case DELAY:
							case DELAYED_DURABILITY:
							case DELETED:
							case DENSE_RANK:
							case DEPENDENTS:
							case DES:
							case DESCRIPTION:
							case DESX:
							case DHCP:
							case DIALOG:
							case DIRECTORY_NAME:
							case DISABLE:
							case DISABLE_BROKER:
							case DISABLED:
							case DISK_DRIVE:
							case DOCUMENT:
							case DYNAMIC:
							case EMERGENCY:
							case EMPTY:
							case ENABLE:
							case ENABLE_BROKER:
							case ENCRYPTED_VALUE:
							case ENCRYPTION:
							case ENDPOINT_URL:
							case ERROR_BROKER_CONVERSATIONS:
							case EXCLUSIVE:
							case EXECUTABLE:
							case EXIST:
							case EXPAND:
							case EXPIRY_DATE:
							case EXPLICIT:
							case FAIL_OPERATION:
							case FAILOVER_MODE:
							case FAILURE:
							case FAILURE_CONDITION_LEVEL:
							case FAST:
							case FAST_FORWARD:
							case FILEGROUP:
							case FILEGROWTH:
							case FILEPATH:
							case FILESTREAM:
							case FILTER:
							case FIRST:
							case FIRST_VALUE:
							case FOLLOWING:
							case FORCE:
							case FORCE_FAILOVER_ALLOW_DATA_LOSS:
							case FORCED:
							case FORMAT:
							case FORWARD_ONLY:
							case FULLSCAN:
							case FULLTEXT:
							case GB:
							case GETDATE:
							case GETUTCDATE:
							case GLOBAL:
							case GO:
							case GROUP_MAX_REQUESTS:
							case GROUPING:
							case GROUPING_ID:
							case HADR:
							case HASH:
							case HEALTH_CHECK_TIMEOUT:
							case HIGH:
							case HONOR_BROKER_PRIORITY:
							case HOURS:
							case IDENTITY_VALUE:
							case IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX:
							case IMMEDIATE:
							case IMPERSONATE:
							case IMPORTANCE:
							case INCREMENTAL:
							case INITIATOR:
							case INPUT:
							case INSENSITIVE:
							case INSERTED:
							case INT:
							case IP:
							case ISOLATION:
							case KB:
							case KEEP:
							case KEEPFIXED:
							case KEY_SOURCE:
							case KEYS:
							case KEYSET:
							case LAG:
							case LAST:
							case LAST_VALUE:
							case LEAD:
							case LEVEL:
							case LIST:
							case LISTENER:
							case LISTENER_URL:
							case LOB_COMPACTION:
							case LOCAL:
							case LOCATION:
							case LOCK:
							case LOCK_ESCALATION:
							case LOGIN:
							case LOOP:
							case LOW:
							case MANUAL:
							case MARK:
							case MATERIALIZED:
							case MAX:
							case MAX_CPU_PERCENT:
							case MAX_DOP:
							case MAX_FILES:
							case MAX_IOPS_PER_VOLUME:
							case MAX_MEMORY_PERCENT:
							case MAX_PROCESSES:
							case MAX_QUEUE_READERS:
							case MAX_ROLLOVER_FILES:
							case MAXDOP:
							case MAXRECURSION:
							case MAXSIZE:
							case MB:
							case MEDIUM:
							case MEMORY_OPTIMIZED_DATA:
							case MESSAGE:
							case MIN:
							case MIN_ACTIVE_ROWVERSION:
							case MIN_CPU_PERCENT:
							case MIN_IOPS_PER_VOLUME:
							case MIN_MEMORY_PERCENT:
							case MINUTES:
							case MIRROR_ADDRESS:
							case MIXED_PAGE_ALLOCATION:
							case MODE:
							case MODIFY:
							case MOVE:
							case MULTI_USER:
							case NAME:
							case NESTED_TRIGGERS:
							case NEW_ACCOUNT:
							case NEW_BROKER:
							case NEW_PASSWORD:
							case NEXT:
							case NO:
							case NO_TRUNCATE:
							case NO_WAIT:
							case NOCOUNT:
							case NODES:
							case NOEXPAND:
							case NON_TRANSACTED_ACCESS:
							case NORECOMPUTE:
							case NORECOVERY:
							case NOWAIT:
							case NTILE:
							case NUMANODE:
							case NUMBER:
							case NUMERIC_ROUNDABORT:
							case OBJECT:
							case OFFLINE:
							case OFFSET:
							case OLD_ACCOUNT:
							case ONLINE:
							case ONLY:
							case OPEN_EXISTING:
							case OPTIMISTIC:
							case OPTIMIZE:
							case OUT:
							case OUTPUT:
							case OWNER:
							case PAGE_VERIFY:
							case PARAMETERIZATION:
							case PARTITION:
							case PARTITIONS:
							case PARTNER:
							case PATH:
							case POISON_MESSAGE_HANDLING:
							case POOL:
							case PORT:
							case PRECEDING:
							case PRIMARY_ROLE:
							case PRIOR:
							case PRIORITY:
							case PRIORITY_LEVEL:
							case PRIVATE:
							case PRIVATE_KEY:
							case PRIVILEGES:
							case PROCEDURE_NAME:
							case PROPERTY:
							case PROVIDER:
							case PROVIDER_KEY_NAME:
							case QUERY:
							case QUEUE:
							case QUEUE_DELAY:
							case QUOTED_IDENTIFIER:
							case RANGE:
							case RANK:
							case RC2:
							case RC4:
							case RC4_128:
							case READ_COMMITTED_SNAPSHOT:
							case READ_ONLY:
							case READ_ONLY_ROUTING_LIST:
							case READ_WRITE:
							case READONLY:
							case REBUILD:
							case RECEIVE:
							case RECOMPILE:
							case RECOVERY:
							case RECURSIVE_TRIGGERS:
							case RELATIVE:
							case REMOTE:
							case REMOTE_SERVICE_NAME:
							case REMOVE:
							case REORGANIZE:
							case REPEATABLE:
							case REPLICA:
							case REQUEST_MAX_CPU_TIME_SEC:
							case REQUEST_MAX_MEMORY_GRANT_PERCENT:
							case REQUEST_MEMORY_GRANT_TIMEOUT_SEC:
							case REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT:
							case RESERVE_DISK_SPACE:
							case RESOURCE:
							case RESOURCE_MANAGER_LOCATION:
							case RESTRICTED_USER:
							case RETENTION:
							case ROBUST:
							case ROOT:
							case ROUTE:
							case ROW:
							case ROW_NUMBER:
							case ROWGUID:
							case ROWS:
							case SAMPLE:
							case SCHEMABINDING:
							case SCOPED:
							case SCROLL:
							case SCROLL_LOCKS:
							case SEARCH:
							case SECONDARY:
							case SECONDARY_ONLY:
							case SECONDARY_ROLE:
							case SECONDS:
							case SECRET:
							case SECURITY_LOG:
							case SEEDING_MODE:
							case SELF:
							case SEMI_SENSITIVE:
							case SEND:
							case SENT:
							case SERIALIZABLE:
							case SESSION_TIMEOUT:
							case SETERROR:
							case SHARE:
							case SHOWPLAN:
							case SIGNATURE:
							case SIMPLE:
							case SINGLE_USER:
							case SIZE:
							case SMALLINT:
							case SNAPSHOT:
							case SPATIAL_WINDOW_MAX_CELLS:
							case STANDBY:
							case START_DATE:
							case STATIC:
							case STATS_STREAM:
							case STATUS:
							case STDEV:
							case STDEVP:
							case STOPLIST:
							case STUFF:
							case SUBJECT:
							case SUM:
							case SUSPEND:
							case SYMMETRIC:
							case SYNCHRONOUS_COMMIT:
							case SYNONYM:
							case TAKE:
							case TARGET_RECOVERY_TIME:
							case TB:
							case TEXTIMAGE_ON:
							case THROW:
							case TIES:
							case TIME:
							case TIMEOUT:
							case TIMER:
							case TINYINT:
							case TORN_PAGE_DETECTION:
							case TRANSFORM_NOISE_WORDS:
							case TRIPLE_DES:
							case TRIPLE_DES_3KEY:
							case TRUSTWORTHY:
							case TRY:
							case TSQL:
							case TWO_DIGIT_YEAR_CUTOFF:
							case TYPE:
							case TYPE_WARNING:
							case UNBOUNDED:
							case UNCOMMITTED:
							case UNKNOWN:
							case UNLIMITED:
							case USING:
							case VALID_XML:
							case VALIDATION:
							case VALUE:
							case VAR:
							case VARP:
							case VIEW_METADATA:
							case VIEWS:
							case WAIT:
							case WELL_FORMED_XML:
							case WORK:
							case WORKLOAD:
							case XML:
							case XMLNAMESPACES:
							case DOUBLE_QUOTE_ID:
							case SQUARE_BRACKET_ID:
							case ID:
								{
								setState(7464);
								id();
								}
								break;
							default:
								throw new NoViableAltException(this);
							}
							}
							break;
						case 5:
							{
							setState(7468);
							_errHandler.sync(this);
							_la = _input.LA(1);
							if (_la==COMMA) {
								{
								setState(7467);
								match(COMMA);
								}
							}

							setState(7470);
							match(NAME);
							setState(7471);
							match(EQUAL);
							setState(7472);
							((Backup_databaseContext)_localctx).backup_set_name = id();
							}
							break;
						case 6:
							{
							setState(7474);
							_errHandler.sync(this);
							_la = _input.LA(1);
							if (_la==COMMA) {
								{
								setState(7473);
								match(COMMA);
								}
							}

							setState(7476);
							match(CREDENTIAL);
							}
							break;
						case 7:
							{
							setState(7478);
							_errHandler.sync(this);
							_la = _input.LA(1);
							if (_la==COMMA) {
								{
								setState(7477);
								match(COMMA);
								}
							}

							setState(7480);
							match(FILE_SNAPSHOT);
							}
							break;
						case 8:
							{
							setState(7482);
							_errHandler.sync(this);
							_la = _input.LA(1);
							if (_la==COMMA) {
								{
								setState(7481);
								match(COMMA);
								}
							}

							setState(7496);
							_errHandler.sync(this);
							switch (_input.LA(1)) {
							case EXPIREDATE:
								{
								setState(7484);
								match(EXPIREDATE);
								setState(7485);
								match(EQUAL);
								setState(7488);
								_errHandler.sync(this);
								switch (_input.LA(1)) {
								case STRING:
									{
									setState(7486);
									match(STRING);
									}
									break;
								case CALLED:
								case DATA_COMPRESSION:
								case EVENTDATA:
								case FILENAME:
								case FILLFACTOR:
								case FORCESEEK:
								case INIT:
								case KEY:
								case MASTER:
								case MAX_MEMORY:
								case OFFSETS:
								case PAGE:
								case PUBLIC:
								case R:
								case RAW:
								case RETURN:
								case RETURNS:
								case ROWCOUNT:
								case SAFETY:
								case SERVER:
								case SID:
								case SOURCE:
								case STATE:
								case START:
								case TARGET:
								case ABSOLUTE:
								case ACCENT_SENSITIVITY:
								case ACTION:
								case ACTIVATION:
								case ACTIVE:
								case ADDRESS:
								case AES_128:
								case AES_192:
								case AES_256:
								case AFFINITY:
								case AFTER:
								case AGGREGATE:
								case ALGORITHM:
								case ALLOW_ENCRYPTED_VALUE_MODIFICATIONS:
								case ALLOW_SNAPSHOT_ISOLATION:
								case ALLOWED:
								case ANSI_NULL_DEFAULT:
								case ANSI_NULLS:
								case ANSI_PADDING:
								case ANSI_WARNINGS:
								case APPLICATION_LOG:
								case APPLY:
								case ARITHABORT:
								case ASSEMBLY:
								case AUDIT:
								case AUDIT_GUID:
								case AUTO:
								case AUTO_CLEANUP:
								case AUTO_CLOSE:
								case AUTO_CREATE_STATISTICS:
								case AUTO_SHRINK:
								case AUTO_UPDATE_STATISTICS:
								case AUTO_UPDATE_STATISTICS_ASYNC:
								case AVAILABILITY:
								case AVG:
								case BACKUP_PRIORITY:
								case BEGIN_DIALOG:
								case BIGINT:
								case BINARY_BASE64:
								case BINARY_CHECKSUM:
								case BINDING:
								case BLOB_STORAGE:
								case BROKER:
								case BROKER_INSTANCE:
								case BULK_LOGGED:
								case CALLER:
								case CAP_CPU_PERCENT:
								case CAST:
								case CATALOG:
								case CATCH:
								case CHANGE_RETENTION:
								case CHANGE_TRACKING:
								case CHECKSUM:
								case CHECKSUM_AGG:
								case CLEANUP:
								case COLLECTION:
								case COLUMN_MASTER_KEY:
								case COMMITTED:
								case COMPATIBILITY_LEVEL:
								case CONCAT:
								case CONCAT_NULL_YIELDS_NULL:
								case CONTENT:
								case CONTROL:
								case COOKIE:
								case COUNT:
								case COUNT_BIG:
								case COUNTER:
								case CPU:
								case CREATE_NEW:
								case CREATION_DISPOSITION:
								case CREDENTIAL:
								case CRYPTOGRAPHIC:
								case CURSOR_CLOSE_ON_COMMIT:
								case CURSOR_DEFAULT:
								case DATE_CORRELATION_OPTIMIZATION:
								case DATEADD:
								case DATEDIFF:
								case DATENAME:
								case DATEPART:
								case DAYS:
								case DB_CHAINING:
								case DB_FAILOVER:
								case DECRYPTION:
								case DEFAULT_DOUBLE_QUOTE:
								case DEFAULT_FULLTEXT_LANGUAGE:
								case DEFAULT_LANGUAGE:
								case DELAY:
								case DELAYED_DURABILITY:
								case DELETED:
								case DENSE_RANK:
								case DEPENDENTS:
								case DES:
								case DESCRIPTION:
								case DESX:
								case DHCP:
								case DIALOG:
								case DIRECTORY_NAME:
								case DISABLE:
								case DISABLE_BROKER:
								case DISABLED:
								case DISK_DRIVE:
								case DOCUMENT:
								case DYNAMIC:
								case EMERGENCY:
								case EMPTY:
								case ENABLE:
								case ENABLE_BROKER:
								case ENCRYPTED_VALUE:
								case ENCRYPTION:
								case ENDPOINT_URL:
								case ERROR_BROKER_CONVERSATIONS:
								case EXCLUSIVE:
								case EXECUTABLE:
								case EXIST:
								case EXPAND:
								case EXPIRY_DATE:
								case EXPLICIT:
								case FAIL_OPERATION:
								case FAILOVER_MODE:
								case FAILURE:
								case FAILURE_CONDITION_LEVEL:
								case FAST:
								case FAST_FORWARD:
								case FILEGROUP:
								case FILEGROWTH:
								case FILEPATH:
								case FILESTREAM:
								case FILTER:
								case FIRST:
								case FIRST_VALUE:
								case FOLLOWING:
								case FORCE:
								case FORCE_FAILOVER_ALLOW_DATA_LOSS:
								case FORCED:
								case FORMAT:
								case FORWARD_ONLY:
								case FULLSCAN:
								case FULLTEXT:
								case GB:
								case GETDATE:
								case GETUTCDATE:
								case GLOBAL:
								case GO:
								case GROUP_MAX_REQUESTS:
								case GROUPING:
								case GROUPING_ID:
								case HADR:
								case HASH:
								case HEALTH_CHECK_TIMEOUT:
								case HIGH:
								case HONOR_BROKER_PRIORITY:
								case HOURS:
								case IDENTITY_VALUE:
								case IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX:
								case IMMEDIATE:
								case IMPERSONATE:
								case IMPORTANCE:
								case INCREMENTAL:
								case INITIATOR:
								case INPUT:
								case INSENSITIVE:
								case INSERTED:
								case INT:
								case IP:
								case ISOLATION:
								case KB:
								case KEEP:
								case KEEPFIXED:
								case KEY_SOURCE:
								case KEYS:
								case KEYSET:
								case LAG:
								case LAST:
								case LAST_VALUE:
								case LEAD:
								case LEVEL:
								case LIST:
								case LISTENER:
								case LISTENER_URL:
								case LOB_COMPACTION:
								case LOCAL:
								case LOCATION:
								case LOCK:
								case LOCK_ESCALATION:
								case LOGIN:
								case LOOP:
								case LOW:
								case MANUAL:
								case MARK:
								case MATERIALIZED:
								case MAX:
								case MAX_CPU_PERCENT:
								case MAX_DOP:
								case MAX_FILES:
								case MAX_IOPS_PER_VOLUME:
								case MAX_MEMORY_PERCENT:
								case MAX_PROCESSES:
								case MAX_QUEUE_READERS:
								case MAX_ROLLOVER_FILES:
								case MAXDOP:
								case MAXRECURSION:
								case MAXSIZE:
								case MB:
								case MEDIUM:
								case MEMORY_OPTIMIZED_DATA:
								case MESSAGE:
								case MIN:
								case MIN_ACTIVE_ROWVERSION:
								case MIN_CPU_PERCENT:
								case MIN_IOPS_PER_VOLUME:
								case MIN_MEMORY_PERCENT:
								case MINUTES:
								case MIRROR_ADDRESS:
								case MIXED_PAGE_ALLOCATION:
								case MODE:
								case MODIFY:
								case MOVE:
								case MULTI_USER:
								case NAME:
								case NESTED_TRIGGERS:
								case NEW_ACCOUNT:
								case NEW_BROKER:
								case NEW_PASSWORD:
								case NEXT:
								case NO:
								case NO_TRUNCATE:
								case NO_WAIT:
								case NOCOUNT:
								case NODES:
								case NOEXPAND:
								case NON_TRANSACTED_ACCESS:
								case NORECOMPUTE:
								case NORECOVERY:
								case NOWAIT:
								case NTILE:
								case NUMANODE:
								case NUMBER:
								case NUMERIC_ROUNDABORT:
								case OBJECT:
								case OFFLINE:
								case OFFSET:
								case OLD_ACCOUNT:
								case ONLINE:
								case ONLY:
								case OPEN_EXISTING:
								case OPTIMISTIC:
								case OPTIMIZE:
								case OUT:
								case OUTPUT:
								case OWNER:
								case PAGE_VERIFY:
								case PARAMETERIZATION:
								case PARTITION:
								case PARTITIONS:
								case PARTNER:
								case PATH:
								case POISON_MESSAGE_HANDLING:
								case POOL:
								case PORT:
								case PRECEDING:
								case PRIMARY_ROLE:
								case PRIOR:
								case PRIORITY:
								case PRIORITY_LEVEL:
								case PRIVATE:
								case PRIVATE_KEY:
								case PRIVILEGES:
								case PROCEDURE_NAME:
								case PROPERTY:
								case PROVIDER:
								case PROVIDER_KEY_NAME:
								case QUERY:
								case QUEUE:
								case QUEUE_DELAY:
								case QUOTED_IDENTIFIER:
								case RANGE:
								case RANK:
								case RC2:
								case RC4:
								case RC4_128:
								case READ_COMMITTED_SNAPSHOT:
								case READ_ONLY:
								case READ_ONLY_ROUTING_LIST:
								case READ_WRITE:
								case READONLY:
								case REBUILD:
								case RECEIVE:
								case RECOMPILE:
								case RECOVERY:
								case RECURSIVE_TRIGGERS:
								case RELATIVE:
								case REMOTE:
								case REMOTE_SERVICE_NAME:
								case REMOVE:
								case REORGANIZE:
								case REPEATABLE:
								case REPLICA:
								case REQUEST_MAX_CPU_TIME_SEC:
								case REQUEST_MAX_MEMORY_GRANT_PERCENT:
								case REQUEST_MEMORY_GRANT_TIMEOUT_SEC:
								case REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT:
								case RESERVE_DISK_SPACE:
								case RESOURCE:
								case RESOURCE_MANAGER_LOCATION:
								case RESTRICTED_USER:
								case RETENTION:
								case ROBUST:
								case ROOT:
								case ROUTE:
								case ROW:
								case ROW_NUMBER:
								case ROWGUID:
								case ROWS:
								case SAMPLE:
								case SCHEMABINDING:
								case SCOPED:
								case SCROLL:
								case SCROLL_LOCKS:
								case SEARCH:
								case SECONDARY:
								case SECONDARY_ONLY:
								case SECONDARY_ROLE:
								case SECONDS:
								case SECRET:
								case SECURITY_LOG:
								case SEEDING_MODE:
								case SELF:
								case SEMI_SENSITIVE:
								case SEND:
								case SENT:
								case SERIALIZABLE:
								case SESSION_TIMEOUT:
								case SETERROR:
								case SHARE:
								case SHOWPLAN:
								case SIGNATURE:
								case SIMPLE:
								case SINGLE_USER:
								case SIZE:
								case SMALLINT:
								case SNAPSHOT:
								case SPATIAL_WINDOW_MAX_CELLS:
								case STANDBY:
								case START_DATE:
								case STATIC:
								case STATS_STREAM:
								case STATUS:
								case STDEV:
								case STDEVP:
								case STOPLIST:
								case STUFF:
								case SUBJECT:
								case SUM:
								case SUSPEND:
								case SYMMETRIC:
								case SYNCHRONOUS_COMMIT:
								case SYNONYM:
								case TAKE:
								case TARGET_RECOVERY_TIME:
								case TB:
								case TEXTIMAGE_ON:
								case THROW:
								case TIES:
								case TIME:
								case TIMEOUT:
								case TIMER:
								case TINYINT:
								case TORN_PAGE_DETECTION:
								case TRANSFORM_NOISE_WORDS:
								case TRIPLE_DES:
								case TRIPLE_DES_3KEY:
								case TRUSTWORTHY:
								case TRY:
								case TSQL:
								case TWO_DIGIT_YEAR_CUTOFF:
								case TYPE:
								case TYPE_WARNING:
								case UNBOUNDED:
								case UNCOMMITTED:
								case UNKNOWN:
								case UNLIMITED:
								case USING:
								case VALID_XML:
								case VALIDATION:
								case VALUE:
								case VAR:
								case VARP:
								case VIEW_METADATA:
								case VIEWS:
								case WAIT:
								case WELL_FORMED_XML:
								case WORK:
								case WORKLOAD:
								case XML:
								case XMLNAMESPACES:
								case DOUBLE_QUOTE_ID:
								case SQUARE_BRACKET_ID:
								case ID:
									{
									setState(7487);
									id();
									}
									break;
								default:
									throw new NoViableAltException(this);
								}
								}
								break;
							case RETAINDAYS:
								{
								setState(7490);
								match(RETAINDAYS);
								setState(7491);
								match(EQUAL);
								setState(7494);
								_errHandler.sync(this);
								switch (_input.LA(1)) {
								case DECIMAL:
									{
									setState(7492);
									match(DECIMAL);
									}
									break;
								case CALLED:
								case DATA_COMPRESSION:
								case EVENTDATA:
								case FILENAME:
								case FILLFACTOR:
								case FORCESEEK:
								case INIT:
								case KEY:
								case MASTER:
								case MAX_MEMORY:
								case OFFSETS:
								case PAGE:
								case PUBLIC:
								case R:
								case RAW:
								case RETURN:
								case RETURNS:
								case ROWCOUNT:
								case SAFETY:
								case SERVER:
								case SID:
								case SOURCE:
								case STATE:
								case START:
								case TARGET:
								case ABSOLUTE:
								case ACCENT_SENSITIVITY:
								case ACTION:
								case ACTIVATION:
								case ACTIVE:
								case ADDRESS:
								case AES_128:
								case AES_192:
								case AES_256:
								case AFFINITY:
								case AFTER:
								case AGGREGATE:
								case ALGORITHM:
								case ALLOW_ENCRYPTED_VALUE_MODIFICATIONS:
								case ALLOW_SNAPSHOT_ISOLATION:
								case ALLOWED:
								case ANSI_NULL_DEFAULT:
								case ANSI_NULLS:
								case ANSI_PADDING:
								case ANSI_WARNINGS:
								case APPLICATION_LOG:
								case APPLY:
								case ARITHABORT:
								case ASSEMBLY:
								case AUDIT:
								case AUDIT_GUID:
								case AUTO:
								case AUTO_CLEANUP:
								case AUTO_CLOSE:
								case AUTO_CREATE_STATISTICS:
								case AUTO_SHRINK:
								case AUTO_UPDATE_STATISTICS:
								case AUTO_UPDATE_STATISTICS_ASYNC:
								case AVAILABILITY:
								case AVG:
								case BACKUP_PRIORITY:
								case BEGIN_DIALOG:
								case BIGINT:
								case BINARY_BASE64:
								case BINARY_CHECKSUM:
								case BINDING:
								case BLOB_STORAGE:
								case BROKER:
								case BROKER_INSTANCE:
								case BULK_LOGGED:
								case CALLER:
								case CAP_CPU_PERCENT:
								case CAST:
								case CATALOG:
								case CATCH:
								case CHANGE_RETENTION:
								case CHANGE_TRACKING:
								case CHECKSUM:
								case CHECKSUM_AGG:
								case CLEANUP:
								case COLLECTION:
								case COLUMN_MASTER_KEY:
								case COMMITTED:
								case COMPATIBILITY_LEVEL:
								case CONCAT:
								case CONCAT_NULL_YIELDS_NULL:
								case CONTENT:
								case CONTROL:
								case COOKIE:
								case COUNT:
								case COUNT_BIG:
								case COUNTER:
								case CPU:
								case CREATE_NEW:
								case CREATION_DISPOSITION:
								case CREDENTIAL:
								case CRYPTOGRAPHIC:
								case CURSOR_CLOSE_ON_COMMIT:
								case CURSOR_DEFAULT:
								case DATE_CORRELATION_OPTIMIZATION:
								case DATEADD:
								case DATEDIFF:
								case DATENAME:
								case DATEPART:
								case DAYS:
								case DB_CHAINING:
								case DB_FAILOVER:
								case DECRYPTION:
								case DEFAULT_DOUBLE_QUOTE:
								case DEFAULT_FULLTEXT_LANGUAGE:
								case DEFAULT_LANGUAGE:
								case DELAY:
								case DELAYED_DURABILITY:
								case DELETED:
								case DENSE_RANK:
								case DEPENDENTS:
								case DES:
								case DESCRIPTION:
								case DESX:
								case DHCP:
								case DIALOG:
								case DIRECTORY_NAME:
								case DISABLE:
								case DISABLE_BROKER:
								case DISABLED:
								case DISK_DRIVE:
								case DOCUMENT:
								case DYNAMIC:
								case EMERGENCY:
								case EMPTY:
								case ENABLE:
								case ENABLE_BROKER:
								case ENCRYPTED_VALUE:
								case ENCRYPTION:
								case ENDPOINT_URL:
								case ERROR_BROKER_CONVERSATIONS:
								case EXCLUSIVE:
								case EXECUTABLE:
								case EXIST:
								case EXPAND:
								case EXPIRY_DATE:
								case EXPLICIT:
								case FAIL_OPERATION:
								case FAILOVER_MODE:
								case FAILURE:
								case FAILURE_CONDITION_LEVEL:
								case FAST:
								case FAST_FORWARD:
								case FILEGROUP:
								case FILEGROWTH:
								case FILEPATH:
								case FILESTREAM:
								case FILTER:
								case FIRST:
								case FIRST_VALUE:
								case FOLLOWING:
								case FORCE:
								case FORCE_FAILOVER_ALLOW_DATA_LOSS:
								case FORCED:
								case FORMAT:
								case FORWARD_ONLY:
								case FULLSCAN:
								case FULLTEXT:
								case GB:
								case GETDATE:
								case GETUTCDATE:
								case GLOBAL:
								case GO:
								case GROUP_MAX_REQUESTS:
								case GROUPING:
								case GROUPING_ID:
								case HADR:
								case HASH:
								case HEALTH_CHECK_TIMEOUT:
								case HIGH:
								case HONOR_BROKER_PRIORITY:
								case HOURS:
								case IDENTITY_VALUE:
								case IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX:
								case IMMEDIATE:
								case IMPERSONATE:
								case IMPORTANCE:
								case INCREMENTAL:
								case INITIATOR:
								case INPUT:
								case INSENSITIVE:
								case INSERTED:
								case INT:
								case IP:
								case ISOLATION:
								case KB:
								case KEEP:
								case KEEPFIXED:
								case KEY_SOURCE:
								case KEYS:
								case KEYSET:
								case LAG:
								case LAST:
								case LAST_VALUE:
								case LEAD:
								case LEVEL:
								case LIST:
								case LISTENER:
								case LISTENER_URL:
								case LOB_COMPACTION:
								case LOCAL:
								case LOCATION:
								case LOCK:
								case LOCK_ESCALATION:
								case LOGIN:
								case LOOP:
								case LOW:
								case MANUAL:
								case MARK:
								case MATERIALIZED:
								case MAX:
								case MAX_CPU_PERCENT:
								case MAX_DOP:
								case MAX_FILES:
								case MAX_IOPS_PER_VOLUME:
								case MAX_MEMORY_PERCENT:
								case MAX_PROCESSES:
								case MAX_QUEUE_READERS:
								case MAX_ROLLOVER_FILES:
								case MAXDOP:
								case MAXRECURSION:
								case MAXSIZE:
								case MB:
								case MEDIUM:
								case MEMORY_OPTIMIZED_DATA:
								case MESSAGE:
								case MIN:
								case MIN_ACTIVE_ROWVERSION:
								case MIN_CPU_PERCENT:
								case MIN_IOPS_PER_VOLUME:
								case MIN_MEMORY_PERCENT:
								case MINUTES:
								case MIRROR_ADDRESS:
								case MIXED_PAGE_ALLOCATION:
								case MODE:
								case MODIFY:
								case MOVE:
								case MULTI_USER:
								case NAME:
								case NESTED_TRIGGERS:
								case NEW_ACCOUNT:
								case NEW_BROKER:
								case NEW_PASSWORD:
								case NEXT:
								case NO:
								case NO_TRUNCATE:
								case NO_WAIT:
								case NOCOUNT:
								case NODES:
								case NOEXPAND:
								case NON_TRANSACTED_ACCESS:
								case NORECOMPUTE:
								case NORECOVERY:
								case NOWAIT:
								case NTILE:
								case NUMANODE:
								case NUMBER:
								case NUMERIC_ROUNDABORT:
								case OBJECT:
								case OFFLINE:
								case OFFSET:
								case OLD_ACCOUNT:
								case ONLINE:
								case ONLY:
								case OPEN_EXISTING:
								case OPTIMISTIC:
								case OPTIMIZE:
								case OUT:
								case OUTPUT:
								case OWNER:
								case PAGE_VERIFY:
								case PARAMETERIZATION:
								case PARTITION:
								case PARTITIONS:
								case PARTNER:
								case PATH:
								case POISON_MESSAGE_HANDLING:
								case POOL:
								case PORT:
								case PRECEDING:
								case PRIMARY_ROLE:
								case PRIOR:
								case PRIORITY:
								case PRIORITY_LEVEL:
								case PRIVATE:
								case PRIVATE_KEY:
								case PRIVILEGES:
								case PROCEDURE_NAME:
								case PROPERTY:
								case PROVIDER:
								case PROVIDER_KEY_NAME:
								case QUERY:
								case QUEUE:
								case QUEUE_DELAY:
								case QUOTED_IDENTIFIER:
								case RANGE:
								case RANK:
								case RC2:
								case RC4:
								case RC4_128:
								case READ_COMMITTED_SNAPSHOT:
								case READ_ONLY:
								case READ_ONLY_ROUTING_LIST:
								case READ_WRITE:
								case READONLY:
								case REBUILD:
								case RECEIVE:
								case RECOMPILE:
								case RECOVERY:
								case RECURSIVE_TRIGGERS:
								case RELATIVE:
								case REMOTE:
								case REMOTE_SERVICE_NAME:
								case REMOVE:
								case REORGANIZE:
								case REPEATABLE:
								case REPLICA:
								case REQUEST_MAX_CPU_TIME_SEC:
								case REQUEST_MAX_MEMORY_GRANT_PERCENT:
								case REQUEST_MEMORY_GRANT_TIMEOUT_SEC:
								case REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT:
								case RESERVE_DISK_SPACE:
								case RESOURCE:
								case RESOURCE_MANAGER_LOCATION:
								case RESTRICTED_USER:
								case RETENTION:
								case ROBUST:
								case ROOT:
								case ROUTE:
								case ROW:
								case ROW_NUMBER:
								case ROWGUID:
								case ROWS:
								case SAMPLE:
								case SCHEMABINDING:
								case SCOPED:
								case SCROLL:
								case SCROLL_LOCKS:
								case SEARCH:
								case SECONDARY:
								case SECONDARY_ONLY:
								case SECONDARY_ROLE:
								case SECONDS:
								case SECRET:
								case SECURITY_LOG:
								case SEEDING_MODE:
								case SELF:
								case SEMI_SENSITIVE:
								case SEND:
								case SENT:
								case SERIALIZABLE:
								case SESSION_TIMEOUT:
								case SETERROR:
								case SHARE:
								case SHOWPLAN:
								case SIGNATURE:
								case SIMPLE:
								case SINGLE_USER:
								case SIZE:
								case SMALLINT:
								case SNAPSHOT:
								case SPATIAL_WINDOW_MAX_CELLS:
								case STANDBY:
								case START_DATE:
								case STATIC:
								case STATS_STREAM:
								case STATUS:
								case STDEV:
								case STDEVP:
								case STOPLIST:
								case STUFF:
								case SUBJECT:
								case SUM:
								case SUSPEND:
								case SYMMETRIC:
								case SYNCHRONOUS_COMMIT:
								case SYNONYM:
								case TAKE:
								case TARGET_RECOVERY_TIME:
								case TB:
								case TEXTIMAGE_ON:
								case THROW:
								case TIES:
								case TIME:
								case TIMEOUT:
								case TIMER:
								case TINYINT:
								case TORN_PAGE_DETECTION:
								case TRANSFORM_NOISE_WORDS:
								case TRIPLE_DES:
								case TRIPLE_DES_3KEY:
								case TRUSTWORTHY:
								case TRY:
								case TSQL:
								case TWO_DIGIT_YEAR_CUTOFF:
								case TYPE:
								case TYPE_WARNING:
								case UNBOUNDED:
								case UNCOMMITTED:
								case UNKNOWN:
								case UNLIMITED:
								case USING:
								case VALID_XML:
								case VALIDATION:
								case VALUE:
								case VAR:
								case VARP:
								case VIEW_METADATA:
								case VIEWS:
								case WAIT:
								case WELL_FORMED_XML:
								case WORK:
								case WORKLOAD:
								case XML:
								case XMLNAMESPACES:
								case DOUBLE_QUOTE_ID:
								case SQUARE_BRACKET_ID:
								case ID:
									{
									setState(7493);
									id();
									}
									break;
								default:
									throw new NoViableAltException(this);
								}
								}
								break;
							default:
								throw new NoViableAltException(this);
							}
							}
							break;
						case 9:
							{
							setState(7499);
							_errHandler.sync(this);
							_la = _input.LA(1);
							if (_la==COMMA) {
								{
								setState(7498);
								match(COMMA);
								}
							}

							setState(7501);
							_la = _input.LA(1);
							if ( !(_la==INIT || _la==NOINIT) ) {
							_errHandler.recoverInline(this);
							}
							else {
								if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
								_errHandler.reportMatch(this);
								consume();
							}
							}
							break;
						case 10:
							{
							setState(7503);
							_errHandler.sync(this);
							_la = _input.LA(1);
							if (_la==COMMA) {
								{
								setState(7502);
								match(COMMA);
								}
							}

							setState(7505);
							_la = _input.LA(1);
							if ( !(_la==NOSKIP || _la==SKIP_KEYWORD) ) {
							_errHandler.recoverInline(this);
							}
							else {
								if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
								_errHandler.reportMatch(this);
								consume();
							}
							}
							break;
						case 11:
							{
							setState(7507);
							_errHandler.sync(this);
							_la = _input.LA(1);
							if (_la==COMMA) {
								{
								setState(7506);
								match(COMMA);
								}
							}

							setState(7509);
							_la = _input.LA(1);
							if ( !(_la==NOFORMAT || _la==FORMAT) ) {
							_errHandler.recoverInline(this);
							}
							else {
								if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
								_errHandler.reportMatch(this);
								consume();
							}
							}
							break;
						case 12:
							{
							setState(7511);
							_errHandler.sync(this);
							_la = _input.LA(1);
							if (_la==COMMA) {
								{
								setState(7510);
								match(COMMA);
								}
							}

							setState(7513);
							match(MEDIADESCRIPTION);
							setState(7514);
							match(EQUAL);
							setState(7517);
							_errHandler.sync(this);
							switch (_input.LA(1)) {
							case STRING:
								{
								setState(7515);
								match(STRING);
								}
								break;
							case CALLED:
							case DATA_COMPRESSION:
							case EVENTDATA:
							case FILENAME:
							case FILLFACTOR:
							case FORCESEEK:
							case INIT:
							case KEY:
							case MASTER:
							case MAX_MEMORY:
							case OFFSETS:
							case PAGE:
							case PUBLIC:
							case R:
							case RAW:
							case RETURN:
							case RETURNS:
							case ROWCOUNT:
							case SAFETY:
							case SERVER:
							case SID:
							case SOURCE:
							case STATE:
							case START:
							case TARGET:
							case ABSOLUTE:
							case ACCENT_SENSITIVITY:
							case ACTION:
							case ACTIVATION:
							case ACTIVE:
							case ADDRESS:
							case AES_128:
							case AES_192:
							case AES_256:
							case AFFINITY:
							case AFTER:
							case AGGREGATE:
							case ALGORITHM:
							case ALLOW_ENCRYPTED_VALUE_MODIFICATIONS:
							case ALLOW_SNAPSHOT_ISOLATION:
							case ALLOWED:
							case ANSI_NULL_DEFAULT:
							case ANSI_NULLS:
							case ANSI_PADDING:
							case ANSI_WARNINGS:
							case APPLICATION_LOG:
							case APPLY:
							case ARITHABORT:
							case ASSEMBLY:
							case AUDIT:
							case AUDIT_GUID:
							case AUTO:
							case AUTO_CLEANUP:
							case AUTO_CLOSE:
							case AUTO_CREATE_STATISTICS:
							case AUTO_SHRINK:
							case AUTO_UPDATE_STATISTICS:
							case AUTO_UPDATE_STATISTICS_ASYNC:
							case AVAILABILITY:
							case AVG:
							case BACKUP_PRIORITY:
							case BEGIN_DIALOG:
							case BIGINT:
							case BINARY_BASE64:
							case BINARY_CHECKSUM:
							case BINDING:
							case BLOB_STORAGE:
							case BROKER:
							case BROKER_INSTANCE:
							case BULK_LOGGED:
							case CALLER:
							case CAP_CPU_PERCENT:
							case CAST:
							case CATALOG:
							case CATCH:
							case CHANGE_RETENTION:
							case CHANGE_TRACKING:
							case CHECKSUM:
							case CHECKSUM_AGG:
							case CLEANUP:
							case COLLECTION:
							case COLUMN_MASTER_KEY:
							case COMMITTED:
							case COMPATIBILITY_LEVEL:
							case CONCAT:
							case CONCAT_NULL_YIELDS_NULL:
							case CONTENT:
							case CONTROL:
							case COOKIE:
							case COUNT:
							case COUNT_BIG:
							case COUNTER:
							case CPU:
							case CREATE_NEW:
							case CREATION_DISPOSITION:
							case CREDENTIAL:
							case CRYPTOGRAPHIC:
							case CURSOR_CLOSE_ON_COMMIT:
							case CURSOR_DEFAULT:
							case DATE_CORRELATION_OPTIMIZATION:
							case DATEADD:
							case DATEDIFF:
							case DATENAME:
							case DATEPART:
							case DAYS:
							case DB_CHAINING:
							case DB_FAILOVER:
							case DECRYPTION:
							case DEFAULT_DOUBLE_QUOTE:
							case DEFAULT_FULLTEXT_LANGUAGE:
							case DEFAULT_LANGUAGE:
							case DELAY:
							case DELAYED_DURABILITY:
							case DELETED:
							case DENSE_RANK:
							case DEPENDENTS:
							case DES:
							case DESCRIPTION:
							case DESX:
							case DHCP:
							case DIALOG:
							case DIRECTORY_NAME:
							case DISABLE:
							case DISABLE_BROKER:
							case DISABLED:
							case DISK_DRIVE:
							case DOCUMENT:
							case DYNAMIC:
							case EMERGENCY:
							case EMPTY:
							case ENABLE:
							case ENABLE_BROKER:
							case ENCRYPTED_VALUE:
							case ENCRYPTION:
							case ENDPOINT_URL:
							case ERROR_BROKER_CONVERSATIONS:
							case EXCLUSIVE:
							case EXECUTABLE:
							case EXIST:
							case EXPAND:
							case EXPIRY_DATE:
							case EXPLICIT:
							case FAIL_OPERATION:
							case FAILOVER_MODE:
							case FAILURE:
							case FAILURE_CONDITION_LEVEL:
							case FAST:
							case FAST_FORWARD:
							case FILEGROUP:
							case FILEGROWTH:
							case FILEPATH:
							case FILESTREAM:
							case FILTER:
							case FIRST:
							case FIRST_VALUE:
							case FOLLOWING:
							case FORCE:
							case FORCE_FAILOVER_ALLOW_DATA_LOSS:
							case FORCED:
							case FORMAT:
							case FORWARD_ONLY:
							case FULLSCAN:
							case FULLTEXT:
							case GB:
							case GETDATE:
							case GETUTCDATE:
							case GLOBAL:
							case GO:
							case GROUP_MAX_REQUESTS:
							case GROUPING:
							case GROUPING_ID:
							case HADR:
							case HASH:
							case HEALTH_CHECK_TIMEOUT:
							case HIGH:
							case HONOR_BROKER_PRIORITY:
							case HOURS:
							case IDENTITY_VALUE:
							case IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX:
							case IMMEDIATE:
							case IMPERSONATE:
							case IMPORTANCE:
							case INCREMENTAL:
							case INITIATOR:
							case INPUT:
							case INSENSITIVE:
							case INSERTED:
							case INT:
							case IP:
							case ISOLATION:
							case KB:
							case KEEP:
							case KEEPFIXED:
							case KEY_SOURCE:
							case KEYS:
							case KEYSET:
							case LAG:
							case LAST:
							case LAST_VALUE:
							case LEAD:
							case LEVEL:
							case LIST:
							case LISTENER:
							case LISTENER_URL:
							case LOB_COMPACTION:
							case LOCAL:
							case LOCATION:
							case LOCK:
							case LOCK_ESCALATION:
							case LOGIN:
							case LOOP:
							case LOW:
							case MANUAL:
							case MARK:
							case MATERIALIZED:
							case MAX:
							case MAX_CPU_PERCENT:
							case MAX_DOP:
							case MAX_FILES:
							case MAX_IOPS_PER_VOLUME:
							case MAX_MEMORY_PERCENT:
							case MAX_PROCESSES:
							case MAX_QUEUE_READERS:
							case MAX_ROLLOVER_FILES:
							case MAXDOP:
							case MAXRECURSION:
							case MAXSIZE:
							case MB:
							case MEDIUM:
							case MEMORY_OPTIMIZED_DATA:
							case MESSAGE:
							case MIN:
							case MIN_ACTIVE_ROWVERSION:
							case MIN_CPU_PERCENT:
							case MIN_IOPS_PER_VOLUME:
							case MIN_MEMORY_PERCENT:
							case MINUTES:
							case MIRROR_ADDRESS:
							case MIXED_PAGE_ALLOCATION:
							case MODE:
							case MODIFY:
							case MOVE:
							case MULTI_USER:
							case NAME:
							case NESTED_TRIGGERS:
							case NEW_ACCOUNT:
							case NEW_BROKER:
							case NEW_PASSWORD:
							case NEXT:
							case NO:
							case NO_TRUNCATE:
							case NO_WAIT:
							case NOCOUNT:
							case NODES:
							case NOEXPAND:
							case NON_TRANSACTED_ACCESS:
							case NORECOMPUTE:
							case NORECOVERY:
							case NOWAIT:
							case NTILE:
							case NUMANODE:
							case NUMBER:
							case NUMERIC_ROUNDABORT:
							case OBJECT:
							case OFFLINE:
							case OFFSET:
							case OLD_ACCOUNT:
							case ONLINE:
							case ONLY:
							case OPEN_EXISTING:
							case OPTIMISTIC:
							case OPTIMIZE:
							case OUT:
							case OUTPUT:
							case OWNER:
							case PAGE_VERIFY:
							case PARAMETERIZATION:
							case PARTITION:
							case PARTITIONS:
							case PARTNER:
							case PATH:
							case POISON_MESSAGE_HANDLING:
							case POOL:
							case PORT:
							case PRECEDING:
							case PRIMARY_ROLE:
							case PRIOR:
							case PRIORITY:
							case PRIORITY_LEVEL:
							case PRIVATE:
							case PRIVATE_KEY:
							case PRIVILEGES:
							case PROCEDURE_NAME:
							case PROPERTY:
							case PROVIDER:
							case PROVIDER_KEY_NAME:
							case QUERY:
							case QUEUE:
							case QUEUE_DELAY:
							case QUOTED_IDENTIFIER:
							case RANGE:
							case RANK:
							case RC2:
							case RC4:
							case RC4_128:
							case READ_COMMITTED_SNAPSHOT:
							case READ_ONLY:
							case READ_ONLY_ROUTING_LIST:
							case READ_WRITE:
							case READONLY:
							case REBUILD:
							case RECEIVE:
							case RECOMPILE:
							case RECOVERY:
							case RECURSIVE_TRIGGERS:
							case RELATIVE:
							case REMOTE:
							case REMOTE_SERVICE_NAME:
							case REMOVE:
							case REORGANIZE:
							case REPEATABLE:
							case REPLICA:
							case REQUEST_MAX_CPU_TIME_SEC:
							case REQUEST_MAX_MEMORY_GRANT_PERCENT:
							case REQUEST_MEMORY_GRANT_TIMEOUT_SEC:
							case REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT:
							case RESERVE_DISK_SPACE:
							case RESOURCE:
							case RESOURCE_MANAGER_LOCATION:
							case RESTRICTED_USER:
							case RETENTION:
							case ROBUST:
							case ROOT:
							case ROUTE:
							case ROW:
							case ROW_NUMBER:
							case ROWGUID:
							case ROWS:
							case SAMPLE:
							case SCHEMABINDING:
							case SCOPED:
							case SCROLL:
							case SCROLL_LOCKS:
							case SEARCH:
							case SECONDARY:
							case SECONDARY_ONLY:
							case SECONDARY_ROLE:
							case SECONDS:
							case SECRET:
							case SECURITY_LOG:
							case SEEDING_MODE:
							case SELF:
							case SEMI_SENSITIVE:
							case SEND:
							case SENT:
							case SERIALIZABLE:
							case SESSION_TIMEOUT:
							case SETERROR:
							case SHARE:
							case SHOWPLAN:
							case SIGNATURE:
							case SIMPLE:
							case SINGLE_USER:
							case SIZE:
							case SMALLINT:
							case SNAPSHOT:
							case SPATIAL_WINDOW_MAX_CELLS:
							case STANDBY:
							case START_DATE:
							case STATIC:
							case STATS_STREAM:
							case STATUS:
							case STDEV:
							case STDEVP:
							case STOPLIST:
							case STUFF:
							case SUBJECT:
							case SUM:
							case SUSPEND:
							case SYMMETRIC:
							case SYNCHRONOUS_COMMIT:
							case SYNONYM:
							case TAKE:
							case TARGET_RECOVERY_TIME:
							case TB:
							case TEXTIMAGE_ON:
							case THROW:
							case TIES:
							case TIME:
							case TIMEOUT:
							case TIMER:
							case TINYINT:
							case TORN_PAGE_DETECTION:
							case TRANSFORM_NOISE_WORDS:
							case TRIPLE_DES:
							case TRIPLE_DES_3KEY:
							case TRUSTWORTHY:
							case TRY:
							case TSQL:
							case TWO_DIGIT_YEAR_CUTOFF:
							case TYPE:
							case TYPE_WARNING:
							case UNBOUNDED:
							case UNCOMMITTED:
							case UNKNOWN:
							case UNLIMITED:
							case USING:
							case VALID_XML:
							case VALIDATION:
							case VALUE:
							case VAR:
							case VARP:
							case VIEW_METADATA:
							case VIEWS:
							case WAIT:
							case WELL_FORMED_XML:
							case WORK:
							case WORKLOAD:
							case XML:
							case XMLNAMESPACES:
							case DOUBLE_QUOTE_ID:
							case SQUARE_BRACKET_ID:
							case ID:
								{
								setState(7516);
								id();
								}
								break;
							default:
								throw new NoViableAltException(this);
							}
							}
							break;
						case 13:
							{
							setState(7520);
							_errHandler.sync(this);
							_la = _input.LA(1);
							if (_la==COMMA) {
								{
								setState(7519);
								match(COMMA);
								}
							}

							setState(7522);
							match(MEDIANAME);
							setState(7523);
							match(EQUAL);
							{
							setState(7524);
							((Backup_databaseContext)_localctx).medianame = match(STRING);
							}
							}
							break;
						case 14:
							{
							setState(7526);
							_errHandler.sync(this);
							_la = _input.LA(1);
							if (_la==COMMA) {
								{
								setState(7525);
								match(COMMA);
								}
							}

							setState(7528);
							match(BLOCKSIZE);
							setState(7529);
							match(EQUAL);
							setState(7532);
							_errHandler.sync(this);
							switch (_input.LA(1)) {
							case DECIMAL:
								{
								setState(7530);
								match(DECIMAL);
								}
								break;
							case CALLED:
							case DATA_COMPRESSION:
							case EVENTDATA:
							case FILENAME:
							case FILLFACTOR:
							case FORCESEEK:
							case INIT:
							case KEY:
							case MASTER:
							case MAX_MEMORY:
							case OFFSETS:
							case PAGE:
							case PUBLIC:
							case R:
							case RAW:
							case RETURN:
							case RETURNS:
							case ROWCOUNT:
							case SAFETY:
							case SERVER:
							case SID:
							case SOURCE:
							case STATE:
							case START:
							case TARGET:
							case ABSOLUTE:
							case ACCENT_SENSITIVITY:
							case ACTION:
							case ACTIVATION:
							case ACTIVE:
							case ADDRESS:
							case AES_128:
							case AES_192:
							case AES_256:
							case AFFINITY:
							case AFTER:
							case AGGREGATE:
							case ALGORITHM:
							case ALLOW_ENCRYPTED_VALUE_MODIFICATIONS:
							case ALLOW_SNAPSHOT_ISOLATION:
							case ALLOWED:
							case ANSI_NULL_DEFAULT:
							case ANSI_NULLS:
							case ANSI_PADDING:
							case ANSI_WARNINGS:
							case APPLICATION_LOG:
							case APPLY:
							case ARITHABORT:
							case ASSEMBLY:
							case AUDIT:
							case AUDIT_GUID:
							case AUTO:
							case AUTO_CLEANUP:
							case AUTO_CLOSE:
							case AUTO_CREATE_STATISTICS:
							case AUTO_SHRINK:
							case AUTO_UPDATE_STATISTICS:
							case AUTO_UPDATE_STATISTICS_ASYNC:
							case AVAILABILITY:
							case AVG:
							case BACKUP_PRIORITY:
							case BEGIN_DIALOG:
							case BIGINT:
							case BINARY_BASE64:
							case BINARY_CHECKSUM:
							case BINDING:
							case BLOB_STORAGE:
							case BROKER:
							case BROKER_INSTANCE:
							case BULK_LOGGED:
							case CALLER:
							case CAP_CPU_PERCENT:
							case CAST:
							case CATALOG:
							case CATCH:
							case CHANGE_RETENTION:
							case CHANGE_TRACKING:
							case CHECKSUM:
							case CHECKSUM_AGG:
							case CLEANUP:
							case COLLECTION:
							case COLUMN_MASTER_KEY:
							case COMMITTED:
							case COMPATIBILITY_LEVEL:
							case CONCAT:
							case CONCAT_NULL_YIELDS_NULL:
							case CONTENT:
							case CONTROL:
							case COOKIE:
							case COUNT:
							case COUNT_BIG:
							case COUNTER:
							case CPU:
							case CREATE_NEW:
							case CREATION_DISPOSITION:
							case CREDENTIAL:
							case CRYPTOGRAPHIC:
							case CURSOR_CLOSE_ON_COMMIT:
							case CURSOR_DEFAULT:
							case DATE_CORRELATION_OPTIMIZATION:
							case DATEADD:
							case DATEDIFF:
							case DATENAME:
							case DATEPART:
							case DAYS:
							case DB_CHAINING:
							case DB_FAILOVER:
							case DECRYPTION:
							case DEFAULT_DOUBLE_QUOTE:
							case DEFAULT_FULLTEXT_LANGUAGE:
							case DEFAULT_LANGUAGE:
							case DELAY:
							case DELAYED_DURABILITY:
							case DELETED:
							case DENSE_RANK:
							case DEPENDENTS:
							case DES:
							case DESCRIPTION:
							case DESX:
							case DHCP:
							case DIALOG:
							case DIRECTORY_NAME:
							case DISABLE:
							case DISABLE_BROKER:
							case DISABLED:
							case DISK_DRIVE:
							case DOCUMENT:
							case DYNAMIC:
							case EMERGENCY:
							case EMPTY:
							case ENABLE:
							case ENABLE_BROKER:
							case ENCRYPTED_VALUE:
							case ENCRYPTION:
							case ENDPOINT_URL:
							case ERROR_BROKER_CONVERSATIONS:
							case EXCLUSIVE:
							case EXECUTABLE:
							case EXIST:
							case EXPAND:
							case EXPIRY_DATE:
							case EXPLICIT:
							case FAIL_OPERATION:
							case FAILOVER_MODE:
							case FAILURE:
							case FAILURE_CONDITION_LEVEL:
							case FAST:
							case FAST_FORWARD:
							case FILEGROUP:
							case FILEGROWTH:
							case FILEPATH:
							case FILESTREAM:
							case FILTER:
							case FIRST:
							case FIRST_VALUE:
							case FOLLOWING:
							case FORCE:
							case FORCE_FAILOVER_ALLOW_DATA_LOSS:
							case FORCED:
							case FORMAT:
							case FORWARD_ONLY:
							case FULLSCAN:
							case FULLTEXT:
							case GB:
							case GETDATE:
							case GETUTCDATE:
							case GLOBAL:
							case GO:
							case GROUP_MAX_REQUESTS:
							case GROUPING:
							case GROUPING_ID:
							case HADR:
							case HASH:
							case HEALTH_CHECK_TIMEOUT:
							case HIGH:
							case HONOR_BROKER_PRIORITY:
							case HOURS:
							case IDENTITY_VALUE:
							case IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX:
							case IMMEDIATE:
							case IMPERSONATE:
							case IMPORTANCE:
							case INCREMENTAL:
							case INITIATOR:
							case INPUT:
							case INSENSITIVE:
							case INSERTED:
							case INT:
							case IP:
							case ISOLATION:
							case KB:
							case KEEP:
							case KEEPFIXED:
							case KEY_SOURCE:
							case KEYS:
							case KEYSET:
							case LAG:
							case LAST:
							case LAST_VALUE:
							case LEAD:
							case LEVEL:
							case LIST:
							case LISTENER:
							case LISTENER_URL:
							case LOB_COMPACTION:
							case LOCAL:
							case LOCATION:
							case LOCK:
							case LOCK_ESCALATION:
							case LOGIN:
							case LOOP:
							case LOW:
							case MANUAL:
							case MARK:
							case MATERIALIZED:
							case MAX:
							case MAX_CPU_PERCENT:
							case MAX_DOP:
							case MAX_FILES:
							case MAX_IOPS_PER_VOLUME:
							case MAX_MEMORY_PERCENT:
							case MAX_PROCESSES:
							case MAX_QUEUE_READERS:
							case MAX_ROLLOVER_FILES:
							case MAXDOP:
							case MAXRECURSION:
							case MAXSIZE:
							case MB:
							case MEDIUM:
							case MEMORY_OPTIMIZED_DATA:
							case MESSAGE:
							case MIN:
							case MIN_ACTIVE_ROWVERSION:
							case MIN_CPU_PERCENT:
							case MIN_IOPS_PER_VOLUME:
							case MIN_MEMORY_PERCENT:
							case MINUTES:
							case MIRROR_ADDRESS:
							case MIXED_PAGE_ALLOCATION:
							case MODE:
							case MODIFY:
							case MOVE:
							case MULTI_USER:
							case NAME:
							case NESTED_TRIGGERS:
							case NEW_ACCOUNT:
							case NEW_BROKER:
							case NEW_PASSWORD:
							case NEXT:
							case NO:
							case NO_TRUNCATE:
							case NO_WAIT:
							case NOCOUNT:
							case NODES:
							case NOEXPAND:
							case NON_TRANSACTED_ACCESS:
							case NORECOMPUTE:
							case NORECOVERY:
							case NOWAIT:
							case NTILE:
							case NUMANODE:
							case NUMBER:
							case NUMERIC_ROUNDABORT:
							case OBJECT:
							case OFFLINE:
							case OFFSET:
							case OLD_ACCOUNT:
							case ONLINE:
							case ONLY:
							case OPEN_EXISTING:
							case OPTIMISTIC:
							case OPTIMIZE:
							case OUT:
							case OUTPUT:
							case OWNER:
							case PAGE_VERIFY:
							case PARAMETERIZATION:
							case PARTITION:
							case PARTITIONS:
							case PARTNER:
							case PATH:
							case POISON_MESSAGE_HANDLING:
							case POOL:
							case PORT:
							case PRECEDING:
							case PRIMARY_ROLE:
							case PRIOR:
							case PRIORITY:
							case PRIORITY_LEVEL:
							case PRIVATE:
							case PRIVATE_KEY:
							case PRIVILEGES:
							case PROCEDURE_NAME:
							case PROPERTY:
							case PROVIDER:
							case PROVIDER_KEY_NAME:
							case QUERY:
							case QUEUE:
							case QUEUE_DELAY:
							case QUOTED_IDENTIFIER:
							case RANGE:
							case RANK:
							case RC2:
							case RC4:
							case RC4_128:
							case READ_COMMITTED_SNAPSHOT:
							case READ_ONLY:
							case READ_ONLY_ROUTING_LIST:
							case READ_WRITE:
							case READONLY:
							case REBUILD:
							case RECEIVE:
							case RECOMPILE:
							case RECOVERY:
							case RECURSIVE_TRIGGERS:
							case RELATIVE:
							case REMOTE:
							case REMOTE_SERVICE_NAME:
							case REMOVE:
							case REORGANIZE:
							case REPEATABLE:
							case REPLICA:
							case REQUEST_MAX_CPU_TIME_SEC:
							case REQUEST_MAX_MEMORY_GRANT_PERCENT:
							case REQUEST_MEMORY_GRANT_TIMEOUT_SEC:
							case REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT:
							case RESERVE_DISK_SPACE:
							case RESOURCE:
							case RESOURCE_MANAGER_LOCATION:
							case RESTRICTED_USER:
							case RETENTION:
							case ROBUST:
							case ROOT:
							case ROUTE:
							case ROW:
							case ROW_NUMBER:
							case ROWGUID:
							case ROWS:
							case SAMPLE:
							case SCHEMABINDING:
							case SCOPED:
							case SCROLL:
							case SCROLL_LOCKS:
							case SEARCH:
							case SECONDARY:
							case SECONDARY_ONLY:
							case SECONDARY_ROLE:
							case SECONDS:
							case SECRET:
							case SECURITY_LOG:
							case SEEDING_MODE:
							case SELF:
							case SEMI_SENSITIVE:
							case SEND:
							case SENT:
							case SERIALIZABLE:
							case SESSION_TIMEOUT:
							case SETERROR:
							case SHARE:
							case SHOWPLAN:
							case SIGNATURE:
							case SIMPLE:
							case SINGLE_USER:
							case SIZE:
							case SMALLINT:
							case SNAPSHOT:
							case SPATIAL_WINDOW_MAX_CELLS:
							case STANDBY:
							case START_DATE:
							case STATIC:
							case STATS_STREAM:
							case STATUS:
							case STDEV:
							case STDEVP:
							case STOPLIST:
							case STUFF:
							case SUBJECT:
							case SUM:
							case SUSPEND:
							case SYMMETRIC:
							case SYNCHRONOUS_COMMIT:
							case SYNONYM:
							case TAKE:
							case TARGET_RECOVERY_TIME:
							case TB:
							case TEXTIMAGE_ON:
							case THROW:
							case TIES:
							case TIME:
							case TIMEOUT:
							case TIMER:
							case TINYINT:
							case TORN_PAGE_DETECTION:
							case TRANSFORM_NOISE_WORDS:
							case TRIPLE_DES:
							case TRIPLE_DES_3KEY:
							case TRUSTWORTHY:
							case TRY:
							case TSQL:
							case TWO_DIGIT_YEAR_CUTOFF:
							case TYPE:
							case TYPE_WARNING:
							case UNBOUNDED:
							case UNCOMMITTED:
							case UNKNOWN:
							case UNLIMITED:
							case USING:
							case VALID_XML:
							case VALIDATION:
							case VALUE:
							case VAR:
							case VARP:
							case VIEW_METADATA:
							case VIEWS:
							case WAIT:
							case WELL_FORMED_XML:
							case WORK:
							case WORKLOAD:
							case XML:
							case XMLNAMESPACES:
							case DOUBLE_QUOTE_ID:
							case SQUARE_BRACKET_ID:
							case ID:
								{
								setState(7531);
								id();
								}
								break;
							default:
								throw new NoViableAltException(this);
							}
							}
							break;
						case 15:
							{
							setState(7535);
							_errHandler.sync(this);
							_la = _input.LA(1);
							if (_la==COMMA) {
								{
								setState(7534);
								match(COMMA);
								}
							}

							setState(7537);
							match(BUFFERCOUNT);
							setState(7538);
							match(EQUAL);
							setState(7541);
							_errHandler.sync(this);
							switch (_input.LA(1)) {
							case DECIMAL:
								{
								setState(7539);
								match(DECIMAL);
								}
								break;
							case CALLED:
							case DATA_COMPRESSION:
							case EVENTDATA:
							case FILENAME:
							case FILLFACTOR:
							case FORCESEEK:
							case INIT:
							case KEY:
							case MASTER:
							case MAX_MEMORY:
							case OFFSETS:
							case PAGE:
							case PUBLIC:
							case R:
							case RAW:
							case RETURN:
							case RETURNS:
							case ROWCOUNT:
							case SAFETY:
							case SERVER:
							case SID:
							case SOURCE:
							case STATE:
							case START:
							case TARGET:
							case ABSOLUTE:
							case ACCENT_SENSITIVITY:
							case ACTION:
							case ACTIVATION:
							case ACTIVE:
							case ADDRESS:
							case AES_128:
							case AES_192:
							case AES_256:
							case AFFINITY:
							case AFTER:
							case AGGREGATE:
							case ALGORITHM:
							case ALLOW_ENCRYPTED_VALUE_MODIFICATIONS:
							case ALLOW_SNAPSHOT_ISOLATION:
							case ALLOWED:
							case ANSI_NULL_DEFAULT:
							case ANSI_NULLS:
							case ANSI_PADDING:
							case ANSI_WARNINGS:
							case APPLICATION_LOG:
							case APPLY:
							case ARITHABORT:
							case ASSEMBLY:
							case AUDIT:
							case AUDIT_GUID:
							case AUTO:
							case AUTO_CLEANUP:
							case AUTO_CLOSE:
							case AUTO_CREATE_STATISTICS:
							case AUTO_SHRINK:
							case AUTO_UPDATE_STATISTICS:
							case AUTO_UPDATE_STATISTICS_ASYNC:
							case AVAILABILITY:
							case AVG:
							case BACKUP_PRIORITY:
							case BEGIN_DIALOG:
							case BIGINT:
							case BINARY_BASE64:
							case BINARY_CHECKSUM:
							case BINDING:
							case BLOB_STORAGE:
							case BROKER:
							case BROKER_INSTANCE:
							case BULK_LOGGED:
							case CALLER:
							case CAP_CPU_PERCENT:
							case CAST:
							case CATALOG:
							case CATCH:
							case CHANGE_RETENTION:
							case CHANGE_TRACKING:
							case CHECKSUM:
							case CHECKSUM_AGG:
							case CLEANUP:
							case COLLECTION:
							case COLUMN_MASTER_KEY:
							case COMMITTED:
							case COMPATIBILITY_LEVEL:
							case CONCAT:
							case CONCAT_NULL_YIELDS_NULL:
							case CONTENT:
							case CONTROL:
							case COOKIE:
							case COUNT:
							case COUNT_BIG:
							case COUNTER:
							case CPU:
							case CREATE_NEW:
							case CREATION_DISPOSITION:
							case CREDENTIAL:
							case CRYPTOGRAPHIC:
							case CURSOR_CLOSE_ON_COMMIT:
							case CURSOR_DEFAULT:
							case DATE_CORRELATION_OPTIMIZATION:
							case DATEADD:
							case DATEDIFF:
							case DATENAME:
							case DATEPART:
							case DAYS:
							case DB_CHAINING:
							case DB_FAILOVER:
							case DECRYPTION:
							case DEFAULT_DOUBLE_QUOTE:
							case DEFAULT_FULLTEXT_LANGUAGE:
							case DEFAULT_LANGUAGE:
							case DELAY:
							case DELAYED_DURABILITY:
							case DELETED:
							case DENSE_RANK:
							case DEPENDENTS:
							case DES:
							case DESCRIPTION:
							case DESX:
							case DHCP:
							case DIALOG:
							case DIRECTORY_NAME:
							case DISABLE:
							case DISABLE_BROKER:
							case DISABLED:
							case DISK_DRIVE:
							case DOCUMENT:
							case DYNAMIC:
							case EMERGENCY:
							case EMPTY:
							case ENABLE:
							case ENABLE_BROKER:
							case ENCRYPTED_VALUE:
							case ENCRYPTION:
							case ENDPOINT_URL:
							case ERROR_BROKER_CONVERSATIONS:
							case EXCLUSIVE:
							case EXECUTABLE:
							case EXIST:
							case EXPAND:
							case EXPIRY_DATE:
							case EXPLICIT:
							case FAIL_OPERATION:
							case FAILOVER_MODE:
							case FAILURE:
							case FAILURE_CONDITION_LEVEL:
							case FAST:
							case FAST_FORWARD:
							case FILEGROUP:
							case FILEGROWTH:
							case FILEPATH:
							case FILESTREAM:
							case FILTER:
							case FIRST:
							case FIRST_VALUE:
							case FOLLOWING:
							case FORCE:
							case FORCE_FAILOVER_ALLOW_DATA_LOSS:
							case FORCED:
							case FORMAT:
							case FORWARD_ONLY:
							case FULLSCAN:
							case FULLTEXT:
							case GB:
							case GETDATE:
							case GETUTCDATE:
							case GLOBAL:
							case GO:
							case GROUP_MAX_REQUESTS:
							case GROUPING:
							case GROUPING_ID:
							case HADR:
							case HASH:
							case HEALTH_CHECK_TIMEOUT:
							case HIGH:
							case HONOR_BROKER_PRIORITY:
							case HOURS:
							case IDENTITY_VALUE:
							case IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX:
							case IMMEDIATE:
							case IMPERSONATE:
							case IMPORTANCE:
							case INCREMENTAL:
							case INITIATOR:
							case INPUT:
							case INSENSITIVE:
							case INSERTED:
							case INT:
							case IP:
							case ISOLATION:
							case KB:
							case KEEP:
							case KEEPFIXED:
							case KEY_SOURCE:
							case KEYS:
							case KEYSET:
							case LAG:
							case LAST:
							case LAST_VALUE:
							case LEAD:
							case LEVEL:
							case LIST:
							case LISTENER:
							case LISTENER_URL:
							case LOB_COMPACTION:
							case LOCAL:
							case LOCATION:
							case LOCK:
							case LOCK_ESCALATION:
							case LOGIN:
							case LOOP:
							case LOW:
							case MANUAL:
							case MARK:
							case MATERIALIZED:
							case MAX:
							case MAX_CPU_PERCENT:
							case MAX_DOP:
							case MAX_FILES:
							case MAX_IOPS_PER_VOLUME:
							case MAX_MEMORY_PERCENT:
							case MAX_PROCESSES:
							case MAX_QUEUE_READERS:
							case MAX_ROLLOVER_FILES:
							case MAXDOP:
							case MAXRECURSION:
							case MAXSIZE:
							case MB:
							case MEDIUM:
							case MEMORY_OPTIMIZED_DATA:
							case MESSAGE:
							case MIN:
							case MIN_ACTIVE_ROWVERSION:
							case MIN_CPU_PERCENT:
							case MIN_IOPS_PER_VOLUME:
							case MIN_MEMORY_PERCENT:
							case MINUTES:
							case MIRROR_ADDRESS:
							case MIXED_PAGE_ALLOCATION:
							case MODE:
							case MODIFY:
							case MOVE:
							case MULTI_USER:
							case NAME:
							case NESTED_TRIGGERS:
							case NEW_ACCOUNT:
							case NEW_BROKER:
							case NEW_PASSWORD:
							case NEXT:
							case NO:
							case NO_TRUNCATE:
							case NO_WAIT:
							case NOCOUNT:
							case NODES:
							case NOEXPAND:
							case NON_TRANSACTED_ACCESS:
							case NORECOMPUTE:
							case NORECOVERY:
							case NOWAIT:
							case NTILE:
							case NUMANODE:
							case NUMBER:
							case NUMERIC_ROUNDABORT:
							case OBJECT:
							case OFFLINE:
							case OFFSET:
							case OLD_ACCOUNT:
							case ONLINE:
							case ONLY:
							case OPEN_EXISTING:
							case OPTIMISTIC:
							case OPTIMIZE:
							case OUT:
							case OUTPUT:
							case OWNER:
							case PAGE_VERIFY:
							case PARAMETERIZATION:
							case PARTITION:
							case PARTITIONS:
							case PARTNER:
							case PATH:
							case POISON_MESSAGE_HANDLING:
							case POOL:
							case PORT:
							case PRECEDING:
							case PRIMARY_ROLE:
							case PRIOR:
							case PRIORITY:
							case PRIORITY_LEVEL:
							case PRIVATE:
							case PRIVATE_KEY:
							case PRIVILEGES:
							case PROCEDURE_NAME:
							case PROPERTY:
							case PROVIDER:
							case PROVIDER_KEY_NAME:
							case QUERY:
							case QUEUE:
							case QUEUE_DELAY:
							case QUOTED_IDENTIFIER:
							case RANGE:
							case RANK:
							case RC2:
							case RC4:
							case RC4_128:
							case READ_COMMITTED_SNAPSHOT:
							case READ_ONLY:
							case READ_ONLY_ROUTING_LIST:
							case READ_WRITE:
							case READONLY:
							case REBUILD:
							case RECEIVE:
							case RECOMPILE:
							case RECOVERY:
							case RECURSIVE_TRIGGERS:
							case RELATIVE:
							case REMOTE:
							case REMOTE_SERVICE_NAME:
							case REMOVE:
							case REORGANIZE:
							case REPEATABLE:
							case REPLICA:
							case REQUEST_MAX_CPU_TIME_SEC:
							case REQUEST_MAX_MEMORY_GRANT_PERCENT:
							case REQUEST_MEMORY_GRANT_TIMEOUT_SEC:
							case REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT:
							case RESERVE_DISK_SPACE:
							case RESOURCE:
							case RESOURCE_MANAGER_LOCATION:
							case RESTRICTED_USER:
							case RETENTION:
							case ROBUST:
							case ROOT:
							case ROUTE:
							case ROW:
							case ROW_NUMBER:
							case ROWGUID:
							case ROWS:
							case SAMPLE:
							case SCHEMABINDING:
							case SCOPED:
							case SCROLL:
							case SCROLL_LOCKS:
							case SEARCH:
							case SECONDARY:
							case SECONDARY_ONLY:
							case SECONDARY_ROLE:
							case SECONDS:
							case SECRET:
							case SECURITY_LOG:
							case SEEDING_MODE:
							case SELF:
							case SEMI_SENSITIVE:
							case SEND:
							case SENT:
							case SERIALIZABLE:
							case SESSION_TIMEOUT:
							case SETERROR:
							case SHARE:
							case SHOWPLAN:
							case SIGNATURE:
							case SIMPLE:
							case SINGLE_USER:
							case SIZE:
							case SMALLINT:
							case SNAPSHOT:
							case SPATIAL_WINDOW_MAX_CELLS:
							case STANDBY:
							case START_DATE:
							case STATIC:
							case STATS_STREAM:
							case STATUS:
							case STDEV:
							case STDEVP:
							case STOPLIST:
							case STUFF:
							case SUBJECT:
							case SUM:
							case SUSPEND:
							case SYMMETRIC:
							case SYNCHRONOUS_COMMIT:
							case SYNONYM:
							case TAKE:
							case TARGET_RECOVERY_TIME:
							case TB:
							case TEXTIMAGE_ON:
							case THROW:
							case TIES:
							case TIME:
							case TIMEOUT:
							case TIMER:
							case TINYINT:
							case TORN_PAGE_DETECTION:
							case TRANSFORM_NOISE_WORDS:
							case TRIPLE_DES:
							case TRIPLE_DES_3KEY:
							case TRUSTWORTHY:
							case TRY:
							case TSQL:
							case TWO_DIGIT_YEAR_CUTOFF:
							case TYPE:
							case TYPE_WARNING:
							case UNBOUNDED:
							case UNCOMMITTED:
							case UNKNOWN:
							case UNLIMITED:
							case USING:
							case VALID_XML:
							case VALIDATION:
							case VALUE:
							case VAR:
							case VARP:
							case VIEW_METADATA:
							case VIEWS:
							case WAIT:
							case WELL_FORMED_XML:
							case WORK:
							case WORKLOAD:
							case XML:
							case XMLNAMESPACES:
							case DOUBLE_QUOTE_ID:
							case SQUARE_BRACKET_ID:
							case ID:
								{
								setState(7540);
								id();
								}
								break;
							default:
								throw new NoViableAltException(this);
							}
							}
							break;
						case 16:
							{
							setState(7544);
							_errHandler.sync(this);
							_la = _input.LA(1);
							if (_la==COMMA) {
								{
								setState(7543);
								match(COMMA);
								}
							}

							setState(7546);
							match(MAXTRANSFER);
							setState(7547);
							match(EQUAL);
							setState(7550);
							_errHandler.sync(this);
							switch (_input.LA(1)) {
							case DECIMAL:
								{
								setState(7548);
								match(DECIMAL);
								}
								break;
							case CALLED:
							case DATA_COMPRESSION:
							case EVENTDATA:
							case FILENAME:
							case FILLFACTOR:
							case FORCESEEK:
							case INIT:
							case KEY:
							case MASTER:
							case MAX_MEMORY:
							case OFFSETS:
							case PAGE:
							case PUBLIC:
							case R:
							case RAW:
							case RETURN:
							case RETURNS:
							case ROWCOUNT:
							case SAFETY:
							case SERVER:
							case SID:
							case SOURCE:
							case STATE:
							case START:
							case TARGET:
							case ABSOLUTE:
							case ACCENT_SENSITIVITY:
							case ACTION:
							case ACTIVATION:
							case ACTIVE:
							case ADDRESS:
							case AES_128:
							case AES_192:
							case AES_256:
							case AFFINITY:
							case AFTER:
							case AGGREGATE:
							case ALGORITHM:
							case ALLOW_ENCRYPTED_VALUE_MODIFICATIONS:
							case ALLOW_SNAPSHOT_ISOLATION:
							case ALLOWED:
							case ANSI_NULL_DEFAULT:
							case ANSI_NULLS:
							case ANSI_PADDING:
							case ANSI_WARNINGS:
							case APPLICATION_LOG:
							case APPLY:
							case ARITHABORT:
							case ASSEMBLY:
							case AUDIT:
							case AUDIT_GUID:
							case AUTO:
							case AUTO_CLEANUP:
							case AUTO_CLOSE:
							case AUTO_CREATE_STATISTICS:
							case AUTO_SHRINK:
							case AUTO_UPDATE_STATISTICS:
							case AUTO_UPDATE_STATISTICS_ASYNC:
							case AVAILABILITY:
							case AVG:
							case BACKUP_PRIORITY:
							case BEGIN_DIALOG:
							case BIGINT:
							case BINARY_BASE64:
							case BINARY_CHECKSUM:
							case BINDING:
							case BLOB_STORAGE:
							case BROKER:
							case BROKER_INSTANCE:
							case BULK_LOGGED:
							case CALLER:
							case CAP_CPU_PERCENT:
							case CAST:
							case CATALOG:
							case CATCH:
							case CHANGE_RETENTION:
							case CHANGE_TRACKING:
							case CHECKSUM:
							case CHECKSUM_AGG:
							case CLEANUP:
							case COLLECTION:
							case COLUMN_MASTER_KEY:
							case COMMITTED:
							case COMPATIBILITY_LEVEL:
							case CONCAT:
							case CONCAT_NULL_YIELDS_NULL:
							case CONTENT:
							case CONTROL:
							case COOKIE:
							case COUNT:
							case COUNT_BIG:
							case COUNTER:
							case CPU:
							case CREATE_NEW:
							case CREATION_DISPOSITION:
							case CREDENTIAL:
							case CRYPTOGRAPHIC:
							case CURSOR_CLOSE_ON_COMMIT:
							case CURSOR_DEFAULT:
							case DATE_CORRELATION_OPTIMIZATION:
							case DATEADD:
							case DATEDIFF:
							case DATENAME:
							case DATEPART:
							case DAYS:
							case DB_CHAINING:
							case DB_FAILOVER:
							case DECRYPTION:
							case DEFAULT_DOUBLE_QUOTE:
							case DEFAULT_FULLTEXT_LANGUAGE:
							case DEFAULT_LANGUAGE:
							case DELAY:
							case DELAYED_DURABILITY:
							case DELETED:
							case DENSE_RANK:
							case DEPENDENTS:
							case DES:
							case DESCRIPTION:
							case DESX:
							case DHCP:
							case DIALOG:
							case DIRECTORY_NAME:
							case DISABLE:
							case DISABLE_BROKER:
							case DISABLED:
							case DISK_DRIVE:
							case DOCUMENT:
							case DYNAMIC:
							case EMERGENCY:
							case EMPTY:
							case ENABLE:
							case ENABLE_BROKER:
							case ENCRYPTED_VALUE:
							case ENCRYPTION:
							case ENDPOINT_URL:
							case ERROR_BROKER_CONVERSATIONS:
							case EXCLUSIVE:
							case EXECUTABLE:
							case EXIST:
							case EXPAND:
							case EXPIRY_DATE:
							case EXPLICIT:
							case FAIL_OPERATION:
							case FAILOVER_MODE:
							case FAILURE:
							case FAILURE_CONDITION_LEVEL:
							case FAST:
							case FAST_FORWARD:
							case FILEGROUP:
							case FILEGROWTH:
							case FILEPATH:
							case FILESTREAM:
							case FILTER:
							case FIRST:
							case FIRST_VALUE:
							case FOLLOWING:
							case FORCE:
							case FORCE_FAILOVER_ALLOW_DATA_LOSS:
							case FORCED:
							case FORMAT:
							case FORWARD_ONLY:
							case FULLSCAN:
							case FULLTEXT:
							case GB:
							case GETDATE:
							case GETUTCDATE:
							case GLOBAL:
							case GO:
							case GROUP_MAX_REQUESTS:
							case GROUPING:
							case GROUPING_ID:
							case HADR:
							case HASH:
							case HEALTH_CHECK_TIMEOUT:
							case HIGH:
							case HONOR_BROKER_PRIORITY:
							case HOURS:
							case IDENTITY_VALUE:
							case IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX:
							case IMMEDIATE:
							case IMPERSONATE:
							case IMPORTANCE:
							case INCREMENTAL:
							case INITIATOR:
							case INPUT:
							case INSENSITIVE:
							case INSERTED:
							case INT:
							case IP:
							case ISOLATION:
							case KB:
							case KEEP:
							case KEEPFIXED:
							case KEY_SOURCE:
							case KEYS:
							case KEYSET:
							case LAG:
							case LAST:
							case LAST_VALUE:
							case LEAD:
							case LEVEL:
							case LIST:
							case LISTENER:
							case LISTENER_URL:
							case LOB_COMPACTION:
							case LOCAL:
							case LOCATION:
							case LOCK:
							case LOCK_ESCALATION:
							case LOGIN:
							case LOOP:
							case LOW:
							case MANUAL:
							case MARK:
							case MATERIALIZED:
							case MAX:
							case MAX_CPU_PERCENT:
							case MAX_DOP:
							case MAX_FILES:
							case MAX_IOPS_PER_VOLUME:
							case MAX_MEMORY_PERCENT:
							case MAX_PROCESSES:
							case MAX_QUEUE_READERS:
							case MAX_ROLLOVER_FILES:
							case MAXDOP:
							case MAXRECURSION:
							case MAXSIZE:
							case MB:
							case MEDIUM:
							case MEMORY_OPTIMIZED_DATA:
							case MESSAGE:
							case MIN:
							case MIN_ACTIVE_ROWVERSION:
							case MIN_CPU_PERCENT:
							case MIN_IOPS_PER_VOLUME:
							case MIN_MEMORY_PERCENT:
							case MINUTES:
							case MIRROR_ADDRESS:
							case MIXED_PAGE_ALLOCATION:
							case MODE:
							case MODIFY:
							case MOVE:
							case MULTI_USER:
							case NAME:
							case NESTED_TRIGGERS:
							case NEW_ACCOUNT:
							case NEW_BROKER:
							case NEW_PASSWORD:
							case NEXT:
							case NO:
							case NO_TRUNCATE:
							case NO_WAIT:
							case NOCOUNT:
							case NODES:
							case NOEXPAND:
							case NON_TRANSACTED_ACCESS:
							case NORECOMPUTE:
							case NORECOVERY:
							case NOWAIT:
							case NTILE:
							case NUMANODE:
							case NUMBER:
							case NUMERIC_ROUNDABORT:
							case OBJECT:
							case OFFLINE:
							case OFFSET:
							case OLD_ACCOUNT:
							case ONLINE:
							case ONLY:
							case OPEN_EXISTING:
							case OPTIMISTIC:
							case OPTIMIZE:
							case OUT:
							case OUTPUT:
							case OWNER:
							case PAGE_VERIFY:
							case PARAMETERIZATION:
							case PARTITION:
							case PARTITIONS:
							case PARTNER:
							case PATH:
							case POISON_MESSAGE_HANDLING:
							case POOL:
							case PORT:
							case PRECEDING:
							case PRIMARY_ROLE:
							case PRIOR:
							case PRIORITY:
							case PRIORITY_LEVEL:
							case PRIVATE:
							case PRIVATE_KEY:
							case PRIVILEGES:
							case PROCEDURE_NAME:
							case PROPERTY:
							case PROVIDER:
							case PROVIDER_KEY_NAME:
							case QUERY:
							case QUEUE:
							case QUEUE_DELAY:
							case QUOTED_IDENTIFIER:
							case RANGE:
							case RANK:
							case RC2:
							case RC4:
							case RC4_128:
							case READ_COMMITTED_SNAPSHOT:
							case READ_ONLY:
							case READ_ONLY_ROUTING_LIST:
							case READ_WRITE:
							case READONLY:
							case REBUILD:
							case RECEIVE:
							case RECOMPILE:
							case RECOVERY:
							case RECURSIVE_TRIGGERS:
							case RELATIVE:
							case REMOTE:
							case REMOTE_SERVICE_NAME:
							case REMOVE:
							case REORGANIZE:
							case REPEATABLE:
							case REPLICA:
							case REQUEST_MAX_CPU_TIME_SEC:
							case REQUEST_MAX_MEMORY_GRANT_PERCENT:
							case REQUEST_MEMORY_GRANT_TIMEOUT_SEC:
							case REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT:
							case RESERVE_DISK_SPACE:
							case RESOURCE:
							case RESOURCE_MANAGER_LOCATION:
							case RESTRICTED_USER:
							case RETENTION:
							case ROBUST:
							case ROOT:
							case ROUTE:
							case ROW:
							case ROW_NUMBER:
							case ROWGUID:
							case ROWS:
							case SAMPLE:
							case SCHEMABINDING:
							case SCOPED:
							case SCROLL:
							case SCROLL_LOCKS:
							case SEARCH:
							case SECONDARY:
							case SECONDARY_ONLY:
							case SECONDARY_ROLE:
							case SECONDS:
							case SECRET:
							case SECURITY_LOG:
							case SEEDING_MODE:
							case SELF:
							case SEMI_SENSITIVE:
							case SEND:
							case SENT:
							case SERIALIZABLE:
							case SESSION_TIMEOUT:
							case SETERROR:
							case SHARE:
							case SHOWPLAN:
							case SIGNATURE:
							case SIMPLE:
							case SINGLE_USER:
							case SIZE:
							case SMALLINT:
							case SNAPSHOT:
							case SPATIAL_WINDOW_MAX_CELLS:
							case STANDBY:
							case START_DATE:
							case STATIC:
							case STATS_STREAM:
							case STATUS:
							case STDEV:
							case STDEVP:
							case STOPLIST:
							case STUFF:
							case SUBJECT:
							case SUM:
							case SUSPEND:
							case SYMMETRIC:
							case SYNCHRONOUS_COMMIT:
							case SYNONYM:
							case TAKE:
							case TARGET_RECOVERY_TIME:
							case TB:
							case TEXTIMAGE_ON:
							case THROW:
							case TIES:
							case TIME:
							case TIMEOUT:
							case TIMER:
							case TINYINT:
							case TORN_PAGE_DETECTION:
							case TRANSFORM_NOISE_WORDS:
							case TRIPLE_DES:
							case TRIPLE_DES_3KEY:
							case TRUSTWORTHY:
							case TRY:
							case TSQL:
							case TWO_DIGIT_YEAR_CUTOFF:
							case TYPE:
							case TYPE_WARNING:
							case UNBOUNDED:
							case UNCOMMITTED:
							case UNKNOWN:
							case UNLIMITED:
							case USING:
							case VALID_XML:
							case VALIDATION:
							case VALUE:
							case VAR:
							case VARP:
							case VIEW_METADATA:
							case VIEWS:
							case WAIT:
							case WELL_FORMED_XML:
							case WORK:
							case WORKLOAD:
							case XML:
							case XMLNAMESPACES:
							case DOUBLE_QUOTE_ID:
							case SQUARE_BRACKET_ID:
							case ID:
								{
								setState(7549);
								id();
								}
								break;
							default:
								throw new NoViableAltException(this);
							}
							}
							break;
						case 17:
							{
							setState(7553);
							_errHandler.sync(this);
							_la = _input.LA(1);
							if (_la==COMMA) {
								{
								setState(7552);
								match(COMMA);
								}
							}

							setState(7555);
							_la = _input.LA(1);
							if ( !(_la==NO_CHECKSUM || _la==CHECKSUM) ) {
							_errHandler.recoverInline(this);
							}
							else {
								if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
								_errHandler.reportMatch(this);
								consume();
							}
							}
							break;
						case 18:
							{
							setState(7557);
							_errHandler.sync(this);
							_la = _input.LA(1);
							if (_la==COMMA) {
								{
								setState(7556);
								match(COMMA);
								}
							}

							setState(7559);
							_la = _input.LA(1);
							if ( !(_la==CONTINUE_AFTER_ERROR || _la==STOP_ON_ERROR) ) {
							_errHandler.recoverInline(this);
							}
							else {
								if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
								_errHandler.reportMatch(this);
								consume();
							}
							}
							break;
						case 19:
							{
							setState(7561);
							_errHandler.sync(this);
							_la = _input.LA(1);
							if (_la==COMMA) {
								{
								setState(7560);
								match(COMMA);
								}
							}

							setState(7563);
							match(RESTART);
							}
							break;
						case 20:
							{
							setState(7565);
							_errHandler.sync(this);
							_la = _input.LA(1);
							if (_la==COMMA) {
								{
								setState(7564);
								match(COMMA);
								}
							}

							setState(7567);
							match(STATS);
							setState(7570);
							_errHandler.sync(this);
							_la = _input.LA(1);
							if (_la==EQUAL) {
								{
								setState(7568);
								match(EQUAL);
								setState(7569);
								((Backup_databaseContext)_localctx).stats_percent = match(DECIMAL);
								}
							}

							}
							break;
						case 21:
							{
							setState(7573);
							_errHandler.sync(this);
							_la = _input.LA(1);
							if (_la==COMMA) {
								{
								setState(7572);
								match(COMMA);
								}
							}

							setState(7575);
							_la = _input.LA(1);
							if ( !(_la==NOREWIND || _la==REWIND) ) {
							_errHandler.recoverInline(this);
							}
							else {
								if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
								_errHandler.reportMatch(this);
								consume();
							}
							}
							break;
						case 22:
							{
							setState(7577);
							_errHandler.sync(this);
							_la = _input.LA(1);
							if (_la==COMMA) {
								{
								setState(7576);
								match(COMMA);
								}
							}

							setState(7579);
							_la = _input.LA(1);
							if ( !(_la==LOAD || _la==NOUNLOAD) ) {
							_errHandler.recoverInline(this);
							}
							else {
								if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
								_errHandler.reportMatch(this);
								consume();
							}
							}
							break;
						case 23:
							{
							setState(7581);
							_errHandler.sync(this);
							_la = _input.LA(1);
							if (_la==COMMA) {
								{
								setState(7580);
								match(COMMA);
								}
							}

							setState(7583);
							match(ENCRYPTION);
							setState(7584);
							match(LR_BRACKET);
							setState(7585);
							match(ALGORITHM);
							setState(7586);
							match(EQUAL);
							setState(7587);
							_la = _input.LA(1);
							if ( !(((((_la - 390)) & ~0x3f) == 0 && ((1L << (_la - 390)) & ((1L << (AES_128 - 390)) | (1L << (AES_192 - 390)) | (1L << (AES_256 - 390)))) != 0) || _la==TRIPLE_DES_3KEY) ) {
							_errHandler.recoverInline(this);
							}
							else {
								if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
								_errHandler.reportMatch(this);
								consume();
							}
							setState(7588);
							match(COMMA);
							setState(7589);
							match(SERVER);
							setState(7590);
							match(CERTIFICATE);
							setState(7591);
							match(EQUAL);
							setState(7598);
							_errHandler.sync(this);
							switch ( getInterpreter().adaptivePredict(_input,1034,_ctx) ) {
							case 1:
								{
								setState(7592);
								((Backup_databaseContext)_localctx).encryptor_name = id();
								}
								break;
							case 2:
								{
								setState(7593);
								match(SERVER);
								setState(7594);
								match(ASYMMETRIC);
								setState(7595);
								match(KEY);
								setState(7596);
								match(EQUAL);
								setState(7597);
								((Backup_databaseContext)_localctx).encryptor_name = id();
								}
								break;
							}
							}
							break;
						}
						} 
					}
					setState(7604);
					_errHandler.sync(this);
					_alt = getInterpreter().adaptivePredict(_input,1036,_ctx);
				}
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Backup_logContext extends ParserRuleContext {
		public IdContext database_name;
		public IdContext logical_device_name;
		public IdContext backup_set_name;
		public Token medianame;
		public Token stats_percent;
		public Token undo_file_name;
		public IdContext encryptor_name;
		public TerminalNode BACKUP() { return getToken(TSqlParser.BACKUP, 0); }
		public TerminalNode LOG() { return getToken(TSqlParser.LOG, 0); }
		public List TO() { return getTokens(TSqlParser.TO); }
		public TerminalNode TO(int i) {
			return getToken(TSqlParser.TO, i);
		}
		public List id() {
			return getRuleContexts(IdContext.class);
		}
		public IdContext id(int i) {
			return getRuleContext(IdContext.class,i);
		}
		public TerminalNode WITH() { return getToken(TSqlParser.WITH, 0); }
		public List EQUAL() { return getTokens(TSqlParser.EQUAL); }
		public TerminalNode EQUAL(int i) {
			return getToken(TSqlParser.EQUAL, i);
		}
		public List DISK() { return getTokens(TSqlParser.DISK); }
		public TerminalNode DISK(int i) {
			return getToken(TSqlParser.DISK, i);
		}
		public List TAPE() { return getTokens(TSqlParser.TAPE); }
		public TerminalNode TAPE(int i) {
			return getToken(TSqlParser.TAPE, i);
		}
		public List URL() { return getTokens(TSqlParser.URL); }
		public TerminalNode URL(int i) {
			return getToken(TSqlParser.URL, i);
		}
		public List MIRROR() { return getTokens(TSqlParser.MIRROR); }
		public TerminalNode MIRROR(int i) {
			return getToken(TSqlParser.MIRROR, i);
		}
		public List DIFFERENTIAL() { return getTokens(TSqlParser.DIFFERENTIAL); }
		public TerminalNode DIFFERENTIAL(int i) {
			return getToken(TSqlParser.DIFFERENTIAL, i);
		}
		public List COPY_ONLY() { return getTokens(TSqlParser.COPY_ONLY); }
		public TerminalNode COPY_ONLY(int i) {
			return getToken(TSqlParser.COPY_ONLY, i);
		}
		public List DESCRIPTION() { return getTokens(TSqlParser.DESCRIPTION); }
		public TerminalNode DESCRIPTION(int i) {
			return getToken(TSqlParser.DESCRIPTION, i);
		}
		public List NAME() { return getTokens(TSqlParser.NAME); }
		public TerminalNode NAME(int i) {
			return getToken(TSqlParser.NAME, i);
		}
		public List CREDENTIAL() { return getTokens(TSqlParser.CREDENTIAL); }
		public TerminalNode CREDENTIAL(int i) {
			return getToken(TSqlParser.CREDENTIAL, i);
		}
		public List FILE_SNAPSHOT() { return getTokens(TSqlParser.FILE_SNAPSHOT); }
		public TerminalNode FILE_SNAPSHOT(int i) {
			return getToken(TSqlParser.FILE_SNAPSHOT, i);
		}
		public List MEDIADESCRIPTION() { return getTokens(TSqlParser.MEDIADESCRIPTION); }
		public TerminalNode MEDIADESCRIPTION(int i) {
			return getToken(TSqlParser.MEDIADESCRIPTION, i);
		}
		public List MEDIANAME() { return getTokens(TSqlParser.MEDIANAME); }
		public TerminalNode MEDIANAME(int i) {
			return getToken(TSqlParser.MEDIANAME, i);
		}
		public List BLOCKSIZE() { return getTokens(TSqlParser.BLOCKSIZE); }
		public TerminalNode BLOCKSIZE(int i) {
			return getToken(TSqlParser.BLOCKSIZE, i);
		}
		public List BUFFERCOUNT() { return getTokens(TSqlParser.BUFFERCOUNT); }
		public TerminalNode BUFFERCOUNT(int i) {
			return getToken(TSqlParser.BUFFERCOUNT, i);
		}
		public List MAXTRANSFER() { return getTokens(TSqlParser.MAXTRANSFER); }
		public TerminalNode MAXTRANSFER(int i) {
			return getToken(TSqlParser.MAXTRANSFER, i);
		}
		public List RESTART() { return getTokens(TSqlParser.RESTART); }
		public TerminalNode RESTART(int i) {
			return getToken(TSqlParser.RESTART, i);
		}
		public List STATS() { return getTokens(TSqlParser.STATS); }
		public TerminalNode STATS(int i) {
			return getToken(TSqlParser.STATS, i);
		}
		public List NO_TRUNCATE() { return getTokens(TSqlParser.NO_TRUNCATE); }
		public TerminalNode NO_TRUNCATE(int i) {
			return getToken(TSqlParser.NO_TRUNCATE, i);
		}
		public List ENCRYPTION() { return getTokens(TSqlParser.ENCRYPTION); }
		public TerminalNode ENCRYPTION(int i) {
			return getToken(TSqlParser.ENCRYPTION, i);
		}
		public List LR_BRACKET() { return getTokens(TSqlParser.LR_BRACKET); }
		public TerminalNode LR_BRACKET(int i) {
			return getToken(TSqlParser.LR_BRACKET, i);
		}
		public List ALGORITHM() { return getTokens(TSqlParser.ALGORITHM); }
		public TerminalNode ALGORITHM(int i) {
			return getToken(TSqlParser.ALGORITHM, i);
		}
		public List COMMA() { return getTokens(TSqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(TSqlParser.COMMA, i);
		}
		public List SERVER() { return getTokens(TSqlParser.SERVER); }
		public TerminalNode SERVER(int i) {
			return getToken(TSqlParser.SERVER, i);
		}
		public List CERTIFICATE() { return getTokens(TSqlParser.CERTIFICATE); }
		public TerminalNode CERTIFICATE(int i) {
			return getToken(TSqlParser.CERTIFICATE, i);
		}
		public List STRING() { return getTokens(TSqlParser.STRING); }
		public TerminalNode STRING(int i) {
			return getToken(TSqlParser.STRING, i);
		}
		public List COMPRESSION() { return getTokens(TSqlParser.COMPRESSION); }
		public TerminalNode COMPRESSION(int i) {
			return getToken(TSqlParser.COMPRESSION, i);
		}
		public List NO_COMPRESSION() { return getTokens(TSqlParser.NO_COMPRESSION); }
		public TerminalNode NO_COMPRESSION(int i) {
			return getToken(TSqlParser.NO_COMPRESSION, i);
		}
		public List NOINIT() { return getTokens(TSqlParser.NOINIT); }
		public TerminalNode NOINIT(int i) {
			return getToken(TSqlParser.NOINIT, i);
		}
		public List INIT() { return getTokens(TSqlParser.INIT); }
		public TerminalNode INIT(int i) {
			return getToken(TSqlParser.INIT, i);
		}
		public List NOSKIP() { return getTokens(TSqlParser.NOSKIP); }
		public TerminalNode NOSKIP(int i) {
			return getToken(TSqlParser.NOSKIP, i);
		}
		public List SKIP_KEYWORD() { return getTokens(TSqlParser.SKIP_KEYWORD); }
		public TerminalNode SKIP_KEYWORD(int i) {
			return getToken(TSqlParser.SKIP_KEYWORD, i);
		}
		public List NOFORMAT() { return getTokens(TSqlParser.NOFORMAT); }
		public TerminalNode NOFORMAT(int i) {
			return getToken(TSqlParser.NOFORMAT, i);
		}
		public List FORMAT() { return getTokens(TSqlParser.FORMAT); }
		public TerminalNode FORMAT(int i) {
			return getToken(TSqlParser.FORMAT, i);
		}
		public List NO_CHECKSUM() { return getTokens(TSqlParser.NO_CHECKSUM); }
		public TerminalNode NO_CHECKSUM(int i) {
			return getToken(TSqlParser.NO_CHECKSUM, i);
		}
		public List CHECKSUM() { return getTokens(TSqlParser.CHECKSUM); }
		public TerminalNode CHECKSUM(int i) {
			return getToken(TSqlParser.CHECKSUM, i);
		}
		public List STOP_ON_ERROR() { return getTokens(TSqlParser.STOP_ON_ERROR); }
		public TerminalNode STOP_ON_ERROR(int i) {
			return getToken(TSqlParser.STOP_ON_ERROR, i);
		}
		public List CONTINUE_AFTER_ERROR() { return getTokens(TSqlParser.CONTINUE_AFTER_ERROR); }
		public TerminalNode CONTINUE_AFTER_ERROR(int i) {
			return getToken(TSqlParser.CONTINUE_AFTER_ERROR, i);
		}
		public List REWIND() { return getTokens(TSqlParser.REWIND); }
		public TerminalNode REWIND(int i) {
			return getToken(TSqlParser.REWIND, i);
		}
		public List NOREWIND() { return getTokens(TSqlParser.NOREWIND); }
		public TerminalNode NOREWIND(int i) {
			return getToken(TSqlParser.NOREWIND, i);
		}
		public List LOAD() { return getTokens(TSqlParser.LOAD); }
		public TerminalNode LOAD(int i) {
			return getToken(TSqlParser.LOAD, i);
		}
		public List NOUNLOAD() { return getTokens(TSqlParser.NOUNLOAD); }
		public TerminalNode NOUNLOAD(int i) {
			return getToken(TSqlParser.NOUNLOAD, i);
		}
		public List AES_128() { return getTokens(TSqlParser.AES_128); }
		public TerminalNode AES_128(int i) {
			return getToken(TSqlParser.AES_128, i);
		}
		public List AES_192() { return getTokens(TSqlParser.AES_192); }
		public TerminalNode AES_192(int i) {
			return getToken(TSqlParser.AES_192, i);
		}
		public List AES_256() { return getTokens(TSqlParser.AES_256); }
		public TerminalNode AES_256(int i) {
			return getToken(TSqlParser.AES_256, i);
		}
		public List TRIPLE_DES_3KEY() { return getTokens(TSqlParser.TRIPLE_DES_3KEY); }
		public TerminalNode TRIPLE_DES_3KEY(int i) {
			return getToken(TSqlParser.TRIPLE_DES_3KEY, i);
		}
		public List EXPIREDATE() { return getTokens(TSqlParser.EXPIREDATE); }
		public TerminalNode EXPIREDATE(int i) {
			return getToken(TSqlParser.EXPIREDATE, i);
		}
		public List RETAINDAYS() { return getTokens(TSqlParser.RETAINDAYS); }
		public TerminalNode RETAINDAYS(int i) {
			return getToken(TSqlParser.RETAINDAYS, i);
		}
		public List DECIMAL() { return getTokens(TSqlParser.DECIMAL); }
		public TerminalNode DECIMAL(int i) {
			return getToken(TSqlParser.DECIMAL, i);
		}
		public List NORECOVERY() { return getTokens(TSqlParser.NORECOVERY); }
		public TerminalNode NORECOVERY(int i) {
			return getToken(TSqlParser.NORECOVERY, i);
		}
		public List STANDBY() { return getTokens(TSqlParser.STANDBY); }
		public TerminalNode STANDBY(int i) {
			return getToken(TSqlParser.STANDBY, i);
		}
		public List ASYMMETRIC() { return getTokens(TSqlParser.ASYMMETRIC); }
		public TerminalNode ASYMMETRIC(int i) {
			return getToken(TSqlParser.ASYMMETRIC, i);
		}
		public List KEY() { return getTokens(TSqlParser.KEY); }
		public TerminalNode KEY(int i) {
			return getToken(TSqlParser.KEY, i);
		}
		public Backup_logContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_backup_log; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterBackup_log(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitBackup_log(this);
		}
	}

	public final Backup_logContext backup_log() throws RecognitionException {
		Backup_logContext _localctx = new Backup_logContext(_ctx, getState());
		enterRule(_localctx, 614, RULE_backup_log);
		int _la;
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			setState(7607);
			match(BACKUP);
			setState(7608);
			match(LOG);
			{
			setState(7609);
			((Backup_logContext)_localctx).database_name = id();
			}
			setState(7633);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,1043,_ctx) ) {
			case 1:
				{
				setState(7610);
				match(TO);
				setState(7615); 
				_errHandler.sync(this);
				_alt = 1;
				do {
					switch (_alt) {
					case 1:
						{
						{
						setState(7612);
						_errHandler.sync(this);
						_la = _input.LA(1);
						if (_la==COMMA) {
							{
							setState(7611);
							match(COMMA);
							}
						}

						setState(7614);
						((Backup_logContext)_localctx).logical_device_name = id();
						}
						}
						break;
					default:
						throw new NoViableAltException(this);
					}
					setState(7617); 
					_errHandler.sync(this);
					_alt = getInterpreter().adaptivePredict(_input,1039,_ctx);
				} while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER );
				}
				break;
			case 2:
				{
				setState(7619);
				match(TO);
				setState(7629); 
				_errHandler.sync(this);
				_la = _input.LA(1);
				do {
					{
					{
					setState(7621);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==COMMA) {
						{
						setState(7620);
						match(COMMA);
						}
					}

					setState(7623);
					_la = _input.LA(1);
					if ( !(_la==DISK || _la==TAPE || _la==URL) ) {
					_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					setState(7624);
					match(EQUAL);
					setState(7627);
					_errHandler.sync(this);
					switch (_input.LA(1)) {
					case STRING:
						{
						setState(7625);
						match(STRING);
						}
						break;
					case CALLED:
					case DATA_COMPRESSION:
					case EVENTDATA:
					case FILENAME:
					case FILLFACTOR:
					case FORCESEEK:
					case INIT:
					case KEY:
					case MASTER:
					case MAX_MEMORY:
					case OFFSETS:
					case PAGE:
					case PUBLIC:
					case R:
					case RAW:
					case RETURN:
					case RETURNS:
					case ROWCOUNT:
					case SAFETY:
					case SERVER:
					case SID:
					case SOURCE:
					case STATE:
					case START:
					case TARGET:
					case ABSOLUTE:
					case ACCENT_SENSITIVITY:
					case ACTION:
					case ACTIVATION:
					case ACTIVE:
					case ADDRESS:
					case AES_128:
					case AES_192:
					case AES_256:
					case AFFINITY:
					case AFTER:
					case AGGREGATE:
					case ALGORITHM:
					case ALLOW_ENCRYPTED_VALUE_MODIFICATIONS:
					case ALLOW_SNAPSHOT_ISOLATION:
					case ALLOWED:
					case ANSI_NULL_DEFAULT:
					case ANSI_NULLS:
					case ANSI_PADDING:
					case ANSI_WARNINGS:
					case APPLICATION_LOG:
					case APPLY:
					case ARITHABORT:
					case ASSEMBLY:
					case AUDIT:
					case AUDIT_GUID:
					case AUTO:
					case AUTO_CLEANUP:
					case AUTO_CLOSE:
					case AUTO_CREATE_STATISTICS:
					case AUTO_SHRINK:
					case AUTO_UPDATE_STATISTICS:
					case AUTO_UPDATE_STATISTICS_ASYNC:
					case AVAILABILITY:
					case AVG:
					case BACKUP_PRIORITY:
					case BEGIN_DIALOG:
					case BIGINT:
					case BINARY_BASE64:
					case BINARY_CHECKSUM:
					case BINDING:
					case BLOB_STORAGE:
					case BROKER:
					case BROKER_INSTANCE:
					case BULK_LOGGED:
					case CALLER:
					case CAP_CPU_PERCENT:
					case CAST:
					case CATALOG:
					case CATCH:
					case CHANGE_RETENTION:
					case CHANGE_TRACKING:
					case CHECKSUM:
					case CHECKSUM_AGG:
					case CLEANUP:
					case COLLECTION:
					case COLUMN_MASTER_KEY:
					case COMMITTED:
					case COMPATIBILITY_LEVEL:
					case CONCAT:
					case CONCAT_NULL_YIELDS_NULL:
					case CONTENT:
					case CONTROL:
					case COOKIE:
					case COUNT:
					case COUNT_BIG:
					case COUNTER:
					case CPU:
					case CREATE_NEW:
					case CREATION_DISPOSITION:
					case CREDENTIAL:
					case CRYPTOGRAPHIC:
					case CURSOR_CLOSE_ON_COMMIT:
					case CURSOR_DEFAULT:
					case DATE_CORRELATION_OPTIMIZATION:
					case DATEADD:
					case DATEDIFF:
					case DATENAME:
					case DATEPART:
					case DAYS:
					case DB_CHAINING:
					case DB_FAILOVER:
					case DECRYPTION:
					case DEFAULT_DOUBLE_QUOTE:
					case DEFAULT_FULLTEXT_LANGUAGE:
					case DEFAULT_LANGUAGE:
					case DELAY:
					case DELAYED_DURABILITY:
					case DELETED:
					case DENSE_RANK:
					case DEPENDENTS:
					case DES:
					case DESCRIPTION:
					case DESX:
					case DHCP:
					case DIALOG:
					case DIRECTORY_NAME:
					case DISABLE:
					case DISABLE_BROKER:
					case DISABLED:
					case DISK_DRIVE:
					case DOCUMENT:
					case DYNAMIC:
					case EMERGENCY:
					case EMPTY:
					case ENABLE:
					case ENABLE_BROKER:
					case ENCRYPTED_VALUE:
					case ENCRYPTION:
					case ENDPOINT_URL:
					case ERROR_BROKER_CONVERSATIONS:
					case EXCLUSIVE:
					case EXECUTABLE:
					case EXIST:
					case EXPAND:
					case EXPIRY_DATE:
					case EXPLICIT:
					case FAIL_OPERATION:
					case FAILOVER_MODE:
					case FAILURE:
					case FAILURE_CONDITION_LEVEL:
					case FAST:
					case FAST_FORWARD:
					case FILEGROUP:
					case FILEGROWTH:
					case FILEPATH:
					case FILESTREAM:
					case FILTER:
					case FIRST:
					case FIRST_VALUE:
					case FOLLOWING:
					case FORCE:
					case FORCE_FAILOVER_ALLOW_DATA_LOSS:
					case FORCED:
					case FORMAT:
					case FORWARD_ONLY:
					case FULLSCAN:
					case FULLTEXT:
					case GB:
					case GETDATE:
					case GETUTCDATE:
					case GLOBAL:
					case GO:
					case GROUP_MAX_REQUESTS:
					case GROUPING:
					case GROUPING_ID:
					case HADR:
					case HASH:
					case HEALTH_CHECK_TIMEOUT:
					case HIGH:
					case HONOR_BROKER_PRIORITY:
					case HOURS:
					case IDENTITY_VALUE:
					case IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX:
					case IMMEDIATE:
					case IMPERSONATE:
					case IMPORTANCE:
					case INCREMENTAL:
					case INITIATOR:
					case INPUT:
					case INSENSITIVE:
					case INSERTED:
					case INT:
					case IP:
					case ISOLATION:
					case KB:
					case KEEP:
					case KEEPFIXED:
					case KEY_SOURCE:
					case KEYS:
					case KEYSET:
					case LAG:
					case LAST:
					case LAST_VALUE:
					case LEAD:
					case LEVEL:
					case LIST:
					case LISTENER:
					case LISTENER_URL:
					case LOB_COMPACTION:
					case LOCAL:
					case LOCATION:
					case LOCK:
					case LOCK_ESCALATION:
					case LOGIN:
					case LOOP:
					case LOW:
					case MANUAL:
					case MARK:
					case MATERIALIZED:
					case MAX:
					case MAX_CPU_PERCENT:
					case MAX_DOP:
					case MAX_FILES:
					case MAX_IOPS_PER_VOLUME:
					case MAX_MEMORY_PERCENT:
					case MAX_PROCESSES:
					case MAX_QUEUE_READERS:
					case MAX_ROLLOVER_FILES:
					case MAXDOP:
					case MAXRECURSION:
					case MAXSIZE:
					case MB:
					case MEDIUM:
					case MEMORY_OPTIMIZED_DATA:
					case MESSAGE:
					case MIN:
					case MIN_ACTIVE_ROWVERSION:
					case MIN_CPU_PERCENT:
					case MIN_IOPS_PER_VOLUME:
					case MIN_MEMORY_PERCENT:
					case MINUTES:
					case MIRROR_ADDRESS:
					case MIXED_PAGE_ALLOCATION:
					case MODE:
					case MODIFY:
					case MOVE:
					case MULTI_USER:
					case NAME:
					case NESTED_TRIGGERS:
					case NEW_ACCOUNT:
					case NEW_BROKER:
					case NEW_PASSWORD:
					case NEXT:
					case NO:
					case NO_TRUNCATE:
					case NO_WAIT:
					case NOCOUNT:
					case NODES:
					case NOEXPAND:
					case NON_TRANSACTED_ACCESS:
					case NORECOMPUTE:
					case NORECOVERY:
					case NOWAIT:
					case NTILE:
					case NUMANODE:
					case NUMBER:
					case NUMERIC_ROUNDABORT:
					case OBJECT:
					case OFFLINE:
					case OFFSET:
					case OLD_ACCOUNT:
					case ONLINE:
					case ONLY:
					case OPEN_EXISTING:
					case OPTIMISTIC:
					case OPTIMIZE:
					case OUT:
					case OUTPUT:
					case OWNER:
					case PAGE_VERIFY:
					case PARAMETERIZATION:
					case PARTITION:
					case PARTITIONS:
					case PARTNER:
					case PATH:
					case POISON_MESSAGE_HANDLING:
					case POOL:
					case PORT:
					case PRECEDING:
					case PRIMARY_ROLE:
					case PRIOR:
					case PRIORITY:
					case PRIORITY_LEVEL:
					case PRIVATE:
					case PRIVATE_KEY:
					case PRIVILEGES:
					case PROCEDURE_NAME:
					case PROPERTY:
					case PROVIDER:
					case PROVIDER_KEY_NAME:
					case QUERY:
					case QUEUE:
					case QUEUE_DELAY:
					case QUOTED_IDENTIFIER:
					case RANGE:
					case RANK:
					case RC2:
					case RC4:
					case RC4_128:
					case READ_COMMITTED_SNAPSHOT:
					case READ_ONLY:
					case READ_ONLY_ROUTING_LIST:
					case READ_WRITE:
					case READONLY:
					case REBUILD:
					case RECEIVE:
					case RECOMPILE:
					case RECOVERY:
					case RECURSIVE_TRIGGERS:
					case RELATIVE:
					case REMOTE:
					case REMOTE_SERVICE_NAME:
					case REMOVE:
					case REORGANIZE:
					case REPEATABLE:
					case REPLICA:
					case REQUEST_MAX_CPU_TIME_SEC:
					case REQUEST_MAX_MEMORY_GRANT_PERCENT:
					case REQUEST_MEMORY_GRANT_TIMEOUT_SEC:
					case REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT:
					case RESERVE_DISK_SPACE:
					case RESOURCE:
					case RESOURCE_MANAGER_LOCATION:
					case RESTRICTED_USER:
					case RETENTION:
					case ROBUST:
					case ROOT:
					case ROUTE:
					case ROW:
					case ROW_NUMBER:
					case ROWGUID:
					case ROWS:
					case SAMPLE:
					case SCHEMABINDING:
					case SCOPED:
					case SCROLL:
					case SCROLL_LOCKS:
					case SEARCH:
					case SECONDARY:
					case SECONDARY_ONLY:
					case SECONDARY_ROLE:
					case SECONDS:
					case SECRET:
					case SECURITY_LOG:
					case SEEDING_MODE:
					case SELF:
					case SEMI_SENSITIVE:
					case SEND:
					case SENT:
					case SERIALIZABLE:
					case SESSION_TIMEOUT:
					case SETERROR:
					case SHARE:
					case SHOWPLAN:
					case SIGNATURE:
					case SIMPLE:
					case SINGLE_USER:
					case SIZE:
					case SMALLINT:
					case SNAPSHOT:
					case SPATIAL_WINDOW_MAX_CELLS:
					case STANDBY:
					case START_DATE:
					case STATIC:
					case STATS_STREAM:
					case STATUS:
					case STDEV:
					case STDEVP:
					case STOPLIST:
					case STUFF:
					case SUBJECT:
					case SUM:
					case SUSPEND:
					case SYMMETRIC:
					case SYNCHRONOUS_COMMIT:
					case SYNONYM:
					case TAKE:
					case TARGET_RECOVERY_TIME:
					case TB:
					case TEXTIMAGE_ON:
					case THROW:
					case TIES:
					case TIME:
					case TIMEOUT:
					case TIMER:
					case TINYINT:
					case TORN_PAGE_DETECTION:
					case TRANSFORM_NOISE_WORDS:
					case TRIPLE_DES:
					case TRIPLE_DES_3KEY:
					case TRUSTWORTHY:
					case TRY:
					case TSQL:
					case TWO_DIGIT_YEAR_CUTOFF:
					case TYPE:
					case TYPE_WARNING:
					case UNBOUNDED:
					case UNCOMMITTED:
					case UNKNOWN:
					case UNLIMITED:
					case USING:
					case VALID_XML:
					case VALIDATION:
					case VALUE:
					case VAR:
					case VARP:
					case VIEW_METADATA:
					case VIEWS:
					case WAIT:
					case WELL_FORMED_XML:
					case WORK:
					case WORKLOAD:
					case XML:
					case XMLNAMESPACES:
					case DOUBLE_QUOTE_ID:
					case SQUARE_BRACKET_ID:
					case ID:
						{
						setState(7626);
						id();
						}
						break;
					default:
						throw new NoViableAltException(this);
					}
					}
					}
					setState(7631); 
					_errHandler.sync(this);
					_la = _input.LA(1);
				} while ( _la==DISK || _la==TAPE || _la==URL || _la==COMMA );
				}
				break;
			}
			setState(7668);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,1051,_ctx) ) {
			case 1:
				{
				setState(7645); 
				_errHandler.sync(this);
				_la = _input.LA(1);
				do {
					{
					{
					setState(7635);
					match(MIRROR);
					setState(7636);
					match(TO);
					setState(7641); 
					_errHandler.sync(this);
					_alt = 1;
					do {
						switch (_alt) {
						case 1:
							{
							{
							setState(7638);
							_errHandler.sync(this);
							_la = _input.LA(1);
							if (_la==COMMA) {
								{
								setState(7637);
								match(COMMA);
								}
							}

							setState(7640);
							((Backup_logContext)_localctx).logical_device_name = id();
							}
							}
							break;
						default:
							throw new NoViableAltException(this);
						}
						setState(7643); 
						_errHandler.sync(this);
						_alt = getInterpreter().adaptivePredict(_input,1045,_ctx);
					} while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER );
					}
					}
					setState(7647); 
					_errHandler.sync(this);
					_la = _input.LA(1);
				} while ( _la==MIRROR );
				}
				break;
			case 2:
				{
				setState(7664); 
				_errHandler.sync(this);
				_la = _input.LA(1);
				do {
					{
					{
					setState(7649);
					match(MIRROR);
					setState(7650);
					match(TO);
					setState(7660); 
					_errHandler.sync(this);
					_la = _input.LA(1);
					do {
						{
						{
						setState(7652);
						_errHandler.sync(this);
						_la = _input.LA(1);
						if (_la==COMMA) {
							{
							setState(7651);
							match(COMMA);
							}
						}

						setState(7654);
						_la = _input.LA(1);
						if ( !(_la==DISK || _la==TAPE || _la==URL) ) {
						_errHandler.recoverInline(this);
						}
						else {
							if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
							_errHandler.reportMatch(this);
							consume();
						}
						setState(7655);
						match(EQUAL);
						setState(7658);
						_errHandler.sync(this);
						switch (_input.LA(1)) {
						case STRING:
							{
							setState(7656);
							match(STRING);
							}
							break;
						case CALLED:
						case DATA_COMPRESSION:
						case EVENTDATA:
						case FILENAME:
						case FILLFACTOR:
						case FORCESEEK:
						case INIT:
						case KEY:
						case MASTER:
						case MAX_MEMORY:
						case OFFSETS:
						case PAGE:
						case PUBLIC:
						case R:
						case RAW:
						case RETURN:
						case RETURNS:
						case ROWCOUNT:
						case SAFETY:
						case SERVER:
						case SID:
						case SOURCE:
						case STATE:
						case START:
						case TARGET:
						case ABSOLUTE:
						case ACCENT_SENSITIVITY:
						case ACTION:
						case ACTIVATION:
						case ACTIVE:
						case ADDRESS:
						case AES_128:
						case AES_192:
						case AES_256:
						case AFFINITY:
						case AFTER:
						case AGGREGATE:
						case ALGORITHM:
						case ALLOW_ENCRYPTED_VALUE_MODIFICATIONS:
						case ALLOW_SNAPSHOT_ISOLATION:
						case ALLOWED:
						case ANSI_NULL_DEFAULT:
						case ANSI_NULLS:
						case ANSI_PADDING:
						case ANSI_WARNINGS:
						case APPLICATION_LOG:
						case APPLY:
						case ARITHABORT:
						case ASSEMBLY:
						case AUDIT:
						case AUDIT_GUID:
						case AUTO:
						case AUTO_CLEANUP:
						case AUTO_CLOSE:
						case AUTO_CREATE_STATISTICS:
						case AUTO_SHRINK:
						case AUTO_UPDATE_STATISTICS:
						case AUTO_UPDATE_STATISTICS_ASYNC:
						case AVAILABILITY:
						case AVG:
						case BACKUP_PRIORITY:
						case BEGIN_DIALOG:
						case BIGINT:
						case BINARY_BASE64:
						case BINARY_CHECKSUM:
						case BINDING:
						case BLOB_STORAGE:
						case BROKER:
						case BROKER_INSTANCE:
						case BULK_LOGGED:
						case CALLER:
						case CAP_CPU_PERCENT:
						case CAST:
						case CATALOG:
						case CATCH:
						case CHANGE_RETENTION:
						case CHANGE_TRACKING:
						case CHECKSUM:
						case CHECKSUM_AGG:
						case CLEANUP:
						case COLLECTION:
						case COLUMN_MASTER_KEY:
						case COMMITTED:
						case COMPATIBILITY_LEVEL:
						case CONCAT:
						case CONCAT_NULL_YIELDS_NULL:
						case CONTENT:
						case CONTROL:
						case COOKIE:
						case COUNT:
						case COUNT_BIG:
						case COUNTER:
						case CPU:
						case CREATE_NEW:
						case CREATION_DISPOSITION:
						case CREDENTIAL:
						case CRYPTOGRAPHIC:
						case CURSOR_CLOSE_ON_COMMIT:
						case CURSOR_DEFAULT:
						case DATE_CORRELATION_OPTIMIZATION:
						case DATEADD:
						case DATEDIFF:
						case DATENAME:
						case DATEPART:
						case DAYS:
						case DB_CHAINING:
						case DB_FAILOVER:
						case DECRYPTION:
						case DEFAULT_DOUBLE_QUOTE:
						case DEFAULT_FULLTEXT_LANGUAGE:
						case DEFAULT_LANGUAGE:
						case DELAY:
						case DELAYED_DURABILITY:
						case DELETED:
						case DENSE_RANK:
						case DEPENDENTS:
						case DES:
						case DESCRIPTION:
						case DESX:
						case DHCP:
						case DIALOG:
						case DIRECTORY_NAME:
						case DISABLE:
						case DISABLE_BROKER:
						case DISABLED:
						case DISK_DRIVE:
						case DOCUMENT:
						case DYNAMIC:
						case EMERGENCY:
						case EMPTY:
						case ENABLE:
						case ENABLE_BROKER:
						case ENCRYPTED_VALUE:
						case ENCRYPTION:
						case ENDPOINT_URL:
						case ERROR_BROKER_CONVERSATIONS:
						case EXCLUSIVE:
						case EXECUTABLE:
						case EXIST:
						case EXPAND:
						case EXPIRY_DATE:
						case EXPLICIT:
						case FAIL_OPERATION:
						case FAILOVER_MODE:
						case FAILURE:
						case FAILURE_CONDITION_LEVEL:
						case FAST:
						case FAST_FORWARD:
						case FILEGROUP:
						case FILEGROWTH:
						case FILEPATH:
						case FILESTREAM:
						case FILTER:
						case FIRST:
						case FIRST_VALUE:
						case FOLLOWING:
						case FORCE:
						case FORCE_FAILOVER_ALLOW_DATA_LOSS:
						case FORCED:
						case FORMAT:
						case FORWARD_ONLY:
						case FULLSCAN:
						case FULLTEXT:
						case GB:
						case GETDATE:
						case GETUTCDATE:
						case GLOBAL:
						case GO:
						case GROUP_MAX_REQUESTS:
						case GROUPING:
						case GROUPING_ID:
						case HADR:
						case HASH:
						case HEALTH_CHECK_TIMEOUT:
						case HIGH:
						case HONOR_BROKER_PRIORITY:
						case HOURS:
						case IDENTITY_VALUE:
						case IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX:
						case IMMEDIATE:
						case IMPERSONATE:
						case IMPORTANCE:
						case INCREMENTAL:
						case INITIATOR:
						case INPUT:
						case INSENSITIVE:
						case INSERTED:
						case INT:
						case IP:
						case ISOLATION:
						case KB:
						case KEEP:
						case KEEPFIXED:
						case KEY_SOURCE:
						case KEYS:
						case KEYSET:
						case LAG:
						case LAST:
						case LAST_VALUE:
						case LEAD:
						case LEVEL:
						case LIST:
						case LISTENER:
						case LISTENER_URL:
						case LOB_COMPACTION:
						case LOCAL:
						case LOCATION:
						case LOCK:
						case LOCK_ESCALATION:
						case LOGIN:
						case LOOP:
						case LOW:
						case MANUAL:
						case MARK:
						case MATERIALIZED:
						case MAX:
						case MAX_CPU_PERCENT:
						case MAX_DOP:
						case MAX_FILES:
						case MAX_IOPS_PER_VOLUME:
						case MAX_MEMORY_PERCENT:
						case MAX_PROCESSES:
						case MAX_QUEUE_READERS:
						case MAX_ROLLOVER_FILES:
						case MAXDOP:
						case MAXRECURSION:
						case MAXSIZE:
						case MB:
						case MEDIUM:
						case MEMORY_OPTIMIZED_DATA:
						case MESSAGE:
						case MIN:
						case MIN_ACTIVE_ROWVERSION:
						case MIN_CPU_PERCENT:
						case MIN_IOPS_PER_VOLUME:
						case MIN_MEMORY_PERCENT:
						case MINUTES:
						case MIRROR_ADDRESS:
						case MIXED_PAGE_ALLOCATION:
						case MODE:
						case MODIFY:
						case MOVE:
						case MULTI_USER:
						case NAME:
						case NESTED_TRIGGERS:
						case NEW_ACCOUNT:
						case NEW_BROKER:
						case NEW_PASSWORD:
						case NEXT:
						case NO:
						case NO_TRUNCATE:
						case NO_WAIT:
						case NOCOUNT:
						case NODES:
						case NOEXPAND:
						case NON_TRANSACTED_ACCESS:
						case NORECOMPUTE:
						case NORECOVERY:
						case NOWAIT:
						case NTILE:
						case NUMANODE:
						case NUMBER:
						case NUMERIC_ROUNDABORT:
						case OBJECT:
						case OFFLINE:
						case OFFSET:
						case OLD_ACCOUNT:
						case ONLINE:
						case ONLY:
						case OPEN_EXISTING:
						case OPTIMISTIC:
						case OPTIMIZE:
						case OUT:
						case OUTPUT:
						case OWNER:
						case PAGE_VERIFY:
						case PARAMETERIZATION:
						case PARTITION:
						case PARTITIONS:
						case PARTNER:
						case PATH:
						case POISON_MESSAGE_HANDLING:
						case POOL:
						case PORT:
						case PRECEDING:
						case PRIMARY_ROLE:
						case PRIOR:
						case PRIORITY:
						case PRIORITY_LEVEL:
						case PRIVATE:
						case PRIVATE_KEY:
						case PRIVILEGES:
						case PROCEDURE_NAME:
						case PROPERTY:
						case PROVIDER:
						case PROVIDER_KEY_NAME:
						case QUERY:
						case QUEUE:
						case QUEUE_DELAY:
						case QUOTED_IDENTIFIER:
						case RANGE:
						case RANK:
						case RC2:
						case RC4:
						case RC4_128:
						case READ_COMMITTED_SNAPSHOT:
						case READ_ONLY:
						case READ_ONLY_ROUTING_LIST:
						case READ_WRITE:
						case READONLY:
						case REBUILD:
						case RECEIVE:
						case RECOMPILE:
						case RECOVERY:
						case RECURSIVE_TRIGGERS:
						case RELATIVE:
						case REMOTE:
						case REMOTE_SERVICE_NAME:
						case REMOVE:
						case REORGANIZE:
						case REPEATABLE:
						case REPLICA:
						case REQUEST_MAX_CPU_TIME_SEC:
						case REQUEST_MAX_MEMORY_GRANT_PERCENT:
						case REQUEST_MEMORY_GRANT_TIMEOUT_SEC:
						case REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT:
						case RESERVE_DISK_SPACE:
						case RESOURCE:
						case RESOURCE_MANAGER_LOCATION:
						case RESTRICTED_USER:
						case RETENTION:
						case ROBUST:
						case ROOT:
						case ROUTE:
						case ROW:
						case ROW_NUMBER:
						case ROWGUID:
						case ROWS:
						case SAMPLE:
						case SCHEMABINDING:
						case SCOPED:
						case SCROLL:
						case SCROLL_LOCKS:
						case SEARCH:
						case SECONDARY:
						case SECONDARY_ONLY:
						case SECONDARY_ROLE:
						case SECONDS:
						case SECRET:
						case SECURITY_LOG:
						case SEEDING_MODE:
						case SELF:
						case SEMI_SENSITIVE:
						case SEND:
						case SENT:
						case SERIALIZABLE:
						case SESSION_TIMEOUT:
						case SETERROR:
						case SHARE:
						case SHOWPLAN:
						case SIGNATURE:
						case SIMPLE:
						case SINGLE_USER:
						case SIZE:
						case SMALLINT:
						case SNAPSHOT:
						case SPATIAL_WINDOW_MAX_CELLS:
						case STANDBY:
						case START_DATE:
						case STATIC:
						case STATS_STREAM:
						case STATUS:
						case STDEV:
						case STDEVP:
						case STOPLIST:
						case STUFF:
						case SUBJECT:
						case SUM:
						case SUSPEND:
						case SYMMETRIC:
						case SYNCHRONOUS_COMMIT:
						case SYNONYM:
						case TAKE:
						case TARGET_RECOVERY_TIME:
						case TB:
						case TEXTIMAGE_ON:
						case THROW:
						case TIES:
						case TIME:
						case TIMEOUT:
						case TIMER:
						case TINYINT:
						case TORN_PAGE_DETECTION:
						case TRANSFORM_NOISE_WORDS:
						case TRIPLE_DES:
						case TRIPLE_DES_3KEY:
						case TRUSTWORTHY:
						case TRY:
						case TSQL:
						case TWO_DIGIT_YEAR_CUTOFF:
						case TYPE:
						case TYPE_WARNING:
						case UNBOUNDED:
						case UNCOMMITTED:
						case UNKNOWN:
						case UNLIMITED:
						case USING:
						case VALID_XML:
						case VALIDATION:
						case VALUE:
						case VAR:
						case VARP:
						case VIEW_METADATA:
						case VIEWS:
						case WAIT:
						case WELL_FORMED_XML:
						case WORK:
						case WORKLOAD:
						case XML:
						case XMLNAMESPACES:
						case DOUBLE_QUOTE_ID:
						case SQUARE_BRACKET_ID:
						case ID:
							{
							setState(7657);
							id();
							}
							break;
						default:
							throw new NoViableAltException(this);
						}
						}
						}
						setState(7662); 
						_errHandler.sync(this);
						_la = _input.LA(1);
					} while ( _la==DISK || _la==TAPE || _la==URL || _la==COMMA );
					}
					}
					setState(7666); 
					_errHandler.sync(this);
					_la = _input.LA(1);
				} while ( _la==MIRROR );
				}
				break;
			}
			setState(7843);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,1090,_ctx) ) {
			case 1:
				{
				setState(7670);
				match(WITH);
				setState(7840);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,1089,_ctx);
				while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
					if ( _alt==1 ) {
						{
						setState(7838);
						_errHandler.sync(this);
						switch ( getInterpreter().adaptivePredict(_input,1088,_ctx) ) {
						case 1:
							{
							setState(7672);
							_errHandler.sync(this);
							_la = _input.LA(1);
							if (_la==COMMA) {
								{
								setState(7671);
								match(COMMA);
								}
							}

							setState(7674);
							match(DIFFERENTIAL);
							}
							break;
						case 2:
							{
							setState(7676);
							_errHandler.sync(this);
							_la = _input.LA(1);
							if (_la==COMMA) {
								{
								setState(7675);
								match(COMMA);
								}
							}

							setState(7678);
							match(COPY_ONLY);
							}
							break;
						case 3:
							{
							setState(7680);
							_errHandler.sync(this);
							_la = _input.LA(1);
							if (_la==COMMA) {
								{
								setState(7679);
								match(COMMA);
								}
							}

							setState(7682);
							_la = _input.LA(1);
							if ( !(_la==COMPRESSION || _la==NO_COMPRESSION) ) {
							_errHandler.recoverInline(this);
							}
							else {
								if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
								_errHandler.reportMatch(this);
								consume();
							}
							}
							break;
						case 4:
							{
							setState(7684);
							_errHandler.sync(this);
							_la = _input.LA(1);
							if (_la==COMMA) {
								{
								setState(7683);
								match(COMMA);
								}
							}

							setState(7686);
							match(DESCRIPTION);
							setState(7687);
							match(EQUAL);
							setState(7690);
							_errHandler.sync(this);
							switch (_input.LA(1)) {
							case STRING:
								{
								setState(7688);
								match(STRING);
								}
								break;
							case CALLED:
							case DATA_COMPRESSION:
							case EVENTDATA:
							case FILENAME:
							case FILLFACTOR:
							case FORCESEEK:
							case INIT:
							case KEY:
							case MASTER:
							case MAX_MEMORY:
							case OFFSETS:
							case PAGE:
							case PUBLIC:
							case R:
							case RAW:
							case RETURN:
							case RETURNS:
							case ROWCOUNT:
							case SAFETY:
							case SERVER:
							case SID:
							case SOURCE:
							case STATE:
							case START:
							case TARGET:
							case ABSOLUTE:
							case ACCENT_SENSITIVITY:
							case ACTION:
							case ACTIVATION:
							case ACTIVE:
							case ADDRESS:
							case AES_128:
							case AES_192:
							case AES_256:
							case AFFINITY:
							case AFTER:
							case AGGREGATE:
							case ALGORITHM:
							case ALLOW_ENCRYPTED_VALUE_MODIFICATIONS:
							case ALLOW_SNAPSHOT_ISOLATION:
							case ALLOWED:
							case ANSI_NULL_DEFAULT:
							case ANSI_NULLS:
							case ANSI_PADDING:
							case ANSI_WARNINGS:
							case APPLICATION_LOG:
							case APPLY:
							case ARITHABORT:
							case ASSEMBLY:
							case AUDIT:
							case AUDIT_GUID:
							case AUTO:
							case AUTO_CLEANUP:
							case AUTO_CLOSE:
							case AUTO_CREATE_STATISTICS:
							case AUTO_SHRINK:
							case AUTO_UPDATE_STATISTICS:
							case AUTO_UPDATE_STATISTICS_ASYNC:
							case AVAILABILITY:
							case AVG:
							case BACKUP_PRIORITY:
							case BEGIN_DIALOG:
							case BIGINT:
							case BINARY_BASE64:
							case BINARY_CHECKSUM:
							case BINDING:
							case BLOB_STORAGE:
							case BROKER:
							case BROKER_INSTANCE:
							case BULK_LOGGED:
							case CALLER:
							case CAP_CPU_PERCENT:
							case CAST:
							case CATALOG:
							case CATCH:
							case CHANGE_RETENTION:
							case CHANGE_TRACKING:
							case CHECKSUM:
							case CHECKSUM_AGG:
							case CLEANUP:
							case COLLECTION:
							case COLUMN_MASTER_KEY:
							case COMMITTED:
							case COMPATIBILITY_LEVEL:
							case CONCAT:
							case CONCAT_NULL_YIELDS_NULL:
							case CONTENT:
							case CONTROL:
							case COOKIE:
							case COUNT:
							case COUNT_BIG:
							case COUNTER:
							case CPU:
							case CREATE_NEW:
							case CREATION_DISPOSITION:
							case CREDENTIAL:
							case CRYPTOGRAPHIC:
							case CURSOR_CLOSE_ON_COMMIT:
							case CURSOR_DEFAULT:
							case DATE_CORRELATION_OPTIMIZATION:
							case DATEADD:
							case DATEDIFF:
							case DATENAME:
							case DATEPART:
							case DAYS:
							case DB_CHAINING:
							case DB_FAILOVER:
							case DECRYPTION:
							case DEFAULT_DOUBLE_QUOTE:
							case DEFAULT_FULLTEXT_LANGUAGE:
							case DEFAULT_LANGUAGE:
							case DELAY:
							case DELAYED_DURABILITY:
							case DELETED:
							case DENSE_RANK:
							case DEPENDENTS:
							case DES:
							case DESCRIPTION:
							case DESX:
							case DHCP:
							case DIALOG:
							case DIRECTORY_NAME:
							case DISABLE:
							case DISABLE_BROKER:
							case DISABLED:
							case DISK_DRIVE:
							case DOCUMENT:
							case DYNAMIC:
							case EMERGENCY:
							case EMPTY:
							case ENABLE:
							case ENABLE_BROKER:
							case ENCRYPTED_VALUE:
							case ENCRYPTION:
							case ENDPOINT_URL:
							case ERROR_BROKER_CONVERSATIONS:
							case EXCLUSIVE:
							case EXECUTABLE:
							case EXIST:
							case EXPAND:
							case EXPIRY_DATE:
							case EXPLICIT:
							case FAIL_OPERATION:
							case FAILOVER_MODE:
							case FAILURE:
							case FAILURE_CONDITION_LEVEL:
							case FAST:
							case FAST_FORWARD:
							case FILEGROUP:
							case FILEGROWTH:
							case FILEPATH:
							case FILESTREAM:
							case FILTER:
							case FIRST:
							case FIRST_VALUE:
							case FOLLOWING:
							case FORCE:
							case FORCE_FAILOVER_ALLOW_DATA_LOSS:
							case FORCED:
							case FORMAT:
							case FORWARD_ONLY:
							case FULLSCAN:
							case FULLTEXT:
							case GB:
							case GETDATE:
							case GETUTCDATE:
							case GLOBAL:
							case GO:
							case GROUP_MAX_REQUESTS:
							case GROUPING:
							case GROUPING_ID:
							case HADR:
							case HASH:
							case HEALTH_CHECK_TIMEOUT:
							case HIGH:
							case HONOR_BROKER_PRIORITY:
							case HOURS:
							case IDENTITY_VALUE:
							case IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX:
							case IMMEDIATE:
							case IMPERSONATE:
							case IMPORTANCE:
							case INCREMENTAL:
							case INITIATOR:
							case INPUT:
							case INSENSITIVE:
							case INSERTED:
							case INT:
							case IP:
							case ISOLATION:
							case KB:
							case KEEP:
							case KEEPFIXED:
							case KEY_SOURCE:
							case KEYS:
							case KEYSET:
							case LAG:
							case LAST:
							case LAST_VALUE:
							case LEAD:
							case LEVEL:
							case LIST:
							case LISTENER:
							case LISTENER_URL:
							case LOB_COMPACTION:
							case LOCAL:
							case LOCATION:
							case LOCK:
							case LOCK_ESCALATION:
							case LOGIN:
							case LOOP:
							case LOW:
							case MANUAL:
							case MARK:
							case MATERIALIZED:
							case MAX:
							case MAX_CPU_PERCENT:
							case MAX_DOP:
							case MAX_FILES:
							case MAX_IOPS_PER_VOLUME:
							case MAX_MEMORY_PERCENT:
							case MAX_PROCESSES:
							case MAX_QUEUE_READERS:
							case MAX_ROLLOVER_FILES:
							case MAXDOP:
							case MAXRECURSION:
							case MAXSIZE:
							case MB:
							case MEDIUM:
							case MEMORY_OPTIMIZED_DATA:
							case MESSAGE:
							case MIN:
							case MIN_ACTIVE_ROWVERSION:
							case MIN_CPU_PERCENT:
							case MIN_IOPS_PER_VOLUME:
							case MIN_MEMORY_PERCENT:
							case MINUTES:
							case MIRROR_ADDRESS:
							case MIXED_PAGE_ALLOCATION:
							case MODE:
							case MODIFY:
							case MOVE:
							case MULTI_USER:
							case NAME:
							case NESTED_TRIGGERS:
							case NEW_ACCOUNT:
							case NEW_BROKER:
							case NEW_PASSWORD:
							case NEXT:
							case NO:
							case NO_TRUNCATE:
							case NO_WAIT:
							case NOCOUNT:
							case NODES:
							case NOEXPAND:
							case NON_TRANSACTED_ACCESS:
							case NORECOMPUTE:
							case NORECOVERY:
							case NOWAIT:
							case NTILE:
							case NUMANODE:
							case NUMBER:
							case NUMERIC_ROUNDABORT:
							case OBJECT:
							case OFFLINE:
							case OFFSET:
							case OLD_ACCOUNT:
							case ONLINE:
							case ONLY:
							case OPEN_EXISTING:
							case OPTIMISTIC:
							case OPTIMIZE:
							case OUT:
							case OUTPUT:
							case OWNER:
							case PAGE_VERIFY:
							case PARAMETERIZATION:
							case PARTITION:
							case PARTITIONS:
							case PARTNER:
							case PATH:
							case POISON_MESSAGE_HANDLING:
							case POOL:
							case PORT:
							case PRECEDING:
							case PRIMARY_ROLE:
							case PRIOR:
							case PRIORITY:
							case PRIORITY_LEVEL:
							case PRIVATE:
							case PRIVATE_KEY:
							case PRIVILEGES:
							case PROCEDURE_NAME:
							case PROPERTY:
							case PROVIDER:
							case PROVIDER_KEY_NAME:
							case QUERY:
							case QUEUE:
							case QUEUE_DELAY:
							case QUOTED_IDENTIFIER:
							case RANGE:
							case RANK:
							case RC2:
							case RC4:
							case RC4_128:
							case READ_COMMITTED_SNAPSHOT:
							case READ_ONLY:
							case READ_ONLY_ROUTING_LIST:
							case READ_WRITE:
							case READONLY:
							case REBUILD:
							case RECEIVE:
							case RECOMPILE:
							case RECOVERY:
							case RECURSIVE_TRIGGERS:
							case RELATIVE:
							case REMOTE:
							case REMOTE_SERVICE_NAME:
							case REMOVE:
							case REORGANIZE:
							case REPEATABLE:
							case REPLICA:
							case REQUEST_MAX_CPU_TIME_SEC:
							case REQUEST_MAX_MEMORY_GRANT_PERCENT:
							case REQUEST_MEMORY_GRANT_TIMEOUT_SEC:
							case REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT:
							case RESERVE_DISK_SPACE:
							case RESOURCE:
							case RESOURCE_MANAGER_LOCATION:
							case RESTRICTED_USER:
							case RETENTION:
							case ROBUST:
							case ROOT:
							case ROUTE:
							case ROW:
							case ROW_NUMBER:
							case ROWGUID:
							case ROWS:
							case SAMPLE:
							case SCHEMABINDING:
							case SCOPED:
							case SCROLL:
							case SCROLL_LOCKS:
							case SEARCH:
							case SECONDARY:
							case SECONDARY_ONLY:
							case SECONDARY_ROLE:
							case SECONDS:
							case SECRET:
							case SECURITY_LOG:
							case SEEDING_MODE:
							case SELF:
							case SEMI_SENSITIVE:
							case SEND:
							case SENT:
							case SERIALIZABLE:
							case SESSION_TIMEOUT:
							case SETERROR:
							case SHARE:
							case SHOWPLAN:
							case SIGNATURE:
							case SIMPLE:
							case SINGLE_USER:
							case SIZE:
							case SMALLINT:
							case SNAPSHOT:
							case SPATIAL_WINDOW_MAX_CELLS:
							case STANDBY:
							case START_DATE:
							case STATIC:
							case STATS_STREAM:
							case STATUS:
							case STDEV:
							case STDEVP:
							case STOPLIST:
							case STUFF:
							case SUBJECT:
							case SUM:
							case SUSPEND:
							case SYMMETRIC:
							case SYNCHRONOUS_COMMIT:
							case SYNONYM:
							case TAKE:
							case TARGET_RECOVERY_TIME:
							case TB:
							case TEXTIMAGE_ON:
							case THROW:
							case TIES:
							case TIME:
							case TIMEOUT:
							case TIMER:
							case TINYINT:
							case TORN_PAGE_DETECTION:
							case TRANSFORM_NOISE_WORDS:
							case TRIPLE_DES:
							case TRIPLE_DES_3KEY:
							case TRUSTWORTHY:
							case TRY:
							case TSQL:
							case TWO_DIGIT_YEAR_CUTOFF:
							case TYPE:
							case TYPE_WARNING:
							case UNBOUNDED:
							case UNCOMMITTED:
							case UNKNOWN:
							case UNLIMITED:
							case USING:
							case VALID_XML:
							case VALIDATION:
							case VALUE:
							case VAR:
							case VARP:
							case VIEW_METADATA:
							case VIEWS:
							case WAIT:
							case WELL_FORMED_XML:
							case WORK:
							case WORKLOAD:
							case XML:
							case XMLNAMESPACES:
							case DOUBLE_QUOTE_ID:
							case SQUARE_BRACKET_ID:
							case ID:
								{
								setState(7689);
								id();
								}
								break;
							default:
								throw new NoViableAltException(this);
							}
							}
							break;
						case 5:
							{
							setState(7693);
							_errHandler.sync(this);
							_la = _input.LA(1);
							if (_la==COMMA) {
								{
								setState(7692);
								match(COMMA);
								}
							}

							setState(7695);
							match(NAME);
							setState(7696);
							match(EQUAL);
							setState(7697);
							((Backup_logContext)_localctx).backup_set_name = id();
							}
							break;
						case 6:
							{
							setState(7699);
							_errHandler.sync(this);
							_la = _input.LA(1);
							if (_la==COMMA) {
								{
								setState(7698);
								match(COMMA);
								}
							}

							setState(7701);
							match(CREDENTIAL);
							}
							break;
						case 7:
							{
							setState(7703);
							_errHandler.sync(this);
							_la = _input.LA(1);
							if (_la==COMMA) {
								{
								setState(7702);
								match(COMMA);
								}
							}

							setState(7705);
							match(FILE_SNAPSHOT);
							}
							break;
						case 8:
							{
							setState(7707);
							_errHandler.sync(this);
							_la = _input.LA(1);
							if (_la==COMMA) {
								{
								setState(7706);
								match(COMMA);
								}
							}

							setState(7721);
							_errHandler.sync(this);
							switch (_input.LA(1)) {
							case EXPIREDATE:
								{
								setState(7709);
								match(EXPIREDATE);
								setState(7710);
								match(EQUAL);
								setState(7713);
								_errHandler.sync(this);
								switch (_input.LA(1)) {
								case STRING:
									{
									setState(7711);
									match(STRING);
									}
									break;
								case CALLED:
								case DATA_COMPRESSION:
								case EVENTDATA:
								case FILENAME:
								case FILLFACTOR:
								case FORCESEEK:
								case INIT:
								case KEY:
								case MASTER:
								case MAX_MEMORY:
								case OFFSETS:
								case PAGE:
								case PUBLIC:
								case R:
								case RAW:
								case RETURN:
								case RETURNS:
								case ROWCOUNT:
								case SAFETY:
								case SERVER:
								case SID:
								case SOURCE:
								case STATE:
								case START:
								case TARGET:
								case ABSOLUTE:
								case ACCENT_SENSITIVITY:
								case ACTION:
								case ACTIVATION:
								case ACTIVE:
								case ADDRESS:
								case AES_128:
								case AES_192:
								case AES_256:
								case AFFINITY:
								case AFTER:
								case AGGREGATE:
								case ALGORITHM:
								case ALLOW_ENCRYPTED_VALUE_MODIFICATIONS:
								case ALLOW_SNAPSHOT_ISOLATION:
								case ALLOWED:
								case ANSI_NULL_DEFAULT:
								case ANSI_NULLS:
								case ANSI_PADDING:
								case ANSI_WARNINGS:
								case APPLICATION_LOG:
								case APPLY:
								case ARITHABORT:
								case ASSEMBLY:
								case AUDIT:
								case AUDIT_GUID:
								case AUTO:
								case AUTO_CLEANUP:
								case AUTO_CLOSE:
								case AUTO_CREATE_STATISTICS:
								case AUTO_SHRINK:
								case AUTO_UPDATE_STATISTICS:
								case AUTO_UPDATE_STATISTICS_ASYNC:
								case AVAILABILITY:
								case AVG:
								case BACKUP_PRIORITY:
								case BEGIN_DIALOG:
								case BIGINT:
								case BINARY_BASE64:
								case BINARY_CHECKSUM:
								case BINDING:
								case BLOB_STORAGE:
								case BROKER:
								case BROKER_INSTANCE:
								case BULK_LOGGED:
								case CALLER:
								case CAP_CPU_PERCENT:
								case CAST:
								case CATALOG:
								case CATCH:
								case CHANGE_RETENTION:
								case CHANGE_TRACKING:
								case CHECKSUM:
								case CHECKSUM_AGG:
								case CLEANUP:
								case COLLECTION:
								case COLUMN_MASTER_KEY:
								case COMMITTED:
								case COMPATIBILITY_LEVEL:
								case CONCAT:
								case CONCAT_NULL_YIELDS_NULL:
								case CONTENT:
								case CONTROL:
								case COOKIE:
								case COUNT:
								case COUNT_BIG:
								case COUNTER:
								case CPU:
								case CREATE_NEW:
								case CREATION_DISPOSITION:
								case CREDENTIAL:
								case CRYPTOGRAPHIC:
								case CURSOR_CLOSE_ON_COMMIT:
								case CURSOR_DEFAULT:
								case DATE_CORRELATION_OPTIMIZATION:
								case DATEADD:
								case DATEDIFF:
								case DATENAME:
								case DATEPART:
								case DAYS:
								case DB_CHAINING:
								case DB_FAILOVER:
								case DECRYPTION:
								case DEFAULT_DOUBLE_QUOTE:
								case DEFAULT_FULLTEXT_LANGUAGE:
								case DEFAULT_LANGUAGE:
								case DELAY:
								case DELAYED_DURABILITY:
								case DELETED:
								case DENSE_RANK:
								case DEPENDENTS:
								case DES:
								case DESCRIPTION:
								case DESX:
								case DHCP:
								case DIALOG:
								case DIRECTORY_NAME:
								case DISABLE:
								case DISABLE_BROKER:
								case DISABLED:
								case DISK_DRIVE:
								case DOCUMENT:
								case DYNAMIC:
								case EMERGENCY:
								case EMPTY:
								case ENABLE:
								case ENABLE_BROKER:
								case ENCRYPTED_VALUE:
								case ENCRYPTION:
								case ENDPOINT_URL:
								case ERROR_BROKER_CONVERSATIONS:
								case EXCLUSIVE:
								case EXECUTABLE:
								case EXIST:
								case EXPAND:
								case EXPIRY_DATE:
								case EXPLICIT:
								case FAIL_OPERATION:
								case FAILOVER_MODE:
								case FAILURE:
								case FAILURE_CONDITION_LEVEL:
								case FAST:
								case FAST_FORWARD:
								case FILEGROUP:
								case FILEGROWTH:
								case FILEPATH:
								case FILESTREAM:
								case FILTER:
								case FIRST:
								case FIRST_VALUE:
								case FOLLOWING:
								case FORCE:
								case FORCE_FAILOVER_ALLOW_DATA_LOSS:
								case FORCED:
								case FORMAT:
								case FORWARD_ONLY:
								case FULLSCAN:
								case FULLTEXT:
								case GB:
								case GETDATE:
								case GETUTCDATE:
								case GLOBAL:
								case GO:
								case GROUP_MAX_REQUESTS:
								case GROUPING:
								case GROUPING_ID:
								case HADR:
								case HASH:
								case HEALTH_CHECK_TIMEOUT:
								case HIGH:
								case HONOR_BROKER_PRIORITY:
								case HOURS:
								case IDENTITY_VALUE:
								case IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX:
								case IMMEDIATE:
								case IMPERSONATE:
								case IMPORTANCE:
								case INCREMENTAL:
								case INITIATOR:
								case INPUT:
								case INSENSITIVE:
								case INSERTED:
								case INT:
								case IP:
								case ISOLATION:
								case KB:
								case KEEP:
								case KEEPFIXED:
								case KEY_SOURCE:
								case KEYS:
								case KEYSET:
								case LAG:
								case LAST:
								case LAST_VALUE:
								case LEAD:
								case LEVEL:
								case LIST:
								case LISTENER:
								case LISTENER_URL:
								case LOB_COMPACTION:
								case LOCAL:
								case LOCATION:
								case LOCK:
								case LOCK_ESCALATION:
								case LOGIN:
								case LOOP:
								case LOW:
								case MANUAL:
								case MARK:
								case MATERIALIZED:
								case MAX:
								case MAX_CPU_PERCENT:
								case MAX_DOP:
								case MAX_FILES:
								case MAX_IOPS_PER_VOLUME:
								case MAX_MEMORY_PERCENT:
								case MAX_PROCESSES:
								case MAX_QUEUE_READERS:
								case MAX_ROLLOVER_FILES:
								case MAXDOP:
								case MAXRECURSION:
								case MAXSIZE:
								case MB:
								case MEDIUM:
								case MEMORY_OPTIMIZED_DATA:
								case MESSAGE:
								case MIN:
								case MIN_ACTIVE_ROWVERSION:
								case MIN_CPU_PERCENT:
								case MIN_IOPS_PER_VOLUME:
								case MIN_MEMORY_PERCENT:
								case MINUTES:
								case MIRROR_ADDRESS:
								case MIXED_PAGE_ALLOCATION:
								case MODE:
								case MODIFY:
								case MOVE:
								case MULTI_USER:
								case NAME:
								case NESTED_TRIGGERS:
								case NEW_ACCOUNT:
								case NEW_BROKER:
								case NEW_PASSWORD:
								case NEXT:
								case NO:
								case NO_TRUNCATE:
								case NO_WAIT:
								case NOCOUNT:
								case NODES:
								case NOEXPAND:
								case NON_TRANSACTED_ACCESS:
								case NORECOMPUTE:
								case NORECOVERY:
								case NOWAIT:
								case NTILE:
								case NUMANODE:
								case NUMBER:
								case NUMERIC_ROUNDABORT:
								case OBJECT:
								case OFFLINE:
								case OFFSET:
								case OLD_ACCOUNT:
								case ONLINE:
								case ONLY:
								case OPEN_EXISTING:
								case OPTIMISTIC:
								case OPTIMIZE:
								case OUT:
								case OUTPUT:
								case OWNER:
								case PAGE_VERIFY:
								case PARAMETERIZATION:
								case PARTITION:
								case PARTITIONS:
								case PARTNER:
								case PATH:
								case POISON_MESSAGE_HANDLING:
								case POOL:
								case PORT:
								case PRECEDING:
								case PRIMARY_ROLE:
								case PRIOR:
								case PRIORITY:
								case PRIORITY_LEVEL:
								case PRIVATE:
								case PRIVATE_KEY:
								case PRIVILEGES:
								case PROCEDURE_NAME:
								case PROPERTY:
								case PROVIDER:
								case PROVIDER_KEY_NAME:
								case QUERY:
								case QUEUE:
								case QUEUE_DELAY:
								case QUOTED_IDENTIFIER:
								case RANGE:
								case RANK:
								case RC2:
								case RC4:
								case RC4_128:
								case READ_COMMITTED_SNAPSHOT:
								case READ_ONLY:
								case READ_ONLY_ROUTING_LIST:
								case READ_WRITE:
								case READONLY:
								case REBUILD:
								case RECEIVE:
								case RECOMPILE:
								case RECOVERY:
								case RECURSIVE_TRIGGERS:
								case RELATIVE:
								case REMOTE:
								case REMOTE_SERVICE_NAME:
								case REMOVE:
								case REORGANIZE:
								case REPEATABLE:
								case REPLICA:
								case REQUEST_MAX_CPU_TIME_SEC:
								case REQUEST_MAX_MEMORY_GRANT_PERCENT:
								case REQUEST_MEMORY_GRANT_TIMEOUT_SEC:
								case REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT:
								case RESERVE_DISK_SPACE:
								case RESOURCE:
								case RESOURCE_MANAGER_LOCATION:
								case RESTRICTED_USER:
								case RETENTION:
								case ROBUST:
								case ROOT:
								case ROUTE:
								case ROW:
								case ROW_NUMBER:
								case ROWGUID:
								case ROWS:
								case SAMPLE:
								case SCHEMABINDING:
								case SCOPED:
								case SCROLL:
								case SCROLL_LOCKS:
								case SEARCH:
								case SECONDARY:
								case SECONDARY_ONLY:
								case SECONDARY_ROLE:
								case SECONDS:
								case SECRET:
								case SECURITY_LOG:
								case SEEDING_MODE:
								case SELF:
								case SEMI_SENSITIVE:
								case SEND:
								case SENT:
								case SERIALIZABLE:
								case SESSION_TIMEOUT:
								case SETERROR:
								case SHARE:
								case SHOWPLAN:
								case SIGNATURE:
								case SIMPLE:
								case SINGLE_USER:
								case SIZE:
								case SMALLINT:
								case SNAPSHOT:
								case SPATIAL_WINDOW_MAX_CELLS:
								case STANDBY:
								case START_DATE:
								case STATIC:
								case STATS_STREAM:
								case STATUS:
								case STDEV:
								case STDEVP:
								case STOPLIST:
								case STUFF:
								case SUBJECT:
								case SUM:
								case SUSPEND:
								case SYMMETRIC:
								case SYNCHRONOUS_COMMIT:
								case SYNONYM:
								case TAKE:
								case TARGET_RECOVERY_TIME:
								case TB:
								case TEXTIMAGE_ON:
								case THROW:
								case TIES:
								case TIME:
								case TIMEOUT:
								case TIMER:
								case TINYINT:
								case TORN_PAGE_DETECTION:
								case TRANSFORM_NOISE_WORDS:
								case TRIPLE_DES:
								case TRIPLE_DES_3KEY:
								case TRUSTWORTHY:
								case TRY:
								case TSQL:
								case TWO_DIGIT_YEAR_CUTOFF:
								case TYPE:
								case TYPE_WARNING:
								case UNBOUNDED:
								case UNCOMMITTED:
								case UNKNOWN:
								case UNLIMITED:
								case USING:
								case VALID_XML:
								case VALIDATION:
								case VALUE:
								case VAR:
								case VARP:
								case VIEW_METADATA:
								case VIEWS:
								case WAIT:
								case WELL_FORMED_XML:
								case WORK:
								case WORKLOAD:
								case XML:
								case XMLNAMESPACES:
								case DOUBLE_QUOTE_ID:
								case SQUARE_BRACKET_ID:
								case ID:
									{
									setState(7712);
									id();
									}
									break;
								default:
									throw new NoViableAltException(this);
								}
								}
								break;
							case RETAINDAYS:
								{
								setState(7715);
								match(RETAINDAYS);
								setState(7716);
								match(EQUAL);
								setState(7719);
								_errHandler.sync(this);
								switch (_input.LA(1)) {
								case DECIMAL:
									{
									setState(7717);
									match(DECIMAL);
									}
									break;
								case CALLED:
								case DATA_COMPRESSION:
								case EVENTDATA:
								case FILENAME:
								case FILLFACTOR:
								case FORCESEEK:
								case INIT:
								case KEY:
								case MASTER:
								case MAX_MEMORY:
								case OFFSETS:
								case PAGE:
								case PUBLIC:
								case R:
								case RAW:
								case RETURN:
								case RETURNS:
								case ROWCOUNT:
								case SAFETY:
								case SERVER:
								case SID:
								case SOURCE:
								case STATE:
								case START:
								case TARGET:
								case ABSOLUTE:
								case ACCENT_SENSITIVITY:
								case ACTION:
								case ACTIVATION:
								case ACTIVE:
								case ADDRESS:
								case AES_128:
								case AES_192:
								case AES_256:
								case AFFINITY:
								case AFTER:
								case AGGREGATE:
								case ALGORITHM:
								case ALLOW_ENCRYPTED_VALUE_MODIFICATIONS:
								case ALLOW_SNAPSHOT_ISOLATION:
								case ALLOWED:
								case ANSI_NULL_DEFAULT:
								case ANSI_NULLS:
								case ANSI_PADDING:
								case ANSI_WARNINGS:
								case APPLICATION_LOG:
								case APPLY:
								case ARITHABORT:
								case ASSEMBLY:
								case AUDIT:
								case AUDIT_GUID:
								case AUTO:
								case AUTO_CLEANUP:
								case AUTO_CLOSE:
								case AUTO_CREATE_STATISTICS:
								case AUTO_SHRINK:
								case AUTO_UPDATE_STATISTICS:
								case AUTO_UPDATE_STATISTICS_ASYNC:
								case AVAILABILITY:
								case AVG:
								case BACKUP_PRIORITY:
								case BEGIN_DIALOG:
								case BIGINT:
								case BINARY_BASE64:
								case BINARY_CHECKSUM:
								case BINDING:
								case BLOB_STORAGE:
								case BROKER:
								case BROKER_INSTANCE:
								case BULK_LOGGED:
								case CALLER:
								case CAP_CPU_PERCENT:
								case CAST:
								case CATALOG:
								case CATCH:
								case CHANGE_RETENTION:
								case CHANGE_TRACKING:
								case CHECKSUM:
								case CHECKSUM_AGG:
								case CLEANUP:
								case COLLECTION:
								case COLUMN_MASTER_KEY:
								case COMMITTED:
								case COMPATIBILITY_LEVEL:
								case CONCAT:
								case CONCAT_NULL_YIELDS_NULL:
								case CONTENT:
								case CONTROL:
								case COOKIE:
								case COUNT:
								case COUNT_BIG:
								case COUNTER:
								case CPU:
								case CREATE_NEW:
								case CREATION_DISPOSITION:
								case CREDENTIAL:
								case CRYPTOGRAPHIC:
								case CURSOR_CLOSE_ON_COMMIT:
								case CURSOR_DEFAULT:
								case DATE_CORRELATION_OPTIMIZATION:
								case DATEADD:
								case DATEDIFF:
								case DATENAME:
								case DATEPART:
								case DAYS:
								case DB_CHAINING:
								case DB_FAILOVER:
								case DECRYPTION:
								case DEFAULT_DOUBLE_QUOTE:
								case DEFAULT_FULLTEXT_LANGUAGE:
								case DEFAULT_LANGUAGE:
								case DELAY:
								case DELAYED_DURABILITY:
								case DELETED:
								case DENSE_RANK:
								case DEPENDENTS:
								case DES:
								case DESCRIPTION:
								case DESX:
								case DHCP:
								case DIALOG:
								case DIRECTORY_NAME:
								case DISABLE:
								case DISABLE_BROKER:
								case DISABLED:
								case DISK_DRIVE:
								case DOCUMENT:
								case DYNAMIC:
								case EMERGENCY:
								case EMPTY:
								case ENABLE:
								case ENABLE_BROKER:
								case ENCRYPTED_VALUE:
								case ENCRYPTION:
								case ENDPOINT_URL:
								case ERROR_BROKER_CONVERSATIONS:
								case EXCLUSIVE:
								case EXECUTABLE:
								case EXIST:
								case EXPAND:
								case EXPIRY_DATE:
								case EXPLICIT:
								case FAIL_OPERATION:
								case FAILOVER_MODE:
								case FAILURE:
								case FAILURE_CONDITION_LEVEL:
								case FAST:
								case FAST_FORWARD:
								case FILEGROUP:
								case FILEGROWTH:
								case FILEPATH:
								case FILESTREAM:
								case FILTER:
								case FIRST:
								case FIRST_VALUE:
								case FOLLOWING:
								case FORCE:
								case FORCE_FAILOVER_ALLOW_DATA_LOSS:
								case FORCED:
								case FORMAT:
								case FORWARD_ONLY:
								case FULLSCAN:
								case FULLTEXT:
								case GB:
								case GETDATE:
								case GETUTCDATE:
								case GLOBAL:
								case GO:
								case GROUP_MAX_REQUESTS:
								case GROUPING:
								case GROUPING_ID:
								case HADR:
								case HASH:
								case HEALTH_CHECK_TIMEOUT:
								case HIGH:
								case HONOR_BROKER_PRIORITY:
								case HOURS:
								case IDENTITY_VALUE:
								case IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX:
								case IMMEDIATE:
								case IMPERSONATE:
								case IMPORTANCE:
								case INCREMENTAL:
								case INITIATOR:
								case INPUT:
								case INSENSITIVE:
								case INSERTED:
								case INT:
								case IP:
								case ISOLATION:
								case KB:
								case KEEP:
								case KEEPFIXED:
								case KEY_SOURCE:
								case KEYS:
								case KEYSET:
								case LAG:
								case LAST:
								case LAST_VALUE:
								case LEAD:
								case LEVEL:
								case LIST:
								case LISTENER:
								case LISTENER_URL:
								case LOB_COMPACTION:
								case LOCAL:
								case LOCATION:
								case LOCK:
								case LOCK_ESCALATION:
								case LOGIN:
								case LOOP:
								case LOW:
								case MANUAL:
								case MARK:
								case MATERIALIZED:
								case MAX:
								case MAX_CPU_PERCENT:
								case MAX_DOP:
								case MAX_FILES:
								case MAX_IOPS_PER_VOLUME:
								case MAX_MEMORY_PERCENT:
								case MAX_PROCESSES:
								case MAX_QUEUE_READERS:
								case MAX_ROLLOVER_FILES:
								case MAXDOP:
								case MAXRECURSION:
								case MAXSIZE:
								case MB:
								case MEDIUM:
								case MEMORY_OPTIMIZED_DATA:
								case MESSAGE:
								case MIN:
								case MIN_ACTIVE_ROWVERSION:
								case MIN_CPU_PERCENT:
								case MIN_IOPS_PER_VOLUME:
								case MIN_MEMORY_PERCENT:
								case MINUTES:
								case MIRROR_ADDRESS:
								case MIXED_PAGE_ALLOCATION:
								case MODE:
								case MODIFY:
								case MOVE:
								case MULTI_USER:
								case NAME:
								case NESTED_TRIGGERS:
								case NEW_ACCOUNT:
								case NEW_BROKER:
								case NEW_PASSWORD:
								case NEXT:
								case NO:
								case NO_TRUNCATE:
								case NO_WAIT:
								case NOCOUNT:
								case NODES:
								case NOEXPAND:
								case NON_TRANSACTED_ACCESS:
								case NORECOMPUTE:
								case NORECOVERY:
								case NOWAIT:
								case NTILE:
								case NUMANODE:
								case NUMBER:
								case NUMERIC_ROUNDABORT:
								case OBJECT:
								case OFFLINE:
								case OFFSET:
								case OLD_ACCOUNT:
								case ONLINE:
								case ONLY:
								case OPEN_EXISTING:
								case OPTIMISTIC:
								case OPTIMIZE:
								case OUT:
								case OUTPUT:
								case OWNER:
								case PAGE_VERIFY:
								case PARAMETERIZATION:
								case PARTITION:
								case PARTITIONS:
								case PARTNER:
								case PATH:
								case POISON_MESSAGE_HANDLING:
								case POOL:
								case PORT:
								case PRECEDING:
								case PRIMARY_ROLE:
								case PRIOR:
								case PRIORITY:
								case PRIORITY_LEVEL:
								case PRIVATE:
								case PRIVATE_KEY:
								case PRIVILEGES:
								case PROCEDURE_NAME:
								case PROPERTY:
								case PROVIDER:
								case PROVIDER_KEY_NAME:
								case QUERY:
								case QUEUE:
								case QUEUE_DELAY:
								case QUOTED_IDENTIFIER:
								case RANGE:
								case RANK:
								case RC2:
								case RC4:
								case RC4_128:
								case READ_COMMITTED_SNAPSHOT:
								case READ_ONLY:
								case READ_ONLY_ROUTING_LIST:
								case READ_WRITE:
								case READONLY:
								case REBUILD:
								case RECEIVE:
								case RECOMPILE:
								case RECOVERY:
								case RECURSIVE_TRIGGERS:
								case RELATIVE:
								case REMOTE:
								case REMOTE_SERVICE_NAME:
								case REMOVE:
								case REORGANIZE:
								case REPEATABLE:
								case REPLICA:
								case REQUEST_MAX_CPU_TIME_SEC:
								case REQUEST_MAX_MEMORY_GRANT_PERCENT:
								case REQUEST_MEMORY_GRANT_TIMEOUT_SEC:
								case REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT:
								case RESERVE_DISK_SPACE:
								case RESOURCE:
								case RESOURCE_MANAGER_LOCATION:
								case RESTRICTED_USER:
								case RETENTION:
								case ROBUST:
								case ROOT:
								case ROUTE:
								case ROW:
								case ROW_NUMBER:
								case ROWGUID:
								case ROWS:
								case SAMPLE:
								case SCHEMABINDING:
								case SCOPED:
								case SCROLL:
								case SCROLL_LOCKS:
								case SEARCH:
								case SECONDARY:
								case SECONDARY_ONLY:
								case SECONDARY_ROLE:
								case SECONDS:
								case SECRET:
								case SECURITY_LOG:
								case SEEDING_MODE:
								case SELF:
								case SEMI_SENSITIVE:
								case SEND:
								case SENT:
								case SERIALIZABLE:
								case SESSION_TIMEOUT:
								case SETERROR:
								case SHARE:
								case SHOWPLAN:
								case SIGNATURE:
								case SIMPLE:
								case SINGLE_USER:
								case SIZE:
								case SMALLINT:
								case SNAPSHOT:
								case SPATIAL_WINDOW_MAX_CELLS:
								case STANDBY:
								case START_DATE:
								case STATIC:
								case STATS_STREAM:
								case STATUS:
								case STDEV:
								case STDEVP:
								case STOPLIST:
								case STUFF:
								case SUBJECT:
								case SUM:
								case SUSPEND:
								case SYMMETRIC:
								case SYNCHRONOUS_COMMIT:
								case SYNONYM:
								case TAKE:
								case TARGET_RECOVERY_TIME:
								case TB:
								case TEXTIMAGE_ON:
								case THROW:
								case TIES:
								case TIME:
								case TIMEOUT:
								case TIMER:
								case TINYINT:
								case TORN_PAGE_DETECTION:
								case TRANSFORM_NOISE_WORDS:
								case TRIPLE_DES:
								case TRIPLE_DES_3KEY:
								case TRUSTWORTHY:
								case TRY:
								case TSQL:
								case TWO_DIGIT_YEAR_CUTOFF:
								case TYPE:
								case TYPE_WARNING:
								case UNBOUNDED:
								case UNCOMMITTED:
								case UNKNOWN:
								case UNLIMITED:
								case USING:
								case VALID_XML:
								case VALIDATION:
								case VALUE:
								case VAR:
								case VARP:
								case VIEW_METADATA:
								case VIEWS:
								case WAIT:
								case WELL_FORMED_XML:
								case WORK:
								case WORKLOAD:
								case XML:
								case XMLNAMESPACES:
								case DOUBLE_QUOTE_ID:
								case SQUARE_BRACKET_ID:
								case ID:
									{
									setState(7718);
									id();
									}
									break;
								default:
									throw new NoViableAltException(this);
								}
								}
								break;
							default:
								throw new NoViableAltException(this);
							}
							}
							break;
						case 9:
							{
							setState(7724);
							_errHandler.sync(this);
							_la = _input.LA(1);
							if (_la==COMMA) {
								{
								setState(7723);
								match(COMMA);
								}
							}

							setState(7726);
							_la = _input.LA(1);
							if ( !(_la==INIT || _la==NOINIT) ) {
							_errHandler.recoverInline(this);
							}
							else {
								if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
								_errHandler.reportMatch(this);
								consume();
							}
							}
							break;
						case 10:
							{
							setState(7728);
							_errHandler.sync(this);
							_la = _input.LA(1);
							if (_la==COMMA) {
								{
								setState(7727);
								match(COMMA);
								}
							}

							setState(7730);
							_la = _input.LA(1);
							if ( !(_la==NOSKIP || _la==SKIP_KEYWORD) ) {
							_errHandler.recoverInline(this);
							}
							else {
								if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
								_errHandler.reportMatch(this);
								consume();
							}
							}
							break;
						case 11:
							{
							setState(7732);
							_errHandler.sync(this);
							_la = _input.LA(1);
							if (_la==COMMA) {
								{
								setState(7731);
								match(COMMA);
								}
							}

							setState(7734);
							_la = _input.LA(1);
							if ( !(_la==NOFORMAT || _la==FORMAT) ) {
							_errHandler.recoverInline(this);
							}
							else {
								if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
								_errHandler.reportMatch(this);
								consume();
							}
							}
							break;
						case 12:
							{
							setState(7736);
							_errHandler.sync(this);
							_la = _input.LA(1);
							if (_la==COMMA) {
								{
								setState(7735);
								match(COMMA);
								}
							}

							setState(7738);
							match(MEDIADESCRIPTION);
							setState(7739);
							match(EQUAL);
							setState(7742);
							_errHandler.sync(this);
							switch (_input.LA(1)) {
							case STRING:
								{
								setState(7740);
								match(STRING);
								}
								break;
							case CALLED:
							case DATA_COMPRESSION:
							case EVENTDATA:
							case FILENAME:
							case FILLFACTOR:
							case FORCESEEK:
							case INIT:
							case KEY:
							case MASTER:
							case MAX_MEMORY:
							case OFFSETS:
							case PAGE:
							case PUBLIC:
							case R:
							case RAW:
							case RETURN:
							case RETURNS:
							case ROWCOUNT:
							case SAFETY:
							case SERVER:
							case SID:
							case SOURCE:
							case STATE:
							case START:
							case TARGET:
							case ABSOLUTE:
							case ACCENT_SENSITIVITY:
							case ACTION:
							case ACTIVATION:
							case ACTIVE:
							case ADDRESS:
							case AES_128:
							case AES_192:
							case AES_256:
							case AFFINITY:
							case AFTER:
							case AGGREGATE:
							case ALGORITHM:
							case ALLOW_ENCRYPTED_VALUE_MODIFICATIONS:
							case ALLOW_SNAPSHOT_ISOLATION:
							case ALLOWED:
							case ANSI_NULL_DEFAULT:
							case ANSI_NULLS:
							case ANSI_PADDING:
							case ANSI_WARNINGS:
							case APPLICATION_LOG:
							case APPLY:
							case ARITHABORT:
							case ASSEMBLY:
							case AUDIT:
							case AUDIT_GUID:
							case AUTO:
							case AUTO_CLEANUP:
							case AUTO_CLOSE:
							case AUTO_CREATE_STATISTICS:
							case AUTO_SHRINK:
							case AUTO_UPDATE_STATISTICS:
							case AUTO_UPDATE_STATISTICS_ASYNC:
							case AVAILABILITY:
							case AVG:
							case BACKUP_PRIORITY:
							case BEGIN_DIALOG:
							case BIGINT:
							case BINARY_BASE64:
							case BINARY_CHECKSUM:
							case BINDING:
							case BLOB_STORAGE:
							case BROKER:
							case BROKER_INSTANCE:
							case BULK_LOGGED:
							case CALLER:
							case CAP_CPU_PERCENT:
							case CAST:
							case CATALOG:
							case CATCH:
							case CHANGE_RETENTION:
							case CHANGE_TRACKING:
							case CHECKSUM:
							case CHECKSUM_AGG:
							case CLEANUP:
							case COLLECTION:
							case COLUMN_MASTER_KEY:
							case COMMITTED:
							case COMPATIBILITY_LEVEL:
							case CONCAT:
							case CONCAT_NULL_YIELDS_NULL:
							case CONTENT:
							case CONTROL:
							case COOKIE:
							case COUNT:
							case COUNT_BIG:
							case COUNTER:
							case CPU:
							case CREATE_NEW:
							case CREATION_DISPOSITION:
							case CREDENTIAL:
							case CRYPTOGRAPHIC:
							case CURSOR_CLOSE_ON_COMMIT:
							case CURSOR_DEFAULT:
							case DATE_CORRELATION_OPTIMIZATION:
							case DATEADD:
							case DATEDIFF:
							case DATENAME:
							case DATEPART:
							case DAYS:
							case DB_CHAINING:
							case DB_FAILOVER:
							case DECRYPTION:
							case DEFAULT_DOUBLE_QUOTE:
							case DEFAULT_FULLTEXT_LANGUAGE:
							case DEFAULT_LANGUAGE:
							case DELAY:
							case DELAYED_DURABILITY:
							case DELETED:
							case DENSE_RANK:
							case DEPENDENTS:
							case DES:
							case DESCRIPTION:
							case DESX:
							case DHCP:
							case DIALOG:
							case DIRECTORY_NAME:
							case DISABLE:
							case DISABLE_BROKER:
							case DISABLED:
							case DISK_DRIVE:
							case DOCUMENT:
							case DYNAMIC:
							case EMERGENCY:
							case EMPTY:
							case ENABLE:
							case ENABLE_BROKER:
							case ENCRYPTED_VALUE:
							case ENCRYPTION:
							case ENDPOINT_URL:
							case ERROR_BROKER_CONVERSATIONS:
							case EXCLUSIVE:
							case EXECUTABLE:
							case EXIST:
							case EXPAND:
							case EXPIRY_DATE:
							case EXPLICIT:
							case FAIL_OPERATION:
							case FAILOVER_MODE:
							case FAILURE:
							case FAILURE_CONDITION_LEVEL:
							case FAST:
							case FAST_FORWARD:
							case FILEGROUP:
							case FILEGROWTH:
							case FILEPATH:
							case FILESTREAM:
							case FILTER:
							case FIRST:
							case FIRST_VALUE:
							case FOLLOWING:
							case FORCE:
							case FORCE_FAILOVER_ALLOW_DATA_LOSS:
							case FORCED:
							case FORMAT:
							case FORWARD_ONLY:
							case FULLSCAN:
							case FULLTEXT:
							case GB:
							case GETDATE:
							case GETUTCDATE:
							case GLOBAL:
							case GO:
							case GROUP_MAX_REQUESTS:
							case GROUPING:
							case GROUPING_ID:
							case HADR:
							case HASH:
							case HEALTH_CHECK_TIMEOUT:
							case HIGH:
							case HONOR_BROKER_PRIORITY:
							case HOURS:
							case IDENTITY_VALUE:
							case IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX:
							case IMMEDIATE:
							case IMPERSONATE:
							case IMPORTANCE:
							case INCREMENTAL:
							case INITIATOR:
							case INPUT:
							case INSENSITIVE:
							case INSERTED:
							case INT:
							case IP:
							case ISOLATION:
							case KB:
							case KEEP:
							case KEEPFIXED:
							case KEY_SOURCE:
							case KEYS:
							case KEYSET:
							case LAG:
							case LAST:
							case LAST_VALUE:
							case LEAD:
							case LEVEL:
							case LIST:
							case LISTENER:
							case LISTENER_URL:
							case LOB_COMPACTION:
							case LOCAL:
							case LOCATION:
							case LOCK:
							case LOCK_ESCALATION:
							case LOGIN:
							case LOOP:
							case LOW:
							case MANUAL:
							case MARK:
							case MATERIALIZED:
							case MAX:
							case MAX_CPU_PERCENT:
							case MAX_DOP:
							case MAX_FILES:
							case MAX_IOPS_PER_VOLUME:
							case MAX_MEMORY_PERCENT:
							case MAX_PROCESSES:
							case MAX_QUEUE_READERS:
							case MAX_ROLLOVER_FILES:
							case MAXDOP:
							case MAXRECURSION:
							case MAXSIZE:
							case MB:
							case MEDIUM:
							case MEMORY_OPTIMIZED_DATA:
							case MESSAGE:
							case MIN:
							case MIN_ACTIVE_ROWVERSION:
							case MIN_CPU_PERCENT:
							case MIN_IOPS_PER_VOLUME:
							case MIN_MEMORY_PERCENT:
							case MINUTES:
							case MIRROR_ADDRESS:
							case MIXED_PAGE_ALLOCATION:
							case MODE:
							case MODIFY:
							case MOVE:
							case MULTI_USER:
							case NAME:
							case NESTED_TRIGGERS:
							case NEW_ACCOUNT:
							case NEW_BROKER:
							case NEW_PASSWORD:
							case NEXT:
							case NO:
							case NO_TRUNCATE:
							case NO_WAIT:
							case NOCOUNT:
							case NODES:
							case NOEXPAND:
							case NON_TRANSACTED_ACCESS:
							case NORECOMPUTE:
							case NORECOVERY:
							case NOWAIT:
							case NTILE:
							case NUMANODE:
							case NUMBER:
							case NUMERIC_ROUNDABORT:
							case OBJECT:
							case OFFLINE:
							case OFFSET:
							case OLD_ACCOUNT:
							case ONLINE:
							case ONLY:
							case OPEN_EXISTING:
							case OPTIMISTIC:
							case OPTIMIZE:
							case OUT:
							case OUTPUT:
							case OWNER:
							case PAGE_VERIFY:
							case PARAMETERIZATION:
							case PARTITION:
							case PARTITIONS:
							case PARTNER:
							case PATH:
							case POISON_MESSAGE_HANDLING:
							case POOL:
							case PORT:
							case PRECEDING:
							case PRIMARY_ROLE:
							case PRIOR:
							case PRIORITY:
							case PRIORITY_LEVEL:
							case PRIVATE:
							case PRIVATE_KEY:
							case PRIVILEGES:
							case PROCEDURE_NAME:
							case PROPERTY:
							case PROVIDER:
							case PROVIDER_KEY_NAME:
							case QUERY:
							case QUEUE:
							case QUEUE_DELAY:
							case QUOTED_IDENTIFIER:
							case RANGE:
							case RANK:
							case RC2:
							case RC4:
							case RC4_128:
							case READ_COMMITTED_SNAPSHOT:
							case READ_ONLY:
							case READ_ONLY_ROUTING_LIST:
							case READ_WRITE:
							case READONLY:
							case REBUILD:
							case RECEIVE:
							case RECOMPILE:
							case RECOVERY:
							case RECURSIVE_TRIGGERS:
							case RELATIVE:
							case REMOTE:
							case REMOTE_SERVICE_NAME:
							case REMOVE:
							case REORGANIZE:
							case REPEATABLE:
							case REPLICA:
							case REQUEST_MAX_CPU_TIME_SEC:
							case REQUEST_MAX_MEMORY_GRANT_PERCENT:
							case REQUEST_MEMORY_GRANT_TIMEOUT_SEC:
							case REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT:
							case RESERVE_DISK_SPACE:
							case RESOURCE:
							case RESOURCE_MANAGER_LOCATION:
							case RESTRICTED_USER:
							case RETENTION:
							case ROBUST:
							case ROOT:
							case ROUTE:
							case ROW:
							case ROW_NUMBER:
							case ROWGUID:
							case ROWS:
							case SAMPLE:
							case SCHEMABINDING:
							case SCOPED:
							case SCROLL:
							case SCROLL_LOCKS:
							case SEARCH:
							case SECONDARY:
							case SECONDARY_ONLY:
							case SECONDARY_ROLE:
							case SECONDS:
							case SECRET:
							case SECURITY_LOG:
							case SEEDING_MODE:
							case SELF:
							case SEMI_SENSITIVE:
							case SEND:
							case SENT:
							case SERIALIZABLE:
							case SESSION_TIMEOUT:
							case SETERROR:
							case SHARE:
							case SHOWPLAN:
							case SIGNATURE:
							case SIMPLE:
							case SINGLE_USER:
							case SIZE:
							case SMALLINT:
							case SNAPSHOT:
							case SPATIAL_WINDOW_MAX_CELLS:
							case STANDBY:
							case START_DATE:
							case STATIC:
							case STATS_STREAM:
							case STATUS:
							case STDEV:
							case STDEVP:
							case STOPLIST:
							case STUFF:
							case SUBJECT:
							case SUM:
							case SUSPEND:
							case SYMMETRIC:
							case SYNCHRONOUS_COMMIT:
							case SYNONYM:
							case TAKE:
							case TARGET_RECOVERY_TIME:
							case TB:
							case TEXTIMAGE_ON:
							case THROW:
							case TIES:
							case TIME:
							case TIMEOUT:
							case TIMER:
							case TINYINT:
							case TORN_PAGE_DETECTION:
							case TRANSFORM_NOISE_WORDS:
							case TRIPLE_DES:
							case TRIPLE_DES_3KEY:
							case TRUSTWORTHY:
							case TRY:
							case TSQL:
							case TWO_DIGIT_YEAR_CUTOFF:
							case TYPE:
							case TYPE_WARNING:
							case UNBOUNDED:
							case UNCOMMITTED:
							case UNKNOWN:
							case UNLIMITED:
							case USING:
							case VALID_XML:
							case VALIDATION:
							case VALUE:
							case VAR:
							case VARP:
							case VIEW_METADATA:
							case VIEWS:
							case WAIT:
							case WELL_FORMED_XML:
							case WORK:
							case WORKLOAD:
							case XML:
							case XMLNAMESPACES:
							case DOUBLE_QUOTE_ID:
							case SQUARE_BRACKET_ID:
							case ID:
								{
								setState(7741);
								id();
								}
								break;
							default:
								throw new NoViableAltException(this);
							}
							}
							break;
						case 13:
							{
							setState(7745);
							_errHandler.sync(this);
							_la = _input.LA(1);
							if (_la==COMMA) {
								{
								setState(7744);
								match(COMMA);
								}
							}

							setState(7747);
							match(MEDIANAME);
							setState(7748);
							match(EQUAL);
							{
							setState(7749);
							((Backup_logContext)_localctx).medianame = match(STRING);
							}
							}
							break;
						case 14:
							{
							setState(7751);
							_errHandler.sync(this);
							_la = _input.LA(1);
							if (_la==COMMA) {
								{
								setState(7750);
								match(COMMA);
								}
							}

							setState(7753);
							match(BLOCKSIZE);
							setState(7754);
							match(EQUAL);
							setState(7757);
							_errHandler.sync(this);
							switch (_input.LA(1)) {
							case DECIMAL:
								{
								setState(7755);
								match(DECIMAL);
								}
								break;
							case CALLED:
							case DATA_COMPRESSION:
							case EVENTDATA:
							case FILENAME:
							case FILLFACTOR:
							case FORCESEEK:
							case INIT:
							case KEY:
							case MASTER:
							case MAX_MEMORY:
							case OFFSETS:
							case PAGE:
							case PUBLIC:
							case R:
							case RAW:
							case RETURN:
							case RETURNS:
							case ROWCOUNT:
							case SAFETY:
							case SERVER:
							case SID:
							case SOURCE:
							case STATE:
							case START:
							case TARGET:
							case ABSOLUTE:
							case ACCENT_SENSITIVITY:
							case ACTION:
							case ACTIVATION:
							case ACTIVE:
							case ADDRESS:
							case AES_128:
							case AES_192:
							case AES_256:
							case AFFINITY:
							case AFTER:
							case AGGREGATE:
							case ALGORITHM:
							case ALLOW_ENCRYPTED_VALUE_MODIFICATIONS:
							case ALLOW_SNAPSHOT_ISOLATION:
							case ALLOWED:
							case ANSI_NULL_DEFAULT:
							case ANSI_NULLS:
							case ANSI_PADDING:
							case ANSI_WARNINGS:
							case APPLICATION_LOG:
							case APPLY:
							case ARITHABORT:
							case ASSEMBLY:
							case AUDIT:
							case AUDIT_GUID:
							case AUTO:
							case AUTO_CLEANUP:
							case AUTO_CLOSE:
							case AUTO_CREATE_STATISTICS:
							case AUTO_SHRINK:
							case AUTO_UPDATE_STATISTICS:
							case AUTO_UPDATE_STATISTICS_ASYNC:
							case AVAILABILITY:
							case AVG:
							case BACKUP_PRIORITY:
							case BEGIN_DIALOG:
							case BIGINT:
							case BINARY_BASE64:
							case BINARY_CHECKSUM:
							case BINDING:
							case BLOB_STORAGE:
							case BROKER:
							case BROKER_INSTANCE:
							case BULK_LOGGED:
							case CALLER:
							case CAP_CPU_PERCENT:
							case CAST:
							case CATALOG:
							case CATCH:
							case CHANGE_RETENTION:
							case CHANGE_TRACKING:
							case CHECKSUM:
							case CHECKSUM_AGG:
							case CLEANUP:
							case COLLECTION:
							case COLUMN_MASTER_KEY:
							case COMMITTED:
							case COMPATIBILITY_LEVEL:
							case CONCAT:
							case CONCAT_NULL_YIELDS_NULL:
							case CONTENT:
							case CONTROL:
							case COOKIE:
							case COUNT:
							case COUNT_BIG:
							case COUNTER:
							case CPU:
							case CREATE_NEW:
							case CREATION_DISPOSITION:
							case CREDENTIAL:
							case CRYPTOGRAPHIC:
							case CURSOR_CLOSE_ON_COMMIT:
							case CURSOR_DEFAULT:
							case DATE_CORRELATION_OPTIMIZATION:
							case DATEADD:
							case DATEDIFF:
							case DATENAME:
							case DATEPART:
							case DAYS:
							case DB_CHAINING:
							case DB_FAILOVER:
							case DECRYPTION:
							case DEFAULT_DOUBLE_QUOTE:
							case DEFAULT_FULLTEXT_LANGUAGE:
							case DEFAULT_LANGUAGE:
							case DELAY:
							case DELAYED_DURABILITY:
							case DELETED:
							case DENSE_RANK:
							case DEPENDENTS:
							case DES:
							case DESCRIPTION:
							case DESX:
							case DHCP:
							case DIALOG:
							case DIRECTORY_NAME:
							case DISABLE:
							case DISABLE_BROKER:
							case DISABLED:
							case DISK_DRIVE:
							case DOCUMENT:
							case DYNAMIC:
							case EMERGENCY:
							case EMPTY:
							case ENABLE:
							case ENABLE_BROKER:
							case ENCRYPTED_VALUE:
							case ENCRYPTION:
							case ENDPOINT_URL:
							case ERROR_BROKER_CONVERSATIONS:
							case EXCLUSIVE:
							case EXECUTABLE:
							case EXIST:
							case EXPAND:
							case EXPIRY_DATE:
							case EXPLICIT:
							case FAIL_OPERATION:
							case FAILOVER_MODE:
							case FAILURE:
							case FAILURE_CONDITION_LEVEL:
							case FAST:
							case FAST_FORWARD:
							case FILEGROUP:
							case FILEGROWTH:
							case FILEPATH:
							case FILESTREAM:
							case FILTER:
							case FIRST:
							case FIRST_VALUE:
							case FOLLOWING:
							case FORCE:
							case FORCE_FAILOVER_ALLOW_DATA_LOSS:
							case FORCED:
							case FORMAT:
							case FORWARD_ONLY:
							case FULLSCAN:
							case FULLTEXT:
							case GB:
							case GETDATE:
							case GETUTCDATE:
							case GLOBAL:
							case GO:
							case GROUP_MAX_REQUESTS:
							case GROUPING:
							case GROUPING_ID:
							case HADR:
							case HASH:
							case HEALTH_CHECK_TIMEOUT:
							case HIGH:
							case HONOR_BROKER_PRIORITY:
							case HOURS:
							case IDENTITY_VALUE:
							case IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX:
							case IMMEDIATE:
							case IMPERSONATE:
							case IMPORTANCE:
							case INCREMENTAL:
							case INITIATOR:
							case INPUT:
							case INSENSITIVE:
							case INSERTED:
							case INT:
							case IP:
							case ISOLATION:
							case KB:
							case KEEP:
							case KEEPFIXED:
							case KEY_SOURCE:
							case KEYS:
							case KEYSET:
							case LAG:
							case LAST:
							case LAST_VALUE:
							case LEAD:
							case LEVEL:
							case LIST:
							case LISTENER:
							case LISTENER_URL:
							case LOB_COMPACTION:
							case LOCAL:
							case LOCATION:
							case LOCK:
							case LOCK_ESCALATION:
							case LOGIN:
							case LOOP:
							case LOW:
							case MANUAL:
							case MARK:
							case MATERIALIZED:
							case MAX:
							case MAX_CPU_PERCENT:
							case MAX_DOP:
							case MAX_FILES:
							case MAX_IOPS_PER_VOLUME:
							case MAX_MEMORY_PERCENT:
							case MAX_PROCESSES:
							case MAX_QUEUE_READERS:
							case MAX_ROLLOVER_FILES:
							case MAXDOP:
							case MAXRECURSION:
							case MAXSIZE:
							case MB:
							case MEDIUM:
							case MEMORY_OPTIMIZED_DATA:
							case MESSAGE:
							case MIN:
							case MIN_ACTIVE_ROWVERSION:
							case MIN_CPU_PERCENT:
							case MIN_IOPS_PER_VOLUME:
							case MIN_MEMORY_PERCENT:
							case MINUTES:
							case MIRROR_ADDRESS:
							case MIXED_PAGE_ALLOCATION:
							case MODE:
							case MODIFY:
							case MOVE:
							case MULTI_USER:
							case NAME:
							case NESTED_TRIGGERS:
							case NEW_ACCOUNT:
							case NEW_BROKER:
							case NEW_PASSWORD:
							case NEXT:
							case NO:
							case NO_TRUNCATE:
							case NO_WAIT:
							case NOCOUNT:
							case NODES:
							case NOEXPAND:
							case NON_TRANSACTED_ACCESS:
							case NORECOMPUTE:
							case NORECOVERY:
							case NOWAIT:
							case NTILE:
							case NUMANODE:
							case NUMBER:
							case NUMERIC_ROUNDABORT:
							case OBJECT:
							case OFFLINE:
							case OFFSET:
							case OLD_ACCOUNT:
							case ONLINE:
							case ONLY:
							case OPEN_EXISTING:
							case OPTIMISTIC:
							case OPTIMIZE:
							case OUT:
							case OUTPUT:
							case OWNER:
							case PAGE_VERIFY:
							case PARAMETERIZATION:
							case PARTITION:
							case PARTITIONS:
							case PARTNER:
							case PATH:
							case POISON_MESSAGE_HANDLING:
							case POOL:
							case PORT:
							case PRECEDING:
							case PRIMARY_ROLE:
							case PRIOR:
							case PRIORITY:
							case PRIORITY_LEVEL:
							case PRIVATE:
							case PRIVATE_KEY:
							case PRIVILEGES:
							case PROCEDURE_NAME:
							case PROPERTY:
							case PROVIDER:
							case PROVIDER_KEY_NAME:
							case QUERY:
							case QUEUE:
							case QUEUE_DELAY:
							case QUOTED_IDENTIFIER:
							case RANGE:
							case RANK:
							case RC2:
							case RC4:
							case RC4_128:
							case READ_COMMITTED_SNAPSHOT:
							case READ_ONLY:
							case READ_ONLY_ROUTING_LIST:
							case READ_WRITE:
							case READONLY:
							case REBUILD:
							case RECEIVE:
							case RECOMPILE:
							case RECOVERY:
							case RECURSIVE_TRIGGERS:
							case RELATIVE:
							case REMOTE:
							case REMOTE_SERVICE_NAME:
							case REMOVE:
							case REORGANIZE:
							case REPEATABLE:
							case REPLICA:
							case REQUEST_MAX_CPU_TIME_SEC:
							case REQUEST_MAX_MEMORY_GRANT_PERCENT:
							case REQUEST_MEMORY_GRANT_TIMEOUT_SEC:
							case REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT:
							case RESERVE_DISK_SPACE:
							case RESOURCE:
							case RESOURCE_MANAGER_LOCATION:
							case RESTRICTED_USER:
							case RETENTION:
							case ROBUST:
							case ROOT:
							case ROUTE:
							case ROW:
							case ROW_NUMBER:
							case ROWGUID:
							case ROWS:
							case SAMPLE:
							case SCHEMABINDING:
							case SCOPED:
							case SCROLL:
							case SCROLL_LOCKS:
							case SEARCH:
							case SECONDARY:
							case SECONDARY_ONLY:
							case SECONDARY_ROLE:
							case SECONDS:
							case SECRET:
							case SECURITY_LOG:
							case SEEDING_MODE:
							case SELF:
							case SEMI_SENSITIVE:
							case SEND:
							case SENT:
							case SERIALIZABLE:
							case SESSION_TIMEOUT:
							case SETERROR:
							case SHARE:
							case SHOWPLAN:
							case SIGNATURE:
							case SIMPLE:
							case SINGLE_USER:
							case SIZE:
							case SMALLINT:
							case SNAPSHOT:
							case SPATIAL_WINDOW_MAX_CELLS:
							case STANDBY:
							case START_DATE:
							case STATIC:
							case STATS_STREAM:
							case STATUS:
							case STDEV:
							case STDEVP:
							case STOPLIST:
							case STUFF:
							case SUBJECT:
							case SUM:
							case SUSPEND:
							case SYMMETRIC:
							case SYNCHRONOUS_COMMIT:
							case SYNONYM:
							case TAKE:
							case TARGET_RECOVERY_TIME:
							case TB:
							case TEXTIMAGE_ON:
							case THROW:
							case TIES:
							case TIME:
							case TIMEOUT:
							case TIMER:
							case TINYINT:
							case TORN_PAGE_DETECTION:
							case TRANSFORM_NOISE_WORDS:
							case TRIPLE_DES:
							case TRIPLE_DES_3KEY:
							case TRUSTWORTHY:
							case TRY:
							case TSQL:
							case TWO_DIGIT_YEAR_CUTOFF:
							case TYPE:
							case TYPE_WARNING:
							case UNBOUNDED:
							case UNCOMMITTED:
							case UNKNOWN:
							case UNLIMITED:
							case USING:
							case VALID_XML:
							case VALIDATION:
							case VALUE:
							case VAR:
							case VARP:
							case VIEW_METADATA:
							case VIEWS:
							case WAIT:
							case WELL_FORMED_XML:
							case WORK:
							case WORKLOAD:
							case XML:
							case XMLNAMESPACES:
							case DOUBLE_QUOTE_ID:
							case SQUARE_BRACKET_ID:
							case ID:
								{
								setState(7756);
								id();
								}
								break;
							default:
								throw new NoViableAltException(this);
							}
							}
							break;
						case 15:
							{
							setState(7760);
							_errHandler.sync(this);
							_la = _input.LA(1);
							if (_la==COMMA) {
								{
								setState(7759);
								match(COMMA);
								}
							}

							setState(7762);
							match(BUFFERCOUNT);
							setState(7763);
							match(EQUAL);
							setState(7766);
							_errHandler.sync(this);
							switch (_input.LA(1)) {
							case DECIMAL:
								{
								setState(7764);
								match(DECIMAL);
								}
								break;
							case CALLED:
							case DATA_COMPRESSION:
							case EVENTDATA:
							case FILENAME:
							case FILLFACTOR:
							case FORCESEEK:
							case INIT:
							case KEY:
							case MASTER:
							case MAX_MEMORY:
							case OFFSETS:
							case PAGE:
							case PUBLIC:
							case R:
							case RAW:
							case RETURN:
							case RETURNS:
							case ROWCOUNT:
							case SAFETY:
							case SERVER:
							case SID:
							case SOURCE:
							case STATE:
							case START:
							case TARGET:
							case ABSOLUTE:
							case ACCENT_SENSITIVITY:
							case ACTION:
							case ACTIVATION:
							case ACTIVE:
							case ADDRESS:
							case AES_128:
							case AES_192:
							case AES_256:
							case AFFINITY:
							case AFTER:
							case AGGREGATE:
							case ALGORITHM:
							case ALLOW_ENCRYPTED_VALUE_MODIFICATIONS:
							case ALLOW_SNAPSHOT_ISOLATION:
							case ALLOWED:
							case ANSI_NULL_DEFAULT:
							case ANSI_NULLS:
							case ANSI_PADDING:
							case ANSI_WARNINGS:
							case APPLICATION_LOG:
							case APPLY:
							case ARITHABORT:
							case ASSEMBLY:
							case AUDIT:
							case AUDIT_GUID:
							case AUTO:
							case AUTO_CLEANUP:
							case AUTO_CLOSE:
							case AUTO_CREATE_STATISTICS:
							case AUTO_SHRINK:
							case AUTO_UPDATE_STATISTICS:
							case AUTO_UPDATE_STATISTICS_ASYNC:
							case AVAILABILITY:
							case AVG:
							case BACKUP_PRIORITY:
							case BEGIN_DIALOG:
							case BIGINT:
							case BINARY_BASE64:
							case BINARY_CHECKSUM:
							case BINDING:
							case BLOB_STORAGE:
							case BROKER:
							case BROKER_INSTANCE:
							case BULK_LOGGED:
							case CALLER:
							case CAP_CPU_PERCENT:
							case CAST:
							case CATALOG:
							case CATCH:
							case CHANGE_RETENTION:
							case CHANGE_TRACKING:
							case CHECKSUM:
							case CHECKSUM_AGG:
							case CLEANUP:
							case COLLECTION:
							case COLUMN_MASTER_KEY:
							case COMMITTED:
							case COMPATIBILITY_LEVEL:
							case CONCAT:
							case CONCAT_NULL_YIELDS_NULL:
							case CONTENT:
							case CONTROL:
							case COOKIE:
							case COUNT:
							case COUNT_BIG:
							case COUNTER:
							case CPU:
							case CREATE_NEW:
							case CREATION_DISPOSITION:
							case CREDENTIAL:
							case CRYPTOGRAPHIC:
							case CURSOR_CLOSE_ON_COMMIT:
							case CURSOR_DEFAULT:
							case DATE_CORRELATION_OPTIMIZATION:
							case DATEADD:
							case DATEDIFF:
							case DATENAME:
							case DATEPART:
							case DAYS:
							case DB_CHAINING:
							case DB_FAILOVER:
							case DECRYPTION:
							case DEFAULT_DOUBLE_QUOTE:
							case DEFAULT_FULLTEXT_LANGUAGE:
							case DEFAULT_LANGUAGE:
							case DELAY:
							case DELAYED_DURABILITY:
							case DELETED:
							case DENSE_RANK:
							case DEPENDENTS:
							case DES:
							case DESCRIPTION:
							case DESX:
							case DHCP:
							case DIALOG:
							case DIRECTORY_NAME:
							case DISABLE:
							case DISABLE_BROKER:
							case DISABLED:
							case DISK_DRIVE:
							case DOCUMENT:
							case DYNAMIC:
							case EMERGENCY:
							case EMPTY:
							case ENABLE:
							case ENABLE_BROKER:
							case ENCRYPTED_VALUE:
							case ENCRYPTION:
							case ENDPOINT_URL:
							case ERROR_BROKER_CONVERSATIONS:
							case EXCLUSIVE:
							case EXECUTABLE:
							case EXIST:
							case EXPAND:
							case EXPIRY_DATE:
							case EXPLICIT:
							case FAIL_OPERATION:
							case FAILOVER_MODE:
							case FAILURE:
							case FAILURE_CONDITION_LEVEL:
							case FAST:
							case FAST_FORWARD:
							case FILEGROUP:
							case FILEGROWTH:
							case FILEPATH:
							case FILESTREAM:
							case FILTER:
							case FIRST:
							case FIRST_VALUE:
							case FOLLOWING:
							case FORCE:
							case FORCE_FAILOVER_ALLOW_DATA_LOSS:
							case FORCED:
							case FORMAT:
							case FORWARD_ONLY:
							case FULLSCAN:
							case FULLTEXT:
							case GB:
							case GETDATE:
							case GETUTCDATE:
							case GLOBAL:
							case GO:
							case GROUP_MAX_REQUESTS:
							case GROUPING:
							case GROUPING_ID:
							case HADR:
							case HASH:
							case HEALTH_CHECK_TIMEOUT:
							case HIGH:
							case HONOR_BROKER_PRIORITY:
							case HOURS:
							case IDENTITY_VALUE:
							case IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX:
							case IMMEDIATE:
							case IMPERSONATE:
							case IMPORTANCE:
							case INCREMENTAL:
							case INITIATOR:
							case INPUT:
							case INSENSITIVE:
							case INSERTED:
							case INT:
							case IP:
							case ISOLATION:
							case KB:
							case KEEP:
							case KEEPFIXED:
							case KEY_SOURCE:
							case KEYS:
							case KEYSET:
							case LAG:
							case LAST:
							case LAST_VALUE:
							case LEAD:
							case LEVEL:
							case LIST:
							case LISTENER:
							case LISTENER_URL:
							case LOB_COMPACTION:
							case LOCAL:
							case LOCATION:
							case LOCK:
							case LOCK_ESCALATION:
							case LOGIN:
							case LOOP:
							case LOW:
							case MANUAL:
							case MARK:
							case MATERIALIZED:
							case MAX:
							case MAX_CPU_PERCENT:
							case MAX_DOP:
							case MAX_FILES:
							case MAX_IOPS_PER_VOLUME:
							case MAX_MEMORY_PERCENT:
							case MAX_PROCESSES:
							case MAX_QUEUE_READERS:
							case MAX_ROLLOVER_FILES:
							case MAXDOP:
							case MAXRECURSION:
							case MAXSIZE:
							case MB:
							case MEDIUM:
							case MEMORY_OPTIMIZED_DATA:
							case MESSAGE:
							case MIN:
							case MIN_ACTIVE_ROWVERSION:
							case MIN_CPU_PERCENT:
							case MIN_IOPS_PER_VOLUME:
							case MIN_MEMORY_PERCENT:
							case MINUTES:
							case MIRROR_ADDRESS:
							case MIXED_PAGE_ALLOCATION:
							case MODE:
							case MODIFY:
							case MOVE:
							case MULTI_USER:
							case NAME:
							case NESTED_TRIGGERS:
							case NEW_ACCOUNT:
							case NEW_BROKER:
							case NEW_PASSWORD:
							case NEXT:
							case NO:
							case NO_TRUNCATE:
							case NO_WAIT:
							case NOCOUNT:
							case NODES:
							case NOEXPAND:
							case NON_TRANSACTED_ACCESS:
							case NORECOMPUTE:
							case NORECOVERY:
							case NOWAIT:
							case NTILE:
							case NUMANODE:
							case NUMBER:
							case NUMERIC_ROUNDABORT:
							case OBJECT:
							case OFFLINE:
							case OFFSET:
							case OLD_ACCOUNT:
							case ONLINE:
							case ONLY:
							case OPEN_EXISTING:
							case OPTIMISTIC:
							case OPTIMIZE:
							case OUT:
							case OUTPUT:
							case OWNER:
							case PAGE_VERIFY:
							case PARAMETERIZATION:
							case PARTITION:
							case PARTITIONS:
							case PARTNER:
							case PATH:
							case POISON_MESSAGE_HANDLING:
							case POOL:
							case PORT:
							case PRECEDING:
							case PRIMARY_ROLE:
							case PRIOR:
							case PRIORITY:
							case PRIORITY_LEVEL:
							case PRIVATE:
							case PRIVATE_KEY:
							case PRIVILEGES:
							case PROCEDURE_NAME:
							case PROPERTY:
							case PROVIDER:
							case PROVIDER_KEY_NAME:
							case QUERY:
							case QUEUE:
							case QUEUE_DELAY:
							case QUOTED_IDENTIFIER:
							case RANGE:
							case RANK:
							case RC2:
							case RC4:
							case RC4_128:
							case READ_COMMITTED_SNAPSHOT:
							case READ_ONLY:
							case READ_ONLY_ROUTING_LIST:
							case READ_WRITE:
							case READONLY:
							case REBUILD:
							case RECEIVE:
							case RECOMPILE:
							case RECOVERY:
							case RECURSIVE_TRIGGERS:
							case RELATIVE:
							case REMOTE:
							case REMOTE_SERVICE_NAME:
							case REMOVE:
							case REORGANIZE:
							case REPEATABLE:
							case REPLICA:
							case REQUEST_MAX_CPU_TIME_SEC:
							case REQUEST_MAX_MEMORY_GRANT_PERCENT:
							case REQUEST_MEMORY_GRANT_TIMEOUT_SEC:
							case REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT:
							case RESERVE_DISK_SPACE:
							case RESOURCE:
							case RESOURCE_MANAGER_LOCATION:
							case RESTRICTED_USER:
							case RETENTION:
							case ROBUST:
							case ROOT:
							case ROUTE:
							case ROW:
							case ROW_NUMBER:
							case ROWGUID:
							case ROWS:
							case SAMPLE:
							case SCHEMABINDING:
							case SCOPED:
							case SCROLL:
							case SCROLL_LOCKS:
							case SEARCH:
							case SECONDARY:
							case SECONDARY_ONLY:
							case SECONDARY_ROLE:
							case SECONDS:
							case SECRET:
							case SECURITY_LOG:
							case SEEDING_MODE:
							case SELF:
							case SEMI_SENSITIVE:
							case SEND:
							case SENT:
							case SERIALIZABLE:
							case SESSION_TIMEOUT:
							case SETERROR:
							case SHARE:
							case SHOWPLAN:
							case SIGNATURE:
							case SIMPLE:
							case SINGLE_USER:
							case SIZE:
							case SMALLINT:
							case SNAPSHOT:
							case SPATIAL_WINDOW_MAX_CELLS:
							case STANDBY:
							case START_DATE:
							case STATIC:
							case STATS_STREAM:
							case STATUS:
							case STDEV:
							case STDEVP:
							case STOPLIST:
							case STUFF:
							case SUBJECT:
							case SUM:
							case SUSPEND:
							case SYMMETRIC:
							case SYNCHRONOUS_COMMIT:
							case SYNONYM:
							case TAKE:
							case TARGET_RECOVERY_TIME:
							case TB:
							case TEXTIMAGE_ON:
							case THROW:
							case TIES:
							case TIME:
							case TIMEOUT:
							case TIMER:
							case TINYINT:
							case TORN_PAGE_DETECTION:
							case TRANSFORM_NOISE_WORDS:
							case TRIPLE_DES:
							case TRIPLE_DES_3KEY:
							case TRUSTWORTHY:
							case TRY:
							case TSQL:
							case TWO_DIGIT_YEAR_CUTOFF:
							case TYPE:
							case TYPE_WARNING:
							case UNBOUNDED:
							case UNCOMMITTED:
							case UNKNOWN:
							case UNLIMITED:
							case USING:
							case VALID_XML:
							case VALIDATION:
							case VALUE:
							case VAR:
							case VARP:
							case VIEW_METADATA:
							case VIEWS:
							case WAIT:
							case WELL_FORMED_XML:
							case WORK:
							case WORKLOAD:
							case XML:
							case XMLNAMESPACES:
							case DOUBLE_QUOTE_ID:
							case SQUARE_BRACKET_ID:
							case ID:
								{
								setState(7765);
								id();
								}
								break;
							default:
								throw new NoViableAltException(this);
							}
							}
							break;
						case 16:
							{
							setState(7769);
							_errHandler.sync(this);
							_la = _input.LA(1);
							if (_la==COMMA) {
								{
								setState(7768);
								match(COMMA);
								}
							}

							setState(7771);
							match(MAXTRANSFER);
							setState(7772);
							match(EQUAL);
							setState(7775);
							_errHandler.sync(this);
							switch (_input.LA(1)) {
							case DECIMAL:
								{
								setState(7773);
								match(DECIMAL);
								}
								break;
							case CALLED:
							case DATA_COMPRESSION:
							case EVENTDATA:
							case FILENAME:
							case FILLFACTOR:
							case FORCESEEK:
							case INIT:
							case KEY:
							case MASTER:
							case MAX_MEMORY:
							case OFFSETS:
							case PAGE:
							case PUBLIC:
							case R:
							case RAW:
							case RETURN:
							case RETURNS:
							case ROWCOUNT:
							case SAFETY:
							case SERVER:
							case SID:
							case SOURCE:
							case STATE:
							case START:
							case TARGET:
							case ABSOLUTE:
							case ACCENT_SENSITIVITY:
							case ACTION:
							case ACTIVATION:
							case ACTIVE:
							case ADDRESS:
							case AES_128:
							case AES_192:
							case AES_256:
							case AFFINITY:
							case AFTER:
							case AGGREGATE:
							case ALGORITHM:
							case ALLOW_ENCRYPTED_VALUE_MODIFICATIONS:
							case ALLOW_SNAPSHOT_ISOLATION:
							case ALLOWED:
							case ANSI_NULL_DEFAULT:
							case ANSI_NULLS:
							case ANSI_PADDING:
							case ANSI_WARNINGS:
							case APPLICATION_LOG:
							case APPLY:
							case ARITHABORT:
							case ASSEMBLY:
							case AUDIT:
							case AUDIT_GUID:
							case AUTO:
							case AUTO_CLEANUP:
							case AUTO_CLOSE:
							case AUTO_CREATE_STATISTICS:
							case AUTO_SHRINK:
							case AUTO_UPDATE_STATISTICS:
							case AUTO_UPDATE_STATISTICS_ASYNC:
							case AVAILABILITY:
							case AVG:
							case BACKUP_PRIORITY:
							case BEGIN_DIALOG:
							case BIGINT:
							case BINARY_BASE64:
							case BINARY_CHECKSUM:
							case BINDING:
							case BLOB_STORAGE:
							case BROKER:
							case BROKER_INSTANCE:
							case BULK_LOGGED:
							case CALLER:
							case CAP_CPU_PERCENT:
							case CAST:
							case CATALOG:
							case CATCH:
							case CHANGE_RETENTION:
							case CHANGE_TRACKING:
							case CHECKSUM:
							case CHECKSUM_AGG:
							case CLEANUP:
							case COLLECTION:
							case COLUMN_MASTER_KEY:
							case COMMITTED:
							case COMPATIBILITY_LEVEL:
							case CONCAT:
							case CONCAT_NULL_YIELDS_NULL:
							case CONTENT:
							case CONTROL:
							case COOKIE:
							case COUNT:
							case COUNT_BIG:
							case COUNTER:
							case CPU:
							case CREATE_NEW:
							case CREATION_DISPOSITION:
							case CREDENTIAL:
							case CRYPTOGRAPHIC:
							case CURSOR_CLOSE_ON_COMMIT:
							case CURSOR_DEFAULT:
							case DATE_CORRELATION_OPTIMIZATION:
							case DATEADD:
							case DATEDIFF:
							case DATENAME:
							case DATEPART:
							case DAYS:
							case DB_CHAINING:
							case DB_FAILOVER:
							case DECRYPTION:
							case DEFAULT_DOUBLE_QUOTE:
							case DEFAULT_FULLTEXT_LANGUAGE:
							case DEFAULT_LANGUAGE:
							case DELAY:
							case DELAYED_DURABILITY:
							case DELETED:
							case DENSE_RANK:
							case DEPENDENTS:
							case DES:
							case DESCRIPTION:
							case DESX:
							case DHCP:
							case DIALOG:
							case DIRECTORY_NAME:
							case DISABLE:
							case DISABLE_BROKER:
							case DISABLED:
							case DISK_DRIVE:
							case DOCUMENT:
							case DYNAMIC:
							case EMERGENCY:
							case EMPTY:
							case ENABLE:
							case ENABLE_BROKER:
							case ENCRYPTED_VALUE:
							case ENCRYPTION:
							case ENDPOINT_URL:
							case ERROR_BROKER_CONVERSATIONS:
							case EXCLUSIVE:
							case EXECUTABLE:
							case EXIST:
							case EXPAND:
							case EXPIRY_DATE:
							case EXPLICIT:
							case FAIL_OPERATION:
							case FAILOVER_MODE:
							case FAILURE:
							case FAILURE_CONDITION_LEVEL:
							case FAST:
							case FAST_FORWARD:
							case FILEGROUP:
							case FILEGROWTH:
							case FILEPATH:
							case FILESTREAM:
							case FILTER:
							case FIRST:
							case FIRST_VALUE:
							case FOLLOWING:
							case FORCE:
							case FORCE_FAILOVER_ALLOW_DATA_LOSS:
							case FORCED:
							case FORMAT:
							case FORWARD_ONLY:
							case FULLSCAN:
							case FULLTEXT:
							case GB:
							case GETDATE:
							case GETUTCDATE:
							case GLOBAL:
							case GO:
							case GROUP_MAX_REQUESTS:
							case GROUPING:
							case GROUPING_ID:
							case HADR:
							case HASH:
							case HEALTH_CHECK_TIMEOUT:
							case HIGH:
							case HONOR_BROKER_PRIORITY:
							case HOURS:
							case IDENTITY_VALUE:
							case IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX:
							case IMMEDIATE:
							case IMPERSONATE:
							case IMPORTANCE:
							case INCREMENTAL:
							case INITIATOR:
							case INPUT:
							case INSENSITIVE:
							case INSERTED:
							case INT:
							case IP:
							case ISOLATION:
							case KB:
							case KEEP:
							case KEEPFIXED:
							case KEY_SOURCE:
							case KEYS:
							case KEYSET:
							case LAG:
							case LAST:
							case LAST_VALUE:
							case LEAD:
							case LEVEL:
							case LIST:
							case LISTENER:
							case LISTENER_URL:
							case LOB_COMPACTION:
							case LOCAL:
							case LOCATION:
							case LOCK:
							case LOCK_ESCALATION:
							case LOGIN:
							case LOOP:
							case LOW:
							case MANUAL:
							case MARK:
							case MATERIALIZED:
							case MAX:
							case MAX_CPU_PERCENT:
							case MAX_DOP:
							case MAX_FILES:
							case MAX_IOPS_PER_VOLUME:
							case MAX_MEMORY_PERCENT:
							case MAX_PROCESSES:
							case MAX_QUEUE_READERS:
							case MAX_ROLLOVER_FILES:
							case MAXDOP:
							case MAXRECURSION:
							case MAXSIZE:
							case MB:
							case MEDIUM:
							case MEMORY_OPTIMIZED_DATA:
							case MESSAGE:
							case MIN:
							case MIN_ACTIVE_ROWVERSION:
							case MIN_CPU_PERCENT:
							case MIN_IOPS_PER_VOLUME:
							case MIN_MEMORY_PERCENT:
							case MINUTES:
							case MIRROR_ADDRESS:
							case MIXED_PAGE_ALLOCATION:
							case MODE:
							case MODIFY:
							case MOVE:
							case MULTI_USER:
							case NAME:
							case NESTED_TRIGGERS:
							case NEW_ACCOUNT:
							case NEW_BROKER:
							case NEW_PASSWORD:
							case NEXT:
							case NO:
							case NO_TRUNCATE:
							case NO_WAIT:
							case NOCOUNT:
							case NODES:
							case NOEXPAND:
							case NON_TRANSACTED_ACCESS:
							case NORECOMPUTE:
							case NORECOVERY:
							case NOWAIT:
							case NTILE:
							case NUMANODE:
							case NUMBER:
							case NUMERIC_ROUNDABORT:
							case OBJECT:
							case OFFLINE:
							case OFFSET:
							case OLD_ACCOUNT:
							case ONLINE:
							case ONLY:
							case OPEN_EXISTING:
							case OPTIMISTIC:
							case OPTIMIZE:
							case OUT:
							case OUTPUT:
							case OWNER:
							case PAGE_VERIFY:
							case PARAMETERIZATION:
							case PARTITION:
							case PARTITIONS:
							case PARTNER:
							case PATH:
							case POISON_MESSAGE_HANDLING:
							case POOL:
							case PORT:
							case PRECEDING:
							case PRIMARY_ROLE:
							case PRIOR:
							case PRIORITY:
							case PRIORITY_LEVEL:
							case PRIVATE:
							case PRIVATE_KEY:
							case PRIVILEGES:
							case PROCEDURE_NAME:
							case PROPERTY:
							case PROVIDER:
							case PROVIDER_KEY_NAME:
							case QUERY:
							case QUEUE:
							case QUEUE_DELAY:
							case QUOTED_IDENTIFIER:
							case RANGE:
							case RANK:
							case RC2:
							case RC4:
							case RC4_128:
							case READ_COMMITTED_SNAPSHOT:
							case READ_ONLY:
							case READ_ONLY_ROUTING_LIST:
							case READ_WRITE:
							case READONLY:
							case REBUILD:
							case RECEIVE:
							case RECOMPILE:
							case RECOVERY:
							case RECURSIVE_TRIGGERS:
							case RELATIVE:
							case REMOTE:
							case REMOTE_SERVICE_NAME:
							case REMOVE:
							case REORGANIZE:
							case REPEATABLE:
							case REPLICA:
							case REQUEST_MAX_CPU_TIME_SEC:
							case REQUEST_MAX_MEMORY_GRANT_PERCENT:
							case REQUEST_MEMORY_GRANT_TIMEOUT_SEC:
							case REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT:
							case RESERVE_DISK_SPACE:
							case RESOURCE:
							case RESOURCE_MANAGER_LOCATION:
							case RESTRICTED_USER:
							case RETENTION:
							case ROBUST:
							case ROOT:
							case ROUTE:
							case ROW:
							case ROW_NUMBER:
							case ROWGUID:
							case ROWS:
							case SAMPLE:
							case SCHEMABINDING:
							case SCOPED:
							case SCROLL:
							case SCROLL_LOCKS:
							case SEARCH:
							case SECONDARY:
							case SECONDARY_ONLY:
							case SECONDARY_ROLE:
							case SECONDS:
							case SECRET:
							case SECURITY_LOG:
							case SEEDING_MODE:
							case SELF:
							case SEMI_SENSITIVE:
							case SEND:
							case SENT:
							case SERIALIZABLE:
							case SESSION_TIMEOUT:
							case SETERROR:
							case SHARE:
							case SHOWPLAN:
							case SIGNATURE:
							case SIMPLE:
							case SINGLE_USER:
							case SIZE:
							case SMALLINT:
							case SNAPSHOT:
							case SPATIAL_WINDOW_MAX_CELLS:
							case STANDBY:
							case START_DATE:
							case STATIC:
							case STATS_STREAM:
							case STATUS:
							case STDEV:
							case STDEVP:
							case STOPLIST:
							case STUFF:
							case SUBJECT:
							case SUM:
							case SUSPEND:
							case SYMMETRIC:
							case SYNCHRONOUS_COMMIT:
							case SYNONYM:
							case TAKE:
							case TARGET_RECOVERY_TIME:
							case TB:
							case TEXTIMAGE_ON:
							case THROW:
							case TIES:
							case TIME:
							case TIMEOUT:
							case TIMER:
							case TINYINT:
							case TORN_PAGE_DETECTION:
							case TRANSFORM_NOISE_WORDS:
							case TRIPLE_DES:
							case TRIPLE_DES_3KEY:
							case TRUSTWORTHY:
							case TRY:
							case TSQL:
							case TWO_DIGIT_YEAR_CUTOFF:
							case TYPE:
							case TYPE_WARNING:
							case UNBOUNDED:
							case UNCOMMITTED:
							case UNKNOWN:
							case UNLIMITED:
							case USING:
							case VALID_XML:
							case VALIDATION:
							case VALUE:
							case VAR:
							case VARP:
							case VIEW_METADATA:
							case VIEWS:
							case WAIT:
							case WELL_FORMED_XML:
							case WORK:
							case WORKLOAD:
							case XML:
							case XMLNAMESPACES:
							case DOUBLE_QUOTE_ID:
							case SQUARE_BRACKET_ID:
							case ID:
								{
								setState(7774);
								id();
								}
								break;
							default:
								throw new NoViableAltException(this);
							}
							}
							break;
						case 17:
							{
							setState(7778);
							_errHandler.sync(this);
							_la = _input.LA(1);
							if (_la==COMMA) {
								{
								setState(7777);
								match(COMMA);
								}
							}

							setState(7780);
							_la = _input.LA(1);
							if ( !(_la==NO_CHECKSUM || _la==CHECKSUM) ) {
							_errHandler.recoverInline(this);
							}
							else {
								if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
								_errHandler.reportMatch(this);
								consume();
							}
							}
							break;
						case 18:
							{
							setState(7782);
							_errHandler.sync(this);
							_la = _input.LA(1);
							if (_la==COMMA) {
								{
								setState(7781);
								match(COMMA);
								}
							}

							setState(7784);
							_la = _input.LA(1);
							if ( !(_la==CONTINUE_AFTER_ERROR || _la==STOP_ON_ERROR) ) {
							_errHandler.recoverInline(this);
							}
							else {
								if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
								_errHandler.reportMatch(this);
								consume();
							}
							}
							break;
						case 19:
							{
							setState(7786);
							_errHandler.sync(this);
							_la = _input.LA(1);
							if (_la==COMMA) {
								{
								setState(7785);
								match(COMMA);
								}
							}

							setState(7788);
							match(RESTART);
							}
							break;
						case 20:
							{
							setState(7790);
							_errHandler.sync(this);
							_la = _input.LA(1);
							if (_la==COMMA) {
								{
								setState(7789);
								match(COMMA);
								}
							}

							setState(7792);
							match(STATS);
							setState(7795);
							_errHandler.sync(this);
							_la = _input.LA(1);
							if (_la==EQUAL) {
								{
								setState(7793);
								match(EQUAL);
								setState(7794);
								((Backup_logContext)_localctx).stats_percent = match(DECIMAL);
								}
							}

							}
							break;
						case 21:
							{
							setState(7798);
							_errHandler.sync(this);
							_la = _input.LA(1);
							if (_la==COMMA) {
								{
								setState(7797);
								match(COMMA);
								}
							}

							setState(7800);
							_la = _input.LA(1);
							if ( !(_la==NOREWIND || _la==REWIND) ) {
							_errHandler.recoverInline(this);
							}
							else {
								if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
								_errHandler.reportMatch(this);
								consume();
							}
							}
							break;
						case 22:
							{
							setState(7802);
							_errHandler.sync(this);
							_la = _input.LA(1);
							if (_la==COMMA) {
								{
								setState(7801);
								match(COMMA);
								}
							}

							setState(7804);
							_la = _input.LA(1);
							if ( !(_la==LOAD || _la==NOUNLOAD) ) {
							_errHandler.recoverInline(this);
							}
							else {
								if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
								_errHandler.reportMatch(this);
								consume();
							}
							}
							break;
						case 23:
							{
							setState(7806);
							_errHandler.sync(this);
							_la = _input.LA(1);
							if (_la==COMMA) {
								{
								setState(7805);
								match(COMMA);
								}
							}

							setState(7812);
							_errHandler.sync(this);
							switch (_input.LA(1)) {
							case NORECOVERY:
								{
								setState(7808);
								match(NORECOVERY);
								}
								break;
							case STANDBY:
								{
								setState(7809);
								match(STANDBY);
								setState(7810);
								match(EQUAL);
								setState(7811);
								((Backup_logContext)_localctx).undo_file_name = match(STRING);
								}
								break;
							default:
								throw new NoViableAltException(this);
							}
							}
							break;
						case 24:
							{
							setState(7815);
							_errHandler.sync(this);
							_la = _input.LA(1);
							if (_la==COMMA) {
								{
								setState(7814);
								match(COMMA);
								}
							}

							setState(7817);
							match(NO_TRUNCATE);
							}
							break;
						case 25:
							{
							setState(7819);
							_errHandler.sync(this);
							_la = _input.LA(1);
							if (_la==COMMA) {
								{
								setState(7818);
								match(COMMA);
								}
							}

							setState(7821);
							match(ENCRYPTION);
							setState(7822);
							match(LR_BRACKET);
							setState(7823);
							match(ALGORITHM);
							setState(7824);
							match(EQUAL);
							setState(7825);
							_la = _input.LA(1);
							if ( !(((((_la - 390)) & ~0x3f) == 0 && ((1L << (_la - 390)) & ((1L << (AES_128 - 390)) | (1L << (AES_192 - 390)) | (1L << (AES_256 - 390)))) != 0) || _la==TRIPLE_DES_3KEY) ) {
							_errHandler.recoverInline(this);
							}
							else {
								if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
								_errHandler.reportMatch(this);
								consume();
							}
							setState(7826);
							match(COMMA);
							setState(7827);
							match(SERVER);
							setState(7828);
							match(CERTIFICATE);
							setState(7829);
							match(EQUAL);
							setState(7836);
							_errHandler.sync(this);
							switch ( getInterpreter().adaptivePredict(_input,1087,_ctx) ) {
							case 1:
								{
								setState(7830);
								((Backup_logContext)_localctx).encryptor_name = id();
								}
								break;
							case 2:
								{
								setState(7831);
								match(SERVER);
								setState(7832);
								match(ASYMMETRIC);
								setState(7833);
								match(KEY);
								setState(7834);
								match(EQUAL);
								setState(7835);
								((Backup_logContext)_localctx).encryptor_name = id();
								}
								break;
							}
							}
							break;
						}
						} 
					}
					setState(7842);
					_errHandler.sync(this);
					_alt = getInterpreter().adaptivePredict(_input,1089,_ctx);
				}
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Backup_certificateContext extends ParserRuleContext {
		public IdContext certname;
		public Token cert_file;
		public Token private_key_file;
		public Token encryption_password;
		public Token decryption_pasword;
		public TerminalNode BACKUP() { return getToken(TSqlParser.BACKUP, 0); }
		public TerminalNode CERTIFICATE() { return getToken(TSqlParser.CERTIFICATE, 0); }
		public TerminalNode TO() { return getToken(TSqlParser.TO, 0); }
		public List FILE() { return getTokens(TSqlParser.FILE); }
		public TerminalNode FILE(int i) {
			return getToken(TSqlParser.FILE, i);
		}
		public List EQUAL() { return getTokens(TSqlParser.EQUAL); }
		public TerminalNode EQUAL(int i) {
			return getToken(TSqlParser.EQUAL, i);
		}
		public IdContext id() {
			return getRuleContext(IdContext.class,0);
		}
		public List STRING() { return getTokens(TSqlParser.STRING); }
		public TerminalNode STRING(int i) {
			return getToken(TSqlParser.STRING, i);
		}
		public TerminalNode WITH() { return getToken(TSqlParser.WITH, 0); }
		public TerminalNode PRIVATE() { return getToken(TSqlParser.PRIVATE, 0); }
		public TerminalNode KEY() { return getToken(TSqlParser.KEY, 0); }
		public TerminalNode LR_BRACKET() { return getToken(TSqlParser.LR_BRACKET, 0); }
		public TerminalNode RR_BRACKET() { return getToken(TSqlParser.RR_BRACKET, 0); }
		public List ENCRYPTION() { return getTokens(TSqlParser.ENCRYPTION); }
		public TerminalNode ENCRYPTION(int i) {
			return getToken(TSqlParser.ENCRYPTION, i);
		}
		public List BY() { return getTokens(TSqlParser.BY); }
		public TerminalNode BY(int i) {
			return getToken(TSqlParser.BY, i);
		}
		public List PASSWORD() { return getTokens(TSqlParser.PASSWORD); }
		public TerminalNode PASSWORD(int i) {
			return getToken(TSqlParser.PASSWORD, i);
		}
		public List DECRYPTION() { return getTokens(TSqlParser.DECRYPTION); }
		public TerminalNode DECRYPTION(int i) {
			return getToken(TSqlParser.DECRYPTION, i);
		}
		public List COMMA() { return getTokens(TSqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(TSqlParser.COMMA, i);
		}
		public Backup_certificateContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_backup_certificate; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterBackup_certificate(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitBackup_certificate(this);
		}
	}

	public final Backup_certificateContext backup_certificate() throws RecognitionException {
		Backup_certificateContext _localctx = new Backup_certificateContext(_ctx, getState());
		enterRule(_localctx, 616, RULE_backup_certificate);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7845);
			match(BACKUP);
			setState(7846);
			match(CERTIFICATE);
			setState(7847);
			((Backup_certificateContext)_localctx).certname = id();
			setState(7848);
			match(TO);
			setState(7849);
			match(FILE);
			setState(7850);
			match(EQUAL);
			setState(7851);
			((Backup_certificateContext)_localctx).cert_file = match(STRING);
			setState(7883);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,1096,_ctx) ) {
			case 1:
				{
				setState(7852);
				match(WITH);
				setState(7853);
				match(PRIVATE);
				setState(7854);
				match(KEY);
				setState(7855);
				match(LR_BRACKET);
				setState(7878); 
				_errHandler.sync(this);
				_la = _input.LA(1);
				do {
					{
					setState(7878);
					_errHandler.sync(this);
					switch ( getInterpreter().adaptivePredict(_input,1094,_ctx) ) {
					case 1:
						{
						setState(7857);
						_errHandler.sync(this);
						_la = _input.LA(1);
						if (_la==COMMA) {
							{
							setState(7856);
							match(COMMA);
							}
						}

						setState(7859);
						match(FILE);
						setState(7860);
						match(EQUAL);
						setState(7861);
						((Backup_certificateContext)_localctx).private_key_file = match(STRING);
						}
						break;
					case 2:
						{
						setState(7863);
						_errHandler.sync(this);
						_la = _input.LA(1);
						if (_la==COMMA) {
							{
							setState(7862);
							match(COMMA);
							}
						}

						setState(7865);
						match(ENCRYPTION);
						setState(7866);
						match(BY);
						setState(7867);
						match(PASSWORD);
						setState(7868);
						match(EQUAL);
						setState(7869);
						((Backup_certificateContext)_localctx).encryption_password = match(STRING);
						}
						break;
					case 3:
						{
						setState(7871);
						_errHandler.sync(this);
						_la = _input.LA(1);
						if (_la==COMMA) {
							{
							setState(7870);
							match(COMMA);
							}
						}

						setState(7873);
						match(DECRYPTION);
						setState(7874);
						match(BY);
						setState(7875);
						match(PASSWORD);
						setState(7876);
						match(EQUAL);
						setState(7877);
						((Backup_certificateContext)_localctx).decryption_pasword = match(STRING);
						}
						break;
					}
					}
					setState(7880); 
					_errHandler.sync(this);
					_la = _input.LA(1);
				} while ( _la==FILE || _la==DECRYPTION || _la==ENCRYPTION || _la==COMMA );
				setState(7882);
				match(RR_BRACKET);
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Backup_master_keyContext extends ParserRuleContext {
		public Token master_key_backup_file;
		public Token encryption_password;
		public TerminalNode BACKUP() { return getToken(TSqlParser.BACKUP, 0); }
		public TerminalNode MASTER() { return getToken(TSqlParser.MASTER, 0); }
		public TerminalNode KEY() { return getToken(TSqlParser.KEY, 0); }
		public TerminalNode TO() { return getToken(TSqlParser.TO, 0); }
		public TerminalNode FILE() { return getToken(TSqlParser.FILE, 0); }
		public List EQUAL() { return getTokens(TSqlParser.EQUAL); }
		public TerminalNode EQUAL(int i) {
			return getToken(TSqlParser.EQUAL, i);
		}
		public TerminalNode ENCRYPTION() { return getToken(TSqlParser.ENCRYPTION, 0); }
		public TerminalNode BY() { return getToken(TSqlParser.BY, 0); }
		public TerminalNode PASSWORD() { return getToken(TSqlParser.PASSWORD, 0); }
		public List STRING() { return getTokens(TSqlParser.STRING); }
		public TerminalNode STRING(int i) {
			return getToken(TSqlParser.STRING, i);
		}
		public Backup_master_keyContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_backup_master_key; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterBackup_master_key(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitBackup_master_key(this);
		}
	}

	public final Backup_master_keyContext backup_master_key() throws RecognitionException {
		Backup_master_keyContext _localctx = new Backup_master_keyContext(_ctx, getState());
		enterRule(_localctx, 618, RULE_backup_master_key);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7885);
			match(BACKUP);
			setState(7886);
			match(MASTER);
			setState(7887);
			match(KEY);
			setState(7888);
			match(TO);
			setState(7889);
			match(FILE);
			setState(7890);
			match(EQUAL);
			setState(7891);
			((Backup_master_keyContext)_localctx).master_key_backup_file = match(STRING);
			setState(7892);
			match(ENCRYPTION);
			setState(7893);
			match(BY);
			setState(7894);
			match(PASSWORD);
			setState(7895);
			match(EQUAL);
			setState(7896);
			((Backup_master_keyContext)_localctx).encryption_password = match(STRING);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Backup_service_master_keyContext extends ParserRuleContext {
		public Token service_master_key_backup_file;
		public Token encryption_password;
		public TerminalNode BACKUP() { return getToken(TSqlParser.BACKUP, 0); }
		public TerminalNode SERVICE() { return getToken(TSqlParser.SERVICE, 0); }
		public TerminalNode MASTER() { return getToken(TSqlParser.MASTER, 0); }
		public TerminalNode KEY() { return getToken(TSqlParser.KEY, 0); }
		public TerminalNode TO() { return getToken(TSqlParser.TO, 0); }
		public TerminalNode FILE() { return getToken(TSqlParser.FILE, 0); }
		public List EQUAL() { return getTokens(TSqlParser.EQUAL); }
		public TerminalNode EQUAL(int i) {
			return getToken(TSqlParser.EQUAL, i);
		}
		public TerminalNode ENCRYPTION() { return getToken(TSqlParser.ENCRYPTION, 0); }
		public TerminalNode BY() { return getToken(TSqlParser.BY, 0); }
		public TerminalNode PASSWORD() { return getToken(TSqlParser.PASSWORD, 0); }
		public List STRING() { return getTokens(TSqlParser.STRING); }
		public TerminalNode STRING(int i) {
			return getToken(TSqlParser.STRING, i);
		}
		public Backup_service_master_keyContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_backup_service_master_key; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterBackup_service_master_key(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitBackup_service_master_key(this);
		}
	}

	public final Backup_service_master_keyContext backup_service_master_key() throws RecognitionException {
		Backup_service_master_keyContext _localctx = new Backup_service_master_keyContext(_ctx, getState());
		enterRule(_localctx, 620, RULE_backup_service_master_key);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7898);
			match(BACKUP);
			setState(7899);
			match(SERVICE);
			setState(7900);
			match(MASTER);
			setState(7901);
			match(KEY);
			setState(7902);
			match(TO);
			setState(7903);
			match(FILE);
			setState(7904);
			match(EQUAL);
			setState(7905);
			((Backup_service_master_keyContext)_localctx).service_master_key_backup_file = match(STRING);
			setState(7906);
			match(ENCRYPTION);
			setState(7907);
			match(BY);
			setState(7908);
			match(PASSWORD);
			setState(7909);
			match(EQUAL);
			setState(7910);
			((Backup_service_master_keyContext)_localctx).encryption_password = match(STRING);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Execute_statementContext extends ParserRuleContext {
		public TerminalNode EXECUTE() { return getToken(TSqlParser.EXECUTE, 0); }
		public Execute_bodyContext execute_body() {
			return getRuleContext(Execute_bodyContext.class,0);
		}
		public Execute_statementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_execute_statement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterExecute_statement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitExecute_statement(this);
		}
	}

	public final Execute_statementContext execute_statement() throws RecognitionException {
		Execute_statementContext _localctx = new Execute_statementContext(_ctx, getState());
		enterRule(_localctx, 622, RULE_execute_statement);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7912);
			match(EXECUTE);
			setState(7913);
			execute_body();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Execute_bodyContext extends ParserRuleContext {
		public Token return_status;
		public Func_proc_name_server_database_schemaContext func_proc_name_server_database_schema() {
			return getRuleContext(Func_proc_name_server_database_schemaContext.class,0);
		}
		public ExpressionContext expression() {
			return getRuleContext(ExpressionContext.class,0);
		}
		public TerminalNode EQUAL() { return getToken(TSqlParser.EQUAL, 0); }
		public List execute_statement_arg() {
			return getRuleContexts(Execute_statement_argContext.class);
		}
		public Execute_statement_argContext execute_statement_arg(int i) {
			return getRuleContext(Execute_statement_argContext.class,i);
		}
		public TerminalNode SEMI() { return getToken(TSqlParser.SEMI, 0); }
		public TerminalNode LOCAL_ID() { return getToken(TSqlParser.LOCAL_ID, 0); }
		public List COMMA() { return getTokens(TSqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(TSqlParser.COMMA, i);
		}
		public TerminalNode LR_BRACKET() { return getToken(TSqlParser.LR_BRACKET, 0); }
		public List execute_var_string() {
			return getRuleContexts(Execute_var_stringContext.class);
		}
		public Execute_var_stringContext execute_var_string(int i) {
			return getRuleContext(Execute_var_stringContext.class,i);
		}
		public TerminalNode RR_BRACKET() { return getToken(TSqlParser.RR_BRACKET, 0); }
		public List PLUS() { return getTokens(TSqlParser.PLUS); }
		public TerminalNode PLUS(int i) {
			return getToken(TSqlParser.PLUS, i);
		}
		public TerminalNode STRING() { return getToken(TSqlParser.STRING, 0); }
		public TerminalNode LOGIN() { return getToken(TSqlParser.LOGIN, 0); }
		public TerminalNode USER() { return getToken(TSqlParser.USER, 0); }
		public TerminalNode AS() { return getToken(TSqlParser.AS, 0); }
		public Execute_bodyContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_execute_body; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterExecute_body(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitExecute_body(this);
		}
	}

	public final Execute_bodyContext execute_body() throws RecognitionException {
		Execute_bodyContext _localctx = new Execute_bodyContext(_ctx, getState());
		enterRule(_localctx, 624, RULE_execute_body);
		int _la;
		try {
			setState(7957);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,1106,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(7917);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1097,_ctx) ) {
				case 1:
					{
					setState(7915);
					((Execute_bodyContext)_localctx).return_status = match(LOCAL_ID);
					setState(7916);
					match(EQUAL);
					}
					break;
				}
				setState(7921);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1098,_ctx) ) {
				case 1:
					{
					setState(7919);
					func_proc_name_server_database_schema();
					}
					break;
				case 2:
					{
					setState(7920);
					expression(0);
					}
					break;
				}
				setState(7931);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1100,_ctx) ) {
				case 1:
					{
					setState(7923);
					execute_statement_arg();
					setState(7928);
					_errHandler.sync(this);
					_la = _input.LA(1);
					while (_la==COMMA) {
						{
						{
						setState(7924);
						match(COMMA);
						setState(7925);
						execute_statement_arg();
						}
						}
						setState(7930);
						_errHandler.sync(this);
						_la = _input.LA(1);
					}
					}
					break;
				}
				setState(7934);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1101,_ctx) ) {
				case 1:
					{
					setState(7933);
					match(SEMI);
					}
					break;
				}
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(7936);
				match(LR_BRACKET);
				setState(7937);
				execute_var_string();
				setState(7942);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==PLUS) {
					{
					{
					setState(7938);
					match(PLUS);
					setState(7939);
					execute_var_string();
					}
					}
					setState(7944);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				setState(7945);
				match(RR_BRACKET);
				setState(7952);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1104,_ctx) ) {
				case 1:
					{
					setState(7947);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==AS) {
						{
						setState(7946);
						match(AS);
						}
					}

					setState(7949);
					_la = _input.LA(1);
					if ( !(_la==USER || _la==LOGIN) ) {
					_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					setState(7950);
					match(EQUAL);
					setState(7951);
					match(STRING);
					}
					break;
				}
				setState(7955);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1105,_ctx) ) {
				case 1:
					{
					setState(7954);
					match(SEMI);
					}
					break;
				}
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Execute_statement_argContext extends ParserRuleContext {
		public Token parameter;
		public TerminalNode DEFAULT() { return getToken(TSqlParser.DEFAULT, 0); }
		public TerminalNode NULL() { return getToken(TSqlParser.NULL, 0); }
		public TerminalNode EQUAL() { return getToken(TSqlParser.EQUAL, 0); }
		public TerminalNode LOCAL_ID() { return getToken(TSqlParser.LOCAL_ID, 0); }
		public Constant_LOCAL_IDContext constant_LOCAL_ID() {
			return getRuleContext(Constant_LOCAL_IDContext.class,0);
		}
		public IdContext id() {
			return getRuleContext(IdContext.class,0);
		}
		public TerminalNode OUTPUT() { return getToken(TSqlParser.OUTPUT, 0); }
		public TerminalNode OUT() { return getToken(TSqlParser.OUT, 0); }
		public Execute_statement_argContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_execute_statement_arg; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterExecute_statement_arg(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitExecute_statement_arg(this);
		}
	}

	public final Execute_statement_argContext execute_statement_arg() throws RecognitionException {
		Execute_statement_argContext _localctx = new Execute_statement_argContext(_ctx, getState());
		enterRule(_localctx, 626, RULE_execute_statement_arg);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7961);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,1107,_ctx) ) {
			case 1:
				{
				setState(7959);
				((Execute_statement_argContext)_localctx).parameter = match(LOCAL_ID);
				setState(7960);
				match(EQUAL);
				}
				break;
			}
			setState(7972);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case CALLED:
			case DATA_COMPRESSION:
			case EVENTDATA:
			case FILENAME:
			case FILLFACTOR:
			case FORCESEEK:
			case INIT:
			case KEY:
			case MASTER:
			case MAX_MEMORY:
			case OFFSETS:
			case PAGE:
			case PUBLIC:
			case R:
			case RAW:
			case RETURN:
			case RETURNS:
			case ROWCOUNT:
			case SAFETY:
			case SERVER:
			case SID:
			case SOURCE:
			case STATE:
			case START:
			case TARGET:
			case ABSOLUTE:
			case ACCENT_SENSITIVITY:
			case ACTION:
			case ACTIVATION:
			case ACTIVE:
			case ADDRESS:
			case AES_128:
			case AES_192:
			case AES_256:
			case AFFINITY:
			case AFTER:
			case AGGREGATE:
			case ALGORITHM:
			case ALLOW_ENCRYPTED_VALUE_MODIFICATIONS:
			case ALLOW_SNAPSHOT_ISOLATION:
			case ALLOWED:
			case ANSI_NULL_DEFAULT:
			case ANSI_NULLS:
			case ANSI_PADDING:
			case ANSI_WARNINGS:
			case APPLICATION_LOG:
			case APPLY:
			case ARITHABORT:
			case ASSEMBLY:
			case AUDIT:
			case AUDIT_GUID:
			case AUTO:
			case AUTO_CLEANUP:
			case AUTO_CLOSE:
			case AUTO_CREATE_STATISTICS:
			case AUTO_SHRINK:
			case AUTO_UPDATE_STATISTICS:
			case AUTO_UPDATE_STATISTICS_ASYNC:
			case AVAILABILITY:
			case AVG:
			case BACKUP_PRIORITY:
			case BEGIN_DIALOG:
			case BIGINT:
			case BINARY_BASE64:
			case BINARY_CHECKSUM:
			case BINDING:
			case BLOB_STORAGE:
			case BROKER:
			case BROKER_INSTANCE:
			case BULK_LOGGED:
			case CALLER:
			case CAP_CPU_PERCENT:
			case CAST:
			case CATALOG:
			case CATCH:
			case CHANGE_RETENTION:
			case CHANGE_TRACKING:
			case CHECKSUM:
			case CHECKSUM_AGG:
			case CLEANUP:
			case COLLECTION:
			case COLUMN_MASTER_KEY:
			case COMMITTED:
			case COMPATIBILITY_LEVEL:
			case CONCAT:
			case CONCAT_NULL_YIELDS_NULL:
			case CONTENT:
			case CONTROL:
			case COOKIE:
			case COUNT:
			case COUNT_BIG:
			case COUNTER:
			case CPU:
			case CREATE_NEW:
			case CREATION_DISPOSITION:
			case CREDENTIAL:
			case CRYPTOGRAPHIC:
			case CURSOR_CLOSE_ON_COMMIT:
			case CURSOR_DEFAULT:
			case DATE_CORRELATION_OPTIMIZATION:
			case DATEADD:
			case DATEDIFF:
			case DATENAME:
			case DATEPART:
			case DAYS:
			case DB_CHAINING:
			case DB_FAILOVER:
			case DECRYPTION:
			case DEFAULT_DOUBLE_QUOTE:
			case DEFAULT_FULLTEXT_LANGUAGE:
			case DEFAULT_LANGUAGE:
			case DELAY:
			case DELAYED_DURABILITY:
			case DELETED:
			case DENSE_RANK:
			case DEPENDENTS:
			case DES:
			case DESCRIPTION:
			case DESX:
			case DHCP:
			case DIALOG:
			case DIRECTORY_NAME:
			case DISABLE:
			case DISABLE_BROKER:
			case DISABLED:
			case DISK_DRIVE:
			case DOCUMENT:
			case DYNAMIC:
			case EMERGENCY:
			case EMPTY:
			case ENABLE:
			case ENABLE_BROKER:
			case ENCRYPTED_VALUE:
			case ENCRYPTION:
			case ENDPOINT_URL:
			case ERROR_BROKER_CONVERSATIONS:
			case EXCLUSIVE:
			case EXECUTABLE:
			case EXIST:
			case EXPAND:
			case EXPIRY_DATE:
			case EXPLICIT:
			case FAIL_OPERATION:
			case FAILOVER_MODE:
			case FAILURE:
			case FAILURE_CONDITION_LEVEL:
			case FAST:
			case FAST_FORWARD:
			case FILEGROUP:
			case FILEGROWTH:
			case FILEPATH:
			case FILESTREAM:
			case FILTER:
			case FIRST:
			case FIRST_VALUE:
			case FOLLOWING:
			case FORCE:
			case FORCE_FAILOVER_ALLOW_DATA_LOSS:
			case FORCED:
			case FORMAT:
			case FORWARD_ONLY:
			case FULLSCAN:
			case FULLTEXT:
			case GB:
			case GETDATE:
			case GETUTCDATE:
			case GLOBAL:
			case GO:
			case GROUP_MAX_REQUESTS:
			case GROUPING:
			case GROUPING_ID:
			case HADR:
			case HASH:
			case HEALTH_CHECK_TIMEOUT:
			case HIGH:
			case HONOR_BROKER_PRIORITY:
			case HOURS:
			case IDENTITY_VALUE:
			case IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX:
			case IMMEDIATE:
			case IMPERSONATE:
			case IMPORTANCE:
			case INCREMENTAL:
			case INITIATOR:
			case INPUT:
			case INSENSITIVE:
			case INSERTED:
			case INT:
			case IP:
			case ISOLATION:
			case KB:
			case KEEP:
			case KEEPFIXED:
			case KEY_SOURCE:
			case KEYS:
			case KEYSET:
			case LAG:
			case LAST:
			case LAST_VALUE:
			case LEAD:
			case LEVEL:
			case LIST:
			case LISTENER:
			case LISTENER_URL:
			case LOB_COMPACTION:
			case LOCAL:
			case LOCATION:
			case LOCK:
			case LOCK_ESCALATION:
			case LOGIN:
			case LOOP:
			case LOW:
			case MANUAL:
			case MARK:
			case MATERIALIZED:
			case MAX:
			case MAX_CPU_PERCENT:
			case MAX_DOP:
			case MAX_FILES:
			case MAX_IOPS_PER_VOLUME:
			case MAX_MEMORY_PERCENT:
			case MAX_PROCESSES:
			case MAX_QUEUE_READERS:
			case MAX_ROLLOVER_FILES:
			case MAXDOP:
			case MAXRECURSION:
			case MAXSIZE:
			case MB:
			case MEDIUM:
			case MEMORY_OPTIMIZED_DATA:
			case MESSAGE:
			case MIN:
			case MIN_ACTIVE_ROWVERSION:
			case MIN_CPU_PERCENT:
			case MIN_IOPS_PER_VOLUME:
			case MIN_MEMORY_PERCENT:
			case MINUTES:
			case MIRROR_ADDRESS:
			case MIXED_PAGE_ALLOCATION:
			case MODE:
			case MODIFY:
			case MOVE:
			case MULTI_USER:
			case NAME:
			case NESTED_TRIGGERS:
			case NEW_ACCOUNT:
			case NEW_BROKER:
			case NEW_PASSWORD:
			case NEXT:
			case NO:
			case NO_TRUNCATE:
			case NO_WAIT:
			case NOCOUNT:
			case NODES:
			case NOEXPAND:
			case NON_TRANSACTED_ACCESS:
			case NORECOMPUTE:
			case NORECOVERY:
			case NOWAIT:
			case NTILE:
			case NUMANODE:
			case NUMBER:
			case NUMERIC_ROUNDABORT:
			case OBJECT:
			case OFFLINE:
			case OFFSET:
			case OLD_ACCOUNT:
			case ONLINE:
			case ONLY:
			case OPEN_EXISTING:
			case OPTIMISTIC:
			case OPTIMIZE:
			case OUT:
			case OUTPUT:
			case OWNER:
			case PAGE_VERIFY:
			case PARAMETERIZATION:
			case PARTITION:
			case PARTITIONS:
			case PARTNER:
			case PATH:
			case POISON_MESSAGE_HANDLING:
			case POOL:
			case PORT:
			case PRECEDING:
			case PRIMARY_ROLE:
			case PRIOR:
			case PRIORITY:
			case PRIORITY_LEVEL:
			case PRIVATE:
			case PRIVATE_KEY:
			case PRIVILEGES:
			case PROCEDURE_NAME:
			case PROPERTY:
			case PROVIDER:
			case PROVIDER_KEY_NAME:
			case QUERY:
			case QUEUE:
			case QUEUE_DELAY:
			case QUOTED_IDENTIFIER:
			case RANGE:
			case RANK:
			case RC2:
			case RC4:
			case RC4_128:
			case READ_COMMITTED_SNAPSHOT:
			case READ_ONLY:
			case READ_ONLY_ROUTING_LIST:
			case READ_WRITE:
			case READONLY:
			case REBUILD:
			case RECEIVE:
			case RECOMPILE:
			case RECOVERY:
			case RECURSIVE_TRIGGERS:
			case RELATIVE:
			case REMOTE:
			case REMOTE_SERVICE_NAME:
			case REMOVE:
			case REORGANIZE:
			case REPEATABLE:
			case REPLICA:
			case REQUEST_MAX_CPU_TIME_SEC:
			case REQUEST_MAX_MEMORY_GRANT_PERCENT:
			case REQUEST_MEMORY_GRANT_TIMEOUT_SEC:
			case REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT:
			case RESERVE_DISK_SPACE:
			case RESOURCE:
			case RESOURCE_MANAGER_LOCATION:
			case RESTRICTED_USER:
			case RETENTION:
			case ROBUST:
			case ROOT:
			case ROUTE:
			case ROW:
			case ROW_NUMBER:
			case ROWGUID:
			case ROWS:
			case SAMPLE:
			case SCHEMABINDING:
			case SCOPED:
			case SCROLL:
			case SCROLL_LOCKS:
			case SEARCH:
			case SECONDARY:
			case SECONDARY_ONLY:
			case SECONDARY_ROLE:
			case SECONDS:
			case SECRET:
			case SECURITY_LOG:
			case SEEDING_MODE:
			case SELF:
			case SEMI_SENSITIVE:
			case SEND:
			case SENT:
			case SERIALIZABLE:
			case SESSION_TIMEOUT:
			case SETERROR:
			case SHARE:
			case SHOWPLAN:
			case SIGNATURE:
			case SIMPLE:
			case SINGLE_USER:
			case SIZE:
			case SMALLINT:
			case SNAPSHOT:
			case SPATIAL_WINDOW_MAX_CELLS:
			case STANDBY:
			case START_DATE:
			case STATIC:
			case STATS_STREAM:
			case STATUS:
			case STDEV:
			case STDEVP:
			case STOPLIST:
			case STUFF:
			case SUBJECT:
			case SUM:
			case SUSPEND:
			case SYMMETRIC:
			case SYNCHRONOUS_COMMIT:
			case SYNONYM:
			case TAKE:
			case TARGET_RECOVERY_TIME:
			case TB:
			case TEXTIMAGE_ON:
			case THROW:
			case TIES:
			case TIME:
			case TIMEOUT:
			case TIMER:
			case TINYINT:
			case TORN_PAGE_DETECTION:
			case TRANSFORM_NOISE_WORDS:
			case TRIPLE_DES:
			case TRIPLE_DES_3KEY:
			case TRUSTWORTHY:
			case TRY:
			case TSQL:
			case TWO_DIGIT_YEAR_CUTOFF:
			case TYPE:
			case TYPE_WARNING:
			case UNBOUNDED:
			case UNCOMMITTED:
			case UNKNOWN:
			case UNLIMITED:
			case USING:
			case VALID_XML:
			case VALIDATION:
			case VALUE:
			case VAR:
			case VARP:
			case VIEW_METADATA:
			case VIEWS:
			case WAIT:
			case WELL_FORMED_XML:
			case WORK:
			case WORKLOAD:
			case XML:
			case XMLNAMESPACES:
			case DOUBLE_QUOTE_ID:
			case SQUARE_BRACKET_ID:
			case LOCAL_ID:
			case DECIMAL:
			case ID:
			case STRING:
			case BINARY:
			case FLOAT:
			case REAL:
			case DOLLAR:
			case PLUS:
			case MINUS:
				{
				setState(7965);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case LOCAL_ID:
				case DECIMAL:
				case STRING:
				case BINARY:
				case FLOAT:
				case REAL:
				case DOLLAR:
				case PLUS:
				case MINUS:
					{
					setState(7963);
					constant_LOCAL_ID();
					}
					break;
				case CALLED:
				case DATA_COMPRESSION:
				case EVENTDATA:
				case FILENAME:
				case FILLFACTOR:
				case FORCESEEK:
				case INIT:
				case KEY:
				case MASTER:
				case MAX_MEMORY:
				case OFFSETS:
				case PAGE:
				case PUBLIC:
				case R:
				case RAW:
				case RETURN:
				case RETURNS:
				case ROWCOUNT:
				case SAFETY:
				case SERVER:
				case SID:
				case SOURCE:
				case STATE:
				case START:
				case TARGET:
				case ABSOLUTE:
				case ACCENT_SENSITIVITY:
				case ACTION:
				case ACTIVATION:
				case ACTIVE:
				case ADDRESS:
				case AES_128:
				case AES_192:
				case AES_256:
				case AFFINITY:
				case AFTER:
				case AGGREGATE:
				case ALGORITHM:
				case ALLOW_ENCRYPTED_VALUE_MODIFICATIONS:
				case ALLOW_SNAPSHOT_ISOLATION:
				case ALLOWED:
				case ANSI_NULL_DEFAULT:
				case ANSI_NULLS:
				case ANSI_PADDING:
				case ANSI_WARNINGS:
				case APPLICATION_LOG:
				case APPLY:
				case ARITHABORT:
				case ASSEMBLY:
				case AUDIT:
				case AUDIT_GUID:
				case AUTO:
				case AUTO_CLEANUP:
				case AUTO_CLOSE:
				case AUTO_CREATE_STATISTICS:
				case AUTO_SHRINK:
				case AUTO_UPDATE_STATISTICS:
				case AUTO_UPDATE_STATISTICS_ASYNC:
				case AVAILABILITY:
				case AVG:
				case BACKUP_PRIORITY:
				case BEGIN_DIALOG:
				case BIGINT:
				case BINARY_BASE64:
				case BINARY_CHECKSUM:
				case BINDING:
				case BLOB_STORAGE:
				case BROKER:
				case BROKER_INSTANCE:
				case BULK_LOGGED:
				case CALLER:
				case CAP_CPU_PERCENT:
				case CAST:
				case CATALOG:
				case CATCH:
				case CHANGE_RETENTION:
				case CHANGE_TRACKING:
				case CHECKSUM:
				case CHECKSUM_AGG:
				case CLEANUP:
				case COLLECTION:
				case COLUMN_MASTER_KEY:
				case COMMITTED:
				case COMPATIBILITY_LEVEL:
				case CONCAT:
				case CONCAT_NULL_YIELDS_NULL:
				case CONTENT:
				case CONTROL:
				case COOKIE:
				case COUNT:
				case COUNT_BIG:
				case COUNTER:
				case CPU:
				case CREATE_NEW:
				case CREATION_DISPOSITION:
				case CREDENTIAL:
				case CRYPTOGRAPHIC:
				case CURSOR_CLOSE_ON_COMMIT:
				case CURSOR_DEFAULT:
				case DATE_CORRELATION_OPTIMIZATION:
				case DATEADD:
				case DATEDIFF:
				case DATENAME:
				case DATEPART:
				case DAYS:
				case DB_CHAINING:
				case DB_FAILOVER:
				case DECRYPTION:
				case DEFAULT_DOUBLE_QUOTE:
				case DEFAULT_FULLTEXT_LANGUAGE:
				case DEFAULT_LANGUAGE:
				case DELAY:
				case DELAYED_DURABILITY:
				case DELETED:
				case DENSE_RANK:
				case DEPENDENTS:
				case DES:
				case DESCRIPTION:
				case DESX:
				case DHCP:
				case DIALOG:
				case DIRECTORY_NAME:
				case DISABLE:
				case DISABLE_BROKER:
				case DISABLED:
				case DISK_DRIVE:
				case DOCUMENT:
				case DYNAMIC:
				case EMERGENCY:
				case EMPTY:
				case ENABLE:
				case ENABLE_BROKER:
				case ENCRYPTED_VALUE:
				case ENCRYPTION:
				case ENDPOINT_URL:
				case ERROR_BROKER_CONVERSATIONS:
				case EXCLUSIVE:
				case EXECUTABLE:
				case EXIST:
				case EXPAND:
				case EXPIRY_DATE:
				case EXPLICIT:
				case FAIL_OPERATION:
				case FAILOVER_MODE:
				case FAILURE:
				case FAILURE_CONDITION_LEVEL:
				case FAST:
				case FAST_FORWARD:
				case FILEGROUP:
				case FILEGROWTH:
				case FILEPATH:
				case FILESTREAM:
				case FILTER:
				case FIRST:
				case FIRST_VALUE:
				case FOLLOWING:
				case FORCE:
				case FORCE_FAILOVER_ALLOW_DATA_LOSS:
				case FORCED:
				case FORMAT:
				case FORWARD_ONLY:
				case FULLSCAN:
				case FULLTEXT:
				case GB:
				case GETDATE:
				case GETUTCDATE:
				case GLOBAL:
				case GO:
				case GROUP_MAX_REQUESTS:
				case GROUPING:
				case GROUPING_ID:
				case HADR:
				case HASH:
				case HEALTH_CHECK_TIMEOUT:
				case HIGH:
				case HONOR_BROKER_PRIORITY:
				case HOURS:
				case IDENTITY_VALUE:
				case IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX:
				case IMMEDIATE:
				case IMPERSONATE:
				case IMPORTANCE:
				case INCREMENTAL:
				case INITIATOR:
				case INPUT:
				case INSENSITIVE:
				case INSERTED:
				case INT:
				case IP:
				case ISOLATION:
				case KB:
				case KEEP:
				case KEEPFIXED:
				case KEY_SOURCE:
				case KEYS:
				case KEYSET:
				case LAG:
				case LAST:
				case LAST_VALUE:
				case LEAD:
				case LEVEL:
				case LIST:
				case LISTENER:
				case LISTENER_URL:
				case LOB_COMPACTION:
				case LOCAL:
				case LOCATION:
				case LOCK:
				case LOCK_ESCALATION:
				case LOGIN:
				case LOOP:
				case LOW:
				case MANUAL:
				case MARK:
				case MATERIALIZED:
				case MAX:
				case MAX_CPU_PERCENT:
				case MAX_DOP:
				case MAX_FILES:
				case MAX_IOPS_PER_VOLUME:
				case MAX_MEMORY_PERCENT:
				case MAX_PROCESSES:
				case MAX_QUEUE_READERS:
				case MAX_ROLLOVER_FILES:
				case MAXDOP:
				case MAXRECURSION:
				case MAXSIZE:
				case MB:
				case MEDIUM:
				case MEMORY_OPTIMIZED_DATA:
				case MESSAGE:
				case MIN:
				case MIN_ACTIVE_ROWVERSION:
				case MIN_CPU_PERCENT:
				case MIN_IOPS_PER_VOLUME:
				case MIN_MEMORY_PERCENT:
				case MINUTES:
				case MIRROR_ADDRESS:
				case MIXED_PAGE_ALLOCATION:
				case MODE:
				case MODIFY:
				case MOVE:
				case MULTI_USER:
				case NAME:
				case NESTED_TRIGGERS:
				case NEW_ACCOUNT:
				case NEW_BROKER:
				case NEW_PASSWORD:
				case NEXT:
				case NO:
				case NO_TRUNCATE:
				case NO_WAIT:
				case NOCOUNT:
				case NODES:
				case NOEXPAND:
				case NON_TRANSACTED_ACCESS:
				case NORECOMPUTE:
				case NORECOVERY:
				case NOWAIT:
				case NTILE:
				case NUMANODE:
				case NUMBER:
				case NUMERIC_ROUNDABORT:
				case OBJECT:
				case OFFLINE:
				case OFFSET:
				case OLD_ACCOUNT:
				case ONLINE:
				case ONLY:
				case OPEN_EXISTING:
				case OPTIMISTIC:
				case OPTIMIZE:
				case OUT:
				case OUTPUT:
				case OWNER:
				case PAGE_VERIFY:
				case PARAMETERIZATION:
				case PARTITION:
				case PARTITIONS:
				case PARTNER:
				case PATH:
				case POISON_MESSAGE_HANDLING:
				case POOL:
				case PORT:
				case PRECEDING:
				case PRIMARY_ROLE:
				case PRIOR:
				case PRIORITY:
				case PRIORITY_LEVEL:
				case PRIVATE:
				case PRIVATE_KEY:
				case PRIVILEGES:
				case PROCEDURE_NAME:
				case PROPERTY:
				case PROVIDER:
				case PROVIDER_KEY_NAME:
				case QUERY:
				case QUEUE:
				case QUEUE_DELAY:
				case QUOTED_IDENTIFIER:
				case RANGE:
				case RANK:
				case RC2:
				case RC4:
				case RC4_128:
				case READ_COMMITTED_SNAPSHOT:
				case READ_ONLY:
				case READ_ONLY_ROUTING_LIST:
				case READ_WRITE:
				case READONLY:
				case REBUILD:
				case RECEIVE:
				case RECOMPILE:
				case RECOVERY:
				case RECURSIVE_TRIGGERS:
				case RELATIVE:
				case REMOTE:
				case REMOTE_SERVICE_NAME:
				case REMOVE:
				case REORGANIZE:
				case REPEATABLE:
				case REPLICA:
				case REQUEST_MAX_CPU_TIME_SEC:
				case REQUEST_MAX_MEMORY_GRANT_PERCENT:
				case REQUEST_MEMORY_GRANT_TIMEOUT_SEC:
				case REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT:
				case RESERVE_DISK_SPACE:
				case RESOURCE:
				case RESOURCE_MANAGER_LOCATION:
				case RESTRICTED_USER:
				case RETENTION:
				case ROBUST:
				case ROOT:
				case ROUTE:
				case ROW:
				case ROW_NUMBER:
				case ROWGUID:
				case ROWS:
				case SAMPLE:
				case SCHEMABINDING:
				case SCOPED:
				case SCROLL:
				case SCROLL_LOCKS:
				case SEARCH:
				case SECONDARY:
				case SECONDARY_ONLY:
				case SECONDARY_ROLE:
				case SECONDS:
				case SECRET:
				case SECURITY_LOG:
				case SEEDING_MODE:
				case SELF:
				case SEMI_SENSITIVE:
				case SEND:
				case SENT:
				case SERIALIZABLE:
				case SESSION_TIMEOUT:
				case SETERROR:
				case SHARE:
				case SHOWPLAN:
				case SIGNATURE:
				case SIMPLE:
				case SINGLE_USER:
				case SIZE:
				case SMALLINT:
				case SNAPSHOT:
				case SPATIAL_WINDOW_MAX_CELLS:
				case STANDBY:
				case START_DATE:
				case STATIC:
				case STATS_STREAM:
				case STATUS:
				case STDEV:
				case STDEVP:
				case STOPLIST:
				case STUFF:
				case SUBJECT:
				case SUM:
				case SUSPEND:
				case SYMMETRIC:
				case SYNCHRONOUS_COMMIT:
				case SYNONYM:
				case TAKE:
				case TARGET_RECOVERY_TIME:
				case TB:
				case TEXTIMAGE_ON:
				case THROW:
				case TIES:
				case TIME:
				case TIMEOUT:
				case TIMER:
				case TINYINT:
				case TORN_PAGE_DETECTION:
				case TRANSFORM_NOISE_WORDS:
				case TRIPLE_DES:
				case TRIPLE_DES_3KEY:
				case TRUSTWORTHY:
				case TRY:
				case TSQL:
				case TWO_DIGIT_YEAR_CUTOFF:
				case TYPE:
				case TYPE_WARNING:
				case UNBOUNDED:
				case UNCOMMITTED:
				case UNKNOWN:
				case UNLIMITED:
				case USING:
				case VALID_XML:
				case VALIDATION:
				case VALUE:
				case VAR:
				case VARP:
				case VIEW_METADATA:
				case VIEWS:
				case WAIT:
				case WELL_FORMED_XML:
				case WORK:
				case WORKLOAD:
				case XML:
				case XMLNAMESPACES:
				case DOUBLE_QUOTE_ID:
				case SQUARE_BRACKET_ID:
				case ID:
					{
					setState(7964);
					id();
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				setState(7968);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1109,_ctx) ) {
				case 1:
					{
					setState(7967);
					_la = _input.LA(1);
					if ( !(_la==OUT || _la==OUTPUT) ) {
					_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					}
					break;
				}
				}
				break;
			case DEFAULT:
				{
				setState(7970);
				match(DEFAULT);
				}
				break;
			case NULL:
				{
				setState(7971);
				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 Execute_var_stringContext extends ParserRuleContext {
		public TerminalNode LOCAL_ID() { return getToken(TSqlParser.LOCAL_ID, 0); }
		public TerminalNode STRING() { return getToken(TSqlParser.STRING, 0); }
		public Execute_var_stringContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_execute_var_string; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterExecute_var_string(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitExecute_var_string(this);
		}
	}

	public final Execute_var_stringContext execute_var_string() throws RecognitionException {
		Execute_var_stringContext _localctx = new Execute_var_stringContext(_ctx, getState());
		enterRule(_localctx, 628, RULE_execute_var_string);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7974);
			_la = _input.LA(1);
			if ( !(_la==LOCAL_ID || _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 Security_statementContext extends ParserRuleContext {
		public Table_nameContext on_id;
		public IdContext id;
		public List to_principal = new ArrayList();
		public IdContext as_principal;
		public Execute_clauseContext execute_clause() {
			return getRuleContext(Execute_clauseContext.class,0);
		}
		public TerminalNode SEMI() { return getToken(TSqlParser.SEMI, 0); }
		public List GRANT() { return getTokens(TSqlParser.GRANT); }
		public TerminalNode GRANT(int i) {
			return getToken(TSqlParser.GRANT, i);
		}
		public TerminalNode TO() { return getToken(TSqlParser.TO, 0); }
		public TerminalNode ALL() { return getToken(TSqlParser.ALL, 0); }
		public Grant_permissionContext grant_permission() {
			return getRuleContext(Grant_permissionContext.class,0);
		}
		public TerminalNode ON() { return getToken(TSqlParser.ON, 0); }
		public List id() {
			return getRuleContexts(IdContext.class);
		}
		public IdContext id(int i) {
			return getRuleContext(IdContext.class,i);
		}
		public List COMMA() { return getTokens(TSqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(TSqlParser.COMMA, i);
		}
		public TerminalNode WITH() { return getToken(TSqlParser.WITH, 0); }
		public TerminalNode OPTION() { return getToken(TSqlParser.OPTION, 0); }
		public TerminalNode AS() { return getToken(TSqlParser.AS, 0); }
		public Table_nameContext table_name() {
			return getRuleContext(Table_nameContext.class,0);
		}
		public TerminalNode PRIVILEGES() { return getToken(TSqlParser.PRIVILEGES, 0); }
		public TerminalNode LR_BRACKET() { return getToken(TSqlParser.LR_BRACKET, 0); }
		public Column_name_listContext column_name_list() {
			return getRuleContext(Column_name_listContext.class,0);
		}
		public TerminalNode RR_BRACKET() { return getToken(TSqlParser.RR_BRACKET, 0); }
		public TerminalNode REVERT() { return getToken(TSqlParser.REVERT, 0); }
		public TerminalNode COOKIE() { return getToken(TSqlParser.COOKIE, 0); }
		public TerminalNode EQUAL() { return getToken(TSqlParser.EQUAL, 0); }
		public TerminalNode LOCAL_ID() { return getToken(TSqlParser.LOCAL_ID, 0); }
		public Open_keyContext open_key() {
			return getRuleContext(Open_keyContext.class,0);
		}
		public Close_keyContext close_key() {
			return getRuleContext(Close_keyContext.class,0);
		}
		public Create_keyContext create_key() {
			return getRuleContext(Create_keyContext.class,0);
		}
		public Create_certificateContext create_certificate() {
			return getRuleContext(Create_certificateContext.class,0);
		}
		public Security_statementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_security_statement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterSecurity_statement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitSecurity_statement(this);
		}
	}

	public final Security_statementContext security_statement() throws RecognitionException {
		Security_statementContext _localctx = new Security_statementContext(_ctx, getState());
		enterRule(_localctx, 630, RULE_security_statement);
		int _la;
		try {
			setState(8035);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,1122,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(7976);
				execute_clause();
				setState(7978);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1111,_ctx) ) {
				case 1:
					{
					setState(7977);
					match(SEMI);
					}
					break;
				}
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(7980);
				match(GRANT);
				setState(7992);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case ALL:
					{
					setState(7981);
					match(ALL);
					setState(7983);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==PRIVILEGES) {
						{
						setState(7982);
						match(PRIVILEGES);
						}
					}

					}
					break;
				case ALTER:
				case CREATE:
				case EXECUTE:
				case INSERT:
				case REFERENCES:
				case SELECT:
				case VIEW:
				case CONTROL:
				case IMPERSONATE:
				case SHOWPLAN:
				case TAKE:
					{
					setState(7985);
					grant_permission();
					setState(7990);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==LR_BRACKET) {
						{
						setState(7986);
						match(LR_BRACKET);
						setState(7987);
						column_name_list();
						setState(7988);
						match(RR_BRACKET);
						}
					}

					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				setState(7996);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==ON) {
					{
					setState(7994);
					match(ON);
					setState(7995);
					((Security_statementContext)_localctx).on_id = table_name();
					}
				}

				setState(7998);
				match(TO);
				{
				setState(7999);
				((Security_statementContext)_localctx).id = id();
				((Security_statementContext)_localctx).to_principal.add(((Security_statementContext)_localctx).id);
				}
				setState(8004);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA) {
					{
					{
					setState(8000);
					match(COMMA);
					setState(8001);
					((Security_statementContext)_localctx).id = id();
					((Security_statementContext)_localctx).to_principal.add(((Security_statementContext)_localctx).id);
					}
					}
					setState(8006);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				setState(8010);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1117,_ctx) ) {
				case 1:
					{
					setState(8007);
					match(WITH);
					setState(8008);
					match(GRANT);
					setState(8009);
					match(OPTION);
					}
					break;
				}
				setState(8014);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==AS) {
					{
					setState(8012);
					match(AS);
					setState(8013);
					((Security_statementContext)_localctx).as_principal = id();
					}
				}

				setState(8017);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1119,_ctx) ) {
				case 1:
					{
					setState(8016);
					match(SEMI);
					}
					break;
				}
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(8019);
				match(REVERT);
				setState(8026);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1120,_ctx) ) {
				case 1:
					{
					setState(8020);
					match(LR_BRACKET);
					setState(8021);
					match(WITH);
					setState(8022);
					match(COOKIE);
					setState(8023);
					match(EQUAL);
					setState(8024);
					match(LOCAL_ID);
					setState(8025);
					match(RR_BRACKET);
					}
					break;
				}
				setState(8029);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1121,_ctx) ) {
				case 1:
					{
					setState(8028);
					match(SEMI);
					}
					break;
				}
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(8031);
				open_key();
				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(8032);
				close_key();
				}
				break;
			case 6:
				enterOuterAlt(_localctx, 6);
				{
				setState(8033);
				create_key();
				}
				break;
			case 7:
				enterOuterAlt(_localctx, 7);
				{
				setState(8034);
				create_certificate();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Create_certificateContext extends ParserRuleContext {
		public IdContext certificate_name;
		public IdContext user_name;
		public TerminalNode CREATE() { return getToken(TSqlParser.CREATE, 0); }
		public TerminalNode CERTIFICATE() { return getToken(TSqlParser.CERTIFICATE, 0); }
		public List id() {
			return getRuleContexts(IdContext.class);
		}
		public IdContext id(int i) {
			return getRuleContext(IdContext.class,i);
		}
		public TerminalNode FROM() { return getToken(TSqlParser.FROM, 0); }
		public Existing_keysContext existing_keys() {
			return getRuleContext(Existing_keysContext.class,0);
		}
		public Generate_new_keysContext generate_new_keys() {
			return getRuleContext(Generate_new_keysContext.class,0);
		}
		public TerminalNode AUTHORIZATION() { return getToken(TSqlParser.AUTHORIZATION, 0); }
		public TerminalNode ACTIVE() { return getToken(TSqlParser.ACTIVE, 0); }
		public TerminalNode FOR() { return getToken(TSqlParser.FOR, 0); }
		public TerminalNode BEGIN() { return getToken(TSqlParser.BEGIN, 0); }
		public TerminalNode DIALOG() { return getToken(TSqlParser.DIALOG, 0); }
		public TerminalNode EQUAL() { return getToken(TSqlParser.EQUAL, 0); }
		public TerminalNode ON() { return getToken(TSqlParser.ON, 0); }
		public TerminalNode OFF() { return getToken(TSqlParser.OFF, 0); }
		public Create_certificateContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_create_certificate; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterCreate_certificate(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitCreate_certificate(this);
		}
	}

	public final Create_certificateContext create_certificate() throws RecognitionException {
		Create_certificateContext _localctx = new Create_certificateContext(_ctx, getState());
		enterRule(_localctx, 632, RULE_create_certificate);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(8037);
			match(CREATE);
			setState(8038);
			match(CERTIFICATE);
			setState(8039);
			((Create_certificateContext)_localctx).certificate_name = id();
			setState(8042);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==AUTHORIZATION) {
				{
				setState(8040);
				match(AUTHORIZATION);
				setState(8041);
				((Create_certificateContext)_localctx).user_name = id();
				}
			}

			setState(8047);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case FROM:
				{
				setState(8044);
				match(FROM);
				setState(8045);
				existing_keys();
				}
				break;
			case WITH:
			case ENCRYPTION:
				{
				setState(8046);
				generate_new_keys();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			setState(8055);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,1125,_ctx) ) {
			case 1:
				{
				setState(8049);
				match(ACTIVE);
				setState(8050);
				match(FOR);
				setState(8051);
				match(BEGIN);
				setState(8052);
				match(DIALOG);
				setState(8053);
				match(EQUAL);
				setState(8054);
				_la = _input.LA(1);
				if ( !(_la==OFF || _la==ON) ) {
				_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 Existing_keysContext extends ParserRuleContext {
		public IdContext assembly_name;
		public Token path_to_file;
		public TerminalNode ASSEMBLY() { return getToken(TSqlParser.ASSEMBLY, 0); }
		public IdContext id() {
			return getRuleContext(IdContext.class,0);
		}
		public TerminalNode FILE() { return getToken(TSqlParser.FILE, 0); }
		public TerminalNode EQUAL() { return getToken(TSqlParser.EQUAL, 0); }
		public TerminalNode STRING() { return getToken(TSqlParser.STRING, 0); }
		public TerminalNode EXECUTABLE() { return getToken(TSqlParser.EXECUTABLE, 0); }
		public TerminalNode WITH() { return getToken(TSqlParser.WITH, 0); }
		public TerminalNode PRIVATE() { return getToken(TSqlParser.PRIVATE, 0); }
		public TerminalNode KEY() { return getToken(TSqlParser.KEY, 0); }
		public TerminalNode LR_BRACKET() { return getToken(TSqlParser.LR_BRACKET, 0); }
		public Private_key_optionsContext private_key_options() {
			return getRuleContext(Private_key_optionsContext.class,0);
		}
		public TerminalNode RR_BRACKET() { return getToken(TSqlParser.RR_BRACKET, 0); }
		public Existing_keysContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_existing_keys; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterExisting_keys(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitExisting_keys(this);
		}
	}

	public final Existing_keysContext existing_keys() throws RecognitionException {
		Existing_keysContext _localctx = new Existing_keysContext(_ctx, getState());
		enterRule(_localctx, 634, RULE_existing_keys);
		int _la;
		try {
			setState(8074);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case ASSEMBLY:
				enterOuterAlt(_localctx, 1);
				{
				setState(8057);
				match(ASSEMBLY);
				setState(8058);
				((Existing_keysContext)_localctx).assembly_name = id();
				}
				break;
			case FILE:
			case EXECUTABLE:
				enterOuterAlt(_localctx, 2);
				{
				setState(8060);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EXECUTABLE) {
					{
					setState(8059);
					match(EXECUTABLE);
					}
				}

				setState(8062);
				match(FILE);
				setState(8063);
				match(EQUAL);
				setState(8064);
				((Existing_keysContext)_localctx).path_to_file = match(STRING);
				setState(8072);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1127,_ctx) ) {
				case 1:
					{
					setState(8065);
					match(WITH);
					setState(8066);
					match(PRIVATE);
					setState(8067);
					match(KEY);
					setState(8068);
					match(LR_BRACKET);
					setState(8069);
					private_key_options();
					setState(8070);
					match(RR_BRACKET);
					}
					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 Private_key_optionsContext extends ParserRuleContext {
		public Token path;
		public Token password;
		public List EQUAL() { return getTokens(TSqlParser.EQUAL); }
		public TerminalNode EQUAL(int i) {
			return getToken(TSqlParser.EQUAL, i);
		}
		public TerminalNode FILE() { return getToken(TSqlParser.FILE, 0); }
		public TerminalNode BINARY() { return getToken(TSqlParser.BINARY, 0); }
		public List STRING() { return getTokens(TSqlParser.STRING); }
		public TerminalNode STRING(int i) {
			return getToken(TSqlParser.STRING, i);
		}
		public TerminalNode COMMA() { return getToken(TSqlParser.COMMA, 0); }
		public TerminalNode BY() { return getToken(TSqlParser.BY, 0); }
		public TerminalNode PASSWORD() { return getToken(TSqlParser.PASSWORD, 0); }
		public TerminalNode DECRYPTION() { return getToken(TSqlParser.DECRYPTION, 0); }
		public TerminalNode ENCRYPTION() { return getToken(TSqlParser.ENCRYPTION, 0); }
		public Private_key_optionsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_private_key_options; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterPrivate_key_options(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitPrivate_key_options(this);
		}
	}

	public final Private_key_optionsContext private_key_options() throws RecognitionException {
		Private_key_optionsContext _localctx = new Private_key_optionsContext(_ctx, getState());
		enterRule(_localctx, 636, RULE_private_key_options);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(8076);
			_la = _input.LA(1);
			if ( !(_la==FILE || _la==BINARY) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			setState(8077);
			match(EQUAL);
			setState(8078);
			((Private_key_optionsContext)_localctx).path = match(STRING);
			setState(8085);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==COMMA) {
				{
				setState(8079);
				match(COMMA);
				setState(8080);
				_la = _input.LA(1);
				if ( !(_la==DECRYPTION || _la==ENCRYPTION) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(8081);
				match(BY);
				setState(8082);
				match(PASSWORD);
				setState(8083);
				match(EQUAL);
				setState(8084);
				((Private_key_optionsContext)_localctx).password = match(STRING);
				}
			}

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

	public static class Generate_new_keysContext extends ParserRuleContext {
		public Token password;
		public Token certificate_subject_name;
		public TerminalNode WITH() { return getToken(TSqlParser.WITH, 0); }
		public TerminalNode SUBJECT() { return getToken(TSqlParser.SUBJECT, 0); }
		public List EQUAL() { return getTokens(TSqlParser.EQUAL); }
		public TerminalNode EQUAL(int i) {
			return getToken(TSqlParser.EQUAL, i);
		}
		public List STRING() { return getTokens(TSqlParser.STRING); }
		public TerminalNode STRING(int i) {
			return getToken(TSqlParser.STRING, i);
		}
		public TerminalNode ENCRYPTION() { return getToken(TSqlParser.ENCRYPTION, 0); }
		public TerminalNode BY() { return getToken(TSqlParser.BY, 0); }
		public TerminalNode PASSWORD() { return getToken(TSqlParser.PASSWORD, 0); }
		public List COMMA() { return getTokens(TSqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(TSqlParser.COMMA, i);
		}
		public List date_options() {
			return getRuleContexts(Date_optionsContext.class);
		}
		public Date_optionsContext date_options(int i) {
			return getRuleContext(Date_optionsContext.class,i);
		}
		public Generate_new_keysContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_generate_new_keys; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterGenerate_new_keys(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitGenerate_new_keys(this);
		}
	}

	public final Generate_new_keysContext generate_new_keys() throws RecognitionException {
		Generate_new_keysContext _localctx = new Generate_new_keysContext(_ctx, getState());
		enterRule(_localctx, 638, RULE_generate_new_keys);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(8092);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==ENCRYPTION) {
				{
				setState(8087);
				match(ENCRYPTION);
				setState(8088);
				match(BY);
				setState(8089);
				match(PASSWORD);
				setState(8090);
				match(EQUAL);
				setState(8091);
				((Generate_new_keysContext)_localctx).password = match(STRING);
				}
			}

			setState(8094);
			match(WITH);
			setState(8095);
			match(SUBJECT);
			setState(8096);
			match(EQUAL);
			setState(8097);
			((Generate_new_keysContext)_localctx).certificate_subject_name = match(STRING);
			setState(8102);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA) {
				{
				{
				setState(8098);
				match(COMMA);
				setState(8099);
				date_options();
				}
				}
				setState(8104);
				_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 Date_optionsContext extends ParserRuleContext {
		public TerminalNode EQUAL() { return getToken(TSqlParser.EQUAL, 0); }
		public TerminalNode STRING() { return getToken(TSqlParser.STRING, 0); }
		public TerminalNode START_DATE() { return getToken(TSqlParser.START_DATE, 0); }
		public TerminalNode EXPIRY_DATE() { return getToken(TSqlParser.EXPIRY_DATE, 0); }
		public Date_optionsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_date_options; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterDate_options(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitDate_options(this);
		}
	}

	public final Date_optionsContext date_options() throws RecognitionException {
		Date_optionsContext _localctx = new Date_optionsContext(_ctx, getState());
		enterRule(_localctx, 640, RULE_date_options);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(8105);
			_la = _input.LA(1);
			if ( !(_la==EXPIRY_DATE || _la==START_DATE) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			setState(8106);
			match(EQUAL);
			setState(8107);
			match(STRING);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Open_keyContext extends ParserRuleContext {
		public IdContext key_name;
		public Token password;
		public TerminalNode OPEN() { return getToken(TSqlParser.OPEN, 0); }
		public TerminalNode SYMMETRIC() { return getToken(TSqlParser.SYMMETRIC, 0); }
		public TerminalNode KEY() { return getToken(TSqlParser.KEY, 0); }
		public TerminalNode DECRYPTION() { return getToken(TSqlParser.DECRYPTION, 0); }
		public TerminalNode BY() { return getToken(TSqlParser.BY, 0); }
		public Decryption_mechanismContext decryption_mechanism() {
			return getRuleContext(Decryption_mechanismContext.class,0);
		}
		public IdContext id() {
			return getRuleContext(IdContext.class,0);
		}
		public TerminalNode MASTER() { return getToken(TSqlParser.MASTER, 0); }
		public TerminalNode PASSWORD() { return getToken(TSqlParser.PASSWORD, 0); }
		public TerminalNode EQUAL() { return getToken(TSqlParser.EQUAL, 0); }
		public TerminalNode STRING() { return getToken(TSqlParser.STRING, 0); }
		public Open_keyContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_open_key; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterOpen_key(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitOpen_key(this);
		}
	}

	public final Open_keyContext open_key() throws RecognitionException {
		Open_keyContext _localctx = new Open_keyContext(_ctx, getState());
		enterRule(_localctx, 642, RULE_open_key);
		try {
			setState(8125);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,1132,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(8109);
				match(OPEN);
				setState(8110);
				match(SYMMETRIC);
				setState(8111);
				match(KEY);
				setState(8112);
				((Open_keyContext)_localctx).key_name = id();
				setState(8113);
				match(DECRYPTION);
				setState(8114);
				match(BY);
				setState(8115);
				decryption_mechanism();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(8117);
				match(OPEN);
				setState(8118);
				match(MASTER);
				setState(8119);
				match(KEY);
				setState(8120);
				match(DECRYPTION);
				setState(8121);
				match(BY);
				setState(8122);
				match(PASSWORD);
				setState(8123);
				match(EQUAL);
				setState(8124);
				((Open_keyContext)_localctx).password = match(STRING);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Close_keyContext extends ParserRuleContext {
		public IdContext key_name;
		public TerminalNode CLOSE() { return getToken(TSqlParser.CLOSE, 0); }
		public TerminalNode SYMMETRIC() { return getToken(TSqlParser.SYMMETRIC, 0); }
		public TerminalNode KEY() { return getToken(TSqlParser.KEY, 0); }
		public IdContext id() {
			return getRuleContext(IdContext.class,0);
		}
		public TerminalNode ALL() { return getToken(TSqlParser.ALL, 0); }
		public TerminalNode KEYS() { return getToken(TSqlParser.KEYS, 0); }
		public TerminalNode MASTER() { return getToken(TSqlParser.MASTER, 0); }
		public Close_keyContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_close_key; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterClose_key(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitClose_key(this);
		}
	}

	public final Close_keyContext close_key() throws RecognitionException {
		Close_keyContext _localctx = new Close_keyContext(_ctx, getState());
		enterRule(_localctx, 644, RULE_close_key);
		try {
			setState(8138);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,1133,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(8127);
				match(CLOSE);
				setState(8128);
				match(SYMMETRIC);
				setState(8129);
				match(KEY);
				setState(8130);
				((Close_keyContext)_localctx).key_name = id();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(8131);
				match(CLOSE);
				setState(8132);
				match(ALL);
				setState(8133);
				match(SYMMETRIC);
				setState(8134);
				match(KEYS);
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(8135);
				match(CLOSE);
				setState(8136);
				match(MASTER);
				setState(8137);
				match(KEY);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Create_keyContext extends ParserRuleContext {
		public Token password;
		public IdContext key_name;
		public IdContext user_name;
		public IdContext provider_name;
		public TerminalNode CREATE() { return getToken(TSqlParser.CREATE, 0); }
		public TerminalNode MASTER() { return getToken(TSqlParser.MASTER, 0); }
		public TerminalNode KEY() { return getToken(TSqlParser.KEY, 0); }
		public List ENCRYPTION() { return getTokens(TSqlParser.ENCRYPTION); }
		public TerminalNode ENCRYPTION(int i) {
			return getToken(TSqlParser.ENCRYPTION, i);
		}
		public List BY() { return getTokens(TSqlParser.BY); }
		public TerminalNode BY(int i) {
			return getToken(TSqlParser.BY, i);
		}
		public TerminalNode PASSWORD() { return getToken(TSqlParser.PASSWORD, 0); }
		public TerminalNode EQUAL() { return getToken(TSqlParser.EQUAL, 0); }
		public TerminalNode STRING() { return getToken(TSqlParser.STRING, 0); }
		public TerminalNode SYMMETRIC() { return getToken(TSqlParser.SYMMETRIC, 0); }
		public TerminalNode WITH() { return getToken(TSqlParser.WITH, 0); }
		public List id() {
			return getRuleContexts(IdContext.class);
		}
		public IdContext id(int i) {
			return getRuleContext(IdContext.class,i);
		}
		public TerminalNode AUTHORIZATION() { return getToken(TSqlParser.AUTHORIZATION, 0); }
		public TerminalNode FROM() { return getToken(TSqlParser.FROM, 0); }
		public TerminalNode PROVIDER() { return getToken(TSqlParser.PROVIDER, 0); }
		public List key_options() {
			return getRuleContexts(Key_optionsContext.class);
		}
		public Key_optionsContext key_options(int i) {
			return getRuleContext(Key_optionsContext.class,i);
		}
		public List encryption_mechanism() {
			return getRuleContexts(Encryption_mechanismContext.class);
		}
		public Encryption_mechanismContext encryption_mechanism(int i) {
			return getRuleContext(Encryption_mechanismContext.class,i);
		}
		public List COMMA() { return getTokens(TSqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(TSqlParser.COMMA, i);
		}
		public Create_keyContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_create_key; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterCreate_key(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitCreate_key(this);
		}
	}

	public final Create_keyContext create_key() throws RecognitionException {
		Create_keyContext _localctx = new Create_keyContext(_ctx, getState());
		enterRule(_localctx, 646, RULE_create_key);
		int _la;
		try {
			int _alt;
			setState(8175);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,1139,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(8140);
				match(CREATE);
				setState(8141);
				match(MASTER);
				setState(8142);
				match(KEY);
				setState(8143);
				match(ENCRYPTION);
				setState(8144);
				match(BY);
				setState(8145);
				match(PASSWORD);
				setState(8146);
				match(EQUAL);
				setState(8147);
				((Create_keyContext)_localctx).password = match(STRING);
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(8148);
				match(CREATE);
				setState(8149);
				match(SYMMETRIC);
				setState(8150);
				match(KEY);
				setState(8151);
				((Create_keyContext)_localctx).key_name = id();
				setState(8154);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==AUTHORIZATION) {
					{
					setState(8152);
					match(AUTHORIZATION);
					setState(8153);
					((Create_keyContext)_localctx).user_name = id();
					}
				}

				setState(8159);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==FROM) {
					{
					setState(8156);
					match(FROM);
					setState(8157);
					match(PROVIDER);
					setState(8158);
					((Create_keyContext)_localctx).provider_name = id();
					}
				}

				setState(8161);
				match(WITH);
				setState(8171); 
				_errHandler.sync(this);
				_alt = 1;
				do {
					switch (_alt) {
					case 1:
						{
						{
						setState(8166);
						_errHandler.sync(this);
						switch (_input.LA(1)) {
						case ALGORITHM:
						case CREATION_DISPOSITION:
						case IDENTITY_VALUE:
						case KEY_SOURCE:
						case PROVIDER_KEY_NAME:
							{
							setState(8162);
							key_options();
							}
							break;
						case ENCRYPTION:
							{
							setState(8163);
							match(ENCRYPTION);
							setState(8164);
							match(BY);
							setState(8165);
							encryption_mechanism();
							}
							break;
						default:
							throw new NoViableAltException(this);
						}
						setState(8169);
						_errHandler.sync(this);
						_la = _input.LA(1);
						if (_la==COMMA) {
							{
							setState(8168);
							match(COMMA);
							}
						}

						}
						}
						break;
					default:
						throw new NoViableAltException(this);
					}
					setState(8173); 
					_errHandler.sync(this);
					_alt = getInterpreter().adaptivePredict(_input,1138,_ctx);
				} while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER );
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Key_optionsContext extends ParserRuleContext {
		public Token pass_phrase;
		public Token identity_phrase;
		public Token key_name_in_provider;
		public TerminalNode KEY_SOURCE() { return getToken(TSqlParser.KEY_SOURCE, 0); }
		public TerminalNode EQUAL() { return getToken(TSqlParser.EQUAL, 0); }
		public TerminalNode STRING() { return getToken(TSqlParser.STRING, 0); }
		public TerminalNode ALGORITHM() { return getToken(TSqlParser.ALGORITHM, 0); }
		public AlgorithmContext algorithm() {
			return getRuleContext(AlgorithmContext.class,0);
		}
		public TerminalNode IDENTITY_VALUE() { return getToken(TSqlParser.IDENTITY_VALUE, 0); }
		public TerminalNode PROVIDER_KEY_NAME() { return getToken(TSqlParser.PROVIDER_KEY_NAME, 0); }
		public TerminalNode CREATION_DISPOSITION() { return getToken(TSqlParser.CREATION_DISPOSITION, 0); }
		public TerminalNode CREATE_NEW() { return getToken(TSqlParser.CREATE_NEW, 0); }
		public TerminalNode OPEN_EXISTING() { return getToken(TSqlParser.OPEN_EXISTING, 0); }
		public Key_optionsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_key_options; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterKey_options(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitKey_options(this);
		}
	}

	public final Key_optionsContext key_options() throws RecognitionException {
		Key_optionsContext _localctx = new Key_optionsContext(_ctx, getState());
		enterRule(_localctx, 648, RULE_key_options);
		int _la;
		try {
			setState(8192);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case KEY_SOURCE:
				enterOuterAlt(_localctx, 1);
				{
				setState(8177);
				match(KEY_SOURCE);
				setState(8178);
				match(EQUAL);
				setState(8179);
				((Key_optionsContext)_localctx).pass_phrase = match(STRING);
				}
				break;
			case ALGORITHM:
				enterOuterAlt(_localctx, 2);
				{
				setState(8180);
				match(ALGORITHM);
				setState(8181);
				match(EQUAL);
				setState(8182);
				algorithm();
				}
				break;
			case IDENTITY_VALUE:
				enterOuterAlt(_localctx, 3);
				{
				setState(8183);
				match(IDENTITY_VALUE);
				setState(8184);
				match(EQUAL);
				setState(8185);
				((Key_optionsContext)_localctx).identity_phrase = match(STRING);
				}
				break;
			case PROVIDER_KEY_NAME:
				enterOuterAlt(_localctx, 4);
				{
				setState(8186);
				match(PROVIDER_KEY_NAME);
				setState(8187);
				match(EQUAL);
				setState(8188);
				((Key_optionsContext)_localctx).key_name_in_provider = match(STRING);
				}
				break;
			case CREATION_DISPOSITION:
				enterOuterAlt(_localctx, 5);
				{
				setState(8189);
				match(CREATION_DISPOSITION);
				setState(8190);
				match(EQUAL);
				setState(8191);
				_la = _input.LA(1);
				if ( !(_la==CREATE_NEW || _la==OPEN_EXISTING) ) {
				_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 AlgorithmContext extends ParserRuleContext {
		public TerminalNode DES() { return getToken(TSqlParser.DES, 0); }
		public TerminalNode TRIPLE_DES() { return getToken(TSqlParser.TRIPLE_DES, 0); }
		public TerminalNode TRIPLE_DES_3KEY() { return getToken(TSqlParser.TRIPLE_DES_3KEY, 0); }
		public TerminalNode RC2() { return getToken(TSqlParser.RC2, 0); }
		public TerminalNode RC4() { return getToken(TSqlParser.RC4, 0); }
		public TerminalNode RC4_128() { return getToken(TSqlParser.RC4_128, 0); }
		public TerminalNode DESX() { return getToken(TSqlParser.DESX, 0); }
		public TerminalNode AES_128() { return getToken(TSqlParser.AES_128, 0); }
		public TerminalNode AES_192() { return getToken(TSqlParser.AES_192, 0); }
		public TerminalNode AES_256() { return getToken(TSqlParser.AES_256, 0); }
		public AlgorithmContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_algorithm; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterAlgorithm(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitAlgorithm(this);
		}
	}

	public final AlgorithmContext algorithm() throws RecognitionException {
		AlgorithmContext _localctx = new AlgorithmContext(_ctx, getState());
		enterRule(_localctx, 650, RULE_algorithm);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(8194);
			_la = _input.LA(1);
			if ( !(((((_la - 390)) & ~0x3f) == 0 && ((1L << (_la - 390)) & ((1L << (AES_128 - 390)) | (1L << (AES_192 - 390)) | (1L << (AES_256 - 390)))) != 0) || _la==DES || _la==DESX || ((((_la - 664)) & ~0x3f) == 0 && ((1L << (_la - 664)) & ((1L << (RC2 - 664)) | (1L << (RC4 - 664)) | (1L << (RC4_128 - 664)))) != 0) || _la==TRIPLE_DES || _la==TRIPLE_DES_3KEY) ) {
			_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 Encryption_mechanismContext extends ParserRuleContext {
		public IdContext certificate_name;
		public IdContext asym_key_name;
		public IdContext decrypting_Key_name;
		public TerminalNode CERTIFICATE() { return getToken(TSqlParser.CERTIFICATE, 0); }
		public IdContext id() {
			return getRuleContext(IdContext.class,0);
		}
		public TerminalNode ASYMMETRIC() { return getToken(TSqlParser.ASYMMETRIC, 0); }
		public TerminalNode KEY() { return getToken(TSqlParser.KEY, 0); }
		public TerminalNode SYMMETRIC() { return getToken(TSqlParser.SYMMETRIC, 0); }
		public TerminalNode PASSWORD() { return getToken(TSqlParser.PASSWORD, 0); }
		public TerminalNode EQUAL() { return getToken(TSqlParser.EQUAL, 0); }
		public TerminalNode STRING() { return getToken(TSqlParser.STRING, 0); }
		public Encryption_mechanismContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_encryption_mechanism; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterEncryption_mechanism(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitEncryption_mechanism(this);
		}
	}

	public final Encryption_mechanismContext encryption_mechanism() throws RecognitionException {
		Encryption_mechanismContext _localctx = new Encryption_mechanismContext(_ctx, getState());
		enterRule(_localctx, 652, RULE_encryption_mechanism);
		try {
			setState(8207);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case CERTIFICATE:
				enterOuterAlt(_localctx, 1);
				{
				setState(8196);
				match(CERTIFICATE);
				setState(8197);
				((Encryption_mechanismContext)_localctx).certificate_name = id();
				}
				break;
			case ASYMMETRIC:
				enterOuterAlt(_localctx, 2);
				{
				setState(8198);
				match(ASYMMETRIC);
				setState(8199);
				match(KEY);
				setState(8200);
				((Encryption_mechanismContext)_localctx).asym_key_name = id();
				}
				break;
			case SYMMETRIC:
				enterOuterAlt(_localctx, 3);
				{
				setState(8201);
				match(SYMMETRIC);
				setState(8202);
				match(KEY);
				setState(8203);
				((Encryption_mechanismContext)_localctx).decrypting_Key_name = id();
				}
				break;
			case PASSWORD:
				enterOuterAlt(_localctx, 4);
				{
				setState(8204);
				match(PASSWORD);
				setState(8205);
				match(EQUAL);
				setState(8206);
				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 Decryption_mechanismContext extends ParserRuleContext {
		public IdContext certificate_name;
		public IdContext asym_key_name;
		public IdContext decrypting_Key_name;
		public TerminalNode CERTIFICATE() { return getToken(TSqlParser.CERTIFICATE, 0); }
		public IdContext id() {
			return getRuleContext(IdContext.class,0);
		}
		public TerminalNode WITH() { return getToken(TSqlParser.WITH, 0); }
		public TerminalNode PASSWORD() { return getToken(TSqlParser.PASSWORD, 0); }
		public TerminalNode EQUAL() { return getToken(TSqlParser.EQUAL, 0); }
		public TerminalNode STRING() { return getToken(TSqlParser.STRING, 0); }
		public TerminalNode ASYMMETRIC() { return getToken(TSqlParser.ASYMMETRIC, 0); }
		public TerminalNode KEY() { return getToken(TSqlParser.KEY, 0); }
		public TerminalNode SYMMETRIC() { return getToken(TSqlParser.SYMMETRIC, 0); }
		public Decryption_mechanismContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_decryption_mechanism; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterDecryption_mechanism(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitDecryption_mechanism(this);
		}
	}

	public final Decryption_mechanismContext decryption_mechanism() throws RecognitionException {
		Decryption_mechanismContext _localctx = new Decryption_mechanismContext(_ctx, getState());
		enterRule(_localctx, 654, RULE_decryption_mechanism);
		try {
			setState(8232);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case CERTIFICATE:
				enterOuterAlt(_localctx, 1);
				{
				setState(8209);
				match(CERTIFICATE);
				setState(8210);
				((Decryption_mechanismContext)_localctx).certificate_name = id();
				setState(8215);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1142,_ctx) ) {
				case 1:
					{
					setState(8211);
					match(WITH);
					setState(8212);
					match(PASSWORD);
					setState(8213);
					match(EQUAL);
					setState(8214);
					match(STRING);
					}
					break;
				}
				}
				break;
			case ASYMMETRIC:
				enterOuterAlt(_localctx, 2);
				{
				setState(8217);
				match(ASYMMETRIC);
				setState(8218);
				match(KEY);
				setState(8219);
				((Decryption_mechanismContext)_localctx).asym_key_name = id();
				setState(8224);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1143,_ctx) ) {
				case 1:
					{
					setState(8220);
					match(WITH);
					setState(8221);
					match(PASSWORD);
					setState(8222);
					match(EQUAL);
					setState(8223);
					match(STRING);
					}
					break;
				}
				}
				break;
			case SYMMETRIC:
				enterOuterAlt(_localctx, 3);
				{
				setState(8226);
				match(SYMMETRIC);
				setState(8227);
				match(KEY);
				setState(8228);
				((Decryption_mechanismContext)_localctx).decrypting_Key_name = id();
				}
				break;
			case PASSWORD:
				enterOuterAlt(_localctx, 4);
				{
				setState(8229);
				match(PASSWORD);
				setState(8230);
				match(EQUAL);
				setState(8231);
				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 Grant_permissionContext extends ParserRuleContext {
		public TerminalNode EXECUTE() { return getToken(TSqlParser.EXECUTE, 0); }
		public TerminalNode VIEW() { return getToken(TSqlParser.VIEW, 0); }
		public IdContext id() {
			return getRuleContext(IdContext.class,0);
		}
		public TerminalNode TAKE() { return getToken(TSqlParser.TAKE, 0); }
		public TerminalNode CONTROL() { return getToken(TSqlParser.CONTROL, 0); }
		public TerminalNode CREATE() { return getToken(TSqlParser.CREATE, 0); }
		public TerminalNode TABLE() { return getToken(TSqlParser.TABLE, 0); }
		public TerminalNode SHOWPLAN() { return getToken(TSqlParser.SHOWPLAN, 0); }
		public TerminalNode IMPERSONATE() { return getToken(TSqlParser.IMPERSONATE, 0); }
		public TerminalNode SELECT() { return getToken(TSqlParser.SELECT, 0); }
		public TerminalNode REFERENCES() { return getToken(TSqlParser.REFERENCES, 0); }
		public TerminalNode INSERT() { return getToken(TSqlParser.INSERT, 0); }
		public TerminalNode ALTER() { return getToken(TSqlParser.ALTER, 0); }
		public TerminalNode DATABASE() { return getToken(TSqlParser.DATABASE, 0); }
		public TerminalNode ANY() { return getToken(TSqlParser.ANY, 0); }
		public Grant_permissionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_grant_permission; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterGrant_permission(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitGrant_permission(this);
		}
	}

	public final Grant_permissionContext grant_permission() throws RecognitionException {
		Grant_permissionContext _localctx = new Grant_permissionContext(_ctx, getState());
		enterRule(_localctx, 656, RULE_grant_permission);
		int _la;
		try {
			setState(8260);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case EXECUTE:
				enterOuterAlt(_localctx, 1);
				{
				setState(8234);
				match(EXECUTE);
				}
				break;
			case VIEW:
				enterOuterAlt(_localctx, 2);
				{
				setState(8235);
				match(VIEW);
				setState(8236);
				id();
				}
				break;
			case TAKE:
				enterOuterAlt(_localctx, 3);
				{
				setState(8237);
				match(TAKE);
				setState(8238);
				id();
				}
				break;
			case CONTROL:
				enterOuterAlt(_localctx, 4);
				{
				setState(8239);
				match(CONTROL);
				setState(8241);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==CALLED || ((((_la - 81)) & ~0x3f) == 0 && ((1L << (_la - 81)) & ((1L << (DATA_COMPRESSION - 81)) | (1L << (EVENTDATA - 81)) | (1L << (FILENAME - 81)) | (1L << (FILLFACTOR - 81)) | (1L << (FORCESEEK - 81)))) != 0) || ((((_la - 159)) & ~0x3f) == 0 && ((1L << (_la - 159)) & ((1L << (INIT - 159)) | (1L << (KEY - 159)) | (1L << (MASTER - 159)) | (1L << (MAX_MEMORY - 159)))) != 0) || ((((_la - 226)) & ~0x3f) == 0 && ((1L << (_la - 226)) & ((1L << (OFFSETS - 226)) | (1L << (PAGE - 226)) | (1L << (PUBLIC - 226)) | (1L << (R - 226)) | (1L << (RAW - 226)) | (1L << (RETURN - 226)) | (1L << (RETURNS - 226)) | (1L << (ROWCOUNT - 226)))) != 0) || ((((_la - 296)) & ~0x3f) == 0 && ((1L << (_la - 296)) & ((1L << (SAFETY - 296)) | (1L << (SERVER - 296)) | (1L << (SID - 296)) | (1L << (SOURCE - 296)) | (1L << (STATE - 296)) | (1L << (START - 296)) | (1L << (TARGET - 296)))) != 0) || ((((_la - 384)) & ~0x3f) == 0 && ((1L << (_la - 384)) & ((1L << (ABSOLUTE - 384)) | (1L << (ACCENT_SENSITIVITY - 384)) | (1L << (ACTION - 384)) | (1L << (ACTIVATION - 384)) | (1L << (ACTIVE - 384)) | (1L << (ADDRESS - 384)) | (1L << (AES_128 - 384)) | (1L << (AES_192 - 384)) | (1L << (AES_256 - 384)) | (1L << (AFFINITY - 384)) | (1L << (AFTER - 384)) | (1L << (AGGREGATE - 384)) | (1L << (ALGORITHM - 384)) | (1L << (ALLOW_ENCRYPTED_VALUE_MODIFICATIONS - 384)) | (1L << (ALLOW_SNAPSHOT_ISOLATION - 384)) | (1L << (ALLOWED - 384)) | (1L << (ANSI_NULL_DEFAULT - 384)) | (1L << (ANSI_NULLS - 384)) | (1L << (ANSI_PADDING - 384)) | (1L << (ANSI_WARNINGS - 384)) | (1L << (APPLICATION_LOG - 384)) | (1L << (APPLY - 384)) | (1L << (ARITHABORT - 384)) | (1L << (ASSEMBLY - 384)) | (1L << (AUDIT - 384)) | (1L << (AUDIT_GUID - 384)) | (1L << (AUTO - 384)) | (1L << (AUTO_CLEANUP - 384)) | (1L << (AUTO_CLOSE - 384)) | (1L << (AUTO_CREATE_STATISTICS - 384)) | (1L << (AUTO_SHRINK - 384)) | (1L << (AUTO_UPDATE_STATISTICS - 384)) | (1L << (AUTO_UPDATE_STATISTICS_ASYNC - 384)) | (1L << (AVAILABILITY - 384)) | (1L << (AVG - 384)) | (1L << (BACKUP_PRIORITY - 384)) | (1L << (BEGIN_DIALOG - 384)) | (1L << (BIGINT - 384)) | (1L << (BINARY_BASE64 - 384)) | (1L << (BINARY_CHECKSUM - 384)) | (1L << (BINDING - 384)) | (1L << (BLOB_STORAGE - 384)) | (1L << (BROKER - 384)) | (1L << (BROKER_INSTANCE - 384)) | (1L << (BULK_LOGGED - 384)) | (1L << (CALLER - 384)) | (1L << (CAP_CPU_PERCENT - 384)) | (1L << (CAST - 384)) | (1L << (CATALOG - 384)) | (1L << (CATCH - 384)) | (1L << (CHANGE_RETENTION - 384)) | (1L << (CHANGE_TRACKING - 384)) | (1L << (CHECKSUM - 384)) | (1L << (CHECKSUM_AGG - 384)) | (1L << (CLEANUP - 384)) | (1L << (COLLECTION - 384)) | (1L << (COLUMN_MASTER_KEY - 384)) | (1L << (COMMITTED - 384)) | (1L << (COMPATIBILITY_LEVEL - 384)) | (1L << (CONCAT - 384)) | (1L << (CONCAT_NULL_YIELDS_NULL - 384)) | (1L << (CONTENT - 384)) | (1L << (CONTROL - 384)) | (1L << (COOKIE - 384)))) != 0) || ((((_la - 448)) & ~0x3f) == 0 && ((1L << (_la - 448)) & ((1L << (COUNT - 448)) | (1L << (COUNT_BIG - 448)) | (1L << (COUNTER - 448)) | (1L << (CPU - 448)) | (1L << (CREATE_NEW - 448)) | (1L << (CREATION_DISPOSITION - 448)) | (1L << (CREDENTIAL - 448)) | (1L << (CRYPTOGRAPHIC - 448)) | (1L << (CURSOR_CLOSE_ON_COMMIT - 448)) | (1L << (CURSOR_DEFAULT - 448)) | (1L << (DATE_CORRELATION_OPTIMIZATION - 448)) | (1L << (DATEADD - 448)) | (1L << (DATEDIFF - 448)) | (1L << (DATENAME - 448)) | (1L << (DATEPART - 448)) | (1L << (DAYS - 448)) | (1L << (DB_CHAINING - 448)) | (1L << (DB_FAILOVER - 448)) | (1L << (DECRYPTION - 448)) | (1L << (DEFAULT_DOUBLE_QUOTE - 448)) | (1L << (DEFAULT_FULLTEXT_LANGUAGE - 448)) | (1L << (DEFAULT_LANGUAGE - 448)) | (1L << (DELAY - 448)) | (1L << (DELAYED_DURABILITY - 448)) | (1L << (DELETED - 448)) | (1L << (DENSE_RANK - 448)) | (1L << (DEPENDENTS - 448)) | (1L << (DES - 448)) | (1L << (DESCRIPTION - 448)) | (1L << (DESX - 448)) | (1L << (DHCP - 448)) | (1L << (DIALOG - 448)) | (1L << (DIRECTORY_NAME - 448)) | (1L << (DISABLE - 448)) | (1L << (DISABLE_BROKER - 448)) | (1L << (DISABLED - 448)) | (1L << (DISK_DRIVE - 448)) | (1L << (DOCUMENT - 448)) | (1L << (DYNAMIC - 448)) | (1L << (EMERGENCY - 448)) | (1L << (EMPTY - 448)) | (1L << (ENABLE - 448)) | (1L << (ENABLE_BROKER - 448)) | (1L << (ENCRYPTED_VALUE - 448)) | (1L << (ENCRYPTION - 448)) | (1L << (ENDPOINT_URL - 448)) | (1L << (ERROR_BROKER_CONVERSATIONS - 448)) | (1L << (EXCLUSIVE - 448)) | (1L << (EXECUTABLE - 448)) | (1L << (EXIST - 448)) | (1L << (EXPAND - 448)) | (1L << (EXPIRY_DATE - 448)) | (1L << (EXPLICIT - 448)) | (1L << (FAIL_OPERATION - 448)) | (1L << (FAILOVER_MODE - 448)) | (1L << (FAILURE - 448)) | (1L << (FAILURE_CONDITION_LEVEL - 448)) | (1L << (FAST - 448)) | (1L << (FAST_FORWARD - 448)) | (1L << (FILEGROUP - 448)) | (1L << (FILEGROWTH - 448)) | (1L << (FILEPATH - 448)) | (1L << (FILESTREAM - 448)))) != 0) || ((((_la - 512)) & ~0x3f) == 0 && ((1L << (_la - 512)) & ((1L << (FILTER - 512)) | (1L << (FIRST - 512)) | (1L << (FIRST_VALUE - 512)) | (1L << (FOLLOWING - 512)) | (1L << (FORCE - 512)) | (1L << (FORCE_FAILOVER_ALLOW_DATA_LOSS - 512)) | (1L << (FORCED - 512)) | (1L << (FORMAT - 512)) | (1L << (FORWARD_ONLY - 512)) | (1L << (FULLSCAN - 512)) | (1L << (FULLTEXT - 512)) | (1L << (GB - 512)) | (1L << (GETDATE - 512)) | (1L << (GETUTCDATE - 512)) | (1L << (GLOBAL - 512)) | (1L << (GO - 512)) | (1L << (GROUP_MAX_REQUESTS - 512)) | (1L << (GROUPING - 512)) | (1L << (GROUPING_ID - 512)) | (1L << (HADR - 512)) | (1L << (HASH - 512)) | (1L << (HEALTH_CHECK_TIMEOUT - 512)) | (1L << (HIGH - 512)) | (1L << (HONOR_BROKER_PRIORITY - 512)) | (1L << (HOURS - 512)) | (1L << (IDENTITY_VALUE - 512)) | (1L << (IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX - 512)) | (1L << (IMMEDIATE - 512)) | (1L << (IMPERSONATE - 512)) | (1L << (IMPORTANCE - 512)) | (1L << (INCREMENTAL - 512)) | (1L << (INITIATOR - 512)) | (1L << (INPUT - 512)) | (1L << (INSENSITIVE - 512)) | (1L << (INSERTED - 512)) | (1L << (INT - 512)) | (1L << (IP - 512)) | (1L << (ISOLATION - 512)) | (1L << (KB - 512)) | (1L << (KEEP - 512)) | (1L << (KEEPFIXED - 512)) | (1L << (KEY_SOURCE - 512)) | (1L << (KEYS - 512)) | (1L << (KEYSET - 512)) | (1L << (LAG - 512)) | (1L << (LAST - 512)) | (1L << (LAST_VALUE - 512)) | (1L << (LEAD - 512)) | (1L << (LEVEL - 512)) | (1L << (LIST - 512)) | (1L << (LISTENER - 512)) | (1L << (LISTENER_URL - 512)) | (1L << (LOB_COMPACTION - 512)) | (1L << (LOCAL - 512)) | (1L << (LOCATION - 512)) | (1L << (LOCK - 512)) | (1L << (LOCK_ESCALATION - 512)) | (1L << (LOGIN - 512)) | (1L << (LOOP - 512)) | (1L << (LOW - 512)) | (1L << (MANUAL - 512)) | (1L << (MARK - 512)))) != 0) || ((((_la - 576)) & ~0x3f) == 0 && ((1L << (_la - 576)) & ((1L << (MATERIALIZED - 576)) | (1L << (MAX - 576)) | (1L << (MAX_CPU_PERCENT - 576)) | (1L << (MAX_DOP - 576)) | (1L << (MAX_FILES - 576)) | (1L << (MAX_IOPS_PER_VOLUME - 576)) | (1L << (MAX_MEMORY_PERCENT - 576)) | (1L << (MAX_PROCESSES - 576)) | (1L << (MAX_QUEUE_READERS - 576)) | (1L << (MAX_ROLLOVER_FILES - 576)) | (1L << (MAXDOP - 576)) | (1L << (MAXRECURSION - 576)) | (1L << (MAXSIZE - 576)) | (1L << (MB - 576)) | (1L << (MEDIUM - 576)) | (1L << (MEMORY_OPTIMIZED_DATA - 576)) | (1L << (MESSAGE - 576)) | (1L << (MIN - 576)) | (1L << (MIN_ACTIVE_ROWVERSION - 576)) | (1L << (MIN_CPU_PERCENT - 576)) | (1L << (MIN_IOPS_PER_VOLUME - 576)) | (1L << (MIN_MEMORY_PERCENT - 576)) | (1L << (MINUTES - 576)) | (1L << (MIRROR_ADDRESS - 576)) | (1L << (MIXED_PAGE_ALLOCATION - 576)) | (1L << (MODE - 576)) | (1L << (MODIFY - 576)) | (1L << (MOVE - 576)) | (1L << (MULTI_USER - 576)) | (1L << (NAME - 576)) | (1L << (NESTED_TRIGGERS - 576)) | (1L << (NEW_ACCOUNT - 576)) | (1L << (NEW_BROKER - 576)) | (1L << (NEW_PASSWORD - 576)) | (1L << (NEXT - 576)) | (1L << (NO - 576)) | (1L << (NO_TRUNCATE - 576)) | (1L << (NO_WAIT - 576)) | (1L << (NOCOUNT - 576)) | (1L << (NODES - 576)) | (1L << (NOEXPAND - 576)) | (1L << (NON_TRANSACTED_ACCESS - 576)) | (1L << (NORECOMPUTE - 576)) | (1L << (NORECOVERY - 576)) | (1L << (NOWAIT - 576)) | (1L << (NTILE - 576)) | (1L << (NUMANODE - 576)) | (1L << (NUMBER - 576)) | (1L << (NUMERIC_ROUNDABORT - 576)) | (1L << (OBJECT - 576)) | (1L << (OFFLINE - 576)) | (1L << (OFFSET - 576)) | (1L << (OLD_ACCOUNT - 576)) | (1L << (ONLINE - 576)) | (1L << (ONLY - 576)) | (1L << (OPEN_EXISTING - 576)) | (1L << (OPTIMISTIC - 576)) | (1L << (OPTIMIZE - 576)) | (1L << (OUT - 576)) | (1L << (OUTPUT - 576)) | (1L << (OWNER - 576)) | (1L << (PAGE_VERIFY - 576)) | (1L << (PARAMETERIZATION - 576)) | (1L << (PARTITION - 576)))) != 0) || ((((_la - 640)) & ~0x3f) == 0 && ((1L << (_la - 640)) & ((1L << (PARTITIONS - 640)) | (1L << (PARTNER - 640)) | (1L << (PATH - 640)) | (1L << (POISON_MESSAGE_HANDLING - 640)) | (1L << (POOL - 640)) | (1L << (PORT - 640)) | (1L << (PRECEDING - 640)) | (1L << (PRIMARY_ROLE - 640)) | (1L << (PRIOR - 640)) | (1L << (PRIORITY - 640)) | (1L << (PRIORITY_LEVEL - 640)) | (1L << (PRIVATE - 640)) | (1L << (PRIVATE_KEY - 640)) | (1L << (PRIVILEGES - 640)) | (1L << (PROCEDURE_NAME - 640)) | (1L << (PROPERTY - 640)) | (1L << (PROVIDER - 640)) | (1L << (PROVIDER_KEY_NAME - 640)) | (1L << (QUERY - 640)) | (1L << (QUEUE - 640)) | (1L << (QUEUE_DELAY - 640)) | (1L << (QUOTED_IDENTIFIER - 640)) | (1L << (RANGE - 640)) | (1L << (RANK - 640)) | (1L << (RC2 - 640)) | (1L << (RC4 - 640)) | (1L << (RC4_128 - 640)) | (1L << (READ_COMMITTED_SNAPSHOT - 640)) | (1L << (READ_ONLY - 640)) | (1L << (READ_ONLY_ROUTING_LIST - 640)) | (1L << (READ_WRITE - 640)) | (1L << (READONLY - 640)) | (1L << (REBUILD - 640)) | (1L << (RECEIVE - 640)) | (1L << (RECOMPILE - 640)) | (1L << (RECOVERY - 640)) | (1L << (RECURSIVE_TRIGGERS - 640)) | (1L << (RELATIVE - 640)) | (1L << (REMOTE - 640)) | (1L << (REMOTE_SERVICE_NAME - 640)) | (1L << (REMOVE - 640)) | (1L << (REORGANIZE - 640)) | (1L << (REPEATABLE - 640)) | (1L << (REPLICA - 640)) | (1L << (REQUEST_MAX_CPU_TIME_SEC - 640)) | (1L << (REQUEST_MAX_MEMORY_GRANT_PERCENT - 640)) | (1L << (REQUEST_MEMORY_GRANT_TIMEOUT_SEC - 640)) | (1L << (REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT - 640)) | (1L << (RESERVE_DISK_SPACE - 640)) | (1L << (RESOURCE - 640)) | (1L << (RESOURCE_MANAGER_LOCATION - 640)) | (1L << (RESTRICTED_USER - 640)) | (1L << (RETENTION - 640)) | (1L << (ROBUST - 640)) | (1L << (ROOT - 640)) | (1L << (ROUTE - 640)) | (1L << (ROW - 640)) | (1L << (ROW_NUMBER - 640)) | (1L << (ROWGUID - 640)) | (1L << (ROWS - 640)) | (1L << (SAMPLE - 640)) | (1L << (SCHEMABINDING - 640)) | (1L << (SCOPED - 640)) | (1L << (SCROLL - 640)))) != 0) || ((((_la - 704)) & ~0x3f) == 0 && ((1L << (_la - 704)) & ((1L << (SCROLL_LOCKS - 704)) | (1L << (SEARCH - 704)) | (1L << (SECONDARY - 704)) | (1L << (SECONDARY_ONLY - 704)) | (1L << (SECONDARY_ROLE - 704)) | (1L << (SECONDS - 704)) | (1L << (SECRET - 704)) | (1L << (SECURITY_LOG - 704)) | (1L << (SEEDING_MODE - 704)) | (1L << (SELF - 704)) | (1L << (SEMI_SENSITIVE - 704)) | (1L << (SEND - 704)) | (1L << (SENT - 704)) | (1L << (SERIALIZABLE - 704)) | (1L << (SESSION_TIMEOUT - 704)) | (1L << (SETERROR - 704)) | (1L << (SHARE - 704)) | (1L << (SHOWPLAN - 704)) | (1L << (SIGNATURE - 704)) | (1L << (SIMPLE - 704)) | (1L << (SINGLE_USER - 704)) | (1L << (SIZE - 704)) | (1L << (SMALLINT - 704)) | (1L << (SNAPSHOT - 704)) | (1L << (SPATIAL_WINDOW_MAX_CELLS - 704)) | (1L << (STANDBY - 704)) | (1L << (START_DATE - 704)) | (1L << (STATIC - 704)) | (1L << (STATS_STREAM - 704)) | (1L << (STATUS - 704)) | (1L << (STDEV - 704)) | (1L << (STDEVP - 704)) | (1L << (STOPLIST - 704)) | (1L << (STUFF - 704)) | (1L << (SUBJECT - 704)) | (1L << (SUM - 704)) | (1L << (SUSPEND - 704)) | (1L << (SYMMETRIC - 704)) | (1L << (SYNCHRONOUS_COMMIT - 704)) | (1L << (SYNONYM - 704)) | (1L << (TAKE - 704)) | (1L << (TARGET_RECOVERY_TIME - 704)) | (1L << (TB - 704)) | (1L << (TEXTIMAGE_ON - 704)) | (1L << (THROW - 704)) | (1L << (TIES - 704)) | (1L << (TIME - 704)) | (1L << (TIMEOUT - 704)) | (1L << (TIMER - 704)) | (1L << (TINYINT - 704)) | (1L << (TORN_PAGE_DETECTION - 704)) | (1L << (TRANSFORM_NOISE_WORDS - 704)) | (1L << (TRIPLE_DES - 704)) | (1L << (TRIPLE_DES_3KEY - 704)) | (1L << (TRUSTWORTHY - 704)) | (1L << (TRY - 704)) | (1L << (TSQL - 704)) | (1L << (TWO_DIGIT_YEAR_CUTOFF - 704)) | (1L << (TYPE - 704)) | (1L << (TYPE_WARNING - 704)) | (1L << (UNBOUNDED - 704)) | (1L << (UNCOMMITTED - 704)) | (1L << (UNKNOWN - 704)) | (1L << (UNLIMITED - 704)))) != 0) || ((((_la - 768)) & ~0x3f) == 0 && ((1L << (_la - 768)) & ((1L << (USING - 768)) | (1L << (VALID_XML - 768)) | (1L << (VALIDATION - 768)) | (1L << (VALUE - 768)) | (1L << (VAR - 768)) | (1L << (VARP - 768)) | (1L << (VIEW_METADATA - 768)) | (1L << (VIEWS - 768)) | (1L << (WAIT - 768)) | (1L << (WELL_FORMED_XML - 768)) | (1L << (WORK - 768)) | (1L << (WORKLOAD - 768)) | (1L << (XML - 768)) | (1L << (XMLNAMESPACES - 768)) | (1L << (DOUBLE_QUOTE_ID - 768)) | (1L << (SQUARE_BRACKET_ID - 768)) | (1L << (ID - 768)))) != 0)) {
					{
					setState(8240);
					id();
					}
				}

				}
				break;
			case CREATE:
				enterOuterAlt(_localctx, 5);
				{
				setState(8243);
				match(CREATE);
				setState(8244);
				_la = _input.LA(1);
				if ( !(_la==TABLE || _la==VIEW) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
				break;
			case SHOWPLAN:
				enterOuterAlt(_localctx, 6);
				{
				setState(8245);
				match(SHOWPLAN);
				}
				break;
			case IMPERSONATE:
				enterOuterAlt(_localctx, 7);
				{
				setState(8246);
				match(IMPERSONATE);
				}
				break;
			case SELECT:
				enterOuterAlt(_localctx, 8);
				{
				setState(8247);
				match(SELECT);
				}
				break;
			case REFERENCES:
				enterOuterAlt(_localctx, 9);
				{
				setState(8248);
				match(REFERENCES);
				}
				break;
			case INSERT:
				enterOuterAlt(_localctx, 10);
				{
				setState(8249);
				match(INSERT);
				}
				break;
			case ALTER:
				enterOuterAlt(_localctx, 11);
				{
				setState(8250);
				match(ALTER);
				setState(8258);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==ANY || _la==CALLED || ((((_la - 81)) & ~0x3f) == 0 && ((1L << (_la - 81)) & ((1L << (DATA_COMPRESSION - 81)) | (1L << (DATABASE - 81)) | (1L << (EVENTDATA - 81)) | (1L << (FILENAME - 81)) | (1L << (FILLFACTOR - 81)) | (1L << (FORCESEEK - 81)))) != 0) || ((((_la - 159)) & ~0x3f) == 0 && ((1L << (_la - 159)) & ((1L << (INIT - 159)) | (1L << (KEY - 159)) | (1L << (MASTER - 159)) | (1L << (MAX_MEMORY - 159)))) != 0) || ((((_la - 226)) & ~0x3f) == 0 && ((1L << (_la - 226)) & ((1L << (OFFSETS - 226)) | (1L << (PAGE - 226)) | (1L << (PUBLIC - 226)) | (1L << (R - 226)) | (1L << (RAW - 226)) | (1L << (RETURN - 226)) | (1L << (RETURNS - 226)) | (1L << (ROWCOUNT - 226)))) != 0) || ((((_la - 296)) & ~0x3f) == 0 && ((1L << (_la - 296)) & ((1L << (SAFETY - 296)) | (1L << (SERVER - 296)) | (1L << (SID - 296)) | (1L << (SOURCE - 296)) | (1L << (STATE - 296)) | (1L << (START - 296)) | (1L << (TARGET - 296)))) != 0) || ((((_la - 384)) & ~0x3f) == 0 && ((1L << (_la - 384)) & ((1L << (ABSOLUTE - 384)) | (1L << (ACCENT_SENSITIVITY - 384)) | (1L << (ACTION - 384)) | (1L << (ACTIVATION - 384)) | (1L << (ACTIVE - 384)) | (1L << (ADDRESS - 384)) | (1L << (AES_128 - 384)) | (1L << (AES_192 - 384)) | (1L << (AES_256 - 384)) | (1L << (AFFINITY - 384)) | (1L << (AFTER - 384)) | (1L << (AGGREGATE - 384)) | (1L << (ALGORITHM - 384)) | (1L << (ALLOW_ENCRYPTED_VALUE_MODIFICATIONS - 384)) | (1L << (ALLOW_SNAPSHOT_ISOLATION - 384)) | (1L << (ALLOWED - 384)) | (1L << (ANSI_NULL_DEFAULT - 384)) | (1L << (ANSI_NULLS - 384)) | (1L << (ANSI_PADDING - 384)) | (1L << (ANSI_WARNINGS - 384)) | (1L << (APPLICATION_LOG - 384)) | (1L << (APPLY - 384)) | (1L << (ARITHABORT - 384)) | (1L << (ASSEMBLY - 384)) | (1L << (AUDIT - 384)) | (1L << (AUDIT_GUID - 384)) | (1L << (AUTO - 384)) | (1L << (AUTO_CLEANUP - 384)) | (1L << (AUTO_CLOSE - 384)) | (1L << (AUTO_CREATE_STATISTICS - 384)) | (1L << (AUTO_SHRINK - 384)) | (1L << (AUTO_UPDATE_STATISTICS - 384)) | (1L << (AUTO_UPDATE_STATISTICS_ASYNC - 384)) | (1L << (AVAILABILITY - 384)) | (1L << (AVG - 384)) | (1L << (BACKUP_PRIORITY - 384)) | (1L << (BEGIN_DIALOG - 384)) | (1L << (BIGINT - 384)) | (1L << (BINARY_BASE64 - 384)) | (1L << (BINARY_CHECKSUM - 384)) | (1L << (BINDING - 384)) | (1L << (BLOB_STORAGE - 384)) | (1L << (BROKER - 384)) | (1L << (BROKER_INSTANCE - 384)) | (1L << (BULK_LOGGED - 384)) | (1L << (CALLER - 384)) | (1L << (CAP_CPU_PERCENT - 384)) | (1L << (CAST - 384)) | (1L << (CATALOG - 384)) | (1L << (CATCH - 384)) | (1L << (CHANGE_RETENTION - 384)) | (1L << (CHANGE_TRACKING - 384)) | (1L << (CHECKSUM - 384)) | (1L << (CHECKSUM_AGG - 384)) | (1L << (CLEANUP - 384)) | (1L << (COLLECTION - 384)) | (1L << (COLUMN_MASTER_KEY - 384)) | (1L << (COMMITTED - 384)) | (1L << (COMPATIBILITY_LEVEL - 384)) | (1L << (CONCAT - 384)) | (1L << (CONCAT_NULL_YIELDS_NULL - 384)) | (1L << (CONTENT - 384)) | (1L << (CONTROL - 384)) | (1L << (COOKIE - 384)))) != 0) || ((((_la - 448)) & ~0x3f) == 0 && ((1L << (_la - 448)) & ((1L << (COUNT - 448)) | (1L << (COUNT_BIG - 448)) | (1L << (COUNTER - 448)) | (1L << (CPU - 448)) | (1L << (CREATE_NEW - 448)) | (1L << (CREATION_DISPOSITION - 448)) | (1L << (CREDENTIAL - 448)) | (1L << (CRYPTOGRAPHIC - 448)) | (1L << (CURSOR_CLOSE_ON_COMMIT - 448)) | (1L << (CURSOR_DEFAULT - 448)) | (1L << (DATE_CORRELATION_OPTIMIZATION - 448)) | (1L << (DATEADD - 448)) | (1L << (DATEDIFF - 448)) | (1L << (DATENAME - 448)) | (1L << (DATEPART - 448)) | (1L << (DAYS - 448)) | (1L << (DB_CHAINING - 448)) | (1L << (DB_FAILOVER - 448)) | (1L << (DECRYPTION - 448)) | (1L << (DEFAULT_DOUBLE_QUOTE - 448)) | (1L << (DEFAULT_FULLTEXT_LANGUAGE - 448)) | (1L << (DEFAULT_LANGUAGE - 448)) | (1L << (DELAY - 448)) | (1L << (DELAYED_DURABILITY - 448)) | (1L << (DELETED - 448)) | (1L << (DENSE_RANK - 448)) | (1L << (DEPENDENTS - 448)) | (1L << (DES - 448)) | (1L << (DESCRIPTION - 448)) | (1L << (DESX - 448)) | (1L << (DHCP - 448)) | (1L << (DIALOG - 448)) | (1L << (DIRECTORY_NAME - 448)) | (1L << (DISABLE - 448)) | (1L << (DISABLE_BROKER - 448)) | (1L << (DISABLED - 448)) | (1L << (DISK_DRIVE - 448)) | (1L << (DOCUMENT - 448)) | (1L << (DYNAMIC - 448)) | (1L << (EMERGENCY - 448)) | (1L << (EMPTY - 448)) | (1L << (ENABLE - 448)) | (1L << (ENABLE_BROKER - 448)) | (1L << (ENCRYPTED_VALUE - 448)) | (1L << (ENCRYPTION - 448)) | (1L << (ENDPOINT_URL - 448)) | (1L << (ERROR_BROKER_CONVERSATIONS - 448)) | (1L << (EXCLUSIVE - 448)) | (1L << (EXECUTABLE - 448)) | (1L << (EXIST - 448)) | (1L << (EXPAND - 448)) | (1L << (EXPIRY_DATE - 448)) | (1L << (EXPLICIT - 448)) | (1L << (FAIL_OPERATION - 448)) | (1L << (FAILOVER_MODE - 448)) | (1L << (FAILURE - 448)) | (1L << (FAILURE_CONDITION_LEVEL - 448)) | (1L << (FAST - 448)) | (1L << (FAST_FORWARD - 448)) | (1L << (FILEGROUP - 448)) | (1L << (FILEGROWTH - 448)) | (1L << (FILEPATH - 448)) | (1L << (FILESTREAM - 448)))) != 0) || ((((_la - 512)) & ~0x3f) == 0 && ((1L << (_la - 512)) & ((1L << (FILTER - 512)) | (1L << (FIRST - 512)) | (1L << (FIRST_VALUE - 512)) | (1L << (FOLLOWING - 512)) | (1L << (FORCE - 512)) | (1L << (FORCE_FAILOVER_ALLOW_DATA_LOSS - 512)) | (1L << (FORCED - 512)) | (1L << (FORMAT - 512)) | (1L << (FORWARD_ONLY - 512)) | (1L << (FULLSCAN - 512)) | (1L << (FULLTEXT - 512)) | (1L << (GB - 512)) | (1L << (GETDATE - 512)) | (1L << (GETUTCDATE - 512)) | (1L << (GLOBAL - 512)) | (1L << (GO - 512)) | (1L << (GROUP_MAX_REQUESTS - 512)) | (1L << (GROUPING - 512)) | (1L << (GROUPING_ID - 512)) | (1L << (HADR - 512)) | (1L << (HASH - 512)) | (1L << (HEALTH_CHECK_TIMEOUT - 512)) | (1L << (HIGH - 512)) | (1L << (HONOR_BROKER_PRIORITY - 512)) | (1L << (HOURS - 512)) | (1L << (IDENTITY_VALUE - 512)) | (1L << (IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX - 512)) | (1L << (IMMEDIATE - 512)) | (1L << (IMPERSONATE - 512)) | (1L << (IMPORTANCE - 512)) | (1L << (INCREMENTAL - 512)) | (1L << (INITIATOR - 512)) | (1L << (INPUT - 512)) | (1L << (INSENSITIVE - 512)) | (1L << (INSERTED - 512)) | (1L << (INT - 512)) | (1L << (IP - 512)) | (1L << (ISOLATION - 512)) | (1L << (KB - 512)) | (1L << (KEEP - 512)) | (1L << (KEEPFIXED - 512)) | (1L << (KEY_SOURCE - 512)) | (1L << (KEYS - 512)) | (1L << (KEYSET - 512)) | (1L << (LAG - 512)) | (1L << (LAST - 512)) | (1L << (LAST_VALUE - 512)) | (1L << (LEAD - 512)) | (1L << (LEVEL - 512)) | (1L << (LIST - 512)) | (1L << (LISTENER - 512)) | (1L << (LISTENER_URL - 512)) | (1L << (LOB_COMPACTION - 512)) | (1L << (LOCAL - 512)) | (1L << (LOCATION - 512)) | (1L << (LOCK - 512)) | (1L << (LOCK_ESCALATION - 512)) | (1L << (LOGIN - 512)) | (1L << (LOOP - 512)) | (1L << (LOW - 512)) | (1L << (MANUAL - 512)) | (1L << (MARK - 512)))) != 0) || ((((_la - 576)) & ~0x3f) == 0 && ((1L << (_la - 576)) & ((1L << (MATERIALIZED - 576)) | (1L << (MAX - 576)) | (1L << (MAX_CPU_PERCENT - 576)) | (1L << (MAX_DOP - 576)) | (1L << (MAX_FILES - 576)) | (1L << (MAX_IOPS_PER_VOLUME - 576)) | (1L << (MAX_MEMORY_PERCENT - 576)) | (1L << (MAX_PROCESSES - 576)) | (1L << (MAX_QUEUE_READERS - 576)) | (1L << (MAX_ROLLOVER_FILES - 576)) | (1L << (MAXDOP - 576)) | (1L << (MAXRECURSION - 576)) | (1L << (MAXSIZE - 576)) | (1L << (MB - 576)) | (1L << (MEDIUM - 576)) | (1L << (MEMORY_OPTIMIZED_DATA - 576)) | (1L << (MESSAGE - 576)) | (1L << (MIN - 576)) | (1L << (MIN_ACTIVE_ROWVERSION - 576)) | (1L << (MIN_CPU_PERCENT - 576)) | (1L << (MIN_IOPS_PER_VOLUME - 576)) | (1L << (MIN_MEMORY_PERCENT - 576)) | (1L << (MINUTES - 576)) | (1L << (MIRROR_ADDRESS - 576)) | (1L << (MIXED_PAGE_ALLOCATION - 576)) | (1L << (MODE - 576)) | (1L << (MODIFY - 576)) | (1L << (MOVE - 576)) | (1L << (MULTI_USER - 576)) | (1L << (NAME - 576)) | (1L << (NESTED_TRIGGERS - 576)) | (1L << (NEW_ACCOUNT - 576)) | (1L << (NEW_BROKER - 576)) | (1L << (NEW_PASSWORD - 576)) | (1L << (NEXT - 576)) | (1L << (NO - 576)) | (1L << (NO_TRUNCATE - 576)) | (1L << (NO_WAIT - 576)) | (1L << (NOCOUNT - 576)) | (1L << (NODES - 576)) | (1L << (NOEXPAND - 576)) | (1L << (NON_TRANSACTED_ACCESS - 576)) | (1L << (NORECOMPUTE - 576)) | (1L << (NORECOVERY - 576)) | (1L << (NOWAIT - 576)) | (1L << (NTILE - 576)) | (1L << (NUMANODE - 576)) | (1L << (NUMBER - 576)) | (1L << (NUMERIC_ROUNDABORT - 576)) | (1L << (OBJECT - 576)) | (1L << (OFFLINE - 576)) | (1L << (OFFSET - 576)) | (1L << (OLD_ACCOUNT - 576)) | (1L << (ONLINE - 576)) | (1L << (ONLY - 576)) | (1L << (OPEN_EXISTING - 576)) | (1L << (OPTIMISTIC - 576)) | (1L << (OPTIMIZE - 576)) | (1L << (OUT - 576)) | (1L << (OUTPUT - 576)) | (1L << (OWNER - 576)) | (1L << (PAGE_VERIFY - 576)) | (1L << (PARAMETERIZATION - 576)) | (1L << (PARTITION - 576)))) != 0) || ((((_la - 640)) & ~0x3f) == 0 && ((1L << (_la - 640)) & ((1L << (PARTITIONS - 640)) | (1L << (PARTNER - 640)) | (1L << (PATH - 640)) | (1L << (POISON_MESSAGE_HANDLING - 640)) | (1L << (POOL - 640)) | (1L << (PORT - 640)) | (1L << (PRECEDING - 640)) | (1L << (PRIMARY_ROLE - 640)) | (1L << (PRIOR - 640)) | (1L << (PRIORITY - 640)) | (1L << (PRIORITY_LEVEL - 640)) | (1L << (PRIVATE - 640)) | (1L << (PRIVATE_KEY - 640)) | (1L << (PRIVILEGES - 640)) | (1L << (PROCEDURE_NAME - 640)) | (1L << (PROPERTY - 640)) | (1L << (PROVIDER - 640)) | (1L << (PROVIDER_KEY_NAME - 640)) | (1L << (QUERY - 640)) | (1L << (QUEUE - 640)) | (1L << (QUEUE_DELAY - 640)) | (1L << (QUOTED_IDENTIFIER - 640)) | (1L << (RANGE - 640)) | (1L << (RANK - 640)) | (1L << (RC2 - 640)) | (1L << (RC4 - 640)) | (1L << (RC4_128 - 640)) | (1L << (READ_COMMITTED_SNAPSHOT - 640)) | (1L << (READ_ONLY - 640)) | (1L << (READ_ONLY_ROUTING_LIST - 640)) | (1L << (READ_WRITE - 640)) | (1L << (READONLY - 640)) | (1L << (REBUILD - 640)) | (1L << (RECEIVE - 640)) | (1L << (RECOMPILE - 640)) | (1L << (RECOVERY - 640)) | (1L << (RECURSIVE_TRIGGERS - 640)) | (1L << (RELATIVE - 640)) | (1L << (REMOTE - 640)) | (1L << (REMOTE_SERVICE_NAME - 640)) | (1L << (REMOVE - 640)) | (1L << (REORGANIZE - 640)) | (1L << (REPEATABLE - 640)) | (1L << (REPLICA - 640)) | (1L << (REQUEST_MAX_CPU_TIME_SEC - 640)) | (1L << (REQUEST_MAX_MEMORY_GRANT_PERCENT - 640)) | (1L << (REQUEST_MEMORY_GRANT_TIMEOUT_SEC - 640)) | (1L << (REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT - 640)) | (1L << (RESERVE_DISK_SPACE - 640)) | (1L << (RESOURCE - 640)) | (1L << (RESOURCE_MANAGER_LOCATION - 640)) | (1L << (RESTRICTED_USER - 640)) | (1L << (RETENTION - 640)) | (1L << (ROBUST - 640)) | (1L << (ROOT - 640)) | (1L << (ROUTE - 640)) | (1L << (ROW - 640)) | (1L << (ROW_NUMBER - 640)) | (1L << (ROWGUID - 640)) | (1L << (ROWS - 640)) | (1L << (SAMPLE - 640)) | (1L << (SCHEMABINDING - 640)) | (1L << (SCOPED - 640)) | (1L << (SCROLL - 640)))) != 0) || ((((_la - 704)) & ~0x3f) == 0 && ((1L << (_la - 704)) & ((1L << (SCROLL_LOCKS - 704)) | (1L << (SEARCH - 704)) | (1L << (SECONDARY - 704)) | (1L << (SECONDARY_ONLY - 704)) | (1L << (SECONDARY_ROLE - 704)) | (1L << (SECONDS - 704)) | (1L << (SECRET - 704)) | (1L << (SECURITY_LOG - 704)) | (1L << (SEEDING_MODE - 704)) | (1L << (SELF - 704)) | (1L << (SEMI_SENSITIVE - 704)) | (1L << (SEND - 704)) | (1L << (SENT - 704)) | (1L << (SERIALIZABLE - 704)) | (1L << (SESSION_TIMEOUT - 704)) | (1L << (SETERROR - 704)) | (1L << (SHARE - 704)) | (1L << (SHOWPLAN - 704)) | (1L << (SIGNATURE - 704)) | (1L << (SIMPLE - 704)) | (1L << (SINGLE_USER - 704)) | (1L << (SIZE - 704)) | (1L << (SMALLINT - 704)) | (1L << (SNAPSHOT - 704)) | (1L << (SPATIAL_WINDOW_MAX_CELLS - 704)) | (1L << (STANDBY - 704)) | (1L << (START_DATE - 704)) | (1L << (STATIC - 704)) | (1L << (STATS_STREAM - 704)) | (1L << (STATUS - 704)) | (1L << (STDEV - 704)) | (1L << (STDEVP - 704)) | (1L << (STOPLIST - 704)) | (1L << (STUFF - 704)) | (1L << (SUBJECT - 704)) | (1L << (SUM - 704)) | (1L << (SUSPEND - 704)) | (1L << (SYMMETRIC - 704)) | (1L << (SYNCHRONOUS_COMMIT - 704)) | (1L << (SYNONYM - 704)) | (1L << (TAKE - 704)) | (1L << (TARGET_RECOVERY_TIME - 704)) | (1L << (TB - 704)) | (1L << (TEXTIMAGE_ON - 704)) | (1L << (THROW - 704)) | (1L << (TIES - 704)) | (1L << (TIME - 704)) | (1L << (TIMEOUT - 704)) | (1L << (TIMER - 704)) | (1L << (TINYINT - 704)) | (1L << (TORN_PAGE_DETECTION - 704)) | (1L << (TRANSFORM_NOISE_WORDS - 704)) | (1L << (TRIPLE_DES - 704)) | (1L << (TRIPLE_DES_3KEY - 704)) | (1L << (TRUSTWORTHY - 704)) | (1L << (TRY - 704)) | (1L << (TSQL - 704)) | (1L << (TWO_DIGIT_YEAR_CUTOFF - 704)) | (1L << (TYPE - 704)) | (1L << (TYPE_WARNING - 704)) | (1L << (UNBOUNDED - 704)) | (1L << (UNCOMMITTED - 704)) | (1L << (UNKNOWN - 704)) | (1L << (UNLIMITED - 704)))) != 0) || ((((_la - 768)) & ~0x3f) == 0 && ((1L << (_la - 768)) & ((1L << (USING - 768)) | (1L << (VALID_XML - 768)) | (1L << (VALIDATION - 768)) | (1L << (VALUE - 768)) | (1L << (VAR - 768)) | (1L << (VARP - 768)) | (1L << (VIEW_METADATA - 768)) | (1L << (VIEWS - 768)) | (1L << (WAIT - 768)) | (1L << (WELL_FORMED_XML - 768)) | (1L << (WORK - 768)) | (1L << (WORKLOAD - 768)) | (1L << (XML - 768)) | (1L << (XMLNAMESPACES - 768)) | (1L << (DOUBLE_QUOTE_ID - 768)) | (1L << (SQUARE_BRACKET_ID - 768)) | (1L << (ID - 768)))) != 0)) {
					{
					setState(8252);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==ANY) {
						{
						setState(8251);
						match(ANY);
						}
					}

					setState(8256);
					_errHandler.sync(this);
					switch (_input.LA(1)) {
					case CALLED:
					case DATA_COMPRESSION:
					case EVENTDATA:
					case FILENAME:
					case FILLFACTOR:
					case FORCESEEK:
					case INIT:
					case KEY:
					case MASTER:
					case MAX_MEMORY:
					case OFFSETS:
					case PAGE:
					case PUBLIC:
					case R:
					case RAW:
					case RETURN:
					case RETURNS:
					case ROWCOUNT:
					case SAFETY:
					case SERVER:
					case SID:
					case SOURCE:
					case STATE:
					case START:
					case TARGET:
					case ABSOLUTE:
					case ACCENT_SENSITIVITY:
					case ACTION:
					case ACTIVATION:
					case ACTIVE:
					case ADDRESS:
					case AES_128:
					case AES_192:
					case AES_256:
					case AFFINITY:
					case AFTER:
					case AGGREGATE:
					case ALGORITHM:
					case ALLOW_ENCRYPTED_VALUE_MODIFICATIONS:
					case ALLOW_SNAPSHOT_ISOLATION:
					case ALLOWED:
					case ANSI_NULL_DEFAULT:
					case ANSI_NULLS:
					case ANSI_PADDING:
					case ANSI_WARNINGS:
					case APPLICATION_LOG:
					case APPLY:
					case ARITHABORT:
					case ASSEMBLY:
					case AUDIT:
					case AUDIT_GUID:
					case AUTO:
					case AUTO_CLEANUP:
					case AUTO_CLOSE:
					case AUTO_CREATE_STATISTICS:
					case AUTO_SHRINK:
					case AUTO_UPDATE_STATISTICS:
					case AUTO_UPDATE_STATISTICS_ASYNC:
					case AVAILABILITY:
					case AVG:
					case BACKUP_PRIORITY:
					case BEGIN_DIALOG:
					case BIGINT:
					case BINARY_BASE64:
					case BINARY_CHECKSUM:
					case BINDING:
					case BLOB_STORAGE:
					case BROKER:
					case BROKER_INSTANCE:
					case BULK_LOGGED:
					case CALLER:
					case CAP_CPU_PERCENT:
					case CAST:
					case CATALOG:
					case CATCH:
					case CHANGE_RETENTION:
					case CHANGE_TRACKING:
					case CHECKSUM:
					case CHECKSUM_AGG:
					case CLEANUP:
					case COLLECTION:
					case COLUMN_MASTER_KEY:
					case COMMITTED:
					case COMPATIBILITY_LEVEL:
					case CONCAT:
					case CONCAT_NULL_YIELDS_NULL:
					case CONTENT:
					case CONTROL:
					case COOKIE:
					case COUNT:
					case COUNT_BIG:
					case COUNTER:
					case CPU:
					case CREATE_NEW:
					case CREATION_DISPOSITION:
					case CREDENTIAL:
					case CRYPTOGRAPHIC:
					case CURSOR_CLOSE_ON_COMMIT:
					case CURSOR_DEFAULT:
					case DATE_CORRELATION_OPTIMIZATION:
					case DATEADD:
					case DATEDIFF:
					case DATENAME:
					case DATEPART:
					case DAYS:
					case DB_CHAINING:
					case DB_FAILOVER:
					case DECRYPTION:
					case DEFAULT_DOUBLE_QUOTE:
					case DEFAULT_FULLTEXT_LANGUAGE:
					case DEFAULT_LANGUAGE:
					case DELAY:
					case DELAYED_DURABILITY:
					case DELETED:
					case DENSE_RANK:
					case DEPENDENTS:
					case DES:
					case DESCRIPTION:
					case DESX:
					case DHCP:
					case DIALOG:
					case DIRECTORY_NAME:
					case DISABLE:
					case DISABLE_BROKER:
					case DISABLED:
					case DISK_DRIVE:
					case DOCUMENT:
					case DYNAMIC:
					case EMERGENCY:
					case EMPTY:
					case ENABLE:
					case ENABLE_BROKER:
					case ENCRYPTED_VALUE:
					case ENCRYPTION:
					case ENDPOINT_URL:
					case ERROR_BROKER_CONVERSATIONS:
					case EXCLUSIVE:
					case EXECUTABLE:
					case EXIST:
					case EXPAND:
					case EXPIRY_DATE:
					case EXPLICIT:
					case FAIL_OPERATION:
					case FAILOVER_MODE:
					case FAILURE:
					case FAILURE_CONDITION_LEVEL:
					case FAST:
					case FAST_FORWARD:
					case FILEGROUP:
					case FILEGROWTH:
					case FILEPATH:
					case FILESTREAM:
					case FILTER:
					case FIRST:
					case FIRST_VALUE:
					case FOLLOWING:
					case FORCE:
					case FORCE_FAILOVER_ALLOW_DATA_LOSS:
					case FORCED:
					case FORMAT:
					case FORWARD_ONLY:
					case FULLSCAN:
					case FULLTEXT:
					case GB:
					case GETDATE:
					case GETUTCDATE:
					case GLOBAL:
					case GO:
					case GROUP_MAX_REQUESTS:
					case GROUPING:
					case GROUPING_ID:
					case HADR:
					case HASH:
					case HEALTH_CHECK_TIMEOUT:
					case HIGH:
					case HONOR_BROKER_PRIORITY:
					case HOURS:
					case IDENTITY_VALUE:
					case IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX:
					case IMMEDIATE:
					case IMPERSONATE:
					case IMPORTANCE:
					case INCREMENTAL:
					case INITIATOR:
					case INPUT:
					case INSENSITIVE:
					case INSERTED:
					case INT:
					case IP:
					case ISOLATION:
					case KB:
					case KEEP:
					case KEEPFIXED:
					case KEY_SOURCE:
					case KEYS:
					case KEYSET:
					case LAG:
					case LAST:
					case LAST_VALUE:
					case LEAD:
					case LEVEL:
					case LIST:
					case LISTENER:
					case LISTENER_URL:
					case LOB_COMPACTION:
					case LOCAL:
					case LOCATION:
					case LOCK:
					case LOCK_ESCALATION:
					case LOGIN:
					case LOOP:
					case LOW:
					case MANUAL:
					case MARK:
					case MATERIALIZED:
					case MAX:
					case MAX_CPU_PERCENT:
					case MAX_DOP:
					case MAX_FILES:
					case MAX_IOPS_PER_VOLUME:
					case MAX_MEMORY_PERCENT:
					case MAX_PROCESSES:
					case MAX_QUEUE_READERS:
					case MAX_ROLLOVER_FILES:
					case MAXDOP:
					case MAXRECURSION:
					case MAXSIZE:
					case MB:
					case MEDIUM:
					case MEMORY_OPTIMIZED_DATA:
					case MESSAGE:
					case MIN:
					case MIN_ACTIVE_ROWVERSION:
					case MIN_CPU_PERCENT:
					case MIN_IOPS_PER_VOLUME:
					case MIN_MEMORY_PERCENT:
					case MINUTES:
					case MIRROR_ADDRESS:
					case MIXED_PAGE_ALLOCATION:
					case MODE:
					case MODIFY:
					case MOVE:
					case MULTI_USER:
					case NAME:
					case NESTED_TRIGGERS:
					case NEW_ACCOUNT:
					case NEW_BROKER:
					case NEW_PASSWORD:
					case NEXT:
					case NO:
					case NO_TRUNCATE:
					case NO_WAIT:
					case NOCOUNT:
					case NODES:
					case NOEXPAND:
					case NON_TRANSACTED_ACCESS:
					case NORECOMPUTE:
					case NORECOVERY:
					case NOWAIT:
					case NTILE:
					case NUMANODE:
					case NUMBER:
					case NUMERIC_ROUNDABORT:
					case OBJECT:
					case OFFLINE:
					case OFFSET:
					case OLD_ACCOUNT:
					case ONLINE:
					case ONLY:
					case OPEN_EXISTING:
					case OPTIMISTIC:
					case OPTIMIZE:
					case OUT:
					case OUTPUT:
					case OWNER:
					case PAGE_VERIFY:
					case PARAMETERIZATION:
					case PARTITION:
					case PARTITIONS:
					case PARTNER:
					case PATH:
					case POISON_MESSAGE_HANDLING:
					case POOL:
					case PORT:
					case PRECEDING:
					case PRIMARY_ROLE:
					case PRIOR:
					case PRIORITY:
					case PRIORITY_LEVEL:
					case PRIVATE:
					case PRIVATE_KEY:
					case PRIVILEGES:
					case PROCEDURE_NAME:
					case PROPERTY:
					case PROVIDER:
					case PROVIDER_KEY_NAME:
					case QUERY:
					case QUEUE:
					case QUEUE_DELAY:
					case QUOTED_IDENTIFIER:
					case RANGE:
					case RANK:
					case RC2:
					case RC4:
					case RC4_128:
					case READ_COMMITTED_SNAPSHOT:
					case READ_ONLY:
					case READ_ONLY_ROUTING_LIST:
					case READ_WRITE:
					case READONLY:
					case REBUILD:
					case RECEIVE:
					case RECOMPILE:
					case RECOVERY:
					case RECURSIVE_TRIGGERS:
					case RELATIVE:
					case REMOTE:
					case REMOTE_SERVICE_NAME:
					case REMOVE:
					case REORGANIZE:
					case REPEATABLE:
					case REPLICA:
					case REQUEST_MAX_CPU_TIME_SEC:
					case REQUEST_MAX_MEMORY_GRANT_PERCENT:
					case REQUEST_MEMORY_GRANT_TIMEOUT_SEC:
					case REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT:
					case RESERVE_DISK_SPACE:
					case RESOURCE:
					case RESOURCE_MANAGER_LOCATION:
					case RESTRICTED_USER:
					case RETENTION:
					case ROBUST:
					case ROOT:
					case ROUTE:
					case ROW:
					case ROW_NUMBER:
					case ROWGUID:
					case ROWS:
					case SAMPLE:
					case SCHEMABINDING:
					case SCOPED:
					case SCROLL:
					case SCROLL_LOCKS:
					case SEARCH:
					case SECONDARY:
					case SECONDARY_ONLY:
					case SECONDARY_ROLE:
					case SECONDS:
					case SECRET:
					case SECURITY_LOG:
					case SEEDING_MODE:
					case SELF:
					case SEMI_SENSITIVE:
					case SEND:
					case SENT:
					case SERIALIZABLE:
					case SESSION_TIMEOUT:
					case SETERROR:
					case SHARE:
					case SHOWPLAN:
					case SIGNATURE:
					case SIMPLE:
					case SINGLE_USER:
					case SIZE:
					case SMALLINT:
					case SNAPSHOT:
					case SPATIAL_WINDOW_MAX_CELLS:
					case STANDBY:
					case START_DATE:
					case STATIC:
					case STATS_STREAM:
					case STATUS:
					case STDEV:
					case STDEVP:
					case STOPLIST:
					case STUFF:
					case SUBJECT:
					case SUM:
					case SUSPEND:
					case SYMMETRIC:
					case SYNCHRONOUS_COMMIT:
					case SYNONYM:
					case TAKE:
					case TARGET_RECOVERY_TIME:
					case TB:
					case TEXTIMAGE_ON:
					case THROW:
					case TIES:
					case TIME:
					case TIMEOUT:
					case TIMER:
					case TINYINT:
					case TORN_PAGE_DETECTION:
					case TRANSFORM_NOISE_WORDS:
					case TRIPLE_DES:
					case TRIPLE_DES_3KEY:
					case TRUSTWORTHY:
					case TRY:
					case TSQL:
					case TWO_DIGIT_YEAR_CUTOFF:
					case TYPE:
					case TYPE_WARNING:
					case UNBOUNDED:
					case UNCOMMITTED:
					case UNKNOWN:
					case UNLIMITED:
					case USING:
					case VALID_XML:
					case VALIDATION:
					case VALUE:
					case VAR:
					case VARP:
					case VIEW_METADATA:
					case VIEWS:
					case WAIT:
					case WELL_FORMED_XML:
					case WORK:
					case WORKLOAD:
					case XML:
					case XMLNAMESPACES:
					case DOUBLE_QUOTE_ID:
					case SQUARE_BRACKET_ID:
					case ID:
						{
						setState(8254);
						id();
						}
						break;
					case DATABASE:
						{
						setState(8255);
						match(DATABASE);
						}
						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 Set_statementContext extends ParserRuleContext {
		public IdContext member_name;
		public TerminalNode SET() { return getToken(TSqlParser.SET, 0); }
		public TerminalNode LOCAL_ID() { return getToken(TSqlParser.LOCAL_ID, 0); }
		public TerminalNode EQUAL() { return getToken(TSqlParser.EQUAL, 0); }
		public ExpressionContext expression() {
			return getRuleContext(ExpressionContext.class,0);
		}
		public TerminalNode DOT() { return getToken(TSqlParser.DOT, 0); }
		public TerminalNode SEMI() { return getToken(TSqlParser.SEMI, 0); }
		public IdContext id() {
			return getRuleContext(IdContext.class,0);
		}
		public Assignment_operatorContext assignment_operator() {
			return getRuleContext(Assignment_operatorContext.class,0);
		}
		public TerminalNode CURSOR() { return getToken(TSqlParser.CURSOR, 0); }
		public Declare_set_cursor_commonContext declare_set_cursor_common() {
			return getRuleContext(Declare_set_cursor_commonContext.class,0);
		}
		public TerminalNode FOR() { return getToken(TSqlParser.FOR, 0); }
		public TerminalNode READ() { return getToken(TSqlParser.READ, 0); }
		public TerminalNode ONLY() { return getToken(TSqlParser.ONLY, 0); }
		public TerminalNode UPDATE() { return getToken(TSqlParser.UPDATE, 0); }
		public TerminalNode OF() { return getToken(TSqlParser.OF, 0); }
		public Column_name_listContext column_name_list() {
			return getRuleContext(Column_name_listContext.class,0);
		}
		public Set_specialContext set_special() {
			return getRuleContext(Set_specialContext.class,0);
		}
		public Set_statementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_set_statement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterSet_statement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitSet_statement(this);
		}
	}

	public final Set_statementContext set_statement() throws RecognitionException {
		Set_statementContext _localctx = new Set_statementContext(_ctx, getState());
		enterRule(_localctx, 658, RULE_set_statement);
		int _la;
		try {
			setState(8301);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,1157,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(8262);
				match(SET);
				setState(8263);
				match(LOCAL_ID);
				setState(8266);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==DOT) {
					{
					setState(8264);
					match(DOT);
					setState(8265);
					((Set_statementContext)_localctx).member_name = id();
					}
				}

				setState(8268);
				match(EQUAL);
				setState(8269);
				expression(0);
				setState(8271);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1151,_ctx) ) {
				case 1:
					{
					setState(8270);
					match(SEMI);
					}
					break;
				}
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(8273);
				match(SET);
				setState(8274);
				match(LOCAL_ID);
				setState(8275);
				assignment_operator();
				setState(8276);
				expression(0);
				setState(8278);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1152,_ctx) ) {
				case 1:
					{
					setState(8277);
					match(SEMI);
					}
					break;
				}
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(8280);
				match(SET);
				setState(8281);
				match(LOCAL_ID);
				setState(8282);
				match(EQUAL);
				setState(8283);
				match(CURSOR);
				setState(8284);
				declare_set_cursor_common();
				setState(8295);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==FOR) {
					{
					setState(8285);
					match(FOR);
					setState(8293);
					_errHandler.sync(this);
					switch (_input.LA(1)) {
					case READ:
						{
						setState(8286);
						match(READ);
						setState(8287);
						match(ONLY);
						}
						break;
					case UPDATE:
						{
						setState(8288);
						match(UPDATE);
						setState(8291);
						_errHandler.sync(this);
						_la = _input.LA(1);
						if (_la==OF) {
							{
							setState(8289);
							match(OF);
							setState(8290);
							column_name_list();
							}
						}

						}
						break;
					default:
						throw new NoViableAltException(this);
					}
					}
				}

				setState(8298);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1156,_ctx) ) {
				case 1:
					{
					setState(8297);
					match(SEMI);
					}
					break;
				}
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(8300);
				set_special();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Transaction_statementContext extends ParserRuleContext {
		public TerminalNode BEGIN() { return getToken(TSqlParser.BEGIN, 0); }
		public TerminalNode DISTRIBUTED() { return getToken(TSqlParser.DISTRIBUTED, 0); }
		public TerminalNode TRAN() { return getToken(TSqlParser.TRAN, 0); }
		public TerminalNode TRANSACTION() { return getToken(TSqlParser.TRANSACTION, 0); }
		public IdContext id() {
			return getRuleContext(IdContext.class,0);
		}
		public TerminalNode LOCAL_ID() { return getToken(TSqlParser.LOCAL_ID, 0); }
		public TerminalNode SEMI() { return getToken(TSqlParser.SEMI, 0); }
		public TerminalNode WITH() { return getToken(TSqlParser.WITH, 0); }
		public TerminalNode MARK() { return getToken(TSqlParser.MARK, 0); }
		public TerminalNode STRING() { return getToken(TSqlParser.STRING, 0); }
		public TerminalNode COMMIT() { return getToken(TSqlParser.COMMIT, 0); }
		public TerminalNode LR_BRACKET() { return getToken(TSqlParser.LR_BRACKET, 0); }
		public TerminalNode DELAYED_DURABILITY() { return getToken(TSqlParser.DELAYED_DURABILITY, 0); }
		public TerminalNode EQUAL() { return getToken(TSqlParser.EQUAL, 0); }
		public TerminalNode RR_BRACKET() { return getToken(TSqlParser.RR_BRACKET, 0); }
		public TerminalNode OFF() { return getToken(TSqlParser.OFF, 0); }
		public TerminalNode ON() { return getToken(TSqlParser.ON, 0); }
		public TerminalNode WORK() { return getToken(TSqlParser.WORK, 0); }
		public TerminalNode ROLLBACK() { return getToken(TSqlParser.ROLLBACK, 0); }
		public TerminalNode SAVE() { return getToken(TSqlParser.SAVE, 0); }
		public Transaction_statementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_transaction_statement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterTransaction_statement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitTransaction_statement(this);
		}
	}

	public final Transaction_statementContext transaction_statement() throws RecognitionException {
		Transaction_statementContext _localctx = new Transaction_statementContext(_ctx, getState());
		enterRule(_localctx, 660, RULE_transaction_statement);
		int _la;
		try {
			setState(8384);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,1176,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(8303);
				match(BEGIN);
				setState(8304);
				match(DISTRIBUTED);
				setState(8305);
				_la = _input.LA(1);
				if ( !(_la==TRAN || _la==TRANSACTION) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(8308);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1158,_ctx) ) {
				case 1:
					{
					setState(8306);
					id();
					}
					break;
				case 2:
					{
					setState(8307);
					match(LOCAL_ID);
					}
					break;
				}
				setState(8311);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1159,_ctx) ) {
				case 1:
					{
					setState(8310);
					match(SEMI);
					}
					break;
				}
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(8313);
				match(BEGIN);
				setState(8314);
				_la = _input.LA(1);
				if ( !(_la==TRAN || _la==TRANSACTION) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(8324);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1162,_ctx) ) {
				case 1:
					{
					setState(8317);
					_errHandler.sync(this);
					switch (_input.LA(1)) {
					case CALLED:
					case DATA_COMPRESSION:
					case EVENTDATA:
					case FILENAME:
					case FILLFACTOR:
					case FORCESEEK:
					case INIT:
					case KEY:
					case MASTER:
					case MAX_MEMORY:
					case OFFSETS:
					case PAGE:
					case PUBLIC:
					case R:
					case RAW:
					case RETURN:
					case RETURNS:
					case ROWCOUNT:
					case SAFETY:
					case SERVER:
					case SID:
					case SOURCE:
					case STATE:
					case START:
					case TARGET:
					case ABSOLUTE:
					case ACCENT_SENSITIVITY:
					case ACTION:
					case ACTIVATION:
					case ACTIVE:
					case ADDRESS:
					case AES_128:
					case AES_192:
					case AES_256:
					case AFFINITY:
					case AFTER:
					case AGGREGATE:
					case ALGORITHM:
					case ALLOW_ENCRYPTED_VALUE_MODIFICATIONS:
					case ALLOW_SNAPSHOT_ISOLATION:
					case ALLOWED:
					case ANSI_NULL_DEFAULT:
					case ANSI_NULLS:
					case ANSI_PADDING:
					case ANSI_WARNINGS:
					case APPLICATION_LOG:
					case APPLY:
					case ARITHABORT:
					case ASSEMBLY:
					case AUDIT:
					case AUDIT_GUID:
					case AUTO:
					case AUTO_CLEANUP:
					case AUTO_CLOSE:
					case AUTO_CREATE_STATISTICS:
					case AUTO_SHRINK:
					case AUTO_UPDATE_STATISTICS:
					case AUTO_UPDATE_STATISTICS_ASYNC:
					case AVAILABILITY:
					case AVG:
					case BACKUP_PRIORITY:
					case BEGIN_DIALOG:
					case BIGINT:
					case BINARY_BASE64:
					case BINARY_CHECKSUM:
					case BINDING:
					case BLOB_STORAGE:
					case BROKER:
					case BROKER_INSTANCE:
					case BULK_LOGGED:
					case CALLER:
					case CAP_CPU_PERCENT:
					case CAST:
					case CATALOG:
					case CATCH:
					case CHANGE_RETENTION:
					case CHANGE_TRACKING:
					case CHECKSUM:
					case CHECKSUM_AGG:
					case CLEANUP:
					case COLLECTION:
					case COLUMN_MASTER_KEY:
					case COMMITTED:
					case COMPATIBILITY_LEVEL:
					case CONCAT:
					case CONCAT_NULL_YIELDS_NULL:
					case CONTENT:
					case CONTROL:
					case COOKIE:
					case COUNT:
					case COUNT_BIG:
					case COUNTER:
					case CPU:
					case CREATE_NEW:
					case CREATION_DISPOSITION:
					case CREDENTIAL:
					case CRYPTOGRAPHIC:
					case CURSOR_CLOSE_ON_COMMIT:
					case CURSOR_DEFAULT:
					case DATE_CORRELATION_OPTIMIZATION:
					case DATEADD:
					case DATEDIFF:
					case DATENAME:
					case DATEPART:
					case DAYS:
					case DB_CHAINING:
					case DB_FAILOVER:
					case DECRYPTION:
					case DEFAULT_DOUBLE_QUOTE:
					case DEFAULT_FULLTEXT_LANGUAGE:
					case DEFAULT_LANGUAGE:
					case DELAY:
					case DELAYED_DURABILITY:
					case DELETED:
					case DENSE_RANK:
					case DEPENDENTS:
					case DES:
					case DESCRIPTION:
					case DESX:
					case DHCP:
					case DIALOG:
					case DIRECTORY_NAME:
					case DISABLE:
					case DISABLE_BROKER:
					case DISABLED:
					case DISK_DRIVE:
					case DOCUMENT:
					case DYNAMIC:
					case EMERGENCY:
					case EMPTY:
					case ENABLE:
					case ENABLE_BROKER:
					case ENCRYPTED_VALUE:
					case ENCRYPTION:
					case ENDPOINT_URL:
					case ERROR_BROKER_CONVERSATIONS:
					case EXCLUSIVE:
					case EXECUTABLE:
					case EXIST:
					case EXPAND:
					case EXPIRY_DATE:
					case EXPLICIT:
					case FAIL_OPERATION:
					case FAILOVER_MODE:
					case FAILURE:
					case FAILURE_CONDITION_LEVEL:
					case FAST:
					case FAST_FORWARD:
					case FILEGROUP:
					case FILEGROWTH:
					case FILEPATH:
					case FILESTREAM:
					case FILTER:
					case FIRST:
					case FIRST_VALUE:
					case FOLLOWING:
					case FORCE:
					case FORCE_FAILOVER_ALLOW_DATA_LOSS:
					case FORCED:
					case FORMAT:
					case FORWARD_ONLY:
					case FULLSCAN:
					case FULLTEXT:
					case GB:
					case GETDATE:
					case GETUTCDATE:
					case GLOBAL:
					case GO:
					case GROUP_MAX_REQUESTS:
					case GROUPING:
					case GROUPING_ID:
					case HADR:
					case HASH:
					case HEALTH_CHECK_TIMEOUT:
					case HIGH:
					case HONOR_BROKER_PRIORITY:
					case HOURS:
					case IDENTITY_VALUE:
					case IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX:
					case IMMEDIATE:
					case IMPERSONATE:
					case IMPORTANCE:
					case INCREMENTAL:
					case INITIATOR:
					case INPUT:
					case INSENSITIVE:
					case INSERTED:
					case INT:
					case IP:
					case ISOLATION:
					case KB:
					case KEEP:
					case KEEPFIXED:
					case KEY_SOURCE:
					case KEYS:
					case KEYSET:
					case LAG:
					case LAST:
					case LAST_VALUE:
					case LEAD:
					case LEVEL:
					case LIST:
					case LISTENER:
					case LISTENER_URL:
					case LOB_COMPACTION:
					case LOCAL:
					case LOCATION:
					case LOCK:
					case LOCK_ESCALATION:
					case LOGIN:
					case LOOP:
					case LOW:
					case MANUAL:
					case MARK:
					case MATERIALIZED:
					case MAX:
					case MAX_CPU_PERCENT:
					case MAX_DOP:
					case MAX_FILES:
					case MAX_IOPS_PER_VOLUME:
					case MAX_MEMORY_PERCENT:
					case MAX_PROCESSES:
					case MAX_QUEUE_READERS:
					case MAX_ROLLOVER_FILES:
					case MAXDOP:
					case MAXRECURSION:
					case MAXSIZE:
					case MB:
					case MEDIUM:
					case MEMORY_OPTIMIZED_DATA:
					case MESSAGE:
					case MIN:
					case MIN_ACTIVE_ROWVERSION:
					case MIN_CPU_PERCENT:
					case MIN_IOPS_PER_VOLUME:
					case MIN_MEMORY_PERCENT:
					case MINUTES:
					case MIRROR_ADDRESS:
					case MIXED_PAGE_ALLOCATION:
					case MODE:
					case MODIFY:
					case MOVE:
					case MULTI_USER:
					case NAME:
					case NESTED_TRIGGERS:
					case NEW_ACCOUNT:
					case NEW_BROKER:
					case NEW_PASSWORD:
					case NEXT:
					case NO:
					case NO_TRUNCATE:
					case NO_WAIT:
					case NOCOUNT:
					case NODES:
					case NOEXPAND:
					case NON_TRANSACTED_ACCESS:
					case NORECOMPUTE:
					case NORECOVERY:
					case NOWAIT:
					case NTILE:
					case NUMANODE:
					case NUMBER:
					case NUMERIC_ROUNDABORT:
					case OBJECT:
					case OFFLINE:
					case OFFSET:
					case OLD_ACCOUNT:
					case ONLINE:
					case ONLY:
					case OPEN_EXISTING:
					case OPTIMISTIC:
					case OPTIMIZE:
					case OUT:
					case OUTPUT:
					case OWNER:
					case PAGE_VERIFY:
					case PARAMETERIZATION:
					case PARTITION:
					case PARTITIONS:
					case PARTNER:
					case PATH:
					case POISON_MESSAGE_HANDLING:
					case POOL:
					case PORT:
					case PRECEDING:
					case PRIMARY_ROLE:
					case PRIOR:
					case PRIORITY:
					case PRIORITY_LEVEL:
					case PRIVATE:
					case PRIVATE_KEY:
					case PRIVILEGES:
					case PROCEDURE_NAME:
					case PROPERTY:
					case PROVIDER:
					case PROVIDER_KEY_NAME:
					case QUERY:
					case QUEUE:
					case QUEUE_DELAY:
					case QUOTED_IDENTIFIER:
					case RANGE:
					case RANK:
					case RC2:
					case RC4:
					case RC4_128:
					case READ_COMMITTED_SNAPSHOT:
					case READ_ONLY:
					case READ_ONLY_ROUTING_LIST:
					case READ_WRITE:
					case READONLY:
					case REBUILD:
					case RECEIVE:
					case RECOMPILE:
					case RECOVERY:
					case RECURSIVE_TRIGGERS:
					case RELATIVE:
					case REMOTE:
					case REMOTE_SERVICE_NAME:
					case REMOVE:
					case REORGANIZE:
					case REPEATABLE:
					case REPLICA:
					case REQUEST_MAX_CPU_TIME_SEC:
					case REQUEST_MAX_MEMORY_GRANT_PERCENT:
					case REQUEST_MEMORY_GRANT_TIMEOUT_SEC:
					case REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT:
					case RESERVE_DISK_SPACE:
					case RESOURCE:
					case RESOURCE_MANAGER_LOCATION:
					case RESTRICTED_USER:
					case RETENTION:
					case ROBUST:
					case ROOT:
					case ROUTE:
					case ROW:
					case ROW_NUMBER:
					case ROWGUID:
					case ROWS:
					case SAMPLE:
					case SCHEMABINDING:
					case SCOPED:
					case SCROLL:
					case SCROLL_LOCKS:
					case SEARCH:
					case SECONDARY:
					case SECONDARY_ONLY:
					case SECONDARY_ROLE:
					case SECONDS:
					case SECRET:
					case SECURITY_LOG:
					case SEEDING_MODE:
					case SELF:
					case SEMI_SENSITIVE:
					case SEND:
					case SENT:
					case SERIALIZABLE:
					case SESSION_TIMEOUT:
					case SETERROR:
					case SHARE:
					case SHOWPLAN:
					case SIGNATURE:
					case SIMPLE:
					case SINGLE_USER:
					case SIZE:
					case SMALLINT:
					case SNAPSHOT:
					case SPATIAL_WINDOW_MAX_CELLS:
					case STANDBY:
					case START_DATE:
					case STATIC:
					case STATS_STREAM:
					case STATUS:
					case STDEV:
					case STDEVP:
					case STOPLIST:
					case STUFF:
					case SUBJECT:
					case SUM:
					case SUSPEND:
					case SYMMETRIC:
					case SYNCHRONOUS_COMMIT:
					case SYNONYM:
					case TAKE:
					case TARGET_RECOVERY_TIME:
					case TB:
					case TEXTIMAGE_ON:
					case THROW:
					case TIES:
					case TIME:
					case TIMEOUT:
					case TIMER:
					case TINYINT:
					case TORN_PAGE_DETECTION:
					case TRANSFORM_NOISE_WORDS:
					case TRIPLE_DES:
					case TRIPLE_DES_3KEY:
					case TRUSTWORTHY:
					case TRY:
					case TSQL:
					case TWO_DIGIT_YEAR_CUTOFF:
					case TYPE:
					case TYPE_WARNING:
					case UNBOUNDED:
					case UNCOMMITTED:
					case UNKNOWN:
					case UNLIMITED:
					case USING:
					case VALID_XML:
					case VALIDATION:
					case VALUE:
					case VAR:
					case VARP:
					case VIEW_METADATA:
					case VIEWS:
					case WAIT:
					case WELL_FORMED_XML:
					case WORK:
					case WORKLOAD:
					case XML:
					case XMLNAMESPACES:
					case DOUBLE_QUOTE_ID:
					case SQUARE_BRACKET_ID:
					case ID:
						{
						setState(8315);
						id();
						}
						break;
					case LOCAL_ID:
						{
						setState(8316);
						match(LOCAL_ID);
						}
						break;
					default:
						throw new NoViableAltException(this);
					}
					setState(8322);
					_errHandler.sync(this);
					switch ( getInterpreter().adaptivePredict(_input,1161,_ctx) ) {
					case 1:
						{
						setState(8319);
						match(WITH);
						setState(8320);
						match(MARK);
						setState(8321);
						match(STRING);
						}
						break;
					}
					}
					break;
				}
				setState(8327);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1163,_ctx) ) {
				case 1:
					{
					setState(8326);
					match(SEMI);
					}
					break;
				}
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(8329);
				match(COMMIT);
				setState(8330);
				_la = _input.LA(1);
				if ( !(_la==TRAN || _la==TRANSACTION) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(8343);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1166,_ctx) ) {
				case 1:
					{
					setState(8333);
					_errHandler.sync(this);
					switch (_input.LA(1)) {
					case CALLED:
					case DATA_COMPRESSION:
					case EVENTDATA:
					case FILENAME:
					case FILLFACTOR:
					case FORCESEEK:
					case INIT:
					case KEY:
					case MASTER:
					case MAX_MEMORY:
					case OFFSETS:
					case PAGE:
					case PUBLIC:
					case R:
					case RAW:
					case RETURN:
					case RETURNS:
					case ROWCOUNT:
					case SAFETY:
					case SERVER:
					case SID:
					case SOURCE:
					case STATE:
					case START:
					case TARGET:
					case ABSOLUTE:
					case ACCENT_SENSITIVITY:
					case ACTION:
					case ACTIVATION:
					case ACTIVE:
					case ADDRESS:
					case AES_128:
					case AES_192:
					case AES_256:
					case AFFINITY:
					case AFTER:
					case AGGREGATE:
					case ALGORITHM:
					case ALLOW_ENCRYPTED_VALUE_MODIFICATIONS:
					case ALLOW_SNAPSHOT_ISOLATION:
					case ALLOWED:
					case ANSI_NULL_DEFAULT:
					case ANSI_NULLS:
					case ANSI_PADDING:
					case ANSI_WARNINGS:
					case APPLICATION_LOG:
					case APPLY:
					case ARITHABORT:
					case ASSEMBLY:
					case AUDIT:
					case AUDIT_GUID:
					case AUTO:
					case AUTO_CLEANUP:
					case AUTO_CLOSE:
					case AUTO_CREATE_STATISTICS:
					case AUTO_SHRINK:
					case AUTO_UPDATE_STATISTICS:
					case AUTO_UPDATE_STATISTICS_ASYNC:
					case AVAILABILITY:
					case AVG:
					case BACKUP_PRIORITY:
					case BEGIN_DIALOG:
					case BIGINT:
					case BINARY_BASE64:
					case BINARY_CHECKSUM:
					case BINDING:
					case BLOB_STORAGE:
					case BROKER:
					case BROKER_INSTANCE:
					case BULK_LOGGED:
					case CALLER:
					case CAP_CPU_PERCENT:
					case CAST:
					case CATALOG:
					case CATCH:
					case CHANGE_RETENTION:
					case CHANGE_TRACKING:
					case CHECKSUM:
					case CHECKSUM_AGG:
					case CLEANUP:
					case COLLECTION:
					case COLUMN_MASTER_KEY:
					case COMMITTED:
					case COMPATIBILITY_LEVEL:
					case CONCAT:
					case CONCAT_NULL_YIELDS_NULL:
					case CONTENT:
					case CONTROL:
					case COOKIE:
					case COUNT:
					case COUNT_BIG:
					case COUNTER:
					case CPU:
					case CREATE_NEW:
					case CREATION_DISPOSITION:
					case CREDENTIAL:
					case CRYPTOGRAPHIC:
					case CURSOR_CLOSE_ON_COMMIT:
					case CURSOR_DEFAULT:
					case DATE_CORRELATION_OPTIMIZATION:
					case DATEADD:
					case DATEDIFF:
					case DATENAME:
					case DATEPART:
					case DAYS:
					case DB_CHAINING:
					case DB_FAILOVER:
					case DECRYPTION:
					case DEFAULT_DOUBLE_QUOTE:
					case DEFAULT_FULLTEXT_LANGUAGE:
					case DEFAULT_LANGUAGE:
					case DELAY:
					case DELAYED_DURABILITY:
					case DELETED:
					case DENSE_RANK:
					case DEPENDENTS:
					case DES:
					case DESCRIPTION:
					case DESX:
					case DHCP:
					case DIALOG:
					case DIRECTORY_NAME:
					case DISABLE:
					case DISABLE_BROKER:
					case DISABLED:
					case DISK_DRIVE:
					case DOCUMENT:
					case DYNAMIC:
					case EMERGENCY:
					case EMPTY:
					case ENABLE:
					case ENABLE_BROKER:
					case ENCRYPTED_VALUE:
					case ENCRYPTION:
					case ENDPOINT_URL:
					case ERROR_BROKER_CONVERSATIONS:
					case EXCLUSIVE:
					case EXECUTABLE:
					case EXIST:
					case EXPAND:
					case EXPIRY_DATE:
					case EXPLICIT:
					case FAIL_OPERATION:
					case FAILOVER_MODE:
					case FAILURE:
					case FAILURE_CONDITION_LEVEL:
					case FAST:
					case FAST_FORWARD:
					case FILEGROUP:
					case FILEGROWTH:
					case FILEPATH:
					case FILESTREAM:
					case FILTER:
					case FIRST:
					case FIRST_VALUE:
					case FOLLOWING:
					case FORCE:
					case FORCE_FAILOVER_ALLOW_DATA_LOSS:
					case FORCED:
					case FORMAT:
					case FORWARD_ONLY:
					case FULLSCAN:
					case FULLTEXT:
					case GB:
					case GETDATE:
					case GETUTCDATE:
					case GLOBAL:
					case GO:
					case GROUP_MAX_REQUESTS:
					case GROUPING:
					case GROUPING_ID:
					case HADR:
					case HASH:
					case HEALTH_CHECK_TIMEOUT:
					case HIGH:
					case HONOR_BROKER_PRIORITY:
					case HOURS:
					case IDENTITY_VALUE:
					case IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX:
					case IMMEDIATE:
					case IMPERSONATE:
					case IMPORTANCE:
					case INCREMENTAL:
					case INITIATOR:
					case INPUT:
					case INSENSITIVE:
					case INSERTED:
					case INT:
					case IP:
					case ISOLATION:
					case KB:
					case KEEP:
					case KEEPFIXED:
					case KEY_SOURCE:
					case KEYS:
					case KEYSET:
					case LAG:
					case LAST:
					case LAST_VALUE:
					case LEAD:
					case LEVEL:
					case LIST:
					case LISTENER:
					case LISTENER_URL:
					case LOB_COMPACTION:
					case LOCAL:
					case LOCATION:
					case LOCK:
					case LOCK_ESCALATION:
					case LOGIN:
					case LOOP:
					case LOW:
					case MANUAL:
					case MARK:
					case MATERIALIZED:
					case MAX:
					case MAX_CPU_PERCENT:
					case MAX_DOP:
					case MAX_FILES:
					case MAX_IOPS_PER_VOLUME:
					case MAX_MEMORY_PERCENT:
					case MAX_PROCESSES:
					case MAX_QUEUE_READERS:
					case MAX_ROLLOVER_FILES:
					case MAXDOP:
					case MAXRECURSION:
					case MAXSIZE:
					case MB:
					case MEDIUM:
					case MEMORY_OPTIMIZED_DATA:
					case MESSAGE:
					case MIN:
					case MIN_ACTIVE_ROWVERSION:
					case MIN_CPU_PERCENT:
					case MIN_IOPS_PER_VOLUME:
					case MIN_MEMORY_PERCENT:
					case MINUTES:
					case MIRROR_ADDRESS:
					case MIXED_PAGE_ALLOCATION:
					case MODE:
					case MODIFY:
					case MOVE:
					case MULTI_USER:
					case NAME:
					case NESTED_TRIGGERS:
					case NEW_ACCOUNT:
					case NEW_BROKER:
					case NEW_PASSWORD:
					case NEXT:
					case NO:
					case NO_TRUNCATE:
					case NO_WAIT:
					case NOCOUNT:
					case NODES:
					case NOEXPAND:
					case NON_TRANSACTED_ACCESS:
					case NORECOMPUTE:
					case NORECOVERY:
					case NOWAIT:
					case NTILE:
					case NUMANODE:
					case NUMBER:
					case NUMERIC_ROUNDABORT:
					case OBJECT:
					case OFFLINE:
					case OFFSET:
					case OLD_ACCOUNT:
					case ONLINE:
					case ONLY:
					case OPEN_EXISTING:
					case OPTIMISTIC:
					case OPTIMIZE:
					case OUT:
					case OUTPUT:
					case OWNER:
					case PAGE_VERIFY:
					case PARAMETERIZATION:
					case PARTITION:
					case PARTITIONS:
					case PARTNER:
					case PATH:
					case POISON_MESSAGE_HANDLING:
					case POOL:
					case PORT:
					case PRECEDING:
					case PRIMARY_ROLE:
					case PRIOR:
					case PRIORITY:
					case PRIORITY_LEVEL:
					case PRIVATE:
					case PRIVATE_KEY:
					case PRIVILEGES:
					case PROCEDURE_NAME:
					case PROPERTY:
					case PROVIDER:
					case PROVIDER_KEY_NAME:
					case QUERY:
					case QUEUE:
					case QUEUE_DELAY:
					case QUOTED_IDENTIFIER:
					case RANGE:
					case RANK:
					case RC2:
					case RC4:
					case RC4_128:
					case READ_COMMITTED_SNAPSHOT:
					case READ_ONLY:
					case READ_ONLY_ROUTING_LIST:
					case READ_WRITE:
					case READONLY:
					case REBUILD:
					case RECEIVE:
					case RECOMPILE:
					case RECOVERY:
					case RECURSIVE_TRIGGERS:
					case RELATIVE:
					case REMOTE:
					case REMOTE_SERVICE_NAME:
					case REMOVE:
					case REORGANIZE:
					case REPEATABLE:
					case REPLICA:
					case REQUEST_MAX_CPU_TIME_SEC:
					case REQUEST_MAX_MEMORY_GRANT_PERCENT:
					case REQUEST_MEMORY_GRANT_TIMEOUT_SEC:
					case REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT:
					case RESERVE_DISK_SPACE:
					case RESOURCE:
					case RESOURCE_MANAGER_LOCATION:
					case RESTRICTED_USER:
					case RETENTION:
					case ROBUST:
					case ROOT:
					case ROUTE:
					case ROW:
					case ROW_NUMBER:
					case ROWGUID:
					case ROWS:
					case SAMPLE:
					case SCHEMABINDING:
					case SCOPED:
					case SCROLL:
					case SCROLL_LOCKS:
					case SEARCH:
					case SECONDARY:
					case SECONDARY_ONLY:
					case SECONDARY_ROLE:
					case SECONDS:
					case SECRET:
					case SECURITY_LOG:
					case SEEDING_MODE:
					case SELF:
					case SEMI_SENSITIVE:
					case SEND:
					case SENT:
					case SERIALIZABLE:
					case SESSION_TIMEOUT:
					case SETERROR:
					case SHARE:
					case SHOWPLAN:
					case SIGNATURE:
					case SIMPLE:
					case SINGLE_USER:
					case SIZE:
					case SMALLINT:
					case SNAPSHOT:
					case SPATIAL_WINDOW_MAX_CELLS:
					case STANDBY:
					case START_DATE:
					case STATIC:
					case STATS_STREAM:
					case STATUS:
					case STDEV:
					case STDEVP:
					case STOPLIST:
					case STUFF:
					case SUBJECT:
					case SUM:
					case SUSPEND:
					case SYMMETRIC:
					case SYNCHRONOUS_COMMIT:
					case SYNONYM:
					case TAKE:
					case TARGET_RECOVERY_TIME:
					case TB:
					case TEXTIMAGE_ON:
					case THROW:
					case TIES:
					case TIME:
					case TIMEOUT:
					case TIMER:
					case TINYINT:
					case TORN_PAGE_DETECTION:
					case TRANSFORM_NOISE_WORDS:
					case TRIPLE_DES:
					case TRIPLE_DES_3KEY:
					case TRUSTWORTHY:
					case TRY:
					case TSQL:
					case TWO_DIGIT_YEAR_CUTOFF:
					case TYPE:
					case TYPE_WARNING:
					case UNBOUNDED:
					case UNCOMMITTED:
					case UNKNOWN:
					case UNLIMITED:
					case USING:
					case VALID_XML:
					case VALIDATION:
					case VALUE:
					case VAR:
					case VARP:
					case VIEW_METADATA:
					case VIEWS:
					case WAIT:
					case WELL_FORMED_XML:
					case WORK:
					case WORKLOAD:
					case XML:
					case XMLNAMESPACES:
					case DOUBLE_QUOTE_ID:
					case SQUARE_BRACKET_ID:
					case ID:
						{
						setState(8331);
						id();
						}
						break;
					case LOCAL_ID:
						{
						setState(8332);
						match(LOCAL_ID);
						}
						break;
					default:
						throw new NoViableAltException(this);
					}
					setState(8341);
					_errHandler.sync(this);
					switch ( getInterpreter().adaptivePredict(_input,1165,_ctx) ) {
					case 1:
						{
						setState(8335);
						match(WITH);
						setState(8336);
						match(LR_BRACKET);
						setState(8337);
						match(DELAYED_DURABILITY);
						setState(8338);
						match(EQUAL);
						setState(8339);
						_la = _input.LA(1);
						if ( !(_la==OFF || _la==ON) ) {
						_errHandler.recoverInline(this);
						}
						else {
							if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
							_errHandler.reportMatch(this);
							consume();
						}
						setState(8340);
						match(RR_BRACKET);
						}
						break;
					}
					}
					break;
				}
				setState(8346);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1167,_ctx) ) {
				case 1:
					{
					setState(8345);
					match(SEMI);
					}
					break;
				}
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(8348);
				match(COMMIT);
				setState(8350);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1168,_ctx) ) {
				case 1:
					{
					setState(8349);
					match(WORK);
					}
					break;
				}
				setState(8353);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1169,_ctx) ) {
				case 1:
					{
					setState(8352);
					match(SEMI);
					}
					break;
				}
				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(8355);
				match(COMMIT);
				setState(8356);
				id();
				}
				break;
			case 6:
				enterOuterAlt(_localctx, 6);
				{
				setState(8357);
				match(ROLLBACK);
				setState(8358);
				id();
				}
				break;
			case 7:
				enterOuterAlt(_localctx, 7);
				{
				setState(8359);
				match(ROLLBACK);
				setState(8360);
				_la = _input.LA(1);
				if ( !(_la==TRAN || _la==TRANSACTION) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(8363);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1170,_ctx) ) {
				case 1:
					{
					setState(8361);
					id();
					}
					break;
				case 2:
					{
					setState(8362);
					match(LOCAL_ID);
					}
					break;
				}
				setState(8366);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1171,_ctx) ) {
				case 1:
					{
					setState(8365);
					match(SEMI);
					}
					break;
				}
				}
				break;
			case 8:
				enterOuterAlt(_localctx, 8);
				{
				setState(8368);
				match(ROLLBACK);
				setState(8370);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1172,_ctx) ) {
				case 1:
					{
					setState(8369);
					match(WORK);
					}
					break;
				}
				setState(8373);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1173,_ctx) ) {
				case 1:
					{
					setState(8372);
					match(SEMI);
					}
					break;
				}
				}
				break;
			case 9:
				enterOuterAlt(_localctx, 9);
				{
				setState(8375);
				match(SAVE);
				setState(8376);
				_la = _input.LA(1);
				if ( !(_la==TRAN || _la==TRANSACTION) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(8379);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1174,_ctx) ) {
				case 1:
					{
					setState(8377);
					id();
					}
					break;
				case 2:
					{
					setState(8378);
					match(LOCAL_ID);
					}
					break;
				}
				setState(8382);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1175,_ctx) ) {
				case 1:
					{
					setState(8381);
					match(SEMI);
					}
					break;
				}
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Go_statementContext extends ParserRuleContext {
		public Token count;
		public TerminalNode GO() { return getToken(TSqlParser.GO, 0); }
		public TerminalNode DECIMAL() { return getToken(TSqlParser.DECIMAL, 0); }
		public Go_statementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_go_statement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterGo_statement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitGo_statement(this);
		}
	}

	public final Go_statementContext go_statement() throws RecognitionException {
		Go_statementContext _localctx = new Go_statementContext(_ctx, getState());
		enterRule(_localctx, 662, RULE_go_statement);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(8386);
			match(GO);
			setState(8388);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,1177,_ctx) ) {
			case 1:
				{
				setState(8387);
				((Go_statementContext)_localctx).count = match(DECIMAL);
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Use_statementContext extends ParserRuleContext {
		public IdContext database;
		public TerminalNode USE() { return getToken(TSqlParser.USE, 0); }
		public IdContext id() {
			return getRuleContext(IdContext.class,0);
		}
		public TerminalNode SEMI() { return getToken(TSqlParser.SEMI, 0); }
		public Use_statementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_use_statement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterUse_statement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitUse_statement(this);
		}
	}

	public final Use_statementContext use_statement() throws RecognitionException {
		Use_statementContext _localctx = new Use_statementContext(_ctx, getState());
		enterRule(_localctx, 664, RULE_use_statement);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(8390);
			match(USE);
			setState(8391);
			((Use_statementContext)_localctx).database = id();
			setState(8393);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,1178,_ctx) ) {
			case 1:
				{
				setState(8392);
				match(SEMI);
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Setuser_statementContext extends ParserRuleContext {
		public Token user;
		public TerminalNode SETUSER() { return getToken(TSqlParser.SETUSER, 0); }
		public TerminalNode STRING() { return getToken(TSqlParser.STRING, 0); }
		public Setuser_statementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_setuser_statement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterSetuser_statement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitSetuser_statement(this);
		}
	}

	public final Setuser_statementContext setuser_statement() throws RecognitionException {
		Setuser_statementContext _localctx = new Setuser_statementContext(_ctx, getState());
		enterRule(_localctx, 666, RULE_setuser_statement);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(8395);
			match(SETUSER);
			setState(8397);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,1179,_ctx) ) {
			case 1:
				{
				setState(8396);
				((Setuser_statementContext)_localctx).user = match(STRING);
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Dbcc_clauseContext extends ParserRuleContext {
		public Simple_idContext name;
		public TerminalNode DBCC() { return getToken(TSqlParser.DBCC, 0); }
		public Simple_idContext simple_id() {
			return getRuleContext(Simple_idContext.class,0);
		}
		public TerminalNode LR_BRACKET() { return getToken(TSqlParser.LR_BRACKET, 0); }
		public Expression_listContext expression_list() {
			return getRuleContext(Expression_listContext.class,0);
		}
		public TerminalNode RR_BRACKET() { return getToken(TSqlParser.RR_BRACKET, 0); }
		public TerminalNode WITH() { return getToken(TSqlParser.WITH, 0); }
		public Dbcc_optionsContext dbcc_options() {
			return getRuleContext(Dbcc_optionsContext.class,0);
		}
		public TerminalNode SEMI() { return getToken(TSqlParser.SEMI, 0); }
		public Dbcc_clauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_dbcc_clause; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterDbcc_clause(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitDbcc_clause(this);
		}
	}

	public final Dbcc_clauseContext dbcc_clause() throws RecognitionException {
		Dbcc_clauseContext _localctx = new Dbcc_clauseContext(_ctx, getState());
		enterRule(_localctx, 668, RULE_dbcc_clause);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(8399);
			match(DBCC);
			setState(8400);
			((Dbcc_clauseContext)_localctx).name = simple_id();
			setState(8405);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,1180,_ctx) ) {
			case 1:
				{
				setState(8401);
				match(LR_BRACKET);
				setState(8402);
				expression_list();
				setState(8403);
				match(RR_BRACKET);
				}
				break;
			}
			setState(8409);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,1181,_ctx) ) {
			case 1:
				{
				setState(8407);
				match(WITH);
				setState(8408);
				dbcc_options();
				}
				break;
			}
			setState(8412);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,1182,_ctx) ) {
			case 1:
				{
				setState(8411);
				match(SEMI);
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Dbcc_optionsContext extends ParserRuleContext {
		public List simple_id() {
			return getRuleContexts(Simple_idContext.class);
		}
		public Simple_idContext simple_id(int i) {
			return getRuleContext(Simple_idContext.class,i);
		}
		public TerminalNode COMMA() { return getToken(TSqlParser.COMMA, 0); }
		public Dbcc_optionsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_dbcc_options; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterDbcc_options(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitDbcc_options(this);
		}
	}

	public final Dbcc_optionsContext dbcc_options() throws RecognitionException {
		Dbcc_optionsContext _localctx = new Dbcc_optionsContext(_ctx, getState());
		enterRule(_localctx, 670, RULE_dbcc_options);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(8414);
			simple_id();
			setState(8417);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==COMMA) {
				{
				setState(8415);
				match(COMMA);
				setState(8416);
				simple_id();
				}
			}

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

	public static class Execute_clauseContext extends ParserRuleContext {
		public Token clause;
		public TerminalNode EXECUTE() { return getToken(TSqlParser.EXECUTE, 0); }
		public TerminalNode AS() { return getToken(TSqlParser.AS, 0); }
		public TerminalNode CALLER() { return getToken(TSqlParser.CALLER, 0); }
		public TerminalNode SELF() { return getToken(TSqlParser.SELF, 0); }
		public TerminalNode OWNER() { return getToken(TSqlParser.OWNER, 0); }
		public TerminalNode STRING() { return getToken(TSqlParser.STRING, 0); }
		public Execute_clauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_execute_clause; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterExecute_clause(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitExecute_clause(this);
		}
	}

	public final Execute_clauseContext execute_clause() throws RecognitionException {
		Execute_clauseContext _localctx = new Execute_clauseContext(_ctx, getState());
		enterRule(_localctx, 672, RULE_execute_clause);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(8419);
			match(EXECUTE);
			setState(8420);
			match(AS);
			setState(8421);
			((Execute_clauseContext)_localctx).clause = _input.LT(1);
			_la = _input.LA(1);
			if ( !(_la==CALLER || _la==OWNER || _la==SELF || _la==STRING) ) {
				((Execute_clauseContext)_localctx).clause = (Token)_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 Declare_localContext extends ParserRuleContext {
		public TerminalNode LOCAL_ID() { return getToken(TSqlParser.LOCAL_ID, 0); }
		public Data_typeContext data_type() {
			return getRuleContext(Data_typeContext.class,0);
		}
		public TerminalNode AS() { return getToken(TSqlParser.AS, 0); }
		public TerminalNode EQUAL() { return getToken(TSqlParser.EQUAL, 0); }
		public ExpressionContext expression() {
			return getRuleContext(ExpressionContext.class,0);
		}
		public Declare_localContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_declare_local; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterDeclare_local(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitDeclare_local(this);
		}
	}

	public final Declare_localContext declare_local() throws RecognitionException {
		Declare_localContext _localctx = new Declare_localContext(_ctx, getState());
		enterRule(_localctx, 674, RULE_declare_local);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(8423);
			match(LOCAL_ID);
			setState(8425);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==AS) {
				{
				setState(8424);
				match(AS);
				}
			}

			setState(8427);
			data_type();
			setState(8430);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==EQUAL) {
				{
				setState(8428);
				match(EQUAL);
				setState(8429);
				expression(0);
				}
			}

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

	public static class Table_type_definitionContext extends ParserRuleContext {
		public TerminalNode TABLE() { return getToken(TSqlParser.TABLE, 0); }
		public TerminalNode LR_BRACKET() { return getToken(TSqlParser.LR_BRACKET, 0); }
		public Column_def_table_constraintsContext column_def_table_constraints() {
			return getRuleContext(Column_def_table_constraintsContext.class,0);
		}
		public TerminalNode RR_BRACKET() { return getToken(TSqlParser.RR_BRACKET, 0); }
		public Table_type_definitionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_table_type_definition; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterTable_type_definition(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitTable_type_definition(this);
		}
	}

	public final Table_type_definitionContext table_type_definition() throws RecognitionException {
		Table_type_definitionContext _localctx = new Table_type_definitionContext(_ctx, getState());
		enterRule(_localctx, 676, RULE_table_type_definition);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(8432);
			match(TABLE);
			setState(8433);
			match(LR_BRACKET);
			setState(8434);
			column_def_table_constraints();
			setState(8435);
			match(RR_BRACKET);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Xml_type_definitionContext extends ParserRuleContext {
		public TerminalNode XML() { return getToken(TSqlParser.XML, 0); }
		public TerminalNode LR_BRACKET() { return getToken(TSqlParser.LR_BRACKET, 0); }
		public Xml_schema_collectionContext xml_schema_collection() {
			return getRuleContext(Xml_schema_collectionContext.class,0);
		}
		public TerminalNode RR_BRACKET() { return getToken(TSqlParser.RR_BRACKET, 0); }
		public TerminalNode CONTENT() { return getToken(TSqlParser.CONTENT, 0); }
		public TerminalNode DOCUMENT() { return getToken(TSqlParser.DOCUMENT, 0); }
		public Xml_type_definitionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_xml_type_definition; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterXml_type_definition(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitXml_type_definition(this);
		}
	}

	public final Xml_type_definitionContext xml_type_definition() throws RecognitionException {
		Xml_type_definitionContext _localctx = new Xml_type_definitionContext(_ctx, getState());
		enterRule(_localctx, 678, RULE_xml_type_definition);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(8437);
			match(XML);
			setState(8438);
			match(LR_BRACKET);
			setState(8440);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==CONTENT || _la==DOCUMENT) {
				{
				setState(8439);
				_la = _input.LA(1);
				if ( !(_la==CONTENT || _la==DOCUMENT) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
			}

			setState(8442);
			xml_schema_collection();
			setState(8443);
			match(RR_BRACKET);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Xml_schema_collectionContext extends ParserRuleContext {
		public List ID() { return getTokens(TSqlParser.ID); }
		public TerminalNode ID(int i) {
			return getToken(TSqlParser.ID, i);
		}
		public TerminalNode DOT() { return getToken(TSqlParser.DOT, 0); }
		public Xml_schema_collectionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_xml_schema_collection; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterXml_schema_collection(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitXml_schema_collection(this);
		}
	}

	public final Xml_schema_collectionContext xml_schema_collection() throws RecognitionException {
		Xml_schema_collectionContext _localctx = new Xml_schema_collectionContext(_ctx, getState());
		enterRule(_localctx, 680, RULE_xml_schema_collection);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(8445);
			match(ID);
			setState(8446);
			match(DOT);
			setState(8447);
			match(ID);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Column_def_table_constraintsContext extends ParserRuleContext {
		public List column_def_table_constraint() {
			return getRuleContexts(Column_def_table_constraintContext.class);
		}
		public Column_def_table_constraintContext column_def_table_constraint(int i) {
			return getRuleContext(Column_def_table_constraintContext.class,i);
		}
		public List COMMA() { return getTokens(TSqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(TSqlParser.COMMA, i);
		}
		public Column_def_table_constraintsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_column_def_table_constraints; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterColumn_def_table_constraints(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitColumn_def_table_constraints(this);
		}
	}

	public final Column_def_table_constraintsContext column_def_table_constraints() throws RecognitionException {
		Column_def_table_constraintsContext _localctx = new Column_def_table_constraintsContext(_ctx, getState());
		enterRule(_localctx, 682, RULE_column_def_table_constraints);
		int _la;
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			setState(8449);
			column_def_table_constraint();
			setState(8456);
			_errHandler.sync(this);
			_alt = getInterpreter().adaptivePredict(_input,1188,_ctx);
			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
				if ( _alt==1 ) {
					{
					{
					setState(8451);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==COMMA) {
						{
						setState(8450);
						match(COMMA);
						}
					}

					setState(8453);
					column_def_table_constraint();
					}
					} 
				}
				setState(8458);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,1188,_ctx);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Column_def_table_constraintContext extends ParserRuleContext {
		public Column_definitionContext column_definition() {
			return getRuleContext(Column_definitionContext.class,0);
		}
		public Materialized_column_definitionContext materialized_column_definition() {
			return getRuleContext(Materialized_column_definitionContext.class,0);
		}
		public Table_constraintContext table_constraint() {
			return getRuleContext(Table_constraintContext.class,0);
		}
		public Column_def_table_constraintContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_column_def_table_constraint; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterColumn_def_table_constraint(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitColumn_def_table_constraint(this);
		}
	}

	public final Column_def_table_constraintContext column_def_table_constraint() throws RecognitionException {
		Column_def_table_constraintContext _localctx = new Column_def_table_constraintContext(_ctx, getState());
		enterRule(_localctx, 684, RULE_column_def_table_constraint);
		try {
			setState(8462);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,1189,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(8459);
				column_definition();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(8460);
				materialized_column_definition();
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(8461);
				table_constraint();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Column_definitionContext extends ParserRuleContext {
		public IdContext constraint;
		public Token seed;
		public Token increment;
		public List id() {
			return getRuleContexts(IdContext.class);
		}
		public IdContext id(int i) {
			return getRuleContext(IdContext.class,i);
		}
		public Data_typeContext data_type() {
			return getRuleContext(Data_typeContext.class,0);
		}
		public TerminalNode AS() { return getToken(TSqlParser.AS, 0); }
		public ExpressionContext expression() {
			return getRuleContext(ExpressionContext.class,0);
		}
		public TerminalNode COLLATE() { return getToken(TSqlParser.COLLATE, 0); }
		public Null_notnullContext null_notnull() {
			return getRuleContext(Null_notnullContext.class,0);
		}
		public List null_or_default() {
			return getRuleContexts(Null_or_defaultContext.class);
		}
		public Null_or_defaultContext null_or_default(int i) {
			return getRuleContext(Null_or_defaultContext.class,i);
		}
		public TerminalNode IDENTITY() { return getToken(TSqlParser.IDENTITY, 0); }
		public TerminalNode ROWGUIDCOL() { return getToken(TSqlParser.ROWGUIDCOL, 0); }
		public List column_constraint() {
			return getRuleContexts(Column_constraintContext.class);
		}
		public Column_constraintContext column_constraint(int i) {
			return getRuleContext(Column_constraintContext.class,i);
		}
		public TerminalNode CONSTRAINT() { return getToken(TSqlParser.CONSTRAINT, 0); }
		public TerminalNode LR_BRACKET() { return getToken(TSqlParser.LR_BRACKET, 0); }
		public TerminalNode COMMA() { return getToken(TSqlParser.COMMA, 0); }
		public TerminalNode RR_BRACKET() { return getToken(TSqlParser.RR_BRACKET, 0); }
		public TerminalNode NOT() { return getToken(TSqlParser.NOT, 0); }
		public TerminalNode FOR() { return getToken(TSqlParser.FOR, 0); }
		public TerminalNode REPLICATION() { return getToken(TSqlParser.REPLICATION, 0); }
		public List DECIMAL() { return getTokens(TSqlParser.DECIMAL); }
		public TerminalNode DECIMAL(int i) {
			return getToken(TSqlParser.DECIMAL, i);
		}
		public Column_definitionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_column_definition; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterColumn_definition(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitColumn_definition(this);
		}
	}

	public final Column_definitionContext column_definition() throws RecognitionException {
		Column_definitionContext _localctx = new Column_definitionContext(_ctx, getState());
		enterRule(_localctx, 686, RULE_column_definition);
		int _la;
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			setState(8464);
			id();
			setState(8468);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case CALLED:
			case DATA_COMPRESSION:
			case DOUBLE:
			case EVENTDATA:
			case FILENAME:
			case FILLFACTOR:
			case FORCESEEK:
			case INIT:
			case KEY:
			case MASTER:
			case MAX_MEMORY:
			case OFFSETS:
			case PAGE:
			case PUBLIC:
			case R:
			case RAW:
			case RETURN:
			case RETURNS:
			case ROWCOUNT:
			case SAFETY:
			case SERVER:
			case SID:
			case SOURCE:
			case STATE:
			case START:
			case TARGET:
			case ABSOLUTE:
			case ACCENT_SENSITIVITY:
			case ACTION:
			case ACTIVATION:
			case ACTIVE:
			case ADDRESS:
			case AES_128:
			case AES_192:
			case AES_256:
			case AFFINITY:
			case AFTER:
			case AGGREGATE:
			case ALGORITHM:
			case ALLOW_ENCRYPTED_VALUE_MODIFICATIONS:
			case ALLOW_SNAPSHOT_ISOLATION:
			case ALLOWED:
			case ANSI_NULL_DEFAULT:
			case ANSI_NULLS:
			case ANSI_PADDING:
			case ANSI_WARNINGS:
			case APPLICATION_LOG:
			case APPLY:
			case ARITHABORT:
			case ASSEMBLY:
			case AUDIT:
			case AUDIT_GUID:
			case AUTO:
			case AUTO_CLEANUP:
			case AUTO_CLOSE:
			case AUTO_CREATE_STATISTICS:
			case AUTO_SHRINK:
			case AUTO_UPDATE_STATISTICS:
			case AUTO_UPDATE_STATISTICS_ASYNC:
			case AVAILABILITY:
			case AVG:
			case BACKUP_PRIORITY:
			case BEGIN_DIALOG:
			case BIGINT:
			case BINARY_BASE64:
			case BINARY_CHECKSUM:
			case BINDING:
			case BLOB_STORAGE:
			case BROKER:
			case BROKER_INSTANCE:
			case BULK_LOGGED:
			case CALLER:
			case CAP_CPU_PERCENT:
			case CAST:
			case CATALOG:
			case CATCH:
			case CHANGE_RETENTION:
			case CHANGE_TRACKING:
			case CHECKSUM:
			case CHECKSUM_AGG:
			case CLEANUP:
			case COLLECTION:
			case COLUMN_MASTER_KEY:
			case COMMITTED:
			case COMPATIBILITY_LEVEL:
			case CONCAT:
			case CONCAT_NULL_YIELDS_NULL:
			case CONTENT:
			case CONTROL:
			case COOKIE:
			case COUNT:
			case COUNT_BIG:
			case COUNTER:
			case CPU:
			case CREATE_NEW:
			case CREATION_DISPOSITION:
			case CREDENTIAL:
			case CRYPTOGRAPHIC:
			case CURSOR_CLOSE_ON_COMMIT:
			case CURSOR_DEFAULT:
			case DATE_CORRELATION_OPTIMIZATION:
			case DATEADD:
			case DATEDIFF:
			case DATENAME:
			case DATEPART:
			case DAYS:
			case DB_CHAINING:
			case DB_FAILOVER:
			case DECRYPTION:
			case DEFAULT_DOUBLE_QUOTE:
			case DEFAULT_FULLTEXT_LANGUAGE:
			case DEFAULT_LANGUAGE:
			case DELAY:
			case DELAYED_DURABILITY:
			case DELETED:
			case DENSE_RANK:
			case DEPENDENTS:
			case DES:
			case DESCRIPTION:
			case DESX:
			case DHCP:
			case DIALOG:
			case DIRECTORY_NAME:
			case DISABLE:
			case DISABLE_BROKER:
			case DISABLED:
			case DISK_DRIVE:
			case DOCUMENT:
			case DYNAMIC:
			case EMERGENCY:
			case EMPTY:
			case ENABLE:
			case ENABLE_BROKER:
			case ENCRYPTED_VALUE:
			case ENCRYPTION:
			case ENDPOINT_URL:
			case ERROR_BROKER_CONVERSATIONS:
			case EXCLUSIVE:
			case EXECUTABLE:
			case EXIST:
			case EXPAND:
			case EXPIRY_DATE:
			case EXPLICIT:
			case FAIL_OPERATION:
			case FAILOVER_MODE:
			case FAILURE:
			case FAILURE_CONDITION_LEVEL:
			case FAST:
			case FAST_FORWARD:
			case FILEGROUP:
			case FILEGROWTH:
			case FILEPATH:
			case FILESTREAM:
			case FILTER:
			case FIRST:
			case FIRST_VALUE:
			case FOLLOWING:
			case FORCE:
			case FORCE_FAILOVER_ALLOW_DATA_LOSS:
			case FORCED:
			case FORMAT:
			case FORWARD_ONLY:
			case FULLSCAN:
			case FULLTEXT:
			case GB:
			case GETDATE:
			case GETUTCDATE:
			case GLOBAL:
			case GO:
			case GROUP_MAX_REQUESTS:
			case GROUPING:
			case GROUPING_ID:
			case HADR:
			case HASH:
			case HEALTH_CHECK_TIMEOUT:
			case HIGH:
			case HONOR_BROKER_PRIORITY:
			case HOURS:
			case IDENTITY_VALUE:
			case IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX:
			case IMMEDIATE:
			case IMPERSONATE:
			case IMPORTANCE:
			case INCREMENTAL:
			case INITIATOR:
			case INPUT:
			case INSENSITIVE:
			case INSERTED:
			case INT:
			case IP:
			case ISOLATION:
			case KB:
			case KEEP:
			case KEEPFIXED:
			case KEY_SOURCE:
			case KEYS:
			case KEYSET:
			case LAG:
			case LAST:
			case LAST_VALUE:
			case LEAD:
			case LEVEL:
			case LIST:
			case LISTENER:
			case LISTENER_URL:
			case LOB_COMPACTION:
			case LOCAL:
			case LOCATION:
			case LOCK:
			case LOCK_ESCALATION:
			case LOGIN:
			case LOOP:
			case LOW:
			case MANUAL:
			case MARK:
			case MATERIALIZED:
			case MAX:
			case MAX_CPU_PERCENT:
			case MAX_DOP:
			case MAX_FILES:
			case MAX_IOPS_PER_VOLUME:
			case MAX_MEMORY_PERCENT:
			case MAX_PROCESSES:
			case MAX_QUEUE_READERS:
			case MAX_ROLLOVER_FILES:
			case MAXDOP:
			case MAXRECURSION:
			case MAXSIZE:
			case MB:
			case MEDIUM:
			case MEMORY_OPTIMIZED_DATA:
			case MESSAGE:
			case MIN:
			case MIN_ACTIVE_ROWVERSION:
			case MIN_CPU_PERCENT:
			case MIN_IOPS_PER_VOLUME:
			case MIN_MEMORY_PERCENT:
			case MINUTES:
			case MIRROR_ADDRESS:
			case MIXED_PAGE_ALLOCATION:
			case MODE:
			case MODIFY:
			case MOVE:
			case MULTI_USER:
			case NAME:
			case NESTED_TRIGGERS:
			case NEW_ACCOUNT:
			case NEW_BROKER:
			case NEW_PASSWORD:
			case NEXT:
			case NO:
			case NO_TRUNCATE:
			case NO_WAIT:
			case NOCOUNT:
			case NODES:
			case NOEXPAND:
			case NON_TRANSACTED_ACCESS:
			case NORECOMPUTE:
			case NORECOVERY:
			case NOWAIT:
			case NTILE:
			case NUMANODE:
			case NUMBER:
			case NUMERIC_ROUNDABORT:
			case OBJECT:
			case OFFLINE:
			case OFFSET:
			case OLD_ACCOUNT:
			case ONLINE:
			case ONLY:
			case OPEN_EXISTING:
			case OPTIMISTIC:
			case OPTIMIZE:
			case OUT:
			case OUTPUT:
			case OWNER:
			case PAGE_VERIFY:
			case PARAMETERIZATION:
			case PARTITION:
			case PARTITIONS:
			case PARTNER:
			case PATH:
			case POISON_MESSAGE_HANDLING:
			case POOL:
			case PORT:
			case PRECEDING:
			case PRIMARY_ROLE:
			case PRIOR:
			case PRIORITY:
			case PRIORITY_LEVEL:
			case PRIVATE:
			case PRIVATE_KEY:
			case PRIVILEGES:
			case PROCEDURE_NAME:
			case PROPERTY:
			case PROVIDER:
			case PROVIDER_KEY_NAME:
			case QUERY:
			case QUEUE:
			case QUEUE_DELAY:
			case QUOTED_IDENTIFIER:
			case RANGE:
			case RANK:
			case RC2:
			case RC4:
			case RC4_128:
			case READ_COMMITTED_SNAPSHOT:
			case READ_ONLY:
			case READ_ONLY_ROUTING_LIST:
			case READ_WRITE:
			case READONLY:
			case REBUILD:
			case RECEIVE:
			case RECOMPILE:
			case RECOVERY:
			case RECURSIVE_TRIGGERS:
			case RELATIVE:
			case REMOTE:
			case REMOTE_SERVICE_NAME:
			case REMOVE:
			case REORGANIZE:
			case REPEATABLE:
			case REPLICA:
			case REQUEST_MAX_CPU_TIME_SEC:
			case REQUEST_MAX_MEMORY_GRANT_PERCENT:
			case REQUEST_MEMORY_GRANT_TIMEOUT_SEC:
			case REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT:
			case RESERVE_DISK_SPACE:
			case RESOURCE:
			case RESOURCE_MANAGER_LOCATION:
			case RESTRICTED_USER:
			case RETENTION:
			case ROBUST:
			case ROOT:
			case ROUTE:
			case ROW:
			case ROW_NUMBER:
			case ROWGUID:
			case ROWS:
			case SAMPLE:
			case SCHEMABINDING:
			case SCOPED:
			case SCROLL:
			case SCROLL_LOCKS:
			case SEARCH:
			case SECONDARY:
			case SECONDARY_ONLY:
			case SECONDARY_ROLE:
			case SECONDS:
			case SECRET:
			case SECURITY_LOG:
			case SEEDING_MODE:
			case SELF:
			case SEMI_SENSITIVE:
			case SEND:
			case SENT:
			case SERIALIZABLE:
			case SESSION_TIMEOUT:
			case SETERROR:
			case SHARE:
			case SHOWPLAN:
			case SIGNATURE:
			case SIMPLE:
			case SINGLE_USER:
			case SIZE:
			case SMALLINT:
			case SNAPSHOT:
			case SPATIAL_WINDOW_MAX_CELLS:
			case STANDBY:
			case START_DATE:
			case STATIC:
			case STATS_STREAM:
			case STATUS:
			case STDEV:
			case STDEVP:
			case STOPLIST:
			case STUFF:
			case SUBJECT:
			case SUM:
			case SUSPEND:
			case SYMMETRIC:
			case SYNCHRONOUS_COMMIT:
			case SYNONYM:
			case TAKE:
			case TARGET_RECOVERY_TIME:
			case TB:
			case TEXTIMAGE_ON:
			case THROW:
			case TIES:
			case TIME:
			case TIMEOUT:
			case TIMER:
			case TINYINT:
			case TORN_PAGE_DETECTION:
			case TRANSFORM_NOISE_WORDS:
			case TRIPLE_DES:
			case TRIPLE_DES_3KEY:
			case TRUSTWORTHY:
			case TRY:
			case TSQL:
			case TWO_DIGIT_YEAR_CUTOFF:
			case TYPE:
			case TYPE_WARNING:
			case UNBOUNDED:
			case UNCOMMITTED:
			case UNKNOWN:
			case UNLIMITED:
			case USING:
			case VALID_XML:
			case VALIDATION:
			case VALUE:
			case VAR:
			case VARP:
			case VIEW_METADATA:
			case VIEWS:
			case WAIT:
			case WELL_FORMED_XML:
			case WORK:
			case WORKLOAD:
			case XML:
			case XMLNAMESPACES:
			case DOUBLE_QUOTE_ID:
			case SQUARE_BRACKET_ID:
			case ID:
				{
				setState(8465);
				data_type();
				}
				break;
			case AS:
				{
				setState(8466);
				match(AS);
				setState(8467);
				expression(0);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			setState(8472);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==COLLATE) {
				{
				setState(8470);
				match(COLLATE);
				setState(8471);
				id();
				}
			}

			setState(8475);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,1192,_ctx) ) {
			case 1:
				{
				setState(8474);
				null_notnull();
				}
				break;
			}
			setState(8498);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,1197,_ctx) ) {
			case 1:
				{
				setState(8479);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==CONSTRAINT) {
					{
					setState(8477);
					match(CONSTRAINT);
					setState(8478);
					((Column_definitionContext)_localctx).constraint = id();
					}
				}

				setState(8481);
				null_or_default();
				setState(8483);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1194,_ctx) ) {
				case 1:
					{
					setState(8482);
					null_or_default();
					}
					break;
				}
				}
				break;
			case 2:
				{
				setState(8485);
				match(IDENTITY);
				setState(8491);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1195,_ctx) ) {
				case 1:
					{
					setState(8486);
					match(LR_BRACKET);
					setState(8487);
					((Column_definitionContext)_localctx).seed = match(DECIMAL);
					setState(8488);
					match(COMMA);
					setState(8489);
					((Column_definitionContext)_localctx).increment = match(DECIMAL);
					setState(8490);
					match(RR_BRACKET);
					}
					break;
				}
				setState(8496);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1196,_ctx) ) {
				case 1:
					{
					setState(8493);
					match(NOT);
					setState(8494);
					match(FOR);
					setState(8495);
					match(REPLICATION);
					}
					break;
				}
				}
				break;
			}
			setState(8501);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==ROWGUIDCOL) {
				{
				setState(8500);
				match(ROWGUIDCOL);
				}
			}

			setState(8506);
			_errHandler.sync(this);
			_alt = getInterpreter().adaptivePredict(_input,1199,_ctx);
			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
				if ( _alt==1 ) {
					{
					{
					setState(8503);
					column_constraint();
					}
					} 
				}
				setState(8508);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,1199,_ctx);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Materialized_column_definitionContext extends ParserRuleContext {
		public IdContext id() {
			return getRuleContext(IdContext.class,0);
		}
		public ExpressionContext expression() {
			return getRuleContext(ExpressionContext.class,0);
		}
		public TerminalNode COMPUTE() { return getToken(TSqlParser.COMPUTE, 0); }
		public TerminalNode AS() { return getToken(TSqlParser.AS, 0); }
		public TerminalNode MATERIALIZED() { return getToken(TSqlParser.MATERIALIZED, 0); }
		public TerminalNode NOT() { return getToken(TSqlParser.NOT, 0); }
		public Materialized_column_definitionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_materialized_column_definition; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterMaterialized_column_definition(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitMaterialized_column_definition(this);
		}
	}

	public final Materialized_column_definitionContext materialized_column_definition() throws RecognitionException {
		Materialized_column_definitionContext _localctx = new Materialized_column_definitionContext(_ctx, getState());
		enterRule(_localctx, 688, RULE_materialized_column_definition);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(8509);
			id();
			setState(8510);
			_la = _input.LA(1);
			if ( !(_la==AS || _la==COMPUTE) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			setState(8511);
			expression(0);
			setState(8515);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,1200,_ctx) ) {
			case 1:
				{
				setState(8512);
				match(MATERIALIZED);
				}
				break;
			case 2:
				{
				setState(8513);
				match(NOT);
				setState(8514);
				match(MATERIALIZED);
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Column_constraintContext extends ParserRuleContext {
		public IdContext constraint;
		public Column_name_listContext pk;
		public TerminalNode CHECK() { return getToken(TSqlParser.CHECK, 0); }
		public TerminalNode LR_BRACKET() { return getToken(TSqlParser.LR_BRACKET, 0); }
		public Search_conditionContext search_condition() {
			return getRuleContext(Search_conditionContext.class,0);
		}
		public TerminalNode RR_BRACKET() { return getToken(TSqlParser.RR_BRACKET, 0); }
		public TerminalNode REFERENCES() { return getToken(TSqlParser.REFERENCES, 0); }
		public Table_nameContext table_name() {
			return getRuleContext(Table_nameContext.class,0);
		}
		public Null_notnullContext null_notnull() {
			return getRuleContext(Null_notnullContext.class,0);
		}
		public TerminalNode CONSTRAINT() { return getToken(TSqlParser.CONSTRAINT, 0); }
		public Column_name_listContext column_name_list() {
			return getRuleContext(Column_name_listContext.class,0);
		}
		public IdContext id() {
			return getRuleContext(IdContext.class,0);
		}
		public TerminalNode PRIMARY() { return getToken(TSqlParser.PRIMARY, 0); }
		public TerminalNode KEY() { return getToken(TSqlParser.KEY, 0); }
		public TerminalNode UNIQUE() { return getToken(TSqlParser.UNIQUE, 0); }
		public ClusteredContext clustered() {
			return getRuleContext(ClusteredContext.class,0);
		}
		public Index_optionsContext index_options() {
			return getRuleContext(Index_optionsContext.class,0);
		}
		public TerminalNode NOT() { return getToken(TSqlParser.NOT, 0); }
		public TerminalNode FOR() { return getToken(TSqlParser.FOR, 0); }
		public TerminalNode REPLICATION() { return getToken(TSqlParser.REPLICATION, 0); }
		public TerminalNode FOREIGN() { return getToken(TSqlParser.FOREIGN, 0); }
		public On_deleteContext on_delete() {
			return getRuleContext(On_deleteContext.class,0);
		}
		public On_updateContext on_update() {
			return getRuleContext(On_updateContext.class,0);
		}
		public Column_constraintContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_column_constraint; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterColumn_constraint(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitColumn_constraint(this);
		}
	}

	public final Column_constraintContext column_constraint() throws RecognitionException {
		Column_constraintContext _localctx = new Column_constraintContext(_ctx, getState());
		enterRule(_localctx, 690, RULE_column_constraint);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(8519);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==CONSTRAINT) {
				{
				setState(8517);
				match(CONSTRAINT);
				setState(8518);
				((Column_constraintContext)_localctx).constraint = id();
				}
			}

			setState(8558);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case PRIMARY:
			case UNIQUE:
				{
				setState(8524);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case PRIMARY:
					{
					setState(8521);
					match(PRIMARY);
					setState(8522);
					match(KEY);
					}
					break;
				case UNIQUE:
					{
					setState(8523);
					match(UNIQUE);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				setState(8527);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==CLUSTERED || _la==NONCLUSTERED) {
					{
					setState(8526);
					clustered();
					}
				}

				setState(8530);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1204,_ctx) ) {
				case 1:
					{
					setState(8529);
					index_options();
					}
					break;
				}
				}
				break;
			case CHECK:
				{
				setState(8532);
				match(CHECK);
				setState(8536);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==NOT) {
					{
					setState(8533);
					match(NOT);
					setState(8534);
					match(FOR);
					setState(8535);
					match(REPLICATION);
					}
				}

				setState(8538);
				match(LR_BRACKET);
				setState(8539);
				search_condition();
				setState(8540);
				match(RR_BRACKET);
				}
				break;
			case FOREIGN:
			case REFERENCES:
				{
				setState(8544);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==FOREIGN) {
					{
					setState(8542);
					match(FOREIGN);
					setState(8543);
					match(KEY);
					}
				}

				setState(8546);
				match(REFERENCES);
				setState(8547);
				table_name();
				setState(8548);
				match(LR_BRACKET);
				setState(8549);
				((Column_constraintContext)_localctx).pk = column_name_list();
				setState(8550);
				match(RR_BRACKET);
				setState(8552);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1207,_ctx) ) {
				case 1:
					{
					setState(8551);
					on_delete();
					}
					break;
				}
				setState(8555);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==ON) {
					{
					setState(8554);
					on_update();
					}
				}

				}
				break;
			case NOT:
			case NULL:
				{
				setState(8557);
				null_notnull();
				}
				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 Table_constraintContext extends ParserRuleContext {
		public IdContext constraint;
		public Column_name_listContext fk;
		public Column_name_listContext pk;
		public List LR_BRACKET() { return getTokens(TSqlParser.LR_BRACKET); }
		public TerminalNode LR_BRACKET(int i) {
			return getToken(TSqlParser.LR_BRACKET, i);
		}
		public Column_name_list_with_orderContext column_name_list_with_order() {
			return getRuleContext(Column_name_list_with_orderContext.class,0);
		}
		public List RR_BRACKET() { return getTokens(TSqlParser.RR_BRACKET); }
		public TerminalNode RR_BRACKET(int i) {
			return getToken(TSqlParser.RR_BRACKET, i);
		}
		public TerminalNode CHECK() { return getToken(TSqlParser.CHECK, 0); }
		public Search_conditionContext search_condition() {
			return getRuleContext(Search_conditionContext.class,0);
		}
		public TerminalNode DEFAULT() { return getToken(TSqlParser.DEFAULT, 0); }
		public TerminalNode FOR() { return getToken(TSqlParser.FOR, 0); }
		public List id() {
			return getRuleContexts(IdContext.class);
		}
		public IdContext id(int i) {
			return getRuleContext(IdContext.class,i);
		}
		public TerminalNode FOREIGN() { return getToken(TSqlParser.FOREIGN, 0); }
		public TerminalNode KEY() { return getToken(TSqlParser.KEY, 0); }
		public TerminalNode REFERENCES() { return getToken(TSqlParser.REFERENCES, 0); }
		public Table_nameContext table_name() {
			return getRuleContext(Table_nameContext.class,0);
		}
		public TerminalNode CONSTRAINT() { return getToken(TSqlParser.CONSTRAINT, 0); }
		public List column_name_list() {
			return getRuleContexts(Column_name_listContext.class);
		}
		public Column_name_listContext column_name_list(int i) {
			return getRuleContext(Column_name_listContext.class,i);
		}
		public TerminalNode PRIMARY() { return getToken(TSqlParser.PRIMARY, 0); }
		public TerminalNode UNIQUE() { return getToken(TSqlParser.UNIQUE, 0); }
		public ClusteredContext clustered() {
			return getRuleContext(ClusteredContext.class,0);
		}
		public Index_optionsContext index_options() {
			return getRuleContext(Index_optionsContext.class,0);
		}
		public TerminalNode ON() { return getToken(TSqlParser.ON, 0); }
		public TerminalNode NOT() { return getToken(TSqlParser.NOT, 0); }
		public TerminalNode REPLICATION() { return getToken(TSqlParser.REPLICATION, 0); }
		public List STRING() { return getTokens(TSqlParser.STRING); }
		public TerminalNode STRING(int i) {
			return getToken(TSqlParser.STRING, i);
		}
		public List PLUS() { return getTokens(TSqlParser.PLUS); }
		public TerminalNode PLUS(int i) {
			return getToken(TSqlParser.PLUS, i);
		}
		public List function_call() {
			return getRuleContexts(Function_callContext.class);
		}
		public Function_callContext function_call(int i) {
			return getRuleContext(Function_callContext.class,i);
		}
		public List DECIMAL() { return getTokens(TSqlParser.DECIMAL); }
		public TerminalNode DECIMAL(int i) {
			return getToken(TSqlParser.DECIMAL, i);
		}
		public On_deleteContext on_delete() {
			return getRuleContext(On_deleteContext.class,0);
		}
		public On_updateContext on_update() {
			return getRuleContext(On_updateContext.class,0);
		}
		public Table_constraintContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_table_constraint; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterTable_constraint(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitTable_constraint(this);
		}
	}

	public final Table_constraintContext table_constraint() throws RecognitionException {
		Table_constraintContext _localctx = new Table_constraintContext(_ctx, getState());
		enterRule(_localctx, 692, RULE_table_constraint);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(8562);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==CONSTRAINT) {
				{
				setState(8560);
				match(CONSTRAINT);
				setState(8561);
				((Table_constraintContext)_localctx).constraint = id();
				}
			}

			setState(8628);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case PRIMARY:
			case UNIQUE:
				{
				setState(8567);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case PRIMARY:
					{
					setState(8564);
					match(PRIMARY);
					setState(8565);
					match(KEY);
					}
					break;
				case UNIQUE:
					{
					setState(8566);
					match(UNIQUE);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				setState(8570);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==CLUSTERED || _la==NONCLUSTERED) {
					{
					setState(8569);
					clustered();
					}
				}

				setState(8572);
				match(LR_BRACKET);
				setState(8573);
				column_name_list_with_order();
				setState(8574);
				match(RR_BRACKET);
				setState(8576);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1213,_ctx) ) {
				case 1:
					{
					setState(8575);
					index_options();
					}
					break;
				}
				setState(8580);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==ON) {
					{
					setState(8578);
					match(ON);
					setState(8579);
					id();
					}
				}

				}
				break;
			case CHECK:
				{
				setState(8582);
				match(CHECK);
				setState(8586);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==NOT) {
					{
					setState(8583);
					match(NOT);
					setState(8584);
					match(FOR);
					setState(8585);
					match(REPLICATION);
					}
				}

				setState(8588);
				match(LR_BRACKET);
				setState(8589);
				search_condition();
				setState(8590);
				match(RR_BRACKET);
				}
				break;
			case DEFAULT:
				{
				setState(8592);
				match(DEFAULT);
				setState(8594);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==LR_BRACKET) {
					{
					setState(8593);
					match(LR_BRACKET);
					}
				}

				setState(8600); 
				_errHandler.sync(this);
				_la = _input.LA(1);
				do {
					{
					setState(8600);
					_errHandler.sync(this);
					switch (_input.LA(1)) {
					case STRING:
						{
						setState(8596);
						match(STRING);
						}
						break;
					case PLUS:
						{
						setState(8597);
						match(PLUS);
						}
						break;
					case CALLED:
					case COALESCE:
					case CONVERT:
					case CURRENT_TIMESTAMP:
					case CURRENT_USER:
					case DATA_COMPRESSION:
					case EVENTDATA:
					case FILENAME:
					case FILLFACTOR:
					case FORCESEEK:
					case IDENTITY:
					case IIF:
					case INIT:
					case ISNULL:
					case KEY:
					case LEFT:
					case MASTER:
					case MAX_MEMORY:
					case NULLIF:
					case OFFSETS:
					case PAGE:
					case PUBLIC:
					case R:
					case RAW:
					case RETURN:
					case RETURNS:
					case RIGHT:
					case ROWCOUNT:
					case SAFETY:
					case SERVER:
					case SESSION_USER:
					case SID:
					case SOURCE:
					case STATE:
					case START:
					case SYSTEM_USER:
					case TARGET:
					case ABSOLUTE:
					case ACCENT_SENSITIVITY:
					case ACTION:
					case ACTIVATION:
					case ACTIVE:
					case ADDRESS:
					case AES_128:
					case AES_192:
					case AES_256:
					case AFFINITY:
					case AFTER:
					case AGGREGATE:
					case ALGORITHM:
					case ALLOW_ENCRYPTED_VALUE_MODIFICATIONS:
					case ALLOW_SNAPSHOT_ISOLATION:
					case ALLOWED:
					case ANSI_NULL_DEFAULT:
					case ANSI_NULLS:
					case ANSI_PADDING:
					case ANSI_WARNINGS:
					case APPLICATION_LOG:
					case APPLY:
					case ARITHABORT:
					case ASSEMBLY:
					case AUDIT:
					case AUDIT_GUID:
					case AUTO:
					case AUTO_CLEANUP:
					case AUTO_CLOSE:
					case AUTO_CREATE_STATISTICS:
					case AUTO_SHRINK:
					case AUTO_UPDATE_STATISTICS:
					case AUTO_UPDATE_STATISTICS_ASYNC:
					case AVAILABILITY:
					case AVG:
					case BACKUP_PRIORITY:
					case BEGIN_DIALOG:
					case BIGINT:
					case BINARY_BASE64:
					case BINARY_CHECKSUM:
					case BINDING:
					case BLOB_STORAGE:
					case BROKER:
					case BROKER_INSTANCE:
					case BULK_LOGGED:
					case CALLER:
					case CAP_CPU_PERCENT:
					case CAST:
					case CATALOG:
					case CATCH:
					case CHANGE_RETENTION:
					case CHANGE_TRACKING:
					case CHECKSUM:
					case CHECKSUM_AGG:
					case CLEANUP:
					case COLLECTION:
					case COLUMN_MASTER_KEY:
					case COMMITTED:
					case COMPATIBILITY_LEVEL:
					case CONCAT:
					case CONCAT_NULL_YIELDS_NULL:
					case CONTENT:
					case CONTROL:
					case COOKIE:
					case COUNT:
					case COUNT_BIG:
					case COUNTER:
					case CPU:
					case CREATE_NEW:
					case CREATION_DISPOSITION:
					case CREDENTIAL:
					case CRYPTOGRAPHIC:
					case CURSOR_CLOSE_ON_COMMIT:
					case CURSOR_DEFAULT:
					case DATE_CORRELATION_OPTIMIZATION:
					case DATEADD:
					case DATEDIFF:
					case DATENAME:
					case DATEPART:
					case DAYS:
					case DB_CHAINING:
					case DB_FAILOVER:
					case DECRYPTION:
					case DEFAULT_DOUBLE_QUOTE:
					case DEFAULT_FULLTEXT_LANGUAGE:
					case DEFAULT_LANGUAGE:
					case DELAY:
					case DELAYED_DURABILITY:
					case DELETED:
					case DENSE_RANK:
					case DEPENDENTS:
					case DES:
					case DESCRIPTION:
					case DESX:
					case DHCP:
					case DIALOG:
					case DIRECTORY_NAME:
					case DISABLE:
					case DISABLE_BROKER:
					case DISABLED:
					case DISK_DRIVE:
					case DOCUMENT:
					case DYNAMIC:
					case EMERGENCY:
					case EMPTY:
					case ENABLE:
					case ENABLE_BROKER:
					case ENCRYPTED_VALUE:
					case ENCRYPTION:
					case ENDPOINT_URL:
					case ERROR_BROKER_CONVERSATIONS:
					case EXCLUSIVE:
					case EXECUTABLE:
					case EXIST:
					case EXPAND:
					case EXPIRY_DATE:
					case EXPLICIT:
					case FAIL_OPERATION:
					case FAILOVER_MODE:
					case FAILURE:
					case FAILURE_CONDITION_LEVEL:
					case FAST:
					case FAST_FORWARD:
					case FILEGROUP:
					case FILEGROWTH:
					case FILEPATH:
					case FILESTREAM:
					case FILTER:
					case FIRST:
					case FIRST_VALUE:
					case FOLLOWING:
					case FORCE:
					case FORCE_FAILOVER_ALLOW_DATA_LOSS:
					case FORCED:
					case FORMAT:
					case FORWARD_ONLY:
					case FULLSCAN:
					case FULLTEXT:
					case GB:
					case GETDATE:
					case GETUTCDATE:
					case GLOBAL:
					case GO:
					case GROUP_MAX_REQUESTS:
					case GROUPING:
					case GROUPING_ID:
					case HADR:
					case HASH:
					case HEALTH_CHECK_TIMEOUT:
					case HIGH:
					case HONOR_BROKER_PRIORITY:
					case HOURS:
					case IDENTITY_VALUE:
					case IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX:
					case IMMEDIATE:
					case IMPERSONATE:
					case IMPORTANCE:
					case INCREMENTAL:
					case INITIATOR:
					case INPUT:
					case INSENSITIVE:
					case INSERTED:
					case INT:
					case IP:
					case ISOLATION:
					case KB:
					case KEEP:
					case KEEPFIXED:
					case KEY_SOURCE:
					case KEYS:
					case KEYSET:
					case LAG:
					case LAST:
					case LAST_VALUE:
					case LEAD:
					case LEVEL:
					case LIST:
					case LISTENER:
					case LISTENER_URL:
					case LOB_COMPACTION:
					case LOCAL:
					case LOCATION:
					case LOCK:
					case LOCK_ESCALATION:
					case LOGIN:
					case LOOP:
					case LOW:
					case MANUAL:
					case MARK:
					case MATERIALIZED:
					case MAX:
					case MAX_CPU_PERCENT:
					case MAX_DOP:
					case MAX_FILES:
					case MAX_IOPS_PER_VOLUME:
					case MAX_MEMORY_PERCENT:
					case MAX_PROCESSES:
					case MAX_QUEUE_READERS:
					case MAX_ROLLOVER_FILES:
					case MAXDOP:
					case MAXRECURSION:
					case MAXSIZE:
					case MB:
					case MEDIUM:
					case MEMORY_OPTIMIZED_DATA:
					case MESSAGE:
					case MIN:
					case MIN_ACTIVE_ROWVERSION:
					case MIN_CPU_PERCENT:
					case MIN_IOPS_PER_VOLUME:
					case MIN_MEMORY_PERCENT:
					case MINUTES:
					case MIRROR_ADDRESS:
					case MIXED_PAGE_ALLOCATION:
					case MODE:
					case MODIFY:
					case MOVE:
					case MULTI_USER:
					case NAME:
					case NESTED_TRIGGERS:
					case NEW_ACCOUNT:
					case NEW_BROKER:
					case NEW_PASSWORD:
					case NEXT:
					case NO:
					case NO_TRUNCATE:
					case NO_WAIT:
					case NOCOUNT:
					case NODES:
					case NOEXPAND:
					case NON_TRANSACTED_ACCESS:
					case NORECOMPUTE:
					case NORECOVERY:
					case NOWAIT:
					case NTILE:
					case NUMANODE:
					case NUMBER:
					case NUMERIC_ROUNDABORT:
					case OBJECT:
					case OFFLINE:
					case OFFSET:
					case OLD_ACCOUNT:
					case ONLINE:
					case ONLY:
					case OPEN_EXISTING:
					case OPTIMISTIC:
					case OPTIMIZE:
					case OUT:
					case OUTPUT:
					case OWNER:
					case PAGE_VERIFY:
					case PARAMETERIZATION:
					case PARTITION:
					case PARTITIONS:
					case PARTNER:
					case PATH:
					case POISON_MESSAGE_HANDLING:
					case POOL:
					case PORT:
					case PRECEDING:
					case PRIMARY_ROLE:
					case PRIOR:
					case PRIORITY:
					case PRIORITY_LEVEL:
					case PRIVATE:
					case PRIVATE_KEY:
					case PRIVILEGES:
					case PROCEDURE_NAME:
					case PROPERTY:
					case PROVIDER:
					case PROVIDER_KEY_NAME:
					case QUERY:
					case QUEUE:
					case QUEUE_DELAY:
					case QUOTED_IDENTIFIER:
					case RANGE:
					case RANK:
					case RC2:
					case RC4:
					case RC4_128:
					case READ_COMMITTED_SNAPSHOT:
					case READ_ONLY:
					case READ_ONLY_ROUTING_LIST:
					case READ_WRITE:
					case READONLY:
					case REBUILD:
					case RECEIVE:
					case RECOMPILE:
					case RECOVERY:
					case RECURSIVE_TRIGGERS:
					case RELATIVE:
					case REMOTE:
					case REMOTE_SERVICE_NAME:
					case REMOVE:
					case REORGANIZE:
					case REPEATABLE:
					case REPLICA:
					case REQUEST_MAX_CPU_TIME_SEC:
					case REQUEST_MAX_MEMORY_GRANT_PERCENT:
					case REQUEST_MEMORY_GRANT_TIMEOUT_SEC:
					case REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT:
					case RESERVE_DISK_SPACE:
					case RESOURCE:
					case RESOURCE_MANAGER_LOCATION:
					case RESTRICTED_USER:
					case RETENTION:
					case ROBUST:
					case ROOT:
					case ROUTE:
					case ROW:
					case ROW_NUMBER:
					case ROWGUID:
					case ROWS:
					case SAMPLE:
					case SCHEMABINDING:
					case SCOPED:
					case SCROLL:
					case SCROLL_LOCKS:
					case SEARCH:
					case SECONDARY:
					case SECONDARY_ONLY:
					case SECONDARY_ROLE:
					case SECONDS:
					case SECRET:
					case SECURITY_LOG:
					case SEEDING_MODE:
					case SELF:
					case SEMI_SENSITIVE:
					case SEND:
					case SENT:
					case SERIALIZABLE:
					case SESSION_TIMEOUT:
					case SETERROR:
					case SHARE:
					case SHOWPLAN:
					case SIGNATURE:
					case SIMPLE:
					case SINGLE_USER:
					case SIZE:
					case SMALLINT:
					case SNAPSHOT:
					case SPATIAL_WINDOW_MAX_CELLS:
					case STANDBY:
					case START_DATE:
					case STATIC:
					case STATS_STREAM:
					case STATUS:
					case STDEV:
					case STDEVP:
					case STOPLIST:
					case STUFF:
					case SUBJECT:
					case SUM:
					case SUSPEND:
					case SYMMETRIC:
					case SYNCHRONOUS_COMMIT:
					case SYNONYM:
					case TAKE:
					case TARGET_RECOVERY_TIME:
					case TB:
					case TEXTIMAGE_ON:
					case THROW:
					case TIES:
					case TIME:
					case TIMEOUT:
					case TIMER:
					case TINYINT:
					case TORN_PAGE_DETECTION:
					case TRANSFORM_NOISE_WORDS:
					case TRIPLE_DES:
					case TRIPLE_DES_3KEY:
					case TRUSTWORTHY:
					case TRY:
					case TSQL:
					case TWO_DIGIT_YEAR_CUTOFF:
					case TYPE:
					case TYPE_WARNING:
					case UNBOUNDED:
					case UNCOMMITTED:
					case UNKNOWN:
					case UNLIMITED:
					case USING:
					case VALID_XML:
					case VALIDATION:
					case VALUE:
					case VAR:
					case VARP:
					case VIEW_METADATA:
					case VIEWS:
					case WAIT:
					case WELL_FORMED_XML:
					case WORK:
					case WORKLOAD:
					case XML:
					case XMLNAMESPACES:
					case DOUBLE_QUOTE_ID:
					case SQUARE_BRACKET_ID:
					case LOCAL_ID:
					case ID:
						{
						setState(8598);
						function_call();
						}
						break;
					case DECIMAL:
						{
						setState(8599);
						match(DECIMAL);
						}
						break;
					default:
						throw new NoViableAltException(this);
					}
					}
					setState(8602); 
					_errHandler.sync(this);
					_la = _input.LA(1);
				} while ( _la==CALLED || _la==COALESCE || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & ((1L << (CONVERT - 69)) | (1L << (CURRENT_TIMESTAMP - 69)) | (1L << (CURRENT_USER - 69)) | (1L << (DATA_COMPRESSION - 69)) | (1L << (EVENTDATA - 69)) | (1L << (FILENAME - 69)) | (1L << (FILLFACTOR - 69)))) != 0) || ((((_la - 133)) & ~0x3f) == 0 && ((1L << (_la - 133)) & ((1L << (FORCESEEK - 133)) | (1L << (IDENTITY - 133)) | (1L << (IIF - 133)) | (1L << (INIT - 133)) | (1L << (ISNULL - 133)) | (1L << (KEY - 133)) | (1L << (LEFT - 133)) | (1L << (MASTER - 133)) | (1L << (MAX_MEMORY - 133)))) != 0) || ((((_la - 223)) & ~0x3f) == 0 && ((1L << (_la - 223)) & ((1L << (NULLIF - 223)) | (1L << (OFFSETS - 223)) | (1L << (PAGE - 223)) | (1L << (PUBLIC - 223)) | (1L << (R - 223)) | (1L << (RAW - 223)) | (1L << (RETURN - 223)) | (1L << (RETURNS - 223)) | (1L << (RIGHT - 223)))) != 0) || ((((_la - 289)) & ~0x3f) == 0 && ((1L << (_la - 289)) & ((1L << (ROWCOUNT - 289)) | (1L << (SAFETY - 289)) | (1L << (SERVER - 289)) | (1L << (SESSION_USER - 289)) | (1L << (SID - 289)) | (1L << (SOURCE - 289)) | (1L << (STATE - 289)) | (1L << (START - 289)) | (1L << (SYSTEM_USER - 289)) | (1L << (TARGET - 289)))) != 0) || ((((_la - 384)) & ~0x3f) == 0 && ((1L << (_la - 384)) & ((1L << (ABSOLUTE - 384)) | (1L << (ACCENT_SENSITIVITY - 384)) | (1L << (ACTION - 384)) | (1L << (ACTIVATION - 384)) | (1L << (ACTIVE - 384)) | (1L << (ADDRESS - 384)) | (1L << (AES_128 - 384)) | (1L << (AES_192 - 384)) | (1L << (AES_256 - 384)) | (1L << (AFFINITY - 384)) | (1L << (AFTER - 384)) | (1L << (AGGREGATE - 384)) | (1L << (ALGORITHM - 384)) | (1L << (ALLOW_ENCRYPTED_VALUE_MODIFICATIONS - 384)) | (1L << (ALLOW_SNAPSHOT_ISOLATION - 384)) | (1L << (ALLOWED - 384)) | (1L << (ANSI_NULL_DEFAULT - 384)) | (1L << (ANSI_NULLS - 384)) | (1L << (ANSI_PADDING - 384)) | (1L << (ANSI_WARNINGS - 384)) | (1L << (APPLICATION_LOG - 384)) | (1L << (APPLY - 384)) | (1L << (ARITHABORT - 384)) | (1L << (ASSEMBLY - 384)) | (1L << (AUDIT - 384)) | (1L << (AUDIT_GUID - 384)) | (1L << (AUTO - 384)) | (1L << (AUTO_CLEANUP - 384)) | (1L << (AUTO_CLOSE - 384)) | (1L << (AUTO_CREATE_STATISTICS - 384)) | (1L << (AUTO_SHRINK - 384)) | (1L << (AUTO_UPDATE_STATISTICS - 384)) | (1L << (AUTO_UPDATE_STATISTICS_ASYNC - 384)) | (1L << (AVAILABILITY - 384)) | (1L << (AVG - 384)) | (1L << (BACKUP_PRIORITY - 384)) | (1L << (BEGIN_DIALOG - 384)) | (1L << (BIGINT - 384)) | (1L << (BINARY_BASE64 - 384)) | (1L << (BINARY_CHECKSUM - 384)) | (1L << (BINDING - 384)) | (1L << (BLOB_STORAGE - 384)) | (1L << (BROKER - 384)) | (1L << (BROKER_INSTANCE - 384)) | (1L << (BULK_LOGGED - 384)) | (1L << (CALLER - 384)) | (1L << (CAP_CPU_PERCENT - 384)) | (1L << (CAST - 384)) | (1L << (CATALOG - 384)) | (1L << (CATCH - 384)) | (1L << (CHANGE_RETENTION - 384)) | (1L << (CHANGE_TRACKING - 384)) | (1L << (CHECKSUM - 384)) | (1L << (CHECKSUM_AGG - 384)) | (1L << (CLEANUP - 384)) | (1L << (COLLECTION - 384)) | (1L << (COLUMN_MASTER_KEY - 384)) | (1L << (COMMITTED - 384)) | (1L << (COMPATIBILITY_LEVEL - 384)) | (1L << (CONCAT - 384)) | (1L << (CONCAT_NULL_YIELDS_NULL - 384)) | (1L << (CONTENT - 384)) | (1L << (CONTROL - 384)) | (1L << (COOKIE - 384)))) != 0) || ((((_la - 448)) & ~0x3f) == 0 && ((1L << (_la - 448)) & ((1L << (COUNT - 448)) | (1L << (COUNT_BIG - 448)) | (1L << (COUNTER - 448)) | (1L << (CPU - 448)) | (1L << (CREATE_NEW - 448)) | (1L << (CREATION_DISPOSITION - 448)) | (1L << (CREDENTIAL - 448)) | (1L << (CRYPTOGRAPHIC - 448)) | (1L << (CURSOR_CLOSE_ON_COMMIT - 448)) | (1L << (CURSOR_DEFAULT - 448)) | (1L << (DATE_CORRELATION_OPTIMIZATION - 448)) | (1L << (DATEADD - 448)) | (1L << (DATEDIFF - 448)) | (1L << (DATENAME - 448)) | (1L << (DATEPART - 448)) | (1L << (DAYS - 448)) | (1L << (DB_CHAINING - 448)) | (1L << (DB_FAILOVER - 448)) | (1L << (DECRYPTION - 448)) | (1L << (DEFAULT_DOUBLE_QUOTE - 448)) | (1L << (DEFAULT_FULLTEXT_LANGUAGE - 448)) | (1L << (DEFAULT_LANGUAGE - 448)) | (1L << (DELAY - 448)) | (1L << (DELAYED_DURABILITY - 448)) | (1L << (DELETED - 448)) | (1L << (DENSE_RANK - 448)) | (1L << (DEPENDENTS - 448)) | (1L << (DES - 448)) | (1L << (DESCRIPTION - 448)) | (1L << (DESX - 448)) | (1L << (DHCP - 448)) | (1L << (DIALOG - 448)) | (1L << (DIRECTORY_NAME - 448)) | (1L << (DISABLE - 448)) | (1L << (DISABLE_BROKER - 448)) | (1L << (DISABLED - 448)) | (1L << (DISK_DRIVE - 448)) | (1L << (DOCUMENT - 448)) | (1L << (DYNAMIC - 448)) | (1L << (EMERGENCY - 448)) | (1L << (EMPTY - 448)) | (1L << (ENABLE - 448)) | (1L << (ENABLE_BROKER - 448)) | (1L << (ENCRYPTED_VALUE - 448)) | (1L << (ENCRYPTION - 448)) | (1L << (ENDPOINT_URL - 448)) | (1L << (ERROR_BROKER_CONVERSATIONS - 448)) | (1L << (EXCLUSIVE - 448)) | (1L << (EXECUTABLE - 448)) | (1L << (EXIST - 448)) | (1L << (EXPAND - 448)) | (1L << (EXPIRY_DATE - 448)) | (1L << (EXPLICIT - 448)) | (1L << (FAIL_OPERATION - 448)) | (1L << (FAILOVER_MODE - 448)) | (1L << (FAILURE - 448)) | (1L << (FAILURE_CONDITION_LEVEL - 448)) | (1L << (FAST - 448)) | (1L << (FAST_FORWARD - 448)) | (1L << (FILEGROUP - 448)) | (1L << (FILEGROWTH - 448)) | (1L << (FILEPATH - 448)) | (1L << (FILESTREAM - 448)))) != 0) || ((((_la - 512)) & ~0x3f) == 0 && ((1L << (_la - 512)) & ((1L << (FILTER - 512)) | (1L << (FIRST - 512)) | (1L << (FIRST_VALUE - 512)) | (1L << (FOLLOWING - 512)) | (1L << (FORCE - 512)) | (1L << (FORCE_FAILOVER_ALLOW_DATA_LOSS - 512)) | (1L << (FORCED - 512)) | (1L << (FORMAT - 512)) | (1L << (FORWARD_ONLY - 512)) | (1L << (FULLSCAN - 512)) | (1L << (FULLTEXT - 512)) | (1L << (GB - 512)) | (1L << (GETDATE - 512)) | (1L << (GETUTCDATE - 512)) | (1L << (GLOBAL - 512)) | (1L << (GO - 512)) | (1L << (GROUP_MAX_REQUESTS - 512)) | (1L << (GROUPING - 512)) | (1L << (GROUPING_ID - 512)) | (1L << (HADR - 512)) | (1L << (HASH - 512)) | (1L << (HEALTH_CHECK_TIMEOUT - 512)) | (1L << (HIGH - 512)) | (1L << (HONOR_BROKER_PRIORITY - 512)) | (1L << (HOURS - 512)) | (1L << (IDENTITY_VALUE - 512)) | (1L << (IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX - 512)) | (1L << (IMMEDIATE - 512)) | (1L << (IMPERSONATE - 512)) | (1L << (IMPORTANCE - 512)) | (1L << (INCREMENTAL - 512)) | (1L << (INITIATOR - 512)) | (1L << (INPUT - 512)) | (1L << (INSENSITIVE - 512)) | (1L << (INSERTED - 512)) | (1L << (INT - 512)) | (1L << (IP - 512)) | (1L << (ISOLATION - 512)) | (1L << (KB - 512)) | (1L << (KEEP - 512)) | (1L << (KEEPFIXED - 512)) | (1L << (KEY_SOURCE - 512)) | (1L << (KEYS - 512)) | (1L << (KEYSET - 512)) | (1L << (LAG - 512)) | (1L << (LAST - 512)) | (1L << (LAST_VALUE - 512)) | (1L << (LEAD - 512)) | (1L << (LEVEL - 512)) | (1L << (LIST - 512)) | (1L << (LISTENER - 512)) | (1L << (LISTENER_URL - 512)) | (1L << (LOB_COMPACTION - 512)) | (1L << (LOCAL - 512)) | (1L << (LOCATION - 512)) | (1L << (LOCK - 512)) | (1L << (LOCK_ESCALATION - 512)) | (1L << (LOGIN - 512)) | (1L << (LOOP - 512)) | (1L << (LOW - 512)) | (1L << (MANUAL - 512)) | (1L << (MARK - 512)))) != 0) || ((((_la - 576)) & ~0x3f) == 0 && ((1L << (_la - 576)) & ((1L << (MATERIALIZED - 576)) | (1L << (MAX - 576)) | (1L << (MAX_CPU_PERCENT - 576)) | (1L << (MAX_DOP - 576)) | (1L << (MAX_FILES - 576)) | (1L << (MAX_IOPS_PER_VOLUME - 576)) | (1L << (MAX_MEMORY_PERCENT - 576)) | (1L << (MAX_PROCESSES - 576)) | (1L << (MAX_QUEUE_READERS - 576)) | (1L << (MAX_ROLLOVER_FILES - 576)) | (1L << (MAXDOP - 576)) | (1L << (MAXRECURSION - 576)) | (1L << (MAXSIZE - 576)) | (1L << (MB - 576)) | (1L << (MEDIUM - 576)) | (1L << (MEMORY_OPTIMIZED_DATA - 576)) | (1L << (MESSAGE - 576)) | (1L << (MIN - 576)) | (1L << (MIN_ACTIVE_ROWVERSION - 576)) | (1L << (MIN_CPU_PERCENT - 576)) | (1L << (MIN_IOPS_PER_VOLUME - 576)) | (1L << (MIN_MEMORY_PERCENT - 576)) | (1L << (MINUTES - 576)) | (1L << (MIRROR_ADDRESS - 576)) | (1L << (MIXED_PAGE_ALLOCATION - 576)) | (1L << (MODE - 576)) | (1L << (MODIFY - 576)) | (1L << (MOVE - 576)) | (1L << (MULTI_USER - 576)) | (1L << (NAME - 576)) | (1L << (NESTED_TRIGGERS - 576)) | (1L << (NEW_ACCOUNT - 576)) | (1L << (NEW_BROKER - 576)) | (1L << (NEW_PASSWORD - 576)) | (1L << (NEXT - 576)) | (1L << (NO - 576)) | (1L << (NO_TRUNCATE - 576)) | (1L << (NO_WAIT - 576)) | (1L << (NOCOUNT - 576)) | (1L << (NODES - 576)) | (1L << (NOEXPAND - 576)) | (1L << (NON_TRANSACTED_ACCESS - 576)) | (1L << (NORECOMPUTE - 576)) | (1L << (NORECOVERY - 576)) | (1L << (NOWAIT - 576)) | (1L << (NTILE - 576)) | (1L << (NUMANODE - 576)) | (1L << (NUMBER - 576)) | (1L << (NUMERIC_ROUNDABORT - 576)) | (1L << (OBJECT - 576)) | (1L << (OFFLINE - 576)) | (1L << (OFFSET - 576)) | (1L << (OLD_ACCOUNT - 576)) | (1L << (ONLINE - 576)) | (1L << (ONLY - 576)) | (1L << (OPEN_EXISTING - 576)) | (1L << (OPTIMISTIC - 576)) | (1L << (OPTIMIZE - 576)) | (1L << (OUT - 576)) | (1L << (OUTPUT - 576)) | (1L << (OWNER - 576)) | (1L << (PAGE_VERIFY - 576)) | (1L << (PARAMETERIZATION - 576)) | (1L << (PARTITION - 576)))) != 0) || ((((_la - 640)) & ~0x3f) == 0 && ((1L << (_la - 640)) & ((1L << (PARTITIONS - 640)) | (1L << (PARTNER - 640)) | (1L << (PATH - 640)) | (1L << (POISON_MESSAGE_HANDLING - 640)) | (1L << (POOL - 640)) | (1L << (PORT - 640)) | (1L << (PRECEDING - 640)) | (1L << (PRIMARY_ROLE - 640)) | (1L << (PRIOR - 640)) | (1L << (PRIORITY - 640)) | (1L << (PRIORITY_LEVEL - 640)) | (1L << (PRIVATE - 640)) | (1L << (PRIVATE_KEY - 640)) | (1L << (PRIVILEGES - 640)) | (1L << (PROCEDURE_NAME - 640)) | (1L << (PROPERTY - 640)) | (1L << (PROVIDER - 640)) | (1L << (PROVIDER_KEY_NAME - 640)) | (1L << (QUERY - 640)) | (1L << (QUEUE - 640)) | (1L << (QUEUE_DELAY - 640)) | (1L << (QUOTED_IDENTIFIER - 640)) | (1L << (RANGE - 640)) | (1L << (RANK - 640)) | (1L << (RC2 - 640)) | (1L << (RC4 - 640)) | (1L << (RC4_128 - 640)) | (1L << (READ_COMMITTED_SNAPSHOT - 640)) | (1L << (READ_ONLY - 640)) | (1L << (READ_ONLY_ROUTING_LIST - 640)) | (1L << (READ_WRITE - 640)) | (1L << (READONLY - 640)) | (1L << (REBUILD - 640)) | (1L << (RECEIVE - 640)) | (1L << (RECOMPILE - 640)) | (1L << (RECOVERY - 640)) | (1L << (RECURSIVE_TRIGGERS - 640)) | (1L << (RELATIVE - 640)) | (1L << (REMOTE - 640)) | (1L << (REMOTE_SERVICE_NAME - 640)) | (1L << (REMOVE - 640)) | (1L << (REORGANIZE - 640)) | (1L << (REPEATABLE - 640)) | (1L << (REPLICA - 640)) | (1L << (REQUEST_MAX_CPU_TIME_SEC - 640)) | (1L << (REQUEST_MAX_MEMORY_GRANT_PERCENT - 640)) | (1L << (REQUEST_MEMORY_GRANT_TIMEOUT_SEC - 640)) | (1L << (REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT - 640)) | (1L << (RESERVE_DISK_SPACE - 640)) | (1L << (RESOURCE - 640)) | (1L << (RESOURCE_MANAGER_LOCATION - 640)) | (1L << (RESTRICTED_USER - 640)) | (1L << (RETENTION - 640)) | (1L << (ROBUST - 640)) | (1L << (ROOT - 640)) | (1L << (ROUTE - 640)) | (1L << (ROW - 640)) | (1L << (ROW_NUMBER - 640)) | (1L << (ROWGUID - 640)) | (1L << (ROWS - 640)) | (1L << (SAMPLE - 640)) | (1L << (SCHEMABINDING - 640)) | (1L << (SCOPED - 640)) | (1L << (SCROLL - 640)))) != 0) || ((((_la - 704)) & ~0x3f) == 0 && ((1L << (_la - 704)) & ((1L << (SCROLL_LOCKS - 704)) | (1L << (SEARCH - 704)) | (1L << (SECONDARY - 704)) | (1L << (SECONDARY_ONLY - 704)) | (1L << (SECONDARY_ROLE - 704)) | (1L << (SECONDS - 704)) | (1L << (SECRET - 704)) | (1L << (SECURITY_LOG - 704)) | (1L << (SEEDING_MODE - 704)) | (1L << (SELF - 704)) | (1L << (SEMI_SENSITIVE - 704)) | (1L << (SEND - 704)) | (1L << (SENT - 704)) | (1L << (SERIALIZABLE - 704)) | (1L << (SESSION_TIMEOUT - 704)) | (1L << (SETERROR - 704)) | (1L << (SHARE - 704)) | (1L << (SHOWPLAN - 704)) | (1L << (SIGNATURE - 704)) | (1L << (SIMPLE - 704)) | (1L << (SINGLE_USER - 704)) | (1L << (SIZE - 704)) | (1L << (SMALLINT - 704)) | (1L << (SNAPSHOT - 704)) | (1L << (SPATIAL_WINDOW_MAX_CELLS - 704)) | (1L << (STANDBY - 704)) | (1L << (START_DATE - 704)) | (1L << (STATIC - 704)) | (1L << (STATS_STREAM - 704)) | (1L << (STATUS - 704)) | (1L << (STDEV - 704)) | (1L << (STDEVP - 704)) | (1L << (STOPLIST - 704)) | (1L << (STUFF - 704)) | (1L << (SUBJECT - 704)) | (1L << (SUM - 704)) | (1L << (SUSPEND - 704)) | (1L << (SYMMETRIC - 704)) | (1L << (SYNCHRONOUS_COMMIT - 704)) | (1L << (SYNONYM - 704)) | (1L << (TAKE - 704)) | (1L << (TARGET_RECOVERY_TIME - 704)) | (1L << (TB - 704)) | (1L << (TEXTIMAGE_ON - 704)) | (1L << (THROW - 704)) | (1L << (TIES - 704)) | (1L << (TIME - 704)) | (1L << (TIMEOUT - 704)) | (1L << (TIMER - 704)) | (1L << (TINYINT - 704)) | (1L << (TORN_PAGE_DETECTION - 704)) | (1L << (TRANSFORM_NOISE_WORDS - 704)) | (1L << (TRIPLE_DES - 704)) | (1L << (TRIPLE_DES_3KEY - 704)) | (1L << (TRUSTWORTHY - 704)) | (1L << (TRY - 704)) | (1L << (TSQL - 704)) | (1L << (TWO_DIGIT_YEAR_CUTOFF - 704)) | (1L << (TYPE - 704)) | (1L << (TYPE_WARNING - 704)) | (1L << (UNBOUNDED - 704)) | (1L << (UNCOMMITTED - 704)) | (1L << (UNKNOWN - 704)) | (1L << (UNLIMITED - 704)))) != 0) || ((((_la - 768)) & ~0x3f) == 0 && ((1L << (_la - 768)) & ((1L << (USING - 768)) | (1L << (VALID_XML - 768)) | (1L << (VALIDATION - 768)) | (1L << (VALUE - 768)) | (1L << (VAR - 768)) | (1L << (VARP - 768)) | (1L << (VIEW_METADATA - 768)) | (1L << (VIEWS - 768)) | (1L << (WAIT - 768)) | (1L << (WELL_FORMED_XML - 768)) | (1L << (WORK - 768)) | (1L << (WORKLOAD - 768)) | (1L << (XML - 768)) | (1L << (XMLNAMESPACES - 768)) | (1L << (DOUBLE_QUOTE_ID - 768)) | (1L << (SQUARE_BRACKET_ID - 768)) | (1L << (LOCAL_ID - 768)) | (1L << (DECIMAL - 768)) | (1L << (ID - 768)) | (1L << (STRING - 768)) | (1L << (PLUS - 768)))) != 0) );
				setState(8605);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==RR_BRACKET) {
					{
					setState(8604);
					match(RR_BRACKET);
					}
				}

				setState(8607);
				match(FOR);
				setState(8608);
				id();
				}
				break;
			case FOREIGN:
				{
				setState(8609);
				match(FOREIGN);
				setState(8610);
				match(KEY);
				setState(8611);
				match(LR_BRACKET);
				setState(8612);
				((Table_constraintContext)_localctx).fk = column_name_list();
				setState(8613);
				match(RR_BRACKET);
				setState(8614);
				match(REFERENCES);
				setState(8615);
				table_name();
				setState(8620);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1220,_ctx) ) {
				case 1:
					{
					setState(8616);
					match(LR_BRACKET);
					setState(8617);
					((Table_constraintContext)_localctx).pk = column_name_list();
					setState(8618);
					match(RR_BRACKET);
					}
					break;
				}
				setState(8623);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1221,_ctx) ) {
				case 1:
					{
					setState(8622);
					on_delete();
					}
					break;
				}
				setState(8626);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==ON) {
					{
					setState(8625);
					on_update();
					}
				}

				}
				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 On_deleteContext extends ParserRuleContext {
		public TerminalNode ON() { return getToken(TSqlParser.ON, 0); }
		public TerminalNode DELETE() { return getToken(TSqlParser.DELETE, 0); }
		public TerminalNode NO() { return getToken(TSqlParser.NO, 0); }
		public TerminalNode ACTION() { return getToken(TSqlParser.ACTION, 0); }
		public TerminalNode CASCADE() { return getToken(TSqlParser.CASCADE, 0); }
		public TerminalNode SET() { return getToken(TSqlParser.SET, 0); }
		public TerminalNode NULL() { return getToken(TSqlParser.NULL, 0); }
		public TerminalNode DEFAULT() { return getToken(TSqlParser.DEFAULT, 0); }
		public On_deleteContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_on_delete; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterOn_delete(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitOn_delete(this);
		}
	}

	public final On_deleteContext on_delete() throws RecognitionException {
		On_deleteContext _localctx = new On_deleteContext(_ctx, getState());
		enterRule(_localctx, 694, RULE_on_delete);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(8630);
			match(ON);
			setState(8631);
			match(DELETE);
			setState(8639);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,1224,_ctx) ) {
			case 1:
				{
				setState(8632);
				match(NO);
				setState(8633);
				match(ACTION);
				}
				break;
			case 2:
				{
				setState(8634);
				match(CASCADE);
				}
				break;
			case 3:
				{
				setState(8635);
				match(SET);
				setState(8636);
				match(NULL);
				}
				break;
			case 4:
				{
				setState(8637);
				match(SET);
				setState(8638);
				match(DEFAULT);
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class On_updateContext extends ParserRuleContext {
		public TerminalNode ON() { return getToken(TSqlParser.ON, 0); }
		public TerminalNode UPDATE() { return getToken(TSqlParser.UPDATE, 0); }
		public TerminalNode NO() { return getToken(TSqlParser.NO, 0); }
		public TerminalNode ACTION() { return getToken(TSqlParser.ACTION, 0); }
		public TerminalNode CASCADE() { return getToken(TSqlParser.CASCADE, 0); }
		public TerminalNode SET() { return getToken(TSqlParser.SET, 0); }
		public TerminalNode NULL() { return getToken(TSqlParser.NULL, 0); }
		public TerminalNode DEFAULT() { return getToken(TSqlParser.DEFAULT, 0); }
		public On_updateContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_on_update; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterOn_update(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitOn_update(this);
		}
	}

	public final On_updateContext on_update() throws RecognitionException {
		On_updateContext _localctx = new On_updateContext(_ctx, getState());
		enterRule(_localctx, 696, RULE_on_update);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(8641);
			match(ON);
			setState(8642);
			match(UPDATE);
			setState(8650);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,1225,_ctx) ) {
			case 1:
				{
				setState(8643);
				match(NO);
				setState(8644);
				match(ACTION);
				}
				break;
			case 2:
				{
				setState(8645);
				match(CASCADE);
				}
				break;
			case 3:
				{
				setState(8646);
				match(SET);
				setState(8647);
				match(NULL);
				}
				break;
			case 4:
				{
				setState(8648);
				match(SET);
				setState(8649);
				match(DEFAULT);
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Index_optionsContext extends ParserRuleContext {
		public TerminalNode WITH() { return getToken(TSqlParser.WITH, 0); }
		public TerminalNode LR_BRACKET() { return getToken(TSqlParser.LR_BRACKET, 0); }
		public List index_option() {
			return getRuleContexts(Index_optionContext.class);
		}
		public Index_optionContext index_option(int i) {
			return getRuleContext(Index_optionContext.class,i);
		}
		public TerminalNode RR_BRACKET() { return getToken(TSqlParser.RR_BRACKET, 0); }
		public List COMMA() { return getTokens(TSqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(TSqlParser.COMMA, i);
		}
		public Index_optionsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_index_options; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterIndex_options(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitIndex_options(this);
		}
	}

	public final Index_optionsContext index_options() throws RecognitionException {
		Index_optionsContext _localctx = new Index_optionsContext(_ctx, getState());
		enterRule(_localctx, 698, RULE_index_options);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(8652);
			match(WITH);
			setState(8653);
			match(LR_BRACKET);
			setState(8654);
			index_option();
			setState(8659);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA) {
				{
				{
				setState(8655);
				match(COMMA);
				setState(8656);
				index_option();
				}
				}
				setState(8661);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			setState(8662);
			match(RR_BRACKET);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Index_optionContext extends ParserRuleContext {
		public List simple_id() {
			return getRuleContexts(Simple_idContext.class);
		}
		public Simple_idContext simple_id(int i) {
			return getRuleContext(Simple_idContext.class,i);
		}
		public TerminalNode EQUAL() { return getToken(TSqlParser.EQUAL, 0); }
		public On_offContext on_off() {
			return getRuleContext(On_offContext.class,0);
		}
		public TerminalNode DECIMAL() { return getToken(TSqlParser.DECIMAL, 0); }
		public Index_optionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_index_option; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterIndex_option(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitIndex_option(this);
		}
	}

	public final Index_optionContext index_option() throws RecognitionException {
		Index_optionContext _localctx = new Index_optionContext(_ctx, getState());
		enterRule(_localctx, 700, RULE_index_option);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(8664);
			simple_id();
			setState(8665);
			match(EQUAL);
			setState(8669);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case CALLED:
			case DATA_COMPRESSION:
			case EVENTDATA:
			case FILENAME:
			case FILLFACTOR:
			case FORCESEEK:
			case INIT:
			case KEY:
			case MASTER:
			case MAX_MEMORY:
			case OFFSETS:
			case PAGE:
			case PUBLIC:
			case R:
			case RAW:
			case RETURN:
			case RETURNS:
			case ROWCOUNT:
			case SAFETY:
			case SERVER:
			case SID:
			case SOURCE:
			case STATE:
			case START:
			case TARGET:
			case ABSOLUTE:
			case ACCENT_SENSITIVITY:
			case ACTION:
			case ACTIVATION:
			case ACTIVE:
			case ADDRESS:
			case AES_128:
			case AES_192:
			case AES_256:
			case AFFINITY:
			case AFTER:
			case AGGREGATE:
			case ALGORITHM:
			case ALLOW_ENCRYPTED_VALUE_MODIFICATIONS:
			case ALLOW_SNAPSHOT_ISOLATION:
			case ALLOWED:
			case ANSI_NULL_DEFAULT:
			case ANSI_NULLS:
			case ANSI_PADDING:
			case ANSI_WARNINGS:
			case APPLICATION_LOG:
			case APPLY:
			case ARITHABORT:
			case ASSEMBLY:
			case AUDIT:
			case AUDIT_GUID:
			case AUTO:
			case AUTO_CLEANUP:
			case AUTO_CLOSE:
			case AUTO_CREATE_STATISTICS:
			case AUTO_SHRINK:
			case AUTO_UPDATE_STATISTICS:
			case AUTO_UPDATE_STATISTICS_ASYNC:
			case AVAILABILITY:
			case AVG:
			case BACKUP_PRIORITY:
			case BEGIN_DIALOG:
			case BIGINT:
			case BINARY_BASE64:
			case BINARY_CHECKSUM:
			case BINDING:
			case BLOB_STORAGE:
			case BROKER:
			case BROKER_INSTANCE:
			case BULK_LOGGED:
			case CALLER:
			case CAP_CPU_PERCENT:
			case CAST:
			case CATALOG:
			case CATCH:
			case CHANGE_RETENTION:
			case CHANGE_TRACKING:
			case CHECKSUM:
			case CHECKSUM_AGG:
			case CLEANUP:
			case COLLECTION:
			case COLUMN_MASTER_KEY:
			case COMMITTED:
			case COMPATIBILITY_LEVEL:
			case CONCAT:
			case CONCAT_NULL_YIELDS_NULL:
			case CONTENT:
			case CONTROL:
			case COOKIE:
			case COUNT:
			case COUNT_BIG:
			case COUNTER:
			case CPU:
			case CREATE_NEW:
			case CREATION_DISPOSITION:
			case CREDENTIAL:
			case CRYPTOGRAPHIC:
			case CURSOR_CLOSE_ON_COMMIT:
			case CURSOR_DEFAULT:
			case DATE_CORRELATION_OPTIMIZATION:
			case DATEADD:
			case DATEDIFF:
			case DATENAME:
			case DATEPART:
			case DAYS:
			case DB_CHAINING:
			case DB_FAILOVER:
			case DECRYPTION:
			case DEFAULT_DOUBLE_QUOTE:
			case DEFAULT_FULLTEXT_LANGUAGE:
			case DEFAULT_LANGUAGE:
			case DELAY:
			case DELAYED_DURABILITY:
			case DELETED:
			case DENSE_RANK:
			case DEPENDENTS:
			case DES:
			case DESCRIPTION:
			case DESX:
			case DHCP:
			case DIALOG:
			case DIRECTORY_NAME:
			case DISABLE:
			case DISABLE_BROKER:
			case DISABLED:
			case DISK_DRIVE:
			case DOCUMENT:
			case DYNAMIC:
			case EMERGENCY:
			case EMPTY:
			case ENABLE:
			case ENABLE_BROKER:
			case ENCRYPTED_VALUE:
			case ENCRYPTION:
			case ENDPOINT_URL:
			case ERROR_BROKER_CONVERSATIONS:
			case EXCLUSIVE:
			case EXECUTABLE:
			case EXIST:
			case EXPAND:
			case EXPIRY_DATE:
			case EXPLICIT:
			case FAIL_OPERATION:
			case FAILOVER_MODE:
			case FAILURE:
			case FAILURE_CONDITION_LEVEL:
			case FAST:
			case FAST_FORWARD:
			case FILEGROUP:
			case FILEGROWTH:
			case FILEPATH:
			case FILESTREAM:
			case FILTER:
			case FIRST:
			case FIRST_VALUE:
			case FOLLOWING:
			case FORCE:
			case FORCE_FAILOVER_ALLOW_DATA_LOSS:
			case FORCED:
			case FORMAT:
			case FORWARD_ONLY:
			case FULLSCAN:
			case FULLTEXT:
			case GB:
			case GETDATE:
			case GETUTCDATE:
			case GLOBAL:
			case GO:
			case GROUP_MAX_REQUESTS:
			case GROUPING:
			case GROUPING_ID:
			case HADR:
			case HASH:
			case HEALTH_CHECK_TIMEOUT:
			case HIGH:
			case HONOR_BROKER_PRIORITY:
			case HOURS:
			case IDENTITY_VALUE:
			case IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX:
			case IMMEDIATE:
			case IMPERSONATE:
			case IMPORTANCE:
			case INCREMENTAL:
			case INITIATOR:
			case INPUT:
			case INSENSITIVE:
			case INSERTED:
			case INT:
			case IP:
			case ISOLATION:
			case KB:
			case KEEP:
			case KEEPFIXED:
			case KEY_SOURCE:
			case KEYS:
			case KEYSET:
			case LAG:
			case LAST:
			case LAST_VALUE:
			case LEAD:
			case LEVEL:
			case LIST:
			case LISTENER:
			case LISTENER_URL:
			case LOB_COMPACTION:
			case LOCAL:
			case LOCATION:
			case LOCK:
			case LOCK_ESCALATION:
			case LOGIN:
			case LOOP:
			case LOW:
			case MANUAL:
			case MARK:
			case MATERIALIZED:
			case MAX:
			case MAX_CPU_PERCENT:
			case MAX_DOP:
			case MAX_FILES:
			case MAX_IOPS_PER_VOLUME:
			case MAX_MEMORY_PERCENT:
			case MAX_PROCESSES:
			case MAX_QUEUE_READERS:
			case MAX_ROLLOVER_FILES:
			case MAXDOP:
			case MAXRECURSION:
			case MAXSIZE:
			case MB:
			case MEDIUM:
			case MEMORY_OPTIMIZED_DATA:
			case MESSAGE:
			case MIN:
			case MIN_ACTIVE_ROWVERSION:
			case MIN_CPU_PERCENT:
			case MIN_IOPS_PER_VOLUME:
			case MIN_MEMORY_PERCENT:
			case MINUTES:
			case MIRROR_ADDRESS:
			case MIXED_PAGE_ALLOCATION:
			case MODE:
			case MODIFY:
			case MOVE:
			case MULTI_USER:
			case NAME:
			case NESTED_TRIGGERS:
			case NEW_ACCOUNT:
			case NEW_BROKER:
			case NEW_PASSWORD:
			case NEXT:
			case NO:
			case NO_TRUNCATE:
			case NO_WAIT:
			case NOCOUNT:
			case NODES:
			case NOEXPAND:
			case NON_TRANSACTED_ACCESS:
			case NORECOMPUTE:
			case NORECOVERY:
			case NOWAIT:
			case NTILE:
			case NUMANODE:
			case NUMBER:
			case NUMERIC_ROUNDABORT:
			case OBJECT:
			case OFFLINE:
			case OFFSET:
			case OLD_ACCOUNT:
			case ONLINE:
			case ONLY:
			case OPEN_EXISTING:
			case OPTIMISTIC:
			case OPTIMIZE:
			case OUT:
			case OUTPUT:
			case OWNER:
			case PAGE_VERIFY:
			case PARAMETERIZATION:
			case PARTITION:
			case PARTITIONS:
			case PARTNER:
			case PATH:
			case POISON_MESSAGE_HANDLING:
			case POOL:
			case PORT:
			case PRECEDING:
			case PRIMARY_ROLE:
			case PRIOR:
			case PRIORITY:
			case PRIORITY_LEVEL:
			case PRIVATE:
			case PRIVATE_KEY:
			case PRIVILEGES:
			case PROCEDURE_NAME:
			case PROPERTY:
			case PROVIDER:
			case PROVIDER_KEY_NAME:
			case QUERY:
			case QUEUE:
			case QUEUE_DELAY:
			case QUOTED_IDENTIFIER:
			case RANGE:
			case RANK:
			case RC2:
			case RC4:
			case RC4_128:
			case READ_COMMITTED_SNAPSHOT:
			case READ_ONLY:
			case READ_ONLY_ROUTING_LIST:
			case READ_WRITE:
			case READONLY:
			case REBUILD:
			case RECEIVE:
			case RECOMPILE:
			case RECOVERY:
			case RECURSIVE_TRIGGERS:
			case RELATIVE:
			case REMOTE:
			case REMOTE_SERVICE_NAME:
			case REMOVE:
			case REORGANIZE:
			case REPEATABLE:
			case REPLICA:
			case REQUEST_MAX_CPU_TIME_SEC:
			case REQUEST_MAX_MEMORY_GRANT_PERCENT:
			case REQUEST_MEMORY_GRANT_TIMEOUT_SEC:
			case REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT:
			case RESERVE_DISK_SPACE:
			case RESOURCE:
			case RESOURCE_MANAGER_LOCATION:
			case RESTRICTED_USER:
			case RETENTION:
			case ROBUST:
			case ROOT:
			case ROUTE:
			case ROW:
			case ROW_NUMBER:
			case ROWGUID:
			case ROWS:
			case SAMPLE:
			case SCHEMABINDING:
			case SCOPED:
			case SCROLL:
			case SCROLL_LOCKS:
			case SEARCH:
			case SECONDARY:
			case SECONDARY_ONLY:
			case SECONDARY_ROLE:
			case SECONDS:
			case SECRET:
			case SECURITY_LOG:
			case SEEDING_MODE:
			case SELF:
			case SEMI_SENSITIVE:
			case SEND:
			case SENT:
			case SERIALIZABLE:
			case SESSION_TIMEOUT:
			case SETERROR:
			case SHARE:
			case SHOWPLAN:
			case SIGNATURE:
			case SIMPLE:
			case SINGLE_USER:
			case SIZE:
			case SMALLINT:
			case SNAPSHOT:
			case SPATIAL_WINDOW_MAX_CELLS:
			case STANDBY:
			case START_DATE:
			case STATIC:
			case STATS_STREAM:
			case STATUS:
			case STDEV:
			case STDEVP:
			case STOPLIST:
			case STUFF:
			case SUBJECT:
			case SUM:
			case SUSPEND:
			case SYMMETRIC:
			case SYNCHRONOUS_COMMIT:
			case SYNONYM:
			case TAKE:
			case TARGET_RECOVERY_TIME:
			case TB:
			case TEXTIMAGE_ON:
			case THROW:
			case TIES:
			case TIME:
			case TIMEOUT:
			case TIMER:
			case TINYINT:
			case TORN_PAGE_DETECTION:
			case TRANSFORM_NOISE_WORDS:
			case TRIPLE_DES:
			case TRIPLE_DES_3KEY:
			case TRUSTWORTHY:
			case TRY:
			case TSQL:
			case TWO_DIGIT_YEAR_CUTOFF:
			case TYPE:
			case TYPE_WARNING:
			case UNBOUNDED:
			case UNCOMMITTED:
			case UNKNOWN:
			case UNLIMITED:
			case USING:
			case VALID_XML:
			case VALIDATION:
			case VALUE:
			case VAR:
			case VARP:
			case VIEW_METADATA:
			case VIEWS:
			case WAIT:
			case WELL_FORMED_XML:
			case WORK:
			case WORKLOAD:
			case XML:
			case XMLNAMESPACES:
			case ID:
				{
				setState(8666);
				simple_id();
				}
				break;
			case OFF:
			case ON:
				{
				setState(8667);
				on_off();
				}
				break;
			case DECIMAL:
				{
				setState(8668);
				match(DECIMAL);
				}
				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 Declare_cursorContext extends ParserRuleContext {
		public TerminalNode DECLARE() { return getToken(TSqlParser.DECLARE, 0); }
		public Cursor_nameContext cursor_name() {
			return getRuleContext(Cursor_nameContext.class,0);
		}
		public TerminalNode CURSOR() { return getToken(TSqlParser.CURSOR, 0); }
		public List FOR() { return getTokens(TSqlParser.FOR); }
		public TerminalNode FOR(int i) {
			return getToken(TSqlParser.FOR, i);
		}
		public Select_statementContext select_statement() {
			return getRuleContext(Select_statementContext.class,0);
		}
		public TerminalNode SEMI() { return getToken(TSqlParser.SEMI, 0); }
		public Declare_set_cursor_commonContext declare_set_cursor_common() {
			return getRuleContext(Declare_set_cursor_commonContext.class,0);
		}
		public TerminalNode SCROLL() { return getToken(TSqlParser.SCROLL, 0); }
		public TerminalNode SEMI_SENSITIVE() { return getToken(TSqlParser.SEMI_SENSITIVE, 0); }
		public TerminalNode INSENSITIVE() { return getToken(TSqlParser.INSENSITIVE, 0); }
		public TerminalNode READ() { return getToken(TSqlParser.READ, 0); }
		public TerminalNode ONLY() { return getToken(TSqlParser.ONLY, 0); }
		public TerminalNode UPDATE() { return getToken(TSqlParser.UPDATE, 0); }
		public TerminalNode OF() { return getToken(TSqlParser.OF, 0); }
		public Column_name_listContext column_name_list() {
			return getRuleContext(Column_name_listContext.class,0);
		}
		public Declare_cursorContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_declare_cursor; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterDeclare_cursor(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitDeclare_cursor(this);
		}
	}

	public final Declare_cursorContext declare_cursor() throws RecognitionException {
		Declare_cursorContext _localctx = new Declare_cursorContext(_ctx, getState());
		enterRule(_localctx, 702, RULE_declare_cursor);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(8671);
			match(DECLARE);
			setState(8672);
			cursor_name();
			setState(8704);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,1235,_ctx) ) {
			case 1:
				{
				setState(8673);
				match(CURSOR);
				setState(8683);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1230,_ctx) ) {
				case 1:
					{
					setState(8674);
					declare_set_cursor_common();
					setState(8681);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==FOR) {
						{
						setState(8675);
						match(FOR);
						setState(8676);
						match(UPDATE);
						setState(8679);
						_errHandler.sync(this);
						_la = _input.LA(1);
						if (_la==OF) {
							{
							setState(8677);
							match(OF);
							setState(8678);
							column_name_list();
							}
						}

						}
					}

					}
					break;
				}
				}
				break;
			case 2:
				{
				setState(8686);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==INSENSITIVE || _la==SEMI_SENSITIVE) {
					{
					setState(8685);
					_la = _input.LA(1);
					if ( !(_la==INSENSITIVE || _la==SEMI_SENSITIVE) ) {
					_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					}
				}

				setState(8689);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==SCROLL) {
					{
					setState(8688);
					match(SCROLL);
					}
				}

				setState(8691);
				match(CURSOR);
				setState(8692);
				match(FOR);
				setState(8693);
				select_statement();
				setState(8702);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==FOR) {
					{
					setState(8694);
					match(FOR);
					setState(8700);
					_errHandler.sync(this);
					switch (_input.LA(1)) {
					case READ:
						{
						setState(8695);
						match(READ);
						setState(8696);
						match(ONLY);
						}
						break;
					case UPDATE:
						{
						setState(8697);
						match(UPDATE);
						}
						break;
					case OF:
						{
						{
						setState(8698);
						match(OF);
						setState(8699);
						column_name_list();
						}
						}
						break;
					default:
						throw new NoViableAltException(this);
					}
					}
				}

				}
				break;
			}
			setState(8707);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,1236,_ctx) ) {
			case 1:
				{
				setState(8706);
				match(SEMI);
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Declare_set_cursor_commonContext extends ParserRuleContext {
		public TerminalNode FOR() { return getToken(TSqlParser.FOR, 0); }
		public Select_statementContext select_statement() {
			return getRuleContext(Select_statementContext.class,0);
		}
		public List declare_set_cursor_common_partial() {
			return getRuleContexts(Declare_set_cursor_common_partialContext.class);
		}
		public Declare_set_cursor_common_partialContext declare_set_cursor_common_partial(int i) {
			return getRuleContext(Declare_set_cursor_common_partialContext.class,i);
		}
		public Declare_set_cursor_commonContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_declare_set_cursor_common; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterDeclare_set_cursor_common(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitDeclare_set_cursor_common(this);
		}
	}

	public final Declare_set_cursor_commonContext declare_set_cursor_common() throws RecognitionException {
		Declare_set_cursor_commonContext _localctx = new Declare_set_cursor_commonContext(_ctx, getState());
		enterRule(_localctx, 704, RULE_declare_set_cursor_common);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(8712);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (((((_la - 486)) & ~0x3f) == 0 && ((1L << (_la - 486)) & ((1L << (DYNAMIC - 486)) | (1L << (FAST_FORWARD - 486)) | (1L << (FORWARD_ONLY - 486)) | (1L << (GLOBAL - 486)))) != 0) || _la==KEYSET || _la==LOCAL || _la==OPTIMISTIC || _la==READ_ONLY || ((((_la - 703)) & ~0x3f) == 0 && ((1L << (_la - 703)) & ((1L << (SCROLL - 703)) | (1L << (SCROLL_LOCKS - 703)) | (1L << (STATIC - 703)) | (1L << (TYPE_WARNING - 703)))) != 0)) {
				{
				{
				setState(8709);
				declare_set_cursor_common_partial();
				}
				}
				setState(8714);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			setState(8715);
			match(FOR);
			setState(8716);
			select_statement();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Declare_set_cursor_common_partialContext extends ParserRuleContext {
		public TerminalNode LOCAL() { return getToken(TSqlParser.LOCAL, 0); }
		public TerminalNode GLOBAL() { return getToken(TSqlParser.GLOBAL, 0); }
		public TerminalNode FORWARD_ONLY() { return getToken(TSqlParser.FORWARD_ONLY, 0); }
		public TerminalNode SCROLL() { return getToken(TSqlParser.SCROLL, 0); }
		public TerminalNode STATIC() { return getToken(TSqlParser.STATIC, 0); }
		public TerminalNode KEYSET() { return getToken(TSqlParser.KEYSET, 0); }
		public TerminalNode DYNAMIC() { return getToken(TSqlParser.DYNAMIC, 0); }
		public TerminalNode FAST_FORWARD() { return getToken(TSqlParser.FAST_FORWARD, 0); }
		public TerminalNode READ_ONLY() { return getToken(TSqlParser.READ_ONLY, 0); }
		public TerminalNode SCROLL_LOCKS() { return getToken(TSqlParser.SCROLL_LOCKS, 0); }
		public TerminalNode OPTIMISTIC() { return getToken(TSqlParser.OPTIMISTIC, 0); }
		public TerminalNode TYPE_WARNING() { return getToken(TSqlParser.TYPE_WARNING, 0); }
		public Declare_set_cursor_common_partialContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_declare_set_cursor_common_partial; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterDeclare_set_cursor_common_partial(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitDeclare_set_cursor_common_partial(this);
		}
	}

	public final Declare_set_cursor_common_partialContext declare_set_cursor_common_partial() throws RecognitionException {
		Declare_set_cursor_common_partialContext _localctx = new Declare_set_cursor_common_partialContext(_ctx, getState());
		enterRule(_localctx, 706, RULE_declare_set_cursor_common_partial);
		int _la;
		try {
			setState(8723);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case GLOBAL:
			case LOCAL:
				enterOuterAlt(_localctx, 1);
				{
				setState(8718);
				_la = _input.LA(1);
				if ( !(_la==GLOBAL || _la==LOCAL) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
				break;
			case FORWARD_ONLY:
			case SCROLL:
				enterOuterAlt(_localctx, 2);
				{
				setState(8719);
				_la = _input.LA(1);
				if ( !(_la==FORWARD_ONLY || _la==SCROLL) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
				break;
			case DYNAMIC:
			case FAST_FORWARD:
			case KEYSET:
			case STATIC:
				enterOuterAlt(_localctx, 3);
				{
				setState(8720);
				_la = _input.LA(1);
				if ( !(_la==DYNAMIC || _la==FAST_FORWARD || _la==KEYSET || _la==STATIC) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
				break;
			case OPTIMISTIC:
			case READ_ONLY:
			case SCROLL_LOCKS:
				enterOuterAlt(_localctx, 4);
				{
				setState(8721);
				_la = _input.LA(1);
				if ( !(_la==OPTIMISTIC || _la==READ_ONLY || _la==SCROLL_LOCKS) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
				break;
			case TYPE_WARNING:
				enterOuterAlt(_localctx, 5);
				{
				setState(8722);
				match(TYPE_WARNING);
				}
				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 Fetch_cursorContext extends ParserRuleContext {
		public TerminalNode FETCH() { return getToken(TSqlParser.FETCH, 0); }
		public Cursor_nameContext cursor_name() {
			return getRuleContext(Cursor_nameContext.class,0);
		}
		public TerminalNode FROM() { return getToken(TSqlParser.FROM, 0); }
		public TerminalNode GLOBAL() { return getToken(TSqlParser.GLOBAL, 0); }
		public TerminalNode INTO() { return getToken(TSqlParser.INTO, 0); }
		public List LOCAL_ID() { return getTokens(TSqlParser.LOCAL_ID); }
		public TerminalNode LOCAL_ID(int i) {
			return getToken(TSqlParser.LOCAL_ID, i);
		}
		public TerminalNode SEMI() { return getToken(TSqlParser.SEMI, 0); }
		public TerminalNode NEXT() { return getToken(TSqlParser.NEXT, 0); }
		public TerminalNode PRIOR() { return getToken(TSqlParser.PRIOR, 0); }
		public TerminalNode FIRST() { return getToken(TSqlParser.FIRST, 0); }
		public TerminalNode LAST() { return getToken(TSqlParser.LAST, 0); }
		public ExpressionContext expression() {
			return getRuleContext(ExpressionContext.class,0);
		}
		public List COMMA() { return getTokens(TSqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(TSqlParser.COMMA, i);
		}
		public TerminalNode ABSOLUTE() { return getToken(TSqlParser.ABSOLUTE, 0); }
		public TerminalNode RELATIVE() { return getToken(TSqlParser.RELATIVE, 0); }
		public Fetch_cursorContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_fetch_cursor; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterFetch_cursor(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitFetch_cursor(this);
		}
	}

	public final Fetch_cursorContext fetch_cursor() throws RecognitionException {
		Fetch_cursorContext _localctx = new Fetch_cursorContext(_ctx, getState());
		enterRule(_localctx, 708, RULE_fetch_cursor);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(8725);
			match(FETCH);
			setState(8735);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,1240,_ctx) ) {
			case 1:
				{
				setState(8732);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case NEXT:
					{
					setState(8726);
					match(NEXT);
					}
					break;
				case PRIOR:
					{
					setState(8727);
					match(PRIOR);
					}
					break;
				case FIRST:
					{
					setState(8728);
					match(FIRST);
					}
					break;
				case LAST:
					{
					setState(8729);
					match(LAST);
					}
					break;
				case ABSOLUTE:
				case RELATIVE:
					{
					setState(8730);
					_la = _input.LA(1);
					if ( !(_la==ABSOLUTE || _la==RELATIVE) ) {
					_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					setState(8731);
					expression(0);
					}
					break;
				case FROM:
					break;
				default:
					break;
				}
				setState(8734);
				match(FROM);
				}
				break;
			}
			setState(8738);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,1241,_ctx) ) {
			case 1:
				{
				setState(8737);
				match(GLOBAL);
				}
				break;
			}
			setState(8740);
			cursor_name();
			setState(8750);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==INTO) {
				{
				setState(8741);
				match(INTO);
				setState(8742);
				match(LOCAL_ID);
				setState(8747);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA) {
					{
					{
					setState(8743);
					match(COMMA);
					setState(8744);
					match(LOCAL_ID);
					}
					}
					setState(8749);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				}
			}

			setState(8753);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,1244,_ctx) ) {
			case 1:
				{
				setState(8752);
				match(SEMI);
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Set_specialContext extends ParserRuleContext {
		public TerminalNode SET() { return getToken(TSqlParser.SET, 0); }
		public List id() {
			return getRuleContexts(IdContext.class);
		}
		public IdContext id(int i) {
			return getRuleContext(IdContext.class,i);
		}
		public Constant_LOCAL_IDContext constant_LOCAL_ID() {
			return getRuleContext(Constant_LOCAL_IDContext.class,0);
		}
		public On_offContext on_off() {
			return getRuleContext(On_offContext.class,0);
		}
		public TerminalNode SEMI() { return getToken(TSqlParser.SEMI, 0); }
		public TerminalNode TRANSACTION() { return getToken(TSqlParser.TRANSACTION, 0); }
		public TerminalNode ISOLATION() { return getToken(TSqlParser.ISOLATION, 0); }
		public TerminalNode LEVEL() { return getToken(TSqlParser.LEVEL, 0); }
		public TerminalNode READ() { return getToken(TSqlParser.READ, 0); }
		public TerminalNode UNCOMMITTED() { return getToken(TSqlParser.UNCOMMITTED, 0); }
		public TerminalNode COMMITTED() { return getToken(TSqlParser.COMMITTED, 0); }
		public TerminalNode REPEATABLE() { return getToken(TSqlParser.REPEATABLE, 0); }
		public TerminalNode SNAPSHOT() { return getToken(TSqlParser.SNAPSHOT, 0); }
		public TerminalNode SERIALIZABLE() { return getToken(TSqlParser.SERIALIZABLE, 0); }
		public TerminalNode DECIMAL() { return getToken(TSqlParser.DECIMAL, 0); }
		public TerminalNode IDENTITY_INSERT() { return getToken(TSqlParser.IDENTITY_INSERT, 0); }
		public Table_nameContext table_name() {
			return getRuleContext(Table_nameContext.class,0);
		}
		public TerminalNode ANSI_NULLS() { return getToken(TSqlParser.ANSI_NULLS, 0); }
		public TerminalNode QUOTED_IDENTIFIER() { return getToken(TSqlParser.QUOTED_IDENTIFIER, 0); }
		public TerminalNode ANSI_PADDING() { return getToken(TSqlParser.ANSI_PADDING, 0); }
		public TerminalNode ANSI_WARNINGS() { return getToken(TSqlParser.ANSI_WARNINGS, 0); }
		public Modify_methodContext modify_method() {
			return getRuleContext(Modify_methodContext.class,0);
		}
		public Set_specialContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_set_special; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterSet_special(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitSet_special(this);
		}
	}

	public final Set_specialContext set_special() throws RecognitionException {
		Set_specialContext _localctx = new Set_specialContext(_ctx, getState());
		enterRule(_localctx, 710, RULE_set_special);
		try {
			setState(8804);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,1250,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(8755);
				match(SET);
				setState(8756);
				id();
				setState(8760);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case CALLED:
				case DATA_COMPRESSION:
				case EVENTDATA:
				case FILENAME:
				case FILLFACTOR:
				case FORCESEEK:
				case INIT:
				case KEY:
				case MASTER:
				case MAX_MEMORY:
				case OFFSETS:
				case PAGE:
				case PUBLIC:
				case R:
				case RAW:
				case RETURN:
				case RETURNS:
				case ROWCOUNT:
				case SAFETY:
				case SERVER:
				case SID:
				case SOURCE:
				case STATE:
				case START:
				case TARGET:
				case ABSOLUTE:
				case ACCENT_SENSITIVITY:
				case ACTION:
				case ACTIVATION:
				case ACTIVE:
				case ADDRESS:
				case AES_128:
				case AES_192:
				case AES_256:
				case AFFINITY:
				case AFTER:
				case AGGREGATE:
				case ALGORITHM:
				case ALLOW_ENCRYPTED_VALUE_MODIFICATIONS:
				case ALLOW_SNAPSHOT_ISOLATION:
				case ALLOWED:
				case ANSI_NULL_DEFAULT:
				case ANSI_NULLS:
				case ANSI_PADDING:
				case ANSI_WARNINGS:
				case APPLICATION_LOG:
				case APPLY:
				case ARITHABORT:
				case ASSEMBLY:
				case AUDIT:
				case AUDIT_GUID:
				case AUTO:
				case AUTO_CLEANUP:
				case AUTO_CLOSE:
				case AUTO_CREATE_STATISTICS:
				case AUTO_SHRINK:
				case AUTO_UPDATE_STATISTICS:
				case AUTO_UPDATE_STATISTICS_ASYNC:
				case AVAILABILITY:
				case AVG:
				case BACKUP_PRIORITY:
				case BEGIN_DIALOG:
				case BIGINT:
				case BINARY_BASE64:
				case BINARY_CHECKSUM:
				case BINDING:
				case BLOB_STORAGE:
				case BROKER:
				case BROKER_INSTANCE:
				case BULK_LOGGED:
				case CALLER:
				case CAP_CPU_PERCENT:
				case CAST:
				case CATALOG:
				case CATCH:
				case CHANGE_RETENTION:
				case CHANGE_TRACKING:
				case CHECKSUM:
				case CHECKSUM_AGG:
				case CLEANUP:
				case COLLECTION:
				case COLUMN_MASTER_KEY:
				case COMMITTED:
				case COMPATIBILITY_LEVEL:
				case CONCAT:
				case CONCAT_NULL_YIELDS_NULL:
				case CONTENT:
				case CONTROL:
				case COOKIE:
				case COUNT:
				case COUNT_BIG:
				case COUNTER:
				case CPU:
				case CREATE_NEW:
				case CREATION_DISPOSITION:
				case CREDENTIAL:
				case CRYPTOGRAPHIC:
				case CURSOR_CLOSE_ON_COMMIT:
				case CURSOR_DEFAULT:
				case DATE_CORRELATION_OPTIMIZATION:
				case DATEADD:
				case DATEDIFF:
				case DATENAME:
				case DATEPART:
				case DAYS:
				case DB_CHAINING:
				case DB_FAILOVER:
				case DECRYPTION:
				case DEFAULT_DOUBLE_QUOTE:
				case DEFAULT_FULLTEXT_LANGUAGE:
				case DEFAULT_LANGUAGE:
				case DELAY:
				case DELAYED_DURABILITY:
				case DELETED:
				case DENSE_RANK:
				case DEPENDENTS:
				case DES:
				case DESCRIPTION:
				case DESX:
				case DHCP:
				case DIALOG:
				case DIRECTORY_NAME:
				case DISABLE:
				case DISABLE_BROKER:
				case DISABLED:
				case DISK_DRIVE:
				case DOCUMENT:
				case DYNAMIC:
				case EMERGENCY:
				case EMPTY:
				case ENABLE:
				case ENABLE_BROKER:
				case ENCRYPTED_VALUE:
				case ENCRYPTION:
				case ENDPOINT_URL:
				case ERROR_BROKER_CONVERSATIONS:
				case EXCLUSIVE:
				case EXECUTABLE:
				case EXIST:
				case EXPAND:
				case EXPIRY_DATE:
				case EXPLICIT:
				case FAIL_OPERATION:
				case FAILOVER_MODE:
				case FAILURE:
				case FAILURE_CONDITION_LEVEL:
				case FAST:
				case FAST_FORWARD:
				case FILEGROUP:
				case FILEGROWTH:
				case FILEPATH:
				case FILESTREAM:
				case FILTER:
				case FIRST:
				case FIRST_VALUE:
				case FOLLOWING:
				case FORCE:
				case FORCE_FAILOVER_ALLOW_DATA_LOSS:
				case FORCED:
				case FORMAT:
				case FORWARD_ONLY:
				case FULLSCAN:
				case FULLTEXT:
				case GB:
				case GETDATE:
				case GETUTCDATE:
				case GLOBAL:
				case GO:
				case GROUP_MAX_REQUESTS:
				case GROUPING:
				case GROUPING_ID:
				case HADR:
				case HASH:
				case HEALTH_CHECK_TIMEOUT:
				case HIGH:
				case HONOR_BROKER_PRIORITY:
				case HOURS:
				case IDENTITY_VALUE:
				case IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX:
				case IMMEDIATE:
				case IMPERSONATE:
				case IMPORTANCE:
				case INCREMENTAL:
				case INITIATOR:
				case INPUT:
				case INSENSITIVE:
				case INSERTED:
				case INT:
				case IP:
				case ISOLATION:
				case KB:
				case KEEP:
				case KEEPFIXED:
				case KEY_SOURCE:
				case KEYS:
				case KEYSET:
				case LAG:
				case LAST:
				case LAST_VALUE:
				case LEAD:
				case LEVEL:
				case LIST:
				case LISTENER:
				case LISTENER_URL:
				case LOB_COMPACTION:
				case LOCAL:
				case LOCATION:
				case LOCK:
				case LOCK_ESCALATION:
				case LOGIN:
				case LOOP:
				case LOW:
				case MANUAL:
				case MARK:
				case MATERIALIZED:
				case MAX:
				case MAX_CPU_PERCENT:
				case MAX_DOP:
				case MAX_FILES:
				case MAX_IOPS_PER_VOLUME:
				case MAX_MEMORY_PERCENT:
				case MAX_PROCESSES:
				case MAX_QUEUE_READERS:
				case MAX_ROLLOVER_FILES:
				case MAXDOP:
				case MAXRECURSION:
				case MAXSIZE:
				case MB:
				case MEDIUM:
				case MEMORY_OPTIMIZED_DATA:
				case MESSAGE:
				case MIN:
				case MIN_ACTIVE_ROWVERSION:
				case MIN_CPU_PERCENT:
				case MIN_IOPS_PER_VOLUME:
				case MIN_MEMORY_PERCENT:
				case MINUTES:
				case MIRROR_ADDRESS:
				case MIXED_PAGE_ALLOCATION:
				case MODE:
				case MODIFY:
				case MOVE:
				case MULTI_USER:
				case NAME:
				case NESTED_TRIGGERS:
				case NEW_ACCOUNT:
				case NEW_BROKER:
				case NEW_PASSWORD:
				case NEXT:
				case NO:
				case NO_TRUNCATE:
				case NO_WAIT:
				case NOCOUNT:
				case NODES:
				case NOEXPAND:
				case NON_TRANSACTED_ACCESS:
				case NORECOMPUTE:
				case NORECOVERY:
				case NOWAIT:
				case NTILE:
				case NUMANODE:
				case NUMBER:
				case NUMERIC_ROUNDABORT:
				case OBJECT:
				case OFFLINE:
				case OFFSET:
				case OLD_ACCOUNT:
				case ONLINE:
				case ONLY:
				case OPEN_EXISTING:
				case OPTIMISTIC:
				case OPTIMIZE:
				case OUT:
				case OUTPUT:
				case OWNER:
				case PAGE_VERIFY:
				case PARAMETERIZATION:
				case PARTITION:
				case PARTITIONS:
				case PARTNER:
				case PATH:
				case POISON_MESSAGE_HANDLING:
				case POOL:
				case PORT:
				case PRECEDING:
				case PRIMARY_ROLE:
				case PRIOR:
				case PRIORITY:
				case PRIORITY_LEVEL:
				case PRIVATE:
				case PRIVATE_KEY:
				case PRIVILEGES:
				case PROCEDURE_NAME:
				case PROPERTY:
				case PROVIDER:
				case PROVIDER_KEY_NAME:
				case QUERY:
				case QUEUE:
				case QUEUE_DELAY:
				case QUOTED_IDENTIFIER:
				case RANGE:
				case RANK:
				case RC2:
				case RC4:
				case RC4_128:
				case READ_COMMITTED_SNAPSHOT:
				case READ_ONLY:
				case READ_ONLY_ROUTING_LIST:
				case READ_WRITE:
				case READONLY:
				case REBUILD:
				case RECEIVE:
				case RECOMPILE:
				case RECOVERY:
				case RECURSIVE_TRIGGERS:
				case RELATIVE:
				case REMOTE:
				case REMOTE_SERVICE_NAME:
				case REMOVE:
				case REORGANIZE:
				case REPEATABLE:
				case REPLICA:
				case REQUEST_MAX_CPU_TIME_SEC:
				case REQUEST_MAX_MEMORY_GRANT_PERCENT:
				case REQUEST_MEMORY_GRANT_TIMEOUT_SEC:
				case REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT:
				case RESERVE_DISK_SPACE:
				case RESOURCE:
				case RESOURCE_MANAGER_LOCATION:
				case RESTRICTED_USER:
				case RETENTION:
				case ROBUST:
				case ROOT:
				case ROUTE:
				case ROW:
				case ROW_NUMBER:
				case ROWGUID:
				case ROWS:
				case SAMPLE:
				case SCHEMABINDING:
				case SCOPED:
				case SCROLL:
				case SCROLL_LOCKS:
				case SEARCH:
				case SECONDARY:
				case SECONDARY_ONLY:
				case SECONDARY_ROLE:
				case SECONDS:
				case SECRET:
				case SECURITY_LOG:
				case SEEDING_MODE:
				case SELF:
				case SEMI_SENSITIVE:
				case SEND:
				case SENT:
				case SERIALIZABLE:
				case SESSION_TIMEOUT:
				case SETERROR:
				case SHARE:
				case SHOWPLAN:
				case SIGNATURE:
				case SIMPLE:
				case SINGLE_USER:
				case SIZE:
				case SMALLINT:
				case SNAPSHOT:
				case SPATIAL_WINDOW_MAX_CELLS:
				case STANDBY:
				case START_DATE:
				case STATIC:
				case STATS_STREAM:
				case STATUS:
				case STDEV:
				case STDEVP:
				case STOPLIST:
				case STUFF:
				case SUBJECT:
				case SUM:
				case SUSPEND:
				case SYMMETRIC:
				case SYNCHRONOUS_COMMIT:
				case SYNONYM:
				case TAKE:
				case TARGET_RECOVERY_TIME:
				case TB:
				case TEXTIMAGE_ON:
				case THROW:
				case TIES:
				case TIME:
				case TIMEOUT:
				case TIMER:
				case TINYINT:
				case TORN_PAGE_DETECTION:
				case TRANSFORM_NOISE_WORDS:
				case TRIPLE_DES:
				case TRIPLE_DES_3KEY:
				case TRUSTWORTHY:
				case TRY:
				case TSQL:
				case TWO_DIGIT_YEAR_CUTOFF:
				case TYPE:
				case TYPE_WARNING:
				case UNBOUNDED:
				case UNCOMMITTED:
				case UNKNOWN:
				case UNLIMITED:
				case USING:
				case VALID_XML:
				case VALIDATION:
				case VALUE:
				case VAR:
				case VARP:
				case VIEW_METADATA:
				case VIEWS:
				case WAIT:
				case WELL_FORMED_XML:
				case WORK:
				case WORKLOAD:
				case XML:
				case XMLNAMESPACES:
				case DOUBLE_QUOTE_ID:
				case SQUARE_BRACKET_ID:
				case ID:
					{
					setState(8757);
					id();
					}
					break;
				case LOCAL_ID:
				case DECIMAL:
				case STRING:
				case BINARY:
				case FLOAT:
				case REAL:
				case DOLLAR:
				case PLUS:
				case MINUS:
					{
					setState(8758);
					constant_LOCAL_ID();
					}
					break;
				case OFF:
				case ON:
					{
					setState(8759);
					on_off();
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				setState(8763);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1246,_ctx) ) {
				case 1:
					{
					setState(8762);
					match(SEMI);
					}
					break;
				}
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(8765);
				match(SET);
				setState(8766);
				match(TRANSACTION);
				setState(8767);
				match(ISOLATION);
				setState(8768);
				match(LEVEL);
				setState(8778);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1247,_ctx) ) {
				case 1:
					{
					setState(8769);
					match(READ);
					setState(8770);
					match(UNCOMMITTED);
					}
					break;
				case 2:
					{
					setState(8771);
					match(READ);
					setState(8772);
					match(COMMITTED);
					}
					break;
				case 3:
					{
					setState(8773);
					match(REPEATABLE);
					setState(8774);
					match(READ);
					}
					break;
				case 4:
					{
					setState(8775);
					match(SNAPSHOT);
					}
					break;
				case 5:
					{
					setState(8776);
					match(SERIALIZABLE);
					}
					break;
				case 6:
					{
					setState(8777);
					match(DECIMAL);
					}
					break;
				}
				setState(8781);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1248,_ctx) ) {
				case 1:
					{
					setState(8780);
					match(SEMI);
					}
					break;
				}
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(8783);
				match(SET);
				setState(8784);
				match(IDENTITY_INSERT);
				setState(8785);
				table_name();
				setState(8786);
				on_off();
				setState(8788);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1249,_ctx) ) {
				case 1:
					{
					setState(8787);
					match(SEMI);
					}
					break;
				}
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(8790);
				match(SET);
				setState(8791);
				match(ANSI_NULLS);
				setState(8792);
				on_off();
				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(8793);
				match(SET);
				setState(8794);
				match(QUOTED_IDENTIFIER);
				setState(8795);
				on_off();
				}
				break;
			case 6:
				enterOuterAlt(_localctx, 6);
				{
				setState(8796);
				match(SET);
				setState(8797);
				match(ANSI_PADDING);
				setState(8798);
				on_off();
				}
				break;
			case 7:
				enterOuterAlt(_localctx, 7);
				{
				setState(8799);
				match(SET);
				setState(8800);
				match(ANSI_WARNINGS);
				setState(8801);
				on_off();
				}
				break;
			case 8:
				enterOuterAlt(_localctx, 8);
				{
				setState(8802);
				match(SET);
				setState(8803);
				modify_method();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Constant_LOCAL_IDContext extends ParserRuleContext {
		public ConstantContext constant() {
			return getRuleContext(ConstantContext.class,0);
		}
		public TerminalNode LOCAL_ID() { return getToken(TSqlParser.LOCAL_ID, 0); }
		public Constant_LOCAL_IDContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_constant_LOCAL_ID; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterConstant_LOCAL_ID(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitConstant_LOCAL_ID(this);
		}
	}

	public final Constant_LOCAL_IDContext constant_LOCAL_ID() throws RecognitionException {
		Constant_LOCAL_IDContext _localctx = new Constant_LOCAL_IDContext(_ctx, getState());
		enterRule(_localctx, 712, RULE_constant_LOCAL_ID);
		try {
			setState(8808);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case DECIMAL:
			case STRING:
			case BINARY:
			case FLOAT:
			case REAL:
			case DOLLAR:
			case PLUS:
			case MINUS:
				enterOuterAlt(_localctx, 1);
				{
				setState(8806);
				constant();
				}
				break;
			case LOCAL_ID:
				enterOuterAlt(_localctx, 2);
				{
				setState(8807);
				match(LOCAL_ID);
				}
				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 ExpressionContext extends ParserRuleContext {
		public Token op;
		public Primitive_expressionContext primitive_expression() {
			return getRuleContext(Primitive_expressionContext.class,0);
		}
		public Function_callContext function_call() {
			return getRuleContext(Function_callContext.class,0);
		}
		public Case_expressionContext case_expression() {
			return getRuleContext(Case_expressionContext.class,0);
		}
		public Full_column_nameContext full_column_name() {
			return getRuleContext(Full_column_nameContext.class,0);
		}
		public Bracket_expressionContext bracket_expression() {
			return getRuleContext(Bracket_expressionContext.class,0);
		}
		public Unary_operator_expressionContext unary_operator_expression() {
			return getRuleContext(Unary_operator_expressionContext.class,0);
		}
		public Over_clauseContext over_clause() {
			return getRuleContext(Over_clauseContext.class,0);
		}
		public List expression() {
			return getRuleContexts(ExpressionContext.class);
		}
		public ExpressionContext expression(int i) {
			return getRuleContext(ExpressionContext.class,i);
		}
		public TerminalNode STAR() { return getToken(TSqlParser.STAR, 0); }
		public TerminalNode DIVIDE() { return getToken(TSqlParser.DIVIDE, 0); }
		public TerminalNode MODULE() { return getToken(TSqlParser.MODULE, 0); }
		public TerminalNode PLUS() { return getToken(TSqlParser.PLUS, 0); }
		public TerminalNode MINUS() { return getToken(TSqlParser.MINUS, 0); }
		public TerminalNode BIT_AND() { return getToken(TSqlParser.BIT_AND, 0); }
		public TerminalNode BIT_XOR() { return getToken(TSqlParser.BIT_XOR, 0); }
		public TerminalNode BIT_OR() { return getToken(TSqlParser.BIT_OR, 0); }
		public TerminalNode DOUBLE_BAR() { return getToken(TSqlParser.DOUBLE_BAR, 0); }
		public Comparison_operatorContext comparison_operator() {
			return getRuleContext(Comparison_operatorContext.class,0);
		}
		public Assignment_operatorContext assignment_operator() {
			return getRuleContext(Assignment_operatorContext.class,0);
		}
		public TerminalNode COLLATE() { return getToken(TSqlParser.COLLATE, 0); }
		public IdContext id() {
			return getRuleContext(IdContext.class,0);
		}
		public ExpressionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_expression; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterExpression(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitExpression(this);
		}
	}

	public final ExpressionContext expression() throws RecognitionException {
		return expression(0);
	}

	private ExpressionContext expression(int _p) throws RecognitionException {
		ParserRuleContext _parentctx = _ctx;
		int _parentState = getState();
		ExpressionContext _localctx = new ExpressionContext(_ctx, _parentState);
		ExpressionContext _prevctx = _localctx;
		int _startState = 714;
		enterRecursionRule(_localctx, 714, RULE_expression, _p);
		int _la;
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			setState(8818);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,1252,_ctx) ) {
			case 1:
				{
				setState(8811);
				primitive_expression();
				}
				break;
			case 2:
				{
				setState(8812);
				function_call();
				}
				break;
			case 3:
				{
				setState(8813);
				case_expression();
				}
				break;
			case 4:
				{
				setState(8814);
				full_column_name();
				}
				break;
			case 5:
				{
				setState(8815);
				bracket_expression();
				}
				break;
			case 6:
				{
				setState(8816);
				unary_operator_expression();
				}
				break;
			case 7:
				{
				setState(8817);
				over_clause();
				}
				break;
			}
			_ctx.stop = _input.LT(-1);
			setState(8839);
			_errHandler.sync(this);
			_alt = getInterpreter().adaptivePredict(_input,1254,_ctx);
			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
				if ( _alt==1 ) {
					if ( _parseListeners!=null ) triggerExitRuleEvent();
					_prevctx = _localctx;
					{
					setState(8837);
					_errHandler.sync(this);
					switch ( getInterpreter().adaptivePredict(_input,1253,_ctx) ) {
					case 1:
						{
						_localctx = new ExpressionContext(_parentctx, _parentState);
						pushNewRecursionContext(_localctx, _startState, RULE_expression);
						setState(8820);
						if (!(precpred(_ctx, 5))) throw new FailedPredicateException(this, "precpred(_ctx, 5)");
						setState(8821);
						((ExpressionContext)_localctx).op = _input.LT(1);
						_la = _input.LA(1);
						if ( !(((((_la - 825)) & ~0x3f) == 0 && ((1L << (_la - 825)) & ((1L << (STAR - 825)) | (1L << (DIVIDE - 825)) | (1L << (MODULE - 825)))) != 0)) ) {
							((ExpressionContext)_localctx).op = (Token)_errHandler.recoverInline(this);
						}
						else {
							if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
							_errHandler.reportMatch(this);
							consume();
						}
						setState(8822);
						expression(6);
						}
						break;
					case 2:
						{
						_localctx = new ExpressionContext(_parentctx, _parentState);
						pushNewRecursionContext(_localctx, _startState, RULE_expression);
						setState(8823);
						if (!(precpred(_ctx, 4))) throw new FailedPredicateException(this, "precpred(_ctx, 4)");
						setState(8824);
						((ExpressionContext)_localctx).op = _input.LT(1);
						_la = _input.LA(1);
						if ( !(((((_la - 814)) & ~0x3f) == 0 && ((1L << (_la - 814)) & ((1L << (DOUBLE_BAR - 814)) | (1L << (PLUS - 814)) | (1L << (MINUS - 814)) | (1L << (BIT_OR - 814)) | (1L << (BIT_AND - 814)) | (1L << (BIT_XOR - 814)))) != 0)) ) {
							((ExpressionContext)_localctx).op = (Token)_errHandler.recoverInline(this);
						}
						else {
							if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
							_errHandler.reportMatch(this);
							consume();
						}
						setState(8825);
						expression(5);
						}
						break;
					case 3:
						{
						_localctx = new ExpressionContext(_parentctx, _parentState);
						pushNewRecursionContext(_localctx, _startState, RULE_expression);
						setState(8826);
						if (!(precpred(_ctx, 3))) throw new FailedPredicateException(this, "precpred(_ctx, 3)");
						setState(8827);
						comparison_operator();
						setState(8828);
						expression(4);
						}
						break;
					case 4:
						{
						_localctx = new ExpressionContext(_parentctx, _parentState);
						pushNewRecursionContext(_localctx, _startState, RULE_expression);
						setState(8830);
						if (!(precpred(_ctx, 2))) throw new FailedPredicateException(this, "precpred(_ctx, 2)");
						setState(8831);
						assignment_operator();
						setState(8832);
						expression(3);
						}
						break;
					case 5:
						{
						_localctx = new ExpressionContext(_parentctx, _parentState);
						pushNewRecursionContext(_localctx, _startState, RULE_expression);
						setState(8834);
						if (!(precpred(_ctx, 10))) throw new FailedPredicateException(this, "precpred(_ctx, 10)");
						setState(8835);
						match(COLLATE);
						setState(8836);
						id();
						}
						break;
					}
					} 
				}
				setState(8841);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,1254,_ctx);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			unrollRecursionContexts(_parentctx);
		}
		return _localctx;
	}

	public static class Primitive_expressionContext extends ParserRuleContext {
		public TerminalNode DEFAULT() { return getToken(TSqlParser.DEFAULT, 0); }
		public TerminalNode NULL() { return getToken(TSqlParser.NULL, 0); }
		public TerminalNode LOCAL_ID() { return getToken(TSqlParser.LOCAL_ID, 0); }
		public ConstantContext constant() {
			return getRuleContext(ConstantContext.class,0);
		}
		public Primitive_expressionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_primitive_expression; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterPrimitive_expression(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitPrimitive_expression(this);
		}
	}

	public final Primitive_expressionContext primitive_expression() throws RecognitionException {
		Primitive_expressionContext _localctx = new Primitive_expressionContext(_ctx, getState());
		enterRule(_localctx, 716, RULE_primitive_expression);
		try {
			setState(8846);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case DEFAULT:
				enterOuterAlt(_localctx, 1);
				{
				setState(8842);
				match(DEFAULT);
				}
				break;
			case NULL:
				enterOuterAlt(_localctx, 2);
				{
				setState(8843);
				match(NULL);
				}
				break;
			case LOCAL_ID:
				enterOuterAlt(_localctx, 3);
				{
				setState(8844);
				match(LOCAL_ID);
				}
				break;
			case DECIMAL:
			case STRING:
			case BINARY:
			case FLOAT:
			case REAL:
			case DOLLAR:
			case PLUS:
			case MINUS:
				enterOuterAlt(_localctx, 4);
				{
				setState(8845);
				constant();
				}
				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 Case_expressionContext extends ParserRuleContext {
		public ExpressionContext caseExpr;
		public ExpressionContext elseExpr;
		public TerminalNode CASE() { return getToken(TSqlParser.CASE, 0); }
		public TerminalNode END() { return getToken(TSqlParser.END, 0); }
		public List expression() {
			return getRuleContexts(ExpressionContext.class);
		}
		public ExpressionContext expression(int i) {
			return getRuleContext(ExpressionContext.class,i);
		}
		public List switch_section() {
			return getRuleContexts(Switch_sectionContext.class);
		}
		public Switch_sectionContext switch_section(int i) {
			return getRuleContext(Switch_sectionContext.class,i);
		}
		public TerminalNode ELSE() { return getToken(TSqlParser.ELSE, 0); }
		public List switch_search_condition_section() {
			return getRuleContexts(Switch_search_condition_sectionContext.class);
		}
		public Switch_search_condition_sectionContext switch_search_condition_section(int i) {
			return getRuleContext(Switch_search_condition_sectionContext.class,i);
		}
		public Case_expressionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_case_expression; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterCase_expression(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitCase_expression(this);
		}
	}

	public final Case_expressionContext case_expression() throws RecognitionException {
		Case_expressionContext _localctx = new Case_expressionContext(_ctx, getState());
		enterRule(_localctx, 718, RULE_case_expression);
		int _la;
		try {
			setState(8873);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,1260,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(8848);
				match(CASE);
				setState(8849);
				((Case_expressionContext)_localctx).caseExpr = expression(0);
				setState(8851); 
				_errHandler.sync(this);
				_la = _input.LA(1);
				do {
					{
					{
					setState(8850);
					switch_section();
					}
					}
					setState(8853); 
					_errHandler.sync(this);
					_la = _input.LA(1);
				} while ( _la==WHEN );
				setState(8857);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==ELSE) {
					{
					setState(8855);
					match(ELSE);
					setState(8856);
					((Case_expressionContext)_localctx).elseExpr = expression(0);
					}
				}

				setState(8859);
				match(END);
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(8861);
				match(CASE);
				setState(8863); 
				_errHandler.sync(this);
				_la = _input.LA(1);
				do {
					{
					{
					setState(8862);
					switch_search_condition_section();
					}
					}
					setState(8865); 
					_errHandler.sync(this);
					_la = _input.LA(1);
				} while ( _la==WHEN );
				setState(8869);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==ELSE) {
					{
					setState(8867);
					match(ELSE);
					setState(8868);
					((Case_expressionContext)_localctx).elseExpr = expression(0);
					}
				}

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

	public static class Unary_operator_expressionContext extends ParserRuleContext {
		public Token op;
		public TerminalNode BIT_NOT() { return getToken(TSqlParser.BIT_NOT, 0); }
		public ExpressionContext expression() {
			return getRuleContext(ExpressionContext.class,0);
		}
		public TerminalNode PLUS() { return getToken(TSqlParser.PLUS, 0); }
		public TerminalNode MINUS() { return getToken(TSqlParser.MINUS, 0); }
		public Unary_operator_expressionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_unary_operator_expression; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterUnary_operator_expression(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitUnary_operator_expression(this);
		}
	}

	public final Unary_operator_expressionContext unary_operator_expression() throws RecognitionException {
		Unary_operator_expressionContext _localctx = new Unary_operator_expressionContext(_ctx, getState());
		enterRule(_localctx, 720, RULE_unary_operator_expression);
		int _la;
		try {
			setState(8879);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case BIT_NOT:
				enterOuterAlt(_localctx, 1);
				{
				setState(8875);
				match(BIT_NOT);
				setState(8876);
				expression(0);
				}
				break;
			case PLUS:
			case MINUS:
				enterOuterAlt(_localctx, 2);
				{
				setState(8877);
				((Unary_operator_expressionContext)_localctx).op = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==PLUS || _la==MINUS) ) {
					((Unary_operator_expressionContext)_localctx).op = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(8878);
				expression(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 Bracket_expressionContext extends ParserRuleContext {
		public TerminalNode LR_BRACKET() { return getToken(TSqlParser.LR_BRACKET, 0); }
		public ExpressionContext expression() {
			return getRuleContext(ExpressionContext.class,0);
		}
		public TerminalNode RR_BRACKET() { return getToken(TSqlParser.RR_BRACKET, 0); }
		public SubqueryContext subquery() {
			return getRuleContext(SubqueryContext.class,0);
		}
		public Bracket_expressionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_bracket_expression; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterBracket_expression(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitBracket_expression(this);
		}
	}

	public final Bracket_expressionContext bracket_expression() throws RecognitionException {
		Bracket_expressionContext _localctx = new Bracket_expressionContext(_ctx, getState());
		enterRule(_localctx, 722, RULE_bracket_expression);
		try {
			setState(8889);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,1262,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(8881);
				match(LR_BRACKET);
				setState(8882);
				expression(0);
				setState(8883);
				match(RR_BRACKET);
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(8885);
				match(LR_BRACKET);
				setState(8886);
				subquery();
				setState(8887);
				match(RR_BRACKET);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Constant_expressionContext extends ParserRuleContext {
		public TerminalNode NULL() { return getToken(TSqlParser.NULL, 0); }
		public ConstantContext constant() {
			return getRuleContext(ConstantContext.class,0);
		}
		public Function_callContext function_call() {
			return getRuleContext(Function_callContext.class,0);
		}
		public TerminalNode LOCAL_ID() { return getToken(TSqlParser.LOCAL_ID, 0); }
		public TerminalNode LR_BRACKET() { return getToken(TSqlParser.LR_BRACKET, 0); }
		public Constant_expressionContext constant_expression() {
			return getRuleContext(Constant_expressionContext.class,0);
		}
		public TerminalNode RR_BRACKET() { return getToken(TSqlParser.RR_BRACKET, 0); }
		public Constant_expressionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_constant_expression; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterConstant_expression(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitConstant_expression(this);
		}
	}

	public final Constant_expressionContext constant_expression() throws RecognitionException {
		Constant_expressionContext _localctx = new Constant_expressionContext(_ctx, getState());
		enterRule(_localctx, 724, RULE_constant_expression);
		try {
			setState(8899);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,1263,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(8891);
				match(NULL);
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(8892);
				constant();
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(8893);
				function_call();
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(8894);
				match(LOCAL_ID);
				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(8895);
				match(LR_BRACKET);
				setState(8896);
				constant_expression();
				setState(8897);
				match(RR_BRACKET);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class SubqueryContext extends ParserRuleContext {
		public Select_statementContext select_statement() {
			return getRuleContext(Select_statementContext.class,0);
		}
		public SubqueryContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_subquery; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterSubquery(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitSubquery(this);
		}
	}

	public final SubqueryContext subquery() throws RecognitionException {
		SubqueryContext _localctx = new SubqueryContext(_ctx, getState());
		enterRule(_localctx, 726, RULE_subquery);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(8901);
			select_statement();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class With_expressionContext extends ParserRuleContext {
		public TerminalNode WITH() { return getToken(TSqlParser.WITH, 0); }
		public List common_table_expression() {
			return getRuleContexts(Common_table_expressionContext.class);
		}
		public Common_table_expressionContext common_table_expression(int i) {
			return getRuleContext(Common_table_expressionContext.class,i);
		}
		public TerminalNode XMLNAMESPACES() { return getToken(TSqlParser.XMLNAMESPACES, 0); }
		public List COMMA() { return getTokens(TSqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(TSqlParser.COMMA, i);
		}
		public TerminalNode BLOCKING_HIERARCHY() { return getToken(TSqlParser.BLOCKING_HIERARCHY, 0); }
		public TerminalNode AS() { return getToken(TSqlParser.AS, 0); }
		public List LR_BRACKET() { return getTokens(TSqlParser.LR_BRACKET); }
		public TerminalNode LR_BRACKET(int i) {
			return getToken(TSqlParser.LR_BRACKET, i);
		}
		public Select_statementContext select_statement() {
			return getRuleContext(Select_statementContext.class,0);
		}
		public List RR_BRACKET() { return getTokens(TSqlParser.RR_BRACKET); }
		public TerminalNode RR_BRACKET(int i) {
			return getToken(TSqlParser.RR_BRACKET, i);
		}
		public Full_column_name_listContext full_column_name_list() {
			return getRuleContext(Full_column_name_listContext.class,0);
		}
		public With_expressionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_with_expression; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterWith_expression(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitWith_expression(this);
		}
	}

	public final With_expressionContext with_expression() throws RecognitionException {
		With_expressionContext _localctx = new With_expressionContext(_ctx, getState());
		enterRule(_localctx, 728, RULE_with_expression);
		int _la;
		try {
			setState(8929);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,1267,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(8903);
				match(WITH);
				setState(8906);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1264,_ctx) ) {
				case 1:
					{
					setState(8904);
					match(XMLNAMESPACES);
					setState(8905);
					match(COMMA);
					}
					break;
				}
				setState(8908);
				common_table_expression();
				setState(8913);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA) {
					{
					{
					setState(8909);
					match(COMMA);
					setState(8910);
					common_table_expression();
					}
					}
					setState(8915);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(8916);
				match(WITH);
				setState(8917);
				match(BLOCKING_HIERARCHY);
				setState(8922);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==LR_BRACKET) {
					{
					setState(8918);
					match(LR_BRACKET);
					setState(8919);
					full_column_name_list();
					setState(8920);
					match(RR_BRACKET);
					}
				}

				setState(8924);
				match(AS);
				setState(8925);
				match(LR_BRACKET);
				setState(8926);
				select_statement();
				setState(8927);
				match(RR_BRACKET);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Common_table_expressionContext extends ParserRuleContext {
		public IdContext expression_name;
		public TerminalNode AS() { return getToken(TSqlParser.AS, 0); }
		public List LR_BRACKET() { return getTokens(TSqlParser.LR_BRACKET); }
		public TerminalNode LR_BRACKET(int i) {
			return getToken(TSqlParser.LR_BRACKET, i);
		}
		public Select_statementContext select_statement() {
			return getRuleContext(Select_statementContext.class,0);
		}
		public List RR_BRACKET() { return getTokens(TSqlParser.RR_BRACKET); }
		public TerminalNode RR_BRACKET(int i) {
			return getToken(TSqlParser.RR_BRACKET, i);
		}
		public IdContext id() {
			return getRuleContext(IdContext.class,0);
		}
		public Column_name_listContext column_name_list() {
			return getRuleContext(Column_name_listContext.class,0);
		}
		public Common_table_expressionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_common_table_expression; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterCommon_table_expression(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitCommon_table_expression(this);
		}
	}

	public final Common_table_expressionContext common_table_expression() throws RecognitionException {
		Common_table_expressionContext _localctx = new Common_table_expressionContext(_ctx, getState());
		enterRule(_localctx, 730, RULE_common_table_expression);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(8931);
			((Common_table_expressionContext)_localctx).expression_name = id();
			setState(8936);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==LR_BRACKET) {
				{
				setState(8932);
				match(LR_BRACKET);
				setState(8933);
				column_name_list();
				setState(8934);
				match(RR_BRACKET);
				}
			}

			setState(8938);
			match(AS);
			setState(8939);
			match(LR_BRACKET);
			setState(8940);
			select_statement();
			setState(8941);
			match(RR_BRACKET);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Update_elemContext extends ParserRuleContext {
		public IdContext udt_column_name;
		public IdContext method_name;
		public ExpressionContext expression() {
			return getRuleContext(ExpressionContext.class,0);
		}
		public Full_column_nameContext full_column_name() {
			return getRuleContext(Full_column_nameContext.class,0);
		}
		public TerminalNode LOCAL_ID() { return getToken(TSqlParser.LOCAL_ID, 0); }
		public TerminalNode EQUAL() { return getToken(TSqlParser.EQUAL, 0); }
		public Assignment_operatorContext assignment_operator() {
			return getRuleContext(Assignment_operatorContext.class,0);
		}
		public TerminalNode DOT() { return getToken(TSqlParser.DOT, 0); }
		public TerminalNode LR_BRACKET() { return getToken(TSqlParser.LR_BRACKET, 0); }
		public Expression_listContext expression_list() {
			return getRuleContext(Expression_listContext.class,0);
		}
		public TerminalNode RR_BRACKET() { return getToken(TSqlParser.RR_BRACKET, 0); }
		public List id() {
			return getRuleContexts(IdContext.class);
		}
		public IdContext id(int i) {
			return getRuleContext(IdContext.class,i);
		}
		public Update_elemContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_update_elem; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterUpdate_elem(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitUpdate_elem(this);
		}
	}

	public final Update_elemContext update_elem() throws RecognitionException {
		Update_elemContext _localctx = new Update_elemContext(_ctx, getState());
		enterRule(_localctx, 732, RULE_update_elem);
		try {
			setState(8959);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,1271,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(8945);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case BLOCKING_HIERARCHY:
				case CALLED:
				case DATA_COMPRESSION:
				case EVENTDATA:
				case FILENAME:
				case FILLFACTOR:
				case FORCESEEK:
				case INIT:
				case KEY:
				case MASTER:
				case MAX_MEMORY:
				case OFFSETS:
				case PAGE:
				case PUBLIC:
				case R:
				case RAW:
				case RETURN:
				case RETURNS:
				case ROWCOUNT:
				case SAFETY:
				case SERVER:
				case SID:
				case SOURCE:
				case STATE:
				case START:
				case TARGET:
				case ABSOLUTE:
				case ACCENT_SENSITIVITY:
				case ACTION:
				case ACTIVATION:
				case ACTIVE:
				case ADDRESS:
				case AES_128:
				case AES_192:
				case AES_256:
				case AFFINITY:
				case AFTER:
				case AGGREGATE:
				case ALGORITHM:
				case ALLOW_ENCRYPTED_VALUE_MODIFICATIONS:
				case ALLOW_SNAPSHOT_ISOLATION:
				case ALLOWED:
				case ANSI_NULL_DEFAULT:
				case ANSI_NULLS:
				case ANSI_PADDING:
				case ANSI_WARNINGS:
				case APPLICATION_LOG:
				case APPLY:
				case ARITHABORT:
				case ASSEMBLY:
				case AUDIT:
				case AUDIT_GUID:
				case AUTO:
				case AUTO_CLEANUP:
				case AUTO_CLOSE:
				case AUTO_CREATE_STATISTICS:
				case AUTO_SHRINK:
				case AUTO_UPDATE_STATISTICS:
				case AUTO_UPDATE_STATISTICS_ASYNC:
				case AVAILABILITY:
				case AVG:
				case BACKUP_PRIORITY:
				case BEGIN_DIALOG:
				case BIGINT:
				case BINARY_BASE64:
				case BINARY_CHECKSUM:
				case BINDING:
				case BLOB_STORAGE:
				case BROKER:
				case BROKER_INSTANCE:
				case BULK_LOGGED:
				case CALLER:
				case CAP_CPU_PERCENT:
				case CAST:
				case CATALOG:
				case CATCH:
				case CHANGE_RETENTION:
				case CHANGE_TRACKING:
				case CHECKSUM:
				case CHECKSUM_AGG:
				case CLEANUP:
				case COLLECTION:
				case COLUMN_MASTER_KEY:
				case COMMITTED:
				case COMPATIBILITY_LEVEL:
				case CONCAT:
				case CONCAT_NULL_YIELDS_NULL:
				case CONTENT:
				case CONTROL:
				case COOKIE:
				case COUNT:
				case COUNT_BIG:
				case COUNTER:
				case CPU:
				case CREATE_NEW:
				case CREATION_DISPOSITION:
				case CREDENTIAL:
				case CRYPTOGRAPHIC:
				case CURSOR_CLOSE_ON_COMMIT:
				case CURSOR_DEFAULT:
				case DATE_CORRELATION_OPTIMIZATION:
				case DATEADD:
				case DATEDIFF:
				case DATENAME:
				case DATEPART:
				case DAYS:
				case DB_CHAINING:
				case DB_FAILOVER:
				case DECRYPTION:
				case DEFAULT_DOUBLE_QUOTE:
				case DEFAULT_FULLTEXT_LANGUAGE:
				case DEFAULT_LANGUAGE:
				case DELAY:
				case DELAYED_DURABILITY:
				case DELETED:
				case DENSE_RANK:
				case DEPENDENTS:
				case DES:
				case DESCRIPTION:
				case DESX:
				case DHCP:
				case DIALOG:
				case DIRECTORY_NAME:
				case DISABLE:
				case DISABLE_BROKER:
				case DISABLED:
				case DISK_DRIVE:
				case DOCUMENT:
				case DYNAMIC:
				case EMERGENCY:
				case EMPTY:
				case ENABLE:
				case ENABLE_BROKER:
				case ENCRYPTED_VALUE:
				case ENCRYPTION:
				case ENDPOINT_URL:
				case ERROR_BROKER_CONVERSATIONS:
				case EXCLUSIVE:
				case EXECUTABLE:
				case EXIST:
				case EXPAND:
				case EXPIRY_DATE:
				case EXPLICIT:
				case FAIL_OPERATION:
				case FAILOVER_MODE:
				case FAILURE:
				case FAILURE_CONDITION_LEVEL:
				case FAST:
				case FAST_FORWARD:
				case FILEGROUP:
				case FILEGROWTH:
				case FILEPATH:
				case FILESTREAM:
				case FILTER:
				case FIRST:
				case FIRST_VALUE:
				case FOLLOWING:
				case FORCE:
				case FORCE_FAILOVER_ALLOW_DATA_LOSS:
				case FORCED:
				case FORMAT:
				case FORWARD_ONLY:
				case FULLSCAN:
				case FULLTEXT:
				case GB:
				case GETDATE:
				case GETUTCDATE:
				case GLOBAL:
				case GO:
				case GROUP_MAX_REQUESTS:
				case GROUPING:
				case GROUPING_ID:
				case HADR:
				case HASH:
				case HEALTH_CHECK_TIMEOUT:
				case HIGH:
				case HONOR_BROKER_PRIORITY:
				case HOURS:
				case IDENTITY_VALUE:
				case IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX:
				case IMMEDIATE:
				case IMPERSONATE:
				case IMPORTANCE:
				case INCREMENTAL:
				case INITIATOR:
				case INPUT:
				case INSENSITIVE:
				case INSERTED:
				case INT:
				case IP:
				case ISOLATION:
				case KB:
				case KEEP:
				case KEEPFIXED:
				case KEY_SOURCE:
				case KEYS:
				case KEYSET:
				case LAG:
				case LAST:
				case LAST_VALUE:
				case LEAD:
				case LEVEL:
				case LIST:
				case LISTENER:
				case LISTENER_URL:
				case LOB_COMPACTION:
				case LOCAL:
				case LOCATION:
				case LOCK:
				case LOCK_ESCALATION:
				case LOGIN:
				case LOOP:
				case LOW:
				case MANUAL:
				case MARK:
				case MATERIALIZED:
				case MAX:
				case MAX_CPU_PERCENT:
				case MAX_DOP:
				case MAX_FILES:
				case MAX_IOPS_PER_VOLUME:
				case MAX_MEMORY_PERCENT:
				case MAX_PROCESSES:
				case MAX_QUEUE_READERS:
				case MAX_ROLLOVER_FILES:
				case MAXDOP:
				case MAXRECURSION:
				case MAXSIZE:
				case MB:
				case MEDIUM:
				case MEMORY_OPTIMIZED_DATA:
				case MESSAGE:
				case MIN:
				case MIN_ACTIVE_ROWVERSION:
				case MIN_CPU_PERCENT:
				case MIN_IOPS_PER_VOLUME:
				case MIN_MEMORY_PERCENT:
				case MINUTES:
				case MIRROR_ADDRESS:
				case MIXED_PAGE_ALLOCATION:
				case MODE:
				case MODIFY:
				case MOVE:
				case MULTI_USER:
				case NAME:
				case NESTED_TRIGGERS:
				case NEW_ACCOUNT:
				case NEW_BROKER:
				case NEW_PASSWORD:
				case NEXT:
				case NO:
				case NO_TRUNCATE:
				case NO_WAIT:
				case NOCOUNT:
				case NODES:
				case NOEXPAND:
				case NON_TRANSACTED_ACCESS:
				case NORECOMPUTE:
				case NORECOVERY:
				case NOWAIT:
				case NTILE:
				case NUMANODE:
				case NUMBER:
				case NUMERIC_ROUNDABORT:
				case OBJECT:
				case OFFLINE:
				case OFFSET:
				case OLD_ACCOUNT:
				case ONLINE:
				case ONLY:
				case OPEN_EXISTING:
				case OPTIMISTIC:
				case OPTIMIZE:
				case OUT:
				case OUTPUT:
				case OWNER:
				case PAGE_VERIFY:
				case PARAMETERIZATION:
				case PARTITION:
				case PARTITIONS:
				case PARTNER:
				case PATH:
				case POISON_MESSAGE_HANDLING:
				case POOL:
				case PORT:
				case PRECEDING:
				case PRIMARY_ROLE:
				case PRIOR:
				case PRIORITY:
				case PRIORITY_LEVEL:
				case PRIVATE:
				case PRIVATE_KEY:
				case PRIVILEGES:
				case PROCEDURE_NAME:
				case PROPERTY:
				case PROVIDER:
				case PROVIDER_KEY_NAME:
				case QUERY:
				case QUEUE:
				case QUEUE_DELAY:
				case QUOTED_IDENTIFIER:
				case RANGE:
				case RANK:
				case RC2:
				case RC4:
				case RC4_128:
				case READ_COMMITTED_SNAPSHOT:
				case READ_ONLY:
				case READ_ONLY_ROUTING_LIST:
				case READ_WRITE:
				case READONLY:
				case REBUILD:
				case RECEIVE:
				case RECOMPILE:
				case RECOVERY:
				case RECURSIVE_TRIGGERS:
				case RELATIVE:
				case REMOTE:
				case REMOTE_SERVICE_NAME:
				case REMOVE:
				case REORGANIZE:
				case REPEATABLE:
				case REPLICA:
				case REQUEST_MAX_CPU_TIME_SEC:
				case REQUEST_MAX_MEMORY_GRANT_PERCENT:
				case REQUEST_MEMORY_GRANT_TIMEOUT_SEC:
				case REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT:
				case RESERVE_DISK_SPACE:
				case RESOURCE:
				case RESOURCE_MANAGER_LOCATION:
				case RESTRICTED_USER:
				case RETENTION:
				case ROBUST:
				case ROOT:
				case ROUTE:
				case ROW:
				case ROW_NUMBER:
				case ROWGUID:
				case ROWS:
				case SAMPLE:
				case SCHEMABINDING:
				case SCOPED:
				case SCROLL:
				case SCROLL_LOCKS:
				case SEARCH:
				case SECONDARY:
				case SECONDARY_ONLY:
				case SECONDARY_ROLE:
				case SECONDS:
				case SECRET:
				case SECURITY_LOG:
				case SEEDING_MODE:
				case SELF:
				case SEMI_SENSITIVE:
				case SEND:
				case SENT:
				case SERIALIZABLE:
				case SESSION_TIMEOUT:
				case SETERROR:
				case SHARE:
				case SHOWPLAN:
				case SIGNATURE:
				case SIMPLE:
				case SINGLE_USER:
				case SIZE:
				case SMALLINT:
				case SNAPSHOT:
				case SPATIAL_WINDOW_MAX_CELLS:
				case STANDBY:
				case START_DATE:
				case STATIC:
				case STATS_STREAM:
				case STATUS:
				case STDEV:
				case STDEVP:
				case STOPLIST:
				case STUFF:
				case SUBJECT:
				case SUM:
				case SUSPEND:
				case SYMMETRIC:
				case SYNCHRONOUS_COMMIT:
				case SYNONYM:
				case TAKE:
				case TARGET_RECOVERY_TIME:
				case TB:
				case TEXTIMAGE_ON:
				case THROW:
				case TIES:
				case TIME:
				case TIMEOUT:
				case TIMER:
				case TINYINT:
				case TORN_PAGE_DETECTION:
				case TRANSFORM_NOISE_WORDS:
				case TRIPLE_DES:
				case TRIPLE_DES_3KEY:
				case TRUSTWORTHY:
				case TRY:
				case TSQL:
				case TWO_DIGIT_YEAR_CUTOFF:
				case TYPE:
				case TYPE_WARNING:
				case UNBOUNDED:
				case UNCOMMITTED:
				case UNKNOWN:
				case UNLIMITED:
				case USING:
				case VALID_XML:
				case VALIDATION:
				case VALUE:
				case VAR:
				case VARP:
				case VIEW_METADATA:
				case VIEWS:
				case WAIT:
				case WELL_FORMED_XML:
				case WORK:
				case WORKLOAD:
				case XML:
				case XMLNAMESPACES:
				case DOUBLE_QUOTE_ID:
				case SQUARE_BRACKET_ID:
				case ID:
					{
					setState(8943);
					full_column_name();
					}
					break;
				case LOCAL_ID:
					{
					setState(8944);
					match(LOCAL_ID);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				setState(8949);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case EQUAL:
					{
					setState(8947);
					match(EQUAL);
					}
					break;
				case PLUS_ASSIGN:
				case MINUS_ASSIGN:
				case MULT_ASSIGN:
				case DIV_ASSIGN:
				case MOD_ASSIGN:
				case AND_ASSIGN:
				case XOR_ASSIGN:
				case OR_ASSIGN:
					{
					setState(8948);
					assignment_operator();
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				setState(8951);
				expression(0);
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(8952);
				((Update_elemContext)_localctx).udt_column_name = id();
				setState(8953);
				match(DOT);
				setState(8954);
				((Update_elemContext)_localctx).method_name = id();
				setState(8955);
				match(LR_BRACKET);
				setState(8956);
				expression_list();
				setState(8957);
				match(RR_BRACKET);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Search_condition_listContext extends ParserRuleContext {
		public List search_condition() {
			return getRuleContexts(Search_conditionContext.class);
		}
		public Search_conditionContext search_condition(int i) {
			return getRuleContext(Search_conditionContext.class,i);
		}
		public List COMMA() { return getTokens(TSqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(TSqlParser.COMMA, i);
		}
		public Search_condition_listContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_search_condition_list; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterSearch_condition_list(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitSearch_condition_list(this);
		}
	}

	public final Search_condition_listContext search_condition_list() throws RecognitionException {
		Search_condition_listContext _localctx = new Search_condition_listContext(_ctx, getState());
		enterRule(_localctx, 734, RULE_search_condition_list);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(8961);
			search_condition();
			setState(8966);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA) {
				{
				{
				setState(8962);
				match(COMMA);
				setState(8963);
				search_condition();
				}
				}
				setState(8968);
				_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 Search_conditionContext extends ParserRuleContext {
		public List search_condition_and() {
			return getRuleContexts(Search_condition_andContext.class);
		}
		public Search_condition_andContext search_condition_and(int i) {
			return getRuleContext(Search_condition_andContext.class,i);
		}
		public List OR() { return getTokens(TSqlParser.OR); }
		public TerminalNode OR(int i) {
			return getToken(TSqlParser.OR, i);
		}
		public Search_conditionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_search_condition; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterSearch_condition(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitSearch_condition(this);
		}
	}

	public final Search_conditionContext search_condition() throws RecognitionException {
		Search_conditionContext _localctx = new Search_conditionContext(_ctx, getState());
		enterRule(_localctx, 736, RULE_search_condition);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(8969);
			search_condition_and();
			setState(8974);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==OR) {
				{
				{
				setState(8970);
				match(OR);
				setState(8971);
				search_condition_and();
				}
				}
				setState(8976);
				_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 Search_condition_andContext extends ParserRuleContext {
		public List search_condition_not() {
			return getRuleContexts(Search_condition_notContext.class);
		}
		public Search_condition_notContext search_condition_not(int i) {
			return getRuleContext(Search_condition_notContext.class,i);
		}
		public List AND() { return getTokens(TSqlParser.AND); }
		public TerminalNode AND(int i) {
			return getToken(TSqlParser.AND, i);
		}
		public Search_condition_andContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_search_condition_and; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterSearch_condition_and(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitSearch_condition_and(this);
		}
	}

	public final Search_condition_andContext search_condition_and() throws RecognitionException {
		Search_condition_andContext _localctx = new Search_condition_andContext(_ctx, getState());
		enterRule(_localctx, 738, RULE_search_condition_and);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(8977);
			search_condition_not();
			setState(8982);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==AND) {
				{
				{
				setState(8978);
				match(AND);
				setState(8979);
				search_condition_not();
				}
				}
				setState(8984);
				_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 Search_condition_notContext extends ParserRuleContext {
		public PredicateContext predicate() {
			return getRuleContext(PredicateContext.class,0);
		}
		public TerminalNode NOT() { return getToken(TSqlParser.NOT, 0); }
		public Search_condition_notContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_search_condition_not; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterSearch_condition_not(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitSearch_condition_not(this);
		}
	}

	public final Search_condition_notContext search_condition_not() throws RecognitionException {
		Search_condition_notContext _localctx = new Search_condition_notContext(_ctx, getState());
		enterRule(_localctx, 740, RULE_search_condition_not);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(8986);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==NOT) {
				{
				setState(8985);
				match(NOT);
				}
			}

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

	public static class PredicateContext extends ParserRuleContext {
		public TerminalNode EXISTS() { return getToken(TSqlParser.EXISTS, 0); }
		public TerminalNode LR_BRACKET() { return getToken(TSqlParser.LR_BRACKET, 0); }
		public SubqueryContext subquery() {
			return getRuleContext(SubqueryContext.class,0);
		}
		public TerminalNode RR_BRACKET() { return getToken(TSqlParser.RR_BRACKET, 0); }
		public List expression() {
			return getRuleContexts(ExpressionContext.class);
		}
		public ExpressionContext expression(int i) {
			return getRuleContext(ExpressionContext.class,i);
		}
		public Comparison_operatorContext comparison_operator() {
			return getRuleContext(Comparison_operatorContext.class,0);
		}
		public TerminalNode ALL() { return getToken(TSqlParser.ALL, 0); }
		public TerminalNode SOME() { return getToken(TSqlParser.SOME, 0); }
		public TerminalNode ANY() { return getToken(TSqlParser.ANY, 0); }
		public TerminalNode BETWEEN() { return getToken(TSqlParser.BETWEEN, 0); }
		public TerminalNode AND() { return getToken(TSqlParser.AND, 0); }
		public TerminalNode NOT() { return getToken(TSqlParser.NOT, 0); }
		public TerminalNode IN() { return getToken(TSqlParser.IN, 0); }
		public Expression_listContext expression_list() {
			return getRuleContext(Expression_listContext.class,0);
		}
		public TerminalNode LIKE() { return getToken(TSqlParser.LIKE, 0); }
		public TerminalNode ESCAPE() { return getToken(TSqlParser.ESCAPE, 0); }
		public TerminalNode IS() { return getToken(TSqlParser.IS, 0); }
		public Null_notnullContext null_notnull() {
			return getRuleContext(Null_notnullContext.class,0);
		}
		public Search_conditionContext search_condition() {
			return getRuleContext(Search_conditionContext.class,0);
		}
		public PredicateContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_predicate; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterPredicate(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitPredicate(this);
		}
	}

	public final PredicateContext predicate() throws RecognitionException {
		PredicateContext _localctx = new PredicateContext(_ctx, getState());
		enterRule(_localctx, 742, RULE_predicate);
		int _la;
		try {
			setState(9045);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,1281,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(8990);
				match(EXISTS);
				setState(8991);
				match(LR_BRACKET);
				setState(8992);
				subquery();
				setState(8993);
				match(RR_BRACKET);
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(8995);
				expression(0);
				setState(8996);
				comparison_operator();
				setState(8997);
				expression(0);
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(8999);
				expression(0);
				setState(9000);
				comparison_operator();
				setState(9001);
				_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();
				}
				setState(9002);
				match(LR_BRACKET);
				setState(9003);
				subquery();
				setState(9004);
				match(RR_BRACKET);
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(9006);
				expression(0);
				setState(9008);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==NOT) {
					{
					setState(9007);
					match(NOT);
					}
				}

				setState(9010);
				match(BETWEEN);
				setState(9011);
				expression(0);
				setState(9012);
				match(AND);
				setState(9013);
				expression(0);
				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(9015);
				expression(0);
				setState(9017);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==NOT) {
					{
					setState(9016);
					match(NOT);
					}
				}

				setState(9019);
				match(IN);
				setState(9020);
				match(LR_BRACKET);
				setState(9023);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1278,_ctx) ) {
				case 1:
					{
					setState(9021);
					subquery();
					}
					break;
				case 2:
					{
					setState(9022);
					expression_list();
					}
					break;
				}
				setState(9025);
				match(RR_BRACKET);
				}
				break;
			case 6:
				enterOuterAlt(_localctx, 6);
				{
				setState(9027);
				expression(0);
				setState(9029);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==NOT) {
					{
					setState(9028);
					match(NOT);
					}
				}

				setState(9031);
				match(LIKE);
				setState(9032);
				expression(0);
				setState(9035);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==ESCAPE) {
					{
					setState(9033);
					match(ESCAPE);
					setState(9034);
					expression(0);
					}
				}

				}
				break;
			case 7:
				enterOuterAlt(_localctx, 7);
				{
				setState(9037);
				expression(0);
				setState(9038);
				match(IS);
				setState(9039);
				null_notnull();
				}
				break;
			case 8:
				enterOuterAlt(_localctx, 8);
				{
				setState(9041);
				match(LR_BRACKET);
				setState(9042);
				search_condition();
				setState(9043);
				match(RR_BRACKET);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Query_expressionContext extends ParserRuleContext {
		public Query_specificationContext query_specification() {
			return getRuleContext(Query_specificationContext.class,0);
		}
		public TerminalNode LR_BRACKET() { return getToken(TSqlParser.LR_BRACKET, 0); }
		public Query_expressionContext query_expression() {
			return getRuleContext(Query_expressionContext.class,0);
		}
		public TerminalNode RR_BRACKET() { return getToken(TSqlParser.RR_BRACKET, 0); }
		public List sql_union() {
			return getRuleContexts(Sql_unionContext.class);
		}
		public Sql_unionContext sql_union(int i) {
			return getRuleContext(Sql_unionContext.class,i);
		}
		public Query_expressionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_query_expression; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterQuery_expression(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitQuery_expression(this);
		}
	}

	public final Query_expressionContext query_expression() throws RecognitionException {
		Query_expressionContext _localctx = new Query_expressionContext(_ctx, getState());
		enterRule(_localctx, 744, RULE_query_expression);
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			setState(9052);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case SELECT:
				{
				setState(9047);
				query_specification();
				}
				break;
			case LR_BRACKET:
				{
				setState(9048);
				match(LR_BRACKET);
				setState(9049);
				query_expression();
				setState(9050);
				match(RR_BRACKET);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			setState(9057);
			_errHandler.sync(this);
			_alt = getInterpreter().adaptivePredict(_input,1283,_ctx);
			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
				if ( _alt==1 ) {
					{
					{
					setState(9054);
					sql_union();
					}
					} 
				}
				setState(9059);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,1283,_ctx);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Sql_unionContext extends ParserRuleContext {
		public TerminalNode UNION() { return getToken(TSqlParser.UNION, 0); }
		public TerminalNode EXCEPT() { return getToken(TSqlParser.EXCEPT, 0); }
		public TerminalNode INTERSECT() { return getToken(TSqlParser.INTERSECT, 0); }
		public Query_specificationContext query_specification() {
			return getRuleContext(Query_specificationContext.class,0);
		}
		public TerminalNode LR_BRACKET() { return getToken(TSqlParser.LR_BRACKET, 0); }
		public Query_expressionContext query_expression() {
			return getRuleContext(Query_expressionContext.class,0);
		}
		public TerminalNode RR_BRACKET() { return getToken(TSqlParser.RR_BRACKET, 0); }
		public TerminalNode ALL() { return getToken(TSqlParser.ALL, 0); }
		public Sql_unionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_sql_union; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterSql_union(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitSql_union(this);
		}
	}

	public final Sql_unionContext sql_union() throws RecognitionException {
		Sql_unionContext _localctx = new Sql_unionContext(_ctx, getState());
		enterRule(_localctx, 746, RULE_sql_union);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(9066);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case UNION:
				{
				setState(9060);
				match(UNION);
				setState(9062);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==ALL) {
					{
					setState(9061);
					match(ALL);
					}
				}

				}
				break;
			case EXCEPT:
				{
				setState(9064);
				match(EXCEPT);
				}
				break;
			case INTERSECT:
				{
				setState(9065);
				match(INTERSECT);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			setState(9073);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case SELECT:
				{
				setState(9068);
				query_specification();
				}
				break;
			case LR_BRACKET:
				{
				{
				setState(9069);
				match(LR_BRACKET);
				setState(9070);
				query_expression();
				setState(9071);
				match(RR_BRACKET);
				}
				}
				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 Query_specificationContext extends ParserRuleContext {
		public Search_conditionContext where;
		public Search_conditionContext having;
		public TerminalNode SELECT() { return getToken(TSqlParser.SELECT, 0); }
		public Select_listContext select_list() {
			return getRuleContext(Select_listContext.class,0);
		}
		public Top_clauseContext top_clause() {
			return getRuleContext(Top_clauseContext.class,0);
		}
		public TerminalNode INTO() { return getToken(TSqlParser.INTO, 0); }
		public Table_nameContext table_name() {
			return getRuleContext(Table_nameContext.class,0);
		}
		public TerminalNode FROM() { return getToken(TSqlParser.FROM, 0); }
		public Table_sourcesContext table_sources() {
			return getRuleContext(Table_sourcesContext.class,0);
		}
		public TerminalNode WHERE() { return getToken(TSqlParser.WHERE, 0); }
		public TerminalNode GROUP() { return getToken(TSqlParser.GROUP, 0); }
		public TerminalNode BY() { return getToken(TSqlParser.BY, 0); }
		public List group_by_item() {
			return getRuleContexts(Group_by_itemContext.class);
		}
		public Group_by_itemContext group_by_item(int i) {
			return getRuleContext(Group_by_itemContext.class,i);
		}
		public TerminalNode HAVING() { return getToken(TSqlParser.HAVING, 0); }
		public List ALL() { return getTokens(TSqlParser.ALL); }
		public TerminalNode ALL(int i) {
			return getToken(TSqlParser.ALL, i);
		}
		public TerminalNode DISTINCT() { return getToken(TSqlParser.DISTINCT, 0); }
		public List search_condition() {
			return getRuleContexts(Search_conditionContext.class);
		}
		public Search_conditionContext search_condition(int i) {
			return getRuleContext(Search_conditionContext.class,i);
		}
		public List COMMA() { return getTokens(TSqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(TSqlParser.COMMA, i);
		}
		public Query_specificationContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_query_specification; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterQuery_specification(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitQuery_specification(this);
		}
	}

	public final Query_specificationContext query_specification() throws RecognitionException {
		Query_specificationContext _localctx = new Query_specificationContext(_ctx, getState());
		enterRule(_localctx, 748, RULE_query_specification);
		int _la;
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			setState(9075);
			match(SELECT);
			setState(9077);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==ALL || _la==DISTINCT) {
				{
				setState(9076);
				_la = _input.LA(1);
				if ( !(_la==ALL || _la==DISTINCT) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
			}

			setState(9080);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==TOP) {
				{
				setState(9079);
				top_clause();
				}
			}

			setState(9082);
			select_list();
			setState(9085);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==INTO) {
				{
				setState(9083);
				match(INTO);
				setState(9084);
				table_name();
				}
			}

			setState(9089);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==FROM) {
				{
				setState(9087);
				match(FROM);
				setState(9088);
				table_sources();
				}
			}

			setState(9093);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,1291,_ctx) ) {
			case 1:
				{
				setState(9091);
				match(WHERE);
				setState(9092);
				((Query_specificationContext)_localctx).where = search_condition();
				}
				break;
			}
			setState(9108);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,1294,_ctx) ) {
			case 1:
				{
				setState(9095);
				match(GROUP);
				setState(9096);
				match(BY);
				setState(9098);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==ALL) {
					{
					setState(9097);
					match(ALL);
					}
				}

				setState(9100);
				group_by_item();
				setState(9105);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,1293,_ctx);
				while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
					if ( _alt==1 ) {
						{
						{
						setState(9101);
						match(COMMA);
						setState(9102);
						group_by_item();
						}
						} 
					}
					setState(9107);
					_errHandler.sync(this);
					_alt = getInterpreter().adaptivePredict(_input,1293,_ctx);
				}
				}
				break;
			}
			setState(9112);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,1295,_ctx) ) {
			case 1:
				{
				setState(9110);
				match(HAVING);
				setState(9111);
				((Query_specificationContext)_localctx).having = search_condition();
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Top_clauseContext extends ParserRuleContext {
		public TerminalNode TOP() { return getToken(TSqlParser.TOP, 0); }
		public Top_percentContext top_percent() {
			return getRuleContext(Top_percentContext.class,0);
		}
		public Top_countContext top_count() {
			return getRuleContext(Top_countContext.class,0);
		}
		public TerminalNode WITH() { return getToken(TSqlParser.WITH, 0); }
		public TerminalNode TIES() { return getToken(TSqlParser.TIES, 0); }
		public Top_clauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_top_clause; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterTop_clause(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitTop_clause(this);
		}
	}

	public final Top_clauseContext top_clause() throws RecognitionException {
		Top_clauseContext _localctx = new Top_clauseContext(_ctx, getState());
		enterRule(_localctx, 750, RULE_top_clause);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(9114);
			match(TOP);
			setState(9117);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,1296,_ctx) ) {
			case 1:
				{
				setState(9115);
				top_percent();
				}
				break;
			case 2:
				{
				setState(9116);
				top_count();
				}
				break;
			}
			setState(9121);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==WITH) {
				{
				setState(9119);
				match(WITH);
				setState(9120);
				match(TIES);
				}
			}

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

	public static class Top_percentContext extends ParserRuleContext {
		public TerminalNode PERCENT() { return getToken(TSqlParser.PERCENT, 0); }
		public TerminalNode REAL() { return getToken(TSqlParser.REAL, 0); }
		public TerminalNode FLOAT() { return getToken(TSqlParser.FLOAT, 0); }
		public TerminalNode LR_BRACKET() { return getToken(TSqlParser.LR_BRACKET, 0); }
		public ExpressionContext expression() {
			return getRuleContext(ExpressionContext.class,0);
		}
		public TerminalNode RR_BRACKET() { return getToken(TSqlParser.RR_BRACKET, 0); }
		public Top_percentContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_top_percent; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterTop_percent(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitTop_percent(this);
		}
	}

	public final Top_percentContext top_percent() throws RecognitionException {
		Top_percentContext _localctx = new Top_percentContext(_ctx, getState());
		enterRule(_localctx, 752, RULE_top_percent);
		int _la;
		try {
			setState(9130);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case FLOAT:
			case REAL:
				enterOuterAlt(_localctx, 1);
				{
				setState(9123);
				_la = _input.LA(1);
				if ( !(_la==FLOAT || _la==REAL) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(9124);
				match(PERCENT);
				}
				break;
			case LR_BRACKET:
				enterOuterAlt(_localctx, 2);
				{
				setState(9125);
				match(LR_BRACKET);
				setState(9126);
				expression(0);
				setState(9127);
				match(RR_BRACKET);
				setState(9128);
				match(PERCENT);
				}
				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 Top_countContext extends ParserRuleContext {
		public TerminalNode DECIMAL() { return getToken(TSqlParser.DECIMAL, 0); }
		public TerminalNode LR_BRACKET() { return getToken(TSqlParser.LR_BRACKET, 0); }
		public ExpressionContext expression() {
			return getRuleContext(ExpressionContext.class,0);
		}
		public TerminalNode RR_BRACKET() { return getToken(TSqlParser.RR_BRACKET, 0); }
		public Top_countContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_top_count; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterTop_count(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitTop_count(this);
		}
	}

	public final Top_countContext top_count() throws RecognitionException {
		Top_countContext _localctx = new Top_countContext(_ctx, getState());
		enterRule(_localctx, 754, RULE_top_count);
		try {
			setState(9137);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case DECIMAL:
				enterOuterAlt(_localctx, 1);
				{
				setState(9132);
				match(DECIMAL);
				}
				break;
			case LR_BRACKET:
				enterOuterAlt(_localctx, 2);
				{
				setState(9133);
				match(LR_BRACKET);
				setState(9134);
				expression(0);
				setState(9135);
				match(RR_BRACKET);
				}
				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 Order_by_clauseContext extends ParserRuleContext {
		public TerminalNode ORDER() { return getToken(TSqlParser.ORDER, 0); }
		public TerminalNode BY() { return getToken(TSqlParser.BY, 0); }
		public List order_by_expression() {
			return getRuleContexts(Order_by_expressionContext.class);
		}
		public Order_by_expressionContext order_by_expression(int i) {
			return getRuleContext(Order_by_expressionContext.class,i);
		}
		public List COMMA() { return getTokens(TSqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(TSqlParser.COMMA, i);
		}
		public TerminalNode OFFSET() { return getToken(TSqlParser.OFFSET, 0); }
		public List expression() {
			return getRuleContexts(ExpressionContext.class);
		}
		public ExpressionContext expression(int i) {
			return getRuleContext(ExpressionContext.class,i);
		}
		public List ROW() { return getTokens(TSqlParser.ROW); }
		public TerminalNode ROW(int i) {
			return getToken(TSqlParser.ROW, i);
		}
		public List ROWS() { return getTokens(TSqlParser.ROWS); }
		public TerminalNode ROWS(int i) {
			return getToken(TSqlParser.ROWS, i);
		}
		public TerminalNode FETCH() { return getToken(TSqlParser.FETCH, 0); }
		public TerminalNode ONLY() { return getToken(TSqlParser.ONLY, 0); }
		public TerminalNode FIRST() { return getToken(TSqlParser.FIRST, 0); }
		public TerminalNode NEXT() { return getToken(TSqlParser.NEXT, 0); }
		public Order_by_clauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_order_by_clause; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterOrder_by_clause(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitOrder_by_clause(this);
		}
	}

	public final Order_by_clauseContext order_by_clause() throws RecognitionException {
		Order_by_clauseContext _localctx = new Order_by_clauseContext(_ctx, getState());
		enterRule(_localctx, 756, RULE_order_by_clause);
		int _la;
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			setState(9139);
			match(ORDER);
			setState(9140);
			match(BY);
			setState(9141);
			order_by_expression();
			setState(9146);
			_errHandler.sync(this);
			_alt = getInterpreter().adaptivePredict(_input,1300,_ctx);
			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
				if ( _alt==1 ) {
					{
					{
					setState(9142);
					match(COMMA);
					setState(9143);
					order_by_expression();
					}
					} 
				}
				setState(9148);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,1300,_ctx);
			}
			setState(9160);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,1302,_ctx) ) {
			case 1:
				{
				setState(9149);
				match(OFFSET);
				setState(9150);
				expression(0);
				setState(9151);
				_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();
				}
				setState(9158);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1301,_ctx) ) {
				case 1:
					{
					setState(9152);
					match(FETCH);
					setState(9153);
					_la = _input.LA(1);
					if ( !(_la==FIRST || _la==NEXT) ) {
					_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					setState(9154);
					expression(0);
					setState(9155);
					_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();
					}
					setState(9156);
					match(ONLY);
					}
					break;
				}
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class For_clauseContext extends ParserRuleContext {
		public TerminalNode FOR() { return getToken(TSqlParser.FOR, 0); }
		public TerminalNode BROWSE() { return getToken(TSqlParser.BROWSE, 0); }
		public TerminalNode XML() { return getToken(TSqlParser.XML, 0); }
		public TerminalNode RAW() { return getToken(TSqlParser.RAW, 0); }
		public TerminalNode AUTO() { return getToken(TSqlParser.AUTO, 0); }
		public List xml_common_directives() {
			return getRuleContexts(Xml_common_directivesContext.class);
		}
		public Xml_common_directivesContext xml_common_directives(int i) {
			return getRuleContext(Xml_common_directivesContext.class,i);
		}
		public List COMMA() { return getTokens(TSqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(TSqlParser.COMMA, i);
		}
		public TerminalNode ELEMENTS() { return getToken(TSqlParser.ELEMENTS, 0); }
		public TerminalNode XSINIL() { return getToken(TSqlParser.XSINIL, 0); }
		public TerminalNode ABSENT() { return getToken(TSqlParser.ABSENT, 0); }
		public List LR_BRACKET() { return getTokens(TSqlParser.LR_BRACKET); }
		public TerminalNode LR_BRACKET(int i) {
			return getToken(TSqlParser.LR_BRACKET, i);
		}
		public List STRING() { return getTokens(TSqlParser.STRING); }
		public TerminalNode STRING(int i) {
			return getToken(TSqlParser.STRING, i);
		}
		public List RR_BRACKET() { return getTokens(TSqlParser.RR_BRACKET); }
		public TerminalNode RR_BRACKET(int i) {
			return getToken(TSqlParser.RR_BRACKET, i);
		}
		public TerminalNode XMLDATA() { return getToken(TSqlParser.XMLDATA, 0); }
		public TerminalNode XMLSCHEMA() { return getToken(TSqlParser.XMLSCHEMA, 0); }
		public TerminalNode EXPLICIT() { return getToken(TSqlParser.EXPLICIT, 0); }
		public TerminalNode PATH() { return getToken(TSqlParser.PATH, 0); }
		public TerminalNode JSON() { return getToken(TSqlParser.JSON, 0); }
		public TerminalNode ROOT() { return getToken(TSqlParser.ROOT, 0); }
		public TerminalNode INCLUDE_NULL_VALUES() { return getToken(TSqlParser.INCLUDE_NULL_VALUES, 0); }
		public TerminalNode WITHOUT_ARRAY_WRAPPER() { return getToken(TSqlParser.WITHOUT_ARRAY_WRAPPER, 0); }
		public For_clauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_for_clause; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterFor_clause(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitFor_clause(this);
		}
	}

	public final For_clauseContext for_clause() throws RecognitionException {
		For_clauseContext _localctx = new For_clauseContext(_ctx, getState());
		enterRule(_localctx, 758, RULE_for_clause);
		int _la;
		try {
			int _alt;
			setState(9250);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,1319,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(9162);
				match(FOR);
				setState(9163);
				match(BROWSE);
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(9164);
				match(FOR);
				setState(9165);
				match(XML);
				setState(9173);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case RAW:
					{
					setState(9166);
					match(RAW);
					setState(9170);
					_errHandler.sync(this);
					switch ( getInterpreter().adaptivePredict(_input,1303,_ctx) ) {
					case 1:
						{
						setState(9167);
						match(LR_BRACKET);
						setState(9168);
						match(STRING);
						setState(9169);
						match(RR_BRACKET);
						}
						break;
					}
					}
					break;
				case AUTO:
					{
					setState(9172);
					match(AUTO);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				setState(9178);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,1305,_ctx);
				while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
					if ( _alt==1 ) {
						{
						{
						setState(9175);
						xml_common_directives();
						}
						} 
					}
					setState(9180);
					_errHandler.sync(this);
					_alt = getInterpreter().adaptivePredict(_input,1305,_ctx);
				}
				setState(9191);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1308,_ctx) ) {
				case 1:
					{
					setState(9181);
					match(COMMA);
					setState(9189);
					_errHandler.sync(this);
					switch (_input.LA(1)) {
					case XMLDATA:
						{
						setState(9182);
						match(XMLDATA);
						}
						break;
					case XMLSCHEMA:
						{
						setState(9183);
						match(XMLSCHEMA);
						setState(9187);
						_errHandler.sync(this);
						switch ( getInterpreter().adaptivePredict(_input,1306,_ctx) ) {
						case 1:
							{
							setState(9184);
							match(LR_BRACKET);
							setState(9185);
							match(STRING);
							setState(9186);
							match(RR_BRACKET);
							}
							break;
						}
						}
						break;
					default:
						throw new NoViableAltException(this);
					}
					}
					break;
				}
				setState(9196);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1309,_ctx) ) {
				case 1:
					{
					setState(9193);
					match(COMMA);
					setState(9194);
					match(ELEMENTS);
					setState(9195);
					_la = _input.LA(1);
					if ( !(_la==ABSENT || _la==XSINIL) ) {
					_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					}
					break;
				}
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(9198);
				match(FOR);
				setState(9199);
				match(XML);
				setState(9200);
				match(EXPLICIT);
				setState(9204);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,1310,_ctx);
				while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
					if ( _alt==1 ) {
						{
						{
						setState(9201);
						xml_common_directives();
						}
						} 
					}
					setState(9206);
					_errHandler.sync(this);
					_alt = getInterpreter().adaptivePredict(_input,1310,_ctx);
				}
				setState(9209);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1311,_ctx) ) {
				case 1:
					{
					setState(9207);
					match(COMMA);
					setState(9208);
					match(XMLDATA);
					}
					break;
				}
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(9211);
				match(FOR);
				setState(9212);
				match(XML);
				setState(9213);
				match(PATH);
				setState(9217);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1312,_ctx) ) {
				case 1:
					{
					setState(9214);
					match(LR_BRACKET);
					setState(9215);
					match(STRING);
					setState(9216);
					match(RR_BRACKET);
					}
					break;
				}
				setState(9222);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,1313,_ctx);
				while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
					if ( _alt==1 ) {
						{
						{
						setState(9219);
						xml_common_directives();
						}
						} 
					}
					setState(9224);
					_errHandler.sync(this);
					_alt = getInterpreter().adaptivePredict(_input,1313,_ctx);
				}
				setState(9228);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1314,_ctx) ) {
				case 1:
					{
					setState(9225);
					match(COMMA);
					setState(9226);
					match(ELEMENTS);
					setState(9227);
					_la = _input.LA(1);
					if ( !(_la==ABSENT || _la==XSINIL) ) {
					_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					}
					break;
				}
				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(9230);
				match(FOR);
				setState(9231);
				match(JSON);
				setState(9232);
				_la = _input.LA(1);
				if ( !(_la==AUTO || _la==PATH) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(9240);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1316,_ctx) ) {
				case 1:
					{
					setState(9233);
					match(COMMA);
					setState(9234);
					match(ROOT);
					setState(9238);
					_errHandler.sync(this);
					switch ( getInterpreter().adaptivePredict(_input,1315,_ctx) ) {
					case 1:
						{
						setState(9235);
						match(LR_BRACKET);
						setState(9236);
						match(STRING);
						setState(9237);
						match(RR_BRACKET);
						}
						break;
					}
					}
					break;
				}
				setState(9244);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1317,_ctx) ) {
				case 1:
					{
					setState(9242);
					match(COMMA);
					setState(9243);
					match(INCLUDE_NULL_VALUES);
					}
					break;
				}
				setState(9248);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1318,_ctx) ) {
				case 1:
					{
					setState(9246);
					match(COMMA);
					setState(9247);
					match(WITHOUT_ARRAY_WRAPPER);
					}
					break;
				}
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Xml_common_directivesContext extends ParserRuleContext {
		public TerminalNode COMMA() { return getToken(TSqlParser.COMMA, 0); }
		public TerminalNode BINARY_BASE64() { return getToken(TSqlParser.BINARY_BASE64, 0); }
		public TerminalNode TYPE() { return getToken(TSqlParser.TYPE, 0); }
		public TerminalNode ROOT() { return getToken(TSqlParser.ROOT, 0); }
		public Xml_common_directivesContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_xml_common_directives; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterXml_common_directives(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitXml_common_directives(this);
		}
	}

	public final Xml_common_directivesContext xml_common_directives() throws RecognitionException {
		Xml_common_directivesContext _localctx = new Xml_common_directivesContext(_ctx, getState());
		enterRule(_localctx, 760, RULE_xml_common_directives);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(9252);
			match(COMMA);
			setState(9253);
			_la = _input.LA(1);
			if ( !(_la==BINARY_BASE64 || _la==ROOT || _la==TYPE) ) {
			_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 Order_by_expressionContext extends ParserRuleContext {
		public ExpressionContext expression() {
			return getRuleContext(ExpressionContext.class,0);
		}
		public TerminalNode ASC() { return getToken(TSqlParser.ASC, 0); }
		public TerminalNode DESC() { return getToken(TSqlParser.DESC, 0); }
		public Order_by_expressionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_order_by_expression; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterOrder_by_expression(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitOrder_by_expression(this);
		}
	}

	public final Order_by_expressionContext order_by_expression() throws RecognitionException {
		Order_by_expressionContext _localctx = new Order_by_expressionContext(_ctx, getState());
		enterRule(_localctx, 762, RULE_order_by_expression);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(9255);
			expression(0);
			setState(9257);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==ASC || _la==DESC) {
				{
				setState(9256);
				_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 Group_by_itemContext extends ParserRuleContext {
		public ExpressionContext expression() {
			return getRuleContext(ExpressionContext.class,0);
		}
		public Group_by_itemContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_group_by_item; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterGroup_by_item(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitGroup_by_item(this);
		}
	}

	public final Group_by_itemContext group_by_item() throws RecognitionException {
		Group_by_itemContext _localctx = new Group_by_itemContext(_ctx, getState());
		enterRule(_localctx, 764, RULE_group_by_item);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(9259);
			expression(0);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Option_clauseContext extends ParserRuleContext {
		public TerminalNode OPTION() { return getToken(TSqlParser.OPTION, 0); }
		public TerminalNode LR_BRACKET() { return getToken(TSqlParser.LR_BRACKET, 0); }
		public List option() {
			return getRuleContexts(OptionContext.class);
		}
		public OptionContext option(int i) {
			return getRuleContext(OptionContext.class,i);
		}
		public TerminalNode RR_BRACKET() { return getToken(TSqlParser.RR_BRACKET, 0); }
		public List COMMA() { return getTokens(TSqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(TSqlParser.COMMA, i);
		}
		public Option_clauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_option_clause; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterOption_clause(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitOption_clause(this);
		}
	}

	public final Option_clauseContext option_clause() throws RecognitionException {
		Option_clauseContext _localctx = new Option_clauseContext(_ctx, getState());
		enterRule(_localctx, 766, RULE_option_clause);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(9261);
			match(OPTION);
			setState(9262);
			match(LR_BRACKET);
			setState(9263);
			option();
			setState(9268);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA) {
				{
				{
				setState(9264);
				match(COMMA);
				setState(9265);
				option();
				}
				}
				setState(9270);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			setState(9271);
			match(RR_BRACKET);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class OptionContext extends ParserRuleContext {
		public Token number_rows;
		public Token number_of_processors;
		public Token number_recursion;
		public TerminalNode FAST() { return getToken(TSqlParser.FAST, 0); }
		public TerminalNode DECIMAL() { return getToken(TSqlParser.DECIMAL, 0); }
		public TerminalNode GROUP() { return getToken(TSqlParser.GROUP, 0); }
		public TerminalNode HASH() { return getToken(TSqlParser.HASH, 0); }
		public TerminalNode ORDER() { return getToken(TSqlParser.ORDER, 0); }
		public TerminalNode UNION() { return getToken(TSqlParser.UNION, 0); }
		public TerminalNode MERGE() { return getToken(TSqlParser.MERGE, 0); }
		public TerminalNode CONCAT() { return getToken(TSqlParser.CONCAT, 0); }
		public TerminalNode JOIN() { return getToken(TSqlParser.JOIN, 0); }
		public TerminalNode LOOP() { return getToken(TSqlParser.LOOP, 0); }
		public TerminalNode EXPAND() { return getToken(TSqlParser.EXPAND, 0); }
		public TerminalNode VIEWS() { return getToken(TSqlParser.VIEWS, 0); }
		public TerminalNode FORCE() { return getToken(TSqlParser.FORCE, 0); }
		public TerminalNode IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX() { return getToken(TSqlParser.IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX, 0); }
		public TerminalNode KEEP() { return getToken(TSqlParser.KEEP, 0); }
		public TerminalNode PLAN() { return getToken(TSqlParser.PLAN, 0); }
		public TerminalNode KEEPFIXED() { return getToken(TSqlParser.KEEPFIXED, 0); }
		public TerminalNode MAXDOP() { return getToken(TSqlParser.MAXDOP, 0); }
		public TerminalNode MAXRECURSION() { return getToken(TSqlParser.MAXRECURSION, 0); }
		public TerminalNode OPTIMIZE() { return getToken(TSqlParser.OPTIMIZE, 0); }
		public TerminalNode FOR() { return getToken(TSqlParser.FOR, 0); }
		public TerminalNode LR_BRACKET() { return getToken(TSqlParser.LR_BRACKET, 0); }
		public List optimize_for_arg() {
			return getRuleContexts(Optimize_for_argContext.class);
		}
		public Optimize_for_argContext optimize_for_arg(int i) {
			return getRuleContext(Optimize_for_argContext.class,i);
		}
		public TerminalNode RR_BRACKET() { return getToken(TSqlParser.RR_BRACKET, 0); }
		public List COMMA() { return getTokens(TSqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(TSqlParser.COMMA, i);
		}
		public TerminalNode UNKNOWN() { return getToken(TSqlParser.UNKNOWN, 0); }
		public TerminalNode PARAMETERIZATION() { return getToken(TSqlParser.PARAMETERIZATION, 0); }
		public TerminalNode SIMPLE() { return getToken(TSqlParser.SIMPLE, 0); }
		public TerminalNode FORCED() { return getToken(TSqlParser.FORCED, 0); }
		public TerminalNode RECOMPILE() { return getToken(TSqlParser.RECOMPILE, 0); }
		public TerminalNode ROBUST() { return getToken(TSqlParser.ROBUST, 0); }
		public TerminalNode USE() { return getToken(TSqlParser.USE, 0); }
		public TerminalNode STRING() { return getToken(TSqlParser.STRING, 0); }
		public OptionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_option; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterOption(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitOption(this);
		}
	}

	public final OptionContext option() throws RecognitionException {
		OptionContext _localctx = new OptionContext(_ctx, getState());
		enterRule(_localctx, 768, RULE_option);
		int _la;
		try {
			setState(9318);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,1323,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(9273);
				match(FAST);
				setState(9274);
				((OptionContext)_localctx).number_rows = match(DECIMAL);
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(9275);
				_la = _input.LA(1);
				if ( !(_la==ORDER || _la==HASH) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(9276);
				match(GROUP);
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(9277);
				_la = _input.LA(1);
				if ( !(_la==MERGE || _la==CONCAT || _la==HASH) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(9278);
				match(UNION);
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(9279);
				_la = _input.LA(1);
				if ( !(_la==MERGE || _la==HASH || _la==LOOP) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(9280);
				match(JOIN);
				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(9281);
				match(EXPAND);
				setState(9282);
				match(VIEWS);
				}
				break;
			case 6:
				enterOuterAlt(_localctx, 6);
				{
				setState(9283);
				match(FORCE);
				setState(9284);
				match(ORDER);
				}
				break;
			case 7:
				enterOuterAlt(_localctx, 7);
				{
				setState(9285);
				match(IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX);
				}
				break;
			case 8:
				enterOuterAlt(_localctx, 8);
				{
				setState(9286);
				match(KEEP);
				setState(9287);
				match(PLAN);
				}
				break;
			case 9:
				enterOuterAlt(_localctx, 9);
				{
				setState(9288);
				match(KEEPFIXED);
				setState(9289);
				match(PLAN);
				}
				break;
			case 10:
				enterOuterAlt(_localctx, 10);
				{
				setState(9290);
				match(MAXDOP);
				setState(9291);
				((OptionContext)_localctx).number_of_processors = match(DECIMAL);
				}
				break;
			case 11:
				enterOuterAlt(_localctx, 11);
				{
				setState(9292);
				match(MAXRECURSION);
				setState(9293);
				((OptionContext)_localctx).number_recursion = match(DECIMAL);
				}
				break;
			case 12:
				enterOuterAlt(_localctx, 12);
				{
				setState(9294);
				match(OPTIMIZE);
				setState(9295);
				match(FOR);
				setState(9296);
				match(LR_BRACKET);
				setState(9297);
				optimize_for_arg();
				setState(9302);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA) {
					{
					{
					setState(9298);
					match(COMMA);
					setState(9299);
					optimize_for_arg();
					}
					}
					setState(9304);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				setState(9305);
				match(RR_BRACKET);
				}
				break;
			case 13:
				enterOuterAlt(_localctx, 13);
				{
				setState(9307);
				match(OPTIMIZE);
				setState(9308);
				match(FOR);
				setState(9309);
				match(UNKNOWN);
				}
				break;
			case 14:
				enterOuterAlt(_localctx, 14);
				{
				setState(9310);
				match(PARAMETERIZATION);
				setState(9311);
				_la = _input.LA(1);
				if ( !(_la==FORCED || _la==SIMPLE) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
				break;
			case 15:
				enterOuterAlt(_localctx, 15);
				{
				setState(9312);
				match(RECOMPILE);
				}
				break;
			case 16:
				enterOuterAlt(_localctx, 16);
				{
				setState(9313);
				match(ROBUST);
				setState(9314);
				match(PLAN);
				}
				break;
			case 17:
				enterOuterAlt(_localctx, 17);
				{
				setState(9315);
				match(USE);
				setState(9316);
				match(PLAN);
				setState(9317);
				match(STRING);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Optimize_for_argContext extends ParserRuleContext {
		public TerminalNode LOCAL_ID() { return getToken(TSqlParser.LOCAL_ID, 0); }
		public TerminalNode UNKNOWN() { return getToken(TSqlParser.UNKNOWN, 0); }
		public TerminalNode EQUAL() { return getToken(TSqlParser.EQUAL, 0); }
		public ConstantContext constant() {
			return getRuleContext(ConstantContext.class,0);
		}
		public TerminalNode NULL() { return getToken(TSqlParser.NULL, 0); }
		public Optimize_for_argContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_optimize_for_arg; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterOptimize_for_arg(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitOptimize_for_arg(this);
		}
	}

	public final Optimize_for_argContext optimize_for_arg() throws RecognitionException {
		Optimize_for_argContext _localctx = new Optimize_for_argContext(_ctx, getState());
		enterRule(_localctx, 770, RULE_optimize_for_arg);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(9320);
			match(LOCAL_ID);
			setState(9327);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case UNKNOWN:
				{
				setState(9321);
				match(UNKNOWN);
				}
				break;
			case EQUAL:
				{
				setState(9322);
				match(EQUAL);
				setState(9325);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case DECIMAL:
				case STRING:
				case BINARY:
				case FLOAT:
				case REAL:
				case DOLLAR:
				case PLUS:
				case MINUS:
					{
					setState(9323);
					constant();
					}
					break;
				case NULL:
					{
					setState(9324);
					match(NULL);
					}
					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 Select_listContext extends ParserRuleContext {
		public List select_list_elem() {
			return getRuleContexts(Select_list_elemContext.class);
		}
		public Select_list_elemContext select_list_elem(int i) {
			return getRuleContext(Select_list_elemContext.class,i);
		}
		public List COMMA() { return getTokens(TSqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(TSqlParser.COMMA, i);
		}
		public Select_listContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_select_list; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterSelect_list(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitSelect_list(this);
		}
	}

	public final Select_listContext select_list() throws RecognitionException {
		Select_listContext _localctx = new Select_listContext(_ctx, getState());
		enterRule(_localctx, 772, RULE_select_list);
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			setState(9329);
			select_list_elem();
			setState(9334);
			_errHandler.sync(this);
			_alt = getInterpreter().adaptivePredict(_input,1326,_ctx);
			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
				if ( _alt==1 ) {
					{
					{
					setState(9330);
					match(COMMA);
					setState(9331);
					select_list_elem();
					}
					} 
				}
				setState(9336);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,1326,_ctx);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Udt_method_argumentsContext extends ParserRuleContext {
		public TerminalNode LR_BRACKET() { return getToken(TSqlParser.LR_BRACKET, 0); }
		public List execute_var_string() {
			return getRuleContexts(Execute_var_stringContext.class);
		}
		public Execute_var_stringContext execute_var_string(int i) {
			return getRuleContext(Execute_var_stringContext.class,i);
		}
		public TerminalNode RR_BRACKET() { return getToken(TSqlParser.RR_BRACKET, 0); }
		public List COMMA() { return getTokens(TSqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(TSqlParser.COMMA, i);
		}
		public Udt_method_argumentsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_udt_method_arguments; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterUdt_method_arguments(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitUdt_method_arguments(this);
		}
	}

	public final Udt_method_argumentsContext udt_method_arguments() throws RecognitionException {
		Udt_method_argumentsContext _localctx = new Udt_method_argumentsContext(_ctx, getState());
		enterRule(_localctx, 774, RULE_udt_method_arguments);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(9337);
			match(LR_BRACKET);
			setState(9338);
			execute_var_string();
			setState(9343);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA) {
				{
				{
				setState(9339);
				match(COMMA);
				setState(9340);
				execute_var_string();
				}
				}
				setState(9345);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			setState(9346);
			match(RR_BRACKET);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AsteriskContext extends ParserRuleContext {
		public TerminalNode STAR() { return getToken(TSqlParser.STAR, 0); }
		public Table_nameContext table_name() {
			return getRuleContext(Table_nameContext.class,0);
		}
		public TerminalNode DOT() { return getToken(TSqlParser.DOT, 0); }
		public AsteriskContext asterisk() {
			return getRuleContext(AsteriskContext.class,0);
		}
		public AsteriskContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_asterisk; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterAsterisk(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitAsterisk(this);
		}
	}

	public final AsteriskContext asterisk() throws RecognitionException {
		AsteriskContext _localctx = new AsteriskContext(_ctx, getState());
		enterRule(_localctx, 776, RULE_asterisk);
		try {
			setState(9353);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case STAR:
				enterOuterAlt(_localctx, 1);
				{
				setState(9348);
				match(STAR);
				}
				break;
			case BLOCKING_HIERARCHY:
			case CALLED:
			case DATA_COMPRESSION:
			case EVENTDATA:
			case FILENAME:
			case FILLFACTOR:
			case FORCESEEK:
			case INIT:
			case KEY:
			case MASTER:
			case MAX_MEMORY:
			case OFFSETS:
			case PAGE:
			case PUBLIC:
			case R:
			case RAW:
			case RETURN:
			case RETURNS:
			case ROWCOUNT:
			case SAFETY:
			case SERVER:
			case SID:
			case SOURCE:
			case STATE:
			case START:
			case TARGET:
			case ABSOLUTE:
			case ACCENT_SENSITIVITY:
			case ACTION:
			case ACTIVATION:
			case ACTIVE:
			case ADDRESS:
			case AES_128:
			case AES_192:
			case AES_256:
			case AFFINITY:
			case AFTER:
			case AGGREGATE:
			case ALGORITHM:
			case ALLOW_ENCRYPTED_VALUE_MODIFICATIONS:
			case ALLOW_SNAPSHOT_ISOLATION:
			case ALLOWED:
			case ANSI_NULL_DEFAULT:
			case ANSI_NULLS:
			case ANSI_PADDING:
			case ANSI_WARNINGS:
			case APPLICATION_LOG:
			case APPLY:
			case ARITHABORT:
			case ASSEMBLY:
			case AUDIT:
			case AUDIT_GUID:
			case AUTO:
			case AUTO_CLEANUP:
			case AUTO_CLOSE:
			case AUTO_CREATE_STATISTICS:
			case AUTO_SHRINK:
			case AUTO_UPDATE_STATISTICS:
			case AUTO_UPDATE_STATISTICS_ASYNC:
			case AVAILABILITY:
			case AVG:
			case BACKUP_PRIORITY:
			case BEGIN_DIALOG:
			case BIGINT:
			case BINARY_BASE64:
			case BINARY_CHECKSUM:
			case BINDING:
			case BLOB_STORAGE:
			case BROKER:
			case BROKER_INSTANCE:
			case BULK_LOGGED:
			case CALLER:
			case CAP_CPU_PERCENT:
			case CAST:
			case CATALOG:
			case CATCH:
			case CHANGE_RETENTION:
			case CHANGE_TRACKING:
			case CHECKSUM:
			case CHECKSUM_AGG:
			case CLEANUP:
			case COLLECTION:
			case COLUMN_MASTER_KEY:
			case COMMITTED:
			case COMPATIBILITY_LEVEL:
			case CONCAT:
			case CONCAT_NULL_YIELDS_NULL:
			case CONTENT:
			case CONTROL:
			case COOKIE:
			case COUNT:
			case COUNT_BIG:
			case COUNTER:
			case CPU:
			case CREATE_NEW:
			case CREATION_DISPOSITION:
			case CREDENTIAL:
			case CRYPTOGRAPHIC:
			case CURSOR_CLOSE_ON_COMMIT:
			case CURSOR_DEFAULT:
			case DATE_CORRELATION_OPTIMIZATION:
			case DATEADD:
			case DATEDIFF:
			case DATENAME:
			case DATEPART:
			case DAYS:
			case DB_CHAINING:
			case DB_FAILOVER:
			case DECRYPTION:
			case DEFAULT_DOUBLE_QUOTE:
			case DEFAULT_FULLTEXT_LANGUAGE:
			case DEFAULT_LANGUAGE:
			case DELAY:
			case DELAYED_DURABILITY:
			case DELETED:
			case DENSE_RANK:
			case DEPENDENTS:
			case DES:
			case DESCRIPTION:
			case DESX:
			case DHCP:
			case DIALOG:
			case DIRECTORY_NAME:
			case DISABLE:
			case DISABLE_BROKER:
			case DISABLED:
			case DISK_DRIVE:
			case DOCUMENT:
			case DYNAMIC:
			case EMERGENCY:
			case EMPTY:
			case ENABLE:
			case ENABLE_BROKER:
			case ENCRYPTED_VALUE:
			case ENCRYPTION:
			case ENDPOINT_URL:
			case ERROR_BROKER_CONVERSATIONS:
			case EXCLUSIVE:
			case EXECUTABLE:
			case EXIST:
			case EXPAND:
			case EXPIRY_DATE:
			case EXPLICIT:
			case FAIL_OPERATION:
			case FAILOVER_MODE:
			case FAILURE:
			case FAILURE_CONDITION_LEVEL:
			case FAST:
			case FAST_FORWARD:
			case FILEGROUP:
			case FILEGROWTH:
			case FILEPATH:
			case FILESTREAM:
			case FILTER:
			case FIRST:
			case FIRST_VALUE:
			case FOLLOWING:
			case FORCE:
			case FORCE_FAILOVER_ALLOW_DATA_LOSS:
			case FORCED:
			case FORMAT:
			case FORWARD_ONLY:
			case FULLSCAN:
			case FULLTEXT:
			case GB:
			case GETDATE:
			case GETUTCDATE:
			case GLOBAL:
			case GO:
			case GROUP_MAX_REQUESTS:
			case GROUPING:
			case GROUPING_ID:
			case HADR:
			case HASH:
			case HEALTH_CHECK_TIMEOUT:
			case HIGH:
			case HONOR_BROKER_PRIORITY:
			case HOURS:
			case IDENTITY_VALUE:
			case IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX:
			case IMMEDIATE:
			case IMPERSONATE:
			case IMPORTANCE:
			case INCREMENTAL:
			case INITIATOR:
			case INPUT:
			case INSENSITIVE:
			case INSERTED:
			case INT:
			case IP:
			case ISOLATION:
			case KB:
			case KEEP:
			case KEEPFIXED:
			case KEY_SOURCE:
			case KEYS:
			case KEYSET:
			case LAG:
			case LAST:
			case LAST_VALUE:
			case LEAD:
			case LEVEL:
			case LIST:
			case LISTENER:
			case LISTENER_URL:
			case LOB_COMPACTION:
			case LOCAL:
			case LOCATION:
			case LOCK:
			case LOCK_ESCALATION:
			case LOGIN:
			case LOOP:
			case LOW:
			case MANUAL:
			case MARK:
			case MATERIALIZED:
			case MAX:
			case MAX_CPU_PERCENT:
			case MAX_DOP:
			case MAX_FILES:
			case MAX_IOPS_PER_VOLUME:
			case MAX_MEMORY_PERCENT:
			case MAX_PROCESSES:
			case MAX_QUEUE_READERS:
			case MAX_ROLLOVER_FILES:
			case MAXDOP:
			case MAXRECURSION:
			case MAXSIZE:
			case MB:
			case MEDIUM:
			case MEMORY_OPTIMIZED_DATA:
			case MESSAGE:
			case MIN:
			case MIN_ACTIVE_ROWVERSION:
			case MIN_CPU_PERCENT:
			case MIN_IOPS_PER_VOLUME:
			case MIN_MEMORY_PERCENT:
			case MINUTES:
			case MIRROR_ADDRESS:
			case MIXED_PAGE_ALLOCATION:
			case MODE:
			case MODIFY:
			case MOVE:
			case MULTI_USER:
			case NAME:
			case NESTED_TRIGGERS:
			case NEW_ACCOUNT:
			case NEW_BROKER:
			case NEW_PASSWORD:
			case NEXT:
			case NO:
			case NO_TRUNCATE:
			case NO_WAIT:
			case NOCOUNT:
			case NODES:
			case NOEXPAND:
			case NON_TRANSACTED_ACCESS:
			case NORECOMPUTE:
			case NORECOVERY:
			case NOWAIT:
			case NTILE:
			case NUMANODE:
			case NUMBER:
			case NUMERIC_ROUNDABORT:
			case OBJECT:
			case OFFLINE:
			case OFFSET:
			case OLD_ACCOUNT:
			case ONLINE:
			case ONLY:
			case OPEN_EXISTING:
			case OPTIMISTIC:
			case OPTIMIZE:
			case OUT:
			case OUTPUT:
			case OWNER:
			case PAGE_VERIFY:
			case PARAMETERIZATION:
			case PARTITION:
			case PARTITIONS:
			case PARTNER:
			case PATH:
			case POISON_MESSAGE_HANDLING:
			case POOL:
			case PORT:
			case PRECEDING:
			case PRIMARY_ROLE:
			case PRIOR:
			case PRIORITY:
			case PRIORITY_LEVEL:
			case PRIVATE:
			case PRIVATE_KEY:
			case PRIVILEGES:
			case PROCEDURE_NAME:
			case PROPERTY:
			case PROVIDER:
			case PROVIDER_KEY_NAME:
			case QUERY:
			case QUEUE:
			case QUEUE_DELAY:
			case QUOTED_IDENTIFIER:
			case RANGE:
			case RANK:
			case RC2:
			case RC4:
			case RC4_128:
			case READ_COMMITTED_SNAPSHOT:
			case READ_ONLY:
			case READ_ONLY_ROUTING_LIST:
			case READ_WRITE:
			case READONLY:
			case REBUILD:
			case RECEIVE:
			case RECOMPILE:
			case RECOVERY:
			case RECURSIVE_TRIGGERS:
			case RELATIVE:
			case REMOTE:
			case REMOTE_SERVICE_NAME:
			case REMOVE:
			case REORGANIZE:
			case REPEATABLE:
			case REPLICA:
			case REQUEST_MAX_CPU_TIME_SEC:
			case REQUEST_MAX_MEMORY_GRANT_PERCENT:
			case REQUEST_MEMORY_GRANT_TIMEOUT_SEC:
			case REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT:
			case RESERVE_DISK_SPACE:
			case RESOURCE:
			case RESOURCE_MANAGER_LOCATION:
			case RESTRICTED_USER:
			case RETENTION:
			case ROBUST:
			case ROOT:
			case ROUTE:
			case ROW:
			case ROW_NUMBER:
			case ROWGUID:
			case ROWS:
			case SAMPLE:
			case SCHEMABINDING:
			case SCOPED:
			case SCROLL:
			case SCROLL_LOCKS:
			case SEARCH:
			case SECONDARY:
			case SECONDARY_ONLY:
			case SECONDARY_ROLE:
			case SECONDS:
			case SECRET:
			case SECURITY_LOG:
			case SEEDING_MODE:
			case SELF:
			case SEMI_SENSITIVE:
			case SEND:
			case SENT:
			case SERIALIZABLE:
			case SESSION_TIMEOUT:
			case SETERROR:
			case SHARE:
			case SHOWPLAN:
			case SIGNATURE:
			case SIMPLE:
			case SINGLE_USER:
			case SIZE:
			case SMALLINT:
			case SNAPSHOT:
			case SPATIAL_WINDOW_MAX_CELLS:
			case STANDBY:
			case START_DATE:
			case STATIC:
			case STATS_STREAM:
			case STATUS:
			case STDEV:
			case STDEVP:
			case STOPLIST:
			case STUFF:
			case SUBJECT:
			case SUM:
			case SUSPEND:
			case SYMMETRIC:
			case SYNCHRONOUS_COMMIT:
			case SYNONYM:
			case TAKE:
			case TARGET_RECOVERY_TIME:
			case TB:
			case TEXTIMAGE_ON:
			case THROW:
			case TIES:
			case TIME:
			case TIMEOUT:
			case TIMER:
			case TINYINT:
			case TORN_PAGE_DETECTION:
			case TRANSFORM_NOISE_WORDS:
			case TRIPLE_DES:
			case TRIPLE_DES_3KEY:
			case TRUSTWORTHY:
			case TRY:
			case TSQL:
			case TWO_DIGIT_YEAR_CUTOFF:
			case TYPE:
			case TYPE_WARNING:
			case UNBOUNDED:
			case UNCOMMITTED:
			case UNKNOWN:
			case UNLIMITED:
			case USING:
			case VALID_XML:
			case VALIDATION:
			case VALUE:
			case VAR:
			case VARP:
			case VIEW_METADATA:
			case VIEWS:
			case WAIT:
			case WELL_FORMED_XML:
			case WORK:
			case WORKLOAD:
			case XML:
			case XMLNAMESPACES:
			case DOUBLE_QUOTE_ID:
			case SQUARE_BRACKET_ID:
			case ID:
				enterOuterAlt(_localctx, 2);
				{
				setState(9349);
				table_name();
				setState(9350);
				match(DOT);
				setState(9351);
				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 Column_elemContext extends ParserRuleContext {
		public IdContext column_name;
		public TerminalNode DOLLAR() { return getToken(TSqlParser.DOLLAR, 0); }
		public TerminalNode IDENTITY() { return getToken(TSqlParser.IDENTITY, 0); }
		public TerminalNode ROWGUID() { return getToken(TSqlParser.ROWGUID, 0); }
		public Table_nameContext table_name() {
			return getRuleContext(Table_nameContext.class,0);
		}
		public TerminalNode DOT() { return getToken(TSqlParser.DOT, 0); }
		public IdContext id() {
			return getRuleContext(IdContext.class,0);
		}
		public As_column_aliasContext as_column_alias() {
			return getRuleContext(As_column_aliasContext.class,0);
		}
		public Column_elemContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_column_elem; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterColumn_elem(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitColumn_elem(this);
		}
	}

	public final Column_elemContext column_elem() throws RecognitionException {
		Column_elemContext _localctx = new Column_elemContext(_ctx, getState());
		enterRule(_localctx, 778, RULE_column_elem);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(9358);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,1329,_ctx) ) {
			case 1:
				{
				setState(9355);
				table_name();
				setState(9356);
				match(DOT);
				}
				break;
			}
			setState(9365);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,1330,_ctx) ) {
			case 1:
				{
				setState(9360);
				((Column_elemContext)_localctx).column_name = id();
				}
				break;
			case 2:
				{
				setState(9361);
				match(DOLLAR);
				setState(9362);
				match(IDENTITY);
				}
				break;
			case 3:
				{
				setState(9363);
				match(DOLLAR);
				setState(9364);
				match(ROWGUID);
				}
				break;
			}
			setState(9368);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,1331,_ctx) ) {
			case 1:
				{
				setState(9367);
				as_column_alias();
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Udt_elemContext extends ParserRuleContext {
		public IdContext udt_column_name;
		public IdContext non_static_attr;
		public IdContext static_attr;
		public TerminalNode DOT() { return getToken(TSqlParser.DOT, 0); }
		public Udt_method_argumentsContext udt_method_arguments() {
			return getRuleContext(Udt_method_argumentsContext.class,0);
		}
		public List id() {
			return getRuleContexts(IdContext.class);
		}
		public IdContext id(int i) {
			return getRuleContext(IdContext.class,i);
		}
		public As_column_aliasContext as_column_alias() {
			return getRuleContext(As_column_aliasContext.class,0);
		}
		public List COLON() { return getTokens(TSqlParser.COLON); }
		public TerminalNode COLON(int i) {
			return getToken(TSqlParser.COLON, i);
		}
		public Udt_elemContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_udt_elem; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterUdt_elem(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitUdt_elem(this);
		}
	}

	public final Udt_elemContext udt_elem() throws RecognitionException {
		Udt_elemContext _localctx = new Udt_elemContext(_ctx, getState());
		enterRule(_localctx, 780, RULE_udt_elem);
		try {
			setState(9387);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,1335,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(9370);
				((Udt_elemContext)_localctx).udt_column_name = id();
				setState(9371);
				match(DOT);
				setState(9372);
				((Udt_elemContext)_localctx).non_static_attr = id();
				setState(9373);
				udt_method_arguments();
				setState(9375);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1332,_ctx) ) {
				case 1:
					{
					setState(9374);
					as_column_alias();
					}
					break;
				}
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(9377);
				((Udt_elemContext)_localctx).udt_column_name = id();
				setState(9378);
				match(COLON);
				setState(9379);
				match(COLON);
				setState(9380);
				((Udt_elemContext)_localctx).static_attr = id();
				setState(9382);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1333,_ctx) ) {
				case 1:
					{
					setState(9381);
					udt_method_arguments();
					}
					break;
				}
				setState(9385);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1334,_ctx) ) {
				case 1:
					{
					setState(9384);
					as_column_alias();
					}
					break;
				}
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Expression_elemContext extends ParserRuleContext {
		public Token eq;
		public Column_aliasContext column_alias() {
			return getRuleContext(Column_aliasContext.class,0);
		}
		public ExpressionContext expression() {
			return getRuleContext(ExpressionContext.class,0);
		}
		public TerminalNode EQUAL() { return getToken(TSqlParser.EQUAL, 0); }
		public As_column_aliasContext as_column_alias() {
			return getRuleContext(As_column_aliasContext.class,0);
		}
		public Expression_elemContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_expression_elem; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterExpression_elem(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitExpression_elem(this);
		}
	}

	public final Expression_elemContext expression_elem() throws RecognitionException {
		Expression_elemContext _localctx = new Expression_elemContext(_ctx, getState());
		enterRule(_localctx, 782, RULE_expression_elem);
		try {
			setState(9397);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,1337,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(9389);
				column_alias();
				setState(9390);
				((Expression_elemContext)_localctx).eq = match(EQUAL);
				setState(9391);
				expression(0);
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(9393);
				expression(0);
				setState(9395);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1336,_ctx) ) {
				case 1:
					{
					setState(9394);
					as_column_alias();
					}
					break;
				}
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Select_list_elemContext extends ParserRuleContext {
		public AsteriskContext asterisk() {
			return getRuleContext(AsteriskContext.class,0);
		}
		public Column_elemContext column_elem() {
			return getRuleContext(Column_elemContext.class,0);
		}
		public Udt_elemContext udt_elem() {
			return getRuleContext(Udt_elemContext.class,0);
		}
		public Expression_elemContext expression_elem() {
			return getRuleContext(Expression_elemContext.class,0);
		}
		public Select_list_elemContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_select_list_elem; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterSelect_list_elem(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitSelect_list_elem(this);
		}
	}

	public final Select_list_elemContext select_list_elem() throws RecognitionException {
		Select_list_elemContext _localctx = new Select_list_elemContext(_ctx, getState());
		enterRule(_localctx, 784, RULE_select_list_elem);
		try {
			setState(9403);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,1338,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(9399);
				asterisk();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(9400);
				column_elem();
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(9401);
				udt_elem();
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(9402);
				expression_elem();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Table_sourcesContext extends ParserRuleContext {
		public List table_source() {
			return getRuleContexts(Table_sourceContext.class);
		}
		public Table_sourceContext table_source(int i) {
			return getRuleContext(Table_sourceContext.class,i);
		}
		public List COMMA() { return getTokens(TSqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(TSqlParser.COMMA, i);
		}
		public Table_sourcesContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_table_sources; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterTable_sources(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitTable_sources(this);
		}
	}

	public final Table_sourcesContext table_sources() throws RecognitionException {
		Table_sourcesContext _localctx = new Table_sourcesContext(_ctx, getState());
		enterRule(_localctx, 786, RULE_table_sources);
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			setState(9405);
			table_source();
			setState(9410);
			_errHandler.sync(this);
			_alt = getInterpreter().adaptivePredict(_input,1339,_ctx);
			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
				if ( _alt==1 ) {
					{
					{
					setState(9406);
					match(COMMA);
					setState(9407);
					table_source();
					}
					} 
				}
				setState(9412);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,1339,_ctx);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Table_sourceContext extends ParserRuleContext {
		public Table_source_item_joinedContext table_source_item_joined() {
			return getRuleContext(Table_source_item_joinedContext.class,0);
		}
		public TerminalNode LR_BRACKET() { return getToken(TSqlParser.LR_BRACKET, 0); }
		public TerminalNode RR_BRACKET() { return getToken(TSqlParser.RR_BRACKET, 0); }
		public Table_sourceContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_table_source; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterTable_source(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitTable_source(this);
		}
	}

	public final Table_sourceContext table_source() throws RecognitionException {
		Table_sourceContext _localctx = new Table_sourceContext(_ctx, getState());
		enterRule(_localctx, 788, RULE_table_source);
		try {
			setState(9418);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,1340,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(9413);
				table_source_item_joined();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(9414);
				match(LR_BRACKET);
				setState(9415);
				table_source_item_joined();
				setState(9416);
				match(RR_BRACKET);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Table_source_item_joinedContext extends ParserRuleContext {
		public Table_source_itemContext table_source_item() {
			return getRuleContext(Table_source_itemContext.class,0);
		}
		public List join_part() {
			return getRuleContexts(Join_partContext.class);
		}
		public Join_partContext join_part(int i) {
			return getRuleContext(Join_partContext.class,i);
		}
		public Table_source_item_joinedContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_table_source_item_joined; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterTable_source_item_joined(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitTable_source_item_joined(this);
		}
	}

	public final Table_source_item_joinedContext table_source_item_joined() throws RecognitionException {
		Table_source_item_joinedContext _localctx = new Table_source_item_joinedContext(_ctx, getState());
		enterRule(_localctx, 790, RULE_table_source_item_joined);
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			setState(9420);
			table_source_item();
			setState(9424);
			_errHandler.sync(this);
			_alt = getInterpreter().adaptivePredict(_input,1341,_ctx);
			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
				if ( _alt==1 ) {
					{
					{
					setState(9421);
					join_part();
					}
					} 
				}
				setState(9426);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,1341,_ctx);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Table_source_itemContext extends ParserRuleContext {
		public Table_name_with_hintContext table_name_with_hint() {
			return getRuleContext(Table_name_with_hintContext.class,0);
		}
		public As_table_aliasContext as_table_alias() {
			return getRuleContext(As_table_aliasContext.class,0);
		}
		public Full_table_nameContext full_table_name() {
			return getRuleContext(Full_table_nameContext.class,0);
		}
		public Rowset_functionContext rowset_function() {
			return getRuleContext(Rowset_functionContext.class,0);
		}
		public Derived_tableContext derived_table() {
			return getRuleContext(Derived_tableContext.class,0);
		}
		public Column_alias_listContext column_alias_list() {
			return getRuleContext(Column_alias_listContext.class,0);
		}
		public Change_tableContext change_table() {
			return getRuleContext(Change_tableContext.class,0);
		}
		public Function_callContext function_call() {
			return getRuleContext(Function_callContext.class,0);
		}
		public TerminalNode LOCAL_ID() { return getToken(TSqlParser.LOCAL_ID, 0); }
		public TerminalNode DOT() { return getToken(TSqlParser.DOT, 0); }
		public Open_xmlContext open_xml() {
			return getRuleContext(Open_xmlContext.class,0);
		}
		public List COLON() { return getTokens(TSqlParser.COLON); }
		public TerminalNode COLON(int i) {
			return getToken(TSqlParser.COLON, i);
		}
		public Table_source_itemContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_table_source_item; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterTable_source_item(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitTable_source_item(this);
		}
	}

	public final Table_source_itemContext table_source_item() throws RecognitionException {
		Table_source_itemContext _localctx = new Table_source_itemContext(_ctx, getState());
		enterRule(_localctx, 792, RULE_table_source_item);
		try {
			setState(9473);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,1352,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(9427);
				table_name_with_hint();
				setState(9429);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1342,_ctx) ) {
				case 1:
					{
					setState(9428);
					as_table_alias();
					}
					break;
				}
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(9431);
				full_table_name();
				setState(9433);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1343,_ctx) ) {
				case 1:
					{
					setState(9432);
					as_table_alias();
					}
					break;
				}
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(9435);
				rowset_function();
				setState(9437);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1344,_ctx) ) {
				case 1:
					{
					setState(9436);
					as_table_alias();
					}
					break;
				}
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(9439);
				derived_table();
				setState(9444);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1346,_ctx) ) {
				case 1:
					{
					setState(9440);
					as_table_alias();
					setState(9442);
					_errHandler.sync(this);
					switch ( getInterpreter().adaptivePredict(_input,1345,_ctx) ) {
					case 1:
						{
						setState(9441);
						column_alias_list();
						}
						break;
					}
					}
					break;
				}
				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(9446);
				change_table();
				setState(9447);
				as_table_alias();
				}
				break;
			case 6:
				enterOuterAlt(_localctx, 6);
				{
				setState(9449);
				function_call();
				setState(9451);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1347,_ctx) ) {
				case 1:
					{
					setState(9450);
					as_table_alias();
					}
					break;
				}
				}
				break;
			case 7:
				enterOuterAlt(_localctx, 7);
				{
				setState(9453);
				match(LOCAL_ID);
				setState(9455);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1348,_ctx) ) {
				case 1:
					{
					setState(9454);
					as_table_alias();
					}
					break;
				}
				}
				break;
			case 8:
				enterOuterAlt(_localctx, 8);
				{
				setState(9457);
				match(LOCAL_ID);
				setState(9458);
				match(DOT);
				setState(9459);
				function_call();
				setState(9464);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1350,_ctx) ) {
				case 1:
					{
					setState(9460);
					as_table_alias();
					setState(9462);
					_errHandler.sync(this);
					switch ( getInterpreter().adaptivePredict(_input,1349,_ctx) ) {
					case 1:
						{
						setState(9461);
						column_alias_list();
						}
						break;
					}
					}
					break;
				}
				}
				break;
			case 9:
				enterOuterAlt(_localctx, 9);
				{
				setState(9466);
				open_xml();
				}
				break;
			case 10:
				enterOuterAlt(_localctx, 10);
				{
				setState(9467);
				match(COLON);
				setState(9468);
				match(COLON);
				setState(9469);
				function_call();
				setState(9471);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1351,_ctx) ) {
				case 1:
					{
					setState(9470);
					as_table_alias();
					}
					break;
				}
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Open_xmlContext extends ParserRuleContext {
		public TerminalNode OPENXML() { return getToken(TSqlParser.OPENXML, 0); }
		public List LR_BRACKET() { return getTokens(TSqlParser.LR_BRACKET); }
		public TerminalNode LR_BRACKET(int i) {
			return getToken(TSqlParser.LR_BRACKET, i);
		}
		public List expression() {
			return getRuleContexts(ExpressionContext.class);
		}
		public ExpressionContext expression(int i) {
			return getRuleContext(ExpressionContext.class,i);
		}
		public List COMMA() { return getTokens(TSqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(TSqlParser.COMMA, i);
		}
		public List RR_BRACKET() { return getTokens(TSqlParser.RR_BRACKET); }
		public TerminalNode RR_BRACKET(int i) {
			return getToken(TSqlParser.RR_BRACKET, i);
		}
		public TerminalNode WITH() { return getToken(TSqlParser.WITH, 0); }
		public Schema_declarationContext schema_declaration() {
			return getRuleContext(Schema_declarationContext.class,0);
		}
		public Open_xmlContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_open_xml; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterOpen_xml(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitOpen_xml(this);
		}
	}

	public final Open_xmlContext open_xml() throws RecognitionException {
		Open_xmlContext _localctx = new Open_xmlContext(_ctx, getState());
		enterRule(_localctx, 794, RULE_open_xml);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(9475);
			match(OPENXML);
			setState(9476);
			match(LR_BRACKET);
			setState(9477);
			expression(0);
			setState(9478);
			match(COMMA);
			setState(9479);
			expression(0);
			setState(9482);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==COMMA) {
				{
				setState(9480);
				match(COMMA);
				setState(9481);
				expression(0);
				}
			}

			setState(9484);
			match(RR_BRACKET);
			setState(9490);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,1354,_ctx) ) {
			case 1:
				{
				setState(9485);
				match(WITH);
				setState(9486);
				match(LR_BRACKET);
				setState(9487);
				schema_declaration();
				setState(9488);
				match(RR_BRACKET);
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Schema_declarationContext extends ParserRuleContext {
		public List column_declaration() {
			return getRuleContexts(Column_declarationContext.class);
		}
		public Column_declarationContext column_declaration(int i) {
			return getRuleContext(Column_declarationContext.class,i);
		}
		public List COMMA() { return getTokens(TSqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(TSqlParser.COMMA, i);
		}
		public Schema_declarationContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_schema_declaration; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterSchema_declaration(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitSchema_declaration(this);
		}
	}

	public final Schema_declarationContext schema_declaration() throws RecognitionException {
		Schema_declarationContext _localctx = new Schema_declarationContext(_ctx, getState());
		enterRule(_localctx, 796, RULE_schema_declaration);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(9492);
			column_declaration();
			setState(9497);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA) {
				{
				{
				setState(9493);
				match(COMMA);
				setState(9494);
				column_declaration();
				}
				}
				setState(9499);
				_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 Column_declarationContext extends ParserRuleContext {
		public TerminalNode ID() { return getToken(TSqlParser.ID, 0); }
		public Data_typeContext data_type() {
			return getRuleContext(Data_typeContext.class,0);
		}
		public TerminalNode STRING() { return getToken(TSqlParser.STRING, 0); }
		public Column_declarationContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_column_declaration; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterColumn_declaration(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitColumn_declaration(this);
		}
	}

	public final Column_declarationContext column_declaration() throws RecognitionException {
		Column_declarationContext _localctx = new Column_declarationContext(_ctx, getState());
		enterRule(_localctx, 798, RULE_column_declaration);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(9500);
			match(ID);
			setState(9501);
			data_type();
			setState(9503);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==STRING) {
				{
				setState(9502);
				match(STRING);
				}
			}

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

	public static class Change_tableContext extends ParserRuleContext {
		public TerminalNode CHANGETABLE() { return getToken(TSqlParser.CHANGETABLE, 0); }
		public TerminalNode LR_BRACKET() { return getToken(TSqlParser.LR_BRACKET, 0); }
		public TerminalNode CHANGES() { return getToken(TSqlParser.CHANGES, 0); }
		public Table_nameContext table_name() {
			return getRuleContext(Table_nameContext.class,0);
		}
		public TerminalNode COMMA() { return getToken(TSqlParser.COMMA, 0); }
		public TerminalNode RR_BRACKET() { return getToken(TSqlParser.RR_BRACKET, 0); }
		public TerminalNode NULL() { return getToken(TSqlParser.NULL, 0); }
		public TerminalNode DECIMAL() { return getToken(TSqlParser.DECIMAL, 0); }
		public TerminalNode LOCAL_ID() { return getToken(TSqlParser.LOCAL_ID, 0); }
		public Change_tableContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_change_table; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterChange_table(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitChange_table(this);
		}
	}

	public final Change_tableContext change_table() throws RecognitionException {
		Change_tableContext _localctx = new Change_tableContext(_ctx, getState());
		enterRule(_localctx, 800, RULE_change_table);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(9505);
			match(CHANGETABLE);
			setState(9506);
			match(LR_BRACKET);
			setState(9507);
			match(CHANGES);
			setState(9508);
			table_name();
			setState(9509);
			match(COMMA);
			setState(9510);
			_la = _input.LA(1);
			if ( !(_la==NULL || _la==LOCAL_ID || _la==DECIMAL) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			setState(9511);
			match(RR_BRACKET);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Join_partContext extends ParserRuleContext {
		public Token join_type;
		public Token join_hint;
		public TerminalNode JOIN() { return getToken(TSqlParser.JOIN, 0); }
		public Table_sourceContext table_source() {
			return getRuleContext(Table_sourceContext.class,0);
		}
		public TerminalNode ON() { return getToken(TSqlParser.ON, 0); }
		public Search_conditionContext search_condition() {
			return getRuleContext(Search_conditionContext.class,0);
		}
		public TerminalNode LEFT() { return getToken(TSqlParser.LEFT, 0); }
		public TerminalNode RIGHT() { return getToken(TSqlParser.RIGHT, 0); }
		public TerminalNode FULL() { return getToken(TSqlParser.FULL, 0); }
		public TerminalNode INNER() { return getToken(TSqlParser.INNER, 0); }
		public TerminalNode OUTER() { return getToken(TSqlParser.OUTER, 0); }
		public TerminalNode LOOP() { return getToken(TSqlParser.LOOP, 0); }
		public TerminalNode HASH() { return getToken(TSqlParser.HASH, 0); }
		public TerminalNode MERGE() { return getToken(TSqlParser.MERGE, 0); }
		public TerminalNode REMOTE() { return getToken(TSqlParser.REMOTE, 0); }
		public TerminalNode CROSS() { return getToken(TSqlParser.CROSS, 0); }
		public TerminalNode APPLY() { return getToken(TSqlParser.APPLY, 0); }
		public TerminalNode PIVOT() { return getToken(TSqlParser.PIVOT, 0); }
		public Pivot_clauseContext pivot_clause() {
			return getRuleContext(Pivot_clauseContext.class,0);
		}
		public As_table_aliasContext as_table_alias() {
			return getRuleContext(As_table_aliasContext.class,0);
		}
		public TerminalNode UNPIVOT() { return getToken(TSqlParser.UNPIVOT, 0); }
		public Unpivot_clauseContext unpivot_clause() {
			return getRuleContext(Unpivot_clauseContext.class,0);
		}
		public Join_partContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_join_part; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterJoin_part(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitJoin_part(this);
		}
	}

	public final Join_partContext join_part() throws RecognitionException {
		Join_partContext _localctx = new Join_partContext(_ctx, getState());
		enterRule(_localctx, 802, RULE_join_part);
		int _la;
		try {
			setState(9547);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,1361,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(9520);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case INNER:
				case JOIN:
				case MERGE:
				case HASH:
				case LOOP:
				case REMOTE:
					{
					setState(9514);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==INNER) {
						{
						setState(9513);
						match(INNER);
						}
					}

					}
					break;
				case FULL:
				case LEFT:
				case RIGHT:
					{
					setState(9516);
					((Join_partContext)_localctx).join_type = _input.LT(1);
					_la = _input.LA(1);
					if ( !(_la==FULL || _la==LEFT || _la==RIGHT) ) {
						((Join_partContext)_localctx).join_type = (Token)_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					setState(9518);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==OUTER) {
						{
						setState(9517);
						match(OUTER);
						}
					}

					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				setState(9523);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==MERGE || _la==HASH || _la==LOOP || _la==REMOTE) {
					{
					setState(9522);
					((Join_partContext)_localctx).join_hint = _input.LT(1);
					_la = _input.LA(1);
					if ( !(_la==MERGE || _la==HASH || _la==LOOP || _la==REMOTE) ) {
						((Join_partContext)_localctx).join_hint = (Token)_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					}
				}

				setState(9525);
				match(JOIN);
				setState(9526);
				table_source();
				setState(9527);
				match(ON);
				setState(9528);
				search_condition();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(9530);
				match(CROSS);
				setState(9531);
				match(JOIN);
				setState(9532);
				table_source();
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(9533);
				match(CROSS);
				setState(9534);
				match(APPLY);
				setState(9535);
				table_source();
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(9536);
				match(OUTER);
				setState(9537);
				match(APPLY);
				setState(9538);
				table_source();
				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(9539);
				match(PIVOT);
				setState(9540);
				pivot_clause();
				setState(9541);
				as_table_alias();
				}
				break;
			case 6:
				enterOuterAlt(_localctx, 6);
				{
				setState(9543);
				match(UNPIVOT);
				setState(9544);
				unpivot_clause();
				setState(9545);
				as_table_alias();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Pivot_clauseContext extends ParserRuleContext {
		public TerminalNode LR_BRACKET() { return getToken(TSqlParser.LR_BRACKET, 0); }
		public Aggregate_windowed_functionContext aggregate_windowed_function() {
			return getRuleContext(Aggregate_windowed_functionContext.class,0);
		}
		public TerminalNode FOR() { return getToken(TSqlParser.FOR, 0); }
		public Full_column_nameContext full_column_name() {
			return getRuleContext(Full_column_nameContext.class,0);
		}
		public TerminalNode IN() { return getToken(TSqlParser.IN, 0); }
		public Column_alias_listContext column_alias_list() {
			return getRuleContext(Column_alias_listContext.class,0);
		}
		public TerminalNode RR_BRACKET() { return getToken(TSqlParser.RR_BRACKET, 0); }
		public Pivot_clauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_pivot_clause; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterPivot_clause(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitPivot_clause(this);
		}
	}

	public final Pivot_clauseContext pivot_clause() throws RecognitionException {
		Pivot_clauseContext _localctx = new Pivot_clauseContext(_ctx, getState());
		enterRule(_localctx, 804, RULE_pivot_clause);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(9549);
			match(LR_BRACKET);
			setState(9550);
			aggregate_windowed_function();
			setState(9551);
			match(FOR);
			setState(9552);
			full_column_name();
			setState(9553);
			match(IN);
			setState(9554);
			column_alias_list();
			setState(9555);
			match(RR_BRACKET);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Unpivot_clauseContext extends ParserRuleContext {
		public List LR_BRACKET() { return getTokens(TSqlParser.LR_BRACKET); }
		public TerminalNode LR_BRACKET(int i) {
			return getToken(TSqlParser.LR_BRACKET, i);
		}
		public ExpressionContext expression() {
			return getRuleContext(ExpressionContext.class,0);
		}
		public TerminalNode FOR() { return getToken(TSqlParser.FOR, 0); }
		public Full_column_nameContext full_column_name() {
			return getRuleContext(Full_column_nameContext.class,0);
		}
		public TerminalNode IN() { return getToken(TSqlParser.IN, 0); }
		public Full_column_name_listContext full_column_name_list() {
			return getRuleContext(Full_column_name_listContext.class,0);
		}
		public List RR_BRACKET() { return getTokens(TSqlParser.RR_BRACKET); }
		public TerminalNode RR_BRACKET(int i) {
			return getToken(TSqlParser.RR_BRACKET, i);
		}
		public Unpivot_clauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_unpivot_clause; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterUnpivot_clause(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitUnpivot_clause(this);
		}
	}

	public final Unpivot_clauseContext unpivot_clause() throws RecognitionException {
		Unpivot_clauseContext _localctx = new Unpivot_clauseContext(_ctx, getState());
		enterRule(_localctx, 806, RULE_unpivot_clause);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(9557);
			match(LR_BRACKET);
			setState(9558);
			expression(0);
			setState(9559);
			match(FOR);
			setState(9560);
			full_column_name();
			setState(9561);
			match(IN);
			setState(9562);
			match(LR_BRACKET);
			setState(9563);
			full_column_name_list();
			setState(9564);
			match(RR_BRACKET);
			setState(9565);
			match(RR_BRACKET);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Full_column_name_listContext extends ParserRuleContext {
		public List full_column_name() {
			return getRuleContexts(Full_column_nameContext.class);
		}
		public Full_column_nameContext full_column_name(int i) {
			return getRuleContext(Full_column_nameContext.class,i);
		}
		public List COMMA() { return getTokens(TSqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(TSqlParser.COMMA, i);
		}
		public Full_column_name_listContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_full_column_name_list; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterFull_column_name_list(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitFull_column_name_list(this);
		}
	}

	public final Full_column_name_listContext full_column_name_list() throws RecognitionException {
		Full_column_name_listContext _localctx = new Full_column_name_listContext(_ctx, getState());
		enterRule(_localctx, 808, RULE_full_column_name_list);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(9567);
			full_column_name();
			setState(9572);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA) {
				{
				{
				setState(9568);
				match(COMMA);
				setState(9569);
				full_column_name();
				}
				}
				setState(9574);
				_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 Table_name_with_hintContext extends ParserRuleContext {
		public Table_nameContext table_name() {
			return getRuleContext(Table_nameContext.class,0);
		}
		public With_table_hintsContext with_table_hints() {
			return getRuleContext(With_table_hintsContext.class,0);
		}
		public Table_name_with_hintContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_table_name_with_hint; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterTable_name_with_hint(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitTable_name_with_hint(this);
		}
	}

	public final Table_name_with_hintContext table_name_with_hint() throws RecognitionException {
		Table_name_with_hintContext _localctx = new Table_name_with_hintContext(_ctx, getState());
		enterRule(_localctx, 810, RULE_table_name_with_hint);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(9575);
			table_name();
			setState(9577);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,1363,_ctx) ) {
			case 1:
				{
				setState(9576);
				with_table_hints();
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Rowset_functionContext extends ParserRuleContext {
		public Token provider_name;
		public Token connectionString;
		public Token sql;
		public Token data_file;
		public TerminalNode OPENROWSET() { return getToken(TSqlParser.OPENROWSET, 0); }
		public TerminalNode LR_BRACKET() { return getToken(TSqlParser.LR_BRACKET, 0); }
		public List COMMA() { return getTokens(TSqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(TSqlParser.COMMA, i);
		}
		public TerminalNode RR_BRACKET() { return getToken(TSqlParser.RR_BRACKET, 0); }
		public List STRING() { return getTokens(TSqlParser.STRING); }
		public TerminalNode STRING(int i) {
			return getToken(TSqlParser.STRING, i);
		}
		public TerminalNode BULK() { return getToken(TSqlParser.BULK, 0); }
		public List bulk_option() {
			return getRuleContexts(Bulk_optionContext.class);
		}
		public Bulk_optionContext bulk_option(int i) {
			return getRuleContext(Bulk_optionContext.class,i);
		}
		public IdContext id() {
			return getRuleContext(IdContext.class,0);
		}
		public Rowset_functionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_rowset_function; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterRowset_function(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitRowset_function(this);
		}
	}

	public final Rowset_functionContext rowset_function() throws RecognitionException {
		Rowset_functionContext _localctx = new Rowset_functionContext(_ctx, getState());
		enterRule(_localctx, 812, RULE_rowset_function);
		int _la;
		try {
			setState(9605);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,1366,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				{
				setState(9579);
				match(OPENROWSET);
				setState(9580);
				match(LR_BRACKET);
				setState(9581);
				((Rowset_functionContext)_localctx).provider_name = match(STRING);
				setState(9582);
				match(COMMA);
				setState(9583);
				((Rowset_functionContext)_localctx).connectionString = match(STRING);
				setState(9584);
				match(COMMA);
				setState(9585);
				((Rowset_functionContext)_localctx).sql = match(STRING);
				setState(9586);
				match(RR_BRACKET);
				}
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				{
				setState(9587);
				match(OPENROWSET);
				setState(9588);
				match(LR_BRACKET);
				setState(9589);
				match(BULK);
				setState(9590);
				((Rowset_functionContext)_localctx).data_file = match(STRING);
				setState(9591);
				match(COMMA);
				setState(9601);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1365,_ctx) ) {
				case 1:
					{
					setState(9592);
					bulk_option();
					setState(9597);
					_errHandler.sync(this);
					_la = _input.LA(1);
					while (_la==COMMA) {
						{
						{
						setState(9593);
						match(COMMA);
						setState(9594);
						bulk_option();
						}
						}
						setState(9599);
						_errHandler.sync(this);
						_la = _input.LA(1);
					}
					}
					break;
				case 2:
					{
					setState(9600);
					id();
					}
					break;
				}
				setState(9603);
				match(RR_BRACKET);
				}
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Bulk_optionContext extends ParserRuleContext {
		public Token bulk_option_value;
		public IdContext id() {
			return getRuleContext(IdContext.class,0);
		}
		public TerminalNode EQUAL() { return getToken(TSqlParser.EQUAL, 0); }
		public TerminalNode DECIMAL() { return getToken(TSqlParser.DECIMAL, 0); }
		public TerminalNode STRING() { return getToken(TSqlParser.STRING, 0); }
		public Bulk_optionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_bulk_option; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterBulk_option(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitBulk_option(this);
		}
	}

	public final Bulk_optionContext bulk_option() throws RecognitionException {
		Bulk_optionContext _localctx = new Bulk_optionContext(_ctx, getState());
		enterRule(_localctx, 814, RULE_bulk_option);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(9607);
			id();
			setState(9608);
			match(EQUAL);
			setState(9609);
			((Bulk_optionContext)_localctx).bulk_option_value = _input.LT(1);
			_la = _input.LA(1);
			if ( !(_la==DECIMAL || _la==STRING) ) {
				((Bulk_optionContext)_localctx).bulk_option_value = (Token)_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 Derived_tableContext extends ParserRuleContext {
		public SubqueryContext subquery() {
			return getRuleContext(SubqueryContext.class,0);
		}
		public TerminalNode LR_BRACKET() { return getToken(TSqlParser.LR_BRACKET, 0); }
		public TerminalNode RR_BRACKET() { return getToken(TSqlParser.RR_BRACKET, 0); }
		public Table_value_constructorContext table_value_constructor() {
			return getRuleContext(Table_value_constructorContext.class,0);
		}
		public Derived_tableContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_derived_table; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterDerived_table(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitDerived_table(this);
		}
	}

	public final Derived_tableContext derived_table() throws RecognitionException {
		Derived_tableContext _localctx = new Derived_tableContext(_ctx, getState());
		enterRule(_localctx, 816, RULE_derived_table);
		try {
			setState(9621);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,1367,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(9611);
				subquery();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(9612);
				match(LR_BRACKET);
				setState(9613);
				subquery();
				setState(9614);
				match(RR_BRACKET);
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(9616);
				table_value_constructor();
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(9617);
				match(LR_BRACKET);
				setState(9618);
				table_value_constructor();
				setState(9619);
				match(RR_BRACKET);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Function_callContext extends ParserRuleContext {
		public Function_callContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_function_call; }
	 
		public Function_callContext() { }
		public void copyFrom(Function_callContext ctx) {
			super.copyFrom(ctx);
		}
	}
	public static class CURRENT_USERContext extends Function_callContext {
		public TerminalNode CURRENT_USER() { return getToken(TSqlParser.CURRENT_USER, 0); }
		public CURRENT_USERContext(Function_callContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterCURRENT_USER(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitCURRENT_USER(this);
		}
	}
	public static class DATEADDContext extends Function_callContext {
		public TerminalNode DATEADD() { return getToken(TSqlParser.DATEADD, 0); }
		public TerminalNode LR_BRACKET() { return getToken(TSqlParser.LR_BRACKET, 0); }
		public TerminalNode ID() { return getToken(TSqlParser.ID, 0); }
		public List COMMA() { return getTokens(TSqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(TSqlParser.COMMA, i);
		}
		public List expression() {
			return getRuleContexts(ExpressionContext.class);
		}
		public ExpressionContext expression(int i) {
			return getRuleContext(ExpressionContext.class,i);
		}
		public TerminalNode RR_BRACKET() { return getToken(TSqlParser.RR_BRACKET, 0); }
		public DATEADDContext(Function_callContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterDATEADD(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitDATEADD(this);
		}
	}
	public static class CHECKSUMContext extends Function_callContext {
		public TerminalNode CHECKSUM() { return getToken(TSqlParser.CHECKSUM, 0); }
		public TerminalNode LR_BRACKET() { return getToken(TSqlParser.LR_BRACKET, 0); }
		public TerminalNode STAR() { return getToken(TSqlParser.STAR, 0); }
		public TerminalNode RR_BRACKET() { return getToken(TSqlParser.RR_BRACKET, 0); }
		public CHECKSUMContext(Function_callContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterCHECKSUM(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitCHECKSUM(this);
		}
	}
	public static class CURRENT_TIMESTAMPContext extends Function_callContext {
		public TerminalNode CURRENT_TIMESTAMP() { return getToken(TSqlParser.CURRENT_TIMESTAMP, 0); }
		public CURRENT_TIMESTAMPContext(Function_callContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterCURRENT_TIMESTAMP(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitCURRENT_TIMESTAMP(this);
		}
	}
	public static class BINARY_CHECKSUMContext extends Function_callContext {
		public TerminalNode BINARY_CHECKSUM() { return getToken(TSqlParser.BINARY_CHECKSUM, 0); }
		public TerminalNode LR_BRACKET() { return getToken(TSqlParser.LR_BRACKET, 0); }
		public TerminalNode STAR() { return getToken(TSqlParser.STAR, 0); }
		public TerminalNode RR_BRACKET() { return getToken(TSqlParser.RR_BRACKET, 0); }
		public BINARY_CHECKSUMContext(Function_callContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterBINARY_CHECKSUM(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitBINARY_CHECKSUM(this);
		}
	}
	public static class IFFContext extends Function_callContext {
		public TerminalNode IIF() { return getToken(TSqlParser.IIF, 0); }
		public TerminalNode LR_BRACKET() { return getToken(TSqlParser.LR_BRACKET, 0); }
		public Search_conditionContext search_condition() {
			return getRuleContext(Search_conditionContext.class,0);
		}
		public List COMMA() { return getTokens(TSqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(TSqlParser.COMMA, i);
		}
		public List expression() {
			return getRuleContexts(ExpressionContext.class);
		}
		public ExpressionContext expression(int i) {
			return getRuleContext(ExpressionContext.class,i);
		}
		public TerminalNode RR_BRACKET() { return getToken(TSqlParser.RR_BRACKET, 0); }
		public IFFContext(Function_callContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterIFF(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitIFF(this);
		}
	}
	public static class SYSTEM_USERContext extends Function_callContext {
		public TerminalNode SYSTEM_USER() { return getToken(TSqlParser.SYSTEM_USER, 0); }
		public SYSTEM_USERContext(Function_callContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterSYSTEM_USER(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitSYSTEM_USER(this);
		}
	}
	public static class NULLIFContext extends Function_callContext {
		public TerminalNode NULLIF() { return getToken(TSqlParser.NULLIF, 0); }
		public TerminalNode LR_BRACKET() { return getToken(TSqlParser.LR_BRACKET, 0); }
		public List expression() {
			return getRuleContexts(ExpressionContext.class);
		}
		public ExpressionContext expression(int i) {
			return getRuleContext(ExpressionContext.class,i);
		}
		public TerminalNode COMMA() { return getToken(TSqlParser.COMMA, 0); }
		public TerminalNode RR_BRACKET() { return getToken(TSqlParser.RR_BRACKET, 0); }
		public NULLIFContext(Function_callContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterNULLIF(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitNULLIF(this);
		}
	}
	public static class SESSION_USERContext extends Function_callContext {
		public TerminalNode SESSION_USER() { return getToken(TSqlParser.SESSION_USER, 0); }
		public SESSION_USERContext(Function_callContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterSESSION_USER(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitSESSION_USER(this);
		}
	}
	public static class CONVERTContext extends Function_callContext {
		public Data_typeContext convert_data_type;
		public ExpressionContext convert_expression;
		public ExpressionContext style;
		public TerminalNode CONVERT() { return getToken(TSqlParser.CONVERT, 0); }
		public TerminalNode LR_BRACKET() { return getToken(TSqlParser.LR_BRACKET, 0); }
		public List COMMA() { return getTokens(TSqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(TSqlParser.COMMA, i);
		}
		public TerminalNode RR_BRACKET() { return getToken(TSqlParser.RR_BRACKET, 0); }
		public Data_typeContext data_type() {
			return getRuleContext(Data_typeContext.class,0);
		}
		public List expression() {
			return getRuleContexts(ExpressionContext.class);
		}
		public ExpressionContext expression(int i) {
			return getRuleContext(ExpressionContext.class,i);
		}
		public CONVERTContext(Function_callContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterCONVERT(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitCONVERT(this);
		}
	}
	public static class XML_DATA_TYPE_FUNCContext extends Function_callContext {
		public Xml_data_type_methodsContext xml_data_type_methods() {
			return getRuleContext(Xml_data_type_methodsContext.class,0);
		}
		public XML_DATA_TYPE_FUNCContext(Function_callContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterXML_DATA_TYPE_FUNC(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitXML_DATA_TYPE_FUNC(this);
		}
	}
	public static class COALESCEContext extends Function_callContext {
		public TerminalNode COALESCE() { return getToken(TSqlParser.COALESCE, 0); }
		public TerminalNode LR_BRACKET() { return getToken(TSqlParser.LR_BRACKET, 0); }
		public Expression_listContext expression_list() {
			return getRuleContext(Expression_listContext.class,0);
		}
		public TerminalNode RR_BRACKET() { return getToken(TSqlParser.RR_BRACKET, 0); }
		public COALESCEContext(Function_callContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterCOALESCE(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitCOALESCE(this);
		}
	}
	public static class CASTContext extends Function_callContext {
		public TerminalNode CAST() { return getToken(TSqlParser.CAST, 0); }
		public TerminalNode LR_BRACKET() { return getToken(TSqlParser.LR_BRACKET, 0); }
		public ExpressionContext expression() {
			return getRuleContext(ExpressionContext.class,0);
		}
		public TerminalNode AS() { return getToken(TSqlParser.AS, 0); }
		public Data_typeContext data_type() {
			return getRuleContext(Data_typeContext.class,0);
		}
		public TerminalNode RR_BRACKET() { return getToken(TSqlParser.RR_BRACKET, 0); }
		public CASTContext(Function_callContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterCAST(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitCAST(this);
		}
	}
	public static class MIN_ACTIVE_ROWVERSIONContext extends Function_callContext {
		public TerminalNode MIN_ACTIVE_ROWVERSION() { return getToken(TSqlParser.MIN_ACTIVE_ROWVERSION, 0); }
		public MIN_ACTIVE_ROWVERSIONContext(Function_callContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterMIN_ACTIVE_ROWVERSION(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitMIN_ACTIVE_ROWVERSION(this);
		}
	}
	public static class SCALAR_FUNCTIONContext extends Function_callContext {
		public Scalar_function_nameContext scalar_function_name() {
			return getRuleContext(Scalar_function_nameContext.class,0);
		}
		public TerminalNode LR_BRACKET() { return getToken(TSqlParser.LR_BRACKET, 0); }
		public TerminalNode RR_BRACKET() { return getToken(TSqlParser.RR_BRACKET, 0); }
		public Expression_listContext expression_list() {
			return getRuleContext(Expression_listContext.class,0);
		}
		public SCALAR_FUNCTIONContext(Function_callContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterSCALAR_FUNCTION(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitSCALAR_FUNCTION(this);
		}
	}
	public static class DATEPARTContext extends Function_callContext {
		public TerminalNode DATEPART() { return getToken(TSqlParser.DATEPART, 0); }
		public TerminalNode LR_BRACKET() { return getToken(TSqlParser.LR_BRACKET, 0); }
		public TerminalNode ID() { return getToken(TSqlParser.ID, 0); }
		public TerminalNode COMMA() { return getToken(TSqlParser.COMMA, 0); }
		public ExpressionContext expression() {
			return getRuleContext(ExpressionContext.class,0);
		}
		public TerminalNode RR_BRACKET() { return getToken(TSqlParser.RR_BRACKET, 0); }
		public DATEPARTContext(Function_callContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterDATEPART(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitDATEPART(this);
		}
	}
	public static class STUFFContext extends Function_callContext {
		public TerminalNode STUFF() { return getToken(TSqlParser.STUFF, 0); }
		public TerminalNode LR_BRACKET() { return getToken(TSqlParser.LR_BRACKET, 0); }
		public List expression() {
			return getRuleContexts(ExpressionContext.class);
		}
		public ExpressionContext expression(int i) {
			return getRuleContext(ExpressionContext.class,i);
		}
		public List COMMA() { return getTokens(TSqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(TSqlParser.COMMA, i);
		}
		public List DECIMAL() { return getTokens(TSqlParser.DECIMAL); }
		public TerminalNode DECIMAL(int i) {
			return getToken(TSqlParser.DECIMAL, i);
		}
		public TerminalNode RR_BRACKET() { return getToken(TSqlParser.RR_BRACKET, 0); }
		public STUFFContext(Function_callContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterSTUFF(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitSTUFF(this);
		}
	}
	public static class AGGREGATE_WINDOWED_FUNCContext extends Function_callContext {
		public Aggregate_windowed_functionContext aggregate_windowed_function() {
			return getRuleContext(Aggregate_windowed_functionContext.class,0);
		}
		public AGGREGATE_WINDOWED_FUNCContext(Function_callContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterAGGREGATE_WINDOWED_FUNC(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitAGGREGATE_WINDOWED_FUNC(this);
		}
	}
	public static class IDENTITYContext extends Function_callContext {
		public Token seed;
		public Token increment;
		public TerminalNode IDENTITY() { return getToken(TSqlParser.IDENTITY, 0); }
		public TerminalNode LR_BRACKET() { return getToken(TSqlParser.LR_BRACKET, 0); }
		public Data_typeContext data_type() {
			return getRuleContext(Data_typeContext.class,0);
		}
		public TerminalNode RR_BRACKET() { return getToken(TSqlParser.RR_BRACKET, 0); }
		public List COMMA() { return getTokens(TSqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(TSqlParser.COMMA, i);
		}
		public List DECIMAL() { return getTokens(TSqlParser.DECIMAL); }
		public TerminalNode DECIMAL(int i) {
			return getToken(TSqlParser.DECIMAL, i);
		}
		public IDENTITYContext(Function_callContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterIDENTITY(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitIDENTITY(this);
		}
	}
	public static class RANKING_WINDOWED_FUNCContext extends Function_callContext {
		public Ranking_windowed_functionContext ranking_windowed_function() {
			return getRuleContext(Ranking_windowed_functionContext.class,0);
		}
		public RANKING_WINDOWED_FUNCContext(Function_callContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterRANKING_WINDOWED_FUNC(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitRANKING_WINDOWED_FUNC(this);
		}
	}
	public static class DATENAMEContext extends Function_callContext {
		public TerminalNode DATENAME() { return getToken(TSqlParser.DATENAME, 0); }
		public TerminalNode LR_BRACKET() { return getToken(TSqlParser.LR_BRACKET, 0); }
		public TerminalNode ID() { return getToken(TSqlParser.ID, 0); }
		public TerminalNode COMMA() { return getToken(TSqlParser.COMMA, 0); }
		public ExpressionContext expression() {
			return getRuleContext(ExpressionContext.class,0);
		}
		public TerminalNode RR_BRACKET() { return getToken(TSqlParser.RR_BRACKET, 0); }
		public DATENAMEContext(Function_callContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterDATENAME(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitDATENAME(this);
		}
	}
	public static class GETUTCDATEContext extends Function_callContext {
		public TerminalNode GETUTCDATE() { return getToken(TSqlParser.GETUTCDATE, 0); }
		public TerminalNode LR_BRACKET() { return getToken(TSqlParser.LR_BRACKET, 0); }
		public TerminalNode RR_BRACKET() { return getToken(TSqlParser.RR_BRACKET, 0); }
		public GETUTCDATEContext(Function_callContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterGETUTCDATE(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitGETUTCDATE(this);
		}
	}
	public static class ANALYTIC_WINDOWED_FUNCContext extends Function_callContext {
		public Analytic_windowed_functionContext analytic_windowed_function() {
			return getRuleContext(Analytic_windowed_functionContext.class,0);
		}
		public ANALYTIC_WINDOWED_FUNCContext(Function_callContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterANALYTIC_WINDOWED_FUNC(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitANALYTIC_WINDOWED_FUNC(this);
		}
	}
	public static class ISNULLContext extends Function_callContext {
		public TerminalNode ISNULL() { return getToken(TSqlParser.ISNULL, 0); }
		public TerminalNode LR_BRACKET() { return getToken(TSqlParser.LR_BRACKET, 0); }
		public List expression() {
			return getRuleContexts(ExpressionContext.class);
		}
		public ExpressionContext expression(int i) {
			return getRuleContext(ExpressionContext.class,i);
		}
		public TerminalNode COMMA() { return getToken(TSqlParser.COMMA, 0); }
		public TerminalNode RR_BRACKET() { return getToken(TSqlParser.RR_BRACKET, 0); }
		public ISNULLContext(Function_callContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterISNULL(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitISNULL(this);
		}
	}
	public static class DATEDIFFContext extends Function_callContext {
		public TerminalNode DATEDIFF() { return getToken(TSqlParser.DATEDIFF, 0); }
		public TerminalNode LR_BRACKET() { return getToken(TSqlParser.LR_BRACKET, 0); }
		public TerminalNode ID() { return getToken(TSqlParser.ID, 0); }
		public List COMMA() { return getTokens(TSqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(TSqlParser.COMMA, i);
		}
		public List expression() {
			return getRuleContexts(ExpressionContext.class);
		}
		public ExpressionContext expression(int i) {
			return getRuleContext(ExpressionContext.class,i);
		}
		public TerminalNode RR_BRACKET() { return getToken(TSqlParser.RR_BRACKET, 0); }
		public DATEDIFFContext(Function_callContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterDATEDIFF(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitDATEDIFF(this);
		}
	}
	public static class GETDATEContext extends Function_callContext {
		public TerminalNode GETDATE() { return getToken(TSqlParser.GETDATE, 0); }
		public TerminalNode LR_BRACKET() { return getToken(TSqlParser.LR_BRACKET, 0); }
		public TerminalNode RR_BRACKET() { return getToken(TSqlParser.RR_BRACKET, 0); }
		public GETDATEContext(Function_callContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterGETDATE(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitGETDATE(this);
		}
	}

	public final Function_callContext function_call() throws RecognitionException {
		Function_callContext _localctx = new Function_callContext(_ctx, getState());
		enterRule(_localctx, 818, RULE_function_call);
		int _la;
		try {
			setState(9755);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,1372,_ctx) ) {
			case 1:
				_localctx = new RANKING_WINDOWED_FUNCContext(_localctx);
				enterOuterAlt(_localctx, 1);
				{
				setState(9623);
				ranking_windowed_function();
				}
				break;
			case 2:
				_localctx = new AGGREGATE_WINDOWED_FUNCContext(_localctx);
				enterOuterAlt(_localctx, 2);
				{
				setState(9624);
				aggregate_windowed_function();
				}
				break;
			case 3:
				_localctx = new ANALYTIC_WINDOWED_FUNCContext(_localctx);
				enterOuterAlt(_localctx, 3);
				{
				setState(9625);
				analytic_windowed_function();
				}
				break;
			case 4:
				_localctx = new SCALAR_FUNCTIONContext(_localctx);
				enterOuterAlt(_localctx, 4);
				{
				setState(9626);
				scalar_function_name();
				setState(9627);
				match(LR_BRACKET);
				setState(9629);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << BLOCKING_HIERARCHY) | (1L << CALLED) | (1L << CASE) | (1L << COALESCE))) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & ((1L << (CONVERT - 69)) | (1L << (CURRENT_TIMESTAMP - 69)) | (1L << (CURRENT_USER - 69)) | (1L << (DATA_COMPRESSION - 69)) | (1L << (DEFAULT - 69)) | (1L << (EVENTDATA - 69)) | (1L << (FILENAME - 69)) | (1L << (FILLFACTOR - 69)))) != 0) || ((((_la - 133)) & ~0x3f) == 0 && ((1L << (_la - 133)) & ((1L << (FORCESEEK - 133)) | (1L << (IDENTITY - 133)) | (1L << (IIF - 133)) | (1L << (INIT - 133)) | (1L << (ISNULL - 133)) | (1L << (KEY - 133)) | (1L << (LEFT - 133)) | (1L << (MASTER - 133)) | (1L << (MAX_MEMORY - 133)))) != 0) || ((((_la - 222)) & ~0x3f) == 0 && ((1L << (_la - 222)) & ((1L << (NULL - 222)) | (1L << (NULLIF - 222)) | (1L << (OFFSETS - 222)) | (1L << (OVER - 222)) | (1L << (PAGE - 222)) | (1L << (PUBLIC - 222)) | (1L << (R - 222)) | (1L << (RAW - 222)) | (1L << (RETURN - 222)) | (1L << (RETURNS - 222)))) != 0) || ((((_la - 286)) & ~0x3f) == 0 && ((1L << (_la - 286)) & ((1L << (RIGHT - 286)) | (1L << (ROWCOUNT - 286)) | (1L << (SAFETY - 286)) | (1L << (SERVER - 286)) | (1L << (SESSION_USER - 286)) | (1L << (SID - 286)) | (1L << (SOURCE - 286)) | (1L << (STATE - 286)) | (1L << (START - 286)) | (1L << (SYSTEM_USER - 286)) | (1L << (TARGET - 286)))) != 0) || ((((_la - 384)) & ~0x3f) == 0 && ((1L << (_la - 384)) & ((1L << (ABSOLUTE - 384)) | (1L << (ACCENT_SENSITIVITY - 384)) | (1L << (ACTION - 384)) | (1L << (ACTIVATION - 384)) | (1L << (ACTIVE - 384)) | (1L << (ADDRESS - 384)) | (1L << (AES_128 - 384)) | (1L << (AES_192 - 384)) | (1L << (AES_256 - 384)) | (1L << (AFFINITY - 384)) | (1L << (AFTER - 384)) | (1L << (AGGREGATE - 384)) | (1L << (ALGORITHM - 384)) | (1L << (ALLOW_ENCRYPTED_VALUE_MODIFICATIONS - 384)) | (1L << (ALLOW_SNAPSHOT_ISOLATION - 384)) | (1L << (ALLOWED - 384)) | (1L << (ANSI_NULL_DEFAULT - 384)) | (1L << (ANSI_NULLS - 384)) | (1L << (ANSI_PADDING - 384)) | (1L << (ANSI_WARNINGS - 384)) | (1L << (APPLICATION_LOG - 384)) | (1L << (APPLY - 384)) | (1L << (ARITHABORT - 384)) | (1L << (ASSEMBLY - 384)) | (1L << (AUDIT - 384)) | (1L << (AUDIT_GUID - 384)) | (1L << (AUTO - 384)) | (1L << (AUTO_CLEANUP - 384)) | (1L << (AUTO_CLOSE - 384)) | (1L << (AUTO_CREATE_STATISTICS - 384)) | (1L << (AUTO_SHRINK - 384)) | (1L << (AUTO_UPDATE_STATISTICS - 384)) | (1L << (AUTO_UPDATE_STATISTICS_ASYNC - 384)) | (1L << (AVAILABILITY - 384)) | (1L << (AVG - 384)) | (1L << (BACKUP_PRIORITY - 384)) | (1L << (BEGIN_DIALOG - 384)) | (1L << (BIGINT - 384)) | (1L << (BINARY_BASE64 - 384)) | (1L << (BINARY_CHECKSUM - 384)) | (1L << (BINDING - 384)) | (1L << (BLOB_STORAGE - 384)) | (1L << (BROKER - 384)) | (1L << (BROKER_INSTANCE - 384)) | (1L << (BULK_LOGGED - 384)) | (1L << (CALLER - 384)) | (1L << (CAP_CPU_PERCENT - 384)) | (1L << (CAST - 384)) | (1L << (CATALOG - 384)) | (1L << (CATCH - 384)) | (1L << (CHANGE_RETENTION - 384)) | (1L << (CHANGE_TRACKING - 384)) | (1L << (CHECKSUM - 384)) | (1L << (CHECKSUM_AGG - 384)) | (1L << (CLEANUP - 384)) | (1L << (COLLECTION - 384)) | (1L << (COLUMN_MASTER_KEY - 384)) | (1L << (COMMITTED - 384)) | (1L << (COMPATIBILITY_LEVEL - 384)) | (1L << (CONCAT - 384)) | (1L << (CONCAT_NULL_YIELDS_NULL - 384)) | (1L << (CONTENT - 384)) | (1L << (CONTROL - 384)) | (1L << (COOKIE - 384)))) != 0) || ((((_la - 448)) & ~0x3f) == 0 && ((1L << (_la - 448)) & ((1L << (COUNT - 448)) | (1L << (COUNT_BIG - 448)) | (1L << (COUNTER - 448)) | (1L << (CPU - 448)) | (1L << (CREATE_NEW - 448)) | (1L << (CREATION_DISPOSITION - 448)) | (1L << (CREDENTIAL - 448)) | (1L << (CRYPTOGRAPHIC - 448)) | (1L << (CURSOR_CLOSE_ON_COMMIT - 448)) | (1L << (CURSOR_DEFAULT - 448)) | (1L << (DATE_CORRELATION_OPTIMIZATION - 448)) | (1L << (DATEADD - 448)) | (1L << (DATEDIFF - 448)) | (1L << (DATENAME - 448)) | (1L << (DATEPART - 448)) | (1L << (DAYS - 448)) | (1L << (DB_CHAINING - 448)) | (1L << (DB_FAILOVER - 448)) | (1L << (DECRYPTION - 448)) | (1L << (DEFAULT_DOUBLE_QUOTE - 448)) | (1L << (DEFAULT_FULLTEXT_LANGUAGE - 448)) | (1L << (DEFAULT_LANGUAGE - 448)) | (1L << (DELAY - 448)) | (1L << (DELAYED_DURABILITY - 448)) | (1L << (DELETED - 448)) | (1L << (DENSE_RANK - 448)) | (1L << (DEPENDENTS - 448)) | (1L << (DES - 448)) | (1L << (DESCRIPTION - 448)) | (1L << (DESX - 448)) | (1L << (DHCP - 448)) | (1L << (DIALOG - 448)) | (1L << (DIRECTORY_NAME - 448)) | (1L << (DISABLE - 448)) | (1L << (DISABLE_BROKER - 448)) | (1L << (DISABLED - 448)) | (1L << (DISK_DRIVE - 448)) | (1L << (DOCUMENT - 448)) | (1L << (DYNAMIC - 448)) | (1L << (EMERGENCY - 448)) | (1L << (EMPTY - 448)) | (1L << (ENABLE - 448)) | (1L << (ENABLE_BROKER - 448)) | (1L << (ENCRYPTED_VALUE - 448)) | (1L << (ENCRYPTION - 448)) | (1L << (ENDPOINT_URL - 448)) | (1L << (ERROR_BROKER_CONVERSATIONS - 448)) | (1L << (EXCLUSIVE - 448)) | (1L << (EXECUTABLE - 448)) | (1L << (EXIST - 448)) | (1L << (EXPAND - 448)) | (1L << (EXPIRY_DATE - 448)) | (1L << (EXPLICIT - 448)) | (1L << (FAIL_OPERATION - 448)) | (1L << (FAILOVER_MODE - 448)) | (1L << (FAILURE - 448)) | (1L << (FAILURE_CONDITION_LEVEL - 448)) | (1L << (FAST - 448)) | (1L << (FAST_FORWARD - 448)) | (1L << (FILEGROUP - 448)) | (1L << (FILEGROWTH - 448)) | (1L << (FILEPATH - 448)) | (1L << (FILESTREAM - 448)))) != 0) || ((((_la - 512)) & ~0x3f) == 0 && ((1L << (_la - 512)) & ((1L << (FILTER - 512)) | (1L << (FIRST - 512)) | (1L << (FIRST_VALUE - 512)) | (1L << (FOLLOWING - 512)) | (1L << (FORCE - 512)) | (1L << (FORCE_FAILOVER_ALLOW_DATA_LOSS - 512)) | (1L << (FORCED - 512)) | (1L << (FORMAT - 512)) | (1L << (FORWARD_ONLY - 512)) | (1L << (FULLSCAN - 512)) | (1L << (FULLTEXT - 512)) | (1L << (GB - 512)) | (1L << (GETDATE - 512)) | (1L << (GETUTCDATE - 512)) | (1L << (GLOBAL - 512)) | (1L << (GO - 512)) | (1L << (GROUP_MAX_REQUESTS - 512)) | (1L << (GROUPING - 512)) | (1L << (GROUPING_ID - 512)) | (1L << (HADR - 512)) | (1L << (HASH - 512)) | (1L << (HEALTH_CHECK_TIMEOUT - 512)) | (1L << (HIGH - 512)) | (1L << (HONOR_BROKER_PRIORITY - 512)) | (1L << (HOURS - 512)) | (1L << (IDENTITY_VALUE - 512)) | (1L << (IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX - 512)) | (1L << (IMMEDIATE - 512)) | (1L << (IMPERSONATE - 512)) | (1L << (IMPORTANCE - 512)) | (1L << (INCREMENTAL - 512)) | (1L << (INITIATOR - 512)) | (1L << (INPUT - 512)) | (1L << (INSENSITIVE - 512)) | (1L << (INSERTED - 512)) | (1L << (INT - 512)) | (1L << (IP - 512)) | (1L << (ISOLATION - 512)) | (1L << (KB - 512)) | (1L << (KEEP - 512)) | (1L << (KEEPFIXED - 512)) | (1L << (KEY_SOURCE - 512)) | (1L << (KEYS - 512)) | (1L << (KEYSET - 512)) | (1L << (LAG - 512)) | (1L << (LAST - 512)) | (1L << (LAST_VALUE - 512)) | (1L << (LEAD - 512)) | (1L << (LEVEL - 512)) | (1L << (LIST - 512)) | (1L << (LISTENER - 512)) | (1L << (LISTENER_URL - 512)) | (1L << (LOB_COMPACTION - 512)) | (1L << (LOCAL - 512)) | (1L << (LOCATION - 512)) | (1L << (LOCK - 512)) | (1L << (LOCK_ESCALATION - 512)) | (1L << (LOGIN - 512)) | (1L << (LOOP - 512)) | (1L << (LOW - 512)) | (1L << (MANUAL - 512)) | (1L << (MARK - 512)))) != 0) || ((((_la - 576)) & ~0x3f) == 0 && ((1L << (_la - 576)) & ((1L << (MATERIALIZED - 576)) | (1L << (MAX - 576)) | (1L << (MAX_CPU_PERCENT - 576)) | (1L << (MAX_DOP - 576)) | (1L << (MAX_FILES - 576)) | (1L << (MAX_IOPS_PER_VOLUME - 576)) | (1L << (MAX_MEMORY_PERCENT - 576)) | (1L << (MAX_PROCESSES - 576)) | (1L << (MAX_QUEUE_READERS - 576)) | (1L << (MAX_ROLLOVER_FILES - 576)) | (1L << (MAXDOP - 576)) | (1L << (MAXRECURSION - 576)) | (1L << (MAXSIZE - 576)) | (1L << (MB - 576)) | (1L << (MEDIUM - 576)) | (1L << (MEMORY_OPTIMIZED_DATA - 576)) | (1L << (MESSAGE - 576)) | (1L << (MIN - 576)) | (1L << (MIN_ACTIVE_ROWVERSION - 576)) | (1L << (MIN_CPU_PERCENT - 576)) | (1L << (MIN_IOPS_PER_VOLUME - 576)) | (1L << (MIN_MEMORY_PERCENT - 576)) | (1L << (MINUTES - 576)) | (1L << (MIRROR_ADDRESS - 576)) | (1L << (MIXED_PAGE_ALLOCATION - 576)) | (1L << (MODE - 576)) | (1L << (MODIFY - 576)) | (1L << (MOVE - 576)) | (1L << (MULTI_USER - 576)) | (1L << (NAME - 576)) | (1L << (NESTED_TRIGGERS - 576)) | (1L << (NEW_ACCOUNT - 576)) | (1L << (NEW_BROKER - 576)) | (1L << (NEW_PASSWORD - 576)) | (1L << (NEXT - 576)) | (1L << (NO - 576)) | (1L << (NO_TRUNCATE - 576)) | (1L << (NO_WAIT - 576)) | (1L << (NOCOUNT - 576)) | (1L << (NODES - 576)) | (1L << (NOEXPAND - 576)) | (1L << (NON_TRANSACTED_ACCESS - 576)) | (1L << (NORECOMPUTE - 576)) | (1L << (NORECOVERY - 576)) | (1L << (NOWAIT - 576)) | (1L << (NTILE - 576)) | (1L << (NUMANODE - 576)) | (1L << (NUMBER - 576)) | (1L << (NUMERIC_ROUNDABORT - 576)) | (1L << (OBJECT - 576)) | (1L << (OFFLINE - 576)) | (1L << (OFFSET - 576)) | (1L << (OLD_ACCOUNT - 576)) | (1L << (ONLINE - 576)) | (1L << (ONLY - 576)) | (1L << (OPEN_EXISTING - 576)) | (1L << (OPTIMISTIC - 576)) | (1L << (OPTIMIZE - 576)) | (1L << (OUT - 576)) | (1L << (OUTPUT - 576)) | (1L << (OWNER - 576)) | (1L << (PAGE_VERIFY - 576)) | (1L << (PARAMETERIZATION - 576)) | (1L << (PARTITION - 576)))) != 0) || ((((_la - 640)) & ~0x3f) == 0 && ((1L << (_la - 640)) & ((1L << (PARTITIONS - 640)) | (1L << (PARTNER - 640)) | (1L << (PATH - 640)) | (1L << (POISON_MESSAGE_HANDLING - 640)) | (1L << (POOL - 640)) | (1L << (PORT - 640)) | (1L << (PRECEDING - 640)) | (1L << (PRIMARY_ROLE - 640)) | (1L << (PRIOR - 640)) | (1L << (PRIORITY - 640)) | (1L << (PRIORITY_LEVEL - 640)) | (1L << (PRIVATE - 640)) | (1L << (PRIVATE_KEY - 640)) | (1L << (PRIVILEGES - 640)) | (1L << (PROCEDURE_NAME - 640)) | (1L << (PROPERTY - 640)) | (1L << (PROVIDER - 640)) | (1L << (PROVIDER_KEY_NAME - 640)) | (1L << (QUERY - 640)) | (1L << (QUEUE - 640)) | (1L << (QUEUE_DELAY - 640)) | (1L << (QUOTED_IDENTIFIER - 640)) | (1L << (RANGE - 640)) | (1L << (RANK - 640)) | (1L << (RC2 - 640)) | (1L << (RC4 - 640)) | (1L << (RC4_128 - 640)) | (1L << (READ_COMMITTED_SNAPSHOT - 640)) | (1L << (READ_ONLY - 640)) | (1L << (READ_ONLY_ROUTING_LIST - 640)) | (1L << (READ_WRITE - 640)) | (1L << (READONLY - 640)) | (1L << (REBUILD - 640)) | (1L << (RECEIVE - 640)) | (1L << (RECOMPILE - 640)) | (1L << (RECOVERY - 640)) | (1L << (RECURSIVE_TRIGGERS - 640)) | (1L << (RELATIVE - 640)) | (1L << (REMOTE - 640)) | (1L << (REMOTE_SERVICE_NAME - 640)) | (1L << (REMOVE - 640)) | (1L << (REORGANIZE - 640)) | (1L << (REPEATABLE - 640)) | (1L << (REPLICA - 640)) | (1L << (REQUEST_MAX_CPU_TIME_SEC - 640)) | (1L << (REQUEST_MAX_MEMORY_GRANT_PERCENT - 640)) | (1L << (REQUEST_MEMORY_GRANT_TIMEOUT_SEC - 640)) | (1L << (REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT - 640)) | (1L << (RESERVE_DISK_SPACE - 640)) | (1L << (RESOURCE - 640)) | (1L << (RESOURCE_MANAGER_LOCATION - 640)) | (1L << (RESTRICTED_USER - 640)) | (1L << (RETENTION - 640)) | (1L << (ROBUST - 640)) | (1L << (ROOT - 640)) | (1L << (ROUTE - 640)) | (1L << (ROW - 640)) | (1L << (ROW_NUMBER - 640)) | (1L << (ROWGUID - 640)) | (1L << (ROWS - 640)) | (1L << (SAMPLE - 640)) | (1L << (SCHEMABINDING - 640)) | (1L << (SCOPED - 640)) | (1L << (SCROLL - 640)))) != 0) || ((((_la - 704)) & ~0x3f) == 0 && ((1L << (_la - 704)) & ((1L << (SCROLL_LOCKS - 704)) | (1L << (SEARCH - 704)) | (1L << (SECONDARY - 704)) | (1L << (SECONDARY_ONLY - 704)) | (1L << (SECONDARY_ROLE - 704)) | (1L << (SECONDS - 704)) | (1L << (SECRET - 704)) | (1L << (SECURITY_LOG - 704)) | (1L << (SEEDING_MODE - 704)) | (1L << (SELF - 704)) | (1L << (SEMI_SENSITIVE - 704)) | (1L << (SEND - 704)) | (1L << (SENT - 704)) | (1L << (SERIALIZABLE - 704)) | (1L << (SESSION_TIMEOUT - 704)) | (1L << (SETERROR - 704)) | (1L << (SHARE - 704)) | (1L << (SHOWPLAN - 704)) | (1L << (SIGNATURE - 704)) | (1L << (SIMPLE - 704)) | (1L << (SINGLE_USER - 704)) | (1L << (SIZE - 704)) | (1L << (SMALLINT - 704)) | (1L << (SNAPSHOT - 704)) | (1L << (SPATIAL_WINDOW_MAX_CELLS - 704)) | (1L << (STANDBY - 704)) | (1L << (START_DATE - 704)) | (1L << (STATIC - 704)) | (1L << (STATS_STREAM - 704)) | (1L << (STATUS - 704)) | (1L << (STDEV - 704)) | (1L << (STDEVP - 704)) | (1L << (STOPLIST - 704)) | (1L << (STUFF - 704)) | (1L << (SUBJECT - 704)) | (1L << (SUM - 704)) | (1L << (SUSPEND - 704)) | (1L << (SYMMETRIC - 704)) | (1L << (SYNCHRONOUS_COMMIT - 704)) | (1L << (SYNONYM - 704)) | (1L << (TAKE - 704)) | (1L << (TARGET_RECOVERY_TIME - 704)) | (1L << (TB - 704)) | (1L << (TEXTIMAGE_ON - 704)) | (1L << (THROW - 704)) | (1L << (TIES - 704)) | (1L << (TIME - 704)) | (1L << (TIMEOUT - 704)) | (1L << (TIMER - 704)) | (1L << (TINYINT - 704)) | (1L << (TORN_PAGE_DETECTION - 704)) | (1L << (TRANSFORM_NOISE_WORDS - 704)) | (1L << (TRIPLE_DES - 704)) | (1L << (TRIPLE_DES_3KEY - 704)) | (1L << (TRUSTWORTHY - 704)) | (1L << (TRY - 704)) | (1L << (TSQL - 704)) | (1L << (TWO_DIGIT_YEAR_CUTOFF - 704)) | (1L << (TYPE - 704)) | (1L << (TYPE_WARNING - 704)) | (1L << (UNBOUNDED - 704)) | (1L << (UNCOMMITTED - 704)) | (1L << (UNKNOWN - 704)) | (1L << (UNLIMITED - 704)))) != 0) || ((((_la - 768)) & ~0x3f) == 0 && ((1L << (_la - 768)) & ((1L << (USING - 768)) | (1L << (VALID_XML - 768)) | (1L << (VALIDATION - 768)) | (1L << (VALUE - 768)) | (1L << (VAR - 768)) | (1L << (VARP - 768)) | (1L << (VIEW_METADATA - 768)) | (1L << (VIEWS - 768)) | (1L << (WAIT - 768)) | (1L << (WELL_FORMED_XML - 768)) | (1L << (WORK - 768)) | (1L << (WORKLOAD - 768)) | (1L << (XML - 768)) | (1L << (XMLNAMESPACES - 768)) | (1L << (DOUBLE_QUOTE_ID - 768)) | (1L << (SQUARE_BRACKET_ID - 768)) | (1L << (LOCAL_ID - 768)) | (1L << (DECIMAL - 768)) | (1L << (ID - 768)) | (1L << (STRING - 768)) | (1L << (BINARY - 768)) | (1L << (FLOAT - 768)) | (1L << (REAL - 768)) | (1L << (DOLLAR - 768)) | (1L << (LR_BRACKET - 768)) | (1L << (PLUS - 768)) | (1L << (MINUS - 768)) | (1L << (BIT_NOT - 768)))) != 0)) {
					{
					setState(9628);
					expression_list();
					}
				}

				setState(9631);
				match(RR_BRACKET);
				}
				break;
			case 5:
				_localctx = new BINARY_CHECKSUMContext(_localctx);
				enterOuterAlt(_localctx, 5);
				{
				setState(9633);
				match(BINARY_CHECKSUM);
				setState(9634);
				match(LR_BRACKET);
				setState(9635);
				match(STAR);
				setState(9636);
				match(RR_BRACKET);
				}
				break;
			case 6:
				_localctx = new CASTContext(_localctx);
				enterOuterAlt(_localctx, 6);
				{
				setState(9637);
				match(CAST);
				setState(9638);
				match(LR_BRACKET);
				setState(9639);
				expression(0);
				setState(9640);
				match(AS);
				setState(9641);
				data_type();
				setState(9642);
				match(RR_BRACKET);
				}
				break;
			case 7:
				_localctx = new CONVERTContext(_localctx);
				enterOuterAlt(_localctx, 7);
				{
				setState(9644);
				match(CONVERT);
				setState(9645);
				match(LR_BRACKET);
				setState(9646);
				((CONVERTContext)_localctx).convert_data_type = data_type();
				setState(9647);
				match(COMMA);
				setState(9648);
				((CONVERTContext)_localctx).convert_expression = expression(0);
				setState(9651);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==COMMA) {
					{
					setState(9649);
					match(COMMA);
					setState(9650);
					((CONVERTContext)_localctx).style = expression(0);
					}
				}

				setState(9653);
				match(RR_BRACKET);
				}
				break;
			case 8:
				_localctx = new CHECKSUMContext(_localctx);
				enterOuterAlt(_localctx, 8);
				{
				setState(9655);
				match(CHECKSUM);
				setState(9656);
				match(LR_BRACKET);
				setState(9657);
				match(STAR);
				setState(9658);
				match(RR_BRACKET);
				}
				break;
			case 9:
				_localctx = new COALESCEContext(_localctx);
				enterOuterAlt(_localctx, 9);
				{
				setState(9659);
				match(COALESCE);
				setState(9660);
				match(LR_BRACKET);
				setState(9661);
				expression_list();
				setState(9662);
				match(RR_BRACKET);
				}
				break;
			case 10:
				_localctx = new CURRENT_TIMESTAMPContext(_localctx);
				enterOuterAlt(_localctx, 10);
				{
				setState(9664);
				match(CURRENT_TIMESTAMP);
				}
				break;
			case 11:
				_localctx = new CURRENT_USERContext(_localctx);
				enterOuterAlt(_localctx, 11);
				{
				setState(9665);
				match(CURRENT_USER);
				}
				break;
			case 12:
				_localctx = new DATEADDContext(_localctx);
				enterOuterAlt(_localctx, 12);
				{
				setState(9666);
				match(DATEADD);
				setState(9667);
				match(LR_BRACKET);
				setState(9668);
				match(ID);
				setState(9669);
				match(COMMA);
				setState(9670);
				expression(0);
				setState(9671);
				match(COMMA);
				setState(9672);
				expression(0);
				setState(9673);
				match(RR_BRACKET);
				}
				break;
			case 13:
				_localctx = new DATEDIFFContext(_localctx);
				enterOuterAlt(_localctx, 13);
				{
				setState(9675);
				match(DATEDIFF);
				setState(9676);
				match(LR_BRACKET);
				setState(9677);
				match(ID);
				setState(9678);
				match(COMMA);
				setState(9679);
				expression(0);
				setState(9680);
				match(COMMA);
				setState(9681);
				expression(0);
				setState(9682);
				match(RR_BRACKET);
				}
				break;
			case 14:
				_localctx = new DATENAMEContext(_localctx);
				enterOuterAlt(_localctx, 14);
				{
				setState(9684);
				match(DATENAME);
				setState(9685);
				match(LR_BRACKET);
				setState(9686);
				match(ID);
				setState(9687);
				match(COMMA);
				setState(9688);
				expression(0);
				setState(9689);
				match(RR_BRACKET);
				}
				break;
			case 15:
				_localctx = new DATEPARTContext(_localctx);
				enterOuterAlt(_localctx, 15);
				{
				setState(9691);
				match(DATEPART);
				setState(9692);
				match(LR_BRACKET);
				setState(9693);
				match(ID);
				setState(9694);
				match(COMMA);
				setState(9695);
				expression(0);
				setState(9696);
				match(RR_BRACKET);
				}
				break;
			case 16:
				_localctx = new GETDATEContext(_localctx);
				enterOuterAlt(_localctx, 16);
				{
				setState(9698);
				match(GETDATE);
				setState(9699);
				match(LR_BRACKET);
				setState(9700);
				match(RR_BRACKET);
				}
				break;
			case 17:
				_localctx = new GETUTCDATEContext(_localctx);
				enterOuterAlt(_localctx, 17);
				{
				setState(9701);
				match(GETUTCDATE);
				setState(9702);
				match(LR_BRACKET);
				setState(9703);
				match(RR_BRACKET);
				}
				break;
			case 18:
				_localctx = new IDENTITYContext(_localctx);
				enterOuterAlt(_localctx, 18);
				{
				setState(9704);
				match(IDENTITY);
				setState(9705);
				match(LR_BRACKET);
				setState(9706);
				data_type();
				setState(9709);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1370,_ctx) ) {
				case 1:
					{
					setState(9707);
					match(COMMA);
					setState(9708);
					((IDENTITYContext)_localctx).seed = match(DECIMAL);
					}
					break;
				}
				setState(9713);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==COMMA) {
					{
					setState(9711);
					match(COMMA);
					setState(9712);
					((IDENTITYContext)_localctx).increment = match(DECIMAL);
					}
				}

				setState(9715);
				match(RR_BRACKET);
				}
				break;
			case 19:
				_localctx = new MIN_ACTIVE_ROWVERSIONContext(_localctx);
				enterOuterAlt(_localctx, 19);
				{
				setState(9717);
				match(MIN_ACTIVE_ROWVERSION);
				}
				break;
			case 20:
				_localctx = new NULLIFContext(_localctx);
				enterOuterAlt(_localctx, 20);
				{
				setState(9718);
				match(NULLIF);
				setState(9719);
				match(LR_BRACKET);
				setState(9720);
				expression(0);
				setState(9721);
				match(COMMA);
				setState(9722);
				expression(0);
				setState(9723);
				match(RR_BRACKET);
				}
				break;
			case 21:
				_localctx = new STUFFContext(_localctx);
				enterOuterAlt(_localctx, 21);
				{
				setState(9725);
				match(STUFF);
				setState(9726);
				match(LR_BRACKET);
				setState(9727);
				expression(0);
				setState(9728);
				match(COMMA);
				setState(9729);
				match(DECIMAL);
				setState(9730);
				match(COMMA);
				setState(9731);
				match(DECIMAL);
				setState(9732);
				match(COMMA);
				setState(9733);
				expression(0);
				setState(9734);
				match(RR_BRACKET);
				}
				break;
			case 22:
				_localctx = new SESSION_USERContext(_localctx);
				enterOuterAlt(_localctx, 22);
				{
				setState(9736);
				match(SESSION_USER);
				}
				break;
			case 23:
				_localctx = new SYSTEM_USERContext(_localctx);
				enterOuterAlt(_localctx, 23);
				{
				setState(9737);
				match(SYSTEM_USER);
				}
				break;
			case 24:
				_localctx = new ISNULLContext(_localctx);
				enterOuterAlt(_localctx, 24);
				{
				setState(9738);
				match(ISNULL);
				setState(9739);
				match(LR_BRACKET);
				setState(9740);
				expression(0);
				setState(9741);
				match(COMMA);
				setState(9742);
				expression(0);
				setState(9743);
				match(RR_BRACKET);
				}
				break;
			case 25:
				_localctx = new XML_DATA_TYPE_FUNCContext(_localctx);
				enterOuterAlt(_localctx, 25);
				{
				setState(9745);
				xml_data_type_methods();
				}
				break;
			case 26:
				_localctx = new IFFContext(_localctx);
				enterOuterAlt(_localctx, 26);
				{
				setState(9746);
				match(IIF);
				setState(9747);
				match(LR_BRACKET);
				setState(9748);
				search_condition();
				setState(9749);
				match(COMMA);
				setState(9750);
				expression(0);
				setState(9751);
				match(COMMA);
				setState(9752);
				expression(0);
				setState(9753);
				match(RR_BRACKET);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Xml_data_type_methodsContext extends ParserRuleContext {
		public Value_methodContext value_method() {
			return getRuleContext(Value_methodContext.class,0);
		}
		public Query_methodContext query_method() {
			return getRuleContext(Query_methodContext.class,0);
		}
		public Exist_methodContext exist_method() {
			return getRuleContext(Exist_methodContext.class,0);
		}
		public Modify_methodContext modify_method() {
			return getRuleContext(Modify_methodContext.class,0);
		}
		public Nodes_methodContext nodes_method() {
			return getRuleContext(Nodes_methodContext.class,0);
		}
		public Xml_data_type_methodsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_xml_data_type_methods; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterXml_data_type_methods(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitXml_data_type_methods(this);
		}
	}

	public final Xml_data_type_methodsContext xml_data_type_methods() throws RecognitionException {
		Xml_data_type_methodsContext _localctx = new Xml_data_type_methodsContext(_ctx, getState());
		enterRule(_localctx, 820, RULE_xml_data_type_methods);
		try {
			setState(9762);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,1373,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(9757);
				value_method();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(9758);
				query_method();
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(9759);
				exist_method();
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(9760);
				modify_method();
				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(9761);
				nodes_method();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Value_methodContext extends ParserRuleContext {
		public Token xquery;
		public Token sqltype;
		public List DOT() { return getTokens(TSqlParser.DOT); }
		public TerminalNode DOT(int i) {
			return getToken(TSqlParser.DOT, i);
		}
		public TerminalNode VALUE() { return getToken(TSqlParser.VALUE, 0); }
		public TerminalNode LR_BRACKET() { return getToken(TSqlParser.LR_BRACKET, 0); }
		public TerminalNode COMMA() { return getToken(TSqlParser.COMMA, 0); }
		public TerminalNode RR_BRACKET() { return getToken(TSqlParser.RR_BRACKET, 0); }
		public List STRING() { return getTokens(TSqlParser.STRING); }
		public TerminalNode STRING(int i) {
			return getToken(TSqlParser.STRING, i);
		}
		public TerminalNode LOCAL_ID() { return getToken(TSqlParser.LOCAL_ID, 0); }
		public TerminalNode ID() { return getToken(TSqlParser.ID, 0); }
		public TerminalNode EVENTDATA() { return getToken(TSqlParser.EVENTDATA, 0); }
		public Query_methodContext query_method() {
			return getRuleContext(Query_methodContext.class,0);
		}
		public TerminalNode ROW() { return getToken(TSqlParser.ROW, 0); }
		public TerminalNode PARAM_NODE() { return getToken(TSqlParser.PARAM_NODE, 0); }
		public Value_methodContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_value_method; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterValue_method(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitValue_method(this);
		}
	}

	public final Value_methodContext value_method() throws RecognitionException {
		Value_methodContext _localctx = new Value_methodContext(_ctx, getState());
		enterRule(_localctx, 822, RULE_value_method);
		try {
			setState(9807);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,1377,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(9768);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1374,_ctx) ) {
				case 1:
					{
					setState(9764);
					match(LOCAL_ID);
					}
					break;
				case 2:
					{
					setState(9765);
					match(ID);
					}
					break;
				case 3:
					{
					setState(9766);
					match(EVENTDATA);
					}
					break;
				case 4:
					{
					setState(9767);
					query_method();
					}
					break;
				}
				setState(9770);
				match(DOT);
				setState(9771);
				match(VALUE);
				setState(9772);
				match(LR_BRACKET);
				setState(9773);
				((Value_methodContext)_localctx).xquery = match(STRING);
				setState(9774);
				match(COMMA);
				setState(9775);
				((Value_methodContext)_localctx).sqltype = match(STRING);
				setState(9776);
				match(RR_BRACKET);
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(9781);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1375,_ctx) ) {
				case 1:
					{
					setState(9777);
					match(LOCAL_ID);
					}
					break;
				case 2:
					{
					setState(9778);
					match(ID);
					}
					break;
				case 3:
					{
					setState(9779);
					match(EVENTDATA);
					}
					break;
				case 4:
					{
					setState(9780);
					query_method();
					}
					break;
				}
				setState(9783);
				match(DOT);
				setState(9784);
				match(ROW);
				setState(9785);
				match(DOT);
				setState(9786);
				match(VALUE);
				setState(9787);
				match(LR_BRACKET);
				setState(9788);
				((Value_methodContext)_localctx).xquery = match(STRING);
				setState(9789);
				match(COMMA);
				setState(9790);
				((Value_methodContext)_localctx).sqltype = match(STRING);
				setState(9791);
				match(RR_BRACKET);
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(9796);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1376,_ctx) ) {
				case 1:
					{
					setState(9792);
					match(LOCAL_ID);
					}
					break;
				case 2:
					{
					setState(9793);
					match(ID);
					}
					break;
				case 3:
					{
					setState(9794);
					match(EVENTDATA);
					}
					break;
				case 4:
					{
					setState(9795);
					query_method();
					}
					break;
				}
				setState(9798);
				match(DOT);
				setState(9799);
				match(PARAM_NODE);
				setState(9800);
				match(DOT);
				setState(9801);
				match(VALUE);
				setState(9802);
				match(LR_BRACKET);
				setState(9803);
				((Value_methodContext)_localctx).xquery = match(STRING);
				setState(9804);
				match(COMMA);
				setState(9805);
				((Value_methodContext)_localctx).sqltype = match(STRING);
				setState(9806);
				match(RR_BRACKET);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Query_methodContext extends ParserRuleContext {
		public Token xquery;
		public List DOT() { return getTokens(TSqlParser.DOT); }
		public TerminalNode DOT(int i) {
			return getToken(TSqlParser.DOT, i);
		}
		public TerminalNode QUERY() { return getToken(TSqlParser.QUERY, 0); }
		public TerminalNode LR_BRACKET() { return getToken(TSqlParser.LR_BRACKET, 0); }
		public TerminalNode RR_BRACKET() { return getToken(TSqlParser.RR_BRACKET, 0); }
		public TerminalNode STRING() { return getToken(TSqlParser.STRING, 0); }
		public TerminalNode LOCAL_ID() { return getToken(TSqlParser.LOCAL_ID, 0); }
		public TerminalNode ID() { return getToken(TSqlParser.ID, 0); }
		public Full_table_nameContext full_table_name() {
			return getRuleContext(Full_table_nameContext.class,0);
		}
		public TerminalNode ROW() { return getToken(TSqlParser.ROW, 0); }
		public Query_methodContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_query_method; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterQuery_method(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitQuery_method(this);
		}
	}

	public final Query_methodContext query_method() throws RecognitionException {
		Query_methodContext _localctx = new Query_methodContext(_ctx, getState());
		enterRule(_localctx, 824, RULE_query_method);
		try {
			setState(9831);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,1380,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(9812);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1378,_ctx) ) {
				case 1:
					{
					setState(9809);
					match(LOCAL_ID);
					}
					break;
				case 2:
					{
					setState(9810);
					match(ID);
					}
					break;
				case 3:
					{
					setState(9811);
					full_table_name();
					}
					break;
				}
				setState(9814);
				match(DOT);
				setState(9815);
				match(QUERY);
				setState(9816);
				match(LR_BRACKET);
				setState(9817);
				((Query_methodContext)_localctx).xquery = match(STRING);
				setState(9818);
				match(RR_BRACKET);
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(9822);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1379,_ctx) ) {
				case 1:
					{
					setState(9819);
					match(LOCAL_ID);
					}
					break;
				case 2:
					{
					setState(9820);
					match(ID);
					}
					break;
				case 3:
					{
					setState(9821);
					full_table_name();
					}
					break;
				}
				setState(9824);
				match(DOT);
				setState(9825);
				match(ROW);
				setState(9826);
				match(DOT);
				setState(9827);
				match(QUERY);
				setState(9828);
				match(LR_BRACKET);
				setState(9829);
				((Query_methodContext)_localctx).xquery = match(STRING);
				setState(9830);
				match(RR_BRACKET);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Exist_methodContext extends ParserRuleContext {
		public Token xquery;
		public TerminalNode DOT() { return getToken(TSqlParser.DOT, 0); }
		public TerminalNode EXIST() { return getToken(TSqlParser.EXIST, 0); }
		public TerminalNode LR_BRACKET() { return getToken(TSqlParser.LR_BRACKET, 0); }
		public TerminalNode RR_BRACKET() { return getToken(TSqlParser.RR_BRACKET, 0); }
		public TerminalNode LOCAL_ID() { return getToken(TSqlParser.LOCAL_ID, 0); }
		public TerminalNode ID() { return getToken(TSqlParser.ID, 0); }
		public TerminalNode STRING() { return getToken(TSqlParser.STRING, 0); }
		public Exist_methodContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_exist_method; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterExist_method(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitExist_method(this);
		}
	}

	public final Exist_methodContext exist_method() throws RecognitionException {
		Exist_methodContext _localctx = new Exist_methodContext(_ctx, getState());
		enterRule(_localctx, 826, RULE_exist_method);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(9833);
			_la = _input.LA(1);
			if ( !(_la==LOCAL_ID || _la==ID) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			setState(9834);
			match(DOT);
			setState(9835);
			match(EXIST);
			setState(9836);
			match(LR_BRACKET);
			setState(9837);
			((Exist_methodContext)_localctx).xquery = match(STRING);
			setState(9838);
			match(RR_BRACKET);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Modify_methodContext extends ParserRuleContext {
		public Token xml_dml;
		public TerminalNode DOT() { return getToken(TSqlParser.DOT, 0); }
		public TerminalNode MODIFY() { return getToken(TSqlParser.MODIFY, 0); }
		public TerminalNode LR_BRACKET() { return getToken(TSqlParser.LR_BRACKET, 0); }
		public TerminalNode RR_BRACKET() { return getToken(TSqlParser.RR_BRACKET, 0); }
		public TerminalNode LOCAL_ID() { return getToken(TSqlParser.LOCAL_ID, 0); }
		public TerminalNode ID() { return getToken(TSqlParser.ID, 0); }
		public TerminalNode STRING() { return getToken(TSqlParser.STRING, 0); }
		public Modify_methodContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_modify_method; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterModify_method(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitModify_method(this);
		}
	}

	public final Modify_methodContext modify_method() throws RecognitionException {
		Modify_methodContext _localctx = new Modify_methodContext(_ctx, getState());
		enterRule(_localctx, 828, RULE_modify_method);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(9840);
			_la = _input.LA(1);
			if ( !(_la==LOCAL_ID || _la==ID) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			setState(9841);
			match(DOT);
			setState(9842);
			match(MODIFY);
			setState(9843);
			match(LR_BRACKET);
			setState(9844);
			((Modify_methodContext)_localctx).xml_dml = match(STRING);
			setState(9845);
			match(RR_BRACKET);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Nodes_methodContext extends ParserRuleContext {
		public Token xquery;
		public TerminalNode DOT() { return getToken(TSqlParser.DOT, 0); }
		public TerminalNode NODES() { return getToken(TSqlParser.NODES, 0); }
		public TerminalNode LR_BRACKET() { return getToken(TSqlParser.LR_BRACKET, 0); }
		public TerminalNode RR_BRACKET() { return getToken(TSqlParser.RR_BRACKET, 0); }
		public TerminalNode LOCAL_ID() { return getToken(TSqlParser.LOCAL_ID, 0); }
		public TerminalNode ID() { return getToken(TSqlParser.ID, 0); }
		public TerminalNode STRING() { return getToken(TSqlParser.STRING, 0); }
		public Nodes_methodContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_nodes_method; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterNodes_method(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitNodes_method(this);
		}
	}

	public final Nodes_methodContext nodes_method() throws RecognitionException {
		Nodes_methodContext _localctx = new Nodes_methodContext(_ctx, getState());
		enterRule(_localctx, 830, RULE_nodes_method);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(9847);
			_la = _input.LA(1);
			if ( !(_la==LOCAL_ID || _la==ID) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			setState(9848);
			match(DOT);
			setState(9849);
			match(NODES);
			setState(9850);
			match(LR_BRACKET);
			setState(9851);
			((Nodes_methodContext)_localctx).xquery = match(STRING);
			setState(9852);
			match(RR_BRACKET);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Switch_sectionContext extends ParserRuleContext {
		public TerminalNode WHEN() { return getToken(TSqlParser.WHEN, 0); }
		public List expression() {
			return getRuleContexts(ExpressionContext.class);
		}
		public ExpressionContext expression(int i) {
			return getRuleContext(ExpressionContext.class,i);
		}
		public TerminalNode THEN() { return getToken(TSqlParser.THEN, 0); }
		public Switch_sectionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_switch_section; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterSwitch_section(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitSwitch_section(this);
		}
	}

	public final Switch_sectionContext switch_section() throws RecognitionException {
		Switch_sectionContext _localctx = new Switch_sectionContext(_ctx, getState());
		enterRule(_localctx, 832, RULE_switch_section);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(9854);
			match(WHEN);
			setState(9855);
			expression(0);
			setState(9856);
			match(THEN);
			setState(9857);
			expression(0);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Switch_search_condition_sectionContext extends ParserRuleContext {
		public TerminalNode WHEN() { return getToken(TSqlParser.WHEN, 0); }
		public Search_conditionContext search_condition() {
			return getRuleContext(Search_conditionContext.class,0);
		}
		public TerminalNode THEN() { return getToken(TSqlParser.THEN, 0); }
		public ExpressionContext expression() {
			return getRuleContext(ExpressionContext.class,0);
		}
		public Switch_search_condition_sectionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_switch_search_condition_section; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterSwitch_search_condition_section(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitSwitch_search_condition_section(this);
		}
	}

	public final Switch_search_condition_sectionContext switch_search_condition_section() throws RecognitionException {
		Switch_search_condition_sectionContext _localctx = new Switch_search_condition_sectionContext(_ctx, getState());
		enterRule(_localctx, 834, RULE_switch_search_condition_section);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(9859);
			match(WHEN);
			setState(9860);
			search_condition();
			setState(9861);
			match(THEN);
			setState(9862);
			expression(0);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class As_column_aliasContext extends ParserRuleContext {
		public Column_aliasContext column_alias() {
			return getRuleContext(Column_aliasContext.class,0);
		}
		public TerminalNode AS() { return getToken(TSqlParser.AS, 0); }
		public As_column_aliasContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_as_column_alias; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterAs_column_alias(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitAs_column_alias(this);
		}
	}

	public final As_column_aliasContext as_column_alias() throws RecognitionException {
		As_column_aliasContext _localctx = new As_column_aliasContext(_ctx, getState());
		enterRule(_localctx, 836, RULE_as_column_alias);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(9865);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==AS) {
				{
				setState(9864);
				match(AS);
				}
			}

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

	public static class As_table_aliasContext extends ParserRuleContext {
		public Table_aliasContext table_alias() {
			return getRuleContext(Table_aliasContext.class,0);
		}
		public TerminalNode AS() { return getToken(TSqlParser.AS, 0); }
		public As_table_aliasContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_as_table_alias; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterAs_table_alias(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitAs_table_alias(this);
		}
	}

	public final As_table_aliasContext as_table_alias() throws RecognitionException {
		As_table_aliasContext _localctx = new As_table_aliasContext(_ctx, getState());
		enterRule(_localctx, 838, RULE_as_table_alias);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(9870);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==AS) {
				{
				setState(9869);
				match(AS);
				}
			}

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

	public static class Table_aliasContext extends ParserRuleContext {
		public IdContext id() {
			return getRuleContext(IdContext.class,0);
		}
		public With_table_hintsContext with_table_hints() {
			return getRuleContext(With_table_hintsContext.class,0);
		}
		public Table_aliasContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_table_alias; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterTable_alias(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitTable_alias(this);
		}
	}

	public final Table_aliasContext table_alias() throws RecognitionException {
		Table_aliasContext _localctx = new Table_aliasContext(_ctx, getState());
		enterRule(_localctx, 840, RULE_table_alias);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(9874);
			id();
			setState(9876);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,1383,_ctx) ) {
			case 1:
				{
				setState(9875);
				with_table_hints();
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class With_table_hintsContext extends ParserRuleContext {
		public TerminalNode LR_BRACKET() { return getToken(TSqlParser.LR_BRACKET, 0); }
		public List table_hint() {
			return getRuleContexts(Table_hintContext.class);
		}
		public Table_hintContext table_hint(int i) {
			return getRuleContext(Table_hintContext.class,i);
		}
		public TerminalNode RR_BRACKET() { return getToken(TSqlParser.RR_BRACKET, 0); }
		public TerminalNode WITH() { return getToken(TSqlParser.WITH, 0); }
		public List COMMA() { return getTokens(TSqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(TSqlParser.COMMA, i);
		}
		public With_table_hintsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_with_table_hints; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterWith_table_hints(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitWith_table_hints(this);
		}
	}

	public final With_table_hintsContext with_table_hints() throws RecognitionException {
		With_table_hintsContext _localctx = new With_table_hintsContext(_ctx, getState());
		enterRule(_localctx, 842, RULE_with_table_hints);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(9879);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==WITH) {
				{
				setState(9878);
				match(WITH);
				}
			}

			setState(9881);
			match(LR_BRACKET);
			setState(9882);
			table_hint();
			setState(9889);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==FORCESEEK || _la==INDEX || _la==NOEXPAND || ((((_la - 717)) & ~0x3f) == 0 && ((1L << (_la - 717)) & ((1L << (SERIALIZABLE - 717)) | (1L << (SNAPSHOT - 717)) | (1L << (SPATIAL_WINDOW_MAX_CELLS - 717)))) != 0) || _la==ID || _la==COMMA) {
				{
				{
				setState(9884);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==COMMA) {
					{
					setState(9883);
					match(COMMA);
					}
				}

				setState(9886);
				table_hint();
				}
				}
				setState(9891);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			setState(9892);
			match(RR_BRACKET);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Insert_with_table_hintsContext extends ParserRuleContext {
		public TerminalNode WITH() { return getToken(TSqlParser.WITH, 0); }
		public TerminalNode LR_BRACKET() { return getToken(TSqlParser.LR_BRACKET, 0); }
		public List table_hint() {
			return getRuleContexts(Table_hintContext.class);
		}
		public Table_hintContext table_hint(int i) {
			return getRuleContext(Table_hintContext.class,i);
		}
		public TerminalNode RR_BRACKET() { return getToken(TSqlParser.RR_BRACKET, 0); }
		public List COMMA() { return getTokens(TSqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(TSqlParser.COMMA, i);
		}
		public Insert_with_table_hintsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_insert_with_table_hints; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterInsert_with_table_hints(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitInsert_with_table_hints(this);
		}
	}

	public final Insert_with_table_hintsContext insert_with_table_hints() throws RecognitionException {
		Insert_with_table_hintsContext _localctx = new Insert_with_table_hintsContext(_ctx, getState());
		enterRule(_localctx, 844, RULE_insert_with_table_hints);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(9894);
			match(WITH);
			setState(9895);
			match(LR_BRACKET);
			setState(9896);
			table_hint();
			setState(9903);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==FORCESEEK || _la==INDEX || _la==NOEXPAND || ((((_la - 717)) & ~0x3f) == 0 && ((1L << (_la - 717)) & ((1L << (SERIALIZABLE - 717)) | (1L << (SNAPSHOT - 717)) | (1L << (SPATIAL_WINDOW_MAX_CELLS - 717)))) != 0) || _la==ID || _la==COMMA) {
				{
				{
				setState(9898);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==COMMA) {
					{
					setState(9897);
					match(COMMA);
					}
				}

				setState(9900);
				table_hint();
				}
				}
				setState(9905);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			setState(9906);
			match(RR_BRACKET);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Table_hintContext extends ParserRuleContext {
		public TerminalNode INDEX() { return getToken(TSqlParser.INDEX, 0); }
		public TerminalNode EQUAL() { return getToken(TSqlParser.EQUAL, 0); }
		public List index_value() {
			return getRuleContexts(Index_valueContext.class);
		}
		public Index_valueContext index_value(int i) {
			return getRuleContext(Index_valueContext.class,i);
		}
		public TerminalNode FORCESEEK() { return getToken(TSqlParser.FORCESEEK, 0); }
		public TerminalNode SERIALIZABLE() { return getToken(TSqlParser.SERIALIZABLE, 0); }
		public TerminalNode SNAPSHOT() { return getToken(TSqlParser.SNAPSHOT, 0); }
		public TerminalNode SPATIAL_WINDOW_MAX_CELLS() { return getToken(TSqlParser.SPATIAL_WINDOW_MAX_CELLS, 0); }
		public TerminalNode DECIMAL() { return getToken(TSqlParser.DECIMAL, 0); }
		public List ID() { return getTokens(TSqlParser.ID); }
		public TerminalNode ID(int i) {
			return getToken(TSqlParser.ID, i);
		}
		public TerminalNode NOEXPAND() { return getToken(TSqlParser.NOEXPAND, 0); }
		public List LR_BRACKET() { return getTokens(TSqlParser.LR_BRACKET); }
		public TerminalNode LR_BRACKET(int i) {
			return getToken(TSqlParser.LR_BRACKET, i);
		}
		public List RR_BRACKET() { return getTokens(TSqlParser.RR_BRACKET); }
		public TerminalNode RR_BRACKET(int i) {
			return getToken(TSqlParser.RR_BRACKET, i);
		}
		public List COMMA() { return getTokens(TSqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(TSqlParser.COMMA, i);
		}
		public Table_hintContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_table_hint; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterTable_hint(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitTable_hint(this);
		}
	}

	public final Table_hintContext table_hint() throws RecognitionException {
		Table_hintContext _localctx = new Table_hintContext(_ctx, getState());
		enterRule(_localctx, 846, RULE_table_hint);
		int _la;
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			setState(9909);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==NOEXPAND) {
				{
				setState(9908);
				match(NOEXPAND);
				}
			}

			setState(9959);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,1395,_ctx) ) {
			case 1:
				{
				setState(9911);
				match(INDEX);
				setState(9931);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case LR_BRACKET:
					{
					setState(9912);
					match(LR_BRACKET);
					setState(9913);
					index_value();
					setState(9918);
					_errHandler.sync(this);
					_la = _input.LA(1);
					while (_la==COMMA) {
						{
						{
						setState(9914);
						match(COMMA);
						setState(9915);
						index_value();
						}
						}
						setState(9920);
						_errHandler.sync(this);
						_la = _input.LA(1);
					}
					setState(9921);
					match(RR_BRACKET);
					}
					break;
				case CALLED:
				case DATA_COMPRESSION:
				case EVENTDATA:
				case FILENAME:
				case FILLFACTOR:
				case FORCESEEK:
				case INIT:
				case KEY:
				case MASTER:
				case MAX_MEMORY:
				case OFFSETS:
				case PAGE:
				case PUBLIC:
				case R:
				case RAW:
				case RETURN:
				case RETURNS:
				case ROWCOUNT:
				case SAFETY:
				case SERVER:
				case SID:
				case SOURCE:
				case STATE:
				case START:
				case TARGET:
				case ABSOLUTE:
				case ACCENT_SENSITIVITY:
				case ACTION:
				case ACTIVATION:
				case ACTIVE:
				case ADDRESS:
				case AES_128:
				case AES_192:
				case AES_256:
				case AFFINITY:
				case AFTER:
				case AGGREGATE:
				case ALGORITHM:
				case ALLOW_ENCRYPTED_VALUE_MODIFICATIONS:
				case ALLOW_SNAPSHOT_ISOLATION:
				case ALLOWED:
				case ANSI_NULL_DEFAULT:
				case ANSI_NULLS:
				case ANSI_PADDING:
				case ANSI_WARNINGS:
				case APPLICATION_LOG:
				case APPLY:
				case ARITHABORT:
				case ASSEMBLY:
				case AUDIT:
				case AUDIT_GUID:
				case AUTO:
				case AUTO_CLEANUP:
				case AUTO_CLOSE:
				case AUTO_CREATE_STATISTICS:
				case AUTO_SHRINK:
				case AUTO_UPDATE_STATISTICS:
				case AUTO_UPDATE_STATISTICS_ASYNC:
				case AVAILABILITY:
				case AVG:
				case BACKUP_PRIORITY:
				case BEGIN_DIALOG:
				case BIGINT:
				case BINARY_BASE64:
				case BINARY_CHECKSUM:
				case BINDING:
				case BLOB_STORAGE:
				case BROKER:
				case BROKER_INSTANCE:
				case BULK_LOGGED:
				case CALLER:
				case CAP_CPU_PERCENT:
				case CAST:
				case CATALOG:
				case CATCH:
				case CHANGE_RETENTION:
				case CHANGE_TRACKING:
				case CHECKSUM:
				case CHECKSUM_AGG:
				case CLEANUP:
				case COLLECTION:
				case COLUMN_MASTER_KEY:
				case COMMITTED:
				case COMPATIBILITY_LEVEL:
				case CONCAT:
				case CONCAT_NULL_YIELDS_NULL:
				case CONTENT:
				case CONTROL:
				case COOKIE:
				case COUNT:
				case COUNT_BIG:
				case COUNTER:
				case CPU:
				case CREATE_NEW:
				case CREATION_DISPOSITION:
				case CREDENTIAL:
				case CRYPTOGRAPHIC:
				case CURSOR_CLOSE_ON_COMMIT:
				case CURSOR_DEFAULT:
				case DATE_CORRELATION_OPTIMIZATION:
				case DATEADD:
				case DATEDIFF:
				case DATENAME:
				case DATEPART:
				case DAYS:
				case DB_CHAINING:
				case DB_FAILOVER:
				case DECRYPTION:
				case DEFAULT_DOUBLE_QUOTE:
				case DEFAULT_FULLTEXT_LANGUAGE:
				case DEFAULT_LANGUAGE:
				case DELAY:
				case DELAYED_DURABILITY:
				case DELETED:
				case DENSE_RANK:
				case DEPENDENTS:
				case DES:
				case DESCRIPTION:
				case DESX:
				case DHCP:
				case DIALOG:
				case DIRECTORY_NAME:
				case DISABLE:
				case DISABLE_BROKER:
				case DISABLED:
				case DISK_DRIVE:
				case DOCUMENT:
				case DYNAMIC:
				case EMERGENCY:
				case EMPTY:
				case ENABLE:
				case ENABLE_BROKER:
				case ENCRYPTED_VALUE:
				case ENCRYPTION:
				case ENDPOINT_URL:
				case ERROR_BROKER_CONVERSATIONS:
				case EXCLUSIVE:
				case EXECUTABLE:
				case EXIST:
				case EXPAND:
				case EXPIRY_DATE:
				case EXPLICIT:
				case FAIL_OPERATION:
				case FAILOVER_MODE:
				case FAILURE:
				case FAILURE_CONDITION_LEVEL:
				case FAST:
				case FAST_FORWARD:
				case FILEGROUP:
				case FILEGROWTH:
				case FILEPATH:
				case FILESTREAM:
				case FILTER:
				case FIRST:
				case FIRST_VALUE:
				case FOLLOWING:
				case FORCE:
				case FORCE_FAILOVER_ALLOW_DATA_LOSS:
				case FORCED:
				case FORMAT:
				case FORWARD_ONLY:
				case FULLSCAN:
				case FULLTEXT:
				case GB:
				case GETDATE:
				case GETUTCDATE:
				case GLOBAL:
				case GO:
				case GROUP_MAX_REQUESTS:
				case GROUPING:
				case GROUPING_ID:
				case HADR:
				case HASH:
				case HEALTH_CHECK_TIMEOUT:
				case HIGH:
				case HONOR_BROKER_PRIORITY:
				case HOURS:
				case IDENTITY_VALUE:
				case IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX:
				case IMMEDIATE:
				case IMPERSONATE:
				case IMPORTANCE:
				case INCREMENTAL:
				case INITIATOR:
				case INPUT:
				case INSENSITIVE:
				case INSERTED:
				case INT:
				case IP:
				case ISOLATION:
				case KB:
				case KEEP:
				case KEEPFIXED:
				case KEY_SOURCE:
				case KEYS:
				case KEYSET:
				case LAG:
				case LAST:
				case LAST_VALUE:
				case LEAD:
				case LEVEL:
				case LIST:
				case LISTENER:
				case LISTENER_URL:
				case LOB_COMPACTION:
				case LOCAL:
				case LOCATION:
				case LOCK:
				case LOCK_ESCALATION:
				case LOGIN:
				case LOOP:
				case LOW:
				case MANUAL:
				case MARK:
				case MATERIALIZED:
				case MAX:
				case MAX_CPU_PERCENT:
				case MAX_DOP:
				case MAX_FILES:
				case MAX_IOPS_PER_VOLUME:
				case MAX_MEMORY_PERCENT:
				case MAX_PROCESSES:
				case MAX_QUEUE_READERS:
				case MAX_ROLLOVER_FILES:
				case MAXDOP:
				case MAXRECURSION:
				case MAXSIZE:
				case MB:
				case MEDIUM:
				case MEMORY_OPTIMIZED_DATA:
				case MESSAGE:
				case MIN:
				case MIN_ACTIVE_ROWVERSION:
				case MIN_CPU_PERCENT:
				case MIN_IOPS_PER_VOLUME:
				case MIN_MEMORY_PERCENT:
				case MINUTES:
				case MIRROR_ADDRESS:
				case MIXED_PAGE_ALLOCATION:
				case MODE:
				case MODIFY:
				case MOVE:
				case MULTI_USER:
				case NAME:
				case NESTED_TRIGGERS:
				case NEW_ACCOUNT:
				case NEW_BROKER:
				case NEW_PASSWORD:
				case NEXT:
				case NO:
				case NO_TRUNCATE:
				case NO_WAIT:
				case NOCOUNT:
				case NODES:
				case NOEXPAND:
				case NON_TRANSACTED_ACCESS:
				case NORECOMPUTE:
				case NORECOVERY:
				case NOWAIT:
				case NTILE:
				case NUMANODE:
				case NUMBER:
				case NUMERIC_ROUNDABORT:
				case OBJECT:
				case OFFLINE:
				case OFFSET:
				case OLD_ACCOUNT:
				case ONLINE:
				case ONLY:
				case OPEN_EXISTING:
				case OPTIMISTIC:
				case OPTIMIZE:
				case OUT:
				case OUTPUT:
				case OWNER:
				case PAGE_VERIFY:
				case PARAMETERIZATION:
				case PARTITION:
				case PARTITIONS:
				case PARTNER:
				case PATH:
				case POISON_MESSAGE_HANDLING:
				case POOL:
				case PORT:
				case PRECEDING:
				case PRIMARY_ROLE:
				case PRIOR:
				case PRIORITY:
				case PRIORITY_LEVEL:
				case PRIVATE:
				case PRIVATE_KEY:
				case PRIVILEGES:
				case PROCEDURE_NAME:
				case PROPERTY:
				case PROVIDER:
				case PROVIDER_KEY_NAME:
				case QUERY:
				case QUEUE:
				case QUEUE_DELAY:
				case QUOTED_IDENTIFIER:
				case RANGE:
				case RANK:
				case RC2:
				case RC4:
				case RC4_128:
				case READ_COMMITTED_SNAPSHOT:
				case READ_ONLY:
				case READ_ONLY_ROUTING_LIST:
				case READ_WRITE:
				case READONLY:
				case REBUILD:
				case RECEIVE:
				case RECOMPILE:
				case RECOVERY:
				case RECURSIVE_TRIGGERS:
				case RELATIVE:
				case REMOTE:
				case REMOTE_SERVICE_NAME:
				case REMOVE:
				case REORGANIZE:
				case REPEATABLE:
				case REPLICA:
				case REQUEST_MAX_CPU_TIME_SEC:
				case REQUEST_MAX_MEMORY_GRANT_PERCENT:
				case REQUEST_MEMORY_GRANT_TIMEOUT_SEC:
				case REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT:
				case RESERVE_DISK_SPACE:
				case RESOURCE:
				case RESOURCE_MANAGER_LOCATION:
				case RESTRICTED_USER:
				case RETENTION:
				case ROBUST:
				case ROOT:
				case ROUTE:
				case ROW:
				case ROW_NUMBER:
				case ROWGUID:
				case ROWS:
				case SAMPLE:
				case SCHEMABINDING:
				case SCOPED:
				case SCROLL:
				case SCROLL_LOCKS:
				case SEARCH:
				case SECONDARY:
				case SECONDARY_ONLY:
				case SECONDARY_ROLE:
				case SECONDS:
				case SECRET:
				case SECURITY_LOG:
				case SEEDING_MODE:
				case SELF:
				case SEMI_SENSITIVE:
				case SEND:
				case SENT:
				case SERIALIZABLE:
				case SESSION_TIMEOUT:
				case SETERROR:
				case SHARE:
				case SHOWPLAN:
				case SIGNATURE:
				case SIMPLE:
				case SINGLE_USER:
				case SIZE:
				case SMALLINT:
				case SNAPSHOT:
				case SPATIAL_WINDOW_MAX_CELLS:
				case STANDBY:
				case START_DATE:
				case STATIC:
				case STATS_STREAM:
				case STATUS:
				case STDEV:
				case STDEVP:
				case STOPLIST:
				case STUFF:
				case SUBJECT:
				case SUM:
				case SUSPEND:
				case SYMMETRIC:
				case SYNCHRONOUS_COMMIT:
				case SYNONYM:
				case TAKE:
				case TARGET_RECOVERY_TIME:
				case TB:
				case TEXTIMAGE_ON:
				case THROW:
				case TIES:
				case TIME:
				case TIMEOUT:
				case TIMER:
				case TINYINT:
				case TORN_PAGE_DETECTION:
				case TRANSFORM_NOISE_WORDS:
				case TRIPLE_DES:
				case TRIPLE_DES_3KEY:
				case TRUSTWORTHY:
				case TRY:
				case TSQL:
				case TWO_DIGIT_YEAR_CUTOFF:
				case TYPE:
				case TYPE_WARNING:
				case UNBOUNDED:
				case UNCOMMITTED:
				case UNKNOWN:
				case UNLIMITED:
				case USING:
				case VALID_XML:
				case VALIDATION:
				case VALUE:
				case VAR:
				case VARP:
				case VIEW_METADATA:
				case VIEWS:
				case WAIT:
				case WELL_FORMED_XML:
				case WORK:
				case WORKLOAD:
				case XML:
				case XMLNAMESPACES:
				case DOUBLE_QUOTE_ID:
				case SQUARE_BRACKET_ID:
				case DECIMAL:
				case ID:
					{
					setState(9923);
					index_value();
					setState(9928);
					_errHandler.sync(this);
					_alt = getInterpreter().adaptivePredict(_input,1391,_ctx);
					while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
						if ( _alt==1 ) {
							{
							{
							setState(9924);
							match(COMMA);
							setState(9925);
							index_value();
							}
							} 
						}
						setState(9930);
						_errHandler.sync(this);
						_alt = getInterpreter().adaptivePredict(_input,1391,_ctx);
					}
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;
			case 2:
				{
				setState(9933);
				match(INDEX);
				setState(9934);
				match(EQUAL);
				setState(9935);
				index_value();
				}
				break;
			case 3:
				{
				setState(9936);
				match(FORCESEEK);
				setState(9951);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==LR_BRACKET) {
					{
					setState(9937);
					match(LR_BRACKET);
					setState(9938);
					index_value();
					setState(9939);
					match(LR_BRACKET);
					setState(9940);
					match(ID);
					setState(9945);
					_errHandler.sync(this);
					_la = _input.LA(1);
					while (_la==COMMA) {
						{
						{
						setState(9941);
						match(COMMA);
						setState(9942);
						match(ID);
						}
						}
						setState(9947);
						_errHandler.sync(this);
						_la = _input.LA(1);
					}
					setState(9948);
					match(RR_BRACKET);
					setState(9949);
					match(RR_BRACKET);
					}
				}

				}
				break;
			case 4:
				{
				setState(9953);
				match(SERIALIZABLE);
				}
				break;
			case 5:
				{
				setState(9954);
				match(SNAPSHOT);
				}
				break;
			case 6:
				{
				setState(9955);
				match(SPATIAL_WINDOW_MAX_CELLS);
				setState(9956);
				match(EQUAL);
				setState(9957);
				match(DECIMAL);
				}
				break;
			case 7:
				{
				setState(9958);
				match(ID);
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Index_valueContext extends ParserRuleContext {
		public IdContext id() {
			return getRuleContext(IdContext.class,0);
		}
		public TerminalNode DECIMAL() { return getToken(TSqlParser.DECIMAL, 0); }
		public Index_valueContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_index_value; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterIndex_value(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitIndex_value(this);
		}
	}

	public final Index_valueContext index_value() throws RecognitionException {
		Index_valueContext _localctx = new Index_valueContext(_ctx, getState());
		enterRule(_localctx, 848, RULE_index_value);
		try {
			setState(9963);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case CALLED:
			case DATA_COMPRESSION:
			case EVENTDATA:
			case FILENAME:
			case FILLFACTOR:
			case FORCESEEK:
			case INIT:
			case KEY:
			case MASTER:
			case MAX_MEMORY:
			case OFFSETS:
			case PAGE:
			case PUBLIC:
			case R:
			case RAW:
			case RETURN:
			case RETURNS:
			case ROWCOUNT:
			case SAFETY:
			case SERVER:
			case SID:
			case SOURCE:
			case STATE:
			case START:
			case TARGET:
			case ABSOLUTE:
			case ACCENT_SENSITIVITY:
			case ACTION:
			case ACTIVATION:
			case ACTIVE:
			case ADDRESS:
			case AES_128:
			case AES_192:
			case AES_256:
			case AFFINITY:
			case AFTER:
			case AGGREGATE:
			case ALGORITHM:
			case ALLOW_ENCRYPTED_VALUE_MODIFICATIONS:
			case ALLOW_SNAPSHOT_ISOLATION:
			case ALLOWED:
			case ANSI_NULL_DEFAULT:
			case ANSI_NULLS:
			case ANSI_PADDING:
			case ANSI_WARNINGS:
			case APPLICATION_LOG:
			case APPLY:
			case ARITHABORT:
			case ASSEMBLY:
			case AUDIT:
			case AUDIT_GUID:
			case AUTO:
			case AUTO_CLEANUP:
			case AUTO_CLOSE:
			case AUTO_CREATE_STATISTICS:
			case AUTO_SHRINK:
			case AUTO_UPDATE_STATISTICS:
			case AUTO_UPDATE_STATISTICS_ASYNC:
			case AVAILABILITY:
			case AVG:
			case BACKUP_PRIORITY:
			case BEGIN_DIALOG:
			case BIGINT:
			case BINARY_BASE64:
			case BINARY_CHECKSUM:
			case BINDING:
			case BLOB_STORAGE:
			case BROKER:
			case BROKER_INSTANCE:
			case BULK_LOGGED:
			case CALLER:
			case CAP_CPU_PERCENT:
			case CAST:
			case CATALOG:
			case CATCH:
			case CHANGE_RETENTION:
			case CHANGE_TRACKING:
			case CHECKSUM:
			case CHECKSUM_AGG:
			case CLEANUP:
			case COLLECTION:
			case COLUMN_MASTER_KEY:
			case COMMITTED:
			case COMPATIBILITY_LEVEL:
			case CONCAT:
			case CONCAT_NULL_YIELDS_NULL:
			case CONTENT:
			case CONTROL:
			case COOKIE:
			case COUNT:
			case COUNT_BIG:
			case COUNTER:
			case CPU:
			case CREATE_NEW:
			case CREATION_DISPOSITION:
			case CREDENTIAL:
			case CRYPTOGRAPHIC:
			case CURSOR_CLOSE_ON_COMMIT:
			case CURSOR_DEFAULT:
			case DATE_CORRELATION_OPTIMIZATION:
			case DATEADD:
			case DATEDIFF:
			case DATENAME:
			case DATEPART:
			case DAYS:
			case DB_CHAINING:
			case DB_FAILOVER:
			case DECRYPTION:
			case DEFAULT_DOUBLE_QUOTE:
			case DEFAULT_FULLTEXT_LANGUAGE:
			case DEFAULT_LANGUAGE:
			case DELAY:
			case DELAYED_DURABILITY:
			case DELETED:
			case DENSE_RANK:
			case DEPENDENTS:
			case DES:
			case DESCRIPTION:
			case DESX:
			case DHCP:
			case DIALOG:
			case DIRECTORY_NAME:
			case DISABLE:
			case DISABLE_BROKER:
			case DISABLED:
			case DISK_DRIVE:
			case DOCUMENT:
			case DYNAMIC:
			case EMERGENCY:
			case EMPTY:
			case ENABLE:
			case ENABLE_BROKER:
			case ENCRYPTED_VALUE:
			case ENCRYPTION:
			case ENDPOINT_URL:
			case ERROR_BROKER_CONVERSATIONS:
			case EXCLUSIVE:
			case EXECUTABLE:
			case EXIST:
			case EXPAND:
			case EXPIRY_DATE:
			case EXPLICIT:
			case FAIL_OPERATION:
			case FAILOVER_MODE:
			case FAILURE:
			case FAILURE_CONDITION_LEVEL:
			case FAST:
			case FAST_FORWARD:
			case FILEGROUP:
			case FILEGROWTH:
			case FILEPATH:
			case FILESTREAM:
			case FILTER:
			case FIRST:
			case FIRST_VALUE:
			case FOLLOWING:
			case FORCE:
			case FORCE_FAILOVER_ALLOW_DATA_LOSS:
			case FORCED:
			case FORMAT:
			case FORWARD_ONLY:
			case FULLSCAN:
			case FULLTEXT:
			case GB:
			case GETDATE:
			case GETUTCDATE:
			case GLOBAL:
			case GO:
			case GROUP_MAX_REQUESTS:
			case GROUPING:
			case GROUPING_ID:
			case HADR:
			case HASH:
			case HEALTH_CHECK_TIMEOUT:
			case HIGH:
			case HONOR_BROKER_PRIORITY:
			case HOURS:
			case IDENTITY_VALUE:
			case IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX:
			case IMMEDIATE:
			case IMPERSONATE:
			case IMPORTANCE:
			case INCREMENTAL:
			case INITIATOR:
			case INPUT:
			case INSENSITIVE:
			case INSERTED:
			case INT:
			case IP:
			case ISOLATION:
			case KB:
			case KEEP:
			case KEEPFIXED:
			case KEY_SOURCE:
			case KEYS:
			case KEYSET:
			case LAG:
			case LAST:
			case LAST_VALUE:
			case LEAD:
			case LEVEL:
			case LIST:
			case LISTENER:
			case LISTENER_URL:
			case LOB_COMPACTION:
			case LOCAL:
			case LOCATION:
			case LOCK:
			case LOCK_ESCALATION:
			case LOGIN:
			case LOOP:
			case LOW:
			case MANUAL:
			case MARK:
			case MATERIALIZED:
			case MAX:
			case MAX_CPU_PERCENT:
			case MAX_DOP:
			case MAX_FILES:
			case MAX_IOPS_PER_VOLUME:
			case MAX_MEMORY_PERCENT:
			case MAX_PROCESSES:
			case MAX_QUEUE_READERS:
			case MAX_ROLLOVER_FILES:
			case MAXDOP:
			case MAXRECURSION:
			case MAXSIZE:
			case MB:
			case MEDIUM:
			case MEMORY_OPTIMIZED_DATA:
			case MESSAGE:
			case MIN:
			case MIN_ACTIVE_ROWVERSION:
			case MIN_CPU_PERCENT:
			case MIN_IOPS_PER_VOLUME:
			case MIN_MEMORY_PERCENT:
			case MINUTES:
			case MIRROR_ADDRESS:
			case MIXED_PAGE_ALLOCATION:
			case MODE:
			case MODIFY:
			case MOVE:
			case MULTI_USER:
			case NAME:
			case NESTED_TRIGGERS:
			case NEW_ACCOUNT:
			case NEW_BROKER:
			case NEW_PASSWORD:
			case NEXT:
			case NO:
			case NO_TRUNCATE:
			case NO_WAIT:
			case NOCOUNT:
			case NODES:
			case NOEXPAND:
			case NON_TRANSACTED_ACCESS:
			case NORECOMPUTE:
			case NORECOVERY:
			case NOWAIT:
			case NTILE:
			case NUMANODE:
			case NUMBER:
			case NUMERIC_ROUNDABORT:
			case OBJECT:
			case OFFLINE:
			case OFFSET:
			case OLD_ACCOUNT:
			case ONLINE:
			case ONLY:
			case OPEN_EXISTING:
			case OPTIMISTIC:
			case OPTIMIZE:
			case OUT:
			case OUTPUT:
			case OWNER:
			case PAGE_VERIFY:
			case PARAMETERIZATION:
			case PARTITION:
			case PARTITIONS:
			case PARTNER:
			case PATH:
			case POISON_MESSAGE_HANDLING:
			case POOL:
			case PORT:
			case PRECEDING:
			case PRIMARY_ROLE:
			case PRIOR:
			case PRIORITY:
			case PRIORITY_LEVEL:
			case PRIVATE:
			case PRIVATE_KEY:
			case PRIVILEGES:
			case PROCEDURE_NAME:
			case PROPERTY:
			case PROVIDER:
			case PROVIDER_KEY_NAME:
			case QUERY:
			case QUEUE:
			case QUEUE_DELAY:
			case QUOTED_IDENTIFIER:
			case RANGE:
			case RANK:
			case RC2:
			case RC4:
			case RC4_128:
			case READ_COMMITTED_SNAPSHOT:
			case READ_ONLY:
			case READ_ONLY_ROUTING_LIST:
			case READ_WRITE:
			case READONLY:
			case REBUILD:
			case RECEIVE:
			case RECOMPILE:
			case RECOVERY:
			case RECURSIVE_TRIGGERS:
			case RELATIVE:
			case REMOTE:
			case REMOTE_SERVICE_NAME:
			case REMOVE:
			case REORGANIZE:
			case REPEATABLE:
			case REPLICA:
			case REQUEST_MAX_CPU_TIME_SEC:
			case REQUEST_MAX_MEMORY_GRANT_PERCENT:
			case REQUEST_MEMORY_GRANT_TIMEOUT_SEC:
			case REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT:
			case RESERVE_DISK_SPACE:
			case RESOURCE:
			case RESOURCE_MANAGER_LOCATION:
			case RESTRICTED_USER:
			case RETENTION:
			case ROBUST:
			case ROOT:
			case ROUTE:
			case ROW:
			case ROW_NUMBER:
			case ROWGUID:
			case ROWS:
			case SAMPLE:
			case SCHEMABINDING:
			case SCOPED:
			case SCROLL:
			case SCROLL_LOCKS:
			case SEARCH:
			case SECONDARY:
			case SECONDARY_ONLY:
			case SECONDARY_ROLE:
			case SECONDS:
			case SECRET:
			case SECURITY_LOG:
			case SEEDING_MODE:
			case SELF:
			case SEMI_SENSITIVE:
			case SEND:
			case SENT:
			case SERIALIZABLE:
			case SESSION_TIMEOUT:
			case SETERROR:
			case SHARE:
			case SHOWPLAN:
			case SIGNATURE:
			case SIMPLE:
			case SINGLE_USER:
			case SIZE:
			case SMALLINT:
			case SNAPSHOT:
			case SPATIAL_WINDOW_MAX_CELLS:
			case STANDBY:
			case START_DATE:
			case STATIC:
			case STATS_STREAM:
			case STATUS:
			case STDEV:
			case STDEVP:
			case STOPLIST:
			case STUFF:
			case SUBJECT:
			case SUM:
			case SUSPEND:
			case SYMMETRIC:
			case SYNCHRONOUS_COMMIT:
			case SYNONYM:
			case TAKE:
			case TARGET_RECOVERY_TIME:
			case TB:
			case TEXTIMAGE_ON:
			case THROW:
			case TIES:
			case TIME:
			case TIMEOUT:
			case TIMER:
			case TINYINT:
			case TORN_PAGE_DETECTION:
			case TRANSFORM_NOISE_WORDS:
			case TRIPLE_DES:
			case TRIPLE_DES_3KEY:
			case TRUSTWORTHY:
			case TRY:
			case TSQL:
			case TWO_DIGIT_YEAR_CUTOFF:
			case TYPE:
			case TYPE_WARNING:
			case UNBOUNDED:
			case UNCOMMITTED:
			case UNKNOWN:
			case UNLIMITED:
			case USING:
			case VALID_XML:
			case VALIDATION:
			case VALUE:
			case VAR:
			case VARP:
			case VIEW_METADATA:
			case VIEWS:
			case WAIT:
			case WELL_FORMED_XML:
			case WORK:
			case WORKLOAD:
			case XML:
			case XMLNAMESPACES:
			case DOUBLE_QUOTE_ID:
			case SQUARE_BRACKET_ID:
			case ID:
				enterOuterAlt(_localctx, 1);
				{
				setState(9961);
				id();
				}
				break;
			case DECIMAL:
				enterOuterAlt(_localctx, 2);
				{
				setState(9962);
				match(DECIMAL);
				}
				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 Column_alias_listContext extends ParserRuleContext {
		public TerminalNode LR_BRACKET() { return getToken(TSqlParser.LR_BRACKET, 0); }
		public List column_alias() {
			return getRuleContexts(Column_aliasContext.class);
		}
		public Column_aliasContext column_alias(int i) {
			return getRuleContext(Column_aliasContext.class,i);
		}
		public TerminalNode RR_BRACKET() { return getToken(TSqlParser.RR_BRACKET, 0); }
		public List COMMA() { return getTokens(TSqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(TSqlParser.COMMA, i);
		}
		public Column_alias_listContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_column_alias_list; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterColumn_alias_list(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitColumn_alias_list(this);
		}
	}

	public final Column_alias_listContext column_alias_list() throws RecognitionException {
		Column_alias_listContext _localctx = new Column_alias_listContext(_ctx, getState());
		enterRule(_localctx, 850, RULE_column_alias_list);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(9965);
			match(LR_BRACKET);
			setState(9966);
			column_alias();
			setState(9971);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA) {
				{
				{
				setState(9967);
				match(COMMA);
				setState(9968);
				column_alias();
				}
				}
				setState(9973);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			setState(9974);
			match(RR_BRACKET);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Column_aliasContext extends ParserRuleContext {
		public IdContext id() {
			return getRuleContext(IdContext.class,0);
		}
		public TerminalNode STRING() { return getToken(TSqlParser.STRING, 0); }
		public Column_aliasContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_column_alias; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterColumn_alias(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitColumn_alias(this);
		}
	}

	public final Column_aliasContext column_alias() throws RecognitionException {
		Column_aliasContext _localctx = new Column_aliasContext(_ctx, getState());
		enterRule(_localctx, 852, RULE_column_alias);
		try {
			setState(9978);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case CALLED:
			case DATA_COMPRESSION:
			case EVENTDATA:
			case FILENAME:
			case FILLFACTOR:
			case FORCESEEK:
			case INIT:
			case KEY:
			case MASTER:
			case MAX_MEMORY:
			case OFFSETS:
			case PAGE:
			case PUBLIC:
			case R:
			case RAW:
			case RETURN:
			case RETURNS:
			case ROWCOUNT:
			case SAFETY:
			case SERVER:
			case SID:
			case SOURCE:
			case STATE:
			case START:
			case TARGET:
			case ABSOLUTE:
			case ACCENT_SENSITIVITY:
			case ACTION:
			case ACTIVATION:
			case ACTIVE:
			case ADDRESS:
			case AES_128:
			case AES_192:
			case AES_256:
			case AFFINITY:
			case AFTER:
			case AGGREGATE:
			case ALGORITHM:
			case ALLOW_ENCRYPTED_VALUE_MODIFICATIONS:
			case ALLOW_SNAPSHOT_ISOLATION:
			case ALLOWED:
			case ANSI_NULL_DEFAULT:
			case ANSI_NULLS:
			case ANSI_PADDING:
			case ANSI_WARNINGS:
			case APPLICATION_LOG:
			case APPLY:
			case ARITHABORT:
			case ASSEMBLY:
			case AUDIT:
			case AUDIT_GUID:
			case AUTO:
			case AUTO_CLEANUP:
			case AUTO_CLOSE:
			case AUTO_CREATE_STATISTICS:
			case AUTO_SHRINK:
			case AUTO_UPDATE_STATISTICS:
			case AUTO_UPDATE_STATISTICS_ASYNC:
			case AVAILABILITY:
			case AVG:
			case BACKUP_PRIORITY:
			case BEGIN_DIALOG:
			case BIGINT:
			case BINARY_BASE64:
			case BINARY_CHECKSUM:
			case BINDING:
			case BLOB_STORAGE:
			case BROKER:
			case BROKER_INSTANCE:
			case BULK_LOGGED:
			case CALLER:
			case CAP_CPU_PERCENT:
			case CAST:
			case CATALOG:
			case CATCH:
			case CHANGE_RETENTION:
			case CHANGE_TRACKING:
			case CHECKSUM:
			case CHECKSUM_AGG:
			case CLEANUP:
			case COLLECTION:
			case COLUMN_MASTER_KEY:
			case COMMITTED:
			case COMPATIBILITY_LEVEL:
			case CONCAT:
			case CONCAT_NULL_YIELDS_NULL:
			case CONTENT:
			case CONTROL:
			case COOKIE:
			case COUNT:
			case COUNT_BIG:
			case COUNTER:
			case CPU:
			case CREATE_NEW:
			case CREATION_DISPOSITION:
			case CREDENTIAL:
			case CRYPTOGRAPHIC:
			case CURSOR_CLOSE_ON_COMMIT:
			case CURSOR_DEFAULT:
			case DATE_CORRELATION_OPTIMIZATION:
			case DATEADD:
			case DATEDIFF:
			case DATENAME:
			case DATEPART:
			case DAYS:
			case DB_CHAINING:
			case DB_FAILOVER:
			case DECRYPTION:
			case DEFAULT_DOUBLE_QUOTE:
			case DEFAULT_FULLTEXT_LANGUAGE:
			case DEFAULT_LANGUAGE:
			case DELAY:
			case DELAYED_DURABILITY:
			case DELETED:
			case DENSE_RANK:
			case DEPENDENTS:
			case DES:
			case DESCRIPTION:
			case DESX:
			case DHCP:
			case DIALOG:
			case DIRECTORY_NAME:
			case DISABLE:
			case DISABLE_BROKER:
			case DISABLED:
			case DISK_DRIVE:
			case DOCUMENT:
			case DYNAMIC:
			case EMERGENCY:
			case EMPTY:
			case ENABLE:
			case ENABLE_BROKER:
			case ENCRYPTED_VALUE:
			case ENCRYPTION:
			case ENDPOINT_URL:
			case ERROR_BROKER_CONVERSATIONS:
			case EXCLUSIVE:
			case EXECUTABLE:
			case EXIST:
			case EXPAND:
			case EXPIRY_DATE:
			case EXPLICIT:
			case FAIL_OPERATION:
			case FAILOVER_MODE:
			case FAILURE:
			case FAILURE_CONDITION_LEVEL:
			case FAST:
			case FAST_FORWARD:
			case FILEGROUP:
			case FILEGROWTH:
			case FILEPATH:
			case FILESTREAM:
			case FILTER:
			case FIRST:
			case FIRST_VALUE:
			case FOLLOWING:
			case FORCE:
			case FORCE_FAILOVER_ALLOW_DATA_LOSS:
			case FORCED:
			case FORMAT:
			case FORWARD_ONLY:
			case FULLSCAN:
			case FULLTEXT:
			case GB:
			case GETDATE:
			case GETUTCDATE:
			case GLOBAL:
			case GO:
			case GROUP_MAX_REQUESTS:
			case GROUPING:
			case GROUPING_ID:
			case HADR:
			case HASH:
			case HEALTH_CHECK_TIMEOUT:
			case HIGH:
			case HONOR_BROKER_PRIORITY:
			case HOURS:
			case IDENTITY_VALUE:
			case IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX:
			case IMMEDIATE:
			case IMPERSONATE:
			case IMPORTANCE:
			case INCREMENTAL:
			case INITIATOR:
			case INPUT:
			case INSENSITIVE:
			case INSERTED:
			case INT:
			case IP:
			case ISOLATION:
			case KB:
			case KEEP:
			case KEEPFIXED:
			case KEY_SOURCE:
			case KEYS:
			case KEYSET:
			case LAG:
			case LAST:
			case LAST_VALUE:
			case LEAD:
			case LEVEL:
			case LIST:
			case LISTENER:
			case LISTENER_URL:
			case LOB_COMPACTION:
			case LOCAL:
			case LOCATION:
			case LOCK:
			case LOCK_ESCALATION:
			case LOGIN:
			case LOOP:
			case LOW:
			case MANUAL:
			case MARK:
			case MATERIALIZED:
			case MAX:
			case MAX_CPU_PERCENT:
			case MAX_DOP:
			case MAX_FILES:
			case MAX_IOPS_PER_VOLUME:
			case MAX_MEMORY_PERCENT:
			case MAX_PROCESSES:
			case MAX_QUEUE_READERS:
			case MAX_ROLLOVER_FILES:
			case MAXDOP:
			case MAXRECURSION:
			case MAXSIZE:
			case MB:
			case MEDIUM:
			case MEMORY_OPTIMIZED_DATA:
			case MESSAGE:
			case MIN:
			case MIN_ACTIVE_ROWVERSION:
			case MIN_CPU_PERCENT:
			case MIN_IOPS_PER_VOLUME:
			case MIN_MEMORY_PERCENT:
			case MINUTES:
			case MIRROR_ADDRESS:
			case MIXED_PAGE_ALLOCATION:
			case MODE:
			case MODIFY:
			case MOVE:
			case MULTI_USER:
			case NAME:
			case NESTED_TRIGGERS:
			case NEW_ACCOUNT:
			case NEW_BROKER:
			case NEW_PASSWORD:
			case NEXT:
			case NO:
			case NO_TRUNCATE:
			case NO_WAIT:
			case NOCOUNT:
			case NODES:
			case NOEXPAND:
			case NON_TRANSACTED_ACCESS:
			case NORECOMPUTE:
			case NORECOVERY:
			case NOWAIT:
			case NTILE:
			case NUMANODE:
			case NUMBER:
			case NUMERIC_ROUNDABORT:
			case OBJECT:
			case OFFLINE:
			case OFFSET:
			case OLD_ACCOUNT:
			case ONLINE:
			case ONLY:
			case OPEN_EXISTING:
			case OPTIMISTIC:
			case OPTIMIZE:
			case OUT:
			case OUTPUT:
			case OWNER:
			case PAGE_VERIFY:
			case PARAMETERIZATION:
			case PARTITION:
			case PARTITIONS:
			case PARTNER:
			case PATH:
			case POISON_MESSAGE_HANDLING:
			case POOL:
			case PORT:
			case PRECEDING:
			case PRIMARY_ROLE:
			case PRIOR:
			case PRIORITY:
			case PRIORITY_LEVEL:
			case PRIVATE:
			case PRIVATE_KEY:
			case PRIVILEGES:
			case PROCEDURE_NAME:
			case PROPERTY:
			case PROVIDER:
			case PROVIDER_KEY_NAME:
			case QUERY:
			case QUEUE:
			case QUEUE_DELAY:
			case QUOTED_IDENTIFIER:
			case RANGE:
			case RANK:
			case RC2:
			case RC4:
			case RC4_128:
			case READ_COMMITTED_SNAPSHOT:
			case READ_ONLY:
			case READ_ONLY_ROUTING_LIST:
			case READ_WRITE:
			case READONLY:
			case REBUILD:
			case RECEIVE:
			case RECOMPILE:
			case RECOVERY:
			case RECURSIVE_TRIGGERS:
			case RELATIVE:
			case REMOTE:
			case REMOTE_SERVICE_NAME:
			case REMOVE:
			case REORGANIZE:
			case REPEATABLE:
			case REPLICA:
			case REQUEST_MAX_CPU_TIME_SEC:
			case REQUEST_MAX_MEMORY_GRANT_PERCENT:
			case REQUEST_MEMORY_GRANT_TIMEOUT_SEC:
			case REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT:
			case RESERVE_DISK_SPACE:
			case RESOURCE:
			case RESOURCE_MANAGER_LOCATION:
			case RESTRICTED_USER:
			case RETENTION:
			case ROBUST:
			case ROOT:
			case ROUTE:
			case ROW:
			case ROW_NUMBER:
			case ROWGUID:
			case ROWS:
			case SAMPLE:
			case SCHEMABINDING:
			case SCOPED:
			case SCROLL:
			case SCROLL_LOCKS:
			case SEARCH:
			case SECONDARY:
			case SECONDARY_ONLY:
			case SECONDARY_ROLE:
			case SECONDS:
			case SECRET:
			case SECURITY_LOG:
			case SEEDING_MODE:
			case SELF:
			case SEMI_SENSITIVE:
			case SEND:
			case SENT:
			case SERIALIZABLE:
			case SESSION_TIMEOUT:
			case SETERROR:
			case SHARE:
			case SHOWPLAN:
			case SIGNATURE:
			case SIMPLE:
			case SINGLE_USER:
			case SIZE:
			case SMALLINT:
			case SNAPSHOT:
			case SPATIAL_WINDOW_MAX_CELLS:
			case STANDBY:
			case START_DATE:
			case STATIC:
			case STATS_STREAM:
			case STATUS:
			case STDEV:
			case STDEVP:
			case STOPLIST:
			case STUFF:
			case SUBJECT:
			case SUM:
			case SUSPEND:
			case SYMMETRIC:
			case SYNCHRONOUS_COMMIT:
			case SYNONYM:
			case TAKE:
			case TARGET_RECOVERY_TIME:
			case TB:
			case TEXTIMAGE_ON:
			case THROW:
			case TIES:
			case TIME:
			case TIMEOUT:
			case TIMER:
			case TINYINT:
			case TORN_PAGE_DETECTION:
			case TRANSFORM_NOISE_WORDS:
			case TRIPLE_DES:
			case TRIPLE_DES_3KEY:
			case TRUSTWORTHY:
			case TRY:
			case TSQL:
			case TWO_DIGIT_YEAR_CUTOFF:
			case TYPE:
			case TYPE_WARNING:
			case UNBOUNDED:
			case UNCOMMITTED:
			case UNKNOWN:
			case UNLIMITED:
			case USING:
			case VALID_XML:
			case VALIDATION:
			case VALUE:
			case VAR:
			case VARP:
			case VIEW_METADATA:
			case VIEWS:
			case WAIT:
			case WELL_FORMED_XML:
			case WORK:
			case WORKLOAD:
			case XML:
			case XMLNAMESPACES:
			case DOUBLE_QUOTE_ID:
			case SQUARE_BRACKET_ID:
			case ID:
				enterOuterAlt(_localctx, 1);
				{
				setState(9976);
				id();
				}
				break;
			case STRING:
				enterOuterAlt(_localctx, 2);
				{
				setState(9977);
				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 Table_value_constructorContext extends ParserRuleContext {
		public TerminalNode VALUES() { return getToken(TSqlParser.VALUES, 0); }
		public List LR_BRACKET() { return getTokens(TSqlParser.LR_BRACKET); }
		public TerminalNode LR_BRACKET(int i) {
			return getToken(TSqlParser.LR_BRACKET, i);
		}
		public List expression_list() {
			return getRuleContexts(Expression_listContext.class);
		}
		public Expression_listContext expression_list(int i) {
			return getRuleContext(Expression_listContext.class,i);
		}
		public List RR_BRACKET() { return getTokens(TSqlParser.RR_BRACKET); }
		public TerminalNode RR_BRACKET(int i) {
			return getToken(TSqlParser.RR_BRACKET, i);
		}
		public List COMMA() { return getTokens(TSqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(TSqlParser.COMMA, i);
		}
		public Table_value_constructorContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_table_value_constructor; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterTable_value_constructor(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitTable_value_constructor(this);
		}
	}

	public final Table_value_constructorContext table_value_constructor() throws RecognitionException {
		Table_value_constructorContext _localctx = new Table_value_constructorContext(_ctx, getState());
		enterRule(_localctx, 854, RULE_table_value_constructor);
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			setState(9980);
			match(VALUES);
			setState(9981);
			match(LR_BRACKET);
			setState(9982);
			expression_list();
			setState(9983);
			match(RR_BRACKET);
			setState(9991);
			_errHandler.sync(this);
			_alt = getInterpreter().adaptivePredict(_input,1399,_ctx);
			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
				if ( _alt==1 ) {
					{
					{
					setState(9984);
					match(COMMA);
					setState(9985);
					match(LR_BRACKET);
					setState(9986);
					expression_list();
					setState(9987);
					match(RR_BRACKET);
					}
					} 
				}
				setState(9993);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,1399,_ctx);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Expression_listContext extends ParserRuleContext {
		public List expression() {
			return getRuleContexts(ExpressionContext.class);
		}
		public ExpressionContext expression(int i) {
			return getRuleContext(ExpressionContext.class,i);
		}
		public List COMMA() { return getTokens(TSqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(TSqlParser.COMMA, i);
		}
		public Expression_listContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_expression_list; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterExpression_list(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitExpression_list(this);
		}
	}

	public final Expression_listContext expression_list() throws RecognitionException {
		Expression_listContext _localctx = new Expression_listContext(_ctx, getState());
		enterRule(_localctx, 856, RULE_expression_list);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(9994);
			expression(0);
			setState(9999);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA) {
				{
				{
				setState(9995);
				match(COMMA);
				setState(9996);
				expression(0);
				}
				}
				setState(10001);
				_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 Ranking_windowed_functionContext extends ParserRuleContext {
		public TerminalNode LR_BRACKET() { return getToken(TSqlParser.LR_BRACKET, 0); }
		public TerminalNode RR_BRACKET() { return getToken(TSqlParser.RR_BRACKET, 0); }
		public Over_clauseContext over_clause() {
			return getRuleContext(Over_clauseContext.class,0);
		}
		public TerminalNode RANK() { return getToken(TSqlParser.RANK, 0); }
		public TerminalNode DENSE_RANK() { return getToken(TSqlParser.DENSE_RANK, 0); }
		public TerminalNode ROW_NUMBER() { return getToken(TSqlParser.ROW_NUMBER, 0); }
		public TerminalNode NTILE() { return getToken(TSqlParser.NTILE, 0); }
		public ExpressionContext expression() {
			return getRuleContext(ExpressionContext.class,0);
		}
		public Ranking_windowed_functionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_ranking_windowed_function; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterRanking_windowed_function(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitRanking_windowed_function(this);
		}
	}

	public final Ranking_windowed_functionContext ranking_windowed_function() throws RecognitionException {
		Ranking_windowed_functionContext _localctx = new Ranking_windowed_functionContext(_ctx, getState());
		enterRule(_localctx, 858, RULE_ranking_windowed_function);
		int _la;
		try {
			setState(10012);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case DENSE_RANK:
			case RANK:
			case ROW_NUMBER:
				enterOuterAlt(_localctx, 1);
				{
				setState(10002);
				_la = _input.LA(1);
				if ( !(_la==DENSE_RANK || _la==RANK || _la==ROW_NUMBER) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(10003);
				match(LR_BRACKET);
				setState(10004);
				match(RR_BRACKET);
				setState(10005);
				over_clause();
				}
				break;
			case NTILE:
				enterOuterAlt(_localctx, 2);
				{
				setState(10006);
				match(NTILE);
				setState(10007);
				match(LR_BRACKET);
				setState(10008);
				expression(0);
				setState(10009);
				match(RR_BRACKET);
				setState(10010);
				over_clause();
				}
				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 Aggregate_windowed_functionContext extends ParserRuleContext {
		public TerminalNode LR_BRACKET() { return getToken(TSqlParser.LR_BRACKET, 0); }
		public All_distinct_expressionContext all_distinct_expression() {
			return getRuleContext(All_distinct_expressionContext.class,0);
		}
		public TerminalNode RR_BRACKET() { return getToken(TSqlParser.RR_BRACKET, 0); }
		public TerminalNode AVG() { return getToken(TSqlParser.AVG, 0); }
		public TerminalNode MAX() { return getToken(TSqlParser.MAX, 0); }
		public TerminalNode MIN() { return getToken(TSqlParser.MIN, 0); }
		public TerminalNode SUM() { return getToken(TSqlParser.SUM, 0); }
		public TerminalNode STDEV() { return getToken(TSqlParser.STDEV, 0); }
		public TerminalNode STDEVP() { return getToken(TSqlParser.STDEVP, 0); }
		public TerminalNode VAR() { return getToken(TSqlParser.VAR, 0); }
		public TerminalNode VARP() { return getToken(TSqlParser.VARP, 0); }
		public Over_clauseContext over_clause() {
			return getRuleContext(Over_clauseContext.class,0);
		}
		public TerminalNode COUNT() { return getToken(TSqlParser.COUNT, 0); }
		public TerminalNode COUNT_BIG() { return getToken(TSqlParser.COUNT_BIG, 0); }
		public TerminalNode STAR() { return getToken(TSqlParser.STAR, 0); }
		public TerminalNode CHECKSUM_AGG() { return getToken(TSqlParser.CHECKSUM_AGG, 0); }
		public TerminalNode GROUPING() { return getToken(TSqlParser.GROUPING, 0); }
		public ExpressionContext expression() {
			return getRuleContext(ExpressionContext.class,0);
		}
		public TerminalNode GROUPING_ID() { return getToken(TSqlParser.GROUPING_ID, 0); }
		public Expression_listContext expression_list() {
			return getRuleContext(Expression_listContext.class,0);
		}
		public Aggregate_windowed_functionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_aggregate_windowed_function; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterAggregate_windowed_function(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitAggregate_windowed_function(this);
		}
	}

	public final Aggregate_windowed_functionContext aggregate_windowed_function() throws RecognitionException {
		Aggregate_windowed_functionContext _localctx = new Aggregate_windowed_functionContext(_ctx, getState());
		enterRule(_localctx, 860, RULE_aggregate_windowed_function);
		int _la;
		try {
			setState(10046);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case AVG:
			case MAX:
			case MIN:
			case STDEV:
			case STDEVP:
			case SUM:
			case VAR:
			case VARP:
				enterOuterAlt(_localctx, 1);
				{
				setState(10014);
				_la = _input.LA(1);
				if ( !(_la==AVG || _la==MAX || _la==MIN || ((((_la - 734)) & ~0x3f) == 0 && ((1L << (_la - 734)) & ((1L << (STDEV - 734)) | (1L << (STDEVP - 734)) | (1L << (SUM - 734)) | (1L << (VAR - 734)) | (1L << (VARP - 734)))) != 0)) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(10015);
				match(LR_BRACKET);
				setState(10016);
				all_distinct_expression();
				setState(10017);
				match(RR_BRACKET);
				setState(10019);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1402,_ctx) ) {
				case 1:
					{
					setState(10018);
					over_clause();
					}
					break;
				}
				}
				break;
			case COUNT:
			case COUNT_BIG:
				enterOuterAlt(_localctx, 2);
				{
				setState(10021);
				_la = _input.LA(1);
				if ( !(_la==COUNT || _la==COUNT_BIG) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(10022);
				match(LR_BRACKET);
				setState(10025);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case STAR:
					{
					setState(10023);
					match(STAR);
					}
					break;
				case ALL:
				case BLOCKING_HIERARCHY:
				case CALLED:
				case CASE:
				case COALESCE:
				case CONVERT:
				case CURRENT_TIMESTAMP:
				case CURRENT_USER:
				case DATA_COMPRESSION:
				case DEFAULT:
				case DISTINCT:
				case EVENTDATA:
				case FILENAME:
				case FILLFACTOR:
				case FORCESEEK:
				case IDENTITY:
				case IIF:
				case INIT:
				case ISNULL:
				case KEY:
				case LEFT:
				case MASTER:
				case MAX_MEMORY:
				case NULL:
				case NULLIF:
				case OFFSETS:
				case OVER:
				case PAGE:
				case PUBLIC:
				case R:
				case RAW:
				case RETURN:
				case RETURNS:
				case RIGHT:
				case ROWCOUNT:
				case SAFETY:
				case SERVER:
				case SESSION_USER:
				case SID:
				case SOURCE:
				case STATE:
				case START:
				case SYSTEM_USER:
				case TARGET:
				case ABSOLUTE:
				case ACCENT_SENSITIVITY:
				case ACTION:
				case ACTIVATION:
				case ACTIVE:
				case ADDRESS:
				case AES_128:
				case AES_192:
				case AES_256:
				case AFFINITY:
				case AFTER:
				case AGGREGATE:
				case ALGORITHM:
				case ALLOW_ENCRYPTED_VALUE_MODIFICATIONS:
				case ALLOW_SNAPSHOT_ISOLATION:
				case ALLOWED:
				case ANSI_NULL_DEFAULT:
				case ANSI_NULLS:
				case ANSI_PADDING:
				case ANSI_WARNINGS:
				case APPLICATION_LOG:
				case APPLY:
				case ARITHABORT:
				case ASSEMBLY:
				case AUDIT:
				case AUDIT_GUID:
				case AUTO:
				case AUTO_CLEANUP:
				case AUTO_CLOSE:
				case AUTO_CREATE_STATISTICS:
				case AUTO_SHRINK:
				case AUTO_UPDATE_STATISTICS:
				case AUTO_UPDATE_STATISTICS_ASYNC:
				case AVAILABILITY:
				case AVG:
				case BACKUP_PRIORITY:
				case BEGIN_DIALOG:
				case BIGINT:
				case BINARY_BASE64:
				case BINARY_CHECKSUM:
				case BINDING:
				case BLOB_STORAGE:
				case BROKER:
				case BROKER_INSTANCE:
				case BULK_LOGGED:
				case CALLER:
				case CAP_CPU_PERCENT:
				case CAST:
				case CATALOG:
				case CATCH:
				case CHANGE_RETENTION:
				case CHANGE_TRACKING:
				case CHECKSUM:
				case CHECKSUM_AGG:
				case CLEANUP:
				case COLLECTION:
				case COLUMN_MASTER_KEY:
				case COMMITTED:
				case COMPATIBILITY_LEVEL:
				case CONCAT:
				case CONCAT_NULL_YIELDS_NULL:
				case CONTENT:
				case CONTROL:
				case COOKIE:
				case COUNT:
				case COUNT_BIG:
				case COUNTER:
				case CPU:
				case CREATE_NEW:
				case CREATION_DISPOSITION:
				case CREDENTIAL:
				case CRYPTOGRAPHIC:
				case CURSOR_CLOSE_ON_COMMIT:
				case CURSOR_DEFAULT:
				case DATE_CORRELATION_OPTIMIZATION:
				case DATEADD:
				case DATEDIFF:
				case DATENAME:
				case DATEPART:
				case DAYS:
				case DB_CHAINING:
				case DB_FAILOVER:
				case DECRYPTION:
				case DEFAULT_DOUBLE_QUOTE:
				case DEFAULT_FULLTEXT_LANGUAGE:
				case DEFAULT_LANGUAGE:
				case DELAY:
				case DELAYED_DURABILITY:
				case DELETED:
				case DENSE_RANK:
				case DEPENDENTS:
				case DES:
				case DESCRIPTION:
				case DESX:
				case DHCP:
				case DIALOG:
				case DIRECTORY_NAME:
				case DISABLE:
				case DISABLE_BROKER:
				case DISABLED:
				case DISK_DRIVE:
				case DOCUMENT:
				case DYNAMIC:
				case EMERGENCY:
				case EMPTY:
				case ENABLE:
				case ENABLE_BROKER:
				case ENCRYPTED_VALUE:
				case ENCRYPTION:
				case ENDPOINT_URL:
				case ERROR_BROKER_CONVERSATIONS:
				case EXCLUSIVE:
				case EXECUTABLE:
				case EXIST:
				case EXPAND:
				case EXPIRY_DATE:
				case EXPLICIT:
				case FAIL_OPERATION:
				case FAILOVER_MODE:
				case FAILURE:
				case FAILURE_CONDITION_LEVEL:
				case FAST:
				case FAST_FORWARD:
				case FILEGROUP:
				case FILEGROWTH:
				case FILEPATH:
				case FILESTREAM:
				case FILTER:
				case FIRST:
				case FIRST_VALUE:
				case FOLLOWING:
				case FORCE:
				case FORCE_FAILOVER_ALLOW_DATA_LOSS:
				case FORCED:
				case FORMAT:
				case FORWARD_ONLY:
				case FULLSCAN:
				case FULLTEXT:
				case GB:
				case GETDATE:
				case GETUTCDATE:
				case GLOBAL:
				case GO:
				case GROUP_MAX_REQUESTS:
				case GROUPING:
				case GROUPING_ID:
				case HADR:
				case HASH:
				case HEALTH_CHECK_TIMEOUT:
				case HIGH:
				case HONOR_BROKER_PRIORITY:
				case HOURS:
				case IDENTITY_VALUE:
				case IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX:
				case IMMEDIATE:
				case IMPERSONATE:
				case IMPORTANCE:
				case INCREMENTAL:
				case INITIATOR:
				case INPUT:
				case INSENSITIVE:
				case INSERTED:
				case INT:
				case IP:
				case ISOLATION:
				case KB:
				case KEEP:
				case KEEPFIXED:
				case KEY_SOURCE:
				case KEYS:
				case KEYSET:
				case LAG:
				case LAST:
				case LAST_VALUE:
				case LEAD:
				case LEVEL:
				case LIST:
				case LISTENER:
				case LISTENER_URL:
				case LOB_COMPACTION:
				case LOCAL:
				case LOCATION:
				case LOCK:
				case LOCK_ESCALATION:
				case LOGIN:
				case LOOP:
				case LOW:
				case MANUAL:
				case MARK:
				case MATERIALIZED:
				case MAX:
				case MAX_CPU_PERCENT:
				case MAX_DOP:
				case MAX_FILES:
				case MAX_IOPS_PER_VOLUME:
				case MAX_MEMORY_PERCENT:
				case MAX_PROCESSES:
				case MAX_QUEUE_READERS:
				case MAX_ROLLOVER_FILES:
				case MAXDOP:
				case MAXRECURSION:
				case MAXSIZE:
				case MB:
				case MEDIUM:
				case MEMORY_OPTIMIZED_DATA:
				case MESSAGE:
				case MIN:
				case MIN_ACTIVE_ROWVERSION:
				case MIN_CPU_PERCENT:
				case MIN_IOPS_PER_VOLUME:
				case MIN_MEMORY_PERCENT:
				case MINUTES:
				case MIRROR_ADDRESS:
				case MIXED_PAGE_ALLOCATION:
				case MODE:
				case MODIFY:
				case MOVE:
				case MULTI_USER:
				case NAME:
				case NESTED_TRIGGERS:
				case NEW_ACCOUNT:
				case NEW_BROKER:
				case NEW_PASSWORD:
				case NEXT:
				case NO:
				case NO_TRUNCATE:
				case NO_WAIT:
				case NOCOUNT:
				case NODES:
				case NOEXPAND:
				case NON_TRANSACTED_ACCESS:
				case NORECOMPUTE:
				case NORECOVERY:
				case NOWAIT:
				case NTILE:
				case NUMANODE:
				case NUMBER:
				case NUMERIC_ROUNDABORT:
				case OBJECT:
				case OFFLINE:
				case OFFSET:
				case OLD_ACCOUNT:
				case ONLINE:
				case ONLY:
				case OPEN_EXISTING:
				case OPTIMISTIC:
				case OPTIMIZE:
				case OUT:
				case OUTPUT:
				case OWNER:
				case PAGE_VERIFY:
				case PARAMETERIZATION:
				case PARTITION:
				case PARTITIONS:
				case PARTNER:
				case PATH:
				case POISON_MESSAGE_HANDLING:
				case POOL:
				case PORT:
				case PRECEDING:
				case PRIMARY_ROLE:
				case PRIOR:
				case PRIORITY:
				case PRIORITY_LEVEL:
				case PRIVATE:
				case PRIVATE_KEY:
				case PRIVILEGES:
				case PROCEDURE_NAME:
				case PROPERTY:
				case PROVIDER:
				case PROVIDER_KEY_NAME:
				case QUERY:
				case QUEUE:
				case QUEUE_DELAY:
				case QUOTED_IDENTIFIER:
				case RANGE:
				case RANK:
				case RC2:
				case RC4:
				case RC4_128:
				case READ_COMMITTED_SNAPSHOT:
				case READ_ONLY:
				case READ_ONLY_ROUTING_LIST:
				case READ_WRITE:
				case READONLY:
				case REBUILD:
				case RECEIVE:
				case RECOMPILE:
				case RECOVERY:
				case RECURSIVE_TRIGGERS:
				case RELATIVE:
				case REMOTE:
				case REMOTE_SERVICE_NAME:
				case REMOVE:
				case REORGANIZE:
				case REPEATABLE:
				case REPLICA:
				case REQUEST_MAX_CPU_TIME_SEC:
				case REQUEST_MAX_MEMORY_GRANT_PERCENT:
				case REQUEST_MEMORY_GRANT_TIMEOUT_SEC:
				case REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT:
				case RESERVE_DISK_SPACE:
				case RESOURCE:
				case RESOURCE_MANAGER_LOCATION:
				case RESTRICTED_USER:
				case RETENTION:
				case ROBUST:
				case ROOT:
				case ROUTE:
				case ROW:
				case ROW_NUMBER:
				case ROWGUID:
				case ROWS:
				case SAMPLE:
				case SCHEMABINDING:
				case SCOPED:
				case SCROLL:
				case SCROLL_LOCKS:
				case SEARCH:
				case SECONDARY:
				case SECONDARY_ONLY:
				case SECONDARY_ROLE:
				case SECONDS:
				case SECRET:
				case SECURITY_LOG:
				case SEEDING_MODE:
				case SELF:
				case SEMI_SENSITIVE:
				case SEND:
				case SENT:
				case SERIALIZABLE:
				case SESSION_TIMEOUT:
				case SETERROR:
				case SHARE:
				case SHOWPLAN:
				case SIGNATURE:
				case SIMPLE:
				case SINGLE_USER:
				case SIZE:
				case SMALLINT:
				case SNAPSHOT:
				case SPATIAL_WINDOW_MAX_CELLS:
				case STANDBY:
				case START_DATE:
				case STATIC:
				case STATS_STREAM:
				case STATUS:
				case STDEV:
				case STDEVP:
				case STOPLIST:
				case STUFF:
				case SUBJECT:
				case SUM:
				case SUSPEND:
				case SYMMETRIC:
				case SYNCHRONOUS_COMMIT:
				case SYNONYM:
				case TAKE:
				case TARGET_RECOVERY_TIME:
				case TB:
				case TEXTIMAGE_ON:
				case THROW:
				case TIES:
				case TIME:
				case TIMEOUT:
				case TIMER:
				case TINYINT:
				case TORN_PAGE_DETECTION:
				case TRANSFORM_NOISE_WORDS:
				case TRIPLE_DES:
				case TRIPLE_DES_3KEY:
				case TRUSTWORTHY:
				case TRY:
				case TSQL:
				case TWO_DIGIT_YEAR_CUTOFF:
				case TYPE:
				case TYPE_WARNING:
				case UNBOUNDED:
				case UNCOMMITTED:
				case UNKNOWN:
				case UNLIMITED:
				case USING:
				case VALID_XML:
				case VALIDATION:
				case VALUE:
				case VAR:
				case VARP:
				case VIEW_METADATA:
				case VIEWS:
				case WAIT:
				case WELL_FORMED_XML:
				case WORK:
				case WORKLOAD:
				case XML:
				case XMLNAMESPACES:
				case DOUBLE_QUOTE_ID:
				case SQUARE_BRACKET_ID:
				case LOCAL_ID:
				case DECIMAL:
				case ID:
				case STRING:
				case BINARY:
				case FLOAT:
				case REAL:
				case DOLLAR:
				case LR_BRACKET:
				case PLUS:
				case MINUS:
				case BIT_NOT:
					{
					setState(10024);
					all_distinct_expression();
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				setState(10027);
				match(RR_BRACKET);
				setState(10029);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1404,_ctx) ) {
				case 1:
					{
					setState(10028);
					over_clause();
					}
					break;
				}
				}
				break;
			case CHECKSUM_AGG:
				enterOuterAlt(_localctx, 3);
				{
				setState(10031);
				match(CHECKSUM_AGG);
				setState(10032);
				match(LR_BRACKET);
				setState(10033);
				all_distinct_expression();
				setState(10034);
				match(RR_BRACKET);
				}
				break;
			case GROUPING:
				enterOuterAlt(_localctx, 4);
				{
				setState(10036);
				match(GROUPING);
				setState(10037);
				match(LR_BRACKET);
				setState(10038);
				expression(0);
				setState(10039);
				match(RR_BRACKET);
				}
				break;
			case GROUPING_ID:
				enterOuterAlt(_localctx, 5);
				{
				setState(10041);
				match(GROUPING_ID);
				setState(10042);
				match(LR_BRACKET);
				setState(10043);
				expression_list();
				setState(10044);
				match(RR_BRACKET);
				}
				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 Analytic_windowed_functionContext extends ParserRuleContext {
		public TerminalNode LR_BRACKET() { return getToken(TSqlParser.LR_BRACKET, 0); }
		public List expression() {
			return getRuleContexts(ExpressionContext.class);
		}
		public ExpressionContext expression(int i) {
			return getRuleContext(ExpressionContext.class,i);
		}
		public TerminalNode RR_BRACKET() { return getToken(TSqlParser.RR_BRACKET, 0); }
		public Over_clauseContext over_clause() {
			return getRuleContext(Over_clauseContext.class,0);
		}
		public TerminalNode FIRST_VALUE() { return getToken(TSqlParser.FIRST_VALUE, 0); }
		public TerminalNode LAST_VALUE() { return getToken(TSqlParser.LAST_VALUE, 0); }
		public TerminalNode LAG() { return getToken(TSqlParser.LAG, 0); }
		public TerminalNode LEAD() { return getToken(TSqlParser.LEAD, 0); }
		public List COMMA() { return getTokens(TSqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(TSqlParser.COMMA, i);
		}
		public Analytic_windowed_functionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_analytic_windowed_function; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterAnalytic_windowed_function(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitAnalytic_windowed_function(this);
		}
	}

	public final Analytic_windowed_functionContext analytic_windowed_function() throws RecognitionException {
		Analytic_windowed_functionContext _localctx = new Analytic_windowed_functionContext(_ctx, getState());
		enterRule(_localctx, 862, RULE_analytic_windowed_function);
		int _la;
		try {
			setState(10068);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case FIRST_VALUE:
			case LAST_VALUE:
				enterOuterAlt(_localctx, 1);
				{
				setState(10048);
				_la = _input.LA(1);
				if ( !(_la==FIRST_VALUE || _la==LAST_VALUE) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(10049);
				match(LR_BRACKET);
				setState(10050);
				expression(0);
				setState(10051);
				match(RR_BRACKET);
				setState(10052);
				over_clause();
				}
				break;
			case LAG:
			case LEAD:
				enterOuterAlt(_localctx, 2);
				{
				setState(10054);
				_la = _input.LA(1);
				if ( !(_la==LAG || _la==LEAD) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(10055);
				match(LR_BRACKET);
				setState(10056);
				expression(0);
				setState(10063);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==COMMA) {
					{
					setState(10057);
					match(COMMA);
					setState(10058);
					expression(0);
					setState(10061);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==COMMA) {
						{
						setState(10059);
						match(COMMA);
						setState(10060);
						expression(0);
						}
					}

					}
				}

				setState(10065);
				match(RR_BRACKET);
				setState(10066);
				over_clause();
				}
				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 All_distinct_expressionContext extends ParserRuleContext {
		public ExpressionContext expression() {
			return getRuleContext(ExpressionContext.class,0);
		}
		public TerminalNode ALL() { return getToken(TSqlParser.ALL, 0); }
		public TerminalNode DISTINCT() { return getToken(TSqlParser.DISTINCT, 0); }
		public All_distinct_expressionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_all_distinct_expression; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterAll_distinct_expression(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitAll_distinct_expression(this);
		}
	}

	public final All_distinct_expressionContext all_distinct_expression() throws RecognitionException {
		All_distinct_expressionContext _localctx = new All_distinct_expressionContext(_ctx, getState());
		enterRule(_localctx, 864, RULE_all_distinct_expression);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(10071);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==ALL || _la==DISTINCT) {
				{
				setState(10070);
				_la = _input.LA(1);
				if ( !(_la==ALL || _la==DISTINCT) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
			}

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

	public static class Over_clauseContext extends ParserRuleContext {
		public TerminalNode OVER() { return getToken(TSqlParser.OVER, 0); }
		public TerminalNode LR_BRACKET() { return getToken(TSqlParser.LR_BRACKET, 0); }
		public TerminalNode RR_BRACKET() { return getToken(TSqlParser.RR_BRACKET, 0); }
		public TerminalNode PARTITION() { return getToken(TSqlParser.PARTITION, 0); }
		public TerminalNode BY() { return getToken(TSqlParser.BY, 0); }
		public Expression_listContext expression_list() {
			return getRuleContext(Expression_listContext.class,0);
		}
		public Order_by_clauseContext order_by_clause() {
			return getRuleContext(Order_by_clauseContext.class,0);
		}
		public Row_or_range_clauseContext row_or_range_clause() {
			return getRuleContext(Row_or_range_clauseContext.class,0);
		}
		public Over_clauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_over_clause; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterOver_clause(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitOver_clause(this);
		}
	}

	public final Over_clauseContext over_clause() throws RecognitionException {
		Over_clauseContext _localctx = new Over_clauseContext(_ctx, getState());
		enterRule(_localctx, 866, RULE_over_clause);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(10075);
			match(OVER);
			setState(10076);
			match(LR_BRACKET);
			setState(10080);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==PARTITION) {
				{
				setState(10077);
				match(PARTITION);
				setState(10078);
				match(BY);
				setState(10079);
				expression_list();
				}
			}

			setState(10083);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==ORDER) {
				{
				setState(10082);
				order_by_clause();
				}
			}

			setState(10086);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==RANGE || _la==ROWS) {
				{
				setState(10085);
				row_or_range_clause();
				}
			}

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

	public static class Row_or_range_clauseContext extends ParserRuleContext {
		public Window_frame_extentContext window_frame_extent() {
			return getRuleContext(Window_frame_extentContext.class,0);
		}
		public TerminalNode ROWS() { return getToken(TSqlParser.ROWS, 0); }
		public TerminalNode RANGE() { return getToken(TSqlParser.RANGE, 0); }
		public Row_or_range_clauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_row_or_range_clause; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterRow_or_range_clause(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitRow_or_range_clause(this);
		}
	}

	public final Row_or_range_clauseContext row_or_range_clause() throws RecognitionException {
		Row_or_range_clauseContext _localctx = new Row_or_range_clauseContext(_ctx, getState());
		enterRule(_localctx, 868, RULE_row_or_range_clause);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(10090);
			_la = _input.LA(1);
			if ( !(_la==RANGE || _la==ROWS) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			setState(10091);
			window_frame_extent();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Window_frame_extentContext extends ParserRuleContext {
		public Window_frame_precedingContext window_frame_preceding() {
			return getRuleContext(Window_frame_precedingContext.class,0);
		}
		public TerminalNode BETWEEN() { return getToken(TSqlParser.BETWEEN, 0); }
		public List window_frame_bound() {
			return getRuleContexts(Window_frame_boundContext.class);
		}
		public Window_frame_boundContext window_frame_bound(int i) {
			return getRuleContext(Window_frame_boundContext.class,i);
		}
		public TerminalNode AND() { return getToken(TSqlParser.AND, 0); }
		public Window_frame_extentContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_window_frame_extent; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterWindow_frame_extent(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitWindow_frame_extent(this);
		}
	}

	public final Window_frame_extentContext window_frame_extent() throws RecognitionException {
		Window_frame_extentContext _localctx = new Window_frame_extentContext(_ctx, getState());
		enterRule(_localctx, 870, RULE_window_frame_extent);
		try {
			setState(10099);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case CURRENT:
			case UNBOUNDED:
			case DECIMAL:
				enterOuterAlt(_localctx, 1);
				{
				setState(10093);
				window_frame_preceding();
				}
				break;
			case BETWEEN:
				enterOuterAlt(_localctx, 2);
				{
				setState(10094);
				match(BETWEEN);
				setState(10095);
				window_frame_bound();
				setState(10096);
				match(AND);
				setState(10097);
				window_frame_bound();
				}
				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 Window_frame_boundContext extends ParserRuleContext {
		public Window_frame_precedingContext window_frame_preceding() {
			return getRuleContext(Window_frame_precedingContext.class,0);
		}
		public Window_frame_followingContext window_frame_following() {
			return getRuleContext(Window_frame_followingContext.class,0);
		}
		public Window_frame_boundContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_window_frame_bound; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterWindow_frame_bound(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitWindow_frame_bound(this);
		}
	}

	public final Window_frame_boundContext window_frame_bound() throws RecognitionException {
		Window_frame_boundContext _localctx = new Window_frame_boundContext(_ctx, getState());
		enterRule(_localctx, 872, RULE_window_frame_bound);
		try {
			setState(10103);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,1414,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(10101);
				window_frame_preceding();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(10102);
				window_frame_following();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Window_frame_precedingContext extends ParserRuleContext {
		public TerminalNode UNBOUNDED() { return getToken(TSqlParser.UNBOUNDED, 0); }
		public TerminalNode PRECEDING() { return getToken(TSqlParser.PRECEDING, 0); }
		public TerminalNode DECIMAL() { return getToken(TSqlParser.DECIMAL, 0); }
		public TerminalNode CURRENT() { return getToken(TSqlParser.CURRENT, 0); }
		public TerminalNode ROW() { return getToken(TSqlParser.ROW, 0); }
		public Window_frame_precedingContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_window_frame_preceding; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterWindow_frame_preceding(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitWindow_frame_preceding(this);
		}
	}

	public final Window_frame_precedingContext window_frame_preceding() throws RecognitionException {
		Window_frame_precedingContext _localctx = new Window_frame_precedingContext(_ctx, getState());
		enterRule(_localctx, 874, RULE_window_frame_preceding);
		try {
			setState(10111);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case UNBOUNDED:
				enterOuterAlt(_localctx, 1);
				{
				setState(10105);
				match(UNBOUNDED);
				setState(10106);
				match(PRECEDING);
				}
				break;
			case DECIMAL:
				enterOuterAlt(_localctx, 2);
				{
				setState(10107);
				match(DECIMAL);
				setState(10108);
				match(PRECEDING);
				}
				break;
			case CURRENT:
				enterOuterAlt(_localctx, 3);
				{
				setState(10109);
				match(CURRENT);
				setState(10110);
				match(ROW);
				}
				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 Window_frame_followingContext extends ParserRuleContext {
		public TerminalNode UNBOUNDED() { return getToken(TSqlParser.UNBOUNDED, 0); }
		public TerminalNode FOLLOWING() { return getToken(TSqlParser.FOLLOWING, 0); }
		public TerminalNode DECIMAL() { return getToken(TSqlParser.DECIMAL, 0); }
		public Window_frame_followingContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_window_frame_following; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterWindow_frame_following(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitWindow_frame_following(this);
		}
	}

	public final Window_frame_followingContext window_frame_following() throws RecognitionException {
		Window_frame_followingContext _localctx = new Window_frame_followingContext(_ctx, getState());
		enterRule(_localctx, 876, RULE_window_frame_following);
		try {
			setState(10117);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case UNBOUNDED:
				enterOuterAlt(_localctx, 1);
				{
				setState(10113);
				match(UNBOUNDED);
				setState(10114);
				match(FOLLOWING);
				}
				break;
			case DECIMAL:
				enterOuterAlt(_localctx, 2);
				{
				setState(10115);
				match(DECIMAL);
				setState(10116);
				match(FOLLOWING);
				}
				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 Create_database_optionContext extends ParserRuleContext {
		public TerminalNode FILESTREAM() { return getToken(TSqlParser.FILESTREAM, 0); }
		public List database_filestream_option() {
			return getRuleContexts(Database_filestream_optionContext.class);
		}
		public Database_filestream_optionContext database_filestream_option(int i) {
			return getRuleContext(Database_filestream_optionContext.class,i);
		}
		public List COMMA() { return getTokens(TSqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(TSqlParser.COMMA, i);
		}
		public TerminalNode DEFAULT_LANGUAGE() { return getToken(TSqlParser.DEFAULT_LANGUAGE, 0); }
		public TerminalNode EQUAL() { return getToken(TSqlParser.EQUAL, 0); }
		public IdContext id() {
			return getRuleContext(IdContext.class,0);
		}
		public TerminalNode STRING() { return getToken(TSqlParser.STRING, 0); }
		public TerminalNode DEFAULT_FULLTEXT_LANGUAGE() { return getToken(TSqlParser.DEFAULT_FULLTEXT_LANGUAGE, 0); }
		public TerminalNode NESTED_TRIGGERS() { return getToken(TSqlParser.NESTED_TRIGGERS, 0); }
		public TerminalNode OFF() { return getToken(TSqlParser.OFF, 0); }
		public TerminalNode ON() { return getToken(TSqlParser.ON, 0); }
		public TerminalNode TRANSFORM_NOISE_WORDS() { return getToken(TSqlParser.TRANSFORM_NOISE_WORDS, 0); }
		public TerminalNode TWO_DIGIT_YEAR_CUTOFF() { return getToken(TSqlParser.TWO_DIGIT_YEAR_CUTOFF, 0); }
		public TerminalNode DECIMAL() { return getToken(TSqlParser.DECIMAL, 0); }
		public TerminalNode DB_CHAINING() { return getToken(TSqlParser.DB_CHAINING, 0); }
		public TerminalNode TRUSTWORTHY() { return getToken(TSqlParser.TRUSTWORTHY, 0); }
		public Create_database_optionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_create_database_option; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterCreate_database_option(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitCreate_database_option(this);
		}
	}

	public final Create_database_optionContext create_database_option() throws RecognitionException {
		Create_database_optionContext _localctx = new Create_database_optionContext(_ctx, getState());
		enterRule(_localctx, 878, RULE_create_database_option);
		int _la;
		try {
			int _alt;
			setState(10153);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case FILESTREAM:
				enterOuterAlt(_localctx, 1);
				{
				setState(10119);
				match(FILESTREAM);
				{
				setState(10120);
				database_filestream_option();
				setState(10125);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,1417,_ctx);
				while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
					if ( _alt==1 ) {
						{
						{
						setState(10121);
						match(COMMA);
						setState(10122);
						database_filestream_option();
						}
						} 
					}
					setState(10127);
					_errHandler.sync(this);
					_alt = getInterpreter().adaptivePredict(_input,1417,_ctx);
				}
				}
				}
				break;
			case DEFAULT_LANGUAGE:
				enterOuterAlt(_localctx, 2);
				{
				setState(10128);
				match(DEFAULT_LANGUAGE);
				setState(10129);
				match(EQUAL);
				setState(10132);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case CALLED:
				case DATA_COMPRESSION:
				case EVENTDATA:
				case FILENAME:
				case FILLFACTOR:
				case FORCESEEK:
				case INIT:
				case KEY:
				case MASTER:
				case MAX_MEMORY:
				case OFFSETS:
				case PAGE:
				case PUBLIC:
				case R:
				case RAW:
				case RETURN:
				case RETURNS:
				case ROWCOUNT:
				case SAFETY:
				case SERVER:
				case SID:
				case SOURCE:
				case STATE:
				case START:
				case TARGET:
				case ABSOLUTE:
				case ACCENT_SENSITIVITY:
				case ACTION:
				case ACTIVATION:
				case ACTIVE:
				case ADDRESS:
				case AES_128:
				case AES_192:
				case AES_256:
				case AFFINITY:
				case AFTER:
				case AGGREGATE:
				case ALGORITHM:
				case ALLOW_ENCRYPTED_VALUE_MODIFICATIONS:
				case ALLOW_SNAPSHOT_ISOLATION:
				case ALLOWED:
				case ANSI_NULL_DEFAULT:
				case ANSI_NULLS:
				case ANSI_PADDING:
				case ANSI_WARNINGS:
				case APPLICATION_LOG:
				case APPLY:
				case ARITHABORT:
				case ASSEMBLY:
				case AUDIT:
				case AUDIT_GUID:
				case AUTO:
				case AUTO_CLEANUP:
				case AUTO_CLOSE:
				case AUTO_CREATE_STATISTICS:
				case AUTO_SHRINK:
				case AUTO_UPDATE_STATISTICS:
				case AUTO_UPDATE_STATISTICS_ASYNC:
				case AVAILABILITY:
				case AVG:
				case BACKUP_PRIORITY:
				case BEGIN_DIALOG:
				case BIGINT:
				case BINARY_BASE64:
				case BINARY_CHECKSUM:
				case BINDING:
				case BLOB_STORAGE:
				case BROKER:
				case BROKER_INSTANCE:
				case BULK_LOGGED:
				case CALLER:
				case CAP_CPU_PERCENT:
				case CAST:
				case CATALOG:
				case CATCH:
				case CHANGE_RETENTION:
				case CHANGE_TRACKING:
				case CHECKSUM:
				case CHECKSUM_AGG:
				case CLEANUP:
				case COLLECTION:
				case COLUMN_MASTER_KEY:
				case COMMITTED:
				case COMPATIBILITY_LEVEL:
				case CONCAT:
				case CONCAT_NULL_YIELDS_NULL:
				case CONTENT:
				case CONTROL:
				case COOKIE:
				case COUNT:
				case COUNT_BIG:
				case COUNTER:
				case CPU:
				case CREATE_NEW:
				case CREATION_DISPOSITION:
				case CREDENTIAL:
				case CRYPTOGRAPHIC:
				case CURSOR_CLOSE_ON_COMMIT:
				case CURSOR_DEFAULT:
				case DATE_CORRELATION_OPTIMIZATION:
				case DATEADD:
				case DATEDIFF:
				case DATENAME:
				case DATEPART:
				case DAYS:
				case DB_CHAINING:
				case DB_FAILOVER:
				case DECRYPTION:
				case DEFAULT_DOUBLE_QUOTE:
				case DEFAULT_FULLTEXT_LANGUAGE:
				case DEFAULT_LANGUAGE:
				case DELAY:
				case DELAYED_DURABILITY:
				case DELETED:
				case DENSE_RANK:
				case DEPENDENTS:
				case DES:
				case DESCRIPTION:
				case DESX:
				case DHCP:
				case DIALOG:
				case DIRECTORY_NAME:
				case DISABLE:
				case DISABLE_BROKER:
				case DISABLED:
				case DISK_DRIVE:
				case DOCUMENT:
				case DYNAMIC:
				case EMERGENCY:
				case EMPTY:
				case ENABLE:
				case ENABLE_BROKER:
				case ENCRYPTED_VALUE:
				case ENCRYPTION:
				case ENDPOINT_URL:
				case ERROR_BROKER_CONVERSATIONS:
				case EXCLUSIVE:
				case EXECUTABLE:
				case EXIST:
				case EXPAND:
				case EXPIRY_DATE:
				case EXPLICIT:
				case FAIL_OPERATION:
				case FAILOVER_MODE:
				case FAILURE:
				case FAILURE_CONDITION_LEVEL:
				case FAST:
				case FAST_FORWARD:
				case FILEGROUP:
				case FILEGROWTH:
				case FILEPATH:
				case FILESTREAM:
				case FILTER:
				case FIRST:
				case FIRST_VALUE:
				case FOLLOWING:
				case FORCE:
				case FORCE_FAILOVER_ALLOW_DATA_LOSS:
				case FORCED:
				case FORMAT:
				case FORWARD_ONLY:
				case FULLSCAN:
				case FULLTEXT:
				case GB:
				case GETDATE:
				case GETUTCDATE:
				case GLOBAL:
				case GO:
				case GROUP_MAX_REQUESTS:
				case GROUPING:
				case GROUPING_ID:
				case HADR:
				case HASH:
				case HEALTH_CHECK_TIMEOUT:
				case HIGH:
				case HONOR_BROKER_PRIORITY:
				case HOURS:
				case IDENTITY_VALUE:
				case IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX:
				case IMMEDIATE:
				case IMPERSONATE:
				case IMPORTANCE:
				case INCREMENTAL:
				case INITIATOR:
				case INPUT:
				case INSENSITIVE:
				case INSERTED:
				case INT:
				case IP:
				case ISOLATION:
				case KB:
				case KEEP:
				case KEEPFIXED:
				case KEY_SOURCE:
				case KEYS:
				case KEYSET:
				case LAG:
				case LAST:
				case LAST_VALUE:
				case LEAD:
				case LEVEL:
				case LIST:
				case LISTENER:
				case LISTENER_URL:
				case LOB_COMPACTION:
				case LOCAL:
				case LOCATION:
				case LOCK:
				case LOCK_ESCALATION:
				case LOGIN:
				case LOOP:
				case LOW:
				case MANUAL:
				case MARK:
				case MATERIALIZED:
				case MAX:
				case MAX_CPU_PERCENT:
				case MAX_DOP:
				case MAX_FILES:
				case MAX_IOPS_PER_VOLUME:
				case MAX_MEMORY_PERCENT:
				case MAX_PROCESSES:
				case MAX_QUEUE_READERS:
				case MAX_ROLLOVER_FILES:
				case MAXDOP:
				case MAXRECURSION:
				case MAXSIZE:
				case MB:
				case MEDIUM:
				case MEMORY_OPTIMIZED_DATA:
				case MESSAGE:
				case MIN:
				case MIN_ACTIVE_ROWVERSION:
				case MIN_CPU_PERCENT:
				case MIN_IOPS_PER_VOLUME:
				case MIN_MEMORY_PERCENT:
				case MINUTES:
				case MIRROR_ADDRESS:
				case MIXED_PAGE_ALLOCATION:
				case MODE:
				case MODIFY:
				case MOVE:
				case MULTI_USER:
				case NAME:
				case NESTED_TRIGGERS:
				case NEW_ACCOUNT:
				case NEW_BROKER:
				case NEW_PASSWORD:
				case NEXT:
				case NO:
				case NO_TRUNCATE:
				case NO_WAIT:
				case NOCOUNT:
				case NODES:
				case NOEXPAND:
				case NON_TRANSACTED_ACCESS:
				case NORECOMPUTE:
				case NORECOVERY:
				case NOWAIT:
				case NTILE:
				case NUMANODE:
				case NUMBER:
				case NUMERIC_ROUNDABORT:
				case OBJECT:
				case OFFLINE:
				case OFFSET:
				case OLD_ACCOUNT:
				case ONLINE:
				case ONLY:
				case OPEN_EXISTING:
				case OPTIMISTIC:
				case OPTIMIZE:
				case OUT:
				case OUTPUT:
				case OWNER:
				case PAGE_VERIFY:
				case PARAMETERIZATION:
				case PARTITION:
				case PARTITIONS:
				case PARTNER:
				case PATH:
				case POISON_MESSAGE_HANDLING:
				case POOL:
				case PORT:
				case PRECEDING:
				case PRIMARY_ROLE:
				case PRIOR:
				case PRIORITY:
				case PRIORITY_LEVEL:
				case PRIVATE:
				case PRIVATE_KEY:
				case PRIVILEGES:
				case PROCEDURE_NAME:
				case PROPERTY:
				case PROVIDER:
				case PROVIDER_KEY_NAME:
				case QUERY:
				case QUEUE:
				case QUEUE_DELAY:
				case QUOTED_IDENTIFIER:
				case RANGE:
				case RANK:
				case RC2:
				case RC4:
				case RC4_128:
				case READ_COMMITTED_SNAPSHOT:
				case READ_ONLY:
				case READ_ONLY_ROUTING_LIST:
				case READ_WRITE:
				case READONLY:
				case REBUILD:
				case RECEIVE:
				case RECOMPILE:
				case RECOVERY:
				case RECURSIVE_TRIGGERS:
				case RELATIVE:
				case REMOTE:
				case REMOTE_SERVICE_NAME:
				case REMOVE:
				case REORGANIZE:
				case REPEATABLE:
				case REPLICA:
				case REQUEST_MAX_CPU_TIME_SEC:
				case REQUEST_MAX_MEMORY_GRANT_PERCENT:
				case REQUEST_MEMORY_GRANT_TIMEOUT_SEC:
				case REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT:
				case RESERVE_DISK_SPACE:
				case RESOURCE:
				case RESOURCE_MANAGER_LOCATION:
				case RESTRICTED_USER:
				case RETENTION:
				case ROBUST:
				case ROOT:
				case ROUTE:
				case ROW:
				case ROW_NUMBER:
				case ROWGUID:
				case ROWS:
				case SAMPLE:
				case SCHEMABINDING:
				case SCOPED:
				case SCROLL:
				case SCROLL_LOCKS:
				case SEARCH:
				case SECONDARY:
				case SECONDARY_ONLY:
				case SECONDARY_ROLE:
				case SECONDS:
				case SECRET:
				case SECURITY_LOG:
				case SEEDING_MODE:
				case SELF:
				case SEMI_SENSITIVE:
				case SEND:
				case SENT:
				case SERIALIZABLE:
				case SESSION_TIMEOUT:
				case SETERROR:
				case SHARE:
				case SHOWPLAN:
				case SIGNATURE:
				case SIMPLE:
				case SINGLE_USER:
				case SIZE:
				case SMALLINT:
				case SNAPSHOT:
				case SPATIAL_WINDOW_MAX_CELLS:
				case STANDBY:
				case START_DATE:
				case STATIC:
				case STATS_STREAM:
				case STATUS:
				case STDEV:
				case STDEVP:
				case STOPLIST:
				case STUFF:
				case SUBJECT:
				case SUM:
				case SUSPEND:
				case SYMMETRIC:
				case SYNCHRONOUS_COMMIT:
				case SYNONYM:
				case TAKE:
				case TARGET_RECOVERY_TIME:
				case TB:
				case TEXTIMAGE_ON:
				case THROW:
				case TIES:
				case TIME:
				case TIMEOUT:
				case TIMER:
				case TINYINT:
				case TORN_PAGE_DETECTION:
				case TRANSFORM_NOISE_WORDS:
				case TRIPLE_DES:
				case TRIPLE_DES_3KEY:
				case TRUSTWORTHY:
				case TRY:
				case TSQL:
				case TWO_DIGIT_YEAR_CUTOFF:
				case TYPE:
				case TYPE_WARNING:
				case UNBOUNDED:
				case UNCOMMITTED:
				case UNKNOWN:
				case UNLIMITED:
				case USING:
				case VALID_XML:
				case VALIDATION:
				case VALUE:
				case VAR:
				case VARP:
				case VIEW_METADATA:
				case VIEWS:
				case WAIT:
				case WELL_FORMED_XML:
				case WORK:
				case WORKLOAD:
				case XML:
				case XMLNAMESPACES:
				case DOUBLE_QUOTE_ID:
				case SQUARE_BRACKET_ID:
				case ID:
					{
					setState(10130);
					id();
					}
					break;
				case STRING:
					{
					setState(10131);
					match(STRING);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;
			case DEFAULT_FULLTEXT_LANGUAGE:
				enterOuterAlt(_localctx, 3);
				{
				setState(10134);
				match(DEFAULT_FULLTEXT_LANGUAGE);
				setState(10135);
				match(EQUAL);
				setState(10138);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case CALLED:
				case DATA_COMPRESSION:
				case EVENTDATA:
				case FILENAME:
				case FILLFACTOR:
				case FORCESEEK:
				case INIT:
				case KEY:
				case MASTER:
				case MAX_MEMORY:
				case OFFSETS:
				case PAGE:
				case PUBLIC:
				case R:
				case RAW:
				case RETURN:
				case RETURNS:
				case ROWCOUNT:
				case SAFETY:
				case SERVER:
				case SID:
				case SOURCE:
				case STATE:
				case START:
				case TARGET:
				case ABSOLUTE:
				case ACCENT_SENSITIVITY:
				case ACTION:
				case ACTIVATION:
				case ACTIVE:
				case ADDRESS:
				case AES_128:
				case AES_192:
				case AES_256:
				case AFFINITY:
				case AFTER:
				case AGGREGATE:
				case ALGORITHM:
				case ALLOW_ENCRYPTED_VALUE_MODIFICATIONS:
				case ALLOW_SNAPSHOT_ISOLATION:
				case ALLOWED:
				case ANSI_NULL_DEFAULT:
				case ANSI_NULLS:
				case ANSI_PADDING:
				case ANSI_WARNINGS:
				case APPLICATION_LOG:
				case APPLY:
				case ARITHABORT:
				case ASSEMBLY:
				case AUDIT:
				case AUDIT_GUID:
				case AUTO:
				case AUTO_CLEANUP:
				case AUTO_CLOSE:
				case AUTO_CREATE_STATISTICS:
				case AUTO_SHRINK:
				case AUTO_UPDATE_STATISTICS:
				case AUTO_UPDATE_STATISTICS_ASYNC:
				case AVAILABILITY:
				case AVG:
				case BACKUP_PRIORITY:
				case BEGIN_DIALOG:
				case BIGINT:
				case BINARY_BASE64:
				case BINARY_CHECKSUM:
				case BINDING:
				case BLOB_STORAGE:
				case BROKER:
				case BROKER_INSTANCE:
				case BULK_LOGGED:
				case CALLER:
				case CAP_CPU_PERCENT:
				case CAST:
				case CATALOG:
				case CATCH:
				case CHANGE_RETENTION:
				case CHANGE_TRACKING:
				case CHECKSUM:
				case CHECKSUM_AGG:
				case CLEANUP:
				case COLLECTION:
				case COLUMN_MASTER_KEY:
				case COMMITTED:
				case COMPATIBILITY_LEVEL:
				case CONCAT:
				case CONCAT_NULL_YIELDS_NULL:
				case CONTENT:
				case CONTROL:
				case COOKIE:
				case COUNT:
				case COUNT_BIG:
				case COUNTER:
				case CPU:
				case CREATE_NEW:
				case CREATION_DISPOSITION:
				case CREDENTIAL:
				case CRYPTOGRAPHIC:
				case CURSOR_CLOSE_ON_COMMIT:
				case CURSOR_DEFAULT:
				case DATE_CORRELATION_OPTIMIZATION:
				case DATEADD:
				case DATEDIFF:
				case DATENAME:
				case DATEPART:
				case DAYS:
				case DB_CHAINING:
				case DB_FAILOVER:
				case DECRYPTION:
				case DEFAULT_DOUBLE_QUOTE:
				case DEFAULT_FULLTEXT_LANGUAGE:
				case DEFAULT_LANGUAGE:
				case DELAY:
				case DELAYED_DURABILITY:
				case DELETED:
				case DENSE_RANK:
				case DEPENDENTS:
				case DES:
				case DESCRIPTION:
				case DESX:
				case DHCP:
				case DIALOG:
				case DIRECTORY_NAME:
				case DISABLE:
				case DISABLE_BROKER:
				case DISABLED:
				case DISK_DRIVE:
				case DOCUMENT:
				case DYNAMIC:
				case EMERGENCY:
				case EMPTY:
				case ENABLE:
				case ENABLE_BROKER:
				case ENCRYPTED_VALUE:
				case ENCRYPTION:
				case ENDPOINT_URL:
				case ERROR_BROKER_CONVERSATIONS:
				case EXCLUSIVE:
				case EXECUTABLE:
				case EXIST:
				case EXPAND:
				case EXPIRY_DATE:
				case EXPLICIT:
				case FAIL_OPERATION:
				case FAILOVER_MODE:
				case FAILURE:
				case FAILURE_CONDITION_LEVEL:
				case FAST:
				case FAST_FORWARD:
				case FILEGROUP:
				case FILEGROWTH:
				case FILEPATH:
				case FILESTREAM:
				case FILTER:
				case FIRST:
				case FIRST_VALUE:
				case FOLLOWING:
				case FORCE:
				case FORCE_FAILOVER_ALLOW_DATA_LOSS:
				case FORCED:
				case FORMAT:
				case FORWARD_ONLY:
				case FULLSCAN:
				case FULLTEXT:
				case GB:
				case GETDATE:
				case GETUTCDATE:
				case GLOBAL:
				case GO:
				case GROUP_MAX_REQUESTS:
				case GROUPING:
				case GROUPING_ID:
				case HADR:
				case HASH:
				case HEALTH_CHECK_TIMEOUT:
				case HIGH:
				case HONOR_BROKER_PRIORITY:
				case HOURS:
				case IDENTITY_VALUE:
				case IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX:
				case IMMEDIATE:
				case IMPERSONATE:
				case IMPORTANCE:
				case INCREMENTAL:
				case INITIATOR:
				case INPUT:
				case INSENSITIVE:
				case INSERTED:
				case INT:
				case IP:
				case ISOLATION:
				case KB:
				case KEEP:
				case KEEPFIXED:
				case KEY_SOURCE:
				case KEYS:
				case KEYSET:
				case LAG:
				case LAST:
				case LAST_VALUE:
				case LEAD:
				case LEVEL:
				case LIST:
				case LISTENER:
				case LISTENER_URL:
				case LOB_COMPACTION:
				case LOCAL:
				case LOCATION:
				case LOCK:
				case LOCK_ESCALATION:
				case LOGIN:
				case LOOP:
				case LOW:
				case MANUAL:
				case MARK:
				case MATERIALIZED:
				case MAX:
				case MAX_CPU_PERCENT:
				case MAX_DOP:
				case MAX_FILES:
				case MAX_IOPS_PER_VOLUME:
				case MAX_MEMORY_PERCENT:
				case MAX_PROCESSES:
				case MAX_QUEUE_READERS:
				case MAX_ROLLOVER_FILES:
				case MAXDOP:
				case MAXRECURSION:
				case MAXSIZE:
				case MB:
				case MEDIUM:
				case MEMORY_OPTIMIZED_DATA:
				case MESSAGE:
				case MIN:
				case MIN_ACTIVE_ROWVERSION:
				case MIN_CPU_PERCENT:
				case MIN_IOPS_PER_VOLUME:
				case MIN_MEMORY_PERCENT:
				case MINUTES:
				case MIRROR_ADDRESS:
				case MIXED_PAGE_ALLOCATION:
				case MODE:
				case MODIFY:
				case MOVE:
				case MULTI_USER:
				case NAME:
				case NESTED_TRIGGERS:
				case NEW_ACCOUNT:
				case NEW_BROKER:
				case NEW_PASSWORD:
				case NEXT:
				case NO:
				case NO_TRUNCATE:
				case NO_WAIT:
				case NOCOUNT:
				case NODES:
				case NOEXPAND:
				case NON_TRANSACTED_ACCESS:
				case NORECOMPUTE:
				case NORECOVERY:
				case NOWAIT:
				case NTILE:
				case NUMANODE:
				case NUMBER:
				case NUMERIC_ROUNDABORT:
				case OBJECT:
				case OFFLINE:
				case OFFSET:
				case OLD_ACCOUNT:
				case ONLINE:
				case ONLY:
				case OPEN_EXISTING:
				case OPTIMISTIC:
				case OPTIMIZE:
				case OUT:
				case OUTPUT:
				case OWNER:
				case PAGE_VERIFY:
				case PARAMETERIZATION:
				case PARTITION:
				case PARTITIONS:
				case PARTNER:
				case PATH:
				case POISON_MESSAGE_HANDLING:
				case POOL:
				case PORT:
				case PRECEDING:
				case PRIMARY_ROLE:
				case PRIOR:
				case PRIORITY:
				case PRIORITY_LEVEL:
				case PRIVATE:
				case PRIVATE_KEY:
				case PRIVILEGES:
				case PROCEDURE_NAME:
				case PROPERTY:
				case PROVIDER:
				case PROVIDER_KEY_NAME:
				case QUERY:
				case QUEUE:
				case QUEUE_DELAY:
				case QUOTED_IDENTIFIER:
				case RANGE:
				case RANK:
				case RC2:
				case RC4:
				case RC4_128:
				case READ_COMMITTED_SNAPSHOT:
				case READ_ONLY:
				case READ_ONLY_ROUTING_LIST:
				case READ_WRITE:
				case READONLY:
				case REBUILD:
				case RECEIVE:
				case RECOMPILE:
				case RECOVERY:
				case RECURSIVE_TRIGGERS:
				case RELATIVE:
				case REMOTE:
				case REMOTE_SERVICE_NAME:
				case REMOVE:
				case REORGANIZE:
				case REPEATABLE:
				case REPLICA:
				case REQUEST_MAX_CPU_TIME_SEC:
				case REQUEST_MAX_MEMORY_GRANT_PERCENT:
				case REQUEST_MEMORY_GRANT_TIMEOUT_SEC:
				case REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT:
				case RESERVE_DISK_SPACE:
				case RESOURCE:
				case RESOURCE_MANAGER_LOCATION:
				case RESTRICTED_USER:
				case RETENTION:
				case ROBUST:
				case ROOT:
				case ROUTE:
				case ROW:
				case ROW_NUMBER:
				case ROWGUID:
				case ROWS:
				case SAMPLE:
				case SCHEMABINDING:
				case SCOPED:
				case SCROLL:
				case SCROLL_LOCKS:
				case SEARCH:
				case SECONDARY:
				case SECONDARY_ONLY:
				case SECONDARY_ROLE:
				case SECONDS:
				case SECRET:
				case SECURITY_LOG:
				case SEEDING_MODE:
				case SELF:
				case SEMI_SENSITIVE:
				case SEND:
				case SENT:
				case SERIALIZABLE:
				case SESSION_TIMEOUT:
				case SETERROR:
				case SHARE:
				case SHOWPLAN:
				case SIGNATURE:
				case SIMPLE:
				case SINGLE_USER:
				case SIZE:
				case SMALLINT:
				case SNAPSHOT:
				case SPATIAL_WINDOW_MAX_CELLS:
				case STANDBY:
				case START_DATE:
				case STATIC:
				case STATS_STREAM:
				case STATUS:
				case STDEV:
				case STDEVP:
				case STOPLIST:
				case STUFF:
				case SUBJECT:
				case SUM:
				case SUSPEND:
				case SYMMETRIC:
				case SYNCHRONOUS_COMMIT:
				case SYNONYM:
				case TAKE:
				case TARGET_RECOVERY_TIME:
				case TB:
				case TEXTIMAGE_ON:
				case THROW:
				case TIES:
				case TIME:
				case TIMEOUT:
				case TIMER:
				case TINYINT:
				case TORN_PAGE_DETECTION:
				case TRANSFORM_NOISE_WORDS:
				case TRIPLE_DES:
				case TRIPLE_DES_3KEY:
				case TRUSTWORTHY:
				case TRY:
				case TSQL:
				case TWO_DIGIT_YEAR_CUTOFF:
				case TYPE:
				case TYPE_WARNING:
				case UNBOUNDED:
				case UNCOMMITTED:
				case UNKNOWN:
				case UNLIMITED:
				case USING:
				case VALID_XML:
				case VALIDATION:
				case VALUE:
				case VAR:
				case VARP:
				case VIEW_METADATA:
				case VIEWS:
				case WAIT:
				case WELL_FORMED_XML:
				case WORK:
				case WORKLOAD:
				case XML:
				case XMLNAMESPACES:
				case DOUBLE_QUOTE_ID:
				case SQUARE_BRACKET_ID:
				case ID:
					{
					setState(10136);
					id();
					}
					break;
				case STRING:
					{
					setState(10137);
					match(STRING);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;
			case NESTED_TRIGGERS:
				enterOuterAlt(_localctx, 4);
				{
				setState(10140);
				match(NESTED_TRIGGERS);
				setState(10141);
				match(EQUAL);
				setState(10142);
				_la = _input.LA(1);
				if ( !(_la==OFF || _la==ON) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
				break;
			case TRANSFORM_NOISE_WORDS:
				enterOuterAlt(_localctx, 5);
				{
				setState(10143);
				match(TRANSFORM_NOISE_WORDS);
				setState(10144);
				match(EQUAL);
				setState(10145);
				_la = _input.LA(1);
				if ( !(_la==OFF || _la==ON) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
				break;
			case TWO_DIGIT_YEAR_CUTOFF:
				enterOuterAlt(_localctx, 6);
				{
				setState(10146);
				match(TWO_DIGIT_YEAR_CUTOFF);
				setState(10147);
				match(EQUAL);
				setState(10148);
				match(DECIMAL);
				}
				break;
			case DB_CHAINING:
				enterOuterAlt(_localctx, 7);
				{
				setState(10149);
				match(DB_CHAINING);
				setState(10150);
				_la = _input.LA(1);
				if ( !(_la==OFF || _la==ON) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
				break;
			case TRUSTWORTHY:
				enterOuterAlt(_localctx, 8);
				{
				setState(10151);
				match(TRUSTWORTHY);
				setState(10152);
				_la = _input.LA(1);
				if ( !(_la==OFF || _la==ON) ) {
				_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 Database_filestream_optionContext extends ParserRuleContext {
		public TerminalNode LR_BRACKET() { return getToken(TSqlParser.LR_BRACKET, 0); }
		public TerminalNode RR_BRACKET() { return getToken(TSqlParser.RR_BRACKET, 0); }
		public TerminalNode NON_TRANSACTED_ACCESS() { return getToken(TSqlParser.NON_TRANSACTED_ACCESS, 0); }
		public TerminalNode EQUAL() { return getToken(TSqlParser.EQUAL, 0); }
		public TerminalNode DIRECTORY_NAME() { return getToken(TSqlParser.DIRECTORY_NAME, 0); }
		public TerminalNode STRING() { return getToken(TSqlParser.STRING, 0); }
		public TerminalNode OFF() { return getToken(TSqlParser.OFF, 0); }
		public TerminalNode READ_ONLY() { return getToken(TSqlParser.READ_ONLY, 0); }
		public TerminalNode FULL() { return getToken(TSqlParser.FULL, 0); }
		public Database_filestream_optionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_database_filestream_option; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterDatabase_filestream_option(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitDatabase_filestream_option(this);
		}
	}

	public final Database_filestream_optionContext database_filestream_option() throws RecognitionException {
		Database_filestream_optionContext _localctx = new Database_filestream_optionContext(_ctx, getState());
		enterRule(_localctx, 880, RULE_database_filestream_option);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(10155);
			match(LR_BRACKET);
			setState(10162);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case NON_TRANSACTED_ACCESS:
				{
				{
				setState(10156);
				match(NON_TRANSACTED_ACCESS);
				setState(10157);
				match(EQUAL);
				setState(10158);
				_la = _input.LA(1);
				if ( !(_la==FULL || _la==OFF || _la==READ_ONLY) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
				}
				break;
			case DIRECTORY_NAME:
				{
				{
				setState(10159);
				match(DIRECTORY_NAME);
				setState(10160);
				match(EQUAL);
				setState(10161);
				match(STRING);
				}
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			setState(10164);
			match(RR_BRACKET);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Database_file_specContext extends ParserRuleContext {
		public File_groupContext file_group() {
			return getRuleContext(File_groupContext.class,0);
		}
		public File_specContext file_spec() {
			return getRuleContext(File_specContext.class,0);
		}
		public Database_file_specContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_database_file_spec; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterDatabase_file_spec(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitDatabase_file_spec(this);
		}
	}

	public final Database_file_specContext database_file_spec() throws RecognitionException {
		Database_file_specContext _localctx = new Database_file_specContext(_ctx, getState());
		enterRule(_localctx, 882, RULE_database_file_spec);
		try {
			setState(10168);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case FILEGROUP:
				enterOuterAlt(_localctx, 1);
				{
				setState(10166);
				file_group();
				}
				break;
			case LR_BRACKET:
				enterOuterAlt(_localctx, 2);
				{
				setState(10167);
				file_spec();
				}
				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 File_groupContext extends ParserRuleContext {
		public TerminalNode FILEGROUP() { return getToken(TSqlParser.FILEGROUP, 0); }
		public IdContext id() {
			return getRuleContext(IdContext.class,0);
		}
		public List file_spec() {
			return getRuleContexts(File_specContext.class);
		}
		public File_specContext file_spec(int i) {
			return getRuleContext(File_specContext.class,i);
		}
		public List CONTAINS() { return getTokens(TSqlParser.CONTAINS); }
		public TerminalNode CONTAINS(int i) {
			return getToken(TSqlParser.CONTAINS, i);
		}
		public TerminalNode FILESTREAM() { return getToken(TSqlParser.FILESTREAM, 0); }
		public TerminalNode DEFAULT() { return getToken(TSqlParser.DEFAULT, 0); }
		public TerminalNode MEMORY_OPTIMIZED_DATA() { return getToken(TSqlParser.MEMORY_OPTIMIZED_DATA, 0); }
		public List COMMA() { return getTokens(TSqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(TSqlParser.COMMA, i);
		}
		public File_groupContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_file_group; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterFile_group(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitFile_group(this);
		}
	}

	public final File_groupContext file_group() throws RecognitionException {
		File_groupContext _localctx = new File_groupContext(_ctx, getState());
		enterRule(_localctx, 884, RULE_file_group);
		int _la;
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			setState(10170);
			match(FILEGROUP);
			setState(10171);
			id();
			setState(10174);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,1423,_ctx) ) {
			case 1:
				{
				setState(10172);
				match(CONTAINS);
				setState(10173);
				match(FILESTREAM);
				}
				break;
			}
			setState(10177);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==DEFAULT) {
				{
				setState(10176);
				match(DEFAULT);
				}
			}

			setState(10181);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==CONTAINS) {
				{
				setState(10179);
				match(CONTAINS);
				setState(10180);
				match(MEMORY_OPTIMIZED_DATA);
				}
			}

			setState(10183);
			file_spec();
			setState(10188);
			_errHandler.sync(this);
			_alt = getInterpreter().adaptivePredict(_input,1426,_ctx);
			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
				if ( _alt==1 ) {
					{
					{
					setState(10184);
					match(COMMA);
					setState(10185);
					file_spec();
					}
					} 
				}
				setState(10190);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,1426,_ctx);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class File_specContext extends ParserRuleContext {
		public Token file;
		public TerminalNode LR_BRACKET() { return getToken(TSqlParser.LR_BRACKET, 0); }
		public TerminalNode NAME() { return getToken(TSqlParser.NAME, 0); }
		public List EQUAL() { return getTokens(TSqlParser.EQUAL); }
		public TerminalNode EQUAL(int i) {
			return getToken(TSqlParser.EQUAL, i);
		}
		public TerminalNode FILENAME() { return getToken(TSqlParser.FILENAME, 0); }
		public TerminalNode RR_BRACKET() { return getToken(TSqlParser.RR_BRACKET, 0); }
		public List STRING() { return getTokens(TSqlParser.STRING); }
		public TerminalNode STRING(int i) {
			return getToken(TSqlParser.STRING, i);
		}
		public IdContext id() {
			return getRuleContext(IdContext.class,0);
		}
		public List COMMA() { return getTokens(TSqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(TSqlParser.COMMA, i);
		}
		public TerminalNode SIZE() { return getToken(TSqlParser.SIZE, 0); }
		public List file_size() {
			return getRuleContexts(File_sizeContext.class);
		}
		public File_sizeContext file_size(int i) {
			return getRuleContext(File_sizeContext.class,i);
		}
		public TerminalNode MAXSIZE() { return getToken(TSqlParser.MAXSIZE, 0); }
		public TerminalNode FILEGROWTH() { return getToken(TSqlParser.FILEGROWTH, 0); }
		public TerminalNode UNLIMITED() { return getToken(TSqlParser.UNLIMITED, 0); }
		public File_specContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_file_spec; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterFile_spec(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitFile_spec(this);
		}
	}

	public final File_specContext file_spec() throws RecognitionException {
		File_specContext _localctx = new File_specContext(_ctx, getState());
		enterRule(_localctx, 886, RULE_file_spec);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(10191);
			match(LR_BRACKET);
			setState(10192);
			match(NAME);
			setState(10193);
			match(EQUAL);
			setState(10196);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case CALLED:
			case DATA_COMPRESSION:
			case EVENTDATA:
			case FILENAME:
			case FILLFACTOR:
			case FORCESEEK:
			case INIT:
			case KEY:
			case MASTER:
			case MAX_MEMORY:
			case OFFSETS:
			case PAGE:
			case PUBLIC:
			case R:
			case RAW:
			case RETURN:
			case RETURNS:
			case ROWCOUNT:
			case SAFETY:
			case SERVER:
			case SID:
			case SOURCE:
			case STATE:
			case START:
			case TARGET:
			case ABSOLUTE:
			case ACCENT_SENSITIVITY:
			case ACTION:
			case ACTIVATION:
			case ACTIVE:
			case ADDRESS:
			case AES_128:
			case AES_192:
			case AES_256:
			case AFFINITY:
			case AFTER:
			case AGGREGATE:
			case ALGORITHM:
			case ALLOW_ENCRYPTED_VALUE_MODIFICATIONS:
			case ALLOW_SNAPSHOT_ISOLATION:
			case ALLOWED:
			case ANSI_NULL_DEFAULT:
			case ANSI_NULLS:
			case ANSI_PADDING:
			case ANSI_WARNINGS:
			case APPLICATION_LOG:
			case APPLY:
			case ARITHABORT:
			case ASSEMBLY:
			case AUDIT:
			case AUDIT_GUID:
			case AUTO:
			case AUTO_CLEANUP:
			case AUTO_CLOSE:
			case AUTO_CREATE_STATISTICS:
			case AUTO_SHRINK:
			case AUTO_UPDATE_STATISTICS:
			case AUTO_UPDATE_STATISTICS_ASYNC:
			case AVAILABILITY:
			case AVG:
			case BACKUP_PRIORITY:
			case BEGIN_DIALOG:
			case BIGINT:
			case BINARY_BASE64:
			case BINARY_CHECKSUM:
			case BINDING:
			case BLOB_STORAGE:
			case BROKER:
			case BROKER_INSTANCE:
			case BULK_LOGGED:
			case CALLER:
			case CAP_CPU_PERCENT:
			case CAST:
			case CATALOG:
			case CATCH:
			case CHANGE_RETENTION:
			case CHANGE_TRACKING:
			case CHECKSUM:
			case CHECKSUM_AGG:
			case CLEANUP:
			case COLLECTION:
			case COLUMN_MASTER_KEY:
			case COMMITTED:
			case COMPATIBILITY_LEVEL:
			case CONCAT:
			case CONCAT_NULL_YIELDS_NULL:
			case CONTENT:
			case CONTROL:
			case COOKIE:
			case COUNT:
			case COUNT_BIG:
			case COUNTER:
			case CPU:
			case CREATE_NEW:
			case CREATION_DISPOSITION:
			case CREDENTIAL:
			case CRYPTOGRAPHIC:
			case CURSOR_CLOSE_ON_COMMIT:
			case CURSOR_DEFAULT:
			case DATE_CORRELATION_OPTIMIZATION:
			case DATEADD:
			case DATEDIFF:
			case DATENAME:
			case DATEPART:
			case DAYS:
			case DB_CHAINING:
			case DB_FAILOVER:
			case DECRYPTION:
			case DEFAULT_DOUBLE_QUOTE:
			case DEFAULT_FULLTEXT_LANGUAGE:
			case DEFAULT_LANGUAGE:
			case DELAY:
			case DELAYED_DURABILITY:
			case DELETED:
			case DENSE_RANK:
			case DEPENDENTS:
			case DES:
			case DESCRIPTION:
			case DESX:
			case DHCP:
			case DIALOG:
			case DIRECTORY_NAME:
			case DISABLE:
			case DISABLE_BROKER:
			case DISABLED:
			case DISK_DRIVE:
			case DOCUMENT:
			case DYNAMIC:
			case EMERGENCY:
			case EMPTY:
			case ENABLE:
			case ENABLE_BROKER:
			case ENCRYPTED_VALUE:
			case ENCRYPTION:
			case ENDPOINT_URL:
			case ERROR_BROKER_CONVERSATIONS:
			case EXCLUSIVE:
			case EXECUTABLE:
			case EXIST:
			case EXPAND:
			case EXPIRY_DATE:
			case EXPLICIT:
			case FAIL_OPERATION:
			case FAILOVER_MODE:
			case FAILURE:
			case FAILURE_CONDITION_LEVEL:
			case FAST:
			case FAST_FORWARD:
			case FILEGROUP:
			case FILEGROWTH:
			case FILEPATH:
			case FILESTREAM:
			case FILTER:
			case FIRST:
			case FIRST_VALUE:
			case FOLLOWING:
			case FORCE:
			case FORCE_FAILOVER_ALLOW_DATA_LOSS:
			case FORCED:
			case FORMAT:
			case FORWARD_ONLY:
			case FULLSCAN:
			case FULLTEXT:
			case GB:
			case GETDATE:
			case GETUTCDATE:
			case GLOBAL:
			case GO:
			case GROUP_MAX_REQUESTS:
			case GROUPING:
			case GROUPING_ID:
			case HADR:
			case HASH:
			case HEALTH_CHECK_TIMEOUT:
			case HIGH:
			case HONOR_BROKER_PRIORITY:
			case HOURS:
			case IDENTITY_VALUE:
			case IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX:
			case IMMEDIATE:
			case IMPERSONATE:
			case IMPORTANCE:
			case INCREMENTAL:
			case INITIATOR:
			case INPUT:
			case INSENSITIVE:
			case INSERTED:
			case INT:
			case IP:
			case ISOLATION:
			case KB:
			case KEEP:
			case KEEPFIXED:
			case KEY_SOURCE:
			case KEYS:
			case KEYSET:
			case LAG:
			case LAST:
			case LAST_VALUE:
			case LEAD:
			case LEVEL:
			case LIST:
			case LISTENER:
			case LISTENER_URL:
			case LOB_COMPACTION:
			case LOCAL:
			case LOCATION:
			case LOCK:
			case LOCK_ESCALATION:
			case LOGIN:
			case LOOP:
			case LOW:
			case MANUAL:
			case MARK:
			case MATERIALIZED:
			case MAX:
			case MAX_CPU_PERCENT:
			case MAX_DOP:
			case MAX_FILES:
			case MAX_IOPS_PER_VOLUME:
			case MAX_MEMORY_PERCENT:
			case MAX_PROCESSES:
			case MAX_QUEUE_READERS:
			case MAX_ROLLOVER_FILES:
			case MAXDOP:
			case MAXRECURSION:
			case MAXSIZE:
			case MB:
			case MEDIUM:
			case MEMORY_OPTIMIZED_DATA:
			case MESSAGE:
			case MIN:
			case MIN_ACTIVE_ROWVERSION:
			case MIN_CPU_PERCENT:
			case MIN_IOPS_PER_VOLUME:
			case MIN_MEMORY_PERCENT:
			case MINUTES:
			case MIRROR_ADDRESS:
			case MIXED_PAGE_ALLOCATION:
			case MODE:
			case MODIFY:
			case MOVE:
			case MULTI_USER:
			case NAME:
			case NESTED_TRIGGERS:
			case NEW_ACCOUNT:
			case NEW_BROKER:
			case NEW_PASSWORD:
			case NEXT:
			case NO:
			case NO_TRUNCATE:
			case NO_WAIT:
			case NOCOUNT:
			case NODES:
			case NOEXPAND:
			case NON_TRANSACTED_ACCESS:
			case NORECOMPUTE:
			case NORECOVERY:
			case NOWAIT:
			case NTILE:
			case NUMANODE:
			case NUMBER:
			case NUMERIC_ROUNDABORT:
			case OBJECT:
			case OFFLINE:
			case OFFSET:
			case OLD_ACCOUNT:
			case ONLINE:
			case ONLY:
			case OPEN_EXISTING:
			case OPTIMISTIC:
			case OPTIMIZE:
			case OUT:
			case OUTPUT:
			case OWNER:
			case PAGE_VERIFY:
			case PARAMETERIZATION:
			case PARTITION:
			case PARTITIONS:
			case PARTNER:
			case PATH:
			case POISON_MESSAGE_HANDLING:
			case POOL:
			case PORT:
			case PRECEDING:
			case PRIMARY_ROLE:
			case PRIOR:
			case PRIORITY:
			case PRIORITY_LEVEL:
			case PRIVATE:
			case PRIVATE_KEY:
			case PRIVILEGES:
			case PROCEDURE_NAME:
			case PROPERTY:
			case PROVIDER:
			case PROVIDER_KEY_NAME:
			case QUERY:
			case QUEUE:
			case QUEUE_DELAY:
			case QUOTED_IDENTIFIER:
			case RANGE:
			case RANK:
			case RC2:
			case RC4:
			case RC4_128:
			case READ_COMMITTED_SNAPSHOT:
			case READ_ONLY:
			case READ_ONLY_ROUTING_LIST:
			case READ_WRITE:
			case READONLY:
			case REBUILD:
			case RECEIVE:
			case RECOMPILE:
			case RECOVERY:
			case RECURSIVE_TRIGGERS:
			case RELATIVE:
			case REMOTE:
			case REMOTE_SERVICE_NAME:
			case REMOVE:
			case REORGANIZE:
			case REPEATABLE:
			case REPLICA:
			case REQUEST_MAX_CPU_TIME_SEC:
			case REQUEST_MAX_MEMORY_GRANT_PERCENT:
			case REQUEST_MEMORY_GRANT_TIMEOUT_SEC:
			case REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT:
			case RESERVE_DISK_SPACE:
			case RESOURCE:
			case RESOURCE_MANAGER_LOCATION:
			case RESTRICTED_USER:
			case RETENTION:
			case ROBUST:
			case ROOT:
			case ROUTE:
			case ROW:
			case ROW_NUMBER:
			case ROWGUID:
			case ROWS:
			case SAMPLE:
			case SCHEMABINDING:
			case SCOPED:
			case SCROLL:
			case SCROLL_LOCKS:
			case SEARCH:
			case SECONDARY:
			case SECONDARY_ONLY:
			case SECONDARY_ROLE:
			case SECONDS:
			case SECRET:
			case SECURITY_LOG:
			case SEEDING_MODE:
			case SELF:
			case SEMI_SENSITIVE:
			case SEND:
			case SENT:
			case SERIALIZABLE:
			case SESSION_TIMEOUT:
			case SETERROR:
			case SHARE:
			case SHOWPLAN:
			case SIGNATURE:
			case SIMPLE:
			case SINGLE_USER:
			case SIZE:
			case SMALLINT:
			case SNAPSHOT:
			case SPATIAL_WINDOW_MAX_CELLS:
			case STANDBY:
			case START_DATE:
			case STATIC:
			case STATS_STREAM:
			case STATUS:
			case STDEV:
			case STDEVP:
			case STOPLIST:
			case STUFF:
			case SUBJECT:
			case SUM:
			case SUSPEND:
			case SYMMETRIC:
			case SYNCHRONOUS_COMMIT:
			case SYNONYM:
			case TAKE:
			case TARGET_RECOVERY_TIME:
			case TB:
			case TEXTIMAGE_ON:
			case THROW:
			case TIES:
			case TIME:
			case TIMEOUT:
			case TIMER:
			case TINYINT:
			case TORN_PAGE_DETECTION:
			case TRANSFORM_NOISE_WORDS:
			case TRIPLE_DES:
			case TRIPLE_DES_3KEY:
			case TRUSTWORTHY:
			case TRY:
			case TSQL:
			case TWO_DIGIT_YEAR_CUTOFF:
			case TYPE:
			case TYPE_WARNING:
			case UNBOUNDED:
			case UNCOMMITTED:
			case UNKNOWN:
			case UNLIMITED:
			case USING:
			case VALID_XML:
			case VALIDATION:
			case VALUE:
			case VAR:
			case VARP:
			case VIEW_METADATA:
			case VIEWS:
			case WAIT:
			case WELL_FORMED_XML:
			case WORK:
			case WORKLOAD:
			case XML:
			case XMLNAMESPACES:
			case DOUBLE_QUOTE_ID:
			case SQUARE_BRACKET_ID:
			case ID:
				{
				setState(10194);
				id();
				}
				break;
			case STRING:
				{
				setState(10195);
				match(STRING);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			setState(10199);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==COMMA) {
				{
				setState(10198);
				match(COMMA);
				}
			}

			setState(10201);
			match(FILENAME);
			setState(10202);
			match(EQUAL);
			setState(10203);
			((File_specContext)_localctx).file = match(STRING);
			setState(10205);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==COMMA) {
				{
				setState(10204);
				match(COMMA);
				}
			}

			setState(10213);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==SIZE) {
				{
				setState(10207);
				match(SIZE);
				setState(10208);
				match(EQUAL);
				setState(10209);
				file_size();
				setState(10211);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==COMMA) {
					{
					setState(10210);
					match(COMMA);
					}
				}

				}
			}

			setState(10224);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==MAXSIZE) {
				{
				setState(10215);
				match(MAXSIZE);
				setState(10216);
				match(EQUAL);
				setState(10219);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case DECIMAL:
					{
					setState(10217);
					file_size();
					}
					break;
				case UNLIMITED:
					{
					setState(10218);
					match(UNLIMITED);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				setState(10222);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==COMMA) {
					{
					setState(10221);
					match(COMMA);
					}
				}

				}
			}

			setState(10232);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==FILEGROWTH) {
				{
				setState(10226);
				match(FILEGROWTH);
				setState(10227);
				match(EQUAL);
				setState(10228);
				file_size();
				setState(10230);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==COMMA) {
					{
					setState(10229);
					match(COMMA);
					}
				}

				}
			}

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

	public static class Entity_nameContext extends ParserRuleContext {
		public IdContext server;
		public IdContext database;
		public IdContext schema;
		public IdContext table;
		public List id() {
			return getRuleContexts(IdContext.class);
		}
		public IdContext id(int i) {
			return getRuleContext(IdContext.class,i);
		}
		public List DOT() { return getTokens(TSqlParser.DOT); }
		public TerminalNode DOT(int i) {
			return getToken(TSqlParser.DOT, i);
		}
		public Entity_nameContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_entity_name; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterEntity_name(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitEntity_name(this);
		}
	}

	public final Entity_nameContext entity_name() throws RecognitionException {
		Entity_nameContext _localctx = new Entity_nameContext(_ctx, getState());
		enterRule(_localctx, 888, RULE_entity_name);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(10253);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,1438,_ctx) ) {
			case 1:
				{
				setState(10236);
				((Entity_nameContext)_localctx).server = id();
				setState(10237);
				match(DOT);
				setState(10238);
				((Entity_nameContext)_localctx).database = id();
				setState(10239);
				match(DOT);
				setState(10240);
				((Entity_nameContext)_localctx).schema = id();
				setState(10241);
				match(DOT);
				}
				break;
			case 2:
				{
				setState(10243);
				((Entity_nameContext)_localctx).database = id();
				setState(10244);
				match(DOT);
				setState(10246);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==CALLED || ((((_la - 81)) & ~0x3f) == 0 && ((1L << (_la - 81)) & ((1L << (DATA_COMPRESSION - 81)) | (1L << (EVENTDATA - 81)) | (1L << (FILENAME - 81)) | (1L << (FILLFACTOR - 81)) | (1L << (FORCESEEK - 81)))) != 0) || ((((_la - 159)) & ~0x3f) == 0 && ((1L << (_la - 159)) & ((1L << (INIT - 159)) | (1L << (KEY - 159)) | (1L << (MASTER - 159)) | (1L << (MAX_MEMORY - 159)))) != 0) || ((((_la - 226)) & ~0x3f) == 0 && ((1L << (_la - 226)) & ((1L << (OFFSETS - 226)) | (1L << (PAGE - 226)) | (1L << (PUBLIC - 226)) | (1L << (R - 226)) | (1L << (RAW - 226)) | (1L << (RETURN - 226)) | (1L << (RETURNS - 226)) | (1L << (ROWCOUNT - 226)))) != 0) || ((((_la - 296)) & ~0x3f) == 0 && ((1L << (_la - 296)) & ((1L << (SAFETY - 296)) | (1L << (SERVER - 296)) | (1L << (SID - 296)) | (1L << (SOURCE - 296)) | (1L << (STATE - 296)) | (1L << (START - 296)) | (1L << (TARGET - 296)))) != 0) || ((((_la - 384)) & ~0x3f) == 0 && ((1L << (_la - 384)) & ((1L << (ABSOLUTE - 384)) | (1L << (ACCENT_SENSITIVITY - 384)) | (1L << (ACTION - 384)) | (1L << (ACTIVATION - 384)) | (1L << (ACTIVE - 384)) | (1L << (ADDRESS - 384)) | (1L << (AES_128 - 384)) | (1L << (AES_192 - 384)) | (1L << (AES_256 - 384)) | (1L << (AFFINITY - 384)) | (1L << (AFTER - 384)) | (1L << (AGGREGATE - 384)) | (1L << (ALGORITHM - 384)) | (1L << (ALLOW_ENCRYPTED_VALUE_MODIFICATIONS - 384)) | (1L << (ALLOW_SNAPSHOT_ISOLATION - 384)) | (1L << (ALLOWED - 384)) | (1L << (ANSI_NULL_DEFAULT - 384)) | (1L << (ANSI_NULLS - 384)) | (1L << (ANSI_PADDING - 384)) | (1L << (ANSI_WARNINGS - 384)) | (1L << (APPLICATION_LOG - 384)) | (1L << (APPLY - 384)) | (1L << (ARITHABORT - 384)) | (1L << (ASSEMBLY - 384)) | (1L << (AUDIT - 384)) | (1L << (AUDIT_GUID - 384)) | (1L << (AUTO - 384)) | (1L << (AUTO_CLEANUP - 384)) | (1L << (AUTO_CLOSE - 384)) | (1L << (AUTO_CREATE_STATISTICS - 384)) | (1L << (AUTO_SHRINK - 384)) | (1L << (AUTO_UPDATE_STATISTICS - 384)) | (1L << (AUTO_UPDATE_STATISTICS_ASYNC - 384)) | (1L << (AVAILABILITY - 384)) | (1L << (AVG - 384)) | (1L << (BACKUP_PRIORITY - 384)) | (1L << (BEGIN_DIALOG - 384)) | (1L << (BIGINT - 384)) | (1L << (BINARY_BASE64 - 384)) | (1L << (BINARY_CHECKSUM - 384)) | (1L << (BINDING - 384)) | (1L << (BLOB_STORAGE - 384)) | (1L << (BROKER - 384)) | (1L << (BROKER_INSTANCE - 384)) | (1L << (BULK_LOGGED - 384)) | (1L << (CALLER - 384)) | (1L << (CAP_CPU_PERCENT - 384)) | (1L << (CAST - 384)) | (1L << (CATALOG - 384)) | (1L << (CATCH - 384)) | (1L << (CHANGE_RETENTION - 384)) | (1L << (CHANGE_TRACKING - 384)) | (1L << (CHECKSUM - 384)) | (1L << (CHECKSUM_AGG - 384)) | (1L << (CLEANUP - 384)) | (1L << (COLLECTION - 384)) | (1L << (COLUMN_MASTER_KEY - 384)) | (1L << (COMMITTED - 384)) | (1L << (COMPATIBILITY_LEVEL - 384)) | (1L << (CONCAT - 384)) | (1L << (CONCAT_NULL_YIELDS_NULL - 384)) | (1L << (CONTENT - 384)) | (1L << (CONTROL - 384)) | (1L << (COOKIE - 384)))) != 0) || ((((_la - 448)) & ~0x3f) == 0 && ((1L << (_la - 448)) & ((1L << (COUNT - 448)) | (1L << (COUNT_BIG - 448)) | (1L << (COUNTER - 448)) | (1L << (CPU - 448)) | (1L << (CREATE_NEW - 448)) | (1L << (CREATION_DISPOSITION - 448)) | (1L << (CREDENTIAL - 448)) | (1L << (CRYPTOGRAPHIC - 448)) | (1L << (CURSOR_CLOSE_ON_COMMIT - 448)) | (1L << (CURSOR_DEFAULT - 448)) | (1L << (DATE_CORRELATION_OPTIMIZATION - 448)) | (1L << (DATEADD - 448)) | (1L << (DATEDIFF - 448)) | (1L << (DATENAME - 448)) | (1L << (DATEPART - 448)) | (1L << (DAYS - 448)) | (1L << (DB_CHAINING - 448)) | (1L << (DB_FAILOVER - 448)) | (1L << (DECRYPTION - 448)) | (1L << (DEFAULT_DOUBLE_QUOTE - 448)) | (1L << (DEFAULT_FULLTEXT_LANGUAGE - 448)) | (1L << (DEFAULT_LANGUAGE - 448)) | (1L << (DELAY - 448)) | (1L << (DELAYED_DURABILITY - 448)) | (1L << (DELETED - 448)) | (1L << (DENSE_RANK - 448)) | (1L << (DEPENDENTS - 448)) | (1L << (DES - 448)) | (1L << (DESCRIPTION - 448)) | (1L << (DESX - 448)) | (1L << (DHCP - 448)) | (1L << (DIALOG - 448)) | (1L << (DIRECTORY_NAME - 448)) | (1L << (DISABLE - 448)) | (1L << (DISABLE_BROKER - 448)) | (1L << (DISABLED - 448)) | (1L << (DISK_DRIVE - 448)) | (1L << (DOCUMENT - 448)) | (1L << (DYNAMIC - 448)) | (1L << (EMERGENCY - 448)) | (1L << (EMPTY - 448)) | (1L << (ENABLE - 448)) | (1L << (ENABLE_BROKER - 448)) | (1L << (ENCRYPTED_VALUE - 448)) | (1L << (ENCRYPTION - 448)) | (1L << (ENDPOINT_URL - 448)) | (1L << (ERROR_BROKER_CONVERSATIONS - 448)) | (1L << (EXCLUSIVE - 448)) | (1L << (EXECUTABLE - 448)) | (1L << (EXIST - 448)) | (1L << (EXPAND - 448)) | (1L << (EXPIRY_DATE - 448)) | (1L << (EXPLICIT - 448)) | (1L << (FAIL_OPERATION - 448)) | (1L << (FAILOVER_MODE - 448)) | (1L << (FAILURE - 448)) | (1L << (FAILURE_CONDITION_LEVEL - 448)) | (1L << (FAST - 448)) | (1L << (FAST_FORWARD - 448)) | (1L << (FILEGROUP - 448)) | (1L << (FILEGROWTH - 448)) | (1L << (FILEPATH - 448)) | (1L << (FILESTREAM - 448)))) != 0) || ((((_la - 512)) & ~0x3f) == 0 && ((1L << (_la - 512)) & ((1L << (FILTER - 512)) | (1L << (FIRST - 512)) | (1L << (FIRST_VALUE - 512)) | (1L << (FOLLOWING - 512)) | (1L << (FORCE - 512)) | (1L << (FORCE_FAILOVER_ALLOW_DATA_LOSS - 512)) | (1L << (FORCED - 512)) | (1L << (FORMAT - 512)) | (1L << (FORWARD_ONLY - 512)) | (1L << (FULLSCAN - 512)) | (1L << (FULLTEXT - 512)) | (1L << (GB - 512)) | (1L << (GETDATE - 512)) | (1L << (GETUTCDATE - 512)) | (1L << (GLOBAL - 512)) | (1L << (GO - 512)) | (1L << (GROUP_MAX_REQUESTS - 512)) | (1L << (GROUPING - 512)) | (1L << (GROUPING_ID - 512)) | (1L << (HADR - 512)) | (1L << (HASH - 512)) | (1L << (HEALTH_CHECK_TIMEOUT - 512)) | (1L << (HIGH - 512)) | (1L << (HONOR_BROKER_PRIORITY - 512)) | (1L << (HOURS - 512)) | (1L << (IDENTITY_VALUE - 512)) | (1L << (IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX - 512)) | (1L << (IMMEDIATE - 512)) | (1L << (IMPERSONATE - 512)) | (1L << (IMPORTANCE - 512)) | (1L << (INCREMENTAL - 512)) | (1L << (INITIATOR - 512)) | (1L << (INPUT - 512)) | (1L << (INSENSITIVE - 512)) | (1L << (INSERTED - 512)) | (1L << (INT - 512)) | (1L << (IP - 512)) | (1L << (ISOLATION - 512)) | (1L << (KB - 512)) | (1L << (KEEP - 512)) | (1L << (KEEPFIXED - 512)) | (1L << (KEY_SOURCE - 512)) | (1L << (KEYS - 512)) | (1L << (KEYSET - 512)) | (1L << (LAG - 512)) | (1L << (LAST - 512)) | (1L << (LAST_VALUE - 512)) | (1L << (LEAD - 512)) | (1L << (LEVEL - 512)) | (1L << (LIST - 512)) | (1L << (LISTENER - 512)) | (1L << (LISTENER_URL - 512)) | (1L << (LOB_COMPACTION - 512)) | (1L << (LOCAL - 512)) | (1L << (LOCATION - 512)) | (1L << (LOCK - 512)) | (1L << (LOCK_ESCALATION - 512)) | (1L << (LOGIN - 512)) | (1L << (LOOP - 512)) | (1L << (LOW - 512)) | (1L << (MANUAL - 512)) | (1L << (MARK - 512)))) != 0) || ((((_la - 576)) & ~0x3f) == 0 && ((1L << (_la - 576)) & ((1L << (MATERIALIZED - 576)) | (1L << (MAX - 576)) | (1L << (MAX_CPU_PERCENT - 576)) | (1L << (MAX_DOP - 576)) | (1L << (MAX_FILES - 576)) | (1L << (MAX_IOPS_PER_VOLUME - 576)) | (1L << (MAX_MEMORY_PERCENT - 576)) | (1L << (MAX_PROCESSES - 576)) | (1L << (MAX_QUEUE_READERS - 576)) | (1L << (MAX_ROLLOVER_FILES - 576)) | (1L << (MAXDOP - 576)) | (1L << (MAXRECURSION - 576)) | (1L << (MAXSIZE - 576)) | (1L << (MB - 576)) | (1L << (MEDIUM - 576)) | (1L << (MEMORY_OPTIMIZED_DATA - 576)) | (1L << (MESSAGE - 576)) | (1L << (MIN - 576)) | (1L << (MIN_ACTIVE_ROWVERSION - 576)) | (1L << (MIN_CPU_PERCENT - 576)) | (1L << (MIN_IOPS_PER_VOLUME - 576)) | (1L << (MIN_MEMORY_PERCENT - 576)) | (1L << (MINUTES - 576)) | (1L << (MIRROR_ADDRESS - 576)) | (1L << (MIXED_PAGE_ALLOCATION - 576)) | (1L << (MODE - 576)) | (1L << (MODIFY - 576)) | (1L << (MOVE - 576)) | (1L << (MULTI_USER - 576)) | (1L << (NAME - 576)) | (1L << (NESTED_TRIGGERS - 576)) | (1L << (NEW_ACCOUNT - 576)) | (1L << (NEW_BROKER - 576)) | (1L << (NEW_PASSWORD - 576)) | (1L << (NEXT - 576)) | (1L << (NO - 576)) | (1L << (NO_TRUNCATE - 576)) | (1L << (NO_WAIT - 576)) | (1L << (NOCOUNT - 576)) | (1L << (NODES - 576)) | (1L << (NOEXPAND - 576)) | (1L << (NON_TRANSACTED_ACCESS - 576)) | (1L << (NORECOMPUTE - 576)) | (1L << (NORECOVERY - 576)) | (1L << (NOWAIT - 576)) | (1L << (NTILE - 576)) | (1L << (NUMANODE - 576)) | (1L << (NUMBER - 576)) | (1L << (NUMERIC_ROUNDABORT - 576)) | (1L << (OBJECT - 576)) | (1L << (OFFLINE - 576)) | (1L << (OFFSET - 576)) | (1L << (OLD_ACCOUNT - 576)) | (1L << (ONLINE - 576)) | (1L << (ONLY - 576)) | (1L << (OPEN_EXISTING - 576)) | (1L << (OPTIMISTIC - 576)) | (1L << (OPTIMIZE - 576)) | (1L << (OUT - 576)) | (1L << (OUTPUT - 576)) | (1L << (OWNER - 576)) | (1L << (PAGE_VERIFY - 576)) | (1L << (PARAMETERIZATION - 576)) | (1L << (PARTITION - 576)))) != 0) || ((((_la - 640)) & ~0x3f) == 0 && ((1L << (_la - 640)) & ((1L << (PARTITIONS - 640)) | (1L << (PARTNER - 640)) | (1L << (PATH - 640)) | (1L << (POISON_MESSAGE_HANDLING - 640)) | (1L << (POOL - 640)) | (1L << (PORT - 640)) | (1L << (PRECEDING - 640)) | (1L << (PRIMARY_ROLE - 640)) | (1L << (PRIOR - 640)) | (1L << (PRIORITY - 640)) | (1L << (PRIORITY_LEVEL - 640)) | (1L << (PRIVATE - 640)) | (1L << (PRIVATE_KEY - 640)) | (1L << (PRIVILEGES - 640)) | (1L << (PROCEDURE_NAME - 640)) | (1L << (PROPERTY - 640)) | (1L << (PROVIDER - 640)) | (1L << (PROVIDER_KEY_NAME - 640)) | (1L << (QUERY - 640)) | (1L << (QUEUE - 640)) | (1L << (QUEUE_DELAY - 640)) | (1L << (QUOTED_IDENTIFIER - 640)) | (1L << (RANGE - 640)) | (1L << (RANK - 640)) | (1L << (RC2 - 640)) | (1L << (RC4 - 640)) | (1L << (RC4_128 - 640)) | (1L << (READ_COMMITTED_SNAPSHOT - 640)) | (1L << (READ_ONLY - 640)) | (1L << (READ_ONLY_ROUTING_LIST - 640)) | (1L << (READ_WRITE - 640)) | (1L << (READONLY - 640)) | (1L << (REBUILD - 640)) | (1L << (RECEIVE - 640)) | (1L << (RECOMPILE - 640)) | (1L << (RECOVERY - 640)) | (1L << (RECURSIVE_TRIGGERS - 640)) | (1L << (RELATIVE - 640)) | (1L << (REMOTE - 640)) | (1L << (REMOTE_SERVICE_NAME - 640)) | (1L << (REMOVE - 640)) | (1L << (REORGANIZE - 640)) | (1L << (REPEATABLE - 640)) | (1L << (REPLICA - 640)) | (1L << (REQUEST_MAX_CPU_TIME_SEC - 640)) | (1L << (REQUEST_MAX_MEMORY_GRANT_PERCENT - 640)) | (1L << (REQUEST_MEMORY_GRANT_TIMEOUT_SEC - 640)) | (1L << (REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT - 640)) | (1L << (RESERVE_DISK_SPACE - 640)) | (1L << (RESOURCE - 640)) | (1L << (RESOURCE_MANAGER_LOCATION - 640)) | (1L << (RESTRICTED_USER - 640)) | (1L << (RETENTION - 640)) | (1L << (ROBUST - 640)) | (1L << (ROOT - 640)) | (1L << (ROUTE - 640)) | (1L << (ROW - 640)) | (1L << (ROW_NUMBER - 640)) | (1L << (ROWGUID - 640)) | (1L << (ROWS - 640)) | (1L << (SAMPLE - 640)) | (1L << (SCHEMABINDING - 640)) | (1L << (SCOPED - 640)) | (1L << (SCROLL - 640)))) != 0) || ((((_la - 704)) & ~0x3f) == 0 && ((1L << (_la - 704)) & ((1L << (SCROLL_LOCKS - 704)) | (1L << (SEARCH - 704)) | (1L << (SECONDARY - 704)) | (1L << (SECONDARY_ONLY - 704)) | (1L << (SECONDARY_ROLE - 704)) | (1L << (SECONDS - 704)) | (1L << (SECRET - 704)) | (1L << (SECURITY_LOG - 704)) | (1L << (SEEDING_MODE - 704)) | (1L << (SELF - 704)) | (1L << (SEMI_SENSITIVE - 704)) | (1L << (SEND - 704)) | (1L << (SENT - 704)) | (1L << (SERIALIZABLE - 704)) | (1L << (SESSION_TIMEOUT - 704)) | (1L << (SETERROR - 704)) | (1L << (SHARE - 704)) | (1L << (SHOWPLAN - 704)) | (1L << (SIGNATURE - 704)) | (1L << (SIMPLE - 704)) | (1L << (SINGLE_USER - 704)) | (1L << (SIZE - 704)) | (1L << (SMALLINT - 704)) | (1L << (SNAPSHOT - 704)) | (1L << (SPATIAL_WINDOW_MAX_CELLS - 704)) | (1L << (STANDBY - 704)) | (1L << (START_DATE - 704)) | (1L << (STATIC - 704)) | (1L << (STATS_STREAM - 704)) | (1L << (STATUS - 704)) | (1L << (STDEV - 704)) | (1L << (STDEVP - 704)) | (1L << (STOPLIST - 704)) | (1L << (STUFF - 704)) | (1L << (SUBJECT - 704)) | (1L << (SUM - 704)) | (1L << (SUSPEND - 704)) | (1L << (SYMMETRIC - 704)) | (1L << (SYNCHRONOUS_COMMIT - 704)) | (1L << (SYNONYM - 704)) | (1L << (TAKE - 704)) | (1L << (TARGET_RECOVERY_TIME - 704)) | (1L << (TB - 704)) | (1L << (TEXTIMAGE_ON - 704)) | (1L << (THROW - 704)) | (1L << (TIES - 704)) | (1L << (TIME - 704)) | (1L << (TIMEOUT - 704)) | (1L << (TIMER - 704)) | (1L << (TINYINT - 704)) | (1L << (TORN_PAGE_DETECTION - 704)) | (1L << (TRANSFORM_NOISE_WORDS - 704)) | (1L << (TRIPLE_DES - 704)) | (1L << (TRIPLE_DES_3KEY - 704)) | (1L << (TRUSTWORTHY - 704)) | (1L << (TRY - 704)) | (1L << (TSQL - 704)) | (1L << (TWO_DIGIT_YEAR_CUTOFF - 704)) | (1L << (TYPE - 704)) | (1L << (TYPE_WARNING - 704)) | (1L << (UNBOUNDED - 704)) | (1L << (UNCOMMITTED - 704)) | (1L << (UNKNOWN - 704)) | (1L << (UNLIMITED - 704)))) != 0) || ((((_la - 768)) & ~0x3f) == 0 && ((1L << (_la - 768)) & ((1L << (USING - 768)) | (1L << (VALID_XML - 768)) | (1L << (VALIDATION - 768)) | (1L << (VALUE - 768)) | (1L << (VAR - 768)) | (1L << (VARP - 768)) | (1L << (VIEW_METADATA - 768)) | (1L << (VIEWS - 768)) | (1L << (WAIT - 768)) | (1L << (WELL_FORMED_XML - 768)) | (1L << (WORK - 768)) | (1L << (WORKLOAD - 768)) | (1L << (XML - 768)) | (1L << (XMLNAMESPACES - 768)) | (1L << (DOUBLE_QUOTE_ID - 768)) | (1L << (SQUARE_BRACKET_ID - 768)) | (1L << (ID - 768)))) != 0)) {
					{
					setState(10245);
					((Entity_nameContext)_localctx).schema = id();
					}
				}

				setState(10248);
				match(DOT);
				}
				break;
			case 3:
				{
				setState(10250);
				((Entity_nameContext)_localctx).schema = id();
				setState(10251);
				match(DOT);
				}
				break;
			}
			setState(10255);
			((Entity_nameContext)_localctx).table = id();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Entity_name_for_azure_dwContext extends ParserRuleContext {
		public IdContext schema;
		public IdContext object_name;
		public List id() {
			return getRuleContexts(IdContext.class);
		}
		public IdContext id(int i) {
			return getRuleContext(IdContext.class,i);
		}
		public TerminalNode DOT() { return getToken(TSqlParser.DOT, 0); }
		public Entity_name_for_azure_dwContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_entity_name_for_azure_dw; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterEntity_name_for_azure_dw(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitEntity_name_for_azure_dw(this);
		}
	}

	public final Entity_name_for_azure_dwContext entity_name_for_azure_dw() throws RecognitionException {
		Entity_name_for_azure_dwContext _localctx = new Entity_name_for_azure_dwContext(_ctx, getState());
		enterRule(_localctx, 890, RULE_entity_name_for_azure_dw);
		try {
			setState(10262);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,1439,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(10257);
				((Entity_name_for_azure_dwContext)_localctx).schema = id();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(10258);
				((Entity_name_for_azure_dwContext)_localctx).schema = id();
				setState(10259);
				match(DOT);
				setState(10260);
				((Entity_name_for_azure_dwContext)_localctx).object_name = id();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Entity_name_for_parallel_dwContext extends ParserRuleContext {
		public IdContext schema_database;
		public IdContext schema;
		public IdContext object_name;
		public List id() {
			return getRuleContexts(IdContext.class);
		}
		public IdContext id(int i) {
			return getRuleContext(IdContext.class,i);
		}
		public TerminalNode DOT() { return getToken(TSqlParser.DOT, 0); }
		public Entity_name_for_parallel_dwContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_entity_name_for_parallel_dw; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterEntity_name_for_parallel_dw(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitEntity_name_for_parallel_dw(this);
		}
	}

	public final Entity_name_for_parallel_dwContext entity_name_for_parallel_dw() throws RecognitionException {
		Entity_name_for_parallel_dwContext _localctx = new Entity_name_for_parallel_dwContext(_ctx, getState());
		enterRule(_localctx, 892, RULE_entity_name_for_parallel_dw);
		try {
			setState(10269);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,1440,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(10264);
				((Entity_name_for_parallel_dwContext)_localctx).schema_database = id();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(10265);
				((Entity_name_for_parallel_dwContext)_localctx).schema = id();
				setState(10266);
				match(DOT);
				setState(10267);
				((Entity_name_for_parallel_dwContext)_localctx).object_name = id();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Full_table_nameContext extends ParserRuleContext {
		public IdContext server;
		public IdContext database;
		public IdContext schema;
		public IdContext table;
		public List id() {
			return getRuleContexts(IdContext.class);
		}
		public IdContext id(int i) {
			return getRuleContext(IdContext.class,i);
		}
		public List DOT() { return getTokens(TSqlParser.DOT); }
		public TerminalNode DOT(int i) {
			return getToken(TSqlParser.DOT, i);
		}
		public Full_table_nameContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_full_table_name; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterFull_table_name(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitFull_table_name(this);
		}
	}

	public final Full_table_nameContext full_table_name() throws RecognitionException {
		Full_table_nameContext _localctx = new Full_table_nameContext(_ctx, getState());
		enterRule(_localctx, 894, RULE_full_table_name);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(10288);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,1442,_ctx) ) {
			case 1:
				{
				setState(10271);
				((Full_table_nameContext)_localctx).server = id();
				setState(10272);
				match(DOT);
				setState(10273);
				((Full_table_nameContext)_localctx).database = id();
				setState(10274);
				match(DOT);
				setState(10275);
				((Full_table_nameContext)_localctx).schema = id();
				setState(10276);
				match(DOT);
				}
				break;
			case 2:
				{
				setState(10278);
				((Full_table_nameContext)_localctx).database = id();
				setState(10279);
				match(DOT);
				setState(10281);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==CALLED || ((((_la - 81)) & ~0x3f) == 0 && ((1L << (_la - 81)) & ((1L << (DATA_COMPRESSION - 81)) | (1L << (EVENTDATA - 81)) | (1L << (FILENAME - 81)) | (1L << (FILLFACTOR - 81)) | (1L << (FORCESEEK - 81)))) != 0) || ((((_la - 159)) & ~0x3f) == 0 && ((1L << (_la - 159)) & ((1L << (INIT - 159)) | (1L << (KEY - 159)) | (1L << (MASTER - 159)) | (1L << (MAX_MEMORY - 159)))) != 0) || ((((_la - 226)) & ~0x3f) == 0 && ((1L << (_la - 226)) & ((1L << (OFFSETS - 226)) | (1L << (PAGE - 226)) | (1L << (PUBLIC - 226)) | (1L << (R - 226)) | (1L << (RAW - 226)) | (1L << (RETURN - 226)) | (1L << (RETURNS - 226)) | (1L << (ROWCOUNT - 226)))) != 0) || ((((_la - 296)) & ~0x3f) == 0 && ((1L << (_la - 296)) & ((1L << (SAFETY - 296)) | (1L << (SERVER - 296)) | (1L << (SID - 296)) | (1L << (SOURCE - 296)) | (1L << (STATE - 296)) | (1L << (START - 296)) | (1L << (TARGET - 296)))) != 0) || ((((_la - 384)) & ~0x3f) == 0 && ((1L << (_la - 384)) & ((1L << (ABSOLUTE - 384)) | (1L << (ACCENT_SENSITIVITY - 384)) | (1L << (ACTION - 384)) | (1L << (ACTIVATION - 384)) | (1L << (ACTIVE - 384)) | (1L << (ADDRESS - 384)) | (1L << (AES_128 - 384)) | (1L << (AES_192 - 384)) | (1L << (AES_256 - 384)) | (1L << (AFFINITY - 384)) | (1L << (AFTER - 384)) | (1L << (AGGREGATE - 384)) | (1L << (ALGORITHM - 384)) | (1L << (ALLOW_ENCRYPTED_VALUE_MODIFICATIONS - 384)) | (1L << (ALLOW_SNAPSHOT_ISOLATION - 384)) | (1L << (ALLOWED - 384)) | (1L << (ANSI_NULL_DEFAULT - 384)) | (1L << (ANSI_NULLS - 384)) | (1L << (ANSI_PADDING - 384)) | (1L << (ANSI_WARNINGS - 384)) | (1L << (APPLICATION_LOG - 384)) | (1L << (APPLY - 384)) | (1L << (ARITHABORT - 384)) | (1L << (ASSEMBLY - 384)) | (1L << (AUDIT - 384)) | (1L << (AUDIT_GUID - 384)) | (1L << (AUTO - 384)) | (1L << (AUTO_CLEANUP - 384)) | (1L << (AUTO_CLOSE - 384)) | (1L << (AUTO_CREATE_STATISTICS - 384)) | (1L << (AUTO_SHRINK - 384)) | (1L << (AUTO_UPDATE_STATISTICS - 384)) | (1L << (AUTO_UPDATE_STATISTICS_ASYNC - 384)) | (1L << (AVAILABILITY - 384)) | (1L << (AVG - 384)) | (1L << (BACKUP_PRIORITY - 384)) | (1L << (BEGIN_DIALOG - 384)) | (1L << (BIGINT - 384)) | (1L << (BINARY_BASE64 - 384)) | (1L << (BINARY_CHECKSUM - 384)) | (1L << (BINDING - 384)) | (1L << (BLOB_STORAGE - 384)) | (1L << (BROKER - 384)) | (1L << (BROKER_INSTANCE - 384)) | (1L << (BULK_LOGGED - 384)) | (1L << (CALLER - 384)) | (1L << (CAP_CPU_PERCENT - 384)) | (1L << (CAST - 384)) | (1L << (CATALOG - 384)) | (1L << (CATCH - 384)) | (1L << (CHANGE_RETENTION - 384)) | (1L << (CHANGE_TRACKING - 384)) | (1L << (CHECKSUM - 384)) | (1L << (CHECKSUM_AGG - 384)) | (1L << (CLEANUP - 384)) | (1L << (COLLECTION - 384)) | (1L << (COLUMN_MASTER_KEY - 384)) | (1L << (COMMITTED - 384)) | (1L << (COMPATIBILITY_LEVEL - 384)) | (1L << (CONCAT - 384)) | (1L << (CONCAT_NULL_YIELDS_NULL - 384)) | (1L << (CONTENT - 384)) | (1L << (CONTROL - 384)) | (1L << (COOKIE - 384)))) != 0) || ((((_la - 448)) & ~0x3f) == 0 && ((1L << (_la - 448)) & ((1L << (COUNT - 448)) | (1L << (COUNT_BIG - 448)) | (1L << (COUNTER - 448)) | (1L << (CPU - 448)) | (1L << (CREATE_NEW - 448)) | (1L << (CREATION_DISPOSITION - 448)) | (1L << (CREDENTIAL - 448)) | (1L << (CRYPTOGRAPHIC - 448)) | (1L << (CURSOR_CLOSE_ON_COMMIT - 448)) | (1L << (CURSOR_DEFAULT - 448)) | (1L << (DATE_CORRELATION_OPTIMIZATION - 448)) | (1L << (DATEADD - 448)) | (1L << (DATEDIFF - 448)) | (1L << (DATENAME - 448)) | (1L << (DATEPART - 448)) | (1L << (DAYS - 448)) | (1L << (DB_CHAINING - 448)) | (1L << (DB_FAILOVER - 448)) | (1L << (DECRYPTION - 448)) | (1L << (DEFAULT_DOUBLE_QUOTE - 448)) | (1L << (DEFAULT_FULLTEXT_LANGUAGE - 448)) | (1L << (DEFAULT_LANGUAGE - 448)) | (1L << (DELAY - 448)) | (1L << (DELAYED_DURABILITY - 448)) | (1L << (DELETED - 448)) | (1L << (DENSE_RANK - 448)) | (1L << (DEPENDENTS - 448)) | (1L << (DES - 448)) | (1L << (DESCRIPTION - 448)) | (1L << (DESX - 448)) | (1L << (DHCP - 448)) | (1L << (DIALOG - 448)) | (1L << (DIRECTORY_NAME - 448)) | (1L << (DISABLE - 448)) | (1L << (DISABLE_BROKER - 448)) | (1L << (DISABLED - 448)) | (1L << (DISK_DRIVE - 448)) | (1L << (DOCUMENT - 448)) | (1L << (DYNAMIC - 448)) | (1L << (EMERGENCY - 448)) | (1L << (EMPTY - 448)) | (1L << (ENABLE - 448)) | (1L << (ENABLE_BROKER - 448)) | (1L << (ENCRYPTED_VALUE - 448)) | (1L << (ENCRYPTION - 448)) | (1L << (ENDPOINT_URL - 448)) | (1L << (ERROR_BROKER_CONVERSATIONS - 448)) | (1L << (EXCLUSIVE - 448)) | (1L << (EXECUTABLE - 448)) | (1L << (EXIST - 448)) | (1L << (EXPAND - 448)) | (1L << (EXPIRY_DATE - 448)) | (1L << (EXPLICIT - 448)) | (1L << (FAIL_OPERATION - 448)) | (1L << (FAILOVER_MODE - 448)) | (1L << (FAILURE - 448)) | (1L << (FAILURE_CONDITION_LEVEL - 448)) | (1L << (FAST - 448)) | (1L << (FAST_FORWARD - 448)) | (1L << (FILEGROUP - 448)) | (1L << (FILEGROWTH - 448)) | (1L << (FILEPATH - 448)) | (1L << (FILESTREAM - 448)))) != 0) || ((((_la - 512)) & ~0x3f) == 0 && ((1L << (_la - 512)) & ((1L << (FILTER - 512)) | (1L << (FIRST - 512)) | (1L << (FIRST_VALUE - 512)) | (1L << (FOLLOWING - 512)) | (1L << (FORCE - 512)) | (1L << (FORCE_FAILOVER_ALLOW_DATA_LOSS - 512)) | (1L << (FORCED - 512)) | (1L << (FORMAT - 512)) | (1L << (FORWARD_ONLY - 512)) | (1L << (FULLSCAN - 512)) | (1L << (FULLTEXT - 512)) | (1L << (GB - 512)) | (1L << (GETDATE - 512)) | (1L << (GETUTCDATE - 512)) | (1L << (GLOBAL - 512)) | (1L << (GO - 512)) | (1L << (GROUP_MAX_REQUESTS - 512)) | (1L << (GROUPING - 512)) | (1L << (GROUPING_ID - 512)) | (1L << (HADR - 512)) | (1L << (HASH - 512)) | (1L << (HEALTH_CHECK_TIMEOUT - 512)) | (1L << (HIGH - 512)) | (1L << (HONOR_BROKER_PRIORITY - 512)) | (1L << (HOURS - 512)) | (1L << (IDENTITY_VALUE - 512)) | (1L << (IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX - 512)) | (1L << (IMMEDIATE - 512)) | (1L << (IMPERSONATE - 512)) | (1L << (IMPORTANCE - 512)) | (1L << (INCREMENTAL - 512)) | (1L << (INITIATOR - 512)) | (1L << (INPUT - 512)) | (1L << (INSENSITIVE - 512)) | (1L << (INSERTED - 512)) | (1L << (INT - 512)) | (1L << (IP - 512)) | (1L << (ISOLATION - 512)) | (1L << (KB - 512)) | (1L << (KEEP - 512)) | (1L << (KEEPFIXED - 512)) | (1L << (KEY_SOURCE - 512)) | (1L << (KEYS - 512)) | (1L << (KEYSET - 512)) | (1L << (LAG - 512)) | (1L << (LAST - 512)) | (1L << (LAST_VALUE - 512)) | (1L << (LEAD - 512)) | (1L << (LEVEL - 512)) | (1L << (LIST - 512)) | (1L << (LISTENER - 512)) | (1L << (LISTENER_URL - 512)) | (1L << (LOB_COMPACTION - 512)) | (1L << (LOCAL - 512)) | (1L << (LOCATION - 512)) | (1L << (LOCK - 512)) | (1L << (LOCK_ESCALATION - 512)) | (1L << (LOGIN - 512)) | (1L << (LOOP - 512)) | (1L << (LOW - 512)) | (1L << (MANUAL - 512)) | (1L << (MARK - 512)))) != 0) || ((((_la - 576)) & ~0x3f) == 0 && ((1L << (_la - 576)) & ((1L << (MATERIALIZED - 576)) | (1L << (MAX - 576)) | (1L << (MAX_CPU_PERCENT - 576)) | (1L << (MAX_DOP - 576)) | (1L << (MAX_FILES - 576)) | (1L << (MAX_IOPS_PER_VOLUME - 576)) | (1L << (MAX_MEMORY_PERCENT - 576)) | (1L << (MAX_PROCESSES - 576)) | (1L << (MAX_QUEUE_READERS - 576)) | (1L << (MAX_ROLLOVER_FILES - 576)) | (1L << (MAXDOP - 576)) | (1L << (MAXRECURSION - 576)) | (1L << (MAXSIZE - 576)) | (1L << (MB - 576)) | (1L << (MEDIUM - 576)) | (1L << (MEMORY_OPTIMIZED_DATA - 576)) | (1L << (MESSAGE - 576)) | (1L << (MIN - 576)) | (1L << (MIN_ACTIVE_ROWVERSION - 576)) | (1L << (MIN_CPU_PERCENT - 576)) | (1L << (MIN_IOPS_PER_VOLUME - 576)) | (1L << (MIN_MEMORY_PERCENT - 576)) | (1L << (MINUTES - 576)) | (1L << (MIRROR_ADDRESS - 576)) | (1L << (MIXED_PAGE_ALLOCATION - 576)) | (1L << (MODE - 576)) | (1L << (MODIFY - 576)) | (1L << (MOVE - 576)) | (1L << (MULTI_USER - 576)) | (1L << (NAME - 576)) | (1L << (NESTED_TRIGGERS - 576)) | (1L << (NEW_ACCOUNT - 576)) | (1L << (NEW_BROKER - 576)) | (1L << (NEW_PASSWORD - 576)) | (1L << (NEXT - 576)) | (1L << (NO - 576)) | (1L << (NO_TRUNCATE - 576)) | (1L << (NO_WAIT - 576)) | (1L << (NOCOUNT - 576)) | (1L << (NODES - 576)) | (1L << (NOEXPAND - 576)) | (1L << (NON_TRANSACTED_ACCESS - 576)) | (1L << (NORECOMPUTE - 576)) | (1L << (NORECOVERY - 576)) | (1L << (NOWAIT - 576)) | (1L << (NTILE - 576)) | (1L << (NUMANODE - 576)) | (1L << (NUMBER - 576)) | (1L << (NUMERIC_ROUNDABORT - 576)) | (1L << (OBJECT - 576)) | (1L << (OFFLINE - 576)) | (1L << (OFFSET - 576)) | (1L << (OLD_ACCOUNT - 576)) | (1L << (ONLINE - 576)) | (1L << (ONLY - 576)) | (1L << (OPEN_EXISTING - 576)) | (1L << (OPTIMISTIC - 576)) | (1L << (OPTIMIZE - 576)) | (1L << (OUT - 576)) | (1L << (OUTPUT - 576)) | (1L << (OWNER - 576)) | (1L << (PAGE_VERIFY - 576)) | (1L << (PARAMETERIZATION - 576)) | (1L << (PARTITION - 576)))) != 0) || ((((_la - 640)) & ~0x3f) == 0 && ((1L << (_la - 640)) & ((1L << (PARTITIONS - 640)) | (1L << (PARTNER - 640)) | (1L << (PATH - 640)) | (1L << (POISON_MESSAGE_HANDLING - 640)) | (1L << (POOL - 640)) | (1L << (PORT - 640)) | (1L << (PRECEDING - 640)) | (1L << (PRIMARY_ROLE - 640)) | (1L << (PRIOR - 640)) | (1L << (PRIORITY - 640)) | (1L << (PRIORITY_LEVEL - 640)) | (1L << (PRIVATE - 640)) | (1L << (PRIVATE_KEY - 640)) | (1L << (PRIVILEGES - 640)) | (1L << (PROCEDURE_NAME - 640)) | (1L << (PROPERTY - 640)) | (1L << (PROVIDER - 640)) | (1L << (PROVIDER_KEY_NAME - 640)) | (1L << (QUERY - 640)) | (1L << (QUEUE - 640)) | (1L << (QUEUE_DELAY - 640)) | (1L << (QUOTED_IDENTIFIER - 640)) | (1L << (RANGE - 640)) | (1L << (RANK - 640)) | (1L << (RC2 - 640)) | (1L << (RC4 - 640)) | (1L << (RC4_128 - 640)) | (1L << (READ_COMMITTED_SNAPSHOT - 640)) | (1L << (READ_ONLY - 640)) | (1L << (READ_ONLY_ROUTING_LIST - 640)) | (1L << (READ_WRITE - 640)) | (1L << (READONLY - 640)) | (1L << (REBUILD - 640)) | (1L << (RECEIVE - 640)) | (1L << (RECOMPILE - 640)) | (1L << (RECOVERY - 640)) | (1L << (RECURSIVE_TRIGGERS - 640)) | (1L << (RELATIVE - 640)) | (1L << (REMOTE - 640)) | (1L << (REMOTE_SERVICE_NAME - 640)) | (1L << (REMOVE - 640)) | (1L << (REORGANIZE - 640)) | (1L << (REPEATABLE - 640)) | (1L << (REPLICA - 640)) | (1L << (REQUEST_MAX_CPU_TIME_SEC - 640)) | (1L << (REQUEST_MAX_MEMORY_GRANT_PERCENT - 640)) | (1L << (REQUEST_MEMORY_GRANT_TIMEOUT_SEC - 640)) | (1L << (REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT - 640)) | (1L << (RESERVE_DISK_SPACE - 640)) | (1L << (RESOURCE - 640)) | (1L << (RESOURCE_MANAGER_LOCATION - 640)) | (1L << (RESTRICTED_USER - 640)) | (1L << (RETENTION - 640)) | (1L << (ROBUST - 640)) | (1L << (ROOT - 640)) | (1L << (ROUTE - 640)) | (1L << (ROW - 640)) | (1L << (ROW_NUMBER - 640)) | (1L << (ROWGUID - 640)) | (1L << (ROWS - 640)) | (1L << (SAMPLE - 640)) | (1L << (SCHEMABINDING - 640)) | (1L << (SCOPED - 640)) | (1L << (SCROLL - 640)))) != 0) || ((((_la - 704)) & ~0x3f) == 0 && ((1L << (_la - 704)) & ((1L << (SCROLL_LOCKS - 704)) | (1L << (SEARCH - 704)) | (1L << (SECONDARY - 704)) | (1L << (SECONDARY_ONLY - 704)) | (1L << (SECONDARY_ROLE - 704)) | (1L << (SECONDS - 704)) | (1L << (SECRET - 704)) | (1L << (SECURITY_LOG - 704)) | (1L << (SEEDING_MODE - 704)) | (1L << (SELF - 704)) | (1L << (SEMI_SENSITIVE - 704)) | (1L << (SEND - 704)) | (1L << (SENT - 704)) | (1L << (SERIALIZABLE - 704)) | (1L << (SESSION_TIMEOUT - 704)) | (1L << (SETERROR - 704)) | (1L << (SHARE - 704)) | (1L << (SHOWPLAN - 704)) | (1L << (SIGNATURE - 704)) | (1L << (SIMPLE - 704)) | (1L << (SINGLE_USER - 704)) | (1L << (SIZE - 704)) | (1L << (SMALLINT - 704)) | (1L << (SNAPSHOT - 704)) | (1L << (SPATIAL_WINDOW_MAX_CELLS - 704)) | (1L << (STANDBY - 704)) | (1L << (START_DATE - 704)) | (1L << (STATIC - 704)) | (1L << (STATS_STREAM - 704)) | (1L << (STATUS - 704)) | (1L << (STDEV - 704)) | (1L << (STDEVP - 704)) | (1L << (STOPLIST - 704)) | (1L << (STUFF - 704)) | (1L << (SUBJECT - 704)) | (1L << (SUM - 704)) | (1L << (SUSPEND - 704)) | (1L << (SYMMETRIC - 704)) | (1L << (SYNCHRONOUS_COMMIT - 704)) | (1L << (SYNONYM - 704)) | (1L << (TAKE - 704)) | (1L << (TARGET_RECOVERY_TIME - 704)) | (1L << (TB - 704)) | (1L << (TEXTIMAGE_ON - 704)) | (1L << (THROW - 704)) | (1L << (TIES - 704)) | (1L << (TIME - 704)) | (1L << (TIMEOUT - 704)) | (1L << (TIMER - 704)) | (1L << (TINYINT - 704)) | (1L << (TORN_PAGE_DETECTION - 704)) | (1L << (TRANSFORM_NOISE_WORDS - 704)) | (1L << (TRIPLE_DES - 704)) | (1L << (TRIPLE_DES_3KEY - 704)) | (1L << (TRUSTWORTHY - 704)) | (1L << (TRY - 704)) | (1L << (TSQL - 704)) | (1L << (TWO_DIGIT_YEAR_CUTOFF - 704)) | (1L << (TYPE - 704)) | (1L << (TYPE_WARNING - 704)) | (1L << (UNBOUNDED - 704)) | (1L << (UNCOMMITTED - 704)) | (1L << (UNKNOWN - 704)) | (1L << (UNLIMITED - 704)))) != 0) || ((((_la - 768)) & ~0x3f) == 0 && ((1L << (_la - 768)) & ((1L << (USING - 768)) | (1L << (VALID_XML - 768)) | (1L << (VALIDATION - 768)) | (1L << (VALUE - 768)) | (1L << (VAR - 768)) | (1L << (VARP - 768)) | (1L << (VIEW_METADATA - 768)) | (1L << (VIEWS - 768)) | (1L << (WAIT - 768)) | (1L << (WELL_FORMED_XML - 768)) | (1L << (WORK - 768)) | (1L << (WORKLOAD - 768)) | (1L << (XML - 768)) | (1L << (XMLNAMESPACES - 768)) | (1L << (DOUBLE_QUOTE_ID - 768)) | (1L << (SQUARE_BRACKET_ID - 768)) | (1L << (ID - 768)))) != 0)) {
					{
					setState(10280);
					((Full_table_nameContext)_localctx).schema = id();
					}
				}

				setState(10283);
				match(DOT);
				}
				break;
			case 3:
				{
				setState(10285);
				((Full_table_nameContext)_localctx).schema = id();
				setState(10286);
				match(DOT);
				}
				break;
			}
			setState(10290);
			((Full_table_nameContext)_localctx).table = id();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Table_nameContext extends ParserRuleContext {
		public IdContext database;
		public IdContext schema;
		public IdContext table;
		public List id() {
			return getRuleContexts(IdContext.class);
		}
		public IdContext id(int i) {
			return getRuleContext(IdContext.class,i);
		}
		public List DOT() { return getTokens(TSqlParser.DOT); }
		public TerminalNode DOT(int i) {
			return getToken(TSqlParser.DOT, i);
		}
		public TerminalNode BLOCKING_HIERARCHY() { return getToken(TSqlParser.BLOCKING_HIERARCHY, 0); }
		public Table_nameContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_table_name; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterTable_name(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitTable_name(this);
		}
	}

	public final Table_nameContext table_name() throws RecognitionException {
		Table_nameContext _localctx = new Table_nameContext(_ctx, getState());
		enterRule(_localctx, 896, RULE_table_name);
		int _la;
		try {
			setState(10318);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,1447,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(10302);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1444,_ctx) ) {
				case 1:
					{
					setState(10292);
					((Table_nameContext)_localctx).database = id();
					setState(10293);
					match(DOT);
					setState(10295);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==CALLED || ((((_la - 81)) & ~0x3f) == 0 && ((1L << (_la - 81)) & ((1L << (DATA_COMPRESSION - 81)) | (1L << (EVENTDATA - 81)) | (1L << (FILENAME - 81)) | (1L << (FILLFACTOR - 81)) | (1L << (FORCESEEK - 81)))) != 0) || ((((_la - 159)) & ~0x3f) == 0 && ((1L << (_la - 159)) & ((1L << (INIT - 159)) | (1L << (KEY - 159)) | (1L << (MASTER - 159)) | (1L << (MAX_MEMORY - 159)))) != 0) || ((((_la - 226)) & ~0x3f) == 0 && ((1L << (_la - 226)) & ((1L << (OFFSETS - 226)) | (1L << (PAGE - 226)) | (1L << (PUBLIC - 226)) | (1L << (R - 226)) | (1L << (RAW - 226)) | (1L << (RETURN - 226)) | (1L << (RETURNS - 226)) | (1L << (ROWCOUNT - 226)))) != 0) || ((((_la - 296)) & ~0x3f) == 0 && ((1L << (_la - 296)) & ((1L << (SAFETY - 296)) | (1L << (SERVER - 296)) | (1L << (SID - 296)) | (1L << (SOURCE - 296)) | (1L << (STATE - 296)) | (1L << (START - 296)) | (1L << (TARGET - 296)))) != 0) || ((((_la - 384)) & ~0x3f) == 0 && ((1L << (_la - 384)) & ((1L << (ABSOLUTE - 384)) | (1L << (ACCENT_SENSITIVITY - 384)) | (1L << (ACTION - 384)) | (1L << (ACTIVATION - 384)) | (1L << (ACTIVE - 384)) | (1L << (ADDRESS - 384)) | (1L << (AES_128 - 384)) | (1L << (AES_192 - 384)) | (1L << (AES_256 - 384)) | (1L << (AFFINITY - 384)) | (1L << (AFTER - 384)) | (1L << (AGGREGATE - 384)) | (1L << (ALGORITHM - 384)) | (1L << (ALLOW_ENCRYPTED_VALUE_MODIFICATIONS - 384)) | (1L << (ALLOW_SNAPSHOT_ISOLATION - 384)) | (1L << (ALLOWED - 384)) | (1L << (ANSI_NULL_DEFAULT - 384)) | (1L << (ANSI_NULLS - 384)) | (1L << (ANSI_PADDING - 384)) | (1L << (ANSI_WARNINGS - 384)) | (1L << (APPLICATION_LOG - 384)) | (1L << (APPLY - 384)) | (1L << (ARITHABORT - 384)) | (1L << (ASSEMBLY - 384)) | (1L << (AUDIT - 384)) | (1L << (AUDIT_GUID - 384)) | (1L << (AUTO - 384)) | (1L << (AUTO_CLEANUP - 384)) | (1L << (AUTO_CLOSE - 384)) | (1L << (AUTO_CREATE_STATISTICS - 384)) | (1L << (AUTO_SHRINK - 384)) | (1L << (AUTO_UPDATE_STATISTICS - 384)) | (1L << (AUTO_UPDATE_STATISTICS_ASYNC - 384)) | (1L << (AVAILABILITY - 384)) | (1L << (AVG - 384)) | (1L << (BACKUP_PRIORITY - 384)) | (1L << (BEGIN_DIALOG - 384)) | (1L << (BIGINT - 384)) | (1L << (BINARY_BASE64 - 384)) | (1L << (BINARY_CHECKSUM - 384)) | (1L << (BINDING - 384)) | (1L << (BLOB_STORAGE - 384)) | (1L << (BROKER - 384)) | (1L << (BROKER_INSTANCE - 384)) | (1L << (BULK_LOGGED - 384)) | (1L << (CALLER - 384)) | (1L << (CAP_CPU_PERCENT - 384)) | (1L << (CAST - 384)) | (1L << (CATALOG - 384)) | (1L << (CATCH - 384)) | (1L << (CHANGE_RETENTION - 384)) | (1L << (CHANGE_TRACKING - 384)) | (1L << (CHECKSUM - 384)) | (1L << (CHECKSUM_AGG - 384)) | (1L << (CLEANUP - 384)) | (1L << (COLLECTION - 384)) | (1L << (COLUMN_MASTER_KEY - 384)) | (1L << (COMMITTED - 384)) | (1L << (COMPATIBILITY_LEVEL - 384)) | (1L << (CONCAT - 384)) | (1L << (CONCAT_NULL_YIELDS_NULL - 384)) | (1L << (CONTENT - 384)) | (1L << (CONTROL - 384)) | (1L << (COOKIE - 384)))) != 0) || ((((_la - 448)) & ~0x3f) == 0 && ((1L << (_la - 448)) & ((1L << (COUNT - 448)) | (1L << (COUNT_BIG - 448)) | (1L << (COUNTER - 448)) | (1L << (CPU - 448)) | (1L << (CREATE_NEW - 448)) | (1L << (CREATION_DISPOSITION - 448)) | (1L << (CREDENTIAL - 448)) | (1L << (CRYPTOGRAPHIC - 448)) | (1L << (CURSOR_CLOSE_ON_COMMIT - 448)) | (1L << (CURSOR_DEFAULT - 448)) | (1L << (DATE_CORRELATION_OPTIMIZATION - 448)) | (1L << (DATEADD - 448)) | (1L << (DATEDIFF - 448)) | (1L << (DATENAME - 448)) | (1L << (DATEPART - 448)) | (1L << (DAYS - 448)) | (1L << (DB_CHAINING - 448)) | (1L << (DB_FAILOVER - 448)) | (1L << (DECRYPTION - 448)) | (1L << (DEFAULT_DOUBLE_QUOTE - 448)) | (1L << (DEFAULT_FULLTEXT_LANGUAGE - 448)) | (1L << (DEFAULT_LANGUAGE - 448)) | (1L << (DELAY - 448)) | (1L << (DELAYED_DURABILITY - 448)) | (1L << (DELETED - 448)) | (1L << (DENSE_RANK - 448)) | (1L << (DEPENDENTS - 448)) | (1L << (DES - 448)) | (1L << (DESCRIPTION - 448)) | (1L << (DESX - 448)) | (1L << (DHCP - 448)) | (1L << (DIALOG - 448)) | (1L << (DIRECTORY_NAME - 448)) | (1L << (DISABLE - 448)) | (1L << (DISABLE_BROKER - 448)) | (1L << (DISABLED - 448)) | (1L << (DISK_DRIVE - 448)) | (1L << (DOCUMENT - 448)) | (1L << (DYNAMIC - 448)) | (1L << (EMERGENCY - 448)) | (1L << (EMPTY - 448)) | (1L << (ENABLE - 448)) | (1L << (ENABLE_BROKER - 448)) | (1L << (ENCRYPTED_VALUE - 448)) | (1L << (ENCRYPTION - 448)) | (1L << (ENDPOINT_URL - 448)) | (1L << (ERROR_BROKER_CONVERSATIONS - 448)) | (1L << (EXCLUSIVE - 448)) | (1L << (EXECUTABLE - 448)) | (1L << (EXIST - 448)) | (1L << (EXPAND - 448)) | (1L << (EXPIRY_DATE - 448)) | (1L << (EXPLICIT - 448)) | (1L << (FAIL_OPERATION - 448)) | (1L << (FAILOVER_MODE - 448)) | (1L << (FAILURE - 448)) | (1L << (FAILURE_CONDITION_LEVEL - 448)) | (1L << (FAST - 448)) | (1L << (FAST_FORWARD - 448)) | (1L << (FILEGROUP - 448)) | (1L << (FILEGROWTH - 448)) | (1L << (FILEPATH - 448)) | (1L << (FILESTREAM - 448)))) != 0) || ((((_la - 512)) & ~0x3f) == 0 && ((1L << (_la - 512)) & ((1L << (FILTER - 512)) | (1L << (FIRST - 512)) | (1L << (FIRST_VALUE - 512)) | (1L << (FOLLOWING - 512)) | (1L << (FORCE - 512)) | (1L << (FORCE_FAILOVER_ALLOW_DATA_LOSS - 512)) | (1L << (FORCED - 512)) | (1L << (FORMAT - 512)) | (1L << (FORWARD_ONLY - 512)) | (1L << (FULLSCAN - 512)) | (1L << (FULLTEXT - 512)) | (1L << (GB - 512)) | (1L << (GETDATE - 512)) | (1L << (GETUTCDATE - 512)) | (1L << (GLOBAL - 512)) | (1L << (GO - 512)) | (1L << (GROUP_MAX_REQUESTS - 512)) | (1L << (GROUPING - 512)) | (1L << (GROUPING_ID - 512)) | (1L << (HADR - 512)) | (1L << (HASH - 512)) | (1L << (HEALTH_CHECK_TIMEOUT - 512)) | (1L << (HIGH - 512)) | (1L << (HONOR_BROKER_PRIORITY - 512)) | (1L << (HOURS - 512)) | (1L << (IDENTITY_VALUE - 512)) | (1L << (IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX - 512)) | (1L << (IMMEDIATE - 512)) | (1L << (IMPERSONATE - 512)) | (1L << (IMPORTANCE - 512)) | (1L << (INCREMENTAL - 512)) | (1L << (INITIATOR - 512)) | (1L << (INPUT - 512)) | (1L << (INSENSITIVE - 512)) | (1L << (INSERTED - 512)) | (1L << (INT - 512)) | (1L << (IP - 512)) | (1L << (ISOLATION - 512)) | (1L << (KB - 512)) | (1L << (KEEP - 512)) | (1L << (KEEPFIXED - 512)) | (1L << (KEY_SOURCE - 512)) | (1L << (KEYS - 512)) | (1L << (KEYSET - 512)) | (1L << (LAG - 512)) | (1L << (LAST - 512)) | (1L << (LAST_VALUE - 512)) | (1L << (LEAD - 512)) | (1L << (LEVEL - 512)) | (1L << (LIST - 512)) | (1L << (LISTENER - 512)) | (1L << (LISTENER_URL - 512)) | (1L << (LOB_COMPACTION - 512)) | (1L << (LOCAL - 512)) | (1L << (LOCATION - 512)) | (1L << (LOCK - 512)) | (1L << (LOCK_ESCALATION - 512)) | (1L << (LOGIN - 512)) | (1L << (LOOP - 512)) | (1L << (LOW - 512)) | (1L << (MANUAL - 512)) | (1L << (MARK - 512)))) != 0) || ((((_la - 576)) & ~0x3f) == 0 && ((1L << (_la - 576)) & ((1L << (MATERIALIZED - 576)) | (1L << (MAX - 576)) | (1L << (MAX_CPU_PERCENT - 576)) | (1L << (MAX_DOP - 576)) | (1L << (MAX_FILES - 576)) | (1L << (MAX_IOPS_PER_VOLUME - 576)) | (1L << (MAX_MEMORY_PERCENT - 576)) | (1L << (MAX_PROCESSES - 576)) | (1L << (MAX_QUEUE_READERS - 576)) | (1L << (MAX_ROLLOVER_FILES - 576)) | (1L << (MAXDOP - 576)) | (1L << (MAXRECURSION - 576)) | (1L << (MAXSIZE - 576)) | (1L << (MB - 576)) | (1L << (MEDIUM - 576)) | (1L << (MEMORY_OPTIMIZED_DATA - 576)) | (1L << (MESSAGE - 576)) | (1L << (MIN - 576)) | (1L << (MIN_ACTIVE_ROWVERSION - 576)) | (1L << (MIN_CPU_PERCENT - 576)) | (1L << (MIN_IOPS_PER_VOLUME - 576)) | (1L << (MIN_MEMORY_PERCENT - 576)) | (1L << (MINUTES - 576)) | (1L << (MIRROR_ADDRESS - 576)) | (1L << (MIXED_PAGE_ALLOCATION - 576)) | (1L << (MODE - 576)) | (1L << (MODIFY - 576)) | (1L << (MOVE - 576)) | (1L << (MULTI_USER - 576)) | (1L << (NAME - 576)) | (1L << (NESTED_TRIGGERS - 576)) | (1L << (NEW_ACCOUNT - 576)) | (1L << (NEW_BROKER - 576)) | (1L << (NEW_PASSWORD - 576)) | (1L << (NEXT - 576)) | (1L << (NO - 576)) | (1L << (NO_TRUNCATE - 576)) | (1L << (NO_WAIT - 576)) | (1L << (NOCOUNT - 576)) | (1L << (NODES - 576)) | (1L << (NOEXPAND - 576)) | (1L << (NON_TRANSACTED_ACCESS - 576)) | (1L << (NORECOMPUTE - 576)) | (1L << (NORECOVERY - 576)) | (1L << (NOWAIT - 576)) | (1L << (NTILE - 576)) | (1L << (NUMANODE - 576)) | (1L << (NUMBER - 576)) | (1L << (NUMERIC_ROUNDABORT - 576)) | (1L << (OBJECT - 576)) | (1L << (OFFLINE - 576)) | (1L << (OFFSET - 576)) | (1L << (OLD_ACCOUNT - 576)) | (1L << (ONLINE - 576)) | (1L << (ONLY - 576)) | (1L << (OPEN_EXISTING - 576)) | (1L << (OPTIMISTIC - 576)) | (1L << (OPTIMIZE - 576)) | (1L << (OUT - 576)) | (1L << (OUTPUT - 576)) | (1L << (OWNER - 576)) | (1L << (PAGE_VERIFY - 576)) | (1L << (PARAMETERIZATION - 576)) | (1L << (PARTITION - 576)))) != 0) || ((((_la - 640)) & ~0x3f) == 0 && ((1L << (_la - 640)) & ((1L << (PARTITIONS - 640)) | (1L << (PARTNER - 640)) | (1L << (PATH - 640)) | (1L << (POISON_MESSAGE_HANDLING - 640)) | (1L << (POOL - 640)) | (1L << (PORT - 640)) | (1L << (PRECEDING - 640)) | (1L << (PRIMARY_ROLE - 640)) | (1L << (PRIOR - 640)) | (1L << (PRIORITY - 640)) | (1L << (PRIORITY_LEVEL - 640)) | (1L << (PRIVATE - 640)) | (1L << (PRIVATE_KEY - 640)) | (1L << (PRIVILEGES - 640)) | (1L << (PROCEDURE_NAME - 640)) | (1L << (PROPERTY - 640)) | (1L << (PROVIDER - 640)) | (1L << (PROVIDER_KEY_NAME - 640)) | (1L << (QUERY - 640)) | (1L << (QUEUE - 640)) | (1L << (QUEUE_DELAY - 640)) | (1L << (QUOTED_IDENTIFIER - 640)) | (1L << (RANGE - 640)) | (1L << (RANK - 640)) | (1L << (RC2 - 640)) | (1L << (RC4 - 640)) | (1L << (RC4_128 - 640)) | (1L << (READ_COMMITTED_SNAPSHOT - 640)) | (1L << (READ_ONLY - 640)) | (1L << (READ_ONLY_ROUTING_LIST - 640)) | (1L << (READ_WRITE - 640)) | (1L << (READONLY - 640)) | (1L << (REBUILD - 640)) | (1L << (RECEIVE - 640)) | (1L << (RECOMPILE - 640)) | (1L << (RECOVERY - 640)) | (1L << (RECURSIVE_TRIGGERS - 640)) | (1L << (RELATIVE - 640)) | (1L << (REMOTE - 640)) | (1L << (REMOTE_SERVICE_NAME - 640)) | (1L << (REMOVE - 640)) | (1L << (REORGANIZE - 640)) | (1L << (REPEATABLE - 640)) | (1L << (REPLICA - 640)) | (1L << (REQUEST_MAX_CPU_TIME_SEC - 640)) | (1L << (REQUEST_MAX_MEMORY_GRANT_PERCENT - 640)) | (1L << (REQUEST_MEMORY_GRANT_TIMEOUT_SEC - 640)) | (1L << (REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT - 640)) | (1L << (RESERVE_DISK_SPACE - 640)) | (1L << (RESOURCE - 640)) | (1L << (RESOURCE_MANAGER_LOCATION - 640)) | (1L << (RESTRICTED_USER - 640)) | (1L << (RETENTION - 640)) | (1L << (ROBUST - 640)) | (1L << (ROOT - 640)) | (1L << (ROUTE - 640)) | (1L << (ROW - 640)) | (1L << (ROW_NUMBER - 640)) | (1L << (ROWGUID - 640)) | (1L << (ROWS - 640)) | (1L << (SAMPLE - 640)) | (1L << (SCHEMABINDING - 640)) | (1L << (SCOPED - 640)) | (1L << (SCROLL - 640)))) != 0) || ((((_la - 704)) & ~0x3f) == 0 && ((1L << (_la - 704)) & ((1L << (SCROLL_LOCKS - 704)) | (1L << (SEARCH - 704)) | (1L << (SECONDARY - 704)) | (1L << (SECONDARY_ONLY - 704)) | (1L << (SECONDARY_ROLE - 704)) | (1L << (SECONDS - 704)) | (1L << (SECRET - 704)) | (1L << (SECURITY_LOG - 704)) | (1L << (SEEDING_MODE - 704)) | (1L << (SELF - 704)) | (1L << (SEMI_SENSITIVE - 704)) | (1L << (SEND - 704)) | (1L << (SENT - 704)) | (1L << (SERIALIZABLE - 704)) | (1L << (SESSION_TIMEOUT - 704)) | (1L << (SETERROR - 704)) | (1L << (SHARE - 704)) | (1L << (SHOWPLAN - 704)) | (1L << (SIGNATURE - 704)) | (1L << (SIMPLE - 704)) | (1L << (SINGLE_USER - 704)) | (1L << (SIZE - 704)) | (1L << (SMALLINT - 704)) | (1L << (SNAPSHOT - 704)) | (1L << (SPATIAL_WINDOW_MAX_CELLS - 704)) | (1L << (STANDBY - 704)) | (1L << (START_DATE - 704)) | (1L << (STATIC - 704)) | (1L << (STATS_STREAM - 704)) | (1L << (STATUS - 704)) | (1L << (STDEV - 704)) | (1L << (STDEVP - 704)) | (1L << (STOPLIST - 704)) | (1L << (STUFF - 704)) | (1L << (SUBJECT - 704)) | (1L << (SUM - 704)) | (1L << (SUSPEND - 704)) | (1L << (SYMMETRIC - 704)) | (1L << (SYNCHRONOUS_COMMIT - 704)) | (1L << (SYNONYM - 704)) | (1L << (TAKE - 704)) | (1L << (TARGET_RECOVERY_TIME - 704)) | (1L << (TB - 704)) | (1L << (TEXTIMAGE_ON - 704)) | (1L << (THROW - 704)) | (1L << (TIES - 704)) | (1L << (TIME - 704)) | (1L << (TIMEOUT - 704)) | (1L << (TIMER - 704)) | (1L << (TINYINT - 704)) | (1L << (TORN_PAGE_DETECTION - 704)) | (1L << (TRANSFORM_NOISE_WORDS - 704)) | (1L << (TRIPLE_DES - 704)) | (1L << (TRIPLE_DES_3KEY - 704)) | (1L << (TRUSTWORTHY - 704)) | (1L << (TRY - 704)) | (1L << (TSQL - 704)) | (1L << (TWO_DIGIT_YEAR_CUTOFF - 704)) | (1L << (TYPE - 704)) | (1L << (TYPE_WARNING - 704)) | (1L << (UNBOUNDED - 704)) | (1L << (UNCOMMITTED - 704)) | (1L << (UNKNOWN - 704)) | (1L << (UNLIMITED - 704)))) != 0) || ((((_la - 768)) & ~0x3f) == 0 && ((1L << (_la - 768)) & ((1L << (USING - 768)) | (1L << (VALID_XML - 768)) | (1L << (VALIDATION - 768)) | (1L << (VALUE - 768)) | (1L << (VAR - 768)) | (1L << (VARP - 768)) | (1L << (VIEW_METADATA - 768)) | (1L << (VIEWS - 768)) | (1L << (WAIT - 768)) | (1L << (WELL_FORMED_XML - 768)) | (1L << (WORK - 768)) | (1L << (WORKLOAD - 768)) | (1L << (XML - 768)) | (1L << (XMLNAMESPACES - 768)) | (1L << (DOUBLE_QUOTE_ID - 768)) | (1L << (SQUARE_BRACKET_ID - 768)) | (1L << (ID - 768)))) != 0)) {
						{
						setState(10294);
						((Table_nameContext)_localctx).schema = id();
						}
					}

					setState(10297);
					match(DOT);
					}
					break;
				case 2:
					{
					setState(10299);
					((Table_nameContext)_localctx).schema = id();
					setState(10300);
					match(DOT);
					}
					break;
				}
				setState(10304);
				((Table_nameContext)_localctx).table = id();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(10315);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1446,_ctx) ) {
				case 1:
					{
					setState(10305);
					((Table_nameContext)_localctx).database = id();
					setState(10306);
					match(DOT);
					setState(10308);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==CALLED || ((((_la - 81)) & ~0x3f) == 0 && ((1L << (_la - 81)) & ((1L << (DATA_COMPRESSION - 81)) | (1L << (EVENTDATA - 81)) | (1L << (FILENAME - 81)) | (1L << (FILLFACTOR - 81)) | (1L << (FORCESEEK - 81)))) != 0) || ((((_la - 159)) & ~0x3f) == 0 && ((1L << (_la - 159)) & ((1L << (INIT - 159)) | (1L << (KEY - 159)) | (1L << (MASTER - 159)) | (1L << (MAX_MEMORY - 159)))) != 0) || ((((_la - 226)) & ~0x3f) == 0 && ((1L << (_la - 226)) & ((1L << (OFFSETS - 226)) | (1L << (PAGE - 226)) | (1L << (PUBLIC - 226)) | (1L << (R - 226)) | (1L << (RAW - 226)) | (1L << (RETURN - 226)) | (1L << (RETURNS - 226)) | (1L << (ROWCOUNT - 226)))) != 0) || ((((_la - 296)) & ~0x3f) == 0 && ((1L << (_la - 296)) & ((1L << (SAFETY - 296)) | (1L << (SERVER - 296)) | (1L << (SID - 296)) | (1L << (SOURCE - 296)) | (1L << (STATE - 296)) | (1L << (START - 296)) | (1L << (TARGET - 296)))) != 0) || ((((_la - 384)) & ~0x3f) == 0 && ((1L << (_la - 384)) & ((1L << (ABSOLUTE - 384)) | (1L << (ACCENT_SENSITIVITY - 384)) | (1L << (ACTION - 384)) | (1L << (ACTIVATION - 384)) | (1L << (ACTIVE - 384)) | (1L << (ADDRESS - 384)) | (1L << (AES_128 - 384)) | (1L << (AES_192 - 384)) | (1L << (AES_256 - 384)) | (1L << (AFFINITY - 384)) | (1L << (AFTER - 384)) | (1L << (AGGREGATE - 384)) | (1L << (ALGORITHM - 384)) | (1L << (ALLOW_ENCRYPTED_VALUE_MODIFICATIONS - 384)) | (1L << (ALLOW_SNAPSHOT_ISOLATION - 384)) | (1L << (ALLOWED - 384)) | (1L << (ANSI_NULL_DEFAULT - 384)) | (1L << (ANSI_NULLS - 384)) | (1L << (ANSI_PADDING - 384)) | (1L << (ANSI_WARNINGS - 384)) | (1L << (APPLICATION_LOG - 384)) | (1L << (APPLY - 384)) | (1L << (ARITHABORT - 384)) | (1L << (ASSEMBLY - 384)) | (1L << (AUDIT - 384)) | (1L << (AUDIT_GUID - 384)) | (1L << (AUTO - 384)) | (1L << (AUTO_CLEANUP - 384)) | (1L << (AUTO_CLOSE - 384)) | (1L << (AUTO_CREATE_STATISTICS - 384)) | (1L << (AUTO_SHRINK - 384)) | (1L << (AUTO_UPDATE_STATISTICS - 384)) | (1L << (AUTO_UPDATE_STATISTICS_ASYNC - 384)) | (1L << (AVAILABILITY - 384)) | (1L << (AVG - 384)) | (1L << (BACKUP_PRIORITY - 384)) | (1L << (BEGIN_DIALOG - 384)) | (1L << (BIGINT - 384)) | (1L << (BINARY_BASE64 - 384)) | (1L << (BINARY_CHECKSUM - 384)) | (1L << (BINDING - 384)) | (1L << (BLOB_STORAGE - 384)) | (1L << (BROKER - 384)) | (1L << (BROKER_INSTANCE - 384)) | (1L << (BULK_LOGGED - 384)) | (1L << (CALLER - 384)) | (1L << (CAP_CPU_PERCENT - 384)) | (1L << (CAST - 384)) | (1L << (CATALOG - 384)) | (1L << (CATCH - 384)) | (1L << (CHANGE_RETENTION - 384)) | (1L << (CHANGE_TRACKING - 384)) | (1L << (CHECKSUM - 384)) | (1L << (CHECKSUM_AGG - 384)) | (1L << (CLEANUP - 384)) | (1L << (COLLECTION - 384)) | (1L << (COLUMN_MASTER_KEY - 384)) | (1L << (COMMITTED - 384)) | (1L << (COMPATIBILITY_LEVEL - 384)) | (1L << (CONCAT - 384)) | (1L << (CONCAT_NULL_YIELDS_NULL - 384)) | (1L << (CONTENT - 384)) | (1L << (CONTROL - 384)) | (1L << (COOKIE - 384)))) != 0) || ((((_la - 448)) & ~0x3f) == 0 && ((1L << (_la - 448)) & ((1L << (COUNT - 448)) | (1L << (COUNT_BIG - 448)) | (1L << (COUNTER - 448)) | (1L << (CPU - 448)) | (1L << (CREATE_NEW - 448)) | (1L << (CREATION_DISPOSITION - 448)) | (1L << (CREDENTIAL - 448)) | (1L << (CRYPTOGRAPHIC - 448)) | (1L << (CURSOR_CLOSE_ON_COMMIT - 448)) | (1L << (CURSOR_DEFAULT - 448)) | (1L << (DATE_CORRELATION_OPTIMIZATION - 448)) | (1L << (DATEADD - 448)) | (1L << (DATEDIFF - 448)) | (1L << (DATENAME - 448)) | (1L << (DATEPART - 448)) | (1L << (DAYS - 448)) | (1L << (DB_CHAINING - 448)) | (1L << (DB_FAILOVER - 448)) | (1L << (DECRYPTION - 448)) | (1L << (DEFAULT_DOUBLE_QUOTE - 448)) | (1L << (DEFAULT_FULLTEXT_LANGUAGE - 448)) | (1L << (DEFAULT_LANGUAGE - 448)) | (1L << (DELAY - 448)) | (1L << (DELAYED_DURABILITY - 448)) | (1L << (DELETED - 448)) | (1L << (DENSE_RANK - 448)) | (1L << (DEPENDENTS - 448)) | (1L << (DES - 448)) | (1L << (DESCRIPTION - 448)) | (1L << (DESX - 448)) | (1L << (DHCP - 448)) | (1L << (DIALOG - 448)) | (1L << (DIRECTORY_NAME - 448)) | (1L << (DISABLE - 448)) | (1L << (DISABLE_BROKER - 448)) | (1L << (DISABLED - 448)) | (1L << (DISK_DRIVE - 448)) | (1L << (DOCUMENT - 448)) | (1L << (DYNAMIC - 448)) | (1L << (EMERGENCY - 448)) | (1L << (EMPTY - 448)) | (1L << (ENABLE - 448)) | (1L << (ENABLE_BROKER - 448)) | (1L << (ENCRYPTED_VALUE - 448)) | (1L << (ENCRYPTION - 448)) | (1L << (ENDPOINT_URL - 448)) | (1L << (ERROR_BROKER_CONVERSATIONS - 448)) | (1L << (EXCLUSIVE - 448)) | (1L << (EXECUTABLE - 448)) | (1L << (EXIST - 448)) | (1L << (EXPAND - 448)) | (1L << (EXPIRY_DATE - 448)) | (1L << (EXPLICIT - 448)) | (1L << (FAIL_OPERATION - 448)) | (1L << (FAILOVER_MODE - 448)) | (1L << (FAILURE - 448)) | (1L << (FAILURE_CONDITION_LEVEL - 448)) | (1L << (FAST - 448)) | (1L << (FAST_FORWARD - 448)) | (1L << (FILEGROUP - 448)) | (1L << (FILEGROWTH - 448)) | (1L << (FILEPATH - 448)) | (1L << (FILESTREAM - 448)))) != 0) || ((((_la - 512)) & ~0x3f) == 0 && ((1L << (_la - 512)) & ((1L << (FILTER - 512)) | (1L << (FIRST - 512)) | (1L << (FIRST_VALUE - 512)) | (1L << (FOLLOWING - 512)) | (1L << (FORCE - 512)) | (1L << (FORCE_FAILOVER_ALLOW_DATA_LOSS - 512)) | (1L << (FORCED - 512)) | (1L << (FORMAT - 512)) | (1L << (FORWARD_ONLY - 512)) | (1L << (FULLSCAN - 512)) | (1L << (FULLTEXT - 512)) | (1L << (GB - 512)) | (1L << (GETDATE - 512)) | (1L << (GETUTCDATE - 512)) | (1L << (GLOBAL - 512)) | (1L << (GO - 512)) | (1L << (GROUP_MAX_REQUESTS - 512)) | (1L << (GROUPING - 512)) | (1L << (GROUPING_ID - 512)) | (1L << (HADR - 512)) | (1L << (HASH - 512)) | (1L << (HEALTH_CHECK_TIMEOUT - 512)) | (1L << (HIGH - 512)) | (1L << (HONOR_BROKER_PRIORITY - 512)) | (1L << (HOURS - 512)) | (1L << (IDENTITY_VALUE - 512)) | (1L << (IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX - 512)) | (1L << (IMMEDIATE - 512)) | (1L << (IMPERSONATE - 512)) | (1L << (IMPORTANCE - 512)) | (1L << (INCREMENTAL - 512)) | (1L << (INITIATOR - 512)) | (1L << (INPUT - 512)) | (1L << (INSENSITIVE - 512)) | (1L << (INSERTED - 512)) | (1L << (INT - 512)) | (1L << (IP - 512)) | (1L << (ISOLATION - 512)) | (1L << (KB - 512)) | (1L << (KEEP - 512)) | (1L << (KEEPFIXED - 512)) | (1L << (KEY_SOURCE - 512)) | (1L << (KEYS - 512)) | (1L << (KEYSET - 512)) | (1L << (LAG - 512)) | (1L << (LAST - 512)) | (1L << (LAST_VALUE - 512)) | (1L << (LEAD - 512)) | (1L << (LEVEL - 512)) | (1L << (LIST - 512)) | (1L << (LISTENER - 512)) | (1L << (LISTENER_URL - 512)) | (1L << (LOB_COMPACTION - 512)) | (1L << (LOCAL - 512)) | (1L << (LOCATION - 512)) | (1L << (LOCK - 512)) | (1L << (LOCK_ESCALATION - 512)) | (1L << (LOGIN - 512)) | (1L << (LOOP - 512)) | (1L << (LOW - 512)) | (1L << (MANUAL - 512)) | (1L << (MARK - 512)))) != 0) || ((((_la - 576)) & ~0x3f) == 0 && ((1L << (_la - 576)) & ((1L << (MATERIALIZED - 576)) | (1L << (MAX - 576)) | (1L << (MAX_CPU_PERCENT - 576)) | (1L << (MAX_DOP - 576)) | (1L << (MAX_FILES - 576)) | (1L << (MAX_IOPS_PER_VOLUME - 576)) | (1L << (MAX_MEMORY_PERCENT - 576)) | (1L << (MAX_PROCESSES - 576)) | (1L << (MAX_QUEUE_READERS - 576)) | (1L << (MAX_ROLLOVER_FILES - 576)) | (1L << (MAXDOP - 576)) | (1L << (MAXRECURSION - 576)) | (1L << (MAXSIZE - 576)) | (1L << (MB - 576)) | (1L << (MEDIUM - 576)) | (1L << (MEMORY_OPTIMIZED_DATA - 576)) | (1L << (MESSAGE - 576)) | (1L << (MIN - 576)) | (1L << (MIN_ACTIVE_ROWVERSION - 576)) | (1L << (MIN_CPU_PERCENT - 576)) | (1L << (MIN_IOPS_PER_VOLUME - 576)) | (1L << (MIN_MEMORY_PERCENT - 576)) | (1L << (MINUTES - 576)) | (1L << (MIRROR_ADDRESS - 576)) | (1L << (MIXED_PAGE_ALLOCATION - 576)) | (1L << (MODE - 576)) | (1L << (MODIFY - 576)) | (1L << (MOVE - 576)) | (1L << (MULTI_USER - 576)) | (1L << (NAME - 576)) | (1L << (NESTED_TRIGGERS - 576)) | (1L << (NEW_ACCOUNT - 576)) | (1L << (NEW_BROKER - 576)) | (1L << (NEW_PASSWORD - 576)) | (1L << (NEXT - 576)) | (1L << (NO - 576)) | (1L << (NO_TRUNCATE - 576)) | (1L << (NO_WAIT - 576)) | (1L << (NOCOUNT - 576)) | (1L << (NODES - 576)) | (1L << (NOEXPAND - 576)) | (1L << (NON_TRANSACTED_ACCESS - 576)) | (1L << (NORECOMPUTE - 576)) | (1L << (NORECOVERY - 576)) | (1L << (NOWAIT - 576)) | (1L << (NTILE - 576)) | (1L << (NUMANODE - 576)) | (1L << (NUMBER - 576)) | (1L << (NUMERIC_ROUNDABORT - 576)) | (1L << (OBJECT - 576)) | (1L << (OFFLINE - 576)) | (1L << (OFFSET - 576)) | (1L << (OLD_ACCOUNT - 576)) | (1L << (ONLINE - 576)) | (1L << (ONLY - 576)) | (1L << (OPEN_EXISTING - 576)) | (1L << (OPTIMISTIC - 576)) | (1L << (OPTIMIZE - 576)) | (1L << (OUT - 576)) | (1L << (OUTPUT - 576)) | (1L << (OWNER - 576)) | (1L << (PAGE_VERIFY - 576)) | (1L << (PARAMETERIZATION - 576)) | (1L << (PARTITION - 576)))) != 0) || ((((_la - 640)) & ~0x3f) == 0 && ((1L << (_la - 640)) & ((1L << (PARTITIONS - 640)) | (1L << (PARTNER - 640)) | (1L << (PATH - 640)) | (1L << (POISON_MESSAGE_HANDLING - 640)) | (1L << (POOL - 640)) | (1L << (PORT - 640)) | (1L << (PRECEDING - 640)) | (1L << (PRIMARY_ROLE - 640)) | (1L << (PRIOR - 640)) | (1L << (PRIORITY - 640)) | (1L << (PRIORITY_LEVEL - 640)) | (1L << (PRIVATE - 640)) | (1L << (PRIVATE_KEY - 640)) | (1L << (PRIVILEGES - 640)) | (1L << (PROCEDURE_NAME - 640)) | (1L << (PROPERTY - 640)) | (1L << (PROVIDER - 640)) | (1L << (PROVIDER_KEY_NAME - 640)) | (1L << (QUERY - 640)) | (1L << (QUEUE - 640)) | (1L << (QUEUE_DELAY - 640)) | (1L << (QUOTED_IDENTIFIER - 640)) | (1L << (RANGE - 640)) | (1L << (RANK - 640)) | (1L << (RC2 - 640)) | (1L << (RC4 - 640)) | (1L << (RC4_128 - 640)) | (1L << (READ_COMMITTED_SNAPSHOT - 640)) | (1L << (READ_ONLY - 640)) | (1L << (READ_ONLY_ROUTING_LIST - 640)) | (1L << (READ_WRITE - 640)) | (1L << (READONLY - 640)) | (1L << (REBUILD - 640)) | (1L << (RECEIVE - 640)) | (1L << (RECOMPILE - 640)) | (1L << (RECOVERY - 640)) | (1L << (RECURSIVE_TRIGGERS - 640)) | (1L << (RELATIVE - 640)) | (1L << (REMOTE - 640)) | (1L << (REMOTE_SERVICE_NAME - 640)) | (1L << (REMOVE - 640)) | (1L << (REORGANIZE - 640)) | (1L << (REPEATABLE - 640)) | (1L << (REPLICA - 640)) | (1L << (REQUEST_MAX_CPU_TIME_SEC - 640)) | (1L << (REQUEST_MAX_MEMORY_GRANT_PERCENT - 640)) | (1L << (REQUEST_MEMORY_GRANT_TIMEOUT_SEC - 640)) | (1L << (REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT - 640)) | (1L << (RESERVE_DISK_SPACE - 640)) | (1L << (RESOURCE - 640)) | (1L << (RESOURCE_MANAGER_LOCATION - 640)) | (1L << (RESTRICTED_USER - 640)) | (1L << (RETENTION - 640)) | (1L << (ROBUST - 640)) | (1L << (ROOT - 640)) | (1L << (ROUTE - 640)) | (1L << (ROW - 640)) | (1L << (ROW_NUMBER - 640)) | (1L << (ROWGUID - 640)) | (1L << (ROWS - 640)) | (1L << (SAMPLE - 640)) | (1L << (SCHEMABINDING - 640)) | (1L << (SCOPED - 640)) | (1L << (SCROLL - 640)))) != 0) || ((((_la - 704)) & ~0x3f) == 0 && ((1L << (_la - 704)) & ((1L << (SCROLL_LOCKS - 704)) | (1L << (SEARCH - 704)) | (1L << (SECONDARY - 704)) | (1L << (SECONDARY_ONLY - 704)) | (1L << (SECONDARY_ROLE - 704)) | (1L << (SECONDS - 704)) | (1L << (SECRET - 704)) | (1L << (SECURITY_LOG - 704)) | (1L << (SEEDING_MODE - 704)) | (1L << (SELF - 704)) | (1L << (SEMI_SENSITIVE - 704)) | (1L << (SEND - 704)) | (1L << (SENT - 704)) | (1L << (SERIALIZABLE - 704)) | (1L << (SESSION_TIMEOUT - 704)) | (1L << (SETERROR - 704)) | (1L << (SHARE - 704)) | (1L << (SHOWPLAN - 704)) | (1L << (SIGNATURE - 704)) | (1L << (SIMPLE - 704)) | (1L << (SINGLE_USER - 704)) | (1L << (SIZE - 704)) | (1L << (SMALLINT - 704)) | (1L << (SNAPSHOT - 704)) | (1L << (SPATIAL_WINDOW_MAX_CELLS - 704)) | (1L << (STANDBY - 704)) | (1L << (START_DATE - 704)) | (1L << (STATIC - 704)) | (1L << (STATS_STREAM - 704)) | (1L << (STATUS - 704)) | (1L << (STDEV - 704)) | (1L << (STDEVP - 704)) | (1L << (STOPLIST - 704)) | (1L << (STUFF - 704)) | (1L << (SUBJECT - 704)) | (1L << (SUM - 704)) | (1L << (SUSPEND - 704)) | (1L << (SYMMETRIC - 704)) | (1L << (SYNCHRONOUS_COMMIT - 704)) | (1L << (SYNONYM - 704)) | (1L << (TAKE - 704)) | (1L << (TARGET_RECOVERY_TIME - 704)) | (1L << (TB - 704)) | (1L << (TEXTIMAGE_ON - 704)) | (1L << (THROW - 704)) | (1L << (TIES - 704)) | (1L << (TIME - 704)) | (1L << (TIMEOUT - 704)) | (1L << (TIMER - 704)) | (1L << (TINYINT - 704)) | (1L << (TORN_PAGE_DETECTION - 704)) | (1L << (TRANSFORM_NOISE_WORDS - 704)) | (1L << (TRIPLE_DES - 704)) | (1L << (TRIPLE_DES_3KEY - 704)) | (1L << (TRUSTWORTHY - 704)) | (1L << (TRY - 704)) | (1L << (TSQL - 704)) | (1L << (TWO_DIGIT_YEAR_CUTOFF - 704)) | (1L << (TYPE - 704)) | (1L << (TYPE_WARNING - 704)) | (1L << (UNBOUNDED - 704)) | (1L << (UNCOMMITTED - 704)) | (1L << (UNKNOWN - 704)) | (1L << (UNLIMITED - 704)))) != 0) || ((((_la - 768)) & ~0x3f) == 0 && ((1L << (_la - 768)) & ((1L << (USING - 768)) | (1L << (VALID_XML - 768)) | (1L << (VALIDATION - 768)) | (1L << (VALUE - 768)) | (1L << (VAR - 768)) | (1L << (VARP - 768)) | (1L << (VIEW_METADATA - 768)) | (1L << (VIEWS - 768)) | (1L << (WAIT - 768)) | (1L << (WELL_FORMED_XML - 768)) | (1L << (WORK - 768)) | (1L << (WORKLOAD - 768)) | (1L << (XML - 768)) | (1L << (XMLNAMESPACES - 768)) | (1L << (DOUBLE_QUOTE_ID - 768)) | (1L << (SQUARE_BRACKET_ID - 768)) | (1L << (ID - 768)))) != 0)) {
						{
						setState(10307);
						((Table_nameContext)_localctx).schema = id();
						}
					}

					setState(10310);
					match(DOT);
					}
					break;
				case 2:
					{
					setState(10312);
					((Table_nameContext)_localctx).schema = id();
					setState(10313);
					match(DOT);
					}
					break;
				}
				setState(10317);
				match(BLOCKING_HIERARCHY);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Simple_nameContext extends ParserRuleContext {
		public IdContext schema;
		public IdContext name;
		public List id() {
			return getRuleContexts(IdContext.class);
		}
		public IdContext id(int i) {
			return getRuleContext(IdContext.class,i);
		}
		public TerminalNode DOT() { return getToken(TSqlParser.DOT, 0); }
		public Simple_nameContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_simple_name; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterSimple_name(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitSimple_name(this);
		}
	}

	public final Simple_nameContext simple_name() throws RecognitionException {
		Simple_nameContext _localctx = new Simple_nameContext(_ctx, getState());
		enterRule(_localctx, 898, RULE_simple_name);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(10323);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,1448,_ctx) ) {
			case 1:
				{
				setState(10320);
				((Simple_nameContext)_localctx).schema = id();
				setState(10321);
				match(DOT);
				}
				break;
			}
			setState(10325);
			((Simple_nameContext)_localctx).name = id();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Func_proc_name_schemaContext extends ParserRuleContext {
		public IdContext schema;
		public IdContext procedure;
		public List id() {
			return getRuleContexts(IdContext.class);
		}
		public IdContext id(int i) {
			return getRuleContext(IdContext.class,i);
		}
		public TerminalNode DOT() { return getToken(TSqlParser.DOT, 0); }
		public Func_proc_name_schemaContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_func_proc_name_schema; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterFunc_proc_name_schema(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitFunc_proc_name_schema(this);
		}
	}

	public final Func_proc_name_schemaContext func_proc_name_schema() throws RecognitionException {
		Func_proc_name_schemaContext _localctx = new Func_proc_name_schemaContext(_ctx, getState());
		enterRule(_localctx, 900, RULE_func_proc_name_schema);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(10330);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,1449,_ctx) ) {
			case 1:
				{
				{
				setState(10327);
				((Func_proc_name_schemaContext)_localctx).schema = id();
				}
				setState(10328);
				match(DOT);
				}
				break;
			}
			setState(10332);
			((Func_proc_name_schemaContext)_localctx).procedure = id();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Func_proc_name_database_schemaContext extends ParserRuleContext {
		public IdContext database;
		public IdContext schema;
		public IdContext procedure;
		public Func_proc_name_schemaContext func_proc_name_schema() {
			return getRuleContext(Func_proc_name_schemaContext.class,0);
		}
		public List id() {
			return getRuleContexts(IdContext.class);
		}
		public IdContext id(int i) {
			return getRuleContext(IdContext.class,i);
		}
		public List DOT() { return getTokens(TSqlParser.DOT); }
		public TerminalNode DOT(int i) {
			return getToken(TSqlParser.DOT, i);
		}
		public Func_proc_name_database_schemaContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_func_proc_name_database_schema; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterFunc_proc_name_database_schema(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitFunc_proc_name_database_schema(this);
		}
	}

	public final Func_proc_name_database_schemaContext func_proc_name_database_schema() throws RecognitionException {
		Func_proc_name_database_schemaContext _localctx = new Func_proc_name_database_schemaContext(_ctx, getState());
		enterRule(_localctx, 902, RULE_func_proc_name_database_schema);
		int _la;
		try {
			setState(10345);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,1452,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(10334);
				func_proc_name_schema();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(10342);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1451,_ctx) ) {
				case 1:
					{
					setState(10335);
					((Func_proc_name_database_schemaContext)_localctx).database = id();
					setState(10336);
					match(DOT);
					setState(10338);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==CALLED || ((((_la - 81)) & ~0x3f) == 0 && ((1L << (_la - 81)) & ((1L << (DATA_COMPRESSION - 81)) | (1L << (EVENTDATA - 81)) | (1L << (FILENAME - 81)) | (1L << (FILLFACTOR - 81)) | (1L << (FORCESEEK - 81)))) != 0) || ((((_la - 159)) & ~0x3f) == 0 && ((1L << (_la - 159)) & ((1L << (INIT - 159)) | (1L << (KEY - 159)) | (1L << (MASTER - 159)) | (1L << (MAX_MEMORY - 159)))) != 0) || ((((_la - 226)) & ~0x3f) == 0 && ((1L << (_la - 226)) & ((1L << (OFFSETS - 226)) | (1L << (PAGE - 226)) | (1L << (PUBLIC - 226)) | (1L << (R - 226)) | (1L << (RAW - 226)) | (1L << (RETURN - 226)) | (1L << (RETURNS - 226)) | (1L << (ROWCOUNT - 226)))) != 0) || ((((_la - 296)) & ~0x3f) == 0 && ((1L << (_la - 296)) & ((1L << (SAFETY - 296)) | (1L << (SERVER - 296)) | (1L << (SID - 296)) | (1L << (SOURCE - 296)) | (1L << (STATE - 296)) | (1L << (START - 296)) | (1L << (TARGET - 296)))) != 0) || ((((_la - 384)) & ~0x3f) == 0 && ((1L << (_la - 384)) & ((1L << (ABSOLUTE - 384)) | (1L << (ACCENT_SENSITIVITY - 384)) | (1L << (ACTION - 384)) | (1L << (ACTIVATION - 384)) | (1L << (ACTIVE - 384)) | (1L << (ADDRESS - 384)) | (1L << (AES_128 - 384)) | (1L << (AES_192 - 384)) | (1L << (AES_256 - 384)) | (1L << (AFFINITY - 384)) | (1L << (AFTER - 384)) | (1L << (AGGREGATE - 384)) | (1L << (ALGORITHM - 384)) | (1L << (ALLOW_ENCRYPTED_VALUE_MODIFICATIONS - 384)) | (1L << (ALLOW_SNAPSHOT_ISOLATION - 384)) | (1L << (ALLOWED - 384)) | (1L << (ANSI_NULL_DEFAULT - 384)) | (1L << (ANSI_NULLS - 384)) | (1L << (ANSI_PADDING - 384)) | (1L << (ANSI_WARNINGS - 384)) | (1L << (APPLICATION_LOG - 384)) | (1L << (APPLY - 384)) | (1L << (ARITHABORT - 384)) | (1L << (ASSEMBLY - 384)) | (1L << (AUDIT - 384)) | (1L << (AUDIT_GUID - 384)) | (1L << (AUTO - 384)) | (1L << (AUTO_CLEANUP - 384)) | (1L << (AUTO_CLOSE - 384)) | (1L << (AUTO_CREATE_STATISTICS - 384)) | (1L << (AUTO_SHRINK - 384)) | (1L << (AUTO_UPDATE_STATISTICS - 384)) | (1L << (AUTO_UPDATE_STATISTICS_ASYNC - 384)) | (1L << (AVAILABILITY - 384)) | (1L << (AVG - 384)) | (1L << (BACKUP_PRIORITY - 384)) | (1L << (BEGIN_DIALOG - 384)) | (1L << (BIGINT - 384)) | (1L << (BINARY_BASE64 - 384)) | (1L << (BINARY_CHECKSUM - 384)) | (1L << (BINDING - 384)) | (1L << (BLOB_STORAGE - 384)) | (1L << (BROKER - 384)) | (1L << (BROKER_INSTANCE - 384)) | (1L << (BULK_LOGGED - 384)) | (1L << (CALLER - 384)) | (1L << (CAP_CPU_PERCENT - 384)) | (1L << (CAST - 384)) | (1L << (CATALOG - 384)) | (1L << (CATCH - 384)) | (1L << (CHANGE_RETENTION - 384)) | (1L << (CHANGE_TRACKING - 384)) | (1L << (CHECKSUM - 384)) | (1L << (CHECKSUM_AGG - 384)) | (1L << (CLEANUP - 384)) | (1L << (COLLECTION - 384)) | (1L << (COLUMN_MASTER_KEY - 384)) | (1L << (COMMITTED - 384)) | (1L << (COMPATIBILITY_LEVEL - 384)) | (1L << (CONCAT - 384)) | (1L << (CONCAT_NULL_YIELDS_NULL - 384)) | (1L << (CONTENT - 384)) | (1L << (CONTROL - 384)) | (1L << (COOKIE - 384)))) != 0) || ((((_la - 448)) & ~0x3f) == 0 && ((1L << (_la - 448)) & ((1L << (COUNT - 448)) | (1L << (COUNT_BIG - 448)) | (1L << (COUNTER - 448)) | (1L << (CPU - 448)) | (1L << (CREATE_NEW - 448)) | (1L << (CREATION_DISPOSITION - 448)) | (1L << (CREDENTIAL - 448)) | (1L << (CRYPTOGRAPHIC - 448)) | (1L << (CURSOR_CLOSE_ON_COMMIT - 448)) | (1L << (CURSOR_DEFAULT - 448)) | (1L << (DATE_CORRELATION_OPTIMIZATION - 448)) | (1L << (DATEADD - 448)) | (1L << (DATEDIFF - 448)) | (1L << (DATENAME - 448)) | (1L << (DATEPART - 448)) | (1L << (DAYS - 448)) | (1L << (DB_CHAINING - 448)) | (1L << (DB_FAILOVER - 448)) | (1L << (DECRYPTION - 448)) | (1L << (DEFAULT_DOUBLE_QUOTE - 448)) | (1L << (DEFAULT_FULLTEXT_LANGUAGE - 448)) | (1L << (DEFAULT_LANGUAGE - 448)) | (1L << (DELAY - 448)) | (1L << (DELAYED_DURABILITY - 448)) | (1L << (DELETED - 448)) | (1L << (DENSE_RANK - 448)) | (1L << (DEPENDENTS - 448)) | (1L << (DES - 448)) | (1L << (DESCRIPTION - 448)) | (1L << (DESX - 448)) | (1L << (DHCP - 448)) | (1L << (DIALOG - 448)) | (1L << (DIRECTORY_NAME - 448)) | (1L << (DISABLE - 448)) | (1L << (DISABLE_BROKER - 448)) | (1L << (DISABLED - 448)) | (1L << (DISK_DRIVE - 448)) | (1L << (DOCUMENT - 448)) | (1L << (DYNAMIC - 448)) | (1L << (EMERGENCY - 448)) | (1L << (EMPTY - 448)) | (1L << (ENABLE - 448)) | (1L << (ENABLE_BROKER - 448)) | (1L << (ENCRYPTED_VALUE - 448)) | (1L << (ENCRYPTION - 448)) | (1L << (ENDPOINT_URL - 448)) | (1L << (ERROR_BROKER_CONVERSATIONS - 448)) | (1L << (EXCLUSIVE - 448)) | (1L << (EXECUTABLE - 448)) | (1L << (EXIST - 448)) | (1L << (EXPAND - 448)) | (1L << (EXPIRY_DATE - 448)) | (1L << (EXPLICIT - 448)) | (1L << (FAIL_OPERATION - 448)) | (1L << (FAILOVER_MODE - 448)) | (1L << (FAILURE - 448)) | (1L << (FAILURE_CONDITION_LEVEL - 448)) | (1L << (FAST - 448)) | (1L << (FAST_FORWARD - 448)) | (1L << (FILEGROUP - 448)) | (1L << (FILEGROWTH - 448)) | (1L << (FILEPATH - 448)) | (1L << (FILESTREAM - 448)))) != 0) || ((((_la - 512)) & ~0x3f) == 0 && ((1L << (_la - 512)) & ((1L << (FILTER - 512)) | (1L << (FIRST - 512)) | (1L << (FIRST_VALUE - 512)) | (1L << (FOLLOWING - 512)) | (1L << (FORCE - 512)) | (1L << (FORCE_FAILOVER_ALLOW_DATA_LOSS - 512)) | (1L << (FORCED - 512)) | (1L << (FORMAT - 512)) | (1L << (FORWARD_ONLY - 512)) | (1L << (FULLSCAN - 512)) | (1L << (FULLTEXT - 512)) | (1L << (GB - 512)) | (1L << (GETDATE - 512)) | (1L << (GETUTCDATE - 512)) | (1L << (GLOBAL - 512)) | (1L << (GO - 512)) | (1L << (GROUP_MAX_REQUESTS - 512)) | (1L << (GROUPING - 512)) | (1L << (GROUPING_ID - 512)) | (1L << (HADR - 512)) | (1L << (HASH - 512)) | (1L << (HEALTH_CHECK_TIMEOUT - 512)) | (1L << (HIGH - 512)) | (1L << (HONOR_BROKER_PRIORITY - 512)) | (1L << (HOURS - 512)) | (1L << (IDENTITY_VALUE - 512)) | (1L << (IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX - 512)) | (1L << (IMMEDIATE - 512)) | (1L << (IMPERSONATE - 512)) | (1L << (IMPORTANCE - 512)) | (1L << (INCREMENTAL - 512)) | (1L << (INITIATOR - 512)) | (1L << (INPUT - 512)) | (1L << (INSENSITIVE - 512)) | (1L << (INSERTED - 512)) | (1L << (INT - 512)) | (1L << (IP - 512)) | (1L << (ISOLATION - 512)) | (1L << (KB - 512)) | (1L << (KEEP - 512)) | (1L << (KEEPFIXED - 512)) | (1L << (KEY_SOURCE - 512)) | (1L << (KEYS - 512)) | (1L << (KEYSET - 512)) | (1L << (LAG - 512)) | (1L << (LAST - 512)) | (1L << (LAST_VALUE - 512)) | (1L << (LEAD - 512)) | (1L << (LEVEL - 512)) | (1L << (LIST - 512)) | (1L << (LISTENER - 512)) | (1L << (LISTENER_URL - 512)) | (1L << (LOB_COMPACTION - 512)) | (1L << (LOCAL - 512)) | (1L << (LOCATION - 512)) | (1L << (LOCK - 512)) | (1L << (LOCK_ESCALATION - 512)) | (1L << (LOGIN - 512)) | (1L << (LOOP - 512)) | (1L << (LOW - 512)) | (1L << (MANUAL - 512)) | (1L << (MARK - 512)))) != 0) || ((((_la - 576)) & ~0x3f) == 0 && ((1L << (_la - 576)) & ((1L << (MATERIALIZED - 576)) | (1L << (MAX - 576)) | (1L << (MAX_CPU_PERCENT - 576)) | (1L << (MAX_DOP - 576)) | (1L << (MAX_FILES - 576)) | (1L << (MAX_IOPS_PER_VOLUME - 576)) | (1L << (MAX_MEMORY_PERCENT - 576)) | (1L << (MAX_PROCESSES - 576)) | (1L << (MAX_QUEUE_READERS - 576)) | (1L << (MAX_ROLLOVER_FILES - 576)) | (1L << (MAXDOP - 576)) | (1L << (MAXRECURSION - 576)) | (1L << (MAXSIZE - 576)) | (1L << (MB - 576)) | (1L << (MEDIUM - 576)) | (1L << (MEMORY_OPTIMIZED_DATA - 576)) | (1L << (MESSAGE - 576)) | (1L << (MIN - 576)) | (1L << (MIN_ACTIVE_ROWVERSION - 576)) | (1L << (MIN_CPU_PERCENT - 576)) | (1L << (MIN_IOPS_PER_VOLUME - 576)) | (1L << (MIN_MEMORY_PERCENT - 576)) | (1L << (MINUTES - 576)) | (1L << (MIRROR_ADDRESS - 576)) | (1L << (MIXED_PAGE_ALLOCATION - 576)) | (1L << (MODE - 576)) | (1L << (MODIFY - 576)) | (1L << (MOVE - 576)) | (1L << (MULTI_USER - 576)) | (1L << (NAME - 576)) | (1L << (NESTED_TRIGGERS - 576)) | (1L << (NEW_ACCOUNT - 576)) | (1L << (NEW_BROKER - 576)) | (1L << (NEW_PASSWORD - 576)) | (1L << (NEXT - 576)) | (1L << (NO - 576)) | (1L << (NO_TRUNCATE - 576)) | (1L << (NO_WAIT - 576)) | (1L << (NOCOUNT - 576)) | (1L << (NODES - 576)) | (1L << (NOEXPAND - 576)) | (1L << (NON_TRANSACTED_ACCESS - 576)) | (1L << (NORECOMPUTE - 576)) | (1L << (NORECOVERY - 576)) | (1L << (NOWAIT - 576)) | (1L << (NTILE - 576)) | (1L << (NUMANODE - 576)) | (1L << (NUMBER - 576)) | (1L << (NUMERIC_ROUNDABORT - 576)) | (1L << (OBJECT - 576)) | (1L << (OFFLINE - 576)) | (1L << (OFFSET - 576)) | (1L << (OLD_ACCOUNT - 576)) | (1L << (ONLINE - 576)) | (1L << (ONLY - 576)) | (1L << (OPEN_EXISTING - 576)) | (1L << (OPTIMISTIC - 576)) | (1L << (OPTIMIZE - 576)) | (1L << (OUT - 576)) | (1L << (OUTPUT - 576)) | (1L << (OWNER - 576)) | (1L << (PAGE_VERIFY - 576)) | (1L << (PARAMETERIZATION - 576)) | (1L << (PARTITION - 576)))) != 0) || ((((_la - 640)) & ~0x3f) == 0 && ((1L << (_la - 640)) & ((1L << (PARTITIONS - 640)) | (1L << (PARTNER - 640)) | (1L << (PATH - 640)) | (1L << (POISON_MESSAGE_HANDLING - 640)) | (1L << (POOL - 640)) | (1L << (PORT - 640)) | (1L << (PRECEDING - 640)) | (1L << (PRIMARY_ROLE - 640)) | (1L << (PRIOR - 640)) | (1L << (PRIORITY - 640)) | (1L << (PRIORITY_LEVEL - 640)) | (1L << (PRIVATE - 640)) | (1L << (PRIVATE_KEY - 640)) | (1L << (PRIVILEGES - 640)) | (1L << (PROCEDURE_NAME - 640)) | (1L << (PROPERTY - 640)) | (1L << (PROVIDER - 640)) | (1L << (PROVIDER_KEY_NAME - 640)) | (1L << (QUERY - 640)) | (1L << (QUEUE - 640)) | (1L << (QUEUE_DELAY - 640)) | (1L << (QUOTED_IDENTIFIER - 640)) | (1L << (RANGE - 640)) | (1L << (RANK - 640)) | (1L << (RC2 - 640)) | (1L << (RC4 - 640)) | (1L << (RC4_128 - 640)) | (1L << (READ_COMMITTED_SNAPSHOT - 640)) | (1L << (READ_ONLY - 640)) | (1L << (READ_ONLY_ROUTING_LIST - 640)) | (1L << (READ_WRITE - 640)) | (1L << (READONLY - 640)) | (1L << (REBUILD - 640)) | (1L << (RECEIVE - 640)) | (1L << (RECOMPILE - 640)) | (1L << (RECOVERY - 640)) | (1L << (RECURSIVE_TRIGGERS - 640)) | (1L << (RELATIVE - 640)) | (1L << (REMOTE - 640)) | (1L << (REMOTE_SERVICE_NAME - 640)) | (1L << (REMOVE - 640)) | (1L << (REORGANIZE - 640)) | (1L << (REPEATABLE - 640)) | (1L << (REPLICA - 640)) | (1L << (REQUEST_MAX_CPU_TIME_SEC - 640)) | (1L << (REQUEST_MAX_MEMORY_GRANT_PERCENT - 640)) | (1L << (REQUEST_MEMORY_GRANT_TIMEOUT_SEC - 640)) | (1L << (REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT - 640)) | (1L << (RESERVE_DISK_SPACE - 640)) | (1L << (RESOURCE - 640)) | (1L << (RESOURCE_MANAGER_LOCATION - 640)) | (1L << (RESTRICTED_USER - 640)) | (1L << (RETENTION - 640)) | (1L << (ROBUST - 640)) | (1L << (ROOT - 640)) | (1L << (ROUTE - 640)) | (1L << (ROW - 640)) | (1L << (ROW_NUMBER - 640)) | (1L << (ROWGUID - 640)) | (1L << (ROWS - 640)) | (1L << (SAMPLE - 640)) | (1L << (SCHEMABINDING - 640)) | (1L << (SCOPED - 640)) | (1L << (SCROLL - 640)))) != 0) || ((((_la - 704)) & ~0x3f) == 0 && ((1L << (_la - 704)) & ((1L << (SCROLL_LOCKS - 704)) | (1L << (SEARCH - 704)) | (1L << (SECONDARY - 704)) | (1L << (SECONDARY_ONLY - 704)) | (1L << (SECONDARY_ROLE - 704)) | (1L << (SECONDS - 704)) | (1L << (SECRET - 704)) | (1L << (SECURITY_LOG - 704)) | (1L << (SEEDING_MODE - 704)) | (1L << (SELF - 704)) | (1L << (SEMI_SENSITIVE - 704)) | (1L << (SEND - 704)) | (1L << (SENT - 704)) | (1L << (SERIALIZABLE - 704)) | (1L << (SESSION_TIMEOUT - 704)) | (1L << (SETERROR - 704)) | (1L << (SHARE - 704)) | (1L << (SHOWPLAN - 704)) | (1L << (SIGNATURE - 704)) | (1L << (SIMPLE - 704)) | (1L << (SINGLE_USER - 704)) | (1L << (SIZE - 704)) | (1L << (SMALLINT - 704)) | (1L << (SNAPSHOT - 704)) | (1L << (SPATIAL_WINDOW_MAX_CELLS - 704)) | (1L << (STANDBY - 704)) | (1L << (START_DATE - 704)) | (1L << (STATIC - 704)) | (1L << (STATS_STREAM - 704)) | (1L << (STATUS - 704)) | (1L << (STDEV - 704)) | (1L << (STDEVP - 704)) | (1L << (STOPLIST - 704)) | (1L << (STUFF - 704)) | (1L << (SUBJECT - 704)) | (1L << (SUM - 704)) | (1L << (SUSPEND - 704)) | (1L << (SYMMETRIC - 704)) | (1L << (SYNCHRONOUS_COMMIT - 704)) | (1L << (SYNONYM - 704)) | (1L << (TAKE - 704)) | (1L << (TARGET_RECOVERY_TIME - 704)) | (1L << (TB - 704)) | (1L << (TEXTIMAGE_ON - 704)) | (1L << (THROW - 704)) | (1L << (TIES - 704)) | (1L << (TIME - 704)) | (1L << (TIMEOUT - 704)) | (1L << (TIMER - 704)) | (1L << (TINYINT - 704)) | (1L << (TORN_PAGE_DETECTION - 704)) | (1L << (TRANSFORM_NOISE_WORDS - 704)) | (1L << (TRIPLE_DES - 704)) | (1L << (TRIPLE_DES_3KEY - 704)) | (1L << (TRUSTWORTHY - 704)) | (1L << (TRY - 704)) | (1L << (TSQL - 704)) | (1L << (TWO_DIGIT_YEAR_CUTOFF - 704)) | (1L << (TYPE - 704)) | (1L << (TYPE_WARNING - 704)) | (1L << (UNBOUNDED - 704)) | (1L << (UNCOMMITTED - 704)) | (1L << (UNKNOWN - 704)) | (1L << (UNLIMITED - 704)))) != 0) || ((((_la - 768)) & ~0x3f) == 0 && ((1L << (_la - 768)) & ((1L << (USING - 768)) | (1L << (VALID_XML - 768)) | (1L << (VALIDATION - 768)) | (1L << (VALUE - 768)) | (1L << (VAR - 768)) | (1L << (VARP - 768)) | (1L << (VIEW_METADATA - 768)) | (1L << (VIEWS - 768)) | (1L << (WAIT - 768)) | (1L << (WELL_FORMED_XML - 768)) | (1L << (WORK - 768)) | (1L << (WORKLOAD - 768)) | (1L << (XML - 768)) | (1L << (XMLNAMESPACES - 768)) | (1L << (DOUBLE_QUOTE_ID - 768)) | (1L << (SQUARE_BRACKET_ID - 768)) | (1L << (ID - 768)))) != 0)) {
						{
						setState(10337);
						((Func_proc_name_database_schemaContext)_localctx).schema = id();
						}
					}

					setState(10340);
					match(DOT);
					}
					break;
				}
				setState(10344);
				((Func_proc_name_database_schemaContext)_localctx).procedure = id();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Func_proc_name_server_database_schemaContext extends ParserRuleContext {
		public IdContext server;
		public IdContext database;
		public IdContext schema;
		public IdContext procedure;
		public Func_proc_name_database_schemaContext func_proc_name_database_schema() {
			return getRuleContext(Func_proc_name_database_schemaContext.class,0);
		}
		public List id() {
			return getRuleContexts(IdContext.class);
		}
		public IdContext id(int i) {
			return getRuleContext(IdContext.class,i);
		}
		public List DOT() { return getTokens(TSqlParser.DOT); }
		public TerminalNode DOT(int i) {
			return getToken(TSqlParser.DOT, i);
		}
		public Func_proc_name_server_database_schemaContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_func_proc_name_server_database_schema; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterFunc_proc_name_server_database_schema(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitFunc_proc_name_server_database_schema(this);
		}
	}

	public final Func_proc_name_server_database_schemaContext func_proc_name_server_database_schema() throws RecognitionException {
		Func_proc_name_server_database_schemaContext _localctx = new Func_proc_name_server_database_schemaContext(_ctx, getState());
		enterRule(_localctx, 904, RULE_func_proc_name_server_database_schema);
		int _la;
		try {
			setState(10360);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,1455,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(10347);
				func_proc_name_database_schema();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(10357);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1454,_ctx) ) {
				case 1:
					{
					setState(10348);
					((Func_proc_name_server_database_schemaContext)_localctx).server = id();
					setState(10349);
					match(DOT);
					setState(10350);
					((Func_proc_name_server_database_schemaContext)_localctx).database = id();
					setState(10351);
					match(DOT);
					setState(10353);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==CALLED || ((((_la - 81)) & ~0x3f) == 0 && ((1L << (_la - 81)) & ((1L << (DATA_COMPRESSION - 81)) | (1L << (EVENTDATA - 81)) | (1L << (FILENAME - 81)) | (1L << (FILLFACTOR - 81)) | (1L << (FORCESEEK - 81)))) != 0) || ((((_la - 159)) & ~0x3f) == 0 && ((1L << (_la - 159)) & ((1L << (INIT - 159)) | (1L << (KEY - 159)) | (1L << (MASTER - 159)) | (1L << (MAX_MEMORY - 159)))) != 0) || ((((_la - 226)) & ~0x3f) == 0 && ((1L << (_la - 226)) & ((1L << (OFFSETS - 226)) | (1L << (PAGE - 226)) | (1L << (PUBLIC - 226)) | (1L << (R - 226)) | (1L << (RAW - 226)) | (1L << (RETURN - 226)) | (1L << (RETURNS - 226)) | (1L << (ROWCOUNT - 226)))) != 0) || ((((_la - 296)) & ~0x3f) == 0 && ((1L << (_la - 296)) & ((1L << (SAFETY - 296)) | (1L << (SERVER - 296)) | (1L << (SID - 296)) | (1L << (SOURCE - 296)) | (1L << (STATE - 296)) | (1L << (START - 296)) | (1L << (TARGET - 296)))) != 0) || ((((_la - 384)) & ~0x3f) == 0 && ((1L << (_la - 384)) & ((1L << (ABSOLUTE - 384)) | (1L << (ACCENT_SENSITIVITY - 384)) | (1L << (ACTION - 384)) | (1L << (ACTIVATION - 384)) | (1L << (ACTIVE - 384)) | (1L << (ADDRESS - 384)) | (1L << (AES_128 - 384)) | (1L << (AES_192 - 384)) | (1L << (AES_256 - 384)) | (1L << (AFFINITY - 384)) | (1L << (AFTER - 384)) | (1L << (AGGREGATE - 384)) | (1L << (ALGORITHM - 384)) | (1L << (ALLOW_ENCRYPTED_VALUE_MODIFICATIONS - 384)) | (1L << (ALLOW_SNAPSHOT_ISOLATION - 384)) | (1L << (ALLOWED - 384)) | (1L << (ANSI_NULL_DEFAULT - 384)) | (1L << (ANSI_NULLS - 384)) | (1L << (ANSI_PADDING - 384)) | (1L << (ANSI_WARNINGS - 384)) | (1L << (APPLICATION_LOG - 384)) | (1L << (APPLY - 384)) | (1L << (ARITHABORT - 384)) | (1L << (ASSEMBLY - 384)) | (1L << (AUDIT - 384)) | (1L << (AUDIT_GUID - 384)) | (1L << (AUTO - 384)) | (1L << (AUTO_CLEANUP - 384)) | (1L << (AUTO_CLOSE - 384)) | (1L << (AUTO_CREATE_STATISTICS - 384)) | (1L << (AUTO_SHRINK - 384)) | (1L << (AUTO_UPDATE_STATISTICS - 384)) | (1L << (AUTO_UPDATE_STATISTICS_ASYNC - 384)) | (1L << (AVAILABILITY - 384)) | (1L << (AVG - 384)) | (1L << (BACKUP_PRIORITY - 384)) | (1L << (BEGIN_DIALOG - 384)) | (1L << (BIGINT - 384)) | (1L << (BINARY_BASE64 - 384)) | (1L << (BINARY_CHECKSUM - 384)) | (1L << (BINDING - 384)) | (1L << (BLOB_STORAGE - 384)) | (1L << (BROKER - 384)) | (1L << (BROKER_INSTANCE - 384)) | (1L << (BULK_LOGGED - 384)) | (1L << (CALLER - 384)) | (1L << (CAP_CPU_PERCENT - 384)) | (1L << (CAST - 384)) | (1L << (CATALOG - 384)) | (1L << (CATCH - 384)) | (1L << (CHANGE_RETENTION - 384)) | (1L << (CHANGE_TRACKING - 384)) | (1L << (CHECKSUM - 384)) | (1L << (CHECKSUM_AGG - 384)) | (1L << (CLEANUP - 384)) | (1L << (COLLECTION - 384)) | (1L << (COLUMN_MASTER_KEY - 384)) | (1L << (COMMITTED - 384)) | (1L << (COMPATIBILITY_LEVEL - 384)) | (1L << (CONCAT - 384)) | (1L << (CONCAT_NULL_YIELDS_NULL - 384)) | (1L << (CONTENT - 384)) | (1L << (CONTROL - 384)) | (1L << (COOKIE - 384)))) != 0) || ((((_la - 448)) & ~0x3f) == 0 && ((1L << (_la - 448)) & ((1L << (COUNT - 448)) | (1L << (COUNT_BIG - 448)) | (1L << (COUNTER - 448)) | (1L << (CPU - 448)) | (1L << (CREATE_NEW - 448)) | (1L << (CREATION_DISPOSITION - 448)) | (1L << (CREDENTIAL - 448)) | (1L << (CRYPTOGRAPHIC - 448)) | (1L << (CURSOR_CLOSE_ON_COMMIT - 448)) | (1L << (CURSOR_DEFAULT - 448)) | (1L << (DATE_CORRELATION_OPTIMIZATION - 448)) | (1L << (DATEADD - 448)) | (1L << (DATEDIFF - 448)) | (1L << (DATENAME - 448)) | (1L << (DATEPART - 448)) | (1L << (DAYS - 448)) | (1L << (DB_CHAINING - 448)) | (1L << (DB_FAILOVER - 448)) | (1L << (DECRYPTION - 448)) | (1L << (DEFAULT_DOUBLE_QUOTE - 448)) | (1L << (DEFAULT_FULLTEXT_LANGUAGE - 448)) | (1L << (DEFAULT_LANGUAGE - 448)) | (1L << (DELAY - 448)) | (1L << (DELAYED_DURABILITY - 448)) | (1L << (DELETED - 448)) | (1L << (DENSE_RANK - 448)) | (1L << (DEPENDENTS - 448)) | (1L << (DES - 448)) | (1L << (DESCRIPTION - 448)) | (1L << (DESX - 448)) | (1L << (DHCP - 448)) | (1L << (DIALOG - 448)) | (1L << (DIRECTORY_NAME - 448)) | (1L << (DISABLE - 448)) | (1L << (DISABLE_BROKER - 448)) | (1L << (DISABLED - 448)) | (1L << (DISK_DRIVE - 448)) | (1L << (DOCUMENT - 448)) | (1L << (DYNAMIC - 448)) | (1L << (EMERGENCY - 448)) | (1L << (EMPTY - 448)) | (1L << (ENABLE - 448)) | (1L << (ENABLE_BROKER - 448)) | (1L << (ENCRYPTED_VALUE - 448)) | (1L << (ENCRYPTION - 448)) | (1L << (ENDPOINT_URL - 448)) | (1L << (ERROR_BROKER_CONVERSATIONS - 448)) | (1L << (EXCLUSIVE - 448)) | (1L << (EXECUTABLE - 448)) | (1L << (EXIST - 448)) | (1L << (EXPAND - 448)) | (1L << (EXPIRY_DATE - 448)) | (1L << (EXPLICIT - 448)) | (1L << (FAIL_OPERATION - 448)) | (1L << (FAILOVER_MODE - 448)) | (1L << (FAILURE - 448)) | (1L << (FAILURE_CONDITION_LEVEL - 448)) | (1L << (FAST - 448)) | (1L << (FAST_FORWARD - 448)) | (1L << (FILEGROUP - 448)) | (1L << (FILEGROWTH - 448)) | (1L << (FILEPATH - 448)) | (1L << (FILESTREAM - 448)))) != 0) || ((((_la - 512)) & ~0x3f) == 0 && ((1L << (_la - 512)) & ((1L << (FILTER - 512)) | (1L << (FIRST - 512)) | (1L << (FIRST_VALUE - 512)) | (1L << (FOLLOWING - 512)) | (1L << (FORCE - 512)) | (1L << (FORCE_FAILOVER_ALLOW_DATA_LOSS - 512)) | (1L << (FORCED - 512)) | (1L << (FORMAT - 512)) | (1L << (FORWARD_ONLY - 512)) | (1L << (FULLSCAN - 512)) | (1L << (FULLTEXT - 512)) | (1L << (GB - 512)) | (1L << (GETDATE - 512)) | (1L << (GETUTCDATE - 512)) | (1L << (GLOBAL - 512)) | (1L << (GO - 512)) | (1L << (GROUP_MAX_REQUESTS - 512)) | (1L << (GROUPING - 512)) | (1L << (GROUPING_ID - 512)) | (1L << (HADR - 512)) | (1L << (HASH - 512)) | (1L << (HEALTH_CHECK_TIMEOUT - 512)) | (1L << (HIGH - 512)) | (1L << (HONOR_BROKER_PRIORITY - 512)) | (1L << (HOURS - 512)) | (1L << (IDENTITY_VALUE - 512)) | (1L << (IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX - 512)) | (1L << (IMMEDIATE - 512)) | (1L << (IMPERSONATE - 512)) | (1L << (IMPORTANCE - 512)) | (1L << (INCREMENTAL - 512)) | (1L << (INITIATOR - 512)) | (1L << (INPUT - 512)) | (1L << (INSENSITIVE - 512)) | (1L << (INSERTED - 512)) | (1L << (INT - 512)) | (1L << (IP - 512)) | (1L << (ISOLATION - 512)) | (1L << (KB - 512)) | (1L << (KEEP - 512)) | (1L << (KEEPFIXED - 512)) | (1L << (KEY_SOURCE - 512)) | (1L << (KEYS - 512)) | (1L << (KEYSET - 512)) | (1L << (LAG - 512)) | (1L << (LAST - 512)) | (1L << (LAST_VALUE - 512)) | (1L << (LEAD - 512)) | (1L << (LEVEL - 512)) | (1L << (LIST - 512)) | (1L << (LISTENER - 512)) | (1L << (LISTENER_URL - 512)) | (1L << (LOB_COMPACTION - 512)) | (1L << (LOCAL - 512)) | (1L << (LOCATION - 512)) | (1L << (LOCK - 512)) | (1L << (LOCK_ESCALATION - 512)) | (1L << (LOGIN - 512)) | (1L << (LOOP - 512)) | (1L << (LOW - 512)) | (1L << (MANUAL - 512)) | (1L << (MARK - 512)))) != 0) || ((((_la - 576)) & ~0x3f) == 0 && ((1L << (_la - 576)) & ((1L << (MATERIALIZED - 576)) | (1L << (MAX - 576)) | (1L << (MAX_CPU_PERCENT - 576)) | (1L << (MAX_DOP - 576)) | (1L << (MAX_FILES - 576)) | (1L << (MAX_IOPS_PER_VOLUME - 576)) | (1L << (MAX_MEMORY_PERCENT - 576)) | (1L << (MAX_PROCESSES - 576)) | (1L << (MAX_QUEUE_READERS - 576)) | (1L << (MAX_ROLLOVER_FILES - 576)) | (1L << (MAXDOP - 576)) | (1L << (MAXRECURSION - 576)) | (1L << (MAXSIZE - 576)) | (1L << (MB - 576)) | (1L << (MEDIUM - 576)) | (1L << (MEMORY_OPTIMIZED_DATA - 576)) | (1L << (MESSAGE - 576)) | (1L << (MIN - 576)) | (1L << (MIN_ACTIVE_ROWVERSION - 576)) | (1L << (MIN_CPU_PERCENT - 576)) | (1L << (MIN_IOPS_PER_VOLUME - 576)) | (1L << (MIN_MEMORY_PERCENT - 576)) | (1L << (MINUTES - 576)) | (1L << (MIRROR_ADDRESS - 576)) | (1L << (MIXED_PAGE_ALLOCATION - 576)) | (1L << (MODE - 576)) | (1L << (MODIFY - 576)) | (1L << (MOVE - 576)) | (1L << (MULTI_USER - 576)) | (1L << (NAME - 576)) | (1L << (NESTED_TRIGGERS - 576)) | (1L << (NEW_ACCOUNT - 576)) | (1L << (NEW_BROKER - 576)) | (1L << (NEW_PASSWORD - 576)) | (1L << (NEXT - 576)) | (1L << (NO - 576)) | (1L << (NO_TRUNCATE - 576)) | (1L << (NO_WAIT - 576)) | (1L << (NOCOUNT - 576)) | (1L << (NODES - 576)) | (1L << (NOEXPAND - 576)) | (1L << (NON_TRANSACTED_ACCESS - 576)) | (1L << (NORECOMPUTE - 576)) | (1L << (NORECOVERY - 576)) | (1L << (NOWAIT - 576)) | (1L << (NTILE - 576)) | (1L << (NUMANODE - 576)) | (1L << (NUMBER - 576)) | (1L << (NUMERIC_ROUNDABORT - 576)) | (1L << (OBJECT - 576)) | (1L << (OFFLINE - 576)) | (1L << (OFFSET - 576)) | (1L << (OLD_ACCOUNT - 576)) | (1L << (ONLINE - 576)) | (1L << (ONLY - 576)) | (1L << (OPEN_EXISTING - 576)) | (1L << (OPTIMISTIC - 576)) | (1L << (OPTIMIZE - 576)) | (1L << (OUT - 576)) | (1L << (OUTPUT - 576)) | (1L << (OWNER - 576)) | (1L << (PAGE_VERIFY - 576)) | (1L << (PARAMETERIZATION - 576)) | (1L << (PARTITION - 576)))) != 0) || ((((_la - 640)) & ~0x3f) == 0 && ((1L << (_la - 640)) & ((1L << (PARTITIONS - 640)) | (1L << (PARTNER - 640)) | (1L << (PATH - 640)) | (1L << (POISON_MESSAGE_HANDLING - 640)) | (1L << (POOL - 640)) | (1L << (PORT - 640)) | (1L << (PRECEDING - 640)) | (1L << (PRIMARY_ROLE - 640)) | (1L << (PRIOR - 640)) | (1L << (PRIORITY - 640)) | (1L << (PRIORITY_LEVEL - 640)) | (1L << (PRIVATE - 640)) | (1L << (PRIVATE_KEY - 640)) | (1L << (PRIVILEGES - 640)) | (1L << (PROCEDURE_NAME - 640)) | (1L << (PROPERTY - 640)) | (1L << (PROVIDER - 640)) | (1L << (PROVIDER_KEY_NAME - 640)) | (1L << (QUERY - 640)) | (1L << (QUEUE - 640)) | (1L << (QUEUE_DELAY - 640)) | (1L << (QUOTED_IDENTIFIER - 640)) | (1L << (RANGE - 640)) | (1L << (RANK - 640)) | (1L << (RC2 - 640)) | (1L << (RC4 - 640)) | (1L << (RC4_128 - 640)) | (1L << (READ_COMMITTED_SNAPSHOT - 640)) | (1L << (READ_ONLY - 640)) | (1L << (READ_ONLY_ROUTING_LIST - 640)) | (1L << (READ_WRITE - 640)) | (1L << (READONLY - 640)) | (1L << (REBUILD - 640)) | (1L << (RECEIVE - 640)) | (1L << (RECOMPILE - 640)) | (1L << (RECOVERY - 640)) | (1L << (RECURSIVE_TRIGGERS - 640)) | (1L << (RELATIVE - 640)) | (1L << (REMOTE - 640)) | (1L << (REMOTE_SERVICE_NAME - 640)) | (1L << (REMOVE - 640)) | (1L << (REORGANIZE - 640)) | (1L << (REPEATABLE - 640)) | (1L << (REPLICA - 640)) | (1L << (REQUEST_MAX_CPU_TIME_SEC - 640)) | (1L << (REQUEST_MAX_MEMORY_GRANT_PERCENT - 640)) | (1L << (REQUEST_MEMORY_GRANT_TIMEOUT_SEC - 640)) | (1L << (REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT - 640)) | (1L << (RESERVE_DISK_SPACE - 640)) | (1L << (RESOURCE - 640)) | (1L << (RESOURCE_MANAGER_LOCATION - 640)) | (1L << (RESTRICTED_USER - 640)) | (1L << (RETENTION - 640)) | (1L << (ROBUST - 640)) | (1L << (ROOT - 640)) | (1L << (ROUTE - 640)) | (1L << (ROW - 640)) | (1L << (ROW_NUMBER - 640)) | (1L << (ROWGUID - 640)) | (1L << (ROWS - 640)) | (1L << (SAMPLE - 640)) | (1L << (SCHEMABINDING - 640)) | (1L << (SCOPED - 640)) | (1L << (SCROLL - 640)))) != 0) || ((((_la - 704)) & ~0x3f) == 0 && ((1L << (_la - 704)) & ((1L << (SCROLL_LOCKS - 704)) | (1L << (SEARCH - 704)) | (1L << (SECONDARY - 704)) | (1L << (SECONDARY_ONLY - 704)) | (1L << (SECONDARY_ROLE - 704)) | (1L << (SECONDS - 704)) | (1L << (SECRET - 704)) | (1L << (SECURITY_LOG - 704)) | (1L << (SEEDING_MODE - 704)) | (1L << (SELF - 704)) | (1L << (SEMI_SENSITIVE - 704)) | (1L << (SEND - 704)) | (1L << (SENT - 704)) | (1L << (SERIALIZABLE - 704)) | (1L << (SESSION_TIMEOUT - 704)) | (1L << (SETERROR - 704)) | (1L << (SHARE - 704)) | (1L << (SHOWPLAN - 704)) | (1L << (SIGNATURE - 704)) | (1L << (SIMPLE - 704)) | (1L << (SINGLE_USER - 704)) | (1L << (SIZE - 704)) | (1L << (SMALLINT - 704)) | (1L << (SNAPSHOT - 704)) | (1L << (SPATIAL_WINDOW_MAX_CELLS - 704)) | (1L << (STANDBY - 704)) | (1L << (START_DATE - 704)) | (1L << (STATIC - 704)) | (1L << (STATS_STREAM - 704)) | (1L << (STATUS - 704)) | (1L << (STDEV - 704)) | (1L << (STDEVP - 704)) | (1L << (STOPLIST - 704)) | (1L << (STUFF - 704)) | (1L << (SUBJECT - 704)) | (1L << (SUM - 704)) | (1L << (SUSPEND - 704)) | (1L << (SYMMETRIC - 704)) | (1L << (SYNCHRONOUS_COMMIT - 704)) | (1L << (SYNONYM - 704)) | (1L << (TAKE - 704)) | (1L << (TARGET_RECOVERY_TIME - 704)) | (1L << (TB - 704)) | (1L << (TEXTIMAGE_ON - 704)) | (1L << (THROW - 704)) | (1L << (TIES - 704)) | (1L << (TIME - 704)) | (1L << (TIMEOUT - 704)) | (1L << (TIMER - 704)) | (1L << (TINYINT - 704)) | (1L << (TORN_PAGE_DETECTION - 704)) | (1L << (TRANSFORM_NOISE_WORDS - 704)) | (1L << (TRIPLE_DES - 704)) | (1L << (TRIPLE_DES_3KEY - 704)) | (1L << (TRUSTWORTHY - 704)) | (1L << (TRY - 704)) | (1L << (TSQL - 704)) | (1L << (TWO_DIGIT_YEAR_CUTOFF - 704)) | (1L << (TYPE - 704)) | (1L << (TYPE_WARNING - 704)) | (1L << (UNBOUNDED - 704)) | (1L << (UNCOMMITTED - 704)) | (1L << (UNKNOWN - 704)) | (1L << (UNLIMITED - 704)))) != 0) || ((((_la - 768)) & ~0x3f) == 0 && ((1L << (_la - 768)) & ((1L << (USING - 768)) | (1L << (VALID_XML - 768)) | (1L << (VALIDATION - 768)) | (1L << (VALUE - 768)) | (1L << (VAR - 768)) | (1L << (VARP - 768)) | (1L << (VIEW_METADATA - 768)) | (1L << (VIEWS - 768)) | (1L << (WAIT - 768)) | (1L << (WELL_FORMED_XML - 768)) | (1L << (WORK - 768)) | (1L << (WORKLOAD - 768)) | (1L << (XML - 768)) | (1L << (XMLNAMESPACES - 768)) | (1L << (DOUBLE_QUOTE_ID - 768)) | (1L << (SQUARE_BRACKET_ID - 768)) | (1L << (ID - 768)))) != 0)) {
						{
						setState(10352);
						((Func_proc_name_server_database_schemaContext)_localctx).schema = id();
						}
					}

					setState(10355);
					match(DOT);
					}
					break;
				}
				setState(10359);
				((Func_proc_name_server_database_schemaContext)_localctx).procedure = id();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Ddl_objectContext extends ParserRuleContext {
		public Full_table_nameContext full_table_name() {
			return getRuleContext(Full_table_nameContext.class,0);
		}
		public TerminalNode LOCAL_ID() { return getToken(TSqlParser.LOCAL_ID, 0); }
		public Ddl_objectContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_ddl_object; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterDdl_object(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitDdl_object(this);
		}
	}

	public final Ddl_objectContext ddl_object() throws RecognitionException {
		Ddl_objectContext _localctx = new Ddl_objectContext(_ctx, getState());
		enterRule(_localctx, 906, RULE_ddl_object);
		try {
			setState(10364);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case CALLED:
			case DATA_COMPRESSION:
			case EVENTDATA:
			case FILENAME:
			case FILLFACTOR:
			case FORCESEEK:
			case INIT:
			case KEY:
			case MASTER:
			case MAX_MEMORY:
			case OFFSETS:
			case PAGE:
			case PUBLIC:
			case R:
			case RAW:
			case RETURN:
			case RETURNS:
			case ROWCOUNT:
			case SAFETY:
			case SERVER:
			case SID:
			case SOURCE:
			case STATE:
			case START:
			case TARGET:
			case ABSOLUTE:
			case ACCENT_SENSITIVITY:
			case ACTION:
			case ACTIVATION:
			case ACTIVE:
			case ADDRESS:
			case AES_128:
			case AES_192:
			case AES_256:
			case AFFINITY:
			case AFTER:
			case AGGREGATE:
			case ALGORITHM:
			case ALLOW_ENCRYPTED_VALUE_MODIFICATIONS:
			case ALLOW_SNAPSHOT_ISOLATION:
			case ALLOWED:
			case ANSI_NULL_DEFAULT:
			case ANSI_NULLS:
			case ANSI_PADDING:
			case ANSI_WARNINGS:
			case APPLICATION_LOG:
			case APPLY:
			case ARITHABORT:
			case ASSEMBLY:
			case AUDIT:
			case AUDIT_GUID:
			case AUTO:
			case AUTO_CLEANUP:
			case AUTO_CLOSE:
			case AUTO_CREATE_STATISTICS:
			case AUTO_SHRINK:
			case AUTO_UPDATE_STATISTICS:
			case AUTO_UPDATE_STATISTICS_ASYNC:
			case AVAILABILITY:
			case AVG:
			case BACKUP_PRIORITY:
			case BEGIN_DIALOG:
			case BIGINT:
			case BINARY_BASE64:
			case BINARY_CHECKSUM:
			case BINDING:
			case BLOB_STORAGE:
			case BROKER:
			case BROKER_INSTANCE:
			case BULK_LOGGED:
			case CALLER:
			case CAP_CPU_PERCENT:
			case CAST:
			case CATALOG:
			case CATCH:
			case CHANGE_RETENTION:
			case CHANGE_TRACKING:
			case CHECKSUM:
			case CHECKSUM_AGG:
			case CLEANUP:
			case COLLECTION:
			case COLUMN_MASTER_KEY:
			case COMMITTED:
			case COMPATIBILITY_LEVEL:
			case CONCAT:
			case CONCAT_NULL_YIELDS_NULL:
			case CONTENT:
			case CONTROL:
			case COOKIE:
			case COUNT:
			case COUNT_BIG:
			case COUNTER:
			case CPU:
			case CREATE_NEW:
			case CREATION_DISPOSITION:
			case CREDENTIAL:
			case CRYPTOGRAPHIC:
			case CURSOR_CLOSE_ON_COMMIT:
			case CURSOR_DEFAULT:
			case DATE_CORRELATION_OPTIMIZATION:
			case DATEADD:
			case DATEDIFF:
			case DATENAME:
			case DATEPART:
			case DAYS:
			case DB_CHAINING:
			case DB_FAILOVER:
			case DECRYPTION:
			case DEFAULT_DOUBLE_QUOTE:
			case DEFAULT_FULLTEXT_LANGUAGE:
			case DEFAULT_LANGUAGE:
			case DELAY:
			case DELAYED_DURABILITY:
			case DELETED:
			case DENSE_RANK:
			case DEPENDENTS:
			case DES:
			case DESCRIPTION:
			case DESX:
			case DHCP:
			case DIALOG:
			case DIRECTORY_NAME:
			case DISABLE:
			case DISABLE_BROKER:
			case DISABLED:
			case DISK_DRIVE:
			case DOCUMENT:
			case DYNAMIC:
			case EMERGENCY:
			case EMPTY:
			case ENABLE:
			case ENABLE_BROKER:
			case ENCRYPTED_VALUE:
			case ENCRYPTION:
			case ENDPOINT_URL:
			case ERROR_BROKER_CONVERSATIONS:
			case EXCLUSIVE:
			case EXECUTABLE:
			case EXIST:
			case EXPAND:
			case EXPIRY_DATE:
			case EXPLICIT:
			case FAIL_OPERATION:
			case FAILOVER_MODE:
			case FAILURE:
			case FAILURE_CONDITION_LEVEL:
			case FAST:
			case FAST_FORWARD:
			case FILEGROUP:
			case FILEGROWTH:
			case FILEPATH:
			case FILESTREAM:
			case FILTER:
			case FIRST:
			case FIRST_VALUE:
			case FOLLOWING:
			case FORCE:
			case FORCE_FAILOVER_ALLOW_DATA_LOSS:
			case FORCED:
			case FORMAT:
			case FORWARD_ONLY:
			case FULLSCAN:
			case FULLTEXT:
			case GB:
			case GETDATE:
			case GETUTCDATE:
			case GLOBAL:
			case GO:
			case GROUP_MAX_REQUESTS:
			case GROUPING:
			case GROUPING_ID:
			case HADR:
			case HASH:
			case HEALTH_CHECK_TIMEOUT:
			case HIGH:
			case HONOR_BROKER_PRIORITY:
			case HOURS:
			case IDENTITY_VALUE:
			case IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX:
			case IMMEDIATE:
			case IMPERSONATE:
			case IMPORTANCE:
			case INCREMENTAL:
			case INITIATOR:
			case INPUT:
			case INSENSITIVE:
			case INSERTED:
			case INT:
			case IP:
			case ISOLATION:
			case KB:
			case KEEP:
			case KEEPFIXED:
			case KEY_SOURCE:
			case KEYS:
			case KEYSET:
			case LAG:
			case LAST:
			case LAST_VALUE:
			case LEAD:
			case LEVEL:
			case LIST:
			case LISTENER:
			case LISTENER_URL:
			case LOB_COMPACTION:
			case LOCAL:
			case LOCATION:
			case LOCK:
			case LOCK_ESCALATION:
			case LOGIN:
			case LOOP:
			case LOW:
			case MANUAL:
			case MARK:
			case MATERIALIZED:
			case MAX:
			case MAX_CPU_PERCENT:
			case MAX_DOP:
			case MAX_FILES:
			case MAX_IOPS_PER_VOLUME:
			case MAX_MEMORY_PERCENT:
			case MAX_PROCESSES:
			case MAX_QUEUE_READERS:
			case MAX_ROLLOVER_FILES:
			case MAXDOP:
			case MAXRECURSION:
			case MAXSIZE:
			case MB:
			case MEDIUM:
			case MEMORY_OPTIMIZED_DATA:
			case MESSAGE:
			case MIN:
			case MIN_ACTIVE_ROWVERSION:
			case MIN_CPU_PERCENT:
			case MIN_IOPS_PER_VOLUME:
			case MIN_MEMORY_PERCENT:
			case MINUTES:
			case MIRROR_ADDRESS:
			case MIXED_PAGE_ALLOCATION:
			case MODE:
			case MODIFY:
			case MOVE:
			case MULTI_USER:
			case NAME:
			case NESTED_TRIGGERS:
			case NEW_ACCOUNT:
			case NEW_BROKER:
			case NEW_PASSWORD:
			case NEXT:
			case NO:
			case NO_TRUNCATE:
			case NO_WAIT:
			case NOCOUNT:
			case NODES:
			case NOEXPAND:
			case NON_TRANSACTED_ACCESS:
			case NORECOMPUTE:
			case NORECOVERY:
			case NOWAIT:
			case NTILE:
			case NUMANODE:
			case NUMBER:
			case NUMERIC_ROUNDABORT:
			case OBJECT:
			case OFFLINE:
			case OFFSET:
			case OLD_ACCOUNT:
			case ONLINE:
			case ONLY:
			case OPEN_EXISTING:
			case OPTIMISTIC:
			case OPTIMIZE:
			case OUT:
			case OUTPUT:
			case OWNER:
			case PAGE_VERIFY:
			case PARAMETERIZATION:
			case PARTITION:
			case PARTITIONS:
			case PARTNER:
			case PATH:
			case POISON_MESSAGE_HANDLING:
			case POOL:
			case PORT:
			case PRECEDING:
			case PRIMARY_ROLE:
			case PRIOR:
			case PRIORITY:
			case PRIORITY_LEVEL:
			case PRIVATE:
			case PRIVATE_KEY:
			case PRIVILEGES:
			case PROCEDURE_NAME:
			case PROPERTY:
			case PROVIDER:
			case PROVIDER_KEY_NAME:
			case QUERY:
			case QUEUE:
			case QUEUE_DELAY:
			case QUOTED_IDENTIFIER:
			case RANGE:
			case RANK:
			case RC2:
			case RC4:
			case RC4_128:
			case READ_COMMITTED_SNAPSHOT:
			case READ_ONLY:
			case READ_ONLY_ROUTING_LIST:
			case READ_WRITE:
			case READONLY:
			case REBUILD:
			case RECEIVE:
			case RECOMPILE:
			case RECOVERY:
			case RECURSIVE_TRIGGERS:
			case RELATIVE:
			case REMOTE:
			case REMOTE_SERVICE_NAME:
			case REMOVE:
			case REORGANIZE:
			case REPEATABLE:
			case REPLICA:
			case REQUEST_MAX_CPU_TIME_SEC:
			case REQUEST_MAX_MEMORY_GRANT_PERCENT:
			case REQUEST_MEMORY_GRANT_TIMEOUT_SEC:
			case REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT:
			case RESERVE_DISK_SPACE:
			case RESOURCE:
			case RESOURCE_MANAGER_LOCATION:
			case RESTRICTED_USER:
			case RETENTION:
			case ROBUST:
			case ROOT:
			case ROUTE:
			case ROW:
			case ROW_NUMBER:
			case ROWGUID:
			case ROWS:
			case SAMPLE:
			case SCHEMABINDING:
			case SCOPED:
			case SCROLL:
			case SCROLL_LOCKS:
			case SEARCH:
			case SECONDARY:
			case SECONDARY_ONLY:
			case SECONDARY_ROLE:
			case SECONDS:
			case SECRET:
			case SECURITY_LOG:
			case SEEDING_MODE:
			case SELF:
			case SEMI_SENSITIVE:
			case SEND:
			case SENT:
			case SERIALIZABLE:
			case SESSION_TIMEOUT:
			case SETERROR:
			case SHARE:
			case SHOWPLAN:
			case SIGNATURE:
			case SIMPLE:
			case SINGLE_USER:
			case SIZE:
			case SMALLINT:
			case SNAPSHOT:
			case SPATIAL_WINDOW_MAX_CELLS:
			case STANDBY:
			case START_DATE:
			case STATIC:
			case STATS_STREAM:
			case STATUS:
			case STDEV:
			case STDEVP:
			case STOPLIST:
			case STUFF:
			case SUBJECT:
			case SUM:
			case SUSPEND:
			case SYMMETRIC:
			case SYNCHRONOUS_COMMIT:
			case SYNONYM:
			case TAKE:
			case TARGET_RECOVERY_TIME:
			case TB:
			case TEXTIMAGE_ON:
			case THROW:
			case TIES:
			case TIME:
			case TIMEOUT:
			case TIMER:
			case TINYINT:
			case TORN_PAGE_DETECTION:
			case TRANSFORM_NOISE_WORDS:
			case TRIPLE_DES:
			case TRIPLE_DES_3KEY:
			case TRUSTWORTHY:
			case TRY:
			case TSQL:
			case TWO_DIGIT_YEAR_CUTOFF:
			case TYPE:
			case TYPE_WARNING:
			case UNBOUNDED:
			case UNCOMMITTED:
			case UNKNOWN:
			case UNLIMITED:
			case USING:
			case VALID_XML:
			case VALIDATION:
			case VALUE:
			case VAR:
			case VARP:
			case VIEW_METADATA:
			case VIEWS:
			case WAIT:
			case WELL_FORMED_XML:
			case WORK:
			case WORKLOAD:
			case XML:
			case XMLNAMESPACES:
			case DOUBLE_QUOTE_ID:
			case SQUARE_BRACKET_ID:
			case ID:
				enterOuterAlt(_localctx, 1);
				{
				setState(10362);
				full_table_name();
				}
				break;
			case LOCAL_ID:
				enterOuterAlt(_localctx, 2);
				{
				setState(10363);
				match(LOCAL_ID);
				}
				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 Full_column_nameContext extends ParserRuleContext {
		public IdContext column_name;
		public IdContext id() {
			return getRuleContext(IdContext.class,0);
		}
		public Table_nameContext table_name() {
			return getRuleContext(Table_nameContext.class,0);
		}
		public TerminalNode DOT() { return getToken(TSqlParser.DOT, 0); }
		public TerminalNode COMPATIBILITY_LEVEL() { return getToken(TSqlParser.COMPATIBILITY_LEVEL, 0); }
		public TerminalNode STATUS() { return getToken(TSqlParser.STATUS, 0); }
		public TerminalNode QUOTED_IDENTIFIER() { return getToken(TSqlParser.QUOTED_IDENTIFIER, 0); }
		public TerminalNode ARITHABORT() { return getToken(TSqlParser.ARITHABORT, 0); }
		public TerminalNode ANSI_WARNINGS() { return getToken(TSqlParser.ANSI_WARNINGS, 0); }
		public TerminalNode ANSI_PADDING() { return getToken(TSqlParser.ANSI_PADDING, 0); }
		public TerminalNode ANSI_NULLS() { return getToken(TSqlParser.ANSI_NULLS, 0); }
		public Full_column_nameContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_full_column_name; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterFull_column_name(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitFull_column_name(this);
		}
	}

	public final Full_column_nameContext full_column_name() throws RecognitionException {
		Full_column_nameContext _localctx = new Full_column_nameContext(_ctx, getState());
		enterRule(_localctx, 908, RULE_full_column_name);
		try {
			setState(10414);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,1465,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(10369);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1457,_ctx) ) {
				case 1:
					{
					setState(10366);
					table_name();
					setState(10367);
					match(DOT);
					}
					break;
				}
				setState(10371);
				((Full_column_nameContext)_localctx).column_name = id();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(10375);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1458,_ctx) ) {
				case 1:
					{
					setState(10372);
					table_name();
					setState(10373);
					match(DOT);
					}
					break;
				}
				setState(10377);
				match(COMPATIBILITY_LEVEL);
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(10381);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1459,_ctx) ) {
				case 1:
					{
					setState(10378);
					table_name();
					setState(10379);
					match(DOT);
					}
					break;
				}
				setState(10383);
				match(STATUS);
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(10387);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1460,_ctx) ) {
				case 1:
					{
					setState(10384);
					table_name();
					setState(10385);
					match(DOT);
					}
					break;
				}
				setState(10389);
				match(QUOTED_IDENTIFIER);
				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(10393);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1461,_ctx) ) {
				case 1:
					{
					setState(10390);
					table_name();
					setState(10391);
					match(DOT);
					}
					break;
				}
				setState(10395);
				match(ARITHABORT);
				}
				break;
			case 6:
				enterOuterAlt(_localctx, 6);
				{
				setState(10399);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1462,_ctx) ) {
				case 1:
					{
					setState(10396);
					table_name();
					setState(10397);
					match(DOT);
					}
					break;
				}
				setState(10401);
				match(ANSI_WARNINGS);
				}
				break;
			case 7:
				enterOuterAlt(_localctx, 7);
				{
				setState(10405);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1463,_ctx) ) {
				case 1:
					{
					setState(10402);
					table_name();
					setState(10403);
					match(DOT);
					}
					break;
				}
				setState(10407);
				match(ANSI_PADDING);
				}
				break;
			case 8:
				enterOuterAlt(_localctx, 8);
				{
				setState(10411);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1464,_ctx) ) {
				case 1:
					{
					setState(10408);
					table_name();
					setState(10409);
					match(DOT);
					}
					break;
				}
				setState(10413);
				match(ANSI_NULLS);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Column_name_list_with_orderContext extends ParserRuleContext {
		public List id() {
			return getRuleContexts(IdContext.class);
		}
		public IdContext id(int i) {
			return getRuleContext(IdContext.class,i);
		}
		public List COMMA() { return getTokens(TSqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(TSqlParser.COMMA, i);
		}
		public List ASC() { return getTokens(TSqlParser.ASC); }
		public TerminalNode ASC(int i) {
			return getToken(TSqlParser.ASC, i);
		}
		public List DESC() { return getTokens(TSqlParser.DESC); }
		public TerminalNode DESC(int i) {
			return getToken(TSqlParser.DESC, i);
		}
		public Column_name_list_with_orderContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_column_name_list_with_order; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterColumn_name_list_with_order(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitColumn_name_list_with_order(this);
		}
	}

	public final Column_name_list_with_orderContext column_name_list_with_order() throws RecognitionException {
		Column_name_list_with_orderContext _localctx = new Column_name_list_with_orderContext(_ctx, getState());
		enterRule(_localctx, 910, RULE_column_name_list_with_order);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(10416);
			id();
			setState(10418);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==ASC || _la==DESC) {
				{
				setState(10417);
				_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();
				}
				}
			}

			setState(10427);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA) {
				{
				{
				setState(10420);
				match(COMMA);
				setState(10421);
				id();
				setState(10423);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==ASC || _la==DESC) {
					{
					setState(10422);
					_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();
					}
					}
				}

				}
				}
				setState(10429);
				_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 Column_name_listContext extends ParserRuleContext {
		public List id() {
			return getRuleContexts(IdContext.class);
		}
		public IdContext id(int i) {
			return getRuleContext(IdContext.class,i);
		}
		public List COMMA() { return getTokens(TSqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(TSqlParser.COMMA, i);
		}
		public Column_name_listContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_column_name_list; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterColumn_name_list(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitColumn_name_list(this);
		}
	}

	public final Column_name_listContext column_name_list() throws RecognitionException {
		Column_name_listContext _localctx = new Column_name_listContext(_ctx, getState());
		enterRule(_localctx, 912, RULE_column_name_list);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(10430);
			id();
			setState(10435);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA) {
				{
				{
				setState(10431);
				match(COMMA);
				setState(10432);
				id();
				}
				}
				setState(10437);
				_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 Cursor_nameContext extends ParserRuleContext {
		public IdContext id() {
			return getRuleContext(IdContext.class,0);
		}
		public TerminalNode LOCAL_ID() { return getToken(TSqlParser.LOCAL_ID, 0); }
		public Cursor_nameContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_cursor_name; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterCursor_name(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitCursor_name(this);
		}
	}

	public final Cursor_nameContext cursor_name() throws RecognitionException {
		Cursor_nameContext _localctx = new Cursor_nameContext(_ctx, getState());
		enterRule(_localctx, 914, RULE_cursor_name);
		try {
			setState(10440);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case CALLED:
			case DATA_COMPRESSION:
			case EVENTDATA:
			case FILENAME:
			case FILLFACTOR:
			case FORCESEEK:
			case INIT:
			case KEY:
			case MASTER:
			case MAX_MEMORY:
			case OFFSETS:
			case PAGE:
			case PUBLIC:
			case R:
			case RAW:
			case RETURN:
			case RETURNS:
			case ROWCOUNT:
			case SAFETY:
			case SERVER:
			case SID:
			case SOURCE:
			case STATE:
			case START:
			case TARGET:
			case ABSOLUTE:
			case ACCENT_SENSITIVITY:
			case ACTION:
			case ACTIVATION:
			case ACTIVE:
			case ADDRESS:
			case AES_128:
			case AES_192:
			case AES_256:
			case AFFINITY:
			case AFTER:
			case AGGREGATE:
			case ALGORITHM:
			case ALLOW_ENCRYPTED_VALUE_MODIFICATIONS:
			case ALLOW_SNAPSHOT_ISOLATION:
			case ALLOWED:
			case ANSI_NULL_DEFAULT:
			case ANSI_NULLS:
			case ANSI_PADDING:
			case ANSI_WARNINGS:
			case APPLICATION_LOG:
			case APPLY:
			case ARITHABORT:
			case ASSEMBLY:
			case AUDIT:
			case AUDIT_GUID:
			case AUTO:
			case AUTO_CLEANUP:
			case AUTO_CLOSE:
			case AUTO_CREATE_STATISTICS:
			case AUTO_SHRINK:
			case AUTO_UPDATE_STATISTICS:
			case AUTO_UPDATE_STATISTICS_ASYNC:
			case AVAILABILITY:
			case AVG:
			case BACKUP_PRIORITY:
			case BEGIN_DIALOG:
			case BIGINT:
			case BINARY_BASE64:
			case BINARY_CHECKSUM:
			case BINDING:
			case BLOB_STORAGE:
			case BROKER:
			case BROKER_INSTANCE:
			case BULK_LOGGED:
			case CALLER:
			case CAP_CPU_PERCENT:
			case CAST:
			case CATALOG:
			case CATCH:
			case CHANGE_RETENTION:
			case CHANGE_TRACKING:
			case CHECKSUM:
			case CHECKSUM_AGG:
			case CLEANUP:
			case COLLECTION:
			case COLUMN_MASTER_KEY:
			case COMMITTED:
			case COMPATIBILITY_LEVEL:
			case CONCAT:
			case CONCAT_NULL_YIELDS_NULL:
			case CONTENT:
			case CONTROL:
			case COOKIE:
			case COUNT:
			case COUNT_BIG:
			case COUNTER:
			case CPU:
			case CREATE_NEW:
			case CREATION_DISPOSITION:
			case CREDENTIAL:
			case CRYPTOGRAPHIC:
			case CURSOR_CLOSE_ON_COMMIT:
			case CURSOR_DEFAULT:
			case DATE_CORRELATION_OPTIMIZATION:
			case DATEADD:
			case DATEDIFF:
			case DATENAME:
			case DATEPART:
			case DAYS:
			case DB_CHAINING:
			case DB_FAILOVER:
			case DECRYPTION:
			case DEFAULT_DOUBLE_QUOTE:
			case DEFAULT_FULLTEXT_LANGUAGE:
			case DEFAULT_LANGUAGE:
			case DELAY:
			case DELAYED_DURABILITY:
			case DELETED:
			case DENSE_RANK:
			case DEPENDENTS:
			case DES:
			case DESCRIPTION:
			case DESX:
			case DHCP:
			case DIALOG:
			case DIRECTORY_NAME:
			case DISABLE:
			case DISABLE_BROKER:
			case DISABLED:
			case DISK_DRIVE:
			case DOCUMENT:
			case DYNAMIC:
			case EMERGENCY:
			case EMPTY:
			case ENABLE:
			case ENABLE_BROKER:
			case ENCRYPTED_VALUE:
			case ENCRYPTION:
			case ENDPOINT_URL:
			case ERROR_BROKER_CONVERSATIONS:
			case EXCLUSIVE:
			case EXECUTABLE:
			case EXIST:
			case EXPAND:
			case EXPIRY_DATE:
			case EXPLICIT:
			case FAIL_OPERATION:
			case FAILOVER_MODE:
			case FAILURE:
			case FAILURE_CONDITION_LEVEL:
			case FAST:
			case FAST_FORWARD:
			case FILEGROUP:
			case FILEGROWTH:
			case FILEPATH:
			case FILESTREAM:
			case FILTER:
			case FIRST:
			case FIRST_VALUE:
			case FOLLOWING:
			case FORCE:
			case FORCE_FAILOVER_ALLOW_DATA_LOSS:
			case FORCED:
			case FORMAT:
			case FORWARD_ONLY:
			case FULLSCAN:
			case FULLTEXT:
			case GB:
			case GETDATE:
			case GETUTCDATE:
			case GLOBAL:
			case GO:
			case GROUP_MAX_REQUESTS:
			case GROUPING:
			case GROUPING_ID:
			case HADR:
			case HASH:
			case HEALTH_CHECK_TIMEOUT:
			case HIGH:
			case HONOR_BROKER_PRIORITY:
			case HOURS:
			case IDENTITY_VALUE:
			case IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX:
			case IMMEDIATE:
			case IMPERSONATE:
			case IMPORTANCE:
			case INCREMENTAL:
			case INITIATOR:
			case INPUT:
			case INSENSITIVE:
			case INSERTED:
			case INT:
			case IP:
			case ISOLATION:
			case KB:
			case KEEP:
			case KEEPFIXED:
			case KEY_SOURCE:
			case KEYS:
			case KEYSET:
			case LAG:
			case LAST:
			case LAST_VALUE:
			case LEAD:
			case LEVEL:
			case LIST:
			case LISTENER:
			case LISTENER_URL:
			case LOB_COMPACTION:
			case LOCAL:
			case LOCATION:
			case LOCK:
			case LOCK_ESCALATION:
			case LOGIN:
			case LOOP:
			case LOW:
			case MANUAL:
			case MARK:
			case MATERIALIZED:
			case MAX:
			case MAX_CPU_PERCENT:
			case MAX_DOP:
			case MAX_FILES:
			case MAX_IOPS_PER_VOLUME:
			case MAX_MEMORY_PERCENT:
			case MAX_PROCESSES:
			case MAX_QUEUE_READERS:
			case MAX_ROLLOVER_FILES:
			case MAXDOP:
			case MAXRECURSION:
			case MAXSIZE:
			case MB:
			case MEDIUM:
			case MEMORY_OPTIMIZED_DATA:
			case MESSAGE:
			case MIN:
			case MIN_ACTIVE_ROWVERSION:
			case MIN_CPU_PERCENT:
			case MIN_IOPS_PER_VOLUME:
			case MIN_MEMORY_PERCENT:
			case MINUTES:
			case MIRROR_ADDRESS:
			case MIXED_PAGE_ALLOCATION:
			case MODE:
			case MODIFY:
			case MOVE:
			case MULTI_USER:
			case NAME:
			case NESTED_TRIGGERS:
			case NEW_ACCOUNT:
			case NEW_BROKER:
			case NEW_PASSWORD:
			case NEXT:
			case NO:
			case NO_TRUNCATE:
			case NO_WAIT:
			case NOCOUNT:
			case NODES:
			case NOEXPAND:
			case NON_TRANSACTED_ACCESS:
			case NORECOMPUTE:
			case NORECOVERY:
			case NOWAIT:
			case NTILE:
			case NUMANODE:
			case NUMBER:
			case NUMERIC_ROUNDABORT:
			case OBJECT:
			case OFFLINE:
			case OFFSET:
			case OLD_ACCOUNT:
			case ONLINE:
			case ONLY:
			case OPEN_EXISTING:
			case OPTIMISTIC:
			case OPTIMIZE:
			case OUT:
			case OUTPUT:
			case OWNER:
			case PAGE_VERIFY:
			case PARAMETERIZATION:
			case PARTITION:
			case PARTITIONS:
			case PARTNER:
			case PATH:
			case POISON_MESSAGE_HANDLING:
			case POOL:
			case PORT:
			case PRECEDING:
			case PRIMARY_ROLE:
			case PRIOR:
			case PRIORITY:
			case PRIORITY_LEVEL:
			case PRIVATE:
			case PRIVATE_KEY:
			case PRIVILEGES:
			case PROCEDURE_NAME:
			case PROPERTY:
			case PROVIDER:
			case PROVIDER_KEY_NAME:
			case QUERY:
			case QUEUE:
			case QUEUE_DELAY:
			case QUOTED_IDENTIFIER:
			case RANGE:
			case RANK:
			case RC2:
			case RC4:
			case RC4_128:
			case READ_COMMITTED_SNAPSHOT:
			case READ_ONLY:
			case READ_ONLY_ROUTING_LIST:
			case READ_WRITE:
			case READONLY:
			case REBUILD:
			case RECEIVE:
			case RECOMPILE:
			case RECOVERY:
			case RECURSIVE_TRIGGERS:
			case RELATIVE:
			case REMOTE:
			case REMOTE_SERVICE_NAME:
			case REMOVE:
			case REORGANIZE:
			case REPEATABLE:
			case REPLICA:
			case REQUEST_MAX_CPU_TIME_SEC:
			case REQUEST_MAX_MEMORY_GRANT_PERCENT:
			case REQUEST_MEMORY_GRANT_TIMEOUT_SEC:
			case REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT:
			case RESERVE_DISK_SPACE:
			case RESOURCE:
			case RESOURCE_MANAGER_LOCATION:
			case RESTRICTED_USER:
			case RETENTION:
			case ROBUST:
			case ROOT:
			case ROUTE:
			case ROW:
			case ROW_NUMBER:
			case ROWGUID:
			case ROWS:
			case SAMPLE:
			case SCHEMABINDING:
			case SCOPED:
			case SCROLL:
			case SCROLL_LOCKS:
			case SEARCH:
			case SECONDARY:
			case SECONDARY_ONLY:
			case SECONDARY_ROLE:
			case SECONDS:
			case SECRET:
			case SECURITY_LOG:
			case SEEDING_MODE:
			case SELF:
			case SEMI_SENSITIVE:
			case SEND:
			case SENT:
			case SERIALIZABLE:
			case SESSION_TIMEOUT:
			case SETERROR:
			case SHARE:
			case SHOWPLAN:
			case SIGNATURE:
			case SIMPLE:
			case SINGLE_USER:
			case SIZE:
			case SMALLINT:
			case SNAPSHOT:
			case SPATIAL_WINDOW_MAX_CELLS:
			case STANDBY:
			case START_DATE:
			case STATIC:
			case STATS_STREAM:
			case STATUS:
			case STDEV:
			case STDEVP:
			case STOPLIST:
			case STUFF:
			case SUBJECT:
			case SUM:
			case SUSPEND:
			case SYMMETRIC:
			case SYNCHRONOUS_COMMIT:
			case SYNONYM:
			case TAKE:
			case TARGET_RECOVERY_TIME:
			case TB:
			case TEXTIMAGE_ON:
			case THROW:
			case TIES:
			case TIME:
			case TIMEOUT:
			case TIMER:
			case TINYINT:
			case TORN_PAGE_DETECTION:
			case TRANSFORM_NOISE_WORDS:
			case TRIPLE_DES:
			case TRIPLE_DES_3KEY:
			case TRUSTWORTHY:
			case TRY:
			case TSQL:
			case TWO_DIGIT_YEAR_CUTOFF:
			case TYPE:
			case TYPE_WARNING:
			case UNBOUNDED:
			case UNCOMMITTED:
			case UNKNOWN:
			case UNLIMITED:
			case USING:
			case VALID_XML:
			case VALIDATION:
			case VALUE:
			case VAR:
			case VARP:
			case VIEW_METADATA:
			case VIEWS:
			case WAIT:
			case WELL_FORMED_XML:
			case WORK:
			case WORKLOAD:
			case XML:
			case XMLNAMESPACES:
			case DOUBLE_QUOTE_ID:
			case SQUARE_BRACKET_ID:
			case ID:
				enterOuterAlt(_localctx, 1);
				{
				setState(10438);
				id();
				}
				break;
			case LOCAL_ID:
				enterOuterAlt(_localctx, 2);
				{
				setState(10439);
				match(LOCAL_ID);
				}
				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 On_offContext extends ParserRuleContext {
		public TerminalNode ON() { return getToken(TSqlParser.ON, 0); }
		public TerminalNode OFF() { return getToken(TSqlParser.OFF, 0); }
		public On_offContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_on_off; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterOn_off(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitOn_off(this);
		}
	}

	public final On_offContext on_off() throws RecognitionException {
		On_offContext _localctx = new On_offContext(_ctx, getState());
		enterRule(_localctx, 916, RULE_on_off);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(10442);
			_la = _input.LA(1);
			if ( !(_la==OFF || _la==ON) ) {
			_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 ClusteredContext extends ParserRuleContext {
		public TerminalNode CLUSTERED() { return getToken(TSqlParser.CLUSTERED, 0); }
		public TerminalNode NONCLUSTERED() { return getToken(TSqlParser.NONCLUSTERED, 0); }
		public ClusteredContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_clustered; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterClustered(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitClustered(this);
		}
	}

	public final ClusteredContext clustered() throws RecognitionException {
		ClusteredContext _localctx = new ClusteredContext(_ctx, getState());
		enterRule(_localctx, 918, RULE_clustered);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(10444);
			_la = _input.LA(1);
			if ( !(_la==CLUSTERED || _la==NONCLUSTERED) ) {
			_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 Null_notnullContext extends ParserRuleContext {
		public TerminalNode NULL() { return getToken(TSqlParser.NULL, 0); }
		public TerminalNode NOT() { return getToken(TSqlParser.NOT, 0); }
		public Null_notnullContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_null_notnull; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterNull_notnull(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitNull_notnull(this);
		}
	}

	public final Null_notnullContext null_notnull() throws RecognitionException {
		Null_notnullContext _localctx = new Null_notnullContext(_ctx, getState());
		enterRule(_localctx, 920, RULE_null_notnull);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(10447);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==NOT) {
				{
				setState(10446);
				match(NOT);
				}
			}

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

	public static class Null_or_defaultContext extends ParserRuleContext {
		public Null_notnullContext null_notnull() {
			return getRuleContext(Null_notnullContext.class,0);
		}
		public TerminalNode DEFAULT() { return getToken(TSqlParser.DEFAULT, 0); }
		public Constant_expressionContext constant_expression() {
			return getRuleContext(Constant_expressionContext.class,0);
		}
		public TerminalNode WITH() { return getToken(TSqlParser.WITH, 0); }
		public TerminalNode VALUES() { return getToken(TSqlParser.VALUES, 0); }
		public Null_or_defaultContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_null_or_default; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterNull_or_default(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitNull_or_default(this);
		}
	}

	public final Null_or_defaultContext null_or_default() throws RecognitionException {
		Null_or_defaultContext _localctx = new Null_or_defaultContext(_ctx, getState());
		enterRule(_localctx, 922, RULE_null_or_default);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(10458);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case NOT:
			case NULL:
				{
				setState(10451);
				null_notnull();
				}
				break;
			case DEFAULT:
				{
				setState(10452);
				match(DEFAULT);
				setState(10453);
				constant_expression();
				setState(10456);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1472,_ctx) ) {
				case 1:
					{
					setState(10454);
					match(WITH);
					setState(10455);
					match(VALUES);
					}
					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 Scalar_function_nameContext extends ParserRuleContext {
		public Func_proc_name_server_database_schemaContext func_proc_name_server_database_schema() {
			return getRuleContext(Func_proc_name_server_database_schemaContext.class,0);
		}
		public TerminalNode RIGHT() { return getToken(TSqlParser.RIGHT, 0); }
		public TerminalNode LEFT() { return getToken(TSqlParser.LEFT, 0); }
		public TerminalNode BINARY_CHECKSUM() { return getToken(TSqlParser.BINARY_CHECKSUM, 0); }
		public TerminalNode CHECKSUM() { return getToken(TSqlParser.CHECKSUM, 0); }
		public Scalar_function_nameContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_scalar_function_name; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterScalar_function_name(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitScalar_function_name(this);
		}
	}

	public final Scalar_function_nameContext scalar_function_name() throws RecognitionException {
		Scalar_function_nameContext _localctx = new Scalar_function_nameContext(_ctx, getState());
		enterRule(_localctx, 924, RULE_scalar_function_name);
		try {
			setState(10465);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,1474,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(10460);
				func_proc_name_server_database_schema();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(10461);
				match(RIGHT);
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(10462);
				match(LEFT);
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(10463);
				match(BINARY_CHECKSUM);
				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(10464);
				match(CHECKSUM);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Begin_conversation_timerContext extends ParserRuleContext {
		public TerminalNode BEGIN() { return getToken(TSqlParser.BEGIN, 0); }
		public TerminalNode CONVERSATION() { return getToken(TSqlParser.CONVERSATION, 0); }
		public TerminalNode TIMER() { return getToken(TSqlParser.TIMER, 0); }
		public TerminalNode LR_BRACKET() { return getToken(TSqlParser.LR_BRACKET, 0); }
		public TerminalNode LOCAL_ID() { return getToken(TSqlParser.LOCAL_ID, 0); }
		public TerminalNode RR_BRACKET() { return getToken(TSqlParser.RR_BRACKET, 0); }
		public TerminalNode TIMEOUT() { return getToken(TSqlParser.TIMEOUT, 0); }
		public TerminalNode EQUAL() { return getToken(TSqlParser.EQUAL, 0); }
		public TimeContext time() {
			return getRuleContext(TimeContext.class,0);
		}
		public TerminalNode SEMI() { return getToken(TSqlParser.SEMI, 0); }
		public Begin_conversation_timerContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_begin_conversation_timer; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterBegin_conversation_timer(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitBegin_conversation_timer(this);
		}
	}

	public final Begin_conversation_timerContext begin_conversation_timer() throws RecognitionException {
		Begin_conversation_timerContext _localctx = new Begin_conversation_timerContext(_ctx, getState());
		enterRule(_localctx, 926, RULE_begin_conversation_timer);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(10467);
			match(BEGIN);
			setState(10468);
			match(CONVERSATION);
			setState(10469);
			match(TIMER);
			setState(10470);
			match(LR_BRACKET);
			setState(10471);
			match(LOCAL_ID);
			setState(10472);
			match(RR_BRACKET);
			setState(10473);
			match(TIMEOUT);
			setState(10474);
			match(EQUAL);
			setState(10475);
			time();
			setState(10477);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,1475,_ctx) ) {
			case 1:
				{
				setState(10476);
				match(SEMI);
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Begin_conversation_dialogContext extends ParserRuleContext {
		public Token dialog_handle;
		public Service_nameContext initiator_service_name;
		public Service_nameContext target_service_name;
		public Token service_broker_guid;
		public TerminalNode BEGIN() { return getToken(TSqlParser.BEGIN, 0); }
		public TerminalNode DIALOG() { return getToken(TSqlParser.DIALOG, 0); }
		public TerminalNode FROM() { return getToken(TSqlParser.FROM, 0); }
		public List SERVICE() { return getTokens(TSqlParser.SERVICE); }
		public TerminalNode SERVICE(int i) {
			return getToken(TSqlParser.SERVICE, i);
		}
		public TerminalNode TO() { return getToken(TSqlParser.TO, 0); }
		public List ON() { return getTokens(TSqlParser.ON); }
		public TerminalNode ON(int i) {
			return getToken(TSqlParser.ON, i);
		}
		public TerminalNode CONTRACT() { return getToken(TSqlParser.CONTRACT, 0); }
		public Contract_nameContext contract_name() {
			return getRuleContext(Contract_nameContext.class,0);
		}
		public List LOCAL_ID() { return getTokens(TSqlParser.LOCAL_ID); }
		public TerminalNode LOCAL_ID(int i) {
			return getToken(TSqlParser.LOCAL_ID, i);
		}
		public List service_name() {
			return getRuleContexts(Service_nameContext.class);
		}
		public Service_nameContext service_name(int i) {
			return getRuleContext(Service_nameContext.class,i);
		}
		public TerminalNode CONVERSATION() { return getToken(TSqlParser.CONVERSATION, 0); }
		public List COMMA() { return getTokens(TSqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(TSqlParser.COMMA, i);
		}
		public TerminalNode WITH() { return getToken(TSqlParser.WITH, 0); }
		public TerminalNode SEMI() { return getToken(TSqlParser.SEMI, 0); }
		public TerminalNode STRING() { return getToken(TSqlParser.STRING, 0); }
		public List EQUAL() { return getTokens(TSqlParser.EQUAL); }
		public TerminalNode EQUAL(int i) {
			return getToken(TSqlParser.EQUAL, i);
		}
		public TerminalNode LIFETIME() { return getToken(TSqlParser.LIFETIME, 0); }
		public TerminalNode ENCRYPTION() { return getToken(TSqlParser.ENCRYPTION, 0); }
		public TerminalNode RELATED_CONVERSATION() { return getToken(TSqlParser.RELATED_CONVERSATION, 0); }
		public TerminalNode RELATED_CONVERSATION_GROUP() { return getToken(TSqlParser.RELATED_CONVERSATION_GROUP, 0); }
		public TerminalNode DECIMAL() { return getToken(TSqlParser.DECIMAL, 0); }
		public TerminalNode OFF() { return getToken(TSqlParser.OFF, 0); }
		public Begin_conversation_dialogContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_begin_conversation_dialog; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterBegin_conversation_dialog(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitBegin_conversation_dialog(this);
		}
	}

	public final Begin_conversation_dialogContext begin_conversation_dialog() throws RecognitionException {
		Begin_conversation_dialogContext _localctx = new Begin_conversation_dialogContext(_ctx, getState());
		enterRule(_localctx, 928, RULE_begin_conversation_dialog);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(10479);
			match(BEGIN);
			setState(10480);
			match(DIALOG);
			setState(10482);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==CONVERSATION) {
				{
				setState(10481);
				match(CONVERSATION);
				}
			}

			setState(10484);
			((Begin_conversation_dialogContext)_localctx).dialog_handle = match(LOCAL_ID);
			setState(10485);
			match(FROM);
			setState(10486);
			match(SERVICE);
			setState(10487);
			((Begin_conversation_dialogContext)_localctx).initiator_service_name = service_name();
			setState(10488);
			match(TO);
			setState(10489);
			match(SERVICE);
			setState(10490);
			((Begin_conversation_dialogContext)_localctx).target_service_name = service_name();
			setState(10493);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==COMMA) {
				{
				setState(10491);
				match(COMMA);
				setState(10492);
				((Begin_conversation_dialogContext)_localctx).service_broker_guid = match(STRING);
				}
			}

			setState(10495);
			match(ON);
			setState(10496);
			match(CONTRACT);
			setState(10497);
			contract_name();
			setState(10520);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,1483,_ctx) ) {
			case 1:
				{
				setState(10498);
				match(WITH);
				setState(10505);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==RELATED_CONVERSATION || _la==RELATED_CONVERSATION_GROUP) {
					{
					setState(10499);
					_la = _input.LA(1);
					if ( !(_la==RELATED_CONVERSATION || _la==RELATED_CONVERSATION_GROUP) ) {
					_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					setState(10500);
					match(EQUAL);
					setState(10501);
					match(LOCAL_ID);
					setState(10503);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==COMMA) {
						{
						setState(10502);
						match(COMMA);
						}
					}

					}
				}

				setState(10513);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==LIFETIME) {
					{
					setState(10507);
					match(LIFETIME);
					setState(10508);
					match(EQUAL);
					setState(10509);
					_la = _input.LA(1);
					if ( !(_la==LOCAL_ID || _la==DECIMAL) ) {
					_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					setState(10511);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==COMMA) {
						{
						setState(10510);
						match(COMMA);
						}
					}

					}
				}

				setState(10518);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1482,_ctx) ) {
				case 1:
					{
					setState(10515);
					match(ENCRYPTION);
					setState(10516);
					match(EQUAL);
					setState(10517);
					_la = _input.LA(1);
					if ( !(_la==OFF || _la==ON) ) {
					_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					}
					break;
				}
				}
				break;
			}
			setState(10523);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,1484,_ctx) ) {
			case 1:
				{
				setState(10522);
				match(SEMI);
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Contract_nameContext extends ParserRuleContext {
		public IdContext id() {
			return getRuleContext(IdContext.class,0);
		}
		public ExpressionContext expression() {
			return getRuleContext(ExpressionContext.class,0);
		}
		public Contract_nameContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_contract_name; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterContract_name(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitContract_name(this);
		}
	}

	public final Contract_nameContext contract_name() throws RecognitionException {
		Contract_nameContext _localctx = new Contract_nameContext(_ctx, getState());
		enterRule(_localctx, 930, RULE_contract_name);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(10527);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,1485,_ctx) ) {
			case 1:
				{
				setState(10525);
				id();
				}
				break;
			case 2:
				{
				setState(10526);
				expression(0);
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Service_nameContext extends ParserRuleContext {
		public IdContext id() {
			return getRuleContext(IdContext.class,0);
		}
		public ExpressionContext expression() {
			return getRuleContext(ExpressionContext.class,0);
		}
		public Service_nameContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_service_name; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterService_name(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitService_name(this);
		}
	}

	public final Service_nameContext service_name() throws RecognitionException {
		Service_nameContext _localctx = new Service_nameContext(_ctx, getState());
		enterRule(_localctx, 932, RULE_service_name);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(10531);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,1486,_ctx) ) {
			case 1:
				{
				setState(10529);
				id();
				}
				break;
			case 2:
				{
				setState(10530);
				expression(0);
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class End_conversationContext extends ParserRuleContext {
		public Token conversation_handle;
		public Token faliure_code;
		public Token failure_text;
		public TerminalNode END() { return getToken(TSqlParser.END, 0); }
		public TerminalNode CONVERSATION() { return getToken(TSqlParser.CONVERSATION, 0); }
		public List LOCAL_ID() { return getTokens(TSqlParser.LOCAL_ID); }
		public TerminalNode LOCAL_ID(int i) {
			return getToken(TSqlParser.LOCAL_ID, i);
		}
		public TerminalNode SEMI() { return getToken(TSqlParser.SEMI, 0); }
		public TerminalNode WITH() { return getToken(TSqlParser.WITH, 0); }
		public TerminalNode ERROR() { return getToken(TSqlParser.ERROR, 0); }
		public List EQUAL() { return getTokens(TSqlParser.EQUAL); }
		public TerminalNode EQUAL(int i) {
			return getToken(TSqlParser.EQUAL, i);
		}
		public TerminalNode DESCRIPTION() { return getToken(TSqlParser.DESCRIPTION, 0); }
		public TerminalNode CLEANUP() { return getToken(TSqlParser.CLEANUP, 0); }
		public List STRING() { return getTokens(TSqlParser.STRING); }
		public TerminalNode STRING(int i) {
			return getToken(TSqlParser.STRING, i);
		}
		public End_conversationContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_end_conversation; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterEnd_conversation(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitEnd_conversation(this);
		}
	}

	public final End_conversationContext end_conversation() throws RecognitionException {
		End_conversationContext _localctx = new End_conversationContext(_ctx, getState());
		enterRule(_localctx, 934, RULE_end_conversation);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(10533);
			match(END);
			setState(10534);
			match(CONVERSATION);
			setState(10535);
			((End_conversationContext)_localctx).conversation_handle = match(LOCAL_ID);
			setState(10537);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,1487,_ctx) ) {
			case 1:
				{
				setState(10536);
				match(SEMI);
				}
				break;
			}
			setState(10551);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,1490,_ctx) ) {
			case 1:
				{
				setState(10539);
				match(WITH);
				setState(10546);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==ERROR) {
					{
					setState(10540);
					match(ERROR);
					setState(10541);
					match(EQUAL);
					setState(10542);
					((End_conversationContext)_localctx).faliure_code = _input.LT(1);
					_la = _input.LA(1);
					if ( !(_la==LOCAL_ID || _la==STRING) ) {
						((End_conversationContext)_localctx).faliure_code = (Token)_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					setState(10543);
					match(DESCRIPTION);
					setState(10544);
					match(EQUAL);
					setState(10545);
					((End_conversationContext)_localctx).failure_text = _input.LT(1);
					_la = _input.LA(1);
					if ( !(_la==LOCAL_ID || _la==STRING) ) {
						((End_conversationContext)_localctx).failure_text = (Token)_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					}
				}

				setState(10549);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1489,_ctx) ) {
				case 1:
					{
					setState(10548);
					match(CLEANUP);
					}
					break;
				}
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Waitfor_conversationContext extends ParserRuleContext {
		public TimeContext timeout;
		public TerminalNode LR_BRACKET() { return getToken(TSqlParser.LR_BRACKET, 0); }
		public Get_conversationContext get_conversation() {
			return getRuleContext(Get_conversationContext.class,0);
		}
		public TerminalNode RR_BRACKET() { return getToken(TSqlParser.RR_BRACKET, 0); }
		public TerminalNode WAITFOR() { return getToken(TSqlParser.WAITFOR, 0); }
		public TerminalNode TIMEOUT() { return getToken(TSqlParser.TIMEOUT, 0); }
		public TerminalNode SEMI() { return getToken(TSqlParser.SEMI, 0); }
		public TimeContext time() {
			return getRuleContext(TimeContext.class,0);
		}
		public TerminalNode COMMA() { return getToken(TSqlParser.COMMA, 0); }
		public Waitfor_conversationContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_waitfor_conversation; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterWaitfor_conversation(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitWaitfor_conversation(this);
		}
	}

	public final Waitfor_conversationContext waitfor_conversation() throws RecognitionException {
		Waitfor_conversationContext _localctx = new Waitfor_conversationContext(_ctx, getState());
		enterRule(_localctx, 936, RULE_waitfor_conversation);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(10554);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==WAITFOR) {
				{
				setState(10553);
				match(WAITFOR);
				}
			}

			setState(10556);
			match(LR_BRACKET);
			setState(10557);
			get_conversation();
			setState(10558);
			match(RR_BRACKET);
			setState(10564);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,1493,_ctx) ) {
			case 1:
				{
				setState(10560);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==COMMA) {
					{
					setState(10559);
					match(COMMA);
					}
				}

				setState(10562);
				match(TIMEOUT);
				setState(10563);
				((Waitfor_conversationContext)_localctx).timeout = time();
				}
				break;
			}
			setState(10567);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,1494,_ctx) ) {
			case 1:
				{
				setState(10566);
				match(SEMI);
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Get_conversationContext extends ParserRuleContext {
		public Token conversation_group_id;
		public Queue_idContext queue;
		public TerminalNode GET() { return getToken(TSqlParser.GET, 0); }
		public TerminalNode CONVERSATION() { return getToken(TSqlParser.CONVERSATION, 0); }
		public TerminalNode GROUP() { return getToken(TSqlParser.GROUP, 0); }
		public TerminalNode FROM() { return getToken(TSqlParser.FROM, 0); }
		public Queue_idContext queue_id() {
			return getRuleContext(Queue_idContext.class,0);
		}
		public TerminalNode STRING() { return getToken(TSqlParser.STRING, 0); }
		public TerminalNode LOCAL_ID() { return getToken(TSqlParser.LOCAL_ID, 0); }
		public TerminalNode SEMI() { return getToken(TSqlParser.SEMI, 0); }
		public Get_conversationContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_get_conversation; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterGet_conversation(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitGet_conversation(this);
		}
	}

	public final Get_conversationContext get_conversation() throws RecognitionException {
		Get_conversationContext _localctx = new Get_conversationContext(_ctx, getState());
		enterRule(_localctx, 938, RULE_get_conversation);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(10569);
			match(GET);
			setState(10570);
			match(CONVERSATION);
			setState(10571);
			match(GROUP);
			setState(10572);
			((Get_conversationContext)_localctx).conversation_group_id = _input.LT(1);
			_la = _input.LA(1);
			if ( !(_la==LOCAL_ID || _la==STRING) ) {
				((Get_conversationContext)_localctx).conversation_group_id = (Token)_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			setState(10573);
			match(FROM);
			setState(10574);
			((Get_conversationContext)_localctx).queue = queue_id();
			setState(10576);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,1495,_ctx) ) {
			case 1:
				{
				setState(10575);
				match(SEMI);
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Queue_idContext extends ParserRuleContext {
		public IdContext database_name;
		public IdContext schema_name;
		public IdContext name;
		public List DOT() { return getTokens(TSqlParser.DOT); }
		public TerminalNode DOT(int i) {
			return getToken(TSqlParser.DOT, i);
		}
		public List id() {
			return getRuleContexts(IdContext.class);
		}
		public IdContext id(int i) {
			return getRuleContext(IdContext.class,i);
		}
		public Queue_idContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_queue_id; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterQueue_id(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitQueue_id(this);
		}
	}

	public final Queue_idContext queue_id() throws RecognitionException {
		Queue_idContext _localctx = new Queue_idContext(_ctx, getState());
		enterRule(_localctx, 940, RULE_queue_id);
		try {
			setState(10585);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,1496,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				{
				setState(10578);
				((Queue_idContext)_localctx).database_name = id();
				setState(10579);
				match(DOT);
				setState(10580);
				((Queue_idContext)_localctx).schema_name = id();
				setState(10581);
				match(DOT);
				setState(10582);
				((Queue_idContext)_localctx).name = id();
				}
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(10584);
				id();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Send_conversationContext extends ParserRuleContext {
		public Token conversation_handle;
		public ExpressionContext message_type_name;
		public Token message_body_expression;
		public TerminalNode SEND() { return getToken(TSqlParser.SEND, 0); }
		public TerminalNode ON() { return getToken(TSqlParser.ON, 0); }
		public TerminalNode CONVERSATION() { return getToken(TSqlParser.CONVERSATION, 0); }
		public TerminalNode MESSAGE() { return getToken(TSqlParser.MESSAGE, 0); }
		public TerminalNode TYPE() { return getToken(TSqlParser.TYPE, 0); }
		public ExpressionContext expression() {
			return getRuleContext(ExpressionContext.class,0);
		}
		public List STRING() { return getTokens(TSqlParser.STRING); }
		public TerminalNode STRING(int i) {
			return getToken(TSqlParser.STRING, i);
		}
		public List LOCAL_ID() { return getTokens(TSqlParser.LOCAL_ID); }
		public TerminalNode LOCAL_ID(int i) {
			return getToken(TSqlParser.LOCAL_ID, i);
		}
		public TerminalNode LR_BRACKET() { return getToken(TSqlParser.LR_BRACKET, 0); }
		public TerminalNode RR_BRACKET() { return getToken(TSqlParser.RR_BRACKET, 0); }
		public TerminalNode SEMI() { return getToken(TSqlParser.SEMI, 0); }
		public Send_conversationContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_send_conversation; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterSend_conversation(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitSend_conversation(this);
		}
	}

	public final Send_conversationContext send_conversation() throws RecognitionException {
		Send_conversationContext _localctx = new Send_conversationContext(_ctx, getState());
		enterRule(_localctx, 942, RULE_send_conversation);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(10587);
			match(SEND);
			setState(10588);
			match(ON);
			setState(10589);
			match(CONVERSATION);
			setState(10590);
			((Send_conversationContext)_localctx).conversation_handle = _input.LT(1);
			_la = _input.LA(1);
			if ( !(_la==LOCAL_ID || _la==STRING) ) {
				((Send_conversationContext)_localctx).conversation_handle = (Token)_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			setState(10591);
			match(MESSAGE);
			setState(10592);
			match(TYPE);
			setState(10593);
			((Send_conversationContext)_localctx).message_type_name = expression(0);
			setState(10597);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,1497,_ctx) ) {
			case 1:
				{
				setState(10594);
				match(LR_BRACKET);
				setState(10595);
				((Send_conversationContext)_localctx).message_body_expression = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==LOCAL_ID || _la==STRING) ) {
					((Send_conversationContext)_localctx).message_body_expression = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(10596);
				match(RR_BRACKET);
				}
				break;
			}
			setState(10600);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,1498,_ctx) ) {
			case 1:
				{
				setState(10599);
				match(SEMI);
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Data_typeContext extends ParserRuleContext {
		public IdContext id() {
			return getRuleContext(IdContext.class,0);
		}
		public TerminalNode IDENTITY() { return getToken(TSqlParser.IDENTITY, 0); }
		public TerminalNode LR_BRACKET() { return getToken(TSqlParser.LR_BRACKET, 0); }
		public TerminalNode RR_BRACKET() { return getToken(TSqlParser.RR_BRACKET, 0); }
		public List DECIMAL() { return getTokens(TSqlParser.DECIMAL); }
		public TerminalNode DECIMAL(int i) {
			return getToken(TSqlParser.DECIMAL, i);
		}
		public TerminalNode MAX() { return getToken(TSqlParser.MAX, 0); }
		public TerminalNode COMMA() { return getToken(TSqlParser.COMMA, 0); }
		public TerminalNode DOUBLE() { return getToken(TSqlParser.DOUBLE, 0); }
		public TerminalNode PRECISION() { return getToken(TSqlParser.PRECISION, 0); }
		public TerminalNode INT() { return getToken(TSqlParser.INT, 0); }
		public TerminalNode TINYINT() { return getToken(TSqlParser.TINYINT, 0); }
		public TerminalNode SMALLINT() { return getToken(TSqlParser.SMALLINT, 0); }
		public TerminalNode BIGINT() { return getToken(TSqlParser.BIGINT, 0); }
		public Data_typeContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_data_type; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterData_type(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitData_type(this);
		}
	}

	public final Data_typeContext data_type() throws RecognitionException {
		Data_typeContext _localctx = new Data_typeContext(_ctx, getState());
		enterRule(_localctx, 944, RULE_data_type);
		int _la;
		try {
			setState(10623);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,1503,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(10602);
				id();
				setState(10604);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1499,_ctx) ) {
				case 1:
					{
					setState(10603);
					match(IDENTITY);
					}
					break;
				}
				setState(10613);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1501,_ctx) ) {
				case 1:
					{
					setState(10606);
					match(LR_BRACKET);
					setState(10607);
					_la = _input.LA(1);
					if ( !(_la==MAX || _la==DECIMAL) ) {
					_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					setState(10610);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==COMMA) {
						{
						setState(10608);
						match(COMMA);
						setState(10609);
						match(DECIMAL);
						}
					}

					setState(10612);
					match(RR_BRACKET);
					}
					break;
				}
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(10615);
				match(DOUBLE);
				setState(10617);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==PRECISION) {
					{
					setState(10616);
					match(PRECISION);
					}
				}

				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(10619);
				match(INT);
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(10620);
				match(TINYINT);
				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(10621);
				match(SMALLINT);
				}
				break;
			case 6:
				enterOuterAlt(_localctx, 6);
				{
				setState(10622);
				match(BIGINT);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Default_valueContext extends ParserRuleContext {
		public TerminalNode NULL() { return getToken(TSqlParser.NULL, 0); }
		public TerminalNode DEFAULT() { return getToken(TSqlParser.DEFAULT, 0); }
		public ConstantContext constant() {
			return getRuleContext(ConstantContext.class,0);
		}
		public Default_valueContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_default_value; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterDefault_value(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitDefault_value(this);
		}
	}

	public final Default_valueContext default_value() throws RecognitionException {
		Default_valueContext _localctx = new Default_valueContext(_ctx, getState());
		enterRule(_localctx, 946, RULE_default_value);
		try {
			setState(10628);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case NULL:
				enterOuterAlt(_localctx, 1);
				{
				setState(10625);
				match(NULL);
				}
				break;
			case DEFAULT:
				enterOuterAlt(_localctx, 2);
				{
				setState(10626);
				match(DEFAULT);
				}
				break;
			case DECIMAL:
			case STRING:
			case BINARY:
			case FLOAT:
			case REAL:
			case DOLLAR:
			case PLUS:
			case MINUS:
				enterOuterAlt(_localctx, 3);
				{
				setState(10627);
				constant();
				}
				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 ConstantContext extends ParserRuleContext {
		public Token dollar;
		public TerminalNode STRING() { return getToken(TSqlParser.STRING, 0); }
		public TerminalNode BINARY() { return getToken(TSqlParser.BINARY, 0); }
		public TerminalNode DECIMAL() { return getToken(TSqlParser.DECIMAL, 0); }
		public SignContext sign() {
			return getRuleContext(SignContext.class,0);
		}
		public TerminalNode REAL() { return getToken(TSqlParser.REAL, 0); }
		public TerminalNode FLOAT() { return getToken(TSqlParser.FLOAT, 0); }
		public TerminalNode DOLLAR() { return getToken(TSqlParser.DOLLAR, 0); }
		public ConstantContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_constant; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterConstant(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitConstant(this);
		}
	}

	public final ConstantContext constant() throws RecognitionException {
		ConstantContext _localctx = new ConstantContext(_ctx, getState());
		enterRule(_localctx, 948, RULE_constant);
		int _la;
		try {
			setState(10645);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,1508,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(10630);
				match(STRING);
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(10631);
				match(BINARY);
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(10633);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==PLUS || _la==MINUS) {
					{
					setState(10632);
					sign();
					}
				}

				setState(10635);
				match(DECIMAL);
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(10637);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==PLUS || _la==MINUS) {
					{
					setState(10636);
					sign();
					}
				}

				setState(10639);
				_la = _input.LA(1);
				if ( !(_la==FLOAT || _la==REAL) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(10641);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==PLUS || _la==MINUS) {
					{
					setState(10640);
					sign();
					}
				}

				setState(10643);
				((ConstantContext)_localctx).dollar = match(DOLLAR);
				setState(10644);
				_la = _input.LA(1);
				if ( !(_la==DECIMAL || _la==FLOAT) ) {
				_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 SignContext extends ParserRuleContext {
		public TerminalNode PLUS() { return getToken(TSqlParser.PLUS, 0); }
		public TerminalNode MINUS() { return getToken(TSqlParser.MINUS, 0); }
		public SignContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_sign; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterSign(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitSign(this);
		}
	}

	public final SignContext sign() throws RecognitionException {
		SignContext _localctx = new SignContext(_ctx, getState());
		enterRule(_localctx, 950, RULE_sign);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(10647);
			_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();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class IdContext extends ParserRuleContext {
		public Simple_idContext simple_id() {
			return getRuleContext(Simple_idContext.class,0);
		}
		public TerminalNode DOUBLE_QUOTE_ID() { return getToken(TSqlParser.DOUBLE_QUOTE_ID, 0); }
		public TerminalNode SQUARE_BRACKET_ID() { return getToken(TSqlParser.SQUARE_BRACKET_ID, 0); }
		public IdContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_id; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterId(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitId(this);
		}
	}

	public final IdContext id() throws RecognitionException {
		IdContext _localctx = new IdContext(_ctx, getState());
		enterRule(_localctx, 952, RULE_id);
		try {
			setState(10652);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case CALLED:
			case DATA_COMPRESSION:
			case EVENTDATA:
			case FILENAME:
			case FILLFACTOR:
			case FORCESEEK:
			case INIT:
			case KEY:
			case MASTER:
			case MAX_MEMORY:
			case OFFSETS:
			case PAGE:
			case PUBLIC:
			case R:
			case RAW:
			case RETURN:
			case RETURNS:
			case ROWCOUNT:
			case SAFETY:
			case SERVER:
			case SID:
			case SOURCE:
			case STATE:
			case START:
			case TARGET:
			case ABSOLUTE:
			case ACCENT_SENSITIVITY:
			case ACTION:
			case ACTIVATION:
			case ACTIVE:
			case ADDRESS:
			case AES_128:
			case AES_192:
			case AES_256:
			case AFFINITY:
			case AFTER:
			case AGGREGATE:
			case ALGORITHM:
			case ALLOW_ENCRYPTED_VALUE_MODIFICATIONS:
			case ALLOW_SNAPSHOT_ISOLATION:
			case ALLOWED:
			case ANSI_NULL_DEFAULT:
			case ANSI_NULLS:
			case ANSI_PADDING:
			case ANSI_WARNINGS:
			case APPLICATION_LOG:
			case APPLY:
			case ARITHABORT:
			case ASSEMBLY:
			case AUDIT:
			case AUDIT_GUID:
			case AUTO:
			case AUTO_CLEANUP:
			case AUTO_CLOSE:
			case AUTO_CREATE_STATISTICS:
			case AUTO_SHRINK:
			case AUTO_UPDATE_STATISTICS:
			case AUTO_UPDATE_STATISTICS_ASYNC:
			case AVAILABILITY:
			case AVG:
			case BACKUP_PRIORITY:
			case BEGIN_DIALOG:
			case BIGINT:
			case BINARY_BASE64:
			case BINARY_CHECKSUM:
			case BINDING:
			case BLOB_STORAGE:
			case BROKER:
			case BROKER_INSTANCE:
			case BULK_LOGGED:
			case CALLER:
			case CAP_CPU_PERCENT:
			case CAST:
			case CATALOG:
			case CATCH:
			case CHANGE_RETENTION:
			case CHANGE_TRACKING:
			case CHECKSUM:
			case CHECKSUM_AGG:
			case CLEANUP:
			case COLLECTION:
			case COLUMN_MASTER_KEY:
			case COMMITTED:
			case COMPATIBILITY_LEVEL:
			case CONCAT:
			case CONCAT_NULL_YIELDS_NULL:
			case CONTENT:
			case CONTROL:
			case COOKIE:
			case COUNT:
			case COUNT_BIG:
			case COUNTER:
			case CPU:
			case CREATE_NEW:
			case CREATION_DISPOSITION:
			case CREDENTIAL:
			case CRYPTOGRAPHIC:
			case CURSOR_CLOSE_ON_COMMIT:
			case CURSOR_DEFAULT:
			case DATE_CORRELATION_OPTIMIZATION:
			case DATEADD:
			case DATEDIFF:
			case DATENAME:
			case DATEPART:
			case DAYS:
			case DB_CHAINING:
			case DB_FAILOVER:
			case DECRYPTION:
			case DEFAULT_DOUBLE_QUOTE:
			case DEFAULT_FULLTEXT_LANGUAGE:
			case DEFAULT_LANGUAGE:
			case DELAY:
			case DELAYED_DURABILITY:
			case DELETED:
			case DENSE_RANK:
			case DEPENDENTS:
			case DES:
			case DESCRIPTION:
			case DESX:
			case DHCP:
			case DIALOG:
			case DIRECTORY_NAME:
			case DISABLE:
			case DISABLE_BROKER:
			case DISABLED:
			case DISK_DRIVE:
			case DOCUMENT:
			case DYNAMIC:
			case EMERGENCY:
			case EMPTY:
			case ENABLE:
			case ENABLE_BROKER:
			case ENCRYPTED_VALUE:
			case ENCRYPTION:
			case ENDPOINT_URL:
			case ERROR_BROKER_CONVERSATIONS:
			case EXCLUSIVE:
			case EXECUTABLE:
			case EXIST:
			case EXPAND:
			case EXPIRY_DATE:
			case EXPLICIT:
			case FAIL_OPERATION:
			case FAILOVER_MODE:
			case FAILURE:
			case FAILURE_CONDITION_LEVEL:
			case FAST:
			case FAST_FORWARD:
			case FILEGROUP:
			case FILEGROWTH:
			case FILEPATH:
			case FILESTREAM:
			case FILTER:
			case FIRST:
			case FIRST_VALUE:
			case FOLLOWING:
			case FORCE:
			case FORCE_FAILOVER_ALLOW_DATA_LOSS:
			case FORCED:
			case FORMAT:
			case FORWARD_ONLY:
			case FULLSCAN:
			case FULLTEXT:
			case GB:
			case GETDATE:
			case GETUTCDATE:
			case GLOBAL:
			case GO:
			case GROUP_MAX_REQUESTS:
			case GROUPING:
			case GROUPING_ID:
			case HADR:
			case HASH:
			case HEALTH_CHECK_TIMEOUT:
			case HIGH:
			case HONOR_BROKER_PRIORITY:
			case HOURS:
			case IDENTITY_VALUE:
			case IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX:
			case IMMEDIATE:
			case IMPERSONATE:
			case IMPORTANCE:
			case INCREMENTAL:
			case INITIATOR:
			case INPUT:
			case INSENSITIVE:
			case INSERTED:
			case INT:
			case IP:
			case ISOLATION:
			case KB:
			case KEEP:
			case KEEPFIXED:
			case KEY_SOURCE:
			case KEYS:
			case KEYSET:
			case LAG:
			case LAST:
			case LAST_VALUE:
			case LEAD:
			case LEVEL:
			case LIST:
			case LISTENER:
			case LISTENER_URL:
			case LOB_COMPACTION:
			case LOCAL:
			case LOCATION:
			case LOCK:
			case LOCK_ESCALATION:
			case LOGIN:
			case LOOP:
			case LOW:
			case MANUAL:
			case MARK:
			case MATERIALIZED:
			case MAX:
			case MAX_CPU_PERCENT:
			case MAX_DOP:
			case MAX_FILES:
			case MAX_IOPS_PER_VOLUME:
			case MAX_MEMORY_PERCENT:
			case MAX_PROCESSES:
			case MAX_QUEUE_READERS:
			case MAX_ROLLOVER_FILES:
			case MAXDOP:
			case MAXRECURSION:
			case MAXSIZE:
			case MB:
			case MEDIUM:
			case MEMORY_OPTIMIZED_DATA:
			case MESSAGE:
			case MIN:
			case MIN_ACTIVE_ROWVERSION:
			case MIN_CPU_PERCENT:
			case MIN_IOPS_PER_VOLUME:
			case MIN_MEMORY_PERCENT:
			case MINUTES:
			case MIRROR_ADDRESS:
			case MIXED_PAGE_ALLOCATION:
			case MODE:
			case MODIFY:
			case MOVE:
			case MULTI_USER:
			case NAME:
			case NESTED_TRIGGERS:
			case NEW_ACCOUNT:
			case NEW_BROKER:
			case NEW_PASSWORD:
			case NEXT:
			case NO:
			case NO_TRUNCATE:
			case NO_WAIT:
			case NOCOUNT:
			case NODES:
			case NOEXPAND:
			case NON_TRANSACTED_ACCESS:
			case NORECOMPUTE:
			case NORECOVERY:
			case NOWAIT:
			case NTILE:
			case NUMANODE:
			case NUMBER:
			case NUMERIC_ROUNDABORT:
			case OBJECT:
			case OFFLINE:
			case OFFSET:
			case OLD_ACCOUNT:
			case ONLINE:
			case ONLY:
			case OPEN_EXISTING:
			case OPTIMISTIC:
			case OPTIMIZE:
			case OUT:
			case OUTPUT:
			case OWNER:
			case PAGE_VERIFY:
			case PARAMETERIZATION:
			case PARTITION:
			case PARTITIONS:
			case PARTNER:
			case PATH:
			case POISON_MESSAGE_HANDLING:
			case POOL:
			case PORT:
			case PRECEDING:
			case PRIMARY_ROLE:
			case PRIOR:
			case PRIORITY:
			case PRIORITY_LEVEL:
			case PRIVATE:
			case PRIVATE_KEY:
			case PRIVILEGES:
			case PROCEDURE_NAME:
			case PROPERTY:
			case PROVIDER:
			case PROVIDER_KEY_NAME:
			case QUERY:
			case QUEUE:
			case QUEUE_DELAY:
			case QUOTED_IDENTIFIER:
			case RANGE:
			case RANK:
			case RC2:
			case RC4:
			case RC4_128:
			case READ_COMMITTED_SNAPSHOT:
			case READ_ONLY:
			case READ_ONLY_ROUTING_LIST:
			case READ_WRITE:
			case READONLY:
			case REBUILD:
			case RECEIVE:
			case RECOMPILE:
			case RECOVERY:
			case RECURSIVE_TRIGGERS:
			case RELATIVE:
			case REMOTE:
			case REMOTE_SERVICE_NAME:
			case REMOVE:
			case REORGANIZE:
			case REPEATABLE:
			case REPLICA:
			case REQUEST_MAX_CPU_TIME_SEC:
			case REQUEST_MAX_MEMORY_GRANT_PERCENT:
			case REQUEST_MEMORY_GRANT_TIMEOUT_SEC:
			case REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT:
			case RESERVE_DISK_SPACE:
			case RESOURCE:
			case RESOURCE_MANAGER_LOCATION:
			case RESTRICTED_USER:
			case RETENTION:
			case ROBUST:
			case ROOT:
			case ROUTE:
			case ROW:
			case ROW_NUMBER:
			case ROWGUID:
			case ROWS:
			case SAMPLE:
			case SCHEMABINDING:
			case SCOPED:
			case SCROLL:
			case SCROLL_LOCKS:
			case SEARCH:
			case SECONDARY:
			case SECONDARY_ONLY:
			case SECONDARY_ROLE:
			case SECONDS:
			case SECRET:
			case SECURITY_LOG:
			case SEEDING_MODE:
			case SELF:
			case SEMI_SENSITIVE:
			case SEND:
			case SENT:
			case SERIALIZABLE:
			case SESSION_TIMEOUT:
			case SETERROR:
			case SHARE:
			case SHOWPLAN:
			case SIGNATURE:
			case SIMPLE:
			case SINGLE_USER:
			case SIZE:
			case SMALLINT:
			case SNAPSHOT:
			case SPATIAL_WINDOW_MAX_CELLS:
			case STANDBY:
			case START_DATE:
			case STATIC:
			case STATS_STREAM:
			case STATUS:
			case STDEV:
			case STDEVP:
			case STOPLIST:
			case STUFF:
			case SUBJECT:
			case SUM:
			case SUSPEND:
			case SYMMETRIC:
			case SYNCHRONOUS_COMMIT:
			case SYNONYM:
			case TAKE:
			case TARGET_RECOVERY_TIME:
			case TB:
			case TEXTIMAGE_ON:
			case THROW:
			case TIES:
			case TIME:
			case TIMEOUT:
			case TIMER:
			case TINYINT:
			case TORN_PAGE_DETECTION:
			case TRANSFORM_NOISE_WORDS:
			case TRIPLE_DES:
			case TRIPLE_DES_3KEY:
			case TRUSTWORTHY:
			case TRY:
			case TSQL:
			case TWO_DIGIT_YEAR_CUTOFF:
			case TYPE:
			case TYPE_WARNING:
			case UNBOUNDED:
			case UNCOMMITTED:
			case UNKNOWN:
			case UNLIMITED:
			case USING:
			case VALID_XML:
			case VALIDATION:
			case VALUE:
			case VAR:
			case VARP:
			case VIEW_METADATA:
			case VIEWS:
			case WAIT:
			case WELL_FORMED_XML:
			case WORK:
			case WORKLOAD:
			case XML:
			case XMLNAMESPACES:
			case ID:
				enterOuterAlt(_localctx, 1);
				{
				setState(10649);
				simple_id();
				}
				break;
			case DOUBLE_QUOTE_ID:
				enterOuterAlt(_localctx, 2);
				{
				setState(10650);
				match(DOUBLE_QUOTE_ID);
				}
				break;
			case SQUARE_BRACKET_ID:
				enterOuterAlt(_localctx, 3);
				{
				setState(10651);
				match(SQUARE_BRACKET_ID);
				}
				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 Simple_idContext extends ParserRuleContext {
		public TerminalNode ID() { return getToken(TSqlParser.ID, 0); }
		public TerminalNode ABSOLUTE() { return getToken(TSqlParser.ABSOLUTE, 0); }
		public TerminalNode ACCENT_SENSITIVITY() { return getToken(TSqlParser.ACCENT_SENSITIVITY, 0); }
		public TerminalNode ACTION() { return getToken(TSqlParser.ACTION, 0); }
		public TerminalNode ACTIVATION() { return getToken(TSqlParser.ACTIVATION, 0); }
		public TerminalNode ACTIVE() { return getToken(TSqlParser.ACTIVE, 0); }
		public TerminalNode ADDRESS() { return getToken(TSqlParser.ADDRESS, 0); }
		public TerminalNode AES_128() { return getToken(TSqlParser.AES_128, 0); }
		public TerminalNode AES_192() { return getToken(TSqlParser.AES_192, 0); }
		public TerminalNode AES_256() { return getToken(TSqlParser.AES_256, 0); }
		public TerminalNode AFFINITY() { return getToken(TSqlParser.AFFINITY, 0); }
		public TerminalNode AFTER() { return getToken(TSqlParser.AFTER, 0); }
		public TerminalNode AGGREGATE() { return getToken(TSqlParser.AGGREGATE, 0); }
		public TerminalNode ALGORITHM() { return getToken(TSqlParser.ALGORITHM, 0); }
		public TerminalNode ALLOW_ENCRYPTED_VALUE_MODIFICATIONS() { return getToken(TSqlParser.ALLOW_ENCRYPTED_VALUE_MODIFICATIONS, 0); }
		public TerminalNode ALLOW_SNAPSHOT_ISOLATION() { return getToken(TSqlParser.ALLOW_SNAPSHOT_ISOLATION, 0); }
		public TerminalNode ALLOWED() { return getToken(TSqlParser.ALLOWED, 0); }
		public TerminalNode ANSI_NULL_DEFAULT() { return getToken(TSqlParser.ANSI_NULL_DEFAULT, 0); }
		public TerminalNode ANSI_NULLS() { return getToken(TSqlParser.ANSI_NULLS, 0); }
		public TerminalNode ANSI_PADDING() { return getToken(TSqlParser.ANSI_PADDING, 0); }
		public TerminalNode ANSI_WARNINGS() { return getToken(TSqlParser.ANSI_WARNINGS, 0); }
		public TerminalNode APPLICATION_LOG() { return getToken(TSqlParser.APPLICATION_LOG, 0); }
		public TerminalNode APPLY() { return getToken(TSqlParser.APPLY, 0); }
		public TerminalNode ARITHABORT() { return getToken(TSqlParser.ARITHABORT, 0); }
		public TerminalNode ASSEMBLY() { return getToken(TSqlParser.ASSEMBLY, 0); }
		public TerminalNode AUDIT() { return getToken(TSqlParser.AUDIT, 0); }
		public TerminalNode AUDIT_GUID() { return getToken(TSqlParser.AUDIT_GUID, 0); }
		public TerminalNode AUTO() { return getToken(TSqlParser.AUTO, 0); }
		public TerminalNode AUTO_CLEANUP() { return getToken(TSqlParser.AUTO_CLEANUP, 0); }
		public TerminalNode AUTO_CLOSE() { return getToken(TSqlParser.AUTO_CLOSE, 0); }
		public TerminalNode AUTO_CREATE_STATISTICS() { return getToken(TSqlParser.AUTO_CREATE_STATISTICS, 0); }
		public TerminalNode AUTO_SHRINK() { return getToken(TSqlParser.AUTO_SHRINK, 0); }
		public TerminalNode AUTO_UPDATE_STATISTICS() { return getToken(TSqlParser.AUTO_UPDATE_STATISTICS, 0); }
		public TerminalNode AUTO_UPDATE_STATISTICS_ASYNC() { return getToken(TSqlParser.AUTO_UPDATE_STATISTICS_ASYNC, 0); }
		public TerminalNode AVAILABILITY() { return getToken(TSqlParser.AVAILABILITY, 0); }
		public TerminalNode AVG() { return getToken(TSqlParser.AVG, 0); }
		public TerminalNode BACKUP_PRIORITY() { return getToken(TSqlParser.BACKUP_PRIORITY, 0); }
		public TerminalNode BEGIN_DIALOG() { return getToken(TSqlParser.BEGIN_DIALOG, 0); }
		public TerminalNode BIGINT() { return getToken(TSqlParser.BIGINT, 0); }
		public TerminalNode BINARY_BASE64() { return getToken(TSqlParser.BINARY_BASE64, 0); }
		public TerminalNode BINARY_CHECKSUM() { return getToken(TSqlParser.BINARY_CHECKSUM, 0); }
		public TerminalNode BINDING() { return getToken(TSqlParser.BINDING, 0); }
		public TerminalNode BLOB_STORAGE() { return getToken(TSqlParser.BLOB_STORAGE, 0); }
		public TerminalNode BROKER() { return getToken(TSqlParser.BROKER, 0); }
		public TerminalNode BROKER_INSTANCE() { return getToken(TSqlParser.BROKER_INSTANCE, 0); }
		public TerminalNode BULK_LOGGED() { return getToken(TSqlParser.BULK_LOGGED, 0); }
		public TerminalNode CALLED() { return getToken(TSqlParser.CALLED, 0); }
		public TerminalNode CALLER() { return getToken(TSqlParser.CALLER, 0); }
		public TerminalNode CAP_CPU_PERCENT() { return getToken(TSqlParser.CAP_CPU_PERCENT, 0); }
		public TerminalNode CAST() { return getToken(TSqlParser.CAST, 0); }
		public TerminalNode CATALOG() { return getToken(TSqlParser.CATALOG, 0); }
		public TerminalNode CATCH() { return getToken(TSqlParser.CATCH, 0); }
		public TerminalNode CHANGE_RETENTION() { return getToken(TSqlParser.CHANGE_RETENTION, 0); }
		public TerminalNode CHANGE_TRACKING() { return getToken(TSqlParser.CHANGE_TRACKING, 0); }
		public TerminalNode CHECKSUM() { return getToken(TSqlParser.CHECKSUM, 0); }
		public TerminalNode CHECKSUM_AGG() { return getToken(TSqlParser.CHECKSUM_AGG, 0); }
		public TerminalNode CLEANUP() { return getToken(TSqlParser.CLEANUP, 0); }
		public TerminalNode COLLECTION() { return getToken(TSqlParser.COLLECTION, 0); }
		public TerminalNode COLUMN_MASTER_KEY() { return getToken(TSqlParser.COLUMN_MASTER_KEY, 0); }
		public TerminalNode COMMITTED() { return getToken(TSqlParser.COMMITTED, 0); }
		public TerminalNode COMPATIBILITY_LEVEL() { return getToken(TSqlParser.COMPATIBILITY_LEVEL, 0); }
		public TerminalNode CONCAT() { return getToken(TSqlParser.CONCAT, 0); }
		public TerminalNode CONCAT_NULL_YIELDS_NULL() { return getToken(TSqlParser.CONCAT_NULL_YIELDS_NULL, 0); }
		public TerminalNode CONTENT() { return getToken(TSqlParser.CONTENT, 0); }
		public TerminalNode CONTROL() { return getToken(TSqlParser.CONTROL, 0); }
		public TerminalNode COOKIE() { return getToken(TSqlParser.COOKIE, 0); }
		public TerminalNode COUNT() { return getToken(TSqlParser.COUNT, 0); }
		public TerminalNode COUNT_BIG() { return getToken(TSqlParser.COUNT_BIG, 0); }
		public TerminalNode COUNTER() { return getToken(TSqlParser.COUNTER, 0); }
		public TerminalNode CPU() { return getToken(TSqlParser.CPU, 0); }
		public TerminalNode CREATE_NEW() { return getToken(TSqlParser.CREATE_NEW, 0); }
		public TerminalNode CREATION_DISPOSITION() { return getToken(TSqlParser.CREATION_DISPOSITION, 0); }
		public TerminalNode CREDENTIAL() { return getToken(TSqlParser.CREDENTIAL, 0); }
		public TerminalNode CRYPTOGRAPHIC() { return getToken(TSqlParser.CRYPTOGRAPHIC, 0); }
		public TerminalNode CURSOR_CLOSE_ON_COMMIT() { return getToken(TSqlParser.CURSOR_CLOSE_ON_COMMIT, 0); }
		public TerminalNode CURSOR_DEFAULT() { return getToken(TSqlParser.CURSOR_DEFAULT, 0); }
		public TerminalNode DATA_COMPRESSION() { return getToken(TSqlParser.DATA_COMPRESSION, 0); }
		public TerminalNode DATE_CORRELATION_OPTIMIZATION() { return getToken(TSqlParser.DATE_CORRELATION_OPTIMIZATION, 0); }
		public TerminalNode DATEADD() { return getToken(TSqlParser.DATEADD, 0); }
		public TerminalNode DATEDIFF() { return getToken(TSqlParser.DATEDIFF, 0); }
		public TerminalNode DATENAME() { return getToken(TSqlParser.DATENAME, 0); }
		public TerminalNode DATEPART() { return getToken(TSqlParser.DATEPART, 0); }
		public TerminalNode DAYS() { return getToken(TSqlParser.DAYS, 0); }
		public TerminalNode DB_CHAINING() { return getToken(TSqlParser.DB_CHAINING, 0); }
		public TerminalNode DB_FAILOVER() { return getToken(TSqlParser.DB_FAILOVER, 0); }
		public TerminalNode DECRYPTION() { return getToken(TSqlParser.DECRYPTION, 0); }
		public TerminalNode DEFAULT_DOUBLE_QUOTE() { return getToken(TSqlParser.DEFAULT_DOUBLE_QUOTE, 0); }
		public TerminalNode DEFAULT_FULLTEXT_LANGUAGE() { return getToken(TSqlParser.DEFAULT_FULLTEXT_LANGUAGE, 0); }
		public TerminalNode DEFAULT_LANGUAGE() { return getToken(TSqlParser.DEFAULT_LANGUAGE, 0); }
		public TerminalNode DELAY() { return getToken(TSqlParser.DELAY, 0); }
		public TerminalNode DELAYED_DURABILITY() { return getToken(TSqlParser.DELAYED_DURABILITY, 0); }
		public TerminalNode DELETED() { return getToken(TSqlParser.DELETED, 0); }
		public TerminalNode DENSE_RANK() { return getToken(TSqlParser.DENSE_RANK, 0); }
		public TerminalNode DEPENDENTS() { return getToken(TSqlParser.DEPENDENTS, 0); }
		public TerminalNode DES() { return getToken(TSqlParser.DES, 0); }
		public TerminalNode DESCRIPTION() { return getToken(TSqlParser.DESCRIPTION, 0); }
		public TerminalNode DESX() { return getToken(TSqlParser.DESX, 0); }
		public TerminalNode DHCP() { return getToken(TSqlParser.DHCP, 0); }
		public TerminalNode DIALOG() { return getToken(TSqlParser.DIALOG, 0); }
		public TerminalNode DIRECTORY_NAME() { return getToken(TSqlParser.DIRECTORY_NAME, 0); }
		public TerminalNode DISABLE() { return getToken(TSqlParser.DISABLE, 0); }
		public TerminalNode DISABLE_BROKER() { return getToken(TSqlParser.DISABLE_BROKER, 0); }
		public TerminalNode DISABLED() { return getToken(TSqlParser.DISABLED, 0); }
		public TerminalNode DISK_DRIVE() { return getToken(TSqlParser.DISK_DRIVE, 0); }
		public TerminalNode DOCUMENT() { return getToken(TSqlParser.DOCUMENT, 0); }
		public TerminalNode DYNAMIC() { return getToken(TSqlParser.DYNAMIC, 0); }
		public TerminalNode EMERGENCY() { return getToken(TSqlParser.EMERGENCY, 0); }
		public TerminalNode EMPTY() { return getToken(TSqlParser.EMPTY, 0); }
		public TerminalNode ENABLE() { return getToken(TSqlParser.ENABLE, 0); }
		public TerminalNode ENABLE_BROKER() { return getToken(TSqlParser.ENABLE_BROKER, 0); }
		public TerminalNode ENCRYPTED_VALUE() { return getToken(TSqlParser.ENCRYPTED_VALUE, 0); }
		public TerminalNode ENCRYPTION() { return getToken(TSqlParser.ENCRYPTION, 0); }
		public TerminalNode ENDPOINT_URL() { return getToken(TSqlParser.ENDPOINT_URL, 0); }
		public TerminalNode ERROR_BROKER_CONVERSATIONS() { return getToken(TSqlParser.ERROR_BROKER_CONVERSATIONS, 0); }
		public TerminalNode EVENTDATA() { return getToken(TSqlParser.EVENTDATA, 0); }
		public TerminalNode EXCLUSIVE() { return getToken(TSqlParser.EXCLUSIVE, 0); }
		public TerminalNode EXECUTABLE() { return getToken(TSqlParser.EXECUTABLE, 0); }
		public TerminalNode EXIST() { return getToken(TSqlParser.EXIST, 0); }
		public TerminalNode EXPAND() { return getToken(TSqlParser.EXPAND, 0); }
		public TerminalNode EXPIRY_DATE() { return getToken(TSqlParser.EXPIRY_DATE, 0); }
		public TerminalNode EXPLICIT() { return getToken(TSqlParser.EXPLICIT, 0); }
		public TerminalNode FAIL_OPERATION() { return getToken(TSqlParser.FAIL_OPERATION, 0); }
		public TerminalNode FAILOVER_MODE() { return getToken(TSqlParser.FAILOVER_MODE, 0); }
		public TerminalNode FAILURE() { return getToken(TSqlParser.FAILURE, 0); }
		public TerminalNode FAILURE_CONDITION_LEVEL() { return getToken(TSqlParser.FAILURE_CONDITION_LEVEL, 0); }
		public TerminalNode FAST() { return getToken(TSqlParser.FAST, 0); }
		public TerminalNode FAST_FORWARD() { return getToken(TSqlParser.FAST_FORWARD, 0); }
		public TerminalNode FILEGROUP() { return getToken(TSqlParser.FILEGROUP, 0); }
		public TerminalNode FILEGROWTH() { return getToken(TSqlParser.FILEGROWTH, 0); }
		public TerminalNode FILENAME() { return getToken(TSqlParser.FILENAME, 0); }
		public TerminalNode FILEPATH() { return getToken(TSqlParser.FILEPATH, 0); }
		public TerminalNode FILESTREAM() { return getToken(TSqlParser.FILESTREAM, 0); }
		public TerminalNode FILLFACTOR() { return getToken(TSqlParser.FILLFACTOR, 0); }
		public TerminalNode FILTER() { return getToken(TSqlParser.FILTER, 0); }
		public TerminalNode FIRST() { return getToken(TSqlParser.FIRST, 0); }
		public TerminalNode FIRST_VALUE() { return getToken(TSqlParser.FIRST_VALUE, 0); }
		public TerminalNode FOLLOWING() { return getToken(TSqlParser.FOLLOWING, 0); }
		public TerminalNode FORCE() { return getToken(TSqlParser.FORCE, 0); }
		public TerminalNode FORCE_FAILOVER_ALLOW_DATA_LOSS() { return getToken(TSqlParser.FORCE_FAILOVER_ALLOW_DATA_LOSS, 0); }
		public TerminalNode FORCED() { return getToken(TSqlParser.FORCED, 0); }
		public TerminalNode FORCESEEK() { return getToken(TSqlParser.FORCESEEK, 0); }
		public TerminalNode FORMAT() { return getToken(TSqlParser.FORMAT, 0); }
		public TerminalNode FORWARD_ONLY() { return getToken(TSqlParser.FORWARD_ONLY, 0); }
		public TerminalNode FULLSCAN() { return getToken(TSqlParser.FULLSCAN, 0); }
		public TerminalNode FULLTEXT() { return getToken(TSqlParser.FULLTEXT, 0); }
		public TerminalNode GB() { return getToken(TSqlParser.GB, 0); }
		public TerminalNode GETDATE() { return getToken(TSqlParser.GETDATE, 0); }
		public TerminalNode GETUTCDATE() { return getToken(TSqlParser.GETUTCDATE, 0); }
		public TerminalNode GLOBAL() { return getToken(TSqlParser.GLOBAL, 0); }
		public TerminalNode GO() { return getToken(TSqlParser.GO, 0); }
		public TerminalNode GROUP_MAX_REQUESTS() { return getToken(TSqlParser.GROUP_MAX_REQUESTS, 0); }
		public TerminalNode GROUPING() { return getToken(TSqlParser.GROUPING, 0); }
		public TerminalNode GROUPING_ID() { return getToken(TSqlParser.GROUPING_ID, 0); }
		public TerminalNode HADR() { return getToken(TSqlParser.HADR, 0); }
		public TerminalNode HASH() { return getToken(TSqlParser.HASH, 0); }
		public TerminalNode HEALTH_CHECK_TIMEOUT() { return getToken(TSqlParser.HEALTH_CHECK_TIMEOUT, 0); }
		public TerminalNode HIGH() { return getToken(TSqlParser.HIGH, 0); }
		public TerminalNode HONOR_BROKER_PRIORITY() { return getToken(TSqlParser.HONOR_BROKER_PRIORITY, 0); }
		public TerminalNode HOURS() { return getToken(TSqlParser.HOURS, 0); }
		public TerminalNode IDENTITY_VALUE() { return getToken(TSqlParser.IDENTITY_VALUE, 0); }
		public TerminalNode IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX() { return getToken(TSqlParser.IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX, 0); }
		public TerminalNode IMMEDIATE() { return getToken(TSqlParser.IMMEDIATE, 0); }
		public TerminalNode IMPERSONATE() { return getToken(TSqlParser.IMPERSONATE, 0); }
		public TerminalNode IMPORTANCE() { return getToken(TSqlParser.IMPORTANCE, 0); }
		public TerminalNode INCREMENTAL() { return getToken(TSqlParser.INCREMENTAL, 0); }
		public TerminalNode INIT() { return getToken(TSqlParser.INIT, 0); }
		public TerminalNode INITIATOR() { return getToken(TSqlParser.INITIATOR, 0); }
		public TerminalNode INPUT() { return getToken(TSqlParser.INPUT, 0); }
		public TerminalNode INSENSITIVE() { return getToken(TSqlParser.INSENSITIVE, 0); }
		public TerminalNode INSERTED() { return getToken(TSqlParser.INSERTED, 0); }
		public TerminalNode INT() { return getToken(TSqlParser.INT, 0); }
		public TerminalNode IP() { return getToken(TSqlParser.IP, 0); }
		public TerminalNode ISOLATION() { return getToken(TSqlParser.ISOLATION, 0); }
		public TerminalNode KB() { return getToken(TSqlParser.KB, 0); }
		public TerminalNode KEEP() { return getToken(TSqlParser.KEEP, 0); }
		public TerminalNode KEEPFIXED() { return getToken(TSqlParser.KEEPFIXED, 0); }
		public TerminalNode KEY() { return getToken(TSqlParser.KEY, 0); }
		public TerminalNode KEY_SOURCE() { return getToken(TSqlParser.KEY_SOURCE, 0); }
		public TerminalNode KEYS() { return getToken(TSqlParser.KEYS, 0); }
		public TerminalNode KEYSET() { return getToken(TSqlParser.KEYSET, 0); }
		public TerminalNode LAG() { return getToken(TSqlParser.LAG, 0); }
		public TerminalNode LAST() { return getToken(TSqlParser.LAST, 0); }
		public TerminalNode LAST_VALUE() { return getToken(TSqlParser.LAST_VALUE, 0); }
		public TerminalNode LEAD() { return getToken(TSqlParser.LEAD, 0); }
		public TerminalNode LEVEL() { return getToken(TSqlParser.LEVEL, 0); }
		public TerminalNode LIST() { return getToken(TSqlParser.LIST, 0); }
		public TerminalNode LISTENER() { return getToken(TSqlParser.LISTENER, 0); }
		public TerminalNode LISTENER_URL() { return getToken(TSqlParser.LISTENER_URL, 0); }
		public TerminalNode LOB_COMPACTION() { return getToken(TSqlParser.LOB_COMPACTION, 0); }
		public TerminalNode LOCAL() { return getToken(TSqlParser.LOCAL, 0); }
		public TerminalNode LOCATION() { return getToken(TSqlParser.LOCATION, 0); }
		public TerminalNode LOCK() { return getToken(TSqlParser.LOCK, 0); }
		public TerminalNode LOCK_ESCALATION() { return getToken(TSqlParser.LOCK_ESCALATION, 0); }
		public TerminalNode LOGIN() { return getToken(TSqlParser.LOGIN, 0); }
		public TerminalNode LOOP() { return getToken(TSqlParser.LOOP, 0); }
		public TerminalNode LOW() { return getToken(TSqlParser.LOW, 0); }
		public TerminalNode MANUAL() { return getToken(TSqlParser.MANUAL, 0); }
		public TerminalNode MARK() { return getToken(TSqlParser.MARK, 0); }
		public TerminalNode MASTER() { return getToken(TSqlParser.MASTER, 0); }
		public TerminalNode MATERIALIZED() { return getToken(TSqlParser.MATERIALIZED, 0); }
		public TerminalNode MAX() { return getToken(TSqlParser.MAX, 0); }
		public TerminalNode MAX_CPU_PERCENT() { return getToken(TSqlParser.MAX_CPU_PERCENT, 0); }
		public TerminalNode MAX_DOP() { return getToken(TSqlParser.MAX_DOP, 0); }
		public TerminalNode MAX_FILES() { return getToken(TSqlParser.MAX_FILES, 0); }
		public TerminalNode MAX_IOPS_PER_VOLUME() { return getToken(TSqlParser.MAX_IOPS_PER_VOLUME, 0); }
		public TerminalNode MAX_MEMORY() { return getToken(TSqlParser.MAX_MEMORY, 0); }
		public TerminalNode MAX_MEMORY_PERCENT() { return getToken(TSqlParser.MAX_MEMORY_PERCENT, 0); }
		public TerminalNode MAX_PROCESSES() { return getToken(TSqlParser.MAX_PROCESSES, 0); }
		public TerminalNode MAX_QUEUE_READERS() { return getToken(TSqlParser.MAX_QUEUE_READERS, 0); }
		public TerminalNode MAX_ROLLOVER_FILES() { return getToken(TSqlParser.MAX_ROLLOVER_FILES, 0); }
		public TerminalNode MAXDOP() { return getToken(TSqlParser.MAXDOP, 0); }
		public TerminalNode MAXRECURSION() { return getToken(TSqlParser.MAXRECURSION, 0); }
		public TerminalNode MAXSIZE() { return getToken(TSqlParser.MAXSIZE, 0); }
		public TerminalNode MB() { return getToken(TSqlParser.MB, 0); }
		public TerminalNode MEDIUM() { return getToken(TSqlParser.MEDIUM, 0); }
		public TerminalNode MEMORY_OPTIMIZED_DATA() { return getToken(TSqlParser.MEMORY_OPTIMIZED_DATA, 0); }
		public TerminalNode MESSAGE() { return getToken(TSqlParser.MESSAGE, 0); }
		public TerminalNode MIN() { return getToken(TSqlParser.MIN, 0); }
		public TerminalNode MIN_ACTIVE_ROWVERSION() { return getToken(TSqlParser.MIN_ACTIVE_ROWVERSION, 0); }
		public TerminalNode MIN_CPU_PERCENT() { return getToken(TSqlParser.MIN_CPU_PERCENT, 0); }
		public TerminalNode MIN_IOPS_PER_VOLUME() { return getToken(TSqlParser.MIN_IOPS_PER_VOLUME, 0); }
		public TerminalNode MIN_MEMORY_PERCENT() { return getToken(TSqlParser.MIN_MEMORY_PERCENT, 0); }
		public TerminalNode MINUTES() { return getToken(TSqlParser.MINUTES, 0); }
		public TerminalNode MIRROR_ADDRESS() { return getToken(TSqlParser.MIRROR_ADDRESS, 0); }
		public TerminalNode MIXED_PAGE_ALLOCATION() { return getToken(TSqlParser.MIXED_PAGE_ALLOCATION, 0); }
		public TerminalNode MODE() { return getToken(TSqlParser.MODE, 0); }
		public TerminalNode MODIFY() { return getToken(TSqlParser.MODIFY, 0); }
		public TerminalNode MOVE() { return getToken(TSqlParser.MOVE, 0); }
		public TerminalNode MULTI_USER() { return getToken(TSqlParser.MULTI_USER, 0); }
		public TerminalNode NAME() { return getToken(TSqlParser.NAME, 0); }
		public TerminalNode NESTED_TRIGGERS() { return getToken(TSqlParser.NESTED_TRIGGERS, 0); }
		public TerminalNode NEW_ACCOUNT() { return getToken(TSqlParser.NEW_ACCOUNT, 0); }
		public TerminalNode NEW_BROKER() { return getToken(TSqlParser.NEW_BROKER, 0); }
		public TerminalNode NEW_PASSWORD() { return getToken(TSqlParser.NEW_PASSWORD, 0); }
		public TerminalNode NEXT() { return getToken(TSqlParser.NEXT, 0); }
		public TerminalNode NO() { return getToken(TSqlParser.NO, 0); }
		public TerminalNode NO_TRUNCATE() { return getToken(TSqlParser.NO_TRUNCATE, 0); }
		public TerminalNode NO_WAIT() { return getToken(TSqlParser.NO_WAIT, 0); }
		public TerminalNode NOCOUNT() { return getToken(TSqlParser.NOCOUNT, 0); }
		public TerminalNode NODES() { return getToken(TSqlParser.NODES, 0); }
		public TerminalNode NOEXPAND() { return getToken(TSqlParser.NOEXPAND, 0); }
		public TerminalNode NON_TRANSACTED_ACCESS() { return getToken(TSqlParser.NON_TRANSACTED_ACCESS, 0); }
		public TerminalNode NORECOMPUTE() { return getToken(TSqlParser.NORECOMPUTE, 0); }
		public TerminalNode NORECOVERY() { return getToken(TSqlParser.NORECOVERY, 0); }
		public TerminalNode NOWAIT() { return getToken(TSqlParser.NOWAIT, 0); }
		public TerminalNode NTILE() { return getToken(TSqlParser.NTILE, 0); }
		public TerminalNode NUMANODE() { return getToken(TSqlParser.NUMANODE, 0); }
		public TerminalNode NUMBER() { return getToken(TSqlParser.NUMBER, 0); }
		public TerminalNode NUMERIC_ROUNDABORT() { return getToken(TSqlParser.NUMERIC_ROUNDABORT, 0); }
		public TerminalNode OBJECT() { return getToken(TSqlParser.OBJECT, 0); }
		public TerminalNode OFFLINE() { return getToken(TSqlParser.OFFLINE, 0); }
		public TerminalNode OFFSET() { return getToken(TSqlParser.OFFSET, 0); }
		public TerminalNode OFFSETS() { return getToken(TSqlParser.OFFSETS, 0); }
		public TerminalNode OLD_ACCOUNT() { return getToken(TSqlParser.OLD_ACCOUNT, 0); }
		public TerminalNode ONLINE() { return getToken(TSqlParser.ONLINE, 0); }
		public TerminalNode ONLY() { return getToken(TSqlParser.ONLY, 0); }
		public TerminalNode OPEN_EXISTING() { return getToken(TSqlParser.OPEN_EXISTING, 0); }
		public TerminalNode OPTIMISTIC() { return getToken(TSqlParser.OPTIMISTIC, 0); }
		public TerminalNode OPTIMIZE() { return getToken(TSqlParser.OPTIMIZE, 0); }
		public TerminalNode OUT() { return getToken(TSqlParser.OUT, 0); }
		public TerminalNode OUTPUT() { return getToken(TSqlParser.OUTPUT, 0); }
		public TerminalNode OWNER() { return getToken(TSqlParser.OWNER, 0); }
		public TerminalNode PAGE() { return getToken(TSqlParser.PAGE, 0); }
		public TerminalNode PAGE_VERIFY() { return getToken(TSqlParser.PAGE_VERIFY, 0); }
		public TerminalNode PARAMETERIZATION() { return getToken(TSqlParser.PARAMETERIZATION, 0); }
		public TerminalNode PARTITION() { return getToken(TSqlParser.PARTITION, 0); }
		public TerminalNode PARTITIONS() { return getToken(TSqlParser.PARTITIONS, 0); }
		public TerminalNode PARTNER() { return getToken(TSqlParser.PARTNER, 0); }
		public TerminalNode PATH() { return getToken(TSqlParser.PATH, 0); }
		public TerminalNode POISON_MESSAGE_HANDLING() { return getToken(TSqlParser.POISON_MESSAGE_HANDLING, 0); }
		public TerminalNode POOL() { return getToken(TSqlParser.POOL, 0); }
		public TerminalNode PORT() { return getToken(TSqlParser.PORT, 0); }
		public TerminalNode PRECEDING() { return getToken(TSqlParser.PRECEDING, 0); }
		public TerminalNode PRIMARY_ROLE() { return getToken(TSqlParser.PRIMARY_ROLE, 0); }
		public TerminalNode PRIOR() { return getToken(TSqlParser.PRIOR, 0); }
		public TerminalNode PRIORITY() { return getToken(TSqlParser.PRIORITY, 0); }
		public TerminalNode PRIORITY_LEVEL() { return getToken(TSqlParser.PRIORITY_LEVEL, 0); }
		public TerminalNode PRIVATE() { return getToken(TSqlParser.PRIVATE, 0); }
		public TerminalNode PRIVATE_KEY() { return getToken(TSqlParser.PRIVATE_KEY, 0); }
		public TerminalNode PRIVILEGES() { return getToken(TSqlParser.PRIVILEGES, 0); }
		public TerminalNode PROCEDURE_NAME() { return getToken(TSqlParser.PROCEDURE_NAME, 0); }
		public TerminalNode PROPERTY() { return getToken(TSqlParser.PROPERTY, 0); }
		public TerminalNode PROVIDER() { return getToken(TSqlParser.PROVIDER, 0); }
		public TerminalNode PROVIDER_KEY_NAME() { return getToken(TSqlParser.PROVIDER_KEY_NAME, 0); }
		public TerminalNode PUBLIC() { return getToken(TSqlParser.PUBLIC, 0); }
		public TerminalNode QUERY() { return getToken(TSqlParser.QUERY, 0); }
		public TerminalNode QUEUE() { return getToken(TSqlParser.QUEUE, 0); }
		public TerminalNode QUEUE_DELAY() { return getToken(TSqlParser.QUEUE_DELAY, 0); }
		public TerminalNode QUOTED_IDENTIFIER() { return getToken(TSqlParser.QUOTED_IDENTIFIER, 0); }
		public TerminalNode R() { return getToken(TSqlParser.R, 0); }
		public TerminalNode RANGE() { return getToken(TSqlParser.RANGE, 0); }
		public TerminalNode RANK() { return getToken(TSqlParser.RANK, 0); }
		public TerminalNode RAW() { return getToken(TSqlParser.RAW, 0); }
		public TerminalNode RC2() { return getToken(TSqlParser.RC2, 0); }
		public TerminalNode RC4() { return getToken(TSqlParser.RC4, 0); }
		public TerminalNode RC4_128() { return getToken(TSqlParser.RC4_128, 0); }
		public TerminalNode READ_COMMITTED_SNAPSHOT() { return getToken(TSqlParser.READ_COMMITTED_SNAPSHOT, 0); }
		public TerminalNode READ_ONLY() { return getToken(TSqlParser.READ_ONLY, 0); }
		public TerminalNode READ_ONLY_ROUTING_LIST() { return getToken(TSqlParser.READ_ONLY_ROUTING_LIST, 0); }
		public TerminalNode READ_WRITE() { return getToken(TSqlParser.READ_WRITE, 0); }
		public TerminalNode READONLY() { return getToken(TSqlParser.READONLY, 0); }
		public TerminalNode REBUILD() { return getToken(TSqlParser.REBUILD, 0); }
		public TerminalNode RECEIVE() { return getToken(TSqlParser.RECEIVE, 0); }
		public TerminalNode RECOMPILE() { return getToken(TSqlParser.RECOMPILE, 0); }
		public TerminalNode RECOVERY() { return getToken(TSqlParser.RECOVERY, 0); }
		public TerminalNode RECURSIVE_TRIGGERS() { return getToken(TSqlParser.RECURSIVE_TRIGGERS, 0); }
		public TerminalNode RELATIVE() { return getToken(TSqlParser.RELATIVE, 0); }
		public TerminalNode REMOTE() { return getToken(TSqlParser.REMOTE, 0); }
		public TerminalNode REMOTE_SERVICE_NAME() { return getToken(TSqlParser.REMOTE_SERVICE_NAME, 0); }
		public TerminalNode REMOVE() { return getToken(TSqlParser.REMOVE, 0); }
		public TerminalNode REORGANIZE() { return getToken(TSqlParser.REORGANIZE, 0); }
		public TerminalNode REPEATABLE() { return getToken(TSqlParser.REPEATABLE, 0); }
		public TerminalNode REPLICA() { return getToken(TSqlParser.REPLICA, 0); }
		public TerminalNode REQUEST_MAX_CPU_TIME_SEC() { return getToken(TSqlParser.REQUEST_MAX_CPU_TIME_SEC, 0); }
		public TerminalNode REQUEST_MAX_MEMORY_GRANT_PERCENT() { return getToken(TSqlParser.REQUEST_MAX_MEMORY_GRANT_PERCENT, 0); }
		public TerminalNode REQUEST_MEMORY_GRANT_TIMEOUT_SEC() { return getToken(TSqlParser.REQUEST_MEMORY_GRANT_TIMEOUT_SEC, 0); }
		public TerminalNode REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT() { return getToken(TSqlParser.REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT, 0); }
		public TerminalNode RESERVE_DISK_SPACE() { return getToken(TSqlParser.RESERVE_DISK_SPACE, 0); }
		public TerminalNode RESOURCE() { return getToken(TSqlParser.RESOURCE, 0); }
		public TerminalNode RESOURCE_MANAGER_LOCATION() { return getToken(TSqlParser.RESOURCE_MANAGER_LOCATION, 0); }
		public TerminalNode RESTRICTED_USER() { return getToken(TSqlParser.RESTRICTED_USER, 0); }
		public TerminalNode RETENTION() { return getToken(TSqlParser.RETENTION, 0); }
		public TerminalNode RETURN() { return getToken(TSqlParser.RETURN, 0); }
		public TerminalNode RETURNS() { return getToken(TSqlParser.RETURNS, 0); }
		public TerminalNode ROBUST() { return getToken(TSqlParser.ROBUST, 0); }
		public TerminalNode ROOT() { return getToken(TSqlParser.ROOT, 0); }
		public TerminalNode ROUTE() { return getToken(TSqlParser.ROUTE, 0); }
		public TerminalNode ROW() { return getToken(TSqlParser.ROW, 0); }
		public TerminalNode ROW_NUMBER() { return getToken(TSqlParser.ROW_NUMBER, 0); }
		public TerminalNode ROWCOUNT() { return getToken(TSqlParser.ROWCOUNT, 0); }
		public TerminalNode ROWGUID() { return getToken(TSqlParser.ROWGUID, 0); }
		public TerminalNode ROWS() { return getToken(TSqlParser.ROWS, 0); }
		public TerminalNode SAFETY() { return getToken(TSqlParser.SAFETY, 0); }
		public TerminalNode SAMPLE() { return getToken(TSqlParser.SAMPLE, 0); }
		public TerminalNode SCHEMABINDING() { return getToken(TSqlParser.SCHEMABINDING, 0); }
		public TerminalNode SCOPED() { return getToken(TSqlParser.SCOPED, 0); }
		public TerminalNode SCROLL() { return getToken(TSqlParser.SCROLL, 0); }
		public TerminalNode SCROLL_LOCKS() { return getToken(TSqlParser.SCROLL_LOCKS, 0); }
		public TerminalNode SEARCH() { return getToken(TSqlParser.SEARCH, 0); }
		public TerminalNode SECONDARY() { return getToken(TSqlParser.SECONDARY, 0); }
		public TerminalNode SECONDARY_ONLY() { return getToken(TSqlParser.SECONDARY_ONLY, 0); }
		public TerminalNode SECONDARY_ROLE() { return getToken(TSqlParser.SECONDARY_ROLE, 0); }
		public TerminalNode SECONDS() { return getToken(TSqlParser.SECONDS, 0); }
		public TerminalNode SECRET() { return getToken(TSqlParser.SECRET, 0); }
		public TerminalNode SECURITY_LOG() { return getToken(TSqlParser.SECURITY_LOG, 0); }
		public TerminalNode SEEDING_MODE() { return getToken(TSqlParser.SEEDING_MODE, 0); }
		public TerminalNode SELF() { return getToken(TSqlParser.SELF, 0); }
		public TerminalNode SEMI_SENSITIVE() { return getToken(TSqlParser.SEMI_SENSITIVE, 0); }
		public TerminalNode SEND() { return getToken(TSqlParser.SEND, 0); }
		public TerminalNode SENT() { return getToken(TSqlParser.SENT, 0); }
		public TerminalNode SERIALIZABLE() { return getToken(TSqlParser.SERIALIZABLE, 0); }
		public TerminalNode SERVER() { return getToken(TSqlParser.SERVER, 0); }
		public TerminalNode SESSION_TIMEOUT() { return getToken(TSqlParser.SESSION_TIMEOUT, 0); }
		public TerminalNode SETERROR() { return getToken(TSqlParser.SETERROR, 0); }
		public TerminalNode SHARE() { return getToken(TSqlParser.SHARE, 0); }
		public TerminalNode SHOWPLAN() { return getToken(TSqlParser.SHOWPLAN, 0); }
		public TerminalNode SID() { return getToken(TSqlParser.SID, 0); }
		public TerminalNode SIGNATURE() { return getToken(TSqlParser.SIGNATURE, 0); }
		public TerminalNode SIMPLE() { return getToken(TSqlParser.SIMPLE, 0); }
		public TerminalNode SINGLE_USER() { return getToken(TSqlParser.SINGLE_USER, 0); }
		public TerminalNode SIZE() { return getToken(TSqlParser.SIZE, 0); }
		public TerminalNode SMALLINT() { return getToken(TSqlParser.SMALLINT, 0); }
		public TerminalNode SNAPSHOT() { return getToken(TSqlParser.SNAPSHOT, 0); }
		public TerminalNode SOURCE() { return getToken(TSqlParser.SOURCE, 0); }
		public TerminalNode SPATIAL_WINDOW_MAX_CELLS() { return getToken(TSqlParser.SPATIAL_WINDOW_MAX_CELLS, 0); }
		public TerminalNode STANDBY() { return getToken(TSqlParser.STANDBY, 0); }
		public TerminalNode START() { return getToken(TSqlParser.START, 0); }
		public TerminalNode START_DATE() { return getToken(TSqlParser.START_DATE, 0); }
		public TerminalNode STATE() { return getToken(TSqlParser.STATE, 0); }
		public TerminalNode STATIC() { return getToken(TSqlParser.STATIC, 0); }
		public TerminalNode STATS_STREAM() { return getToken(TSqlParser.STATS_STREAM, 0); }
		public TerminalNode STATUS() { return getToken(TSqlParser.STATUS, 0); }
		public TerminalNode STDEV() { return getToken(TSqlParser.STDEV, 0); }
		public TerminalNode STDEVP() { return getToken(TSqlParser.STDEVP, 0); }
		public TerminalNode STOPLIST() { return getToken(TSqlParser.STOPLIST, 0); }
		public TerminalNode STUFF() { return getToken(TSqlParser.STUFF, 0); }
		public TerminalNode SUBJECT() { return getToken(TSqlParser.SUBJECT, 0); }
		public TerminalNode SUM() { return getToken(TSqlParser.SUM, 0); }
		public TerminalNode SUSPEND() { return getToken(TSqlParser.SUSPEND, 0); }
		public TerminalNode SYMMETRIC() { return getToken(TSqlParser.SYMMETRIC, 0); }
		public TerminalNode SYNCHRONOUS_COMMIT() { return getToken(TSqlParser.SYNCHRONOUS_COMMIT, 0); }
		public TerminalNode SYNONYM() { return getToken(TSqlParser.SYNONYM, 0); }
		public TerminalNode TAKE() { return getToken(TSqlParser.TAKE, 0); }
		public TerminalNode TARGET() { return getToken(TSqlParser.TARGET, 0); }
		public TerminalNode TARGET_RECOVERY_TIME() { return getToken(TSqlParser.TARGET_RECOVERY_TIME, 0); }
		public TerminalNode TB() { return getToken(TSqlParser.TB, 0); }
		public TerminalNode TEXTIMAGE_ON() { return getToken(TSqlParser.TEXTIMAGE_ON, 0); }
		public TerminalNode THROW() { return getToken(TSqlParser.THROW, 0); }
		public TerminalNode TIES() { return getToken(TSqlParser.TIES, 0); }
		public TerminalNode TIME() { return getToken(TSqlParser.TIME, 0); }
		public TerminalNode TIMEOUT() { return getToken(TSqlParser.TIMEOUT, 0); }
		public TerminalNode TIMER() { return getToken(TSqlParser.TIMER, 0); }
		public TerminalNode TINYINT() { return getToken(TSqlParser.TINYINT, 0); }
		public TerminalNode TORN_PAGE_DETECTION() { return getToken(TSqlParser.TORN_PAGE_DETECTION, 0); }
		public TerminalNode TRANSFORM_NOISE_WORDS() { return getToken(TSqlParser.TRANSFORM_NOISE_WORDS, 0); }
		public TerminalNode TRIPLE_DES() { return getToken(TSqlParser.TRIPLE_DES, 0); }
		public TerminalNode TRIPLE_DES_3KEY() { return getToken(TSqlParser.TRIPLE_DES_3KEY, 0); }
		public TerminalNode TRUSTWORTHY() { return getToken(TSqlParser.TRUSTWORTHY, 0); }
		public TerminalNode TRY() { return getToken(TSqlParser.TRY, 0); }
		public TerminalNode TSQL() { return getToken(TSqlParser.TSQL, 0); }
		public TerminalNode TWO_DIGIT_YEAR_CUTOFF() { return getToken(TSqlParser.TWO_DIGIT_YEAR_CUTOFF, 0); }
		public TerminalNode TYPE() { return getToken(TSqlParser.TYPE, 0); }
		public TerminalNode TYPE_WARNING() { return getToken(TSqlParser.TYPE_WARNING, 0); }
		public TerminalNode UNBOUNDED() { return getToken(TSqlParser.UNBOUNDED, 0); }
		public TerminalNode UNCOMMITTED() { return getToken(TSqlParser.UNCOMMITTED, 0); }
		public TerminalNode UNKNOWN() { return getToken(TSqlParser.UNKNOWN, 0); }
		public TerminalNode UNLIMITED() { return getToken(TSqlParser.UNLIMITED, 0); }
		public TerminalNode USING() { return getToken(TSqlParser.USING, 0); }
		public TerminalNode VALID_XML() { return getToken(TSqlParser.VALID_XML, 0); }
		public TerminalNode VALIDATION() { return getToken(TSqlParser.VALIDATION, 0); }
		public TerminalNode VALUE() { return getToken(TSqlParser.VALUE, 0); }
		public TerminalNode VAR() { return getToken(TSqlParser.VAR, 0); }
		public TerminalNode VARP() { return getToken(TSqlParser.VARP, 0); }
		public TerminalNode VIEW_METADATA() { return getToken(TSqlParser.VIEW_METADATA, 0); }
		public TerminalNode VIEWS() { return getToken(TSqlParser.VIEWS, 0); }
		public TerminalNode WAIT() { return getToken(TSqlParser.WAIT, 0); }
		public TerminalNode WELL_FORMED_XML() { return getToken(TSqlParser.WELL_FORMED_XML, 0); }
		public TerminalNode WORK() { return getToken(TSqlParser.WORK, 0); }
		public TerminalNode WORKLOAD() { return getToken(TSqlParser.WORKLOAD, 0); }
		public TerminalNode XML() { return getToken(TSqlParser.XML, 0); }
		public TerminalNode XMLNAMESPACES() { return getToken(TSqlParser.XMLNAMESPACES, 0); }
		public Simple_idContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_simple_id; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterSimple_id(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitSimple_id(this);
		}
	}

	public final Simple_idContext simple_id() throws RecognitionException {
		Simple_idContext _localctx = new Simple_idContext(_ctx, getState());
		enterRule(_localctx, 954, RULE_simple_id);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(10654);
			_la = _input.LA(1);
			if ( !(_la==CALLED || ((((_la - 81)) & ~0x3f) == 0 && ((1L << (_la - 81)) & ((1L << (DATA_COMPRESSION - 81)) | (1L << (EVENTDATA - 81)) | (1L << (FILENAME - 81)) | (1L << (FILLFACTOR - 81)) | (1L << (FORCESEEK - 81)))) != 0) || ((((_la - 159)) & ~0x3f) == 0 && ((1L << (_la - 159)) & ((1L << (INIT - 159)) | (1L << (KEY - 159)) | (1L << (MASTER - 159)) | (1L << (MAX_MEMORY - 159)))) != 0) || ((((_la - 226)) & ~0x3f) == 0 && ((1L << (_la - 226)) & ((1L << (OFFSETS - 226)) | (1L << (PAGE - 226)) | (1L << (PUBLIC - 226)) | (1L << (R - 226)) | (1L << (RAW - 226)) | (1L << (RETURN - 226)) | (1L << (RETURNS - 226)) | (1L << (ROWCOUNT - 226)))) != 0) || ((((_la - 296)) & ~0x3f) == 0 && ((1L << (_la - 296)) & ((1L << (SAFETY - 296)) | (1L << (SERVER - 296)) | (1L << (SID - 296)) | (1L << (SOURCE - 296)) | (1L << (STATE - 296)) | (1L << (START - 296)) | (1L << (TARGET - 296)))) != 0) || ((((_la - 384)) & ~0x3f) == 0 && ((1L << (_la - 384)) & ((1L << (ABSOLUTE - 384)) | (1L << (ACCENT_SENSITIVITY - 384)) | (1L << (ACTION - 384)) | (1L << (ACTIVATION - 384)) | (1L << (ACTIVE - 384)) | (1L << (ADDRESS - 384)) | (1L << (AES_128 - 384)) | (1L << (AES_192 - 384)) | (1L << (AES_256 - 384)) | (1L << (AFFINITY - 384)) | (1L << (AFTER - 384)) | (1L << (AGGREGATE - 384)) | (1L << (ALGORITHM - 384)) | (1L << (ALLOW_ENCRYPTED_VALUE_MODIFICATIONS - 384)) | (1L << (ALLOW_SNAPSHOT_ISOLATION - 384)) | (1L << (ALLOWED - 384)) | (1L << (ANSI_NULL_DEFAULT - 384)) | (1L << (ANSI_NULLS - 384)) | (1L << (ANSI_PADDING - 384)) | (1L << (ANSI_WARNINGS - 384)) | (1L << (APPLICATION_LOG - 384)) | (1L << (APPLY - 384)) | (1L << (ARITHABORT - 384)) | (1L << (ASSEMBLY - 384)) | (1L << (AUDIT - 384)) | (1L << (AUDIT_GUID - 384)) | (1L << (AUTO - 384)) | (1L << (AUTO_CLEANUP - 384)) | (1L << (AUTO_CLOSE - 384)) | (1L << (AUTO_CREATE_STATISTICS - 384)) | (1L << (AUTO_SHRINK - 384)) | (1L << (AUTO_UPDATE_STATISTICS - 384)) | (1L << (AUTO_UPDATE_STATISTICS_ASYNC - 384)) | (1L << (AVAILABILITY - 384)) | (1L << (AVG - 384)) | (1L << (BACKUP_PRIORITY - 384)) | (1L << (BEGIN_DIALOG - 384)) | (1L << (BIGINT - 384)) | (1L << (BINARY_BASE64 - 384)) | (1L << (BINARY_CHECKSUM - 384)) | (1L << (BINDING - 384)) | (1L << (BLOB_STORAGE - 384)) | (1L << (BROKER - 384)) | (1L << (BROKER_INSTANCE - 384)) | (1L << (BULK_LOGGED - 384)) | (1L << (CALLER - 384)) | (1L << (CAP_CPU_PERCENT - 384)) | (1L << (CAST - 384)) | (1L << (CATALOG - 384)) | (1L << (CATCH - 384)) | (1L << (CHANGE_RETENTION - 384)) | (1L << (CHANGE_TRACKING - 384)) | (1L << (CHECKSUM - 384)) | (1L << (CHECKSUM_AGG - 384)) | (1L << (CLEANUP - 384)) | (1L << (COLLECTION - 384)) | (1L << (COLUMN_MASTER_KEY - 384)) | (1L << (COMMITTED - 384)) | (1L << (COMPATIBILITY_LEVEL - 384)) | (1L << (CONCAT - 384)) | (1L << (CONCAT_NULL_YIELDS_NULL - 384)) | (1L << (CONTENT - 384)) | (1L << (CONTROL - 384)) | (1L << (COOKIE - 384)))) != 0) || ((((_la - 448)) & ~0x3f) == 0 && ((1L << (_la - 448)) & ((1L << (COUNT - 448)) | (1L << (COUNT_BIG - 448)) | (1L << (COUNTER - 448)) | (1L << (CPU - 448)) | (1L << (CREATE_NEW - 448)) | (1L << (CREATION_DISPOSITION - 448)) | (1L << (CREDENTIAL - 448)) | (1L << (CRYPTOGRAPHIC - 448)) | (1L << (CURSOR_CLOSE_ON_COMMIT - 448)) | (1L << (CURSOR_DEFAULT - 448)) | (1L << (DATE_CORRELATION_OPTIMIZATION - 448)) | (1L << (DATEADD - 448)) | (1L << (DATEDIFF - 448)) | (1L << (DATENAME - 448)) | (1L << (DATEPART - 448)) | (1L << (DAYS - 448)) | (1L << (DB_CHAINING - 448)) | (1L << (DB_FAILOVER - 448)) | (1L << (DECRYPTION - 448)) | (1L << (DEFAULT_DOUBLE_QUOTE - 448)) | (1L << (DEFAULT_FULLTEXT_LANGUAGE - 448)) | (1L << (DEFAULT_LANGUAGE - 448)) | (1L << (DELAY - 448)) | (1L << (DELAYED_DURABILITY - 448)) | (1L << (DELETED - 448)) | (1L << (DENSE_RANK - 448)) | (1L << (DEPENDENTS - 448)) | (1L << (DES - 448)) | (1L << (DESCRIPTION - 448)) | (1L << (DESX - 448)) | (1L << (DHCP - 448)) | (1L << (DIALOG - 448)) | (1L << (DIRECTORY_NAME - 448)) | (1L << (DISABLE - 448)) | (1L << (DISABLE_BROKER - 448)) | (1L << (DISABLED - 448)) | (1L << (DISK_DRIVE - 448)) | (1L << (DOCUMENT - 448)) | (1L << (DYNAMIC - 448)) | (1L << (EMERGENCY - 448)) | (1L << (EMPTY - 448)) | (1L << (ENABLE - 448)) | (1L << (ENABLE_BROKER - 448)) | (1L << (ENCRYPTED_VALUE - 448)) | (1L << (ENCRYPTION - 448)) | (1L << (ENDPOINT_URL - 448)) | (1L << (ERROR_BROKER_CONVERSATIONS - 448)) | (1L << (EXCLUSIVE - 448)) | (1L << (EXECUTABLE - 448)) | (1L << (EXIST - 448)) | (1L << (EXPAND - 448)) | (1L << (EXPIRY_DATE - 448)) | (1L << (EXPLICIT - 448)) | (1L << (FAIL_OPERATION - 448)) | (1L << (FAILOVER_MODE - 448)) | (1L << (FAILURE - 448)) | (1L << (FAILURE_CONDITION_LEVEL - 448)) | (1L << (FAST - 448)) | (1L << (FAST_FORWARD - 448)) | (1L << (FILEGROUP - 448)) | (1L << (FILEGROWTH - 448)) | (1L << (FILEPATH - 448)) | (1L << (FILESTREAM - 448)))) != 0) || ((((_la - 512)) & ~0x3f) == 0 && ((1L << (_la - 512)) & ((1L << (FILTER - 512)) | (1L << (FIRST - 512)) | (1L << (FIRST_VALUE - 512)) | (1L << (FOLLOWING - 512)) | (1L << (FORCE - 512)) | (1L << (FORCE_FAILOVER_ALLOW_DATA_LOSS - 512)) | (1L << (FORCED - 512)) | (1L << (FORMAT - 512)) | (1L << (FORWARD_ONLY - 512)) | (1L << (FULLSCAN - 512)) | (1L << (FULLTEXT - 512)) | (1L << (GB - 512)) | (1L << (GETDATE - 512)) | (1L << (GETUTCDATE - 512)) | (1L << (GLOBAL - 512)) | (1L << (GO - 512)) | (1L << (GROUP_MAX_REQUESTS - 512)) | (1L << (GROUPING - 512)) | (1L << (GROUPING_ID - 512)) | (1L << (HADR - 512)) | (1L << (HASH - 512)) | (1L << (HEALTH_CHECK_TIMEOUT - 512)) | (1L << (HIGH - 512)) | (1L << (HONOR_BROKER_PRIORITY - 512)) | (1L << (HOURS - 512)) | (1L << (IDENTITY_VALUE - 512)) | (1L << (IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX - 512)) | (1L << (IMMEDIATE - 512)) | (1L << (IMPERSONATE - 512)) | (1L << (IMPORTANCE - 512)) | (1L << (INCREMENTAL - 512)) | (1L << (INITIATOR - 512)) | (1L << (INPUT - 512)) | (1L << (INSENSITIVE - 512)) | (1L << (INSERTED - 512)) | (1L << (INT - 512)) | (1L << (IP - 512)) | (1L << (ISOLATION - 512)) | (1L << (KB - 512)) | (1L << (KEEP - 512)) | (1L << (KEEPFIXED - 512)) | (1L << (KEY_SOURCE - 512)) | (1L << (KEYS - 512)) | (1L << (KEYSET - 512)) | (1L << (LAG - 512)) | (1L << (LAST - 512)) | (1L << (LAST_VALUE - 512)) | (1L << (LEAD - 512)) | (1L << (LEVEL - 512)) | (1L << (LIST - 512)) | (1L << (LISTENER - 512)) | (1L << (LISTENER_URL - 512)) | (1L << (LOB_COMPACTION - 512)) | (1L << (LOCAL - 512)) | (1L << (LOCATION - 512)) | (1L << (LOCK - 512)) | (1L << (LOCK_ESCALATION - 512)) | (1L << (LOGIN - 512)) | (1L << (LOOP - 512)) | (1L << (LOW - 512)) | (1L << (MANUAL - 512)) | (1L << (MARK - 512)))) != 0) || ((((_la - 576)) & ~0x3f) == 0 && ((1L << (_la - 576)) & ((1L << (MATERIALIZED - 576)) | (1L << (MAX - 576)) | (1L << (MAX_CPU_PERCENT - 576)) | (1L << (MAX_DOP - 576)) | (1L << (MAX_FILES - 576)) | (1L << (MAX_IOPS_PER_VOLUME - 576)) | (1L << (MAX_MEMORY_PERCENT - 576)) | (1L << (MAX_PROCESSES - 576)) | (1L << (MAX_QUEUE_READERS - 576)) | (1L << (MAX_ROLLOVER_FILES - 576)) | (1L << (MAXDOP - 576)) | (1L << (MAXRECURSION - 576)) | (1L << (MAXSIZE - 576)) | (1L << (MB - 576)) | (1L << (MEDIUM - 576)) | (1L << (MEMORY_OPTIMIZED_DATA - 576)) | (1L << (MESSAGE - 576)) | (1L << (MIN - 576)) | (1L << (MIN_ACTIVE_ROWVERSION - 576)) | (1L << (MIN_CPU_PERCENT - 576)) | (1L << (MIN_IOPS_PER_VOLUME - 576)) | (1L << (MIN_MEMORY_PERCENT - 576)) | (1L << (MINUTES - 576)) | (1L << (MIRROR_ADDRESS - 576)) | (1L << (MIXED_PAGE_ALLOCATION - 576)) | (1L << (MODE - 576)) | (1L << (MODIFY - 576)) | (1L << (MOVE - 576)) | (1L << (MULTI_USER - 576)) | (1L << (NAME - 576)) | (1L << (NESTED_TRIGGERS - 576)) | (1L << (NEW_ACCOUNT - 576)) | (1L << (NEW_BROKER - 576)) | (1L << (NEW_PASSWORD - 576)) | (1L << (NEXT - 576)) | (1L << (NO - 576)) | (1L << (NO_TRUNCATE - 576)) | (1L << (NO_WAIT - 576)) | (1L << (NOCOUNT - 576)) | (1L << (NODES - 576)) | (1L << (NOEXPAND - 576)) | (1L << (NON_TRANSACTED_ACCESS - 576)) | (1L << (NORECOMPUTE - 576)) | (1L << (NORECOVERY - 576)) | (1L << (NOWAIT - 576)) | (1L << (NTILE - 576)) | (1L << (NUMANODE - 576)) | (1L << (NUMBER - 576)) | (1L << (NUMERIC_ROUNDABORT - 576)) | (1L << (OBJECT - 576)) | (1L << (OFFLINE - 576)) | (1L << (OFFSET - 576)) | (1L << (OLD_ACCOUNT - 576)) | (1L << (ONLINE - 576)) | (1L << (ONLY - 576)) | (1L << (OPEN_EXISTING - 576)) | (1L << (OPTIMISTIC - 576)) | (1L << (OPTIMIZE - 576)) | (1L << (OUT - 576)) | (1L << (OUTPUT - 576)) | (1L << (OWNER - 576)) | (1L << (PAGE_VERIFY - 576)) | (1L << (PARAMETERIZATION - 576)) | (1L << (PARTITION - 576)))) != 0) || ((((_la - 640)) & ~0x3f) == 0 && ((1L << (_la - 640)) & ((1L << (PARTITIONS - 640)) | (1L << (PARTNER - 640)) | (1L << (PATH - 640)) | (1L << (POISON_MESSAGE_HANDLING - 640)) | (1L << (POOL - 640)) | (1L << (PORT - 640)) | (1L << (PRECEDING - 640)) | (1L << (PRIMARY_ROLE - 640)) | (1L << (PRIOR - 640)) | (1L << (PRIORITY - 640)) | (1L << (PRIORITY_LEVEL - 640)) | (1L << (PRIVATE - 640)) | (1L << (PRIVATE_KEY - 640)) | (1L << (PRIVILEGES - 640)) | (1L << (PROCEDURE_NAME - 640)) | (1L << (PROPERTY - 640)) | (1L << (PROVIDER - 640)) | (1L << (PROVIDER_KEY_NAME - 640)) | (1L << (QUERY - 640)) | (1L << (QUEUE - 640)) | (1L << (QUEUE_DELAY - 640)) | (1L << (QUOTED_IDENTIFIER - 640)) | (1L << (RANGE - 640)) | (1L << (RANK - 640)) | (1L << (RC2 - 640)) | (1L << (RC4 - 640)) | (1L << (RC4_128 - 640)) | (1L << (READ_COMMITTED_SNAPSHOT - 640)) | (1L << (READ_ONLY - 640)) | (1L << (READ_ONLY_ROUTING_LIST - 640)) | (1L << (READ_WRITE - 640)) | (1L << (READONLY - 640)) | (1L << (REBUILD - 640)) | (1L << (RECEIVE - 640)) | (1L << (RECOMPILE - 640)) | (1L << (RECOVERY - 640)) | (1L << (RECURSIVE_TRIGGERS - 640)) | (1L << (RELATIVE - 640)) | (1L << (REMOTE - 640)) | (1L << (REMOTE_SERVICE_NAME - 640)) | (1L << (REMOVE - 640)) | (1L << (REORGANIZE - 640)) | (1L << (REPEATABLE - 640)) | (1L << (REPLICA - 640)) | (1L << (REQUEST_MAX_CPU_TIME_SEC - 640)) | (1L << (REQUEST_MAX_MEMORY_GRANT_PERCENT - 640)) | (1L << (REQUEST_MEMORY_GRANT_TIMEOUT_SEC - 640)) | (1L << (REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT - 640)) | (1L << (RESERVE_DISK_SPACE - 640)) | (1L << (RESOURCE - 640)) | (1L << (RESOURCE_MANAGER_LOCATION - 640)) | (1L << (RESTRICTED_USER - 640)) | (1L << (RETENTION - 640)) | (1L << (ROBUST - 640)) | (1L << (ROOT - 640)) | (1L << (ROUTE - 640)) | (1L << (ROW - 640)) | (1L << (ROW_NUMBER - 640)) | (1L << (ROWGUID - 640)) | (1L << (ROWS - 640)) | (1L << (SAMPLE - 640)) | (1L << (SCHEMABINDING - 640)) | (1L << (SCOPED - 640)) | (1L << (SCROLL - 640)))) != 0) || ((((_la - 704)) & ~0x3f) == 0 && ((1L << (_la - 704)) & ((1L << (SCROLL_LOCKS - 704)) | (1L << (SEARCH - 704)) | (1L << (SECONDARY - 704)) | (1L << (SECONDARY_ONLY - 704)) | (1L << (SECONDARY_ROLE - 704)) | (1L << (SECONDS - 704)) | (1L << (SECRET - 704)) | (1L << (SECURITY_LOG - 704)) | (1L << (SEEDING_MODE - 704)) | (1L << (SELF - 704)) | (1L << (SEMI_SENSITIVE - 704)) | (1L << (SEND - 704)) | (1L << (SENT - 704)) | (1L << (SERIALIZABLE - 704)) | (1L << (SESSION_TIMEOUT - 704)) | (1L << (SETERROR - 704)) | (1L << (SHARE - 704)) | (1L << (SHOWPLAN - 704)) | (1L << (SIGNATURE - 704)) | (1L << (SIMPLE - 704)) | (1L << (SINGLE_USER - 704)) | (1L << (SIZE - 704)) | (1L << (SMALLINT - 704)) | (1L << (SNAPSHOT - 704)) | (1L << (SPATIAL_WINDOW_MAX_CELLS - 704)) | (1L << (STANDBY - 704)) | (1L << (START_DATE - 704)) | (1L << (STATIC - 704)) | (1L << (STATS_STREAM - 704)) | (1L << (STATUS - 704)) | (1L << (STDEV - 704)) | (1L << (STDEVP - 704)) | (1L << (STOPLIST - 704)) | (1L << (STUFF - 704)) | (1L << (SUBJECT - 704)) | (1L << (SUM - 704)) | (1L << (SUSPEND - 704)) | (1L << (SYMMETRIC - 704)) | (1L << (SYNCHRONOUS_COMMIT - 704)) | (1L << (SYNONYM - 704)) | (1L << (TAKE - 704)) | (1L << (TARGET_RECOVERY_TIME - 704)) | (1L << (TB - 704)) | (1L << (TEXTIMAGE_ON - 704)) | (1L << (THROW - 704)) | (1L << (TIES - 704)) | (1L << (TIME - 704)) | (1L << (TIMEOUT - 704)) | (1L << (TIMER - 704)) | (1L << (TINYINT - 704)) | (1L << (TORN_PAGE_DETECTION - 704)) | (1L << (TRANSFORM_NOISE_WORDS - 704)) | (1L << (TRIPLE_DES - 704)) | (1L << (TRIPLE_DES_3KEY - 704)) | (1L << (TRUSTWORTHY - 704)) | (1L << (TRY - 704)) | (1L << (TSQL - 704)) | (1L << (TWO_DIGIT_YEAR_CUTOFF - 704)) | (1L << (TYPE - 704)) | (1L << (TYPE_WARNING - 704)) | (1L << (UNBOUNDED - 704)) | (1L << (UNCOMMITTED - 704)) | (1L << (UNKNOWN - 704)) | (1L << (UNLIMITED - 704)))) != 0) || ((((_la - 768)) & ~0x3f) == 0 && ((1L << (_la - 768)) & ((1L << (USING - 768)) | (1L << (VALID_XML - 768)) | (1L << (VALIDATION - 768)) | (1L << (VALUE - 768)) | (1L << (VAR - 768)) | (1L << (VARP - 768)) | (1L << (VIEW_METADATA - 768)) | (1L << (VIEWS - 768)) | (1L << (WAIT - 768)) | (1L << (WELL_FORMED_XML - 768)) | (1L << (WORK - 768)) | (1L << (WORKLOAD - 768)) | (1L << (XML - 768)) | (1L << (XMLNAMESPACES - 768)) | (1L << (ID - 768)))) != 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 Comparison_operatorContext extends ParserRuleContext {
		public TerminalNode EQUAL() { return getToken(TSqlParser.EQUAL, 0); }
		public TerminalNode GREATER() { return getToken(TSqlParser.GREATER, 0); }
		public TerminalNode LESS() { return getToken(TSqlParser.LESS, 0); }
		public TerminalNode EXCLAMATION() { return getToken(TSqlParser.EXCLAMATION, 0); }
		public Comparison_operatorContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_comparison_operator; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterComparison_operator(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitComparison_operator(this);
		}
	}

	public final Comparison_operatorContext comparison_operator() throws RecognitionException {
		Comparison_operatorContext _localctx = new Comparison_operatorContext(_ctx, getState());
		enterRule(_localctx, 956, RULE_comparison_operator);
		try {
			setState(10671);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,1510,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(10656);
				match(EQUAL);
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(10657);
				match(GREATER);
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(10658);
				match(LESS);
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(10659);
				match(LESS);
				setState(10660);
				match(EQUAL);
				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(10661);
				match(GREATER);
				setState(10662);
				match(EQUAL);
				}
				break;
			case 6:
				enterOuterAlt(_localctx, 6);
				{
				setState(10663);
				match(LESS);
				setState(10664);
				match(GREATER);
				}
				break;
			case 7:
				enterOuterAlt(_localctx, 7);
				{
				setState(10665);
				match(EXCLAMATION);
				setState(10666);
				match(EQUAL);
				}
				break;
			case 8:
				enterOuterAlt(_localctx, 8);
				{
				setState(10667);
				match(EXCLAMATION);
				setState(10668);
				match(GREATER);
				}
				break;
			case 9:
				enterOuterAlt(_localctx, 9);
				{
				setState(10669);
				match(EXCLAMATION);
				setState(10670);
				match(LESS);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class Assignment_operatorContext extends ParserRuleContext {
		public TerminalNode PLUS_ASSIGN() { return getToken(TSqlParser.PLUS_ASSIGN, 0); }
		public TerminalNode MINUS_ASSIGN() { return getToken(TSqlParser.MINUS_ASSIGN, 0); }
		public TerminalNode MULT_ASSIGN() { return getToken(TSqlParser.MULT_ASSIGN, 0); }
		public TerminalNode DIV_ASSIGN() { return getToken(TSqlParser.DIV_ASSIGN, 0); }
		public TerminalNode MOD_ASSIGN() { return getToken(TSqlParser.MOD_ASSIGN, 0); }
		public TerminalNode AND_ASSIGN() { return getToken(TSqlParser.AND_ASSIGN, 0); }
		public TerminalNode XOR_ASSIGN() { return getToken(TSqlParser.XOR_ASSIGN, 0); }
		public TerminalNode OR_ASSIGN() { return getToken(TSqlParser.OR_ASSIGN, 0); }
		public Assignment_operatorContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_assignment_operator; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterAssignment_operator(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitAssignment_operator(this);
		}
	}

	public final Assignment_operatorContext assignment_operator() throws RecognitionException {
		Assignment_operatorContext _localctx = new Assignment_operatorContext(_ctx, getState());
		enterRule(_localctx, 958, RULE_assignment_operator);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(10673);
			_la = _input.LA(1);
			if ( !(((((_la - 806)) & ~0x3f) == 0 && ((1L << (_la - 806)) & ((1L << (PLUS_ASSIGN - 806)) | (1L << (MINUS_ASSIGN - 806)) | (1L << (MULT_ASSIGN - 806)) | (1L << (DIV_ASSIGN - 806)) | (1L << (MOD_ASSIGN - 806)) | (1L << (AND_ASSIGN - 806)) | (1L << (XOR_ASSIGN - 806)) | (1L << (OR_ASSIGN - 806)))) != 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 File_sizeContext extends ParserRuleContext {
		public TerminalNode DECIMAL() { return getToken(TSqlParser.DECIMAL, 0); }
		public TerminalNode KB() { return getToken(TSqlParser.KB, 0); }
		public TerminalNode MB() { return getToken(TSqlParser.MB, 0); }
		public TerminalNode GB() { return getToken(TSqlParser.GB, 0); }
		public TerminalNode TB() { return getToken(TSqlParser.TB, 0); }
		public TerminalNode MODULE() { return getToken(TSqlParser.MODULE, 0); }
		public File_sizeContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_file_size; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).enterFile_size(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof TSqlParserListener ) ((TSqlParserListener)listener).exitFile_size(this);
		}
	}

	public final File_sizeContext file_size() throws RecognitionException {
		File_sizeContext _localctx = new File_sizeContext(_ctx, getState());
		enterRule(_localctx, 960, RULE_file_size);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(10675);
			match(DECIMAL);
			setState(10677);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==GB || _la==KB || _la==MB || _la==TB || _la==MODULE) {
				{
				setState(10676);
				_la = _input.LA(1);
				if ( !(_la==GB || _la==KB || _la==MB || _la==TB || _la==MODULE) ) {
				_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 boolean sempred(RuleContext _localctx, int ruleIndex, int predIndex) {
		switch (ruleIndex) {
		case 46:
			return assembly_option_sempred((Assembly_optionContext)_localctx, predIndex);
		case 357:
			return expression_sempred((ExpressionContext)_localctx, predIndex);
		}
		return true;
	}
	private boolean assembly_option_sempred(Assembly_optionContext _localctx, int predIndex) {
		switch (predIndex) {
		case 0:
			return precpred(_ctx, 1);
		}
		return true;
	}
	private boolean expression_sempred(ExpressionContext _localctx, int predIndex) {
		switch (predIndex) {
		case 1:
			return precpred(_ctx, 5);
		case 2:
			return precpred(_ctx, 4);
		case 3:
			return precpred(_ctx, 3);
		case 4:
			return precpred(_ctx, 2);
		case 5:
			return precpred(_ctx, 10);
		}
		return true;
	}

	private static final int _serializedATNSegments = 5;
	private static final String _serializedATNSegment0 =
		"\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\3\u0344\u29ba\4\2\t"+
		"\2\4\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7\t\7\4\b\t\b\4\t\t\t\4\n\t\n\4\13"+
		"\t\13\4\f\t\f\4\r\t\r\4\16\t\16\4\17\t\17\4\20\t\20\4\21\t\21\4\22\t\22"+
		"\4\23\t\23\4\24\t\24\4\25\t\25\4\26\t\26\4\27\t\27\4\30\t\30\4\31\t\31"+
		"\4\32\t\32\4\33\t\33\4\34\t\34\4\35\t\35\4\36\t\36\4\37\t\37\4 \t \4!"+
		"\t!\4\"\t\"\4#\t#\4$\t$\4%\t%\4&\t&\4\'\t\'\4(\t(\4)\t)\4*\t*\4+\t+\4"+
		",\t,\4-\t-\4.\t.\4/\t/\4\60\t\60\4\61\t\61\4\62\t\62\4\63\t\63\4\64\t"+
		"\64\4\65\t\65\4\66\t\66\4\67\t\67\48\t8\49\t9\4:\t:\4;\t;\4<\t<\4=\t="+
		"\4>\t>\4?\t?\4@\t@\4A\tA\4B\tB\4C\tC\4D\tD\4E\tE\4F\tF\4G\tG\4H\tH\4I"+
		"\tI\4J\tJ\4K\tK\4L\tL\4M\tM\4N\tN\4O\tO\4P\tP\4Q\tQ\4R\tR\4S\tS\4T\tT"+
		"\4U\tU\4V\tV\4W\tW\4X\tX\4Y\tY\4Z\tZ\4[\t[\4\\\t\\\4]\t]\4^\t^\4_\t_\4"+
		"`\t`\4a\ta\4b\tb\4c\tc\4d\td\4e\te\4f\tf\4g\tg\4h\th\4i\ti\4j\tj\4k\t"+
		"k\4l\tl\4m\tm\4n\tn\4o\to\4p\tp\4q\tq\4r\tr\4s\ts\4t\tt\4u\tu\4v\tv\4"+
		"w\tw\4x\tx\4y\ty\4z\tz\4{\t{\4|\t|\4}\t}\4~\t~\4\177\t\177\4\u0080\t\u0080"+
		"\4\u0081\t\u0081\4\u0082\t\u0082\4\u0083\t\u0083\4\u0084\t\u0084\4\u0085"+
		"\t\u0085\4\u0086\t\u0086\4\u0087\t\u0087\4\u0088\t\u0088\4\u0089\t\u0089"+
		"\4\u008a\t\u008a\4\u008b\t\u008b\4\u008c\t\u008c\4\u008d\t\u008d\4\u008e"+
		"\t\u008e\4\u008f\t\u008f\4\u0090\t\u0090\4\u0091\t\u0091\4\u0092\t\u0092"+
		"\4\u0093\t\u0093\4\u0094\t\u0094\4\u0095\t\u0095\4\u0096\t\u0096\4\u0097"+
		"\t\u0097\4\u0098\t\u0098\4\u0099\t\u0099\4\u009a\t\u009a\4\u009b\t\u009b"+
		"\4\u009c\t\u009c\4\u009d\t\u009d\4\u009e\t\u009e\4\u009f\t\u009f\4\u00a0"+
		"\t\u00a0\4\u00a1\t\u00a1\4\u00a2\t\u00a2\4\u00a3\t\u00a3\4\u00a4\t\u00a4"+
		"\4\u00a5\t\u00a5\4\u00a6\t\u00a6\4\u00a7\t\u00a7\4\u00a8\t\u00a8\4\u00a9"+
		"\t\u00a9\4\u00aa\t\u00aa\4\u00ab\t\u00ab\4\u00ac\t\u00ac\4\u00ad\t\u00ad"+
		"\4\u00ae\t\u00ae\4\u00af\t\u00af\4\u00b0\t\u00b0\4\u00b1\t\u00b1\4\u00b2"+
		"\t\u00b2\4\u00b3\t\u00b3\4\u00b4\t\u00b4\4\u00b5\t\u00b5\4\u00b6\t\u00b6"+
		"\4\u00b7\t\u00b7\4\u00b8\t\u00b8\4\u00b9\t\u00b9\4\u00ba\t\u00ba\4\u00bb"+
		"\t\u00bb\4\u00bc\t\u00bc\4\u00bd\t\u00bd\4\u00be\t\u00be\4\u00bf\t\u00bf"+
		"\4\u00c0\t\u00c0\4\u00c1\t\u00c1\4\u00c2\t\u00c2\4\u00c3\t\u00c3\4\u00c4"+
		"\t\u00c4\4\u00c5\t\u00c5\4\u00c6\t\u00c6\4\u00c7\t\u00c7\4\u00c8\t\u00c8"+
		"\4\u00c9\t\u00c9\4\u00ca\t\u00ca\4\u00cb\t\u00cb\4\u00cc\t\u00cc\4\u00cd"+
		"\t\u00cd\4\u00ce\t\u00ce\4\u00cf\t\u00cf\4\u00d0\t\u00d0\4\u00d1\t\u00d1"+
		"\4\u00d2\t\u00d2\4\u00d3\t\u00d3\4\u00d4\t\u00d4\4\u00d5\t\u00d5\4\u00d6"+
		"\t\u00d6\4\u00d7\t\u00d7\4\u00d8\t\u00d8\4\u00d9\t\u00d9\4\u00da\t\u00da"+
		"\4\u00db\t\u00db\4\u00dc\t\u00dc\4\u00dd\t\u00dd\4\u00de\t\u00de\4\u00df"+
		"\t\u00df\4\u00e0\t\u00e0\4\u00e1\t\u00e1\4\u00e2\t\u00e2\4\u00e3\t\u00e3"+
		"\4\u00e4\t\u00e4\4\u00e5\t\u00e5\4\u00e6\t\u00e6\4\u00e7\t\u00e7\4\u00e8"+
		"\t\u00e8\4\u00e9\t\u00e9\4\u00ea\t\u00ea\4\u00eb\t\u00eb\4\u00ec\t\u00ec"+
		"\4\u00ed\t\u00ed\4\u00ee\t\u00ee\4\u00ef\t\u00ef\4\u00f0\t\u00f0\4\u00f1"+
		"\t\u00f1\4\u00f2\t\u00f2\4\u00f3\t\u00f3\4\u00f4\t\u00f4\4\u00f5\t\u00f5"+
		"\4\u00f6\t\u00f6\4\u00f7\t\u00f7\4\u00f8\t\u00f8\4\u00f9\t\u00f9\4\u00fa"+
		"\t\u00fa\4\u00fb\t\u00fb\4\u00fc\t\u00fc\4\u00fd\t\u00fd\4\u00fe\t\u00fe"+
		"\4\u00ff\t\u00ff\4\u0100\t\u0100\4\u0101\t\u0101\4\u0102\t\u0102\4\u0103"+
		"\t\u0103\4\u0104\t\u0104\4\u0105\t\u0105\4\u0106\t\u0106\4\u0107\t\u0107"+
		"\4\u0108\t\u0108\4\u0109\t\u0109\4\u010a\t\u010a\4\u010b\t\u010b\4\u010c"+
		"\t\u010c\4\u010d\t\u010d\4\u010e\t\u010e\4\u010f\t\u010f\4\u0110\t\u0110"+
		"\4\u0111\t\u0111\4\u0112\t\u0112\4\u0113\t\u0113\4\u0114\t\u0114\4\u0115"+
		"\t\u0115\4\u0116\t\u0116\4\u0117\t\u0117\4\u0118\t\u0118\4\u0119\t\u0119"+
		"\4\u011a\t\u011a\4\u011b\t\u011b\4\u011c\t\u011c\4\u011d\t\u011d\4\u011e"+
		"\t\u011e\4\u011f\t\u011f\4\u0120\t\u0120\4\u0121\t\u0121\4\u0122\t\u0122"+
		"\4\u0123\t\u0123\4\u0124\t\u0124\4\u0125\t\u0125\4\u0126\t\u0126\4\u0127"+
		"\t\u0127\4\u0128\t\u0128\4\u0129\t\u0129\4\u012a\t\u012a\4\u012b\t\u012b"+
		"\4\u012c\t\u012c\4\u012d\t\u012d\4\u012e\t\u012e\4\u012f\t\u012f\4\u0130"+
		"\t\u0130\4\u0131\t\u0131\4\u0132\t\u0132\4\u0133\t\u0133\4\u0134\t\u0134"+
		"\4\u0135\t\u0135\4\u0136\t\u0136\4\u0137\t\u0137\4\u0138\t\u0138\4\u0139"+
		"\t\u0139\4\u013a\t\u013a\4\u013b\t\u013b\4\u013c\t\u013c\4\u013d\t\u013d"+
		"\4\u013e\t\u013e\4\u013f\t\u013f\4\u0140\t\u0140\4\u0141\t\u0141\4\u0142"+
		"\t\u0142\4\u0143\t\u0143\4\u0144\t\u0144\4\u0145\t\u0145\4\u0146\t\u0146"+
		"\4\u0147\t\u0147\4\u0148\t\u0148\4\u0149\t\u0149\4\u014a\t\u014a\4\u014b"+
		"\t\u014b\4\u014c\t\u014c\4\u014d\t\u014d\4\u014e\t\u014e\4\u014f\t\u014f"+
		"\4\u0150\t\u0150\4\u0151\t\u0151\4\u0152\t\u0152\4\u0153\t\u0153\4\u0154"+
		"\t\u0154\4\u0155\t\u0155\4\u0156\t\u0156\4\u0157\t\u0157\4\u0158\t\u0158"+
		"\4\u0159\t\u0159\4\u015a\t\u015a\4\u015b\t\u015b\4\u015c\t\u015c\4\u015d"+
		"\t\u015d\4\u015e\t\u015e\4\u015f\t\u015f\4\u0160\t\u0160\4\u0161\t\u0161"+
		"\4\u0162\t\u0162\4\u0163\t\u0163\4\u0164\t\u0164\4\u0165\t\u0165\4\u0166"+
		"\t\u0166\4\u0167\t\u0167\4\u0168\t\u0168\4\u0169\t\u0169\4\u016a\t\u016a"+
		"\4\u016b\t\u016b\4\u016c\t\u016c\4\u016d\t\u016d\4\u016e\t\u016e\4\u016f"+
		"\t\u016f\4\u0170\t\u0170\4\u0171\t\u0171\4\u0172\t\u0172\4\u0173\t\u0173"+
		"\4\u0174\t\u0174\4\u0175\t\u0175\4\u0176\t\u0176\4\u0177\t\u0177\4\u0178"+
		"\t\u0178\4\u0179\t\u0179\4\u017a\t\u017a\4\u017b\t\u017b\4\u017c\t\u017c"+
		"\4\u017d\t\u017d\4\u017e\t\u017e\4\u017f\t\u017f\4\u0180\t\u0180\4\u0181"+
		"\t\u0181\4\u0182\t\u0182\4\u0183\t\u0183\4\u0184\t\u0184\4\u0185\t\u0185"+
		"\4\u0186\t\u0186\4\u0187\t\u0187\4\u0188\t\u0188\4\u0189\t\u0189\4\u018a"+
		"\t\u018a\4\u018b\t\u018b\4\u018c\t\u018c\4\u018d\t\u018d\4\u018e\t\u018e"+
		"\4\u018f\t\u018f\4\u0190\t\u0190\4\u0191\t\u0191\4\u0192\t\u0192\4\u0193"+
		"\t\u0193\4\u0194\t\u0194\4\u0195\t\u0195\4\u0196\t\u0196\4\u0197\t\u0197"+
		"\4\u0198\t\u0198\4\u0199\t\u0199\4\u019a\t\u019a\4\u019b\t\u019b\4\u019c"+
		"\t\u019c\4\u019d\t\u019d\4\u019e\t\u019e\4\u019f\t\u019f\4\u01a0\t\u01a0"+
		"\4\u01a1\t\u01a1\4\u01a2\t\u01a2\4\u01a3\t\u01a3\4\u01a4\t\u01a4\4\u01a5"+
		"\t\u01a5\4\u01a6\t\u01a6\4\u01a7\t\u01a7\4\u01a8\t\u01a8\4\u01a9\t\u01a9"+
		"\4\u01aa\t\u01aa\4\u01ab\t\u01ab\4\u01ac\t\u01ac\4\u01ad\t\u01ad\4\u01ae"+
		"\t\u01ae\4\u01af\t\u01af\4\u01b0\t\u01b0\4\u01b1\t\u01b1\4\u01b2\t\u01b2"+
		"\4\u01b3\t\u01b3\4\u01b4\t\u01b4\4\u01b5\t\u01b5\4\u01b6\t\u01b6\4\u01b7"+
		"\t\u01b7\4\u01b8\t\u01b8\4\u01b9\t\u01b9\4\u01ba\t\u01ba\4\u01bb\t\u01bb"+
		"\4\u01bc\t\u01bc\4\u01bd\t\u01bd\4\u01be\t\u01be\4\u01bf\t\u01bf\4\u01c0"+
		"\t\u01c0\4\u01c1\t\u01c1\4\u01c2\t\u01c2\4\u01c3\t\u01c3\4\u01c4\t\u01c4"+
		"\4\u01c5\t\u01c5\4\u01c6\t\u01c6\4\u01c7\t\u01c7\4\u01c8\t\u01c8\4\u01c9"+
		"\t\u01c9\4\u01ca\t\u01ca\4\u01cb\t\u01cb\4\u01cc\t\u01cc\4\u01cd\t\u01cd"+
		"\4\u01ce\t\u01ce\4\u01cf\t\u01cf\4\u01d0\t\u01d0\4\u01d1\t\u01d1\4\u01d2"+
		"\t\u01d2\4\u01d3\t\u01d3\4\u01d4\t\u01d4\4\u01d5\t\u01d5\4\u01d6\t\u01d6"+
		"\4\u01d7\t\u01d7\4\u01d8\t\u01d8\4\u01d9\t\u01d9\4\u01da\t\u01da\4\u01db"+
		"\t\u01db\4\u01dc\t\u01dc\4\u01dd\t\u01dd\4\u01de\t\u01de\4\u01df\t\u01df"+
		"\4\u01e0\t\u01e0\4\u01e1\t\u01e1\4\u01e2\t\u01e2\3\2\7\2\u03c6\n\2\f\2"+
		"\16\2\u03c9\13\2\3\2\3\2\3\3\3\3\7\3\u03cf\n\3\f\3\16\3\u03d2\13\3\3\3"+
		"\5\3\u03d5\n\3\3\3\3\3\7\3\u03d9\n\3\f\3\16\3\u03dc\13\3\5\3\u03de\n\3"+
		"\3\4\3\4\5\4\u03e2\n\4\6\4\u03e4\n\4\r\4\16\4\u03e5\3\5\3\5\3\5\3\5\3"+
		"\5\3\5\3\5\5\5\u03ef\n\5\3\6\3\6\3\6\3\6\3\6\5\6\u03f6\n\6\3\7\3\7\3\7"+
		"\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3"+
		"\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7"+
		"\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3"+
		"\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7"+
		"\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3"+
		"\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7"+
		"\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3"+
		"\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7"+
		"\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\5\7\u0497"+
		"\n\7\3\b\3\b\3\b\3\b\3\b\5\b\u049e\n\b\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t"+
		"\3\t\3\t\3\t\3\t\5\t\u04ac\n\t\3\n\3\n\5\n\u04b0\n\n\3\n\5\n\u04b3\n\n"+
		"\3\n\3\n\5\n\u04b7\n\n\3\13\3\13\5\13\u04bb\n\13\3\f\3\f\5\f\u04bf\n\f"+
		"\3\r\3\r\3\r\5\r\u04c4\n\r\3\r\3\r\3\r\5\r\u04c9\n\r\5\r\u04cb\n\r\3\16"+
		"\3\16\5\16\u04cf\n\16\3\16\5\16\u04d2\n\16\3\17\3\17\3\17\3\17\3\17\5"+
		"\17\u04d9\n\17\3\17\5\17\u04dc\n\17\3\20\3\20\3\20\3\20\3\20\3\20\3\20"+
		"\5\20\u04e5\n\20\3\20\5\20\u04e8\n\20\3\21\3\21\3\22\3\22\3\23\3\23\3"+
		"\24\3\24\3\24\5\24\u04f3\n\24\3\24\5\24\u04f6\n\24\3\24\3\24\3\24\5\24"+
		"\u04fb\n\24\3\24\3\24\3\24\5\24\u0500\n\24\3\24\5\24\u0503\n\24\3\24\3"+
		"\24\3\24\5\24\u0508\n\24\3\25\3\25\5\25\u050c\n\25\3\25\5\25\u050f\n\25"+
		"\3\25\3\25\5\25\u0513\n\25\3\25\5\25\u0516\n\25\3\25\5\25\u0519\n\25\3"+
		"\26\3\26\3\26\3\26\3\26\5\26\u0520\n\26\3\26\3\26\5\26\u0524\n\26\5\26"+
		"\u0526\n\26\3\27\3\27\3\27\5\27\u052b\n\27\3\27\3\27\7\27\u052f\n\27\f"+
		"\27\16\27\u0532\13\27\3\27\5\27\u0535\n\27\3\30\3\30\3\30\3\30\3\30\3"+
		"\30\3\30\3\30\3\30\7\30\u0540\n\30\f\30\16\30\u0543\13\30\3\30\3\30\3"+
		"\30\5\30\u0548\n\30\3\30\5\30\u054b\n\30\3\30\3\30\3\30\3\30\3\30\7\30"+
		"\u0552\n\30\f\30\16\30\u0555\13\30\5\30\u0557\n\30\3\31\3\31\3\32\3\32"+
		"\3\32\3\32\3\32\3\32\3\32\3\32\3\32\3\32\3\32\3\32\3\32\5\32\u0568\n\32"+
		"\3\33\3\33\3\33\3\33\3\33\3\33\5\33\u0570\n\33\3\33\3\33\3\33\5\33\u0575"+
		"\n\33\3\33\5\33\u0578\n\33\3\33\3\33\3\33\5\33\u057d\n\33\3\33\5\33\u0580"+
		"\n\33\3\33\3\33\3\33\5\33\u0585\n\33\3\34\3\34\3\34\3\34\3\34\3\34\5\34"+
		"\u058d\n\34\3\34\3\34\3\34\5\34\u0592\n\34\3\34\5\34\u0595\n\34\3\34\3"+
		"\34\3\34\5\34\u059a\n\34\3\35\3\35\3\35\3\35\5\35\u05a0\n\35\3\35\3\35"+
		"\3\35\5\35\u05a5\n\35\3\35\3\35\3\36\3\36\3\36\3\36\3\36\3\37\3\37\3\37"+
		"\3\37\3 \3 \3 \3!\5!\u05b6\n!\3!\5!\u05b9\n!\3!\5!\u05bc\n!\3!\5!\u05bf"+
		"\n!\3\"\3\"\3\"\5\"\u05c4\n\"\3#\3#\3$\3$\3$\3%\3%\5%\u05cd\n%\3&\3&\3"+
		"\'\3\'\3\'\3(\3(\3(\3(\3)\3)\3)\3)\5)\u05dc\n)\3*\3*\3+\3+\3+\3,\3,\3"+
		"-\3-\3-\3.\3.\3/\3/\3/\5/\u05ed\n/\3\60\3\60\3\60\3\60\3\60\3\60\3\60"+
		"\3\60\3\60\5\60\u05f8\n\60\3\60\3\60\7\60\u05fc\n\60\f\60\16\60\u05ff"+
		"\13\60\3\61\3\61\3\61\3\61\3\62\3\62\3\63\3\63\3\64\3\64\3\64\3\64\5\64"+
		"\u060d\n\64\3\65\3\65\3\66\3\66\3\66\3\67\3\67\38\38\38\38\38\38\58\u061c"+
		"\n8\39\39\3:\3:\3:\3:\3:\5:\u0625\n:\3:\3:\5:\u0629\n:\3:\6:\u062c\n:"+
		"\r:\16:\u062d\3:\3:\3:\3:\5:\u0634\n:\3;\3;\3;\3;\5;\u063a\n;\3;\5;\u063d"+
		"\n;\3;\6;\u0640\n;\r;\16;\u0641\3;\3;\3;\5;\u0647\n;\3<\3<\3<\3<\3<\3"+
		"<\5<\u064f\n<\3=\3=\3=\3=\3>\3>\3>\3>\5>\u0659\n>\3>\3>\3?\3?\3?\3?\3"+
		"?\3@\3@\3@\3@\3@\3@\3@\3@\3@\3@\5@\u066c\n@\3A\3A\3A\3A\3A\3A\5A\u0674"+
		"\nA\3A\3A\3A\3A\3A\3A\3A\3A\3A\3A\3A\5A\u0681\nA\5A\u0683\nA\3A\3A\3A"+
		"\3A\3A\3A\3A\3A\3A\3A\5A\u068f\nA\5A\u0691\nA\3A\3A\3A\3A\3A\5A\u0698"+
		"\nA\3B\3B\3B\3B\3B\3B\3B\5B\u06a1\nB\3C\3C\3C\3C\5C\u06a7\nC\3C\3C\3C"+
		"\3C\3D\3D\3D\5D\u06b0\nD\3E\3E\3F\3F\3F\3G\3G\3G\3G\3H\3H\3H\3H\5H\u06bf"+
		"\nH\3H\3H\3H\3H\3I\3I\3I\3I\5I\u06c9\nI\3I\3I\3I\3I\3J\3J\3J\3J\5J\u06d3"+
		"\nJ\3J\3J\3J\3J\3K\3K\3K\3K\3K\3K\3K\3K\3K\3K\3K\3K\3K\3K\3K\3K\3K\3K"+
		"\3K\3K\3K\3K\3K\3K\3K\3K\3K\3K\3K\3K\3K\3K\3K\3K\5K\u06fb\nK\3L\3L\3L"+
		"\3L\3L\3L\3L\3L\3L\3L\3L\3L\3L\3L\3L\3L\3L\3L\3L\3L\3L\5L\u0712\nL\3M"+
		"\3M\3N\3N\3O\3O\3O\3O\3O\3P\3P\3P\3Q\3Q\3Q\3Q\3Q\3R\3R\3R\3R\3R\3R\3R"+
		"\3R\3R\3R\3R\3R\3R\3R\3R\3R\3R\5R\u0736\nR\3R\3R\3R\3R\3R\3R\3R\3R\3R"+
		"\3R\3R\3R\3R\3R\3R\3R\5R\u0748\nR\3R\5R\u074b\nR\3R\3R\3R\5R\u0750\nR"+
		"\3R\5R\u0753\nR\3R\3R\3R\5R\u0758\nR\3R\5R\u075b\nR\3R\3R\3R\5R\u0760"+
		"\nR\3R\5R\u0763\nR\3R\3R\3R\5R\u0768\nR\3R\5R\u076b\nR\3R\3R\3R\3R\3R"+
		"\3R\5R\u0773\nR\3R\5R\u0776\nR\3R\3R\3R\3R\3R\3R\5R\u077e\nR\3R\3R\3R"+
		"\3R\3R\3R\3R\3R\3R\3R\3R\5R\u078b\nR\3R\3R\3R\3R\3R\3R\3R\3R\3R\5R\u0796"+
		"\nR\3R\7R\u0799\nR\fR\16R\u079c\13R\3R\5R\u079f\nR\3R\3R\3R\3R\5R\u07a5"+
		"\nR\3R\3R\3R\3R\3R\3R\3R\3R\3R\3R\3R\3R\3R\3R\3R\3R\3R\3R\3R\3R\3R\5R"+
		"\u07bc\nR\3R\3R\3R\3R\3R\3R\3R\3R\3R\3R\5R\u07c8\nR\3R\3R\3R\3R\3R\3R"+
		"\3R\3R\3R\5R\u07d3\nR\3R\7R\u07d6\nR\fR\16R\u07d9\13R\3R\5R\u07dc\nR\3"+
		"R\3R\3R\3R\5R\u07e2\nR\5R\u07e4\nR\3R\3R\3R\3R\3R\3R\3R\3R\3R\3R\3R\5"+
		"R\u07f1\nR\3R\3R\3R\3R\3R\3R\3R\3R\3R\3R\3R\3R\3R\3R\3R\3R\3R\3R\3R\6"+
		"R\u0806\nR\rR\16R\u0807\3R\3R\3R\3R\3R\5R\u080f\nR\3R\3R\3R\3R\3R\3R\3"+
		"R\5R\u0818\nR\3R\3R\3R\5R\u081d\nR\3R\5R\u0820\nR\3R\3R\3R\5R\u0825\n"+
		"R\3R\5R\u0828\nR\3R\3R\3R\5R\u082d\nR\3R\6R\u0830\nR\rR\16R\u0831\3R\3"+
		"R\3R\3R\3R\3R\3R\3R\3R\3R\3R\3R\3R\3R\3R\3R\3R\3R\3R\3R\3R\3R\3R\3R\3"+
		"R\3R\5R\u084e\nR\3R\3R\3R\3R\3R\5R\u0855\nR\3R\6R\u0858\nR\rR\16R\u0859"+
		"\3R\3R\3R\3R\3R\5R\u0861\nR\5R\u0863\nR\3R\3R\3R\3R\3R\3R\3R\3R\3R\5R"+
		"\u086e\nR\3R\3R\3R\3R\5R\u0874\nR\3R\3R\3R\3R\3R\3R\3R\3R\3R\3R\3R\3R"+
		"\3R\5R\u0883\nR\3S\3S\3S\3S\3S\3S\3S\3S\3S\3S\3S\3S\5S\u0891\nS\3S\5S"+
		"\u0894\nS\5S\u0896\nS\3S\3S\3S\5S\u089b\nS\3S\3S\5S\u089f\nS\3S\5S\u08a2"+
		"\nS\5S\u08a4\nS\3S\3S\3S\3S\5S\u08aa\nS\3S\5S\u08ad\nS\5S\u08af\nS\3S"+
		"\3S\3S\3S\5S\u08b5\nS\5S\u08b7\nS\3S\3S\3T\3T\3T\3T\3T\3U\3U\3U\3U\3U"+
		"\3U\3U\3U\3U\3U\3U\3U\3U\5U\u08cd\nU\3U\3U\3U\3U\3U\3U\5U\u08d5\nU\3U"+
		"\3U\3U\3U\3U\3U\5U\u08dd\nU\6U\u08df\nU\rU\16U\u08e0\3U\3U\3U\3U\3U\3"+
		"U\3U\5U\u08ea\nU\3V\3V\3V\3V\3V\3V\3V\3V\3V\3V\3V\3V\3V\3V\3V\3V\3V\3"+
		"V\3V\5V\u08ff\nV\3V\3V\3W\3W\3W\3W\3W\3W\3W\3W\3W\5W\u090c\nW\3W\3W\3"+
		"W\3W\3W\3W\3W\3W\3W\3W\3W\3W\3W\5W\u091b\nW\6W\u091d\nW\rW\16W\u091e\3"+
		"X\3X\3X\3X\3Y\3Y\3Y\3Y\3Y\3Y\3Z\3Z\3Z\3Z\3Z\3Z\3[\3[\3[\3[\3\\\3\\\3\\"+
		"\3\\\3]\3]\3]\3]\3]\3^\3^\3^\3^\5^\u0942\n^\3^\5^\u0945\n^\3^\6^\u0948"+
		"\n^\r^\16^\u0949\3_\3_\3_\3_\3_\3_\3`\3`\3`\3`\3`\3`\3a\3a\3a\3a\5a\u095c"+
		"\na\3a\5a\u095f\na\3a\3a\3a\5a\u0964\na\3a\3a\3b\3b\3b\3b\3c\3c\3c\3c"+
		"\3c\3c\3d\3d\3d\3d\3d\3d\3e\3e\3e\3e\3e\3e\5e\u097e\ne\3f\3f\3f\3f\3f"+
		"\3f\3g\3g\3g\3g\3g\3g\5g\u098c\ng\3g\3g\3g\5g\u0991\ng\3g\3g\3h\3h\3h"+
		"\3h\5h\u0999\nh\3h\6h\u099c\nh\rh\16h\u099d\3h\3h\3h\3h\3h\5h\u09a5\n"+
		"h\3i\3i\3i\3i\3i\3i\3i\3j\3j\3j\3j\3j\3k\3k\3k\3k\3k\3k\3k\5k\u09ba\n"+
		"k\3k\3k\3l\3l\3l\3l\3l\3m\3m\3m\3m\3n\3n\3n\3n\3o\3o\3o\3o\3o\3p\3p\3"+
		"p\3p\3p\3q\3q\3q\3q\3q\3r\3r\3r\3r\3r\5r\u09df\nr\3r\3r\3r\5r\u09e4\n"+
		"r\3r\3r\3s\3s\3s\3s\3s\3s\3t\3t\3t\3t\3t\3u\3u\3u\3u\5u\u09f7\nu\3u\3"+
		"u\3v\3v\3v\3v\3w\3w\3w\3w\5w\u0a03\nw\3w\5w\u0a06\nw\3w\3w\3w\5w\u0a0b"+
		"\nw\3w\5w\u0a0e\nw\3x\3x\3x\3x\5x\u0a14\nx\3x\3x\3y\3y\3y\3y\3y\3y\3z"+
		"\3z\3z\3z\3z\5z\u0a23\nz\3z\3z\3z\5z\u0a28\nz\3z\3z\3{\3{\3{\3{\5{\u0a30"+
		"\n{\3{\5{\u0a33\n{\3{\3{\3{\5{\u0a38\n{\3{\3{\3{\5{\u0a3d\n{\3{\5{\u0a40"+
		"\n{\3|\3|\3|\3|\3|\3}\3}\3}\3}\3}\3}\3~\3~\3~\3~\3~\3\177\3\177\3\177"+
		"\3\177\3\u0080\3\u0080\5\u0080\u0a58\n\u0080\3\u0080\3\u0080\3\u0080\3"+
		"\u0080\3\u0080\5\u0080\u0a5f\n\u0080\3\u0080\3\u0080\3\u0080\5\u0080\u0a64"+
		"\n\u0080\3\u0080\3\u0080\3\u0080\5\u0080\u0a69\n\u0080\3\u0080\3\u0080"+
		"\3\u0080\6\u0080\u0a6e\n\u0080\r\u0080\16\u0080\u0a6f\3\u0081\3\u0081"+
		"\3\u0081\3\u0081\3\u0081\5\u0081\u0a77\n\u0081\3\u0081\3\u0081\3\u0081"+
		"\3\u0081\3\u0082\3\u0082\3\u0082\3\u0082\3\u0082\3\u0082\3\u0082\5\u0082"+
		"\u0a84\n\u0082\3\u0083\3\u0083\3\u0083\3\u0083\5\u0083\u0a8a\n\u0083\3"+
		"\u0083\3\u0083\3\u0083\5\u0083\u0a8f\n\u0083\3\u0083\3\u0083\3\u0084\3"+
		"\u0084\3\u0084\3\u0084\5\u0084\u0a97\n\u0084\3\u0084\3\u0084\3\u0085\3"+
		"\u0085\3\u0085\3\u0085\3\u0085\3\u0086\3\u0086\3\u0086\3\u0086\3\u0086"+
		"\3\u0086\3\u0086\5\u0086\u0aa7\n\u0086\3\u0086\3\u0086\3\u0087\3\u0087"+
		"\3\u0087\5\u0087\u0aae\n\u0087\3\u0087\3\u0087\3\u0087\5\u0087\u0ab3\n"+
		"\u0087\3\u0087\6\u0087\u0ab6\n\u0087\r\u0087\16\u0087\u0ab7\3\u0087\5"+
		"\u0087\u0abb\n\u0087\3\u0087\3\u0087\3\u0087\3\u0087\5\u0087\u0ac1\n\u0087"+
		"\3\u0087\3\u0087\3\u0087\3\u0087\5\u0087\u0ac7\n\u0087\3\u0088\3\u0088"+
		"\3\u0088\5\u0088\u0acc\n\u0088\3\u0088\3\u0088\3\u0088\5\u0088\u0ad1\n"+
		"\u0088\3\u0088\6\u0088\u0ad4\n\u0088\r\u0088\16\u0088\u0ad5\3\u0088\5"+
		"\u0088\u0ad9\n\u0088\3\u0088\3\u0088\3\u0088\3\u0088\5\u0088\u0adf\n\u0088"+
		"\3\u0088\3\u0088\3\u0088\3\u0088\5\u0088\u0ae5\n\u0088\3\u0089\3\u0089"+
		"\3\u0089\3\u0089\3\u0089\3\u0089\3\u0089\3\u0089\3\u0089\5\u0089\u0af0"+
		"\n\u0089\3\u0089\5\u0089\u0af3\n\u0089\3\u008a\3\u008a\3\u008a\3\u008a"+
		"\3\u008a\3\u008a\3\u008a\3\u008a\5\u008a\u0afd\n\u008a\3\u008a\3\u008a"+
		"\3\u008a\3\u008a\5\u008a\u0b03\n\u008a\6\u008a\u0b05\n\u008a\r\u008a\16"+
		"\u008a\u0b06\3\u008a\3\u008a\5\u008a\u0b0b\n\u008a\3\u008b\3\u008b\3\u008b"+
		"\3\u008b\3\u008b\3\u008b\3\u008b\3\u008b\3\u008b\3\u008b\3\u008b\3\u008b"+
		"\3\u008b\3\u008b\3\u008b\3\u008b\3\u008c\3\u008c\3\u008c\3\u008c\3\u008c"+
		"\3\u008c\3\u008c\3\u008c\3\u008c\3\u008c\3\u008c\5\u008c\u0b28\n\u008c"+
		"\3\u008d\3\u008d\3\u008d\3\u008d\3\u008d\3\u008d\3\u008d\3\u008d\3\u008d"+
		"\3\u008d\3\u008d\5\u008d\u0b35\n\u008d\3\u008d\3\u008d\3\u008d\3\u008d"+
		"\5\u008d\u0b3b\n\u008d\3\u008e\3\u008e\3\u008e\3\u008e\3\u008e\3\u008e"+
		"\3\u008e\3\u008e\5\u008e\u0b45\n\u008e\3\u008e\5\u008e\u0b48\n\u008e\3"+
		"\u008f\3\u008f\3\u008f\3\u008f\3\u008f\3\u008f\3\u008f\3\u008f\3\u008f"+
		"\3\u0090\3\u0090\3\u0090\3\u0090\3\u0090\3\u0090\3\u0090\3\u0090\3\u0090"+
		"\5\u0090\u0b5c\n\u0090\3\u0090\3\u0090\5\u0090\u0b60\n\u0090\3\u0090\3"+
		"\u0090\5\u0090\u0b64\n\u0090\3\u0090\6\u0090\u0b67\n\u0090\r\u0090\16"+
		"\u0090\u0b68\3\u0090\3\u0090\3\u0090\3\u0090\3\u0090\3\u0090\3\u0091\3"+
		"\u0091\3\u0091\3\u0091\3\u0091\3\u0091\3\u0091\5\u0091\u0b78\n\u0091\3"+
		"\u0091\3\u0091\3\u0091\3\u0091\3\u0091\5\u0091\u0b7f\n\u0091\3\u0091\3"+
		"\u0091\3\u0091\3\u0091\3\u0091\3\u0091\3\u0091\5\u0091\u0b88\n\u0091\3"+
		"\u0091\3\u0091\3\u0091\3\u0091\7\u0091\u0b8e\n\u0091\f\u0091\16\u0091"+
		"\u0b91\13\u0091\5\u0091\u0b93\n\u0091\3\u0091\3\u0091\3\u0091\5\u0091"+
		"\u0b98\n\u0091\3\u0091\3\u0091\3\u0091\5\u0091\u0b9d\n\u0091\3\u0091\3"+
		"\u0091\3\u0091\3\u0091\6\u0091\u0ba3\n\u0091\r\u0091\16\u0091\u0ba4\3"+
		"\u0091\3\u0091\6\u0091\u0ba9\n\u0091\r\u0091\16\u0091\u0baa\3\u0091\3"+
		"\u0091\5\u0091\u0baf\n\u0091\3\u0091\3\u0091\7\u0091\u0bb3\n\u0091\f\u0091"+
		"\16\u0091\u0bb6\13\u0091\7\u0091\u0bb8\n\u0091\f\u0091\16\u0091\u0bbb"+
		"\13\u0091\3\u0091\5\u0091\u0bbe\n\u0091\3\u0091\3\u0091\3\u0091\3\u0091"+
		"\3\u0091\5\u0091\u0bc5\n\u0091\3\u0091\3\u0091\3\u0091\3\u0091\7\u0091"+
		"\u0bcb\n\u0091\f\u0091\16\u0091\u0bce\13\u0091\3\u0091\3\u0091\3\u0091"+
		"\3\u0091\3\u0091\5\u0091\u0bd5\n\u0091\3\u0091\3\u0091\3\u0091\3\u0091"+
		"\3\u0091\3\u0091\3\u0091\5\u0091\u0bde\n\u0091\3\u0091\3\u0091\3\u0091"+
		"\5\u0091\u0be3\n\u0091\3\u0091\3\u0091\5\u0091\u0be7\n\u0091\3\u0091\5"+
		"\u0091\u0bea\n\u0091\6\u0091\u0bec\n\u0091\r\u0091\16\u0091\u0bed\3\u0091"+
		"\3\u0091\7\u0091\u0bf2\n\u0091\f\u0091\16\u0091\u0bf5\13\u0091\7\u0091"+
		"\u0bf7\n\u0091\f\u0091\16\u0091\u0bfa\13\u0091\3\u0091\3\u0091\3\u0091"+
		"\3\u0091\3\u0091\5\u0091\u0c01\n\u0091\3\u0091\3\u0091\3\u0091\3\u0091"+
		"\7\u0091\u0c07\n\u0091\f\u0091\16\u0091\u0c0a\13\u0091\3\u0091\3\u0091"+
		"\3\u0091\5\u0091\u0c0f\n\u0091\3\u0091\3\u0091\3\u0091\3\u0091\5\u0091"+
		"\u0c15\n\u0091\3\u0091\5\u0091\u0c18\n\u0091\3\u0091\3\u0091\3\u0091\5"+
		"\u0091\u0c1d\n\u0091\3\u0091\5\u0091\u0c20\n\u0091\3\u0091\3\u0091\3\u0091"+
		"\3\u0091\3\u0091\5\u0091\u0c27\n\u0091\5\u0091\u0c29\n\u0091\3\u0091\5"+
		"\u0091\u0c2c\n\u0091\3\u0091\3\u0091\3\u0091\3\u0091\5\u0091\u0c32\n\u0091"+
		"\3\u0091\5\u0091\u0c35\n\u0091\3\u0091\3\u0091\3\u0091\5\u0091\u0c3a\n"+
		"\u0091\3\u0091\5\u0091\u0c3d\n\u0091\3\u0091\3\u0091\3\u0091\5\u0091\u0c42"+
		"\n\u0091\3\u0091\5\u0091\u0c45\n\u0091\3\u0091\3\u0091\3\u0091\5\u0091"+
		"\u0c4a\n\u0091\3\u0091\5\u0091\u0c4d\n\u0091\3\u0091\3\u0091\3\u0091\5"+
		"\u0091\u0c52\n\u0091\3\u0092\5\u0092\u0c55\n\u0092\3\u0092\5\u0092\u0c58"+
		"\n\u0092\3\u0092\5\u0092\u0c5b\n\u0092\3\u0092\3\u0092\3\u0092\3\u0092"+
		"\3\u0092\5\u0092\u0c62\n\u0092\6\u0092\u0c64\n\u0092\r\u0092\16\u0092"+
		"\u0c65\3\u0093\3\u0093\3\u0093\3\u0093\3\u0093\5\u0093\u0c6d\n\u0093\3"+
		"\u0094\3\u0094\3\u0094\3\u0094\3\u0094\5\u0094\u0c74\n\u0094\3\u0094\3"+
		"\u0094\3\u0094\3\u0094\5\u0094\u0c7a\n\u0094\3\u0094\3\u0094\3\u0094\3"+
		"\u0094\3\u0094\3\u0094\3\u0094\3\u0094\3\u0094\3\u0094\3\u0094\5\u0094"+
		"\u0c87\n\u0094\3\u0094\3\u0094\5\u0094\u0c8b\n\u0094\3\u0094\3\u0094\3"+
		"\u0094\5\u0094\u0c90\n\u0094\3\u0094\3\u0094\3\u0094\3\u0094\3\u0094\3"+
		"\u0094\3\u0094\3\u0094\5\u0094\u0c9a\n\u0094\3\u0094\3\u0094\3\u0094\3"+
		"\u0094\3\u0094\3\u0094\3\u0094\5\u0094\u0ca3\n\u0094\3\u0094\3\u0094\5"+
		"\u0094\u0ca7\n\u0094\3\u0095\3\u0095\3\u0095\3\u0095\3\u0095\3\u0095\3"+
		"\u0095\3\u0095\3\u0095\3\u0095\5\u0095\u0cb3\n\u0095\3\u0095\3\u0095\3"+
		"\u0095\3\u0095\5\u0095\u0cb9\n\u0095\3\u0095\3\u0095\3\u0095\6\u0095\u0cbe"+
		"\n\u0095\r\u0095\16\u0095\u0cbf\3\u0095\3\u0095\3\u0095\3\u0095\3\u0095"+
		"\3\u0095\3\u0095\3\u0095\3\u0095\3\u0095\3\u0095\3\u0095\3\u0095\3\u0095"+
		"\3\u0095\3\u0095\3\u0095\3\u0095\5\u0095\u0cd4\n\u0095\3\u0095\3\u0095"+
		"\5\u0095\u0cd8\n\u0095\3\u0096\3\u0096\3\u0096\3\u0096\3\u0096\3\u0096"+
		"\5\u0096\u0ce0\n\u0096\3\u0096\3\u0096\3\u0096\3\u0096\3\u0096\3\u0096"+
		"\3\u0096\5\u0096\u0ce9\n\u0096\3\u0096\3\u0096\3\u0096\3\u0096\5\u0096"+
		"\u0cef\n\u0096\3\u0096\3\u0096\3\u0096\3\u0096\5\u0096\u0cf5\n\u0096\3"+
		"\u0096\3\u0096\3\u0096\3\u0096\3\u0096\3\u0096\6\u0096\u0cfd\n\u0096\r"+
		"\u0096\16\u0096\u0cfe\3\u0096\3\u0096\3\u0097\3\u0097\3\u0097\3\u0097"+
		"\3\u0097\3\u0097\5\u0097\u0d09\n\u0097\3\u0097\3\u0097\5\u0097\u0d0d\n"+
		"\u0097\3\u0097\5\u0097\u0d10\n\u0097\3\u0097\3\u0097\5\u0097\u0d14\n\u0097"+
		"\3\u0097\3\u0097\3\u0097\5\u0097\u0d19\n\u0097\3\u0097\3\u0097\3\u0097"+
		"\3\u0097\5\u0097\u0d1f\n\u0097\3\u0097\5\u0097\u0d22\n\u0097\3\u0097\3"+
		"\u0097\5\u0097\u0d26\n\u0097\3\u0097\3\u0097\3\u0097\3\u0097\3\u0097\3"+
		"\u0097\6\u0097\u0d2e\n\u0097\r\u0097\16\u0097\u0d2f\3\u0097\5\u0097\u0d33"+
		"\n\u0097\3\u0098\3\u0098\3\u0098\3\u0098\3\u0098\3\u0098\5\u0098\u0d3b"+
		"\n\u0098\3\u0098\3\u0098\3\u0098\3\u0098\3\u0098\3\u0098\5\u0098\u0d43"+
		"\n\u0098\3\u0098\3\u0098\3\u0098\3\u0098\3\u0098\5\u0098\u0d4a\n\u0098"+
		"\3\u0098\3\u0098\3\u0098\3\u0098\3\u0098\6\u0098\u0d51\n\u0098\r\u0098"+
		"\16\u0098\u0d52\5\u0098\u0d55\n\u0098\3\u0098\3\u0098\3\u0098\5\u0098"+
		"\u0d5a\n\u0098\3\u0098\3\u0098\3\u0098\3\u0098\5\u0098\u0d60\n\u0098\3"+
		"\u0098\6\u0098\u0d63\n\u0098\r\u0098\16\u0098\u0d64\5\u0098\u0d67\n\u0098"+
		"\3\u0098\5\u0098\u0d6a\n\u0098\3\u0098\3\u0098\3\u0098\5\u0098\u0d6f\n"+
		"\u0098\3\u0098\5\u0098\u0d72\n\u0098\3\u0098\3\u0098\3\u0098\5\u0098\u0d77"+
		"\n\u0098\3\u0098\3\u0098\3\u0099\3\u0099\3\u0099\3\u0099\3\u0099\3\u0099"+
		"\3\u0099\3\u0099\3\u0099\3\u0099\3\u0099\5\u0099\u0d86\n\u0099\3\u0099"+
		"\3\u0099\3\u0099\3\u0099\3\u0099\5\u0099\u0d8d\n\u0099\3\u0099\3\u0099"+
		"\3\u0099\3\u0099\3\u0099\6\u0099\u0d94\n\u0099\r\u0099\16\u0099\u0d95"+
		"\5\u0099\u0d98\n\u0099\3\u0099\3\u0099\3\u0099\5\u0099\u0d9d\n\u0099\3"+
		"\u0099\3\u0099\3\u0099\3\u0099\5\u0099\u0da3\n\u0099\3\u0099\6\u0099\u0da6"+
		"\n\u0099\r\u0099\16\u0099\u0da7\5\u0099\u0daa\n\u0099\3\u0099\5\u0099"+
		"\u0dad\n\u0099\3\u0099\3\u0099\3\u0099\5\u0099\u0db2\n\u0099\3\u0099\5"+
		"\u0099\u0db5\n\u0099\3\u0099\3\u0099\3\u0099\5\u0099\u0dba\n\u0099\3\u0099"+
		"\3\u0099\3\u009a\3\u009a\3\u009a\3\u009a\3\u009a\3\u009a\3\u009a\3\u009a"+
		"\3\u009a\5\u009a\u0dc7\n\u009a\3\u009a\3\u009a\3\u009a\5\u009a\u0dcc\n"+
		"\u009a\3\u009b\3\u009b\3\u009b\3\u009b\3\u009b\3\u009b\3\u009b\5\u009b"+
		"\u0dd5\n\u009b\3\u009b\3\u009b\3\u009b\5\u009b\u0dda\n\u009b\3\u009b\3"+
		"\u009b\3\u009b\3\u009b\5\u009b\u0de0\n\u009b\3\u009b\3\u009b\5\u009b\u0de4"+
		"\n\u009b\3\u009b\3\u009b\5\u009b\u0de8\n\u009b\3\u009c\3\u009c\3\u009c"+
		"\3\u009c\3\u009c\3\u009c\3\u009c\3\u009c\3\u009c\3\u009c\3\u009c\3\u009c"+
		"\3\u009c\3\u009c\3\u009c\5\u009c\u0df9\n\u009c\5\u009c\u0dfb\n\u009c\3"+
		"\u009d\3\u009d\3\u009d\3\u009d\3\u009d\3\u009d\3\u009d\3\u009d\5\u009d"+
		"\u0e05\n\u009d\3\u009d\3\u009d\3\u009d\5\u009d\u0e0a\n\u009d\5\u009d\u0e0c"+
		"\n\u009d\3\u009d\3\u009d\5\u009d\u0e10\n\u009d\3\u009e\3\u009e\3\u009e"+
		"\3\u009e\5\u009e\u0e16\n\u009e\3\u009e\3\u009e\3\u009e\3\u009e\3\u009e"+
		"\3\u009e\5\u009e\u0e1e\n\u009e\3\u009e\7\u009e\u0e21\n\u009e\f\u009e\16"+
		"\u009e\u0e24\13\u009e\5\u009e\u0e26\n\u009e\3\u009e\3\u009e\3\u009e\3"+
		"\u009e\7\u009e\u0e2c\n\u009e\f\u009e\16\u009e\u0e2f\13\u009e\5\u009e\u0e31"+
		"\n\u009e\3\u009e\3\u009e\3\u009e\5\u009e\u0e36\n\u009e\3\u009e\3\u009e"+
		"\3\u009e\5\u009e\u0e3b\n\u009e\3\u009e\3\u009e\3\u009e\5\u009e\u0e40\n"+
		"\u009e\3\u009e\3\u009e\3\u009e\5\u009e\u0e45\n\u009e\3\u009e\3\u009e\3"+
		"\u009e\5\u009e\u0e4a\n\u009e\3\u009e\3\u009e\3\u009e\5\u009e\u0e4f\n\u009e"+
		"\3\u009e\3\u009e\5\u009e\u0e53\n\u009e\3\u009e\3\u009e\3\u009e\5\u009e"+
		"\u0e58\n\u009e\3\u009f\3\u009f\3\u009f\3\u009f\3\u009f\3\u009f\3\u009f"+
		"\3\u009f\3\u009f\5\u009f\u0e63\n\u009f\3\u009f\7\u009f\u0e66\n\u009f\f"+
		"\u009f\16\u009f\u0e69\13\u009f\5\u009f\u0e6b\n\u009f\3\u009f\5\u009f\u0e6e"+
		"\n\u009f\3\u009f\3\u009f\3\u009f\5\u009f\u0e73\n\u009f\3\u009f\5\u009f"+
		"\u0e76\n\u009f\3\u009f\3\u009f\3\u009f\5\u009f\u0e7b\n\u009f\3\u009f\5"+
		"\u009f\u0e7e\n\u009f\3\u009f\3\u009f\3\u009f\5\u009f\u0e83\n\u009f\3\u009f"+
		"\5\u009f\u0e86\n\u009f\3\u009f\3\u009f\3\u009f\5\u009f\u0e8b\n\u009f\3"+
		"\u009f\5\u009f\u0e8e\n\u009f\3\u009f\3\u009f\3\u009f\5\u009f\u0e93\n\u009f"+
		"\3\u009f\5\u009f\u0e96\n\u009f\3\u009f\3\u009f\3\u009f\5\u009f\u0e9b\n"+
		"\u009f\3\u009f\3\u009f\3\u009f\3\u009f\5\u009f\u0ea1\n\u009f\3\u009f\3"+
		"\u009f\3\u009f\5\u009f\u0ea6\n\u009f\3\u009f\5\u009f\u0ea9\n\u009f\3\u009f"+
		"\3\u009f\3\u009f\5\u009f\u0eae\n\u009f\3\u009f\3\u009f\3\u009f\3\u009f"+
		"\3\u009f\5\u009f\u0eb5\n\u009f\5\u009f\u0eb7\n\u009f\3\u00a0\3\u00a0\3"+
		"\u00a0\3\u00a0\5\u00a0\u0ebd\n\u00a0\3\u00a0\3\u00a0\3\u00a0\3\u00a0\3"+
		"\u00a0\3\u00a0\3\u00a0\5\u00a0\u0ec6\n\u00a0\3\u00a0\3\u00a0\3\u00a0\5"+
		"\u00a0\u0ecb\n\u00a0\5\u00a0\u0ecd\n\u00a0\3\u00a1\3\u00a1\3\u00a1\3\u00a1"+
		"\3\u00a1\3\u00a1\3\u00a1\3\u00a1\3\u00a1\3\u00a1\5\u00a1\u0ed9\n\u00a1"+
		"\3\u00a2\3\u00a2\3\u00a2\3\u00a2\5\u00a2\u0edf\n\u00a2\3\u00a2\3\u00a2"+
		"\3\u00a2\3\u00a2\3\u00a2\3\u00a2\3\u00a2\3\u00a2\7\u00a2\u0ee9\n\u00a2"+
		"\f\u00a2\16\u00a2\u0eec\13\u00a2\5\u00a2\u0eee\n\u00a2\3\u00a2\3\u00a2"+
		"\3\u00a2\5\u00a2\u0ef3\n\u00a2\5\u00a2\u0ef5\n\u00a2\3\u00a3\3\u00a3\3"+
		"\u00a3\3\u00a3\3\u00a3\3\u00a3\3\u00a3\3\u00a3\5\u00a3\u0eff\n\u00a3\3"+
		"\u00a3\3\u00a3\3\u00a3\5\u00a3\u0f04\n\u00a3\5\u00a3\u0f06\n\u00a3\3\u00a3"+
		"\3\u00a3\5\u00a3\u0f0a\n\u00a3\3\u00a4\3\u00a4\3\u00a4\3\u00a4\5\u00a4"+
		"\u0f10\n\u00a4\3\u00a4\3\u00a4\3\u00a4\3\u00a4\3\u00a4\3\u00a4\3\u00a4"+
		"\3\u00a4\3\u00a4\3\u00a4\3\u00a4\3\u00a4\3\u00a4\3\u00a4\3\u00a4\3\u00a4"+
		"\5\u00a4\u0f22\n\u00a4\5\u00a4\u0f24\n\u00a4\3\u00a5\3\u00a5\3\u00a5\3"+
		"\u00a5\3\u00a5\3\u00a5\3\u00a5\3\u00a5\3\u00a5\3\u00a6\3\u00a6\3\u00a6"+
		"\3\u00a6\5\u00a6\u0f33\n\u00a6\3\u00a6\3\u00a6\3\u00a6\3\u00a6\3\u00a6"+
		"\3\u00a6\3\u00a6\3\u00a6\3\u00a6\3\u00a6\3\u00a6\3\u00a6\3\u00a6\3\u00a6"+
		"\3\u00a6\3\u00a6\5\u00a6\u0f45\n\u00a6\3\u00a6\3\u00a6\3\u00a6\3\u00a6"+
		"\3\u00a6\3\u00a6\5\u00a6\u0f4d\n\u00a6\3\u00a7\3\u00a7\3\u00a7\3\u00a7"+
		"\3\u00a7\3\u00a7\3\u00a7\3\u00a7\5\u00a7\u0f57\n\u00a7\3\u00a8\3\u00a8"+
		"\3\u00a8\3\u00a8\3\u00a8\3\u00a8\3\u00a8\3\u00a8\3\u00a8\3\u00a8\3\u00a8"+
		"\3\u00a8\3\u00a8\3\u00a8\5\u00a8\u0f67\n\u00a8\3\u00a9\3\u00a9\3\u00a9"+
		"\3\u00a9\3\u00a9\3\u00a9\3\u00a9\3\u00a9\3\u00a9\3\u00a9\3\u00a9\3\u00a9"+
		"\3\u00aa\3\u00aa\3\u00aa\3\u00aa\3\u00aa\3\u00aa\3\u00aa\5\u00aa\u0f7c"+
		"\n\u00aa\3\u00ab\3\u00ab\3\u00ab\3\u00ab\3\u00ab\3\u00ab\3\u00ab\3\u00ab"+
		"\3\u00ab\5\u00ab\u0f87\n\u00ab\3\u00ab\3\u00ab\3\u00ab\3\u00ab\5\u00ab"+
		"\u0f8d\n\u00ab\3\u00ac\3\u00ac\3\u00ac\3\u00ac\3\u00ac\3\u00ac\3\u00ac"+
		"\5\u00ac\u0f96\n\u00ac\3\u00ac\3\u00ac\3\u00ac\3\u00ac\3\u00ac\3\u00ac"+
		"\3\u00ac\5\u00ac\u0f9f\n\u00ac\3\u00ac\3\u00ac\3\u00ac\3\u00ac\5\u00ac"+
		"\u0fa5\n\u00ac\3\u00ad\3\u00ad\3\u00ad\3\u00ad\3\u00ad\3\u00ad\3\u00ad"+
		"\5\u00ad\u0fae\n\u00ad\3\u00ad\3\u00ad\3\u00ad\5\u00ad\u0fb3\n\u00ad\3"+
		"\u00ad\5\u00ad\u0fb6\n\u00ad\3\u00ad\3\u00ad\3\u00ad\5\u00ad\u0fbb\n\u00ad"+
		"\3\u00ad\5\u00ad\u0fbe\n\u00ad\3\u00ad\3\u00ad\3\u00ad\5\u00ad\u0fc3\n"+
		"\u00ad\3\u00ad\5\u00ad\u0fc6\n\u00ad\3\u00ad\3\u00ad\3\u00ad\3\u00ad\3"+
		"\u00ad\3\u00ad\5\u00ad\u0fce\n\u00ad\3\u00ad\3\u00ad\3\u00ad\3\u00ad\5"+
		"\u00ad\u0fd4\n\u00ad\6\u00ad\u0fd6\n\u00ad\r\u00ad\16\u00ad\u0fd7\3\u00ad"+
		"\3\u00ad\3\u00ad\3\u00ad\3\u00ad\5\u00ad\u0fdf\n\u00ad\3\u00ad\3\u00ad"+
		"\3\u00ad\3\u00ad\5\u00ad\u0fe5\n\u00ad\6\u00ad\u0fe7\n\u00ad\r\u00ad\16"+
		"\u00ad\u0fe8\3\u00ad\5\u00ad\u0fec\n\u00ad\5\u00ad\u0fee\n\u00ad\3\u00ad"+
		"\5\u00ad\u0ff1\n\u00ad\3\u00ad\3\u00ad\3\u00ad\5\u00ad\u0ff6\n\u00ad\3"+
		"\u00ad\5\u00ad\u0ff9\n\u00ad\3\u00ad\3\u00ad\3\u00ad\5\u00ad\u0ffe\n\u00ad"+
		"\3\u00ad\5\u00ad\u1001\n\u00ad\3\u00ad\3\u00ad\3\u00ad\5\u00ad\u1006\n"+
		"\u00ad\3\u00ad\5\u00ad\u1009\n\u00ad\3\u00ad\3\u00ad\3\u00ad\5\u00ad\u100e"+
		"\n\u00ad\3\u00ad\5\u00ad\u1011\n\u00ad\3\u00ae\3\u00ae\3\u00ae\3\u00ae"+
		"\3\u00ae\3\u00ae\3\u00ae\3\u00ae\3\u00ae\3\u00ae\3\u00ae\3\u00ae\3\u00ae"+
		"\5\u00ae\u1020\n\u00ae\3\u00ae\3\u00ae\3\u00ae\3\u00ae\3\u00ae\3\u00ae"+
		"\3\u00ae\3\u00ae\3\u00ae\5\u00ae\u102b\n\u00ae\3\u00af\3\u00af\3\u00af"+
		"\3\u00af\3\u00af\3\u00af\3\u00af\3\u00af\3\u00af\3\u00af\5\u00af\u1037"+
		"\n\u00af\3\u00b0\3\u00b0\3\u00b0\3\u00b0\3\u00b0\5\u00b0\u103e\n\u00b0"+
		"\3\u00b1\3\u00b1\3\u00b1\3\u00b1\3\u00b1\5\u00b1\u1045\n\u00b1\3\u00b1"+
		"\3\u00b1\5\u00b1\u1049\n\u00b1\3\u00b1\3\u00b1\3\u00b1\5\u00b1\u104e\n"+
		"\u00b1\3\u00b1\5\u00b1\u1051\n\u00b1\3\u00b1\3\u00b1\3\u00b1\5\u00b1\u1056"+
		"\n\u00b1\3\u00b1\5\u00b1\u1059\n\u00b1\3\u00b1\3\u00b1\3\u00b1\5\u00b1"+
		"\u105e\n\u00b1\3\u00b1\5\u00b1\u1061\n\u00b1\3\u00b1\3\u00b1\3\u00b1\3"+
		"\u00b1\3\u00b1\3\u00b1\3\u00b1\5\u00b1\u106a\n\u00b1\3\u00b2\3\u00b2\3"+
		"\u00b2\3\u00b2\3\u00b2\5\u00b2\u1071\n\u00b2\3\u00b2\3\u00b2\3\u00b2\3"+
		"\u00b2\3\u00b3\3\u00b3\3\u00b3\3\u00b3\3\u00b3\3\u00b3\3\u00b3\3\u00b3"+
		"\3\u00b3\5\u00b3\u1080\n\u00b3\3\u00b3\3\u00b3\5\u00b3\u1084\n\u00b3\3"+
		"\u00b3\3\u00b3\3\u00b3\5\u00b3\u1089\n\u00b3\3\u00b4\3\u00b4\3\u00b4\3"+
		"\u00b4\3\u00b4\3\u00b4\3\u00b4\3\u00b4\3\u00b4\5\u00b4\u1094\n\u00b4\3"+
		"\u00b4\3\u00b4\3\u00b4\3\u00b4\3\u00b4\3\u00b4\3\u00b4\3\u00b4\5\u00b4"+
		"\u109e\n\u00b4\3\u00b4\3\u00b4\3\u00b4\3\u00b4\3\u00b4\3\u00b4\3\u00b4"+
		"\3\u00b4\3\u00b4\3\u00b4\5\u00b4\u10aa\n\u00b4\3\u00b4\3\u00b4\3\u00b4"+
		"\3\u00b4\7\u00b4\u10b0\n\u00b4\f\u00b4\16\u00b4\u10b3\13\u00b4\3\u00b5"+
		"\3\u00b5\3\u00b5\3\u00b5\3\u00b5\5\u00b5\u10ba\n\u00b5\3\u00b6\3\u00b6"+
		"\3\u00b6\3\u00b6\3\u00b6\3\u00b6\3\u00b6\5\u00b6\u10c3\n\u00b6\3\u00b6"+
		"\3\u00b6\3\u00b6\5\u00b6\u10c8\n\u00b6\3\u00b7\3\u00b7\3\u00b7\3\u00b7"+
		"\3\u00b7\3\u00b7\3\u00b7\3\u00b7\3\u00b7\5\u00b7\u10d3\n\u00b7\3\u00b7"+
		"\5\u00b7\u10d6\n\u00b7\3\u00b7\3\u00b7\5\u00b7\u10da\n\u00b7\3\u00b8\3"+
		"\u00b8\3\u00b8\3\u00b8\3\u00b8\3\u00b8\5\u00b8\u10e2\n\u00b8\3\u00b8\3"+
		"\u00b8\5\u00b8\u10e6\n\u00b8\3\u00b8\3\u00b8\5\u00b8\u10ea\n\u00b8\3\u00b8"+
		"\3\u00b8\3\u00b8\3\u00b8\3\u00b8\3\u00b8\5\u00b8\u10f2\n\u00b8\3\u00b8"+
		"\6\u00b8\u10f5\n\u00b8\r\u00b8\16\u00b8\u10f6\3\u00b8\3\u00b8\3\u00b8"+
		"\3\u00b8\3\u00b8\3\u00b8\5\u00b8\u10ff\n\u00b8\3\u00b8\3\u00b8\3\u00b8"+
		"\5\u00b8\u1104\n\u00b8\3\u00b8\3\u00b8\7\u00b8\u1108\n\u00b8\f\u00b8\16"+
		"\u00b8\u110b\13\u00b8\6\u00b8\u110d\n\u00b8\r\u00b8\16\u00b8\u110e\3\u00b8"+
		"\3\u00b8\3\u00b8\3\u00b8\3\u00b8\3\u00b8\3\u00b8\5\u00b8\u1118\n\u00b8"+
		"\3\u00b8\5\u00b8\u111b\n\u00b8\3\u00b8\3\u00b8\3\u00b8\5\u00b8\u1120\n"+
		"\u00b8\3\u00b9\3\u00b9\3\u00b9\3\u00b9\3\u00b9\5\u00b9\u1127\n\u00b9\3"+
		"\u00b9\3\u00b9\3\u00b9\3\u00b9\5\u00b9\u112d\n\u00b9\5\u00b9\u112f\n\u00b9"+
		"\3\u00b9\3\u00b9\3\u00b9\5\u00b9\u1134\n\u00b9\3\u00b9\3\u00b9\3\u00b9"+
		"\3\u00b9\5\u00b9\u113a\n\u00b9\3\u00b9\3\u00b9\3\u00b9\3\u00b9\5\u00b9"+
		"\u1140\n\u00b9\3\u00b9\3\u00b9\3\u00b9\5\u00b9\u1145\n\u00b9\3\u00b9\3"+
		"\u00b9\3\u00b9\3\u00b9\5\u00b9\u114b\n\u00b9\3\u00ba\3\u00ba\3\u00ba\3"+
		"\u00ba\3\u00ba\5\u00ba\u1152\n\u00ba\3\u00ba\3\u00ba\3\u00ba\5\u00ba\u1157"+
		"\n\u00ba\3\u00ba\3\u00ba\3\u00ba\5\u00ba\u115c\n\u00ba\3\u00ba\3\u00ba"+
		"\3\u00ba\5\u00ba\u1161\n\u00ba\3\u00ba\5\u00ba\u1164\n\u00ba\3\u00ba\3"+
		"\u00ba\5\u00ba\u1168\n\u00ba\3\u00ba\3\u00ba\5\u00ba\u116c\n\u00ba\3\u00ba"+
		"\3\u00ba\5\u00ba\u1170\n\u00ba\3\u00ba\3\u00ba\5\u00ba\u1174\n\u00ba\3"+
		"\u00ba\3\u00ba\3\u00ba\5\u00ba\u1179\n\u00ba\3\u00ba\3\u00ba\5\u00ba\u117d"+
		"\n\u00ba\3\u00ba\3\u00ba\5\u00ba\u1181\n\u00ba\3\u00bb\3\u00bb\3\u00bb"+
		"\3\u00bb\3\u00bb\3\u00bb\3\u00bb\3\u00bb\5\u00bb\u118b\n\u00bb\3\u00bb"+
		"\3\u00bb\3\u00bb\3\u00bb\5\u00bb\u1191\n\u00bb\3\u00bb\3\u00bb\3\u00bb"+
		"\3\u00bb\3\u00bb\5\u00bb\u1198\n\u00bb\3\u00bb\5\u00bb\u119b\n\u00bb\3"+
		"\u00bb\3\u00bb\3\u00bb\3\u00bb\5\u00bb\u11a1\n\u00bb\3\u00bb\3\u00bb\3"+
		"\u00bb\3\u00bb\5\u00bb\u11a7\n\u00bb\3\u00bb\3\u00bb\3\u00bb\7\u00bb\u11ac"+
		"\n\u00bb\f\u00bb\16\u00bb\u11af\13\u00bb\3\u00bb\3\u00bb\3\u00bb\5\u00bb"+
		"\u11b4\n\u00bb\5\u00bb\u11b6\n\u00bb\3\u00bb\3\u00bb\3\u00bb\5\u00bb\u11bb"+
		"\n\u00bb\3\u00bb\3\u00bb\3\u00bb\3\u00bb\5\u00bb\u11c1\n\u00bb\3\u00bb"+
		"\3\u00bb\3\u00bb\3\u00bb\5\u00bb\u11c7\n\u00bb\3\u00bb\3\u00bb\3\u00bb"+
		"\7\u00bb\u11cc\n\u00bb\f\u00bb\16\u00bb\u11cf\13\u00bb\3\u00bb\5\u00bb"+
		"\u11d2\n\u00bb\3\u00bb\3\u00bb\5\u00bb\u11d6\n\u00bb\3\u00bb\5\u00bb\u11d9"+
		"\n\u00bb\3\u00bb\3\u00bb\3\u00bb\3\u00bb\3\u00bb\3\u00bb\3\u00bb\3\u00bb"+
		"\3\u00bb\3\u00bb\3\u00bb\3\u00bb\5\u00bb\u11e7\n\u00bb\3\u00bb\3\u00bb"+
		"\3\u00bb\5\u00bb\u11ec\n\u00bb\3\u00bb\3\u00bb\5\u00bb\u11f0\n\u00bb\3"+
		"\u00bb\3\u00bb\3\u00bb\3\u00bb\3\u00bb\3\u00bb\3\u00bb\3\u00bb\3\u00bb"+
		"\3\u00bb\3\u00bb\5\u00bb\u11fd\n\u00bb\3\u00bb\5\u00bb\u1200\n\u00bb\5"+
		"\u00bb\u1202\n\u00bb\3\u00bb\3\u00bb\3\u00bb\3\u00bb\3\u00bb\3\u00bb\5"+
		"\u00bb\u120a\n\u00bb\3\u00bc\3\u00bc\3\u00bc\3\u00bc\3\u00bc\3\u00bc\3"+
		"\u00bc\3\u00bc\5\u00bc\u1214\n\u00bc\3\u00bc\3\u00bc\3\u00bc\3\u00bc\5"+
		"\u00bc\u121a\n\u00bc\3\u00bc\3\u00bc\3\u00bc\3\u00bc\3\u00bc\5\u00bc\u1221"+
		"\n\u00bc\3\u00bc\5\u00bc\u1224\n\u00bc\3\u00bc\3\u00bc\3\u00bc\3\u00bc"+
		"\5\u00bc\u122a\n\u00bc\3\u00bc\3\u00bc\3\u00bc\3\u00bc\5\u00bc\u1230\n"+
		"\u00bc\3\u00bc\3\u00bc\3\u00bc\7\u00bc\u1235\n\u00bc\f\u00bc\16\u00bc"+
		"\u1238\13\u00bc\3\u00bc\3\u00bc\3\u00bc\5\u00bc\u123d\n\u00bc\5\u00bc"+
		"\u123f\n\u00bc\3\u00bc\3\u00bc\3\u00bc\5\u00bc\u1244\n\u00bc\3\u00bc\3"+
		"\u00bc\3\u00bc\3\u00bc\5\u00bc\u124a\n\u00bc\3\u00bc\3\u00bc\3\u00bc\3"+
		"\u00bc\5\u00bc\u1250\n\u00bc\3\u00bc\3\u00bc\3\u00bc\3\u00bc\5\u00bc\u1256"+
		"\n\u00bc\3\u00bc\3\u00bc\3\u00bc\7\u00bc\u125b\n\u00bc\f\u00bc\16\u00bc"+
		"\u125e\13\u00bc\3\u00bc\5\u00bc\u1261\n\u00bc\3\u00bc\3\u00bc\5\u00bc"+
		"\u1265\n\u00bc\3\u00bc\5\u00bc\u1268\n\u00bc\3\u00bc\3\u00bc\3\u00bc\3"+
		"\u00bc\3\u00bc\3\u00bc\3\u00bc\3\u00bc\3\u00bc\3\u00bc\3\u00bc\3\u00bc"+
		"\5\u00bc\u1276\n\u00bc\3\u00bc\3\u00bc\3\u00bc\5\u00bc\u127b\n\u00bc\3"+
		"\u00bc\3\u00bc\5\u00bc\u127f\n\u00bc\3\u00bc\3\u00bc\3\u00bc\3\u00bc\3"+
		"\u00bc\3\u00bc\3\u00bc\3\u00bc\3\u00bc\3\u00bc\3\u00bc\5\u00bc\u128c\n"+
		"\u00bc\3\u00bc\5\u00bc\u128f\n\u00bc\5\u00bc\u1291\n\u00bc\3\u00bc\3\u00bc"+
		"\3\u00bc\3\u00bc\3\u00bc\3\u00bc\5\u00bc\u1299\n\u00bc\3\u00bd\3\u00bd"+
		"\3\u00bd\3\u00bd\3\u00bd\3\u00bd\3\u00bd\3\u00bd\3\u00bd\5\u00bd\u12a4"+
		"\n\u00bd\3\u00bd\3\u00bd\3\u00bd\3\u00bd\3\u00bd\7\u00bd\u12ab\n\u00bd"+
		"\f\u00bd\16\u00bd\u12ae\13\u00bd\3\u00bd\3\u00bd\3\u00bd\3\u00bd\3\u00bd"+
		"\3\u00bd\5\u00bd\u12b6\n\u00bd\3\u00be\3\u00be\3\u00be\3\u00be\3\u00be"+
		"\3\u00be\3\u00be\3\u00be\3\u00be\5\u00be\u12c1\n\u00be\3\u00be\3\u00be"+
		"\3\u00be\3\u00be\3\u00be\7\u00be\u12c8\n\u00be\f\u00be\16\u00be\u12cb"+
		"\13\u00be\3\u00be\3\u00be\3\u00be\3\u00be\3\u00be\3\u00be\5\u00be\u12d3"+
		"\n\u00be\3\u00bf\3\u00bf\3\u00bf\3\u00bf\3\u00bf\3\u00bf\3\u00bf\3\u00bf"+
		"\3\u00bf\3\u00bf\5\u00bf\u12df\n\u00bf\3\u00bf\3\u00bf\5\u00bf\u12e3\n"+
		"\u00bf\3\u00bf\3\u00bf\3\u00bf\6\u00bf\u12e8\n\u00bf\r\u00bf\16\u00bf"+
		"\u12e9\5\u00bf\u12ec\n\u00bf\3\u00bf\3\u00bf\3\u00bf\5\u00bf\u12f1\n\u00bf"+
		"\3\u00bf\3\u00bf\5\u00bf\u12f5\n\u00bf\3\u00bf\3\u00bf\3\u00bf\6\u00bf"+
		"\u12fa\n\u00bf\r\u00bf\16\u00bf\u12fb\5\u00bf\u12fe\n\u00bf\3\u00bf\3"+
		"\u00bf\3\u00bf\3\u00bf\3\u00bf\3\u00bf\3\u00bf\3\u00bf\3\u00bf\3\u00bf"+
		"\3\u00bf\3\u00bf\5\u00bf\u130c\n\u00bf\3\u00bf\3\u00bf\3\u00bf\5\u00bf"+
		"\u1311\n\u00bf\3\u00bf\3\u00bf\3\u00bf\3\u00bf\3\u00bf\3\u00bf\3\u00bf"+
		"\3\u00bf\3\u00bf\3\u00bf\3\u00bf\3\u00bf\3\u00bf\3\u00bf\3\u00bf\3\u00bf"+
		"\3\u00bf\3\u00bf\3\u00bf\3\u00bf\5\u00bf\u1327\n\u00bf\3\u00bf\3\u00bf"+
		"\3\u00bf\3\u00bf\3\u00bf\3\u00bf\3\u00bf\3\u00bf\3\u00bf\3\u00bf\3\u00bf"+
		"\3\u00bf\3\u00bf\3\u00bf\3\u00bf\3\u00bf\3\u00bf\3\u00bf\3\u00bf\3\u00bf"+
		"\5\u00bf\u133d\n\u00bf\3\u00bf\3\u00bf\3\u00bf\5\u00bf\u1342\n\u00bf\3"+
		"\u00c0\3\u00c0\3\u00c0\3\u00c0\3\u00c0\3\u00c0\3\u00c0\3\u00c0\3\u00c0"+
		"\3\u00c0\3\u00c0\5\u00c0\u134f\n\u00c0\3\u00c1\3\u00c1\3\u00c1\3\u00c1"+
		"\3\u00c1\3\u00c1\5\u00c1\u1357\n\u00c1\3\u00c2\3\u00c2\3\u00c2\3\u00c2"+
		"\3\u00c2\3\u00c2\3\u00c2\3\u00c2\3\u00c3\3\u00c3\3\u00c3\3\u00c3\3\u00c3"+
		"\3\u00c3\3\u00c3\3\u00c3\3\u00c3\3\u00c3\5\u00c3\u136b\n\u00c3\3\u00c3"+
		"\5\u00c3\u136e\n\u00c3\3\u00c3\3\u00c3\7\u00c3\u1372\n\u00c3\f\u00c3\16"+
		"\u00c3\u1375\13\u00c3\3\u00c4\3\u00c4\3\u00c4\3\u00c4\3\u00c4\5\u00c4"+
		"\u137c\n\u00c4\3\u00c4\3\u00c4\3\u00c4\3\u00c4\3\u00c4\5\u00c4\u1383\n"+
		"\u00c4\3\u00c4\3\u00c4\3\u00c4\5\u00c4\u1388\n\u00c4\3\u00c4\3\u00c4\5"+
		"\u00c4\u138c\n\u00c4\6\u00c4\u138e\n\u00c4\r\u00c4\16\u00c4\u138f\3\u00c4"+
		"\5\u00c4\u1393\n\u00c4\3\u00c5\3\u00c5\3\u00c5\3\u00c5\3\u00c5\5\u00c5"+
		"\u139a\n\u00c5\3\u00c5\3\u00c5\3\u00c5\3\u00c5\3\u00c5\3\u00c5\3\u00c5"+
		"\3\u00c5\3\u00c5\3\u00c5\3\u00c5\3\u00c5\3\u00c5\3\u00c5\3\u00c5\3\u00c5"+
		"\5\u00c5\u13ac\n\u00c5\5\u00c5\u13ae\n\u00c5\3\u00c6\3\u00c6\3\u00c6\3"+
		"\u00c6\3\u00c6\3\u00c6\3\u00c6\3\u00c6\3\u00c6\3\u00c6\3\u00c6\3\u00c6"+
		"\3\u00c6\3\u00c6\3\u00c6\3\u00c6\3\u00c6\3\u00c6\5\u00c6\u13c2\n\u00c6"+
		"\3\u00c7\3\u00c7\3\u00c7\3\u00c7\3\u00c7\3\u00c7\5\u00c7\u13ca\n\u00c7"+
		"\3\u00c7\3\u00c7\3\u00c7\5\u00c7\u13cf\n\u00c7\3\u00c7\3\u00c7\3\u00c7"+
		"\3\u00c7\3\u00c7\3\u00c7\3\u00c7\3\u00c7\3\u00c7\3\u00c7\3\u00c7\3\u00c7"+
		"\3\u00c7\3\u00c7\3\u00c7\3\u00c7\5\u00c7\u13e1\n\u00c7\3\u00c7\3\u00c7"+
		"\3\u00c7\3\u00c7\3\u00c7\3\u00c7\3\u00c7\3\u00c7\3\u00c7\3\u00c7\3\u00c7"+
		"\3\u00c7\3\u00c7\5\u00c7\u13f0\n\u00c7\5\u00c7\u13f2\n\u00c7\3\u00c8\3"+
		"\u00c8\3\u00c8\3\u00c8\3\u00c8\5\u00c8\u13f9\n\u00c8\3\u00c8\3\u00c8\3"+
		"\u00c8\3\u00c8\3\u00c8\5\u00c8\u1400\n\u00c8\3\u00c8\3\u00c8\3\u00c8\5"+
		"\u00c8\u1405\n\u00c8\3\u00c8\3\u00c8\3\u00c8\5\u00c8\u140a\n\u00c8\3\u00c8"+
		"\3\u00c8\3\u00c8\3\u00c8\5\u00c8\u1410\n\u00c8\3\u00c8\3\u00c8\3\u00c8"+
		"\5\u00c8\u1415\n\u00c8\5\u00c8\u1417\n\u00c8\3\u00c9\3\u00c9\3\u00c9\3"+
		"\u00c9\3\u00c9\5\u00c9\u141e\n\u00c9\3\u00c9\3\u00c9\3\u00c9\3\u00c9\5"+
		"\u00c9\u1424\n\u00c9\3\u00c9\3\u00c9\3\u00c9\3\u00c9\5\u00c9\u142a\n\u00c9"+
		"\3\u00c9\5\u00c9\u142d\n\u00c9\3\u00c9\3\u00c9\3\u00c9\3\u00c9\5\u00c9"+
		"\u1433\n\u00c9\3\u00c9\3\u00c9\3\u00c9\3\u00c9\3\u00c9\3\u00c9\6\u00c9"+
		"\u143b\n\u00c9\r\u00c9\16\u00c9\u143c\3\u00c9\5\u00c9\u1440\n\u00c9\3"+
		"\u00c9\3\u00c9\3\u00c9\3\u00c9\3\u00c9\5\u00c9\u1447\n\u00c9\3\u00c9\5"+
		"\u00c9\u144a\n\u00c9\3\u00c9\3\u00c9\3\u00c9\6\u00c9\u144f\n\u00c9\r\u00c9"+
		"\16\u00c9\u1450\3\u00ca\3\u00ca\3\u00ca\3\u00ca\3\u00ca\3\u00ca\5\u00ca"+
		"\u1459\n\u00ca\3\u00ca\3\u00ca\5\u00ca\u145d\n\u00ca\3\u00ca\3\u00ca\3"+
		"\u00ca\3\u00ca\5\u00ca\u1463\n\u00ca\3\u00ca\3\u00ca\3\u00ca\7\u00ca\u1468"+
		"\n\u00ca\f\u00ca\16\u00ca\u146b\13\u00ca\5\u00ca\u146d\n\u00ca\3\u00ca"+
		"\3\u00ca\3\u00ca\3\u00ca\3\u00ca\5\u00ca\u1474\n\u00ca\3\u00ca\3\u00ca"+
		"\3\u00ca\3\u00ca\5\u00ca\u147a\n\u00ca\3\u00ca\3\u00ca\3\u00ca\3\u00ca"+
		"\3\u00ca\5\u00ca\u1481\n\u00ca\3\u00ca\5\u00ca\u1484\n\u00ca\3\u00ca\3"+
		"\u00ca\3\u00ca\3\u00ca\5\u00ca\u148a\n\u00ca\3\u00ca\3\u00ca\3\u00ca\7"+
		"\u00ca\u148f\n\u00ca\f\u00ca\16\u00ca\u1492\13\u00ca\5\u00ca\u1494\n\u00ca"+
		"\3\u00ca\3\u00ca\3\u00ca\3\u00ca\3\u00ca\3\u00ca\5\u00ca\u149c\n\u00ca"+
		"\3\u00ca\3\u00ca\3\u00ca\3\u00ca\5\u00ca\u14a2\n\u00ca\3\u00ca\3\u00ca"+
		"\3\u00ca\3\u00ca\3\u00ca\5\u00ca\u14a9\n\u00ca\3\u00ca\5\u00ca\u14ac\n"+
		"\u00ca\3\u00ca\3\u00ca\3\u00ca\3\u00ca\5\u00ca\u14b2\n\u00ca\3\u00ca\3"+
		"\u00ca\3\u00ca\7\u00ca\u14b7\n\u00ca\f\u00ca\16\u00ca\u14ba\13\u00ca\3"+
		"\u00ca\3\u00ca\3\u00ca\3\u00ca\3\u00ca\5\u00ca\u14c1\n\u00ca\3\u00ca\3"+
		"\u00ca\3\u00ca\3\u00ca\3\u00ca\3\u00ca\5\u00ca\u14c9\n\u00ca\3\u00ca\3"+
		"\u00ca\3\u00ca\3\u00ca\5\u00ca\u14cf\n\u00ca\3\u00ca\3\u00ca\3\u00ca\7"+
		"\u00ca\u14d4\n\u00ca\f\u00ca\16\u00ca\u14d7\13\u00ca\3\u00ca\3\u00ca\3"+
		"\u00ca\3\u00ca\3\u00ca\3\u00ca\3\u00ca\5\u00ca\u14e0\n\u00ca\3\u00ca\3"+
		"\u00ca\3\u00ca\5\u00ca\u14e5\n\u00ca\3\u00cb\3\u00cb\3\u00cb\3\u00cb\3"+
		"\u00cb\3\u00cb\3\u00cb\3\u00cb\5\u00cb\u14ef\n\u00cb\3\u00cb\3\u00cb\3"+
		"\u00cb\3\u00cb\5\u00cb\u14f5\n\u00cb\3\u00cb\3\u00cb\3\u00cb\3\u00cb\3"+
		"\u00cb\3\u00cb\3\u00cb\3\u00cb\3\u00cb\3\u00cb\5\u00cb\u1501\n\u00cb\5"+
		"\u00cb\u1503\n\u00cb\3\u00cc\3\u00cc\3\u00cc\3\u00cc\3\u00cc\5\u00cc\u150a"+
		"\n\u00cc\3\u00cc\3\u00cc\3\u00cc\3\u00cc\5\u00cc\u1510\n\u00cc\3\u00cc"+
		"\3\u00cc\3\u00cc\3\u00cc\5\u00cc\u1516\n\u00cc\3\u00cc\3\u00cc\3\u00cc"+
		"\3\u00cc\5\u00cc\u151c\n\u00cc\3\u00cc\3\u00cc\3\u00cc\6\u00cc\u1521\n"+
		"\u00cc\r\u00cc\16\u00cc\u1522\3\u00cd\3\u00cd\3\u00cd\3\u00cd\3\u00cd"+
		"\5\u00cd\u152a\n\u00cd\3\u00cd\3\u00cd\3\u00cd\3\u00cd\3\u00cd\3\u00cd"+
		"\5\u00cd\u1532\n\u00cd\3\u00cd\3\u00cd\3\u00cd\3\u00cd\5\u00cd\u1538\n"+
		"\u00cd\3\u00cd\3\u00cd\3\u00cd\3\u00cd\3\u00cd\3\u00cd\3\u00cd\3\u00cd"+
		"\3\u00cd\3\u00cd\3\u00cd\3\u00cd\6\u00cd\u1546\n\u00cd\r\u00cd\16\u00cd"+
		"\u1547\3\u00cd\5\u00cd\u154b\n\u00cd\3\u00cd\3\u00cd\3\u00cd\5\u00cd\u1550"+
		"\n\u00cd\5\u00cd\u1552\n\u00cd\3\u00ce\3\u00ce\3\u00ce\3\u00ce\3\u00ce"+
		"\3\u00ce\3\u00ce\3\u00ce\3\u00ce\3\u00ce\5\u00ce\u155e\n\u00ce\3\u00ce"+
		"\3\u00ce\3\u00ce\3\u00ce\5\u00ce\u1564\n\u00ce\3\u00ce\3\u00ce\3\u00ce"+
		"\3\u00ce\3\u00ce\3\u00ce\3\u00ce\3\u00ce\3\u00ce\3\u00ce\3\u00ce\3\u00ce"+
		"\6\u00ce\u1572\n\u00ce\r\u00ce\16\u00ce\u1573\3\u00ce\5\u00ce\u1577\n"+
		"\u00ce\3\u00ce\3\u00ce\3\u00ce\5\u00ce\u157c\n\u00ce\3\u00ce\5\u00ce\u157f"+
		"\n\u00ce\3\u00ce\3\u00ce\3\u00ce\5\u00ce\u1584\n\u00ce\5\u00ce\u1586\n"+
		"\u00ce\3\u00cf\3\u00cf\3\u00cf\3\u00cf\3\u00cf\3\u00cf\3\u00cf\5\u00cf"+
		"\u158f\n\u00cf\3\u00cf\3\u00cf\3\u00cf\3\u00cf\3\u00cf\5\u00cf\u1596\n"+
		"\u00cf\3\u00d0\3\u00d0\3\u00d0\3\u00d0\5\u00d0\u159c\n\u00d0\3\u00d0\5"+
		"\u00d0\u159f\n\u00d0\3\u00d0\3\u00d0\3\u00d0\5\u00d0\u15a4\n\u00d0\3\u00d1"+
		"\3\u00d1\3\u00d1\3\u00d1\3\u00d1\5\u00d1\u15ab\n\u00d1\5\u00d1\u15ad\n"+
		"\u00d1\3\u00d1\3\u00d1\3\u00d1\3\u00d1\5\u00d1\u15b3\n\u00d1\5\u00d1\u15b5"+
		"\n\u00d1\3\u00d1\3\u00d1\3\u00d1\3\u00d1\3\u00d1\3\u00d1\5\u00d1\u15bd"+
		"\n\u00d1\5\u00d1\u15bf\n\u00d1\3\u00d1\3\u00d1\3\u00d1\3\u00d1\5\u00d1"+
		"\u15c5\n\u00d1\5\u00d1\u15c7\n\u00d1\3\u00d1\3\u00d1\3\u00d1\3\u00d1\5"+
		"\u00d1\u15cd\n\u00d1\5\u00d1\u15cf\n\u00d1\3\u00d1\3\u00d1\3\u00d1\3\u00d1"+
		"\3\u00d1\5\u00d1\u15d6\n\u00d1\3\u00d1\5\u00d1\u15d9\n\u00d1\5\u00d1\u15db"+
		"\n\u00d1\3\u00d1\5\u00d1\u15de\n\u00d1\3\u00d1\3\u00d1\5\u00d1\u15e2\n"+
		"\u00d1\5\u00d1\u15e4\n\u00d1\3\u00d1\3\u00d1\3\u00d1\3\u00d1\3\u00d1\3"+
		"\u00d1\3\u00d1\5\u00d1\u15ed\n\u00d1\3\u00d2\3\u00d2\3\u00d2\3\u00d2\5"+
		"\u00d2\u15f3\n\u00d2\3\u00d2\3\u00d2\5\u00d2\u15f7\n\u00d2\3\u00d3\3\u00d3"+
		"\3\u00d3\3\u00d3\3\u00d3\3\u00d3\5\u00d3\u15ff\n\u00d3\3\u00d3\3\u00d3"+
		"\3\u00d3\3\u00d3\3\u00d3\5\u00d3\u1606\n\u00d3\3\u00d3\3\u00d3\3\u00d3"+
		"\3\u00d3\5\u00d3\u160c\n\u00d3\5\u00d3\u160e\n\u00d3\3\u00d4\3\u00d4\3"+
		"\u00d4\3\u00d4\3\u00d5\3\u00d5\3\u00d5\3\u00d5\3\u00d5\5\u00d5\u1619\n"+
		"\u00d5\3\u00d5\3\u00d5\3\u00d5\5\u00d5\u161e\n\u00d5\3\u00d5\3\u00d5\3"+
		"\u00d5\3\u00d5\5\u00d5\u1624\n\u00d5\6\u00d5\u1626\n\u00d5\r\u00d5\16"+
		"\u00d5\u1627\3\u00d5\3\u00d5\3\u00d6\3\u00d6\3\u00d6\3\u00d6\3\u00d6\3"+
		"\u00d6\5\u00d6\u1632\n\u00d6\3\u00d7\3\u00d7\3\u00d7\3\u00d7\3\u00d7\3"+
		"\u00d7\5\u00d7\u163a\n\u00d7\3\u00d7\3\u00d7\3\u00d7\3\u00d7\3\u00d7\3"+
		"\u00d7\3\u00d7\3\u00d7\3\u00d7\3\u00d7\5\u00d7\u1646\n\u00d7\3\u00d8\5"+
		"\u00d8\u1649\n\u00d8\3\u00d8\3\u00d8\3\u00d8\3\u00d8\3\u00d8\3\u00d8\5"+
		"\u00d8\u1651\n\u00d8\5\u00d8\u1653\n\u00d8\3\u00d8\5\u00d8\u1656\n\u00d8"+
		"\3\u00d8\3\u00d8\5\u00d8\u165a\n\u00d8\3\u00d8\5\u00d8\u165d\n\u00d8\3"+
		"\u00d8\3\u00d8\3\u00d8\3\u00d8\3\u00d8\3\u00d8\3\u00d8\3\u00d8\5\u00d8"+
		"\u1667\n\u00d8\3\u00d8\3\u00d8\7\u00d8\u166b\n\u00d8\f\u00d8\16\u00d8"+
		"\u166e\13\u00d8\3\u00d8\3\u00d8\3\u00d8\3\u00d8\3\u00d8\5\u00d8\u1675"+
		"\n\u00d8\3\u00d8\3\u00d8\5\u00d8\u1679\n\u00d8\3\u00d8\3\u00d8\5\u00d8"+
		"\u167d\n\u00d8\3\u00d8\3\u00d8\3\u00d8\3\u00d8\3\u00d8\3\u00d8\3\u00d8"+
		"\5\u00d8\u1686\n\u00d8\3\u00d8\3\u00d8\7\u00d8\u168a\n\u00d8\f\u00d8\16"+
		"\u00d8\u168d\13\u00d8\3\u00d8\5\u00d8\u1690\n\u00d8\3\u00d8\5\u00d8\u1693"+
		"\n\u00d8\3\u00d8\3\u00d8\3\u00d9\3\u00d9\3\u00d9\3\u00d9\3\u00d9\7\u00d9"+
		"\u169c\n\u00d9\f\u00d9\16\u00d9\u169f\13\u00d9\3\u00d9\5\u00d9\u16a2\n"+
		"\u00d9\3\u00da\3\u00da\3\u00da\3\u00da\3\u00da\5\u00da\u16a9\n\u00da\3"+
		"\u00da\3\u00da\3\u00da\5\u00da\u16ae\n\u00da\3\u00db\5\u00db\u16b1\n\u00db"+
		"\3\u00db\3\u00db\3\u00db\3\u00db\3\u00db\3\u00db\5\u00db\u16b9\n\u00db"+
		"\3\u00db\3\u00db\5\u00db\u16bd\n\u00db\3\u00db\5\u00db\u16c0\n\u00db\3"+
		"\u00db\3\u00db\5\u00db\u16c4\n\u00db\3\u00db\5\u00db\u16c7\n\u00db\3\u00db"+
		"\3\u00db\5\u00db\u16cb\n\u00db\3\u00db\3\u00db\3\u00db\3\u00db\3\u00db"+
		"\5\u00db\u16d2\n\u00db\3\u00db\3\u00db\5\u00db\u16d6\n\u00db\5\u00db\u16d8"+
		"\n\u00db\5\u00db\u16da\n\u00db\3\u00db\5\u00db\u16dd\n\u00db\3\u00db\5"+
		"\u00db\u16e0\n\u00db\3\u00db\5\u00db\u16e3\n\u00db\3\u00dc\3\u00dc\3\u00dc"+
		"\3\u00dc\5\u00dc\u16e9\n\u00dc\3\u00dd\5\u00dd\u16ec\n\u00dd\3\u00dd\3"+
		"\u00dd\3\u00dd\3\u00dd\3\u00dd\3\u00dd\5\u00dd\u16f4\n\u00dd\5\u00dd\u16f6"+
		"\n\u00dd\3\u00dd\5\u00dd\u16f9\n\u00dd\3\u00dd\3\u00dd\5\u00dd\u16fd\n"+
		"\u00dd\3\u00dd\5\u00dd\u1700\n\u00dd\3\u00dd\3\u00dd\3\u00dd\3\u00dd\5"+
		"\u00dd\u1706\n\u00dd\3\u00dd\5\u00dd\u1709\n\u00dd\3\u00dd\3\u00dd\5\u00dd"+
		"\u170d\n\u00dd\3\u00dd\5\u00dd\u1710\n\u00dd\3\u00dd\5\u00dd\u1713\n\u00dd"+
		"\3\u00de\3\u00de\3\u00de\3\u00de\3\u00de\5\u00de\u171a\n\u00de\3\u00df"+
		"\5\u00df\u171d\n\u00df\3\u00df\3\u00df\3\u00df\3\u00df\3\u00df\5\u00df"+
		"\u1724\n\u00df\3\u00df\3\u00df\3\u00df\3\u00df\5\u00df\u172a\n\u00df\7"+
		"\u00df\u172c\n\u00df\f\u00df\16\u00df\u172f\13\u00df\3\u00df\3\u00df\3"+
		"\u00df\3\u00df\3\u00df\3\u00df\3\u00df\5\u00df\u1738\n\u00df\3\u00df\5"+
		"\u00df\u173b\n\u00df\3\u00e0\5\u00e0\u173e\n\u00e0\3\u00e0\3\u00e0\5\u00e0"+
		"\u1742\n\u00e0\3\u00e0\5\u00e0\u1745\n\u00e0\3\u00e0\5\u00e0\u1748\n\u00e0"+
		"\3\u00e0\5\u00e0\u174b\n\u00e0\3\u00e1\3\u00e1\5\u00e1\u174f\n\u00e1\3"+
		"\u00e2\5\u00e2\u1752\n\u00e2\3\u00e2\3\u00e2\3\u00e2\3\u00e2\3\u00e2\3"+
		"\u00e2\5\u00e2\u175a\n\u00e2\5\u00e2\u175c\n\u00e2\3\u00e2\3\u00e2\5\u00e2"+
		"\u1760\n\u00e2\3\u00e2\5\u00e2\u1763\n\u00e2\3\u00e2\3\u00e2\3\u00e2\3"+
		"\u00e2\7\u00e2\u1769\n\u00e2\f\u00e2\16\u00e2\u176c\13\u00e2\3\u00e2\5"+
		"\u00e2\u176f\n\u00e2\3\u00e2\3\u00e2\5\u00e2\u1773\n\u00e2\3\u00e2\3\u00e2"+
		"\3\u00e2\3\u00e2\3\u00e2\5\u00e2\u177a\n\u00e2\3\u00e2\3\u00e2\5\u00e2"+
		"\u177e\n\u00e2\5\u00e2\u1780\n\u00e2\5\u00e2\u1782\n\u00e2\3\u00e2\5\u00e2"+
		"\u1785\n\u00e2\3\u00e2\5\u00e2\u1788\n\u00e2\3\u00e2\5\u00e2\u178b\n\u00e2"+
		"\3\u00e3\3\u00e3\3\u00e3\3\u00e3\7\u00e3\u1791\n\u00e3\f\u00e3\16\u00e3"+
		"\u1794\13\u00e3\3\u00e3\3\u00e3\3\u00e3\5\u00e3\u1799\n\u00e3\3\u00e3"+
		"\3\u00e3\3\u00e3\3\u00e3\5\u00e3\u179f\n\u00e3\5\u00e3\u17a1\n\u00e3\3"+
		"\u00e4\3\u00e4\5\u00e4\u17a5\n\u00e4\3\u00e4\5\u00e4\u17a8\n\u00e4\3\u00e5"+
		"\3\u00e5\3\u00e5\5\u00e5\u17ad\n\u00e5\3\u00e5\3\u00e5\3\u00e5\5\u00e5"+
		"\u17b2\n\u00e5\3\u00e5\5\u00e5\u17b5\n\u00e5\3\u00e6\3\u00e6\3\u00e6\3"+
		"\u00e6\3\u00e6\3\u00e6\5\u00e6\u17bd\n\u00e6\3\u00e6\3\u00e6\5\u00e6\u17c1"+
		"\n\u00e6\3\u00e6\3\u00e6\3\u00e6\7\u00e6\u17c6\n\u00e6\f\u00e6\16\u00e6"+
		"\u17c9\13\u00e6\5\u00e6\u17cb\n\u00e6\3\u00e6\3\u00e6\3\u00e6\3\u00e6"+
		"\3\u00e6\7\u00e6\u17d2\n\u00e6\f\u00e6\16\u00e6\u17d5\13\u00e6\5\u00e6"+
		"\u17d7\n\u00e6\3\u00e6\3\u00e6\5\u00e6\u17db\n\u00e6\3\u00e6\3\u00e6\3"+
		"\u00e6\3\u00e6\7\u00e6\u17e1\n\u00e6\f\u00e6\16\u00e6\u17e4\13\u00e6\5"+
		"\u00e6\u17e6\n\u00e6\3\u00e7\3\u00e7\5\u00e7\u17ea\n\u00e7\3\u00e7\5\u00e7"+
		"\u17ed\n\u00e7\3\u00e7\3\u00e7\3\u00e7\3\u00e7\3\u00e7\3\u00e7\3\u00e7"+
		"\3\u00e7\3\u00e7\3\u00e7\3\u00e7\3\u00e7\5\u00e7\u17fb\n\u00e7\3\u00e7"+
		"\3\u00e7\5\u00e7\u17ff\n\u00e7\3\u00e7\5\u00e7\u1802\n\u00e7\3\u00e7\3"+
		"\u00e7\5\u00e7\u1806\n\u00e7\3\u00e7\5\u00e7\u1809\n\u00e7\3\u00e8\3\u00e8"+
		"\3\u00e8\5\u00e8\u180e\n\u00e8\3\u00e8\5\u00e8\u1811\n\u00e8\3\u00e8\3"+
		"\u00e8\3\u00e8\3\u00e8\5\u00e8\u1817\n\u00e8\3\u00e8\5\u00e8\u181a\n\u00e8"+
		"\3\u00e8\3\u00e8\3\u00e8\7\u00e8\u181f\n\u00e8\f\u00e8\16\u00e8\u1822"+
		"\13\u00e8\3\u00e8\5\u00e8\u1825\n\u00e8\5\u00e8\u1827\n\u00e8\3\u00e8"+
		"\3\u00e8\3\u00e8\3\u00e8\7\u00e8\u182d\n\u00e8\f\u00e8\16\u00e8\u1830"+
		"\13\u00e8\5\u00e8\u1832\n\u00e8\3\u00e8\3\u00e8\5\u00e8\u1836\n\u00e8"+
		"\3\u00e8\3\u00e8\3\u00e8\3\u00e9\3\u00e9\5\u00e9\u183d\n\u00e9\3\u00ea"+
		"\3\u00ea\3\u00ea\5\u00ea\u1842\n\u00ea\3\u00ea\5\u00ea\u1845\n\u00ea\3"+
		"\u00ea\3\u00ea\3\u00ea\3\u00ea\3\u00ea\3\u00ea\3\u00ea\3\u00ea\7\u00ea"+
		"\u184f\n\u00ea\f\u00ea\16\u00ea\u1852\13\u00ea\5\u00ea\u1854\n\u00ea\3"+
		"\u00ea\3\u00ea\3\u00ea\3\u00ea\5\u00ea\u185a\n\u00ea\3\u00ea\3\u00ea\3"+
		"\u00ea\7\u00ea\u185f\n\u00ea\f\u00ea\16\u00ea\u1862\13\u00ea\3\u00ea\3"+
		"\u00ea\5\u00ea\u1866\n\u00ea\3\u00ea\3\u00ea\3\u00ea\5\u00ea\u186b\n\u00ea"+
		"\3\u00ea\3\u00ea\3\u00ea\3\u00eb\3\u00eb\5\u00eb\u1872\n\u00eb\3\u00ec"+
		"\3\u00ec\3\u00ed\3\u00ed\3\u00ed\5\u00ed\u1879\n\u00ed\3\u00ed\5\u00ed"+
		"\u187c\n\u00ed\3\u00ed\3\u00ed\3\u00ed\3\u00ed\3\u00ed\3\u00ed\5\u00ed"+
		"\u1884\n\u00ed\3\u00ed\3\u00ed\3\u00ed\3\u00ed\7\u00ed\u188a\n\u00ed\f"+
		"\u00ed\16\u00ed\u188d\13\u00ed\5\u00ed\u188f\n\u00ed\3\u00ed\3\u00ed\3"+
		"\u00ed\3\u00ed\7\u00ed\u1895\n\u00ed\f\u00ed\16\u00ed\u1898\13\u00ed\3"+
		"\u00ed\3\u00ed\3\u00ed\3\u00ee\3\u00ee\3\u00ef\3\u00ef\3\u00ef\5\u00ef"+
		"\u18a2\n\u00ef\3\u00ef\5\u00ef\u18a5\n\u00ef\3\u00ef\3\u00ef\3\u00ef\3"+
		"\u00ef\3\u00ef\3\u00ef\7\u00ef\u18ad\n\u00ef\f\u00ef\16\u00ef\u18b0\13"+
		"\u00ef\3\u00ef\3\u00ef\3\u00ef\3\u00ef\5\u00ef\u18b6\n\u00ef\3\u00ef\3"+
		"\u00ef\3\u00ef\5\u00ef\u18bb\n\u00ef\3\u00ef\5\u00ef\u18be\n\u00ef\3\u00f0"+
		"\3\u00f0\3\u00f0\3\u00f0\3\u00f0\3\u00f0\7\u00f0\u18c6\n\u00f0\f\u00f0"+
		"\16\u00f0\u18c9\13\u00f0\5\u00f0\u18cb\n\u00f0\3\u00f0\5\u00f0\u18ce\n"+
		"\u00f0\3\u00f0\3\u00f0\3\u00f0\3\u00f0\3\u00f0\3\u00f0\5\u00f0\u18d6\n"+
		"\u00f0\3\u00f1\3\u00f1\3\u00f1\3\u00f1\3\u00f1\3\u00f1\3\u00f1\7\u00f1"+
		"\u18df\n\u00f1\f\u00f1\16\u00f1\u18e2\13\u00f1\5\u00f1\u18e4\n\u00f1\3"+
		"\u00f1\5\u00f1\u18e7\n\u00f1\3\u00f1\3\u00f1\7\u00f1\u18eb\n\u00f1\f\u00f1"+
		"\16\u00f1\u18ee\13\u00f1\3\u00f1\3\u00f1\5\u00f1\u18f2\n\u00f1\3\u00f1"+
		"\3\u00f1\5\u00f1\u18f6\n\u00f1\3\u00f2\3\u00f2\3\u00f2\3\u00f2\3\u00f2"+
		"\3\u00f2\7\u00f2\u18fe\n\u00f2\f\u00f2\16\u00f2\u1901\13\u00f2\5\u00f2"+
		"\u1903\n\u00f2\3\u00f2\5\u00f2\u1906\n\u00f2\3\u00f2\3\u00f2\7\u00f2\u190a"+
		"\n\u00f2\f\u00f2\16\u00f2\u190d\13\u00f2\3\u00f2\3\u00f2\3\u00f2\5\u00f2"+
		"\u1912\n\u00f2\3\u00f2\3\u00f2\3\u00f3\3\u00f3\3\u00f3\3\u00f3\5\u00f3"+
		"\u191a\n\u00f3\3\u00f3\5\u00f3\u191d\n\u00f3\3\u00f3\3\u00f3\5\u00f3\u1921"+
		"\n\u00f3\3\u00f3\3\u00f3\5\u00f3\u1925\n\u00f3\3\u00f3\5\u00f3\u1928\n"+
		"\u00f3\3\u00f4\3\u00f4\3\u00f4\5\u00f4\u192d\n\u00f4\3\u00f5\3\u00f5\3"+
		"\u00f5\3\u00f5\3\u00f5\3\u00f5\3\u00f5\3\u00f5\3\u00f5\3\u00f5\3\u00f5"+
		"\3\u00f5\5\u00f5\u193b\n\u00f5\3\u00f6\3\u00f6\3\u00f6\3\u00f6\3\u00f6"+
		"\3\u00f6\3\u00f6\3\u00f6\3\u00f6\3\u00f6\3\u00f6\3\u00f6\3\u00f6\3\u00f6"+
		"\5\u00f6\u194b\n\u00f6\3\u00f6\3\u00f6\5\u00f6\u194f\n\u00f6\3\u00f6\3"+
		"\u00f6\3\u00f6\3\u00f6\5\u00f6\u1955\n\u00f6\5\u00f6\u1957\n\u00f6\3\u00f6"+
		"\5\u00f6\u195a\n\u00f6\3\u00f7\3\u00f7\5\u00f7\u195e\n\u00f7\3\u00f7\3"+
		"\u00f7\3\u00f7\5\u00f7\u1963\n\u00f7\3\u00f7\3\u00f7\3\u00f7\5\u00f7\u1968"+
		"\n\u00f7\3\u00f8\3\u00f8\3\u00f8\3\u00f8\3\u00f8\3\u00f8\5\u00f8\u1970"+
		"\n\u00f8\3\u00f8\3\u00f8\3\u00f8\5\u00f8\u1975\n\u00f8\3\u00f8\7\u00f8"+
		"\u1978\n\u00f8\f\u00f8\16\u00f8\u197b\13\u00f8\3\u00f8\3\u00f8\3\u00f8"+
		"\5\u00f8\u1980\n\u00f8\3\u00f8\3\u00f8\3\u00f8\5\u00f8\u1985\n\u00f8\3"+
		"\u00f8\5\u00f8\u1988\n\u00f8\3\u00f9\3\u00f9\3\u00f9\3\u00f9\3\u00f9\7"+
		"\u00f9\u198f\n\u00f9\f\u00f9\16\u00f9\u1992\13\u00f9\3\u00f9\3\u00f9\3"+
		"\u00f9\3\u00f9\3\u00f9\7\u00f9\u1999\n\u00f9\f\u00f9\16\u00f9\u199c\13"+
		"\u00f9\5\u00f9\u199e\n\u00f9\3\u00fa\3\u00fa\3\u00fa\3\u00fa\3\u00fa\3"+
		"\u00fa\3\u00fa\5\u00fa\u19a7\n\u00fa\3\u00fa\3\u00fa\3\u00fa\3\u00fa\7"+
		"\u00fa\u19ad\n\u00fa\f\u00fa\16\u00fa\u19b0\13\u00fa\5\u00fa\u19b2\n\u00fa"+
		"\3\u00fa\3\u00fa\3\u00fa\3\u00fa\3\u00fa\5\u00fa\u19b9\n\u00fa\3\u00fa"+
		"\5\u00fa\u19bc\n\u00fa\3\u00fb\3\u00fb\3\u00fc\3\u00fc\3\u00fc\3\u00fc"+
		"\3\u00fc\3\u00fc\3\u00fc\3\u00fc\3\u00fc\3\u00fc\3\u00fc\3\u00fc\3\u00fc"+
		"\3\u00fc\3\u00fc\3\u00fc\3\u00fc\3\u00fc\3\u00fc\3\u00fc\3\u00fc\3\u00fc"+
		"\3\u00fc\3\u00fc\3\u00fc\3\u00fc\3\u00fc\3\u00fc\3\u00fc\3\u00fc\3\u00fc"+
		"\3\u00fc\3\u00fc\3\u00fc\3\u00fc\3\u00fc\3\u00fc\3\u00fc\3\u00fc\3\u00fc"+
		"\3\u00fc\3\u00fc\5\u00fc\u19ea\n\u00fc\3\u00fc\3\u00fc\5\u00fc\u19ee\n"+
		"\u00fc\3\u00fc\5\u00fc\u19f1\n\u00fc\3\u00fd\3\u00fd\3\u00fd\3\u00fd\5"+
		"\u00fd\u19f7\n\u00fd\3\u00fd\3\u00fd\3\u00fd\3\u00fd\3\u00fd\3\u00fd\3"+
		"\u00fd\3\u00fd\3\u00fd\3\u00fd\5\u00fd\u1a03\n\u00fd\5\u00fd\u1a05\n\u00fd"+
		"\3\u00fd\5\u00fd\u1a08\n\u00fd\3\u00fe\3\u00fe\3\u00fe\3\u00fe\3\u00fe"+
		"\3\u00fe\3\u00fe\3\u00fe\3\u00fe\3\u00fe\3\u00fe\3\u00fe\3\u00fe\3\u00fe"+
		"\3\u00fe\3\u00fe\3\u00fe\3\u00fe\3\u00fe\3\u00fe\3\u00fe\3\u00fe\3\u00fe"+
		"\5\u00fe\u1a21\n\u00fe\3\u00ff\3\u00ff\3\u00ff\3\u00ff\3\u00ff\3\u00ff"+
		"\3\u00ff\3\u00ff\3\u00ff\5\u00ff\u1a2c\n\u00ff\3\u00ff\3\u00ff\3\u00ff"+
		"\3\u00ff\3\u00ff\3\u00ff\5\u00ff\u1a34\n\u00ff\3\u0100\3\u0100\3\u0100"+
		"\3\u0100\3\u0100\3\u0100\3\u0100\7\u0100\u1a3d\n\u0100\f\u0100\16\u0100"+
		"\u1a40\13\u0100\7\u0100\u1a42\n\u0100\f\u0100\16\u0100\u1a45\13\u0100"+
		"\5\u0100\u1a47\n\u0100\3\u0101\3\u0101\3\u0101\3\u0101\3\u0101\3\u0101"+
		"\5\u0101\u1a4f\n\u0101\3\u0102\3\u0102\3\u0102\3\u0102\3\u0103\3\u0103"+
		"\3\u0103\3\u0103\5\u0103\u1a59\n\u0103\3\u0104\3\u0104\3\u0104\3\u0104"+
		"\3\u0104\5\u0104\u1a60\n\u0104\3\u0104\3\u0104\3\u0104\3\u0104\3\u0104"+
		"\5\u0104\u1a67\n\u0104\5\u0104\u1a69\n\u0104\3\u0104\3\u0104\3\u0104\3"+
		"\u0104\3\u0104\3\u0104\3\u0104\3\u0104\3\u0104\3\u0104\5\u0104\u1a75\n"+
		"\u0104\3\u0104\3\u0104\3\u0104\3\u0104\3\u0104\3\u0104\3\u0104\3\u0104"+
		"\3\u0104\5\u0104\u1a80\n\u0104\3\u0104\3\u0104\5\u0104\u1a84\n\u0104\3"+
		"\u0104\3\u0104\3\u0104\5\u0104\u1a89\n\u0104\3\u0104\5\u0104\u1a8c\n\u0104"+
		"\5\u0104\u1a8e\n\u0104\3\u0104\5\u0104\u1a91\n\u0104\3\u0104\3\u0104\3"+
		"\u0104\3\u0104\3\u0104\3\u0104\3\u0104\3\u0104\3\u0104\3\u0104\5\u0104"+
		"\u1a9d\n\u0104\5\u0104\u1a9f\n\u0104\5\u0104\u1aa1\n\u0104\3\u0104\5\u0104"+
		"\u1aa4\n\u0104\3\u0104\3\u0104\3\u0104\5\u0104\u1aa9\n\u0104\3\u0104\5"+
		"\u0104\u1aac\n\u0104\3\u0104\3\u0104\3\u0104\5\u0104\u1ab1\n\u0104\3\u0104"+
		"\3\u0104\3\u0104\3\u0104\3\u0104\3\u0104\3\u0104\3\u0104\5\u0104\u1abb"+
		"\n\u0104\3\u0104\3\u0104\5\u0104\u1abf\n\u0104\3\u0104\3\u0104\3\u0104"+
		"\5\u0104\u1ac4\n\u0104\3\u0104\5\u0104\u1ac7\n\u0104\5\u0104\u1ac9\n\u0104"+
		"\3\u0104\5\u0104\u1acc\n\u0104\3\u0104\3\u0104\3\u0104\3\u0104\3\u0104"+
		"\3\u0104\3\u0104\3\u0104\3\u0104\3\u0104\5\u0104\u1ad8\n\u0104\5\u0104"+
		"\u1ada\n\u0104\5\u0104\u1adc\n\u0104\3\u0104\5\u0104\u1adf\n\u0104\3\u0104"+
		"\3\u0104\3\u0104\3\u0104\5\u0104\u1ae5\n\u0104\3\u0105\3\u0105\3\u0106"+
		"\3\u0106\3\u0106\3\u0106\3\u0106\3\u0106\5\u0106\u1aef\n\u0106\3\u0107"+
		"\3\u0107\3\u0108\3\u0108\3\u0109\3\u0109\3\u010a\3\u010a\3\u010a\3\u010a"+
		"\3\u010a\3\u010a\3\u010a\3\u010a\3\u010a\3\u010a\3\u010a\3\u010a\5\u010a"+
		"\u1b03\n\u010a\3\u010b\3\u010b\3\u010b\3\u010b\5\u010b\u1b09\n\u010b\3"+
		"\u010c\3\u010c\3\u010d\3\u010d\3\u010d\3\u010d\3\u010d\3\u010e\3\u010e"+
		"\3\u010f\3\u010f\3\u010f\3\u010f\3\u0110\3\u0110\3\u0111\3\u0111\3\u0111"+
		"\3\u0111\3\u0111\3\u0111\3\u0111\3\u0111\5\u0111\u1b22\n\u0111\5\u0111"+
		"\u1b24\n\u0111\3\u0112\3\u0112\3\u0112\3\u0113\3\u0113\3\u0113\3\u0114"+
		"\3\u0114\3\u0115\3\u0115\3\u0116\3\u0116\3\u0117\3\u0117\3\u0117\3\u0117"+
		"\3\u0118\3\u0118\3\u0118\3\u0118\3\u0118\3\u0118\3\u0118\3\u0118\5\u0118"+
		"\u1b3e\n\u0118\3\u0118\3\u0118\3\u0118\3\u0118\5\u0118\u1b44\n\u0118\3"+
		"\u0118\3\u0118\3\u0118\3\u0118\3\u0118\3\u0118\3\u0118\3\u0118\3\u0118"+
		"\5\u0118\u1b4f\n\u0118\3\u0119\3\u0119\3\u0119\3\u0119\3\u0119\3\u0119"+
		"\5\u0119\u1b57\n\u0119\3\u0119\5\u0119\u1b5a\n\u0119\3\u011a\3\u011a\3"+
		"\u011a\3\u011b\3\u011b\3\u011b\3\u011c\3\u011c\3\u011c\3\u011c\3\u011c"+
		"\3\u011c\5\u011c\u1b68\n\u011c\3\u011d\3\u011d\3\u011d\3\u011d\3\u011d"+
		"\3\u011d\5\u011d\u1b70\n\u011d\3\u011e\3\u011e\3\u011e\3\u011e\3\u011e"+
		"\5\u011e\u1b77\n\u011e\3\u011f\3\u011f\3\u011f\3\u011f\3\u011f\3\u011f"+
		"\3\u011f\3\u011f\3\u011f\3\u011f\3\u011f\3\u011f\3\u011f\3\u011f\3\u011f"+
		"\3\u011f\3\u011f\3\u011f\3\u011f\3\u011f\3\u011f\5\u011f\u1b8e\n\u011f"+
		"\3\u0120\3\u0120\3\u0120\3\u0120\3\u0120\3\u0121\3\u0121\3\u0121\3\u0121"+
		"\3\u0121\3\u0121\5\u0121\u1b9b\n\u0121\3\u0122\3\u0122\3\u0122\3\u0122"+
		"\5\u0122\u1ba1\n\u0122\3\u0122\3\u0122\3\u0122\7\u0122\u1ba6\n\u0122\f"+
		"\u0122\16\u0122\u1ba9\13\u0122\3\u0122\3\u0122\3\u0122\7\u0122\u1bae\n"+
		"\u0122\f\u0122\16\u0122\u1bb1\13\u0122\5\u0122\u1bb3\n\u0122\3\u0122\5"+
		"\u0122\u1bb6\n\u0122\3\u0123\3\u0123\3\u0123\3\u0123\3\u0124\3\u0124\3"+
		"\u0124\5\u0124\u1bbf\n\u0124\3\u0124\3\u0124\3\u0124\3\u0124\3\u0125\3"+
		"\u0125\3\u0125\3\u0125\5\u0125\u1bc9\n\u0125\3\u0125\3\u0125\3\u0125\7"+
		"\u0125\u1bce\n\u0125\f\u0125\16\u0125\u1bd1\13\u0125\3\u0125\5\u0125\u1bd4"+
		"\n\u0125\3\u0126\3\u0126\5\u0126\u1bd8\n\u0126\3\u0127\3\u0127\3\u0127"+
		"\3\u0127\5\u0127\u1bde\n\u0127\3\u0127\3\u0127\3\u0127\7\u0127\u1be3\n"+
		"\u0127\f\u0127\16\u0127\u1be6\13\u0127\3\u0127\5\u0127\u1be9\n\u0127\3"+
		"\u0128\3\u0128\3\u0128\3\u0128\5\u0128\u1bef\n\u0128\3\u0128\3\u0128\3"+
		"\u0128\7\u0128\u1bf4\n\u0128\f\u0128\16\u0128\u1bf7\13\u0128\3\u0128\3"+
		"\u0128\3\u0128\3\u0128\5\u0128\u1bfd\n\u0128\3\u0128\5\u0128\u1c00\n\u0128"+
		"\3\u0129\3\u0129\3\u0129\3\u0129\5\u0129\u1c06\n\u0129\3\u0129\3\u0129"+
		"\3\u0129\7\u0129\u1c0b\n\u0129\f\u0129\16\u0129\u1c0e\13\u0129\3\u0129"+
		"\5\u0129\u1c11\n\u0129\3\u012a\3\u012a\3\u012a\5\u012a\u1c16\n\u012a\3"+
		"\u012a\3\u012a\3\u012a\5\u012a\u1c1b\n\u012a\3\u012a\6\u012a\u1c1e\n\u012a"+
		"\r\u012a\16\u012a\u1c1f\3\u012a\3\u012a\3\u012b\3\u012b\3\u012b\3\u012b"+
		"\5\u012b\u1c28\n\u012b\3\u012b\3\u012b\5\u012b\u1c2c\n\u012b\3\u012c\3"+
		"\u012c\3\u012c\3\u012c\5\u012c\u1c32\n\u012c\3\u012c\3\u012c\3\u012c\7"+
		"\u012c\u1c37\n\u012c\f\u012c\16\u012c\u1c3a\13\u012c\3\u012c\5\u012c\u1c3d"+
		"\n\u012c\3\u012d\3\u012d\3\u012d\3\u012d\3\u012d\3\u012d\3\u012d\5\u012d"+
		"\u1c46\n\u012d\3\u012d\3\u012d\3\u012d\3\u012d\3\u012d\3\u012d\5\u012d"+
		"\u1c4e\n\u012d\3\u012e\3\u012e\3\u012e\3\u012e\5\u012e\u1c54\n\u012e\3"+
		"\u012e\3\u012e\3\u012f\3\u012f\5\u012f\u1c5a\n\u012f\3\u0130\3\u0130\3"+
		"\u0130\3\u0130\3\u0130\3\u0130\3\u0130\3\u0131\3\u0131\3\u0131\3\u0131"+
		"\3\u0131\3\u0131\3\u0131\3\u0131\5\u0131\u1c6b\n\u0131\3\u0131\3\u0131"+
		"\5\u0131\u1c6f\n\u0131\3\u0131\3\u0131\3\u0131\3\u0132\3\u0132\3\u0132"+
		"\5\u0132\u1c77\n\u0132\3\u0132\3\u0132\5\u0132\u1c7b\n\u0132\3\u0132\3"+
		"\u0132\3\u0132\3\u0132\7\u0132\u1c81\n\u0132\f\u0132\16\u0132\u1c84\13"+
		"\u0132\3\u0132\5\u0132\u1c87\n\u0132\3\u0132\3\u0132\3\u0132\5\u0132\u1c8c"+
		"\n\u0132\3\u0132\3\u0132\5\u0132\u1c90\n\u0132\3\u0132\3\u0132\3\u0132"+
		"\3\u0132\3\u0132\5\u0132\u1c97\n\u0132\3\u0132\3\u0132\3\u0132\3\u0132"+
		"\5\u0132\u1c9d\n\u0132\5\u0132\u1c9f\n\u0132\3\u0133\3\u0133\5\u0133\u1ca3"+
		"\n\u0133\3\u0133\3\u0133\5\u0133\u1ca7\n\u0133\3\u0133\3\u0133\5\u0133"+
		"\u1cab\n\u0133\3\u0133\5\u0133\u1cae\n\u0133\3\u0133\3\u0133\5\u0133\u1cb2"+
		"\n\u0133\3\u0133\3\u0133\3\u0133\3\u0133\5\u0133\u1cb8\n\u0133\3\u0133"+
		"\3\u0133\5\u0133\u1cbc\n\u0133\5\u0133\u1cbe\n\u0133\3\u0134\3\u0134\3"+
		"\u0134\3\u0134\3\u0134\5\u0134\u1cc5\n\u0134\3\u0134\3\u0134\3\u0134\7"+
		"\u0134\u1cca\n\u0134\f\u0134\16\u0134\u1ccd\13\u0134\5\u0134\u1ccf\n\u0134"+
		"\3\u0134\5\u0134\u1cd2\n\u0134\3\u0134\3\u0134\3\u0134\7\u0134\u1cd7\n"+
		"\u0134\f\u0134\16\u0134\u1cda\13\u0134\3\u0134\3\u0134\5\u0134\u1cde\n"+
		"\u0134\3\u0134\6\u0134\u1ce1\n\u0134\r\u0134\16\u0134\u1ce2\3\u0134\3"+
		"\u0134\5\u0134\u1ce7\n\u0134\3\u0134\3\u0134\3\u0134\3\u0134\5\u0134\u1ced"+
		"\n\u0134\6\u0134\u1cef\n\u0134\r\u0134\16\u0134\u1cf0\5\u0134\u1cf3\n"+
		"\u0134\3\u0134\3\u0134\3\u0134\5\u0134\u1cf8\n\u0134\3\u0134\6\u0134\u1cfb"+
		"\n\u0134\r\u0134\16\u0134\u1cfc\6\u0134\u1cff\n\u0134\r\u0134\16\u0134"+
		"\u1d00\3\u0134\3\u0134\3\u0134\5\u0134\u1d06\n\u0134\3\u0134\3\u0134\3"+
		"\u0134\3\u0134\5\u0134\u1d0c\n\u0134\6\u0134\u1d0e\n\u0134\r\u0134\16"+
		"\u0134\u1d0f\6\u0134\u1d12\n\u0134\r\u0134\16\u0134\u1d13\5\u0134\u1d16"+
		"\n\u0134\3\u0134\3\u0134\5\u0134\u1d1a\n\u0134\3\u0134\3\u0134\5\u0134"+
		"\u1d1e\n\u0134\3\u0134\3\u0134\5\u0134\u1d22\n\u0134\3\u0134\3\u0134\5"+
		"\u0134\u1d26\n\u0134\3\u0134\3\u0134\3\u0134\3\u0134\5\u0134\u1d2c\n\u0134"+
		"\3\u0134\5\u0134\u1d2f\n\u0134\3\u0134\3\u0134\3\u0134\3\u0134\5\u0134"+
		"\u1d35\n\u0134\3\u0134\3\u0134\5\u0134\u1d39\n\u0134\3\u0134\3\u0134\5"+
		"\u0134\u1d3d\n\u0134\3\u0134\3\u0134\3\u0134\3\u0134\5\u0134\u1d43\n\u0134"+
		"\3\u0134\3\u0134\3\u0134\3\u0134\5\u0134\u1d49\n\u0134\5\u0134\u1d4b\n"+
		"\u0134\3\u0134\5\u0134\u1d4e\n\u0134\3\u0134\3\u0134\5\u0134\u1d52\n\u0134"+
		"\3\u0134\3\u0134\5\u0134\u1d56\n\u0134\3\u0134\3\u0134\5\u0134\u1d5a\n"+
		"\u0134\3\u0134\3\u0134\3\u0134\3\u0134\5\u0134\u1d60\n\u0134\3\u0134\5"+
		"\u0134\u1d63\n\u0134\3\u0134\3\u0134\3\u0134\3\u0134\5\u0134\u1d69\n\u0134"+
		"\3\u0134\3\u0134\3\u0134\3\u0134\5\u0134\u1d6f\n\u0134\3\u0134\5\u0134"+
		"\u1d72\n\u0134\3\u0134\3\u0134\3\u0134\3\u0134\5\u0134\u1d78\n\u0134\3"+
		"\u0134\5\u0134\u1d7b\n\u0134\3\u0134\3\u0134\3\u0134\3\u0134\5\u0134\u1d81"+
		"\n\u0134\3\u0134\5\u0134\u1d84\n\u0134\3\u0134\3\u0134\5\u0134\u1d88\n"+
		"\u0134\3\u0134\3\u0134\5\u0134\u1d8c\n\u0134\3\u0134\3\u0134\5\u0134\u1d90"+
		"\n\u0134\3\u0134\3\u0134\3\u0134\5\u0134\u1d95\n\u0134\3\u0134\5\u0134"+
		"\u1d98\n\u0134\3\u0134\3\u0134\5\u0134\u1d9c\n\u0134\3\u0134\3\u0134\5"+
		"\u0134\u1da0\n\u0134\3\u0134\3\u0134\3\u0134\3\u0134\3\u0134\3\u0134\3"+
		"\u0134\3\u0134\3\u0134\3\u0134\3\u0134\3\u0134\3\u0134\3\u0134\3\u0134"+
		"\5\u0134\u1db1\n\u0134\7\u0134\u1db3\n\u0134\f\u0134\16\u0134\u1db6\13"+
		"\u0134\5\u0134\u1db8\n\u0134\3\u0135\3\u0135\3\u0135\3\u0135\3\u0135\5"+
		"\u0135\u1dbf\n\u0135\3\u0135\6\u0135\u1dc2\n\u0135\r\u0135\16\u0135\u1dc3"+
		"\3\u0135\3\u0135\5\u0135\u1dc8\n\u0135\3\u0135\3\u0135\3\u0135\3\u0135"+
		"\5\u0135\u1dce\n\u0135\6\u0135\u1dd0\n\u0135\r\u0135\16\u0135\u1dd1\5"+
		"\u0135\u1dd4\n\u0135\3\u0135\3\u0135\3\u0135\5\u0135\u1dd9\n\u0135\3\u0135"+
		"\6\u0135\u1ddc\n\u0135\r\u0135\16\u0135\u1ddd\6\u0135\u1de0\n\u0135\r"+
		"\u0135\16\u0135\u1de1\3\u0135\3\u0135\3\u0135\5\u0135\u1de7\n\u0135\3"+
		"\u0135\3\u0135\3\u0135\3\u0135\5\u0135\u1ded\n\u0135\6\u0135\u1def\n\u0135"+
		"\r\u0135\16\u0135\u1df0\6\u0135\u1df3\n\u0135\r\u0135\16\u0135\u1df4\5"+
		"\u0135\u1df7\n\u0135\3\u0135\3\u0135\5\u0135\u1dfb\n\u0135\3\u0135\3\u0135"+
		"\5\u0135\u1dff\n\u0135\3\u0135\3\u0135\5\u0135\u1e03\n\u0135\3\u0135\3"+
		"\u0135\5\u0135\u1e07\n\u0135\3\u0135\3\u0135\3\u0135\3\u0135\5\u0135\u1e0d"+
		"\n\u0135\3\u0135\5\u0135\u1e10\n\u0135\3\u0135\3\u0135\3\u0135\3\u0135"+
		"\5\u0135\u1e16\n\u0135\3\u0135\3\u0135\5\u0135\u1e1a\n\u0135\3\u0135\3"+
		"\u0135\5\u0135\u1e1e\n\u0135\3\u0135\3\u0135\3\u0135\3\u0135\5\u0135\u1e24"+
		"\n\u0135\3\u0135\3\u0135\3\u0135\3\u0135\5\u0135\u1e2a\n\u0135\5\u0135"+
		"\u1e2c\n\u0135\3\u0135\5\u0135\u1e2f\n\u0135\3\u0135\3\u0135\5\u0135\u1e33"+
		"\n\u0135\3\u0135\3\u0135\5\u0135\u1e37\n\u0135\3\u0135\3\u0135\5\u0135"+
		"\u1e3b\n\u0135\3\u0135\3\u0135\3\u0135\3\u0135\5\u0135\u1e41\n\u0135\3"+
		"\u0135\5\u0135\u1e44\n\u0135\3\u0135\3\u0135\3\u0135\3\u0135\5\u0135\u1e4a"+
		"\n\u0135\3\u0135\3\u0135\3\u0135\3\u0135\5\u0135\u1e50\n\u0135\3\u0135"+
		"\5\u0135\u1e53\n\u0135\3\u0135\3\u0135\3\u0135\3\u0135\5\u0135\u1e59\n"+
		"\u0135\3\u0135\5\u0135\u1e5c\n\u0135\3\u0135\3\u0135\3\u0135\3\u0135\5"+
		"\u0135\u1e62\n\u0135\3\u0135\5\u0135\u1e65\n\u0135\3\u0135\3\u0135\5\u0135"+
		"\u1e69\n\u0135\3\u0135\3\u0135\5\u0135\u1e6d\n\u0135\3\u0135\3\u0135\5"+
		"\u0135\u1e71\n\u0135\3\u0135\3\u0135\3\u0135\5\u0135\u1e76\n\u0135\3\u0135"+
		"\5\u0135\u1e79\n\u0135\3\u0135\3\u0135\5\u0135\u1e7d\n\u0135\3\u0135\3"+
		"\u0135\5\u0135\u1e81\n\u0135\3\u0135\3\u0135\3\u0135\3\u0135\5\u0135\u1e87"+
		"\n\u0135\3\u0135\5\u0135\u1e8a\n\u0135\3\u0135\3\u0135\5\u0135\u1e8e\n"+
		"\u0135\3\u0135\3\u0135\3\u0135\3\u0135\3\u0135\3\u0135\3\u0135\3\u0135"+
		"\3\u0135\3\u0135\3\u0135\3\u0135\3\u0135\3\u0135\3\u0135\5\u0135\u1e9f"+
		"\n\u0135\7\u0135\u1ea1\n\u0135\f\u0135\16\u0135\u1ea4\13\u0135\5\u0135"+
		"\u1ea6\n\u0135\3\u0136\3\u0136\3\u0136\3\u0136\3\u0136\3\u0136\3\u0136"+
		"\3\u0136\3\u0136\3\u0136\3\u0136\3\u0136\5\u0136\u1eb4\n\u0136\3\u0136"+
		"\3\u0136\3\u0136\3\u0136\5\u0136\u1eba\n\u0136\3\u0136\3\u0136\3\u0136"+
		"\3\u0136\3\u0136\3\u0136\5\u0136\u1ec2\n\u0136\3\u0136\3\u0136\3\u0136"+
		"\3\u0136\3\u0136\6\u0136\u1ec9\n\u0136\r\u0136\16\u0136\u1eca\3\u0136"+
		"\5\u0136\u1ece\n\u0136\3\u0137\3\u0137\3\u0137\3\u0137\3\u0137\3\u0137"+
		"\3\u0137\3\u0137\3\u0137\3\u0137\3\u0137\3\u0137\3\u0137\3\u0138\3\u0138"+
		"\3\u0138\3\u0138\3\u0138\3\u0138\3\u0138\3\u0138\3\u0138\3\u0138\3\u0138"+
		"\3\u0138\3\u0138\3\u0138\3\u0139\3\u0139\3\u0139\3\u013a\3\u013a\5\u013a"+
		"\u1ef0\n\u013a\3\u013a\3\u013a\5\u013a\u1ef4\n\u013a\3\u013a\3\u013a\3"+
		"\u013a\7\u013a\u1ef9\n\u013a\f\u013a\16\u013a\u1efc\13\u013a\5\u013a\u1efe"+
		"\n\u013a\3\u013a\5\u013a\u1f01\n\u013a\3\u013a\3\u013a\3\u013a\3\u013a"+
		"\7\u013a\u1f07\n\u013a\f\u013a\16\u013a\u1f0a\13\u013a\3\u013a\3\u013a"+
		"\5\u013a\u1f0e\n\u013a\3\u013a\3\u013a\3\u013a\5\u013a\u1f13\n\u013a\3"+
		"\u013a\5\u013a\u1f16\n\u013a\5\u013a\u1f18\n\u013a\3\u013b\3\u013b\5\u013b"+
		"\u1f1c\n\u013b\3\u013b\3\u013b\5\u013b\u1f20\n\u013b\3\u013b\5\u013b\u1f23"+
		"\n\u013b\3\u013b\3\u013b\5\u013b\u1f27\n\u013b\3\u013c\3\u013c\3\u013d"+
		"\3\u013d\5\u013d\u1f2d\n\u013d\3\u013d\3\u013d\3\u013d\5\u013d\u1f32\n"+
		"\u013d\3\u013d\3\u013d\3\u013d\3\u013d\3\u013d\5\u013d\u1f39\n\u013d\5"+
		"\u013d\u1f3b\n\u013d\3\u013d\3\u013d\5\u013d\u1f3f\n\u013d\3\u013d\3\u013d"+
		"\3\u013d\3\u013d\7\u013d\u1f45\n\u013d\f\u013d\16\u013d\u1f48\13\u013d"+
		"\3\u013d\3\u013d\3\u013d\5\u013d\u1f4d\n\u013d\3\u013d\3\u013d\5\u013d"+
		"\u1f51\n\u013d\3\u013d\5\u013d\u1f54\n\u013d\3\u013d\3\u013d\3\u013d\3"+
		"\u013d\3\u013d\3\u013d\3\u013d\5\u013d\u1f5d\n\u013d\3\u013d\5\u013d\u1f60"+
		"\n\u013d\3\u013d\3\u013d\3\u013d\3\u013d\5\u013d\u1f66\n\u013d\3\u013e"+
		"\3\u013e\3\u013e\3\u013e\3\u013e\5\u013e\u1f6d\n\u013e\3\u013e\3\u013e"+
		"\3\u013e\5\u013e\u1f72\n\u013e\3\u013e\3\u013e\3\u013e\3\u013e\3\u013e"+
		"\3\u013e\5\u013e\u1f7a\n\u013e\3\u013f\3\u013f\3\u013f\5\u013f\u1f7f\n"+
		"\u013f\3\u013f\3\u013f\3\u013f\3\u013f\3\u013f\3\u013f\3\u013f\3\u013f"+
		"\3\u013f\3\u013f\5\u013f\u1f8b\n\u013f\5\u013f\u1f8d\n\u013f\3\u0140\3"+
		"\u0140\3\u0140\3\u0140\3\u0140\3\u0140\3\u0140\3\u0140\3\u0140\5\u0140"+
		"\u1f98\n\u0140\3\u0141\3\u0141\3\u0141\3\u0141\3\u0141\5\u0141\u1f9f\n"+
		"\u0141\3\u0141\3\u0141\3\u0141\3\u0141\3\u0141\3\u0141\7\u0141\u1fa7\n"+
		"\u0141\f\u0141\16\u0141\u1faa\13\u0141\3\u0142\3\u0142\3\u0142\3\u0142"+
		"\3\u0143\3\u0143\3\u0143\3\u0143\3\u0143\3\u0143\3\u0143\3\u0143\3\u0143"+
		"\3\u0143\3\u0143\3\u0143\3\u0143\3\u0143\3\u0143\3\u0143\5\u0143\u1fc0"+
		"\n\u0143\3\u0144\3\u0144\3\u0144\3\u0144\3\u0144\3\u0144\3\u0144\3\u0144"+
		"\3\u0144\3\u0144\3\u0144\5\u0144\u1fcd\n\u0144\3\u0145\3\u0145\3\u0145"+
		"\3\u0145\3\u0145\3\u0145\3\u0145\3\u0145\3\u0145\3\u0145\3\u0145\3\u0145"+
		"\3\u0145\3\u0145\5\u0145\u1fdd\n\u0145\3\u0145\3\u0145\3\u0145\5\u0145"+
		"\u1fe2\n\u0145\3\u0145\3\u0145\3\u0145\3\u0145\3\u0145\5\u0145\u1fe9\n"+
		"\u0145\3\u0145\5\u0145\u1fec\n\u0145\6\u0145\u1fee\n\u0145\r\u0145\16"+
		"\u0145\u1fef\5\u0145\u1ff2\n\u0145\3\u0146\3\u0146\3\u0146\3\u0146\3\u0146"+
		"\3\u0146\3\u0146\3\u0146\3\u0146\3\u0146\3\u0146\3\u0146\3\u0146\3\u0146"+
		"\3\u0146\5\u0146\u2003\n\u0146\3\u0147\3\u0147\3\u0148\3\u0148\3\u0148"+
		"\3\u0148\3\u0148\3\u0148\3\u0148\3\u0148\3\u0148\3\u0148\3\u0148\5\u0148"+
		"\u2012\n\u0148\3\u0149\3\u0149\3\u0149\3\u0149\3\u0149\3\u0149\5\u0149"+
		"\u201a\n\u0149\3\u0149\3\u0149\3\u0149\3\u0149\3\u0149\3\u0149\3\u0149"+
		"\5\u0149\u2023\n\u0149\3\u0149\3\u0149\3\u0149\3\u0149\3\u0149\3\u0149"+
		"\5\u0149\u202b\n\u0149\3\u014a\3\u014a\3\u014a\3\u014a\3\u014a\3\u014a"+
		"\3\u014a\5\u014a\u2034\n\u014a\3\u014a\3\u014a\3\u014a\3\u014a\3\u014a"+
		"\3\u014a\3\u014a\3\u014a\3\u014a\5\u014a\u203f\n\u014a\3\u014a\3\u014a"+
		"\5\u014a\u2043\n\u014a\5\u014a\u2045\n\u014a\5\u014a\u2047\n\u014a\3\u014b"+
		"\3\u014b\3\u014b\3\u014b\5\u014b\u204d\n\u014b\3\u014b\3\u014b\3\u014b"+
		"\5\u014b\u2052\n\u014b\3\u014b\3\u014b\3\u014b\3\u014b\3\u014b\5\u014b"+
		"\u2059\n\u014b\3\u014b\3\u014b\3\u014b\3\u014b\3\u014b\3\u014b\3\u014b"+
		"\3\u014b\3\u014b\3\u014b\3\u014b\5\u014b\u2066\n\u014b\5\u014b\u2068\n"+
		"\u014b\5\u014b\u206a\n\u014b\3\u014b\5\u014b\u206d\n\u014b\3\u014b\5\u014b"+
		"\u2070\n\u014b\3\u014c\3\u014c\3\u014c\3\u014c\3\u014c\5\u014c\u2077\n"+
		"\u014c\3\u014c\5\u014c\u207a\n\u014c\3\u014c\3\u014c\3\u014c\3\u014c\5"+
		"\u014c\u2080\n\u014c\3\u014c\3\u014c\3\u014c\5\u014c\u2085\n\u014c\5\u014c"+
		"\u2087\n\u014c\3\u014c\5\u014c\u208a\n\u014c\3\u014c\3\u014c\3\u014c\3"+
		"\u014c\5\u014c\u2090\n\u014c\3\u014c\3\u014c\3\u014c\3\u014c\3\u014c\3"+
		"\u014c\5\u014c\u2098\n\u014c\5\u014c\u209a\n\u014c\3\u014c\5\u014c\u209d"+
		"\n\u014c\3\u014c\3\u014c\5\u014c\u20a1\n\u014c\3\u014c\5\u014c\u20a4\n"+
		"\u014c\3\u014c\3\u014c\3\u014c\3\u014c\3\u014c\3\u014c\3\u014c\3\u014c"+
		"\5\u014c\u20ae\n\u014c\3\u014c\5\u014c\u20b1\n\u014c\3\u014c\3\u014c\5"+
		"\u014c\u20b5\n\u014c\3\u014c\5\u014c\u20b8\n\u014c\3\u014c\3\u014c\3\u014c"+
		"\3\u014c\5\u014c\u20be\n\u014c\3\u014c\5\u014c\u20c1\n\u014c\5\u014c\u20c3"+
		"\n\u014c\3\u014d\3\u014d\5\u014d\u20c7\n\u014d\3\u014e\3\u014e\3\u014e"+
		"\5\u014e\u20cc\n\u014e\3\u014f\3\u014f\5\u014f\u20d0\n\u014f\3\u0150\3"+
		"\u0150\3\u0150\3\u0150\3\u0150\3\u0150\5\u0150\u20d8\n\u0150\3\u0150\3"+
		"\u0150\5\u0150\u20dc\n\u0150\3\u0150\5\u0150\u20df\n\u0150\3\u0151\3\u0151"+
		"\3\u0151\5\u0151\u20e4\n\u0151\3\u0152\3\u0152\3\u0152\3\u0152\3\u0153"+
		"\3\u0153\5\u0153\u20ec\n\u0153\3\u0153\3\u0153\3\u0153\5\u0153\u20f1\n"+
		"\u0153\3\u0154\3\u0154\3\u0154\3\u0154\3\u0154\3\u0155\3\u0155\3\u0155"+
		"\5\u0155\u20fb\n\u0155\3\u0155\3\u0155\3\u0155\3\u0156\3\u0156\3\u0156"+
		"\3\u0156\3\u0157\3\u0157\5\u0157\u2106\n\u0157\3\u0157\7\u0157\u2109\n"+
		"\u0157\f\u0157\16\u0157\u210c\13\u0157\3\u0158\3\u0158\3\u0158\5\u0158"+
		"\u2111\n\u0158\3\u0159\3\u0159\3\u0159\3\u0159\5\u0159\u2117\n\u0159\3"+
		"\u0159\3\u0159\5\u0159\u211b\n\u0159\3\u0159\5\u0159\u211e\n\u0159\3\u0159"+
		"\3\u0159\5\u0159\u2122\n\u0159\3\u0159\3\u0159\5\u0159\u2126\n\u0159\3"+
		"\u0159\3\u0159\3\u0159\3\u0159\3\u0159\3\u0159\5\u0159\u212e\n\u0159\3"+
		"\u0159\3\u0159\3\u0159\5\u0159\u2133\n\u0159\5\u0159\u2135\n\u0159\3\u0159"+
		"\5\u0159\u2138\n\u0159\3\u0159\7\u0159\u213b\n\u0159\f\u0159\16\u0159"+
		"\u213e\13\u0159\3\u015a\3\u015a\3\u015a\3\u015a\3\u015a\3\u015a\5\u015a"+
		"\u2146\n\u015a\3\u015b\3\u015b\5\u015b\u214a\n\u015b\3\u015b\3\u015b\3"+
		"\u015b\5\u015b\u214f\n\u015b\3\u015b\5\u015b\u2152\n\u015b\3\u015b\5\u015b"+
		"\u2155\n\u015b\3\u015b\3\u015b\3\u015b\3\u015b\5\u015b\u215b\n\u015b\3"+
		"\u015b\3\u015b\3\u015b\3\u015b\3\u015b\3\u015b\5\u015b\u2163\n\u015b\3"+
		"\u015b\3\u015b\3\u015b\3\u015b\3\u015b\3\u015b\5\u015b\u216b\n\u015b\3"+
		"\u015b\5\u015b\u216e\n\u015b\3\u015b\5\u015b\u2171\n\u015b\3\u015c\3\u015c"+
		"\5\u015c\u2175\n\u015c\3\u015c\3\u015c\3\u015c\5\u015c\u217a\n\u015c\3"+
		"\u015c\5\u015c\u217d\n\u015c\3\u015c\3\u015c\3\u015c\3\u015c\5\u015c\u2183"+
		"\n\u015c\3\u015c\3\u015c\5\u015c\u2187\n\u015c\3\u015c\3\u015c\3\u015c"+
		"\3\u015c\5\u015c\u218d\n\u015c\3\u015c\3\u015c\3\u015c\3\u015c\3\u015c"+
		"\3\u015c\5\u015c\u2195\n\u015c\3\u015c\3\u015c\3\u015c\3\u015c\6\u015c"+
		"\u219b\n\u015c\r\u015c\16\u015c\u219c\3\u015c\5\u015c\u21a0\n\u015c\3"+
		"\u015c\3\u015c\3\u015c\3\u015c\3\u015c\3\u015c\3\u015c\3\u015c\3\u015c"+
		"\3\u015c\3\u015c\3\u015c\3\u015c\5\u015c\u21af\n\u015c\3\u015c\5\u015c"+
		"\u21b2\n\u015c\3\u015c\5\u015c\u21b5\n\u015c\5\u015c\u21b7\n\u015c\3\u015d"+
		"\3\u015d\3\u015d\3\u015d\3\u015d\3\u015d\3\u015d\3\u015d\3\u015d\5\u015d"+
		"\u21c2\n\u015d\3\u015e\3\u015e\3\u015e\3\u015e\3\u015e\3\u015e\3\u015e"+
		"\3\u015e\3\u015e\5\u015e\u21cd\n\u015e\3\u015f\3\u015f\3\u015f\3\u015f"+
		"\3\u015f\7\u015f\u21d4\n\u015f\f\u015f\16\u015f\u21d7\13\u015f\3\u015f"+
		"\3\u015f\3\u0160\3\u0160\3\u0160\3\u0160\3\u0160\5\u0160\u21e0\n\u0160"+
		"\3\u0161\3\u0161\3\u0161\3\u0161\3\u0161\3\u0161\3\u0161\3\u0161\5\u0161"+
		"\u21ea\n\u0161\5\u0161\u21ec\n\u0161\5\u0161\u21ee\n\u0161\3\u0161\5\u0161"+
		"\u21f1\n\u0161\3\u0161\5\u0161\u21f4\n\u0161\3\u0161\3\u0161\3\u0161\3"+
		"\u0161\3\u0161\3\u0161\3\u0161\3\u0161\3\u0161\5\u0161\u21ff\n\u0161\5"+
		"\u0161\u2201\n\u0161\5\u0161\u2203\n\u0161\3\u0161\5\u0161\u2206\n\u0161"+
		"\3\u0162\7\u0162\u2209\n\u0162\f\u0162\16\u0162\u220c\13\u0162\3\u0162"+
		"\3\u0162\3\u0162\3\u0163\3\u0163\3\u0163\3\u0163\3\u0163\5\u0163\u2216"+
		"\n\u0163\3\u0164\3\u0164\3\u0164\3\u0164\3\u0164\3\u0164\3\u0164\5\u0164"+
		"\u221f\n\u0164\3\u0164\5\u0164\u2222\n\u0164\3\u0164\5\u0164\u2225\n\u0164"+
		"\3\u0164\3\u0164\3\u0164\3\u0164\3\u0164\7\u0164\u222c\n\u0164\f\u0164"+
		"\16\u0164\u222f\13\u0164\5\u0164\u2231\n\u0164\3\u0164\5\u0164\u2234\n"+
		"\u0164\3\u0165\3\u0165\3\u0165\3\u0165\3\u0165\5\u0165\u223b\n\u0165\3"+
		"\u0165\5\u0165\u223e\n\u0165\3\u0165\3\u0165\3\u0165\3\u0165\3\u0165\3"+
		"\u0165\3\u0165\3\u0165\3\u0165\3\u0165\3\u0165\3\u0165\3\u0165\5\u0165"+
		"\u224d\n\u0165\3\u0165\5\u0165\u2250\n\u0165\3\u0165\3\u0165\3\u0165\3"+
		"\u0165\3\u0165\5\u0165\u2257\n\u0165\3\u0165\3\u0165\3\u0165\3\u0165\3"+
		"\u0165\3\u0165\3\u0165\3\u0165\3\u0165\3\u0165\3\u0165\3\u0165\3\u0165"+
		"\3\u0165\5\u0165\u2267\n\u0165\3\u0166\3\u0166\5\u0166\u226b\n\u0166\3"+
		"\u0167\3\u0167\3\u0167\3\u0167\3\u0167\3\u0167\3\u0167\3\u0167\5\u0167"+
		"\u2275\n\u0167\3\u0167\3\u0167\3\u0167\3\u0167\3\u0167\3\u0167\3\u0167"+
		"\3\u0167\3\u0167\3\u0167\3\u0167\3\u0167\3\u0167\3\u0167\3\u0167\3\u0167"+
		"\3\u0167\7\u0167\u2288\n\u0167\f\u0167\16\u0167\u228b\13\u0167\3\u0168"+
		"\3\u0168\3\u0168\3\u0168\5\u0168\u2291\n\u0168\3\u0169\3\u0169\3\u0169"+
		"\6\u0169\u2296\n\u0169\r\u0169\16\u0169\u2297\3\u0169\3\u0169\5\u0169"+
		"\u229c\n\u0169\3\u0169\3\u0169\3\u0169\3\u0169\6\u0169\u22a2\n\u0169\r"+
		"\u0169\16\u0169\u22a3\3\u0169\3\u0169\5\u0169\u22a8\n\u0169\3\u0169\3"+
		"\u0169\5\u0169\u22ac\n\u0169\3\u016a\3\u016a\3\u016a\3\u016a\5\u016a\u22b2"+
		"\n\u016a\3\u016b\3\u016b\3\u016b\3\u016b\3\u016b\3\u016b\3\u016b\3\u016b"+
		"\5\u016b\u22bc\n\u016b\3\u016c\3\u016c\3\u016c\3\u016c\3\u016c\3\u016c"+
		"\3\u016c\3\u016c\5\u016c\u22c6\n\u016c\3\u016d\3\u016d\3\u016e\3\u016e"+
		"\3\u016e\5\u016e\u22cd\n\u016e\3\u016e\3\u016e\3\u016e\7\u016e\u22d2\n"+
		"\u016e\f\u016e\16\u016e\u22d5\13\u016e\3\u016e\3\u016e\3\u016e\3\u016e"+
		"\3\u016e\3\u016e\5\u016e\u22dd\n\u016e\3\u016e\3\u016e\3\u016e\3\u016e"+
		"\3\u016e\5\u016e\u22e4\n\u016e\3\u016f\3\u016f\3\u016f\3\u016f\3\u016f"+
		"\5\u016f\u22eb\n\u016f\3\u016f\3\u016f\3\u016f\3\u016f\3\u016f\3\u0170"+
		"\3\u0170\5\u0170\u22f4\n\u0170\3\u0170\3\u0170\5\u0170\u22f8\n\u0170\3"+
		"\u0170\3\u0170\3\u0170\3\u0170\3\u0170\3\u0170\3\u0170\3\u0170\5\u0170"+
		"\u2302\n\u0170\3\u0171\3\u0171\3\u0171\7\u0171\u2307\n\u0171\f\u0171\16"+
		"\u0171\u230a\13\u0171\3\u0172\3\u0172\3\u0172\7\u0172\u230f\n\u0172\f"+
		"\u0172\16\u0172\u2312\13\u0172\3\u0173\3\u0173\3\u0173\7\u0173\u2317\n"+
		"\u0173\f\u0173\16\u0173\u231a\13\u0173\3\u0174\5\u0174\u231d\n\u0174\3"+
		"\u0174\3\u0174\3\u0175\3\u0175\3\u0175\3\u0175\3\u0175\3\u0175\3\u0175"+
		"\3\u0175\3\u0175\3\u0175\3\u0175\3\u0175\3\u0175\3\u0175\3\u0175\3\u0175"+
		"\3\u0175\3\u0175\5\u0175\u2333\n\u0175\3\u0175\3\u0175\3\u0175\3\u0175"+
		"\3\u0175\3\u0175\3\u0175\5\u0175\u233c\n\u0175\3\u0175\3\u0175\3\u0175"+
		"\3\u0175\5\u0175\u2342\n\u0175\3\u0175\3\u0175\3\u0175\3\u0175\5\u0175"+
		"\u2348\n\u0175\3\u0175\3\u0175\3\u0175\3\u0175\5\u0175\u234e\n\u0175\3"+
		"\u0175\3\u0175\3\u0175\3\u0175\3\u0175\3\u0175\3\u0175\3\u0175\5\u0175"+
		"\u2358\n\u0175\3\u0176\3\u0176\3\u0176\3\u0176\3\u0176\5\u0176\u235f\n"+
		"\u0176\3\u0176\7\u0176\u2362\n\u0176\f\u0176\16\u0176\u2365\13\u0176\3"+
		"\u0177\3\u0177\5\u0177\u2369\n\u0177\3\u0177\3\u0177\5\u0177\u236d\n\u0177"+
		"\3\u0177\3\u0177\3\u0177\3\u0177\3\u0177\5\u0177\u2374\n\u0177\3\u0178"+
		"\3\u0178\5\u0178\u2378\n\u0178\3\u0178\5\u0178\u237b\n\u0178\3\u0178\3"+
		"\u0178\3\u0178\5\u0178\u2380\n\u0178\3\u0178\3\u0178\5\u0178\u2384\n\u0178"+
		"\3\u0178\3\u0178\5\u0178\u2388\n\u0178\3\u0178\3\u0178\3\u0178\5\u0178"+
		"\u238d\n\u0178\3\u0178\3\u0178\3\u0178\7\u0178\u2392\n\u0178\f\u0178\16"+
		"\u0178\u2395\13\u0178\5\u0178\u2397\n\u0178\3\u0178\3\u0178\5\u0178\u239b"+
		"\n\u0178\3\u0179\3\u0179\3\u0179\5\u0179\u23a0\n\u0179\3\u0179\3\u0179"+
		"\5\u0179\u23a4\n\u0179\3\u017a\3\u017a\3\u017a\3\u017a\3\u017a\3\u017a"+
		"\3\u017a\5\u017a\u23ad\n\u017a\3\u017b\3\u017b\3\u017b\3\u017b\3\u017b"+
		"\5\u017b\u23b4\n\u017b\3\u017c\3\u017c\3\u017c\3\u017c\3\u017c\7\u017c"+
		"\u23bb\n\u017c\f\u017c\16\u017c\u23be\13\u017c\3\u017c\3\u017c\3\u017c"+
		"\3\u017c\3\u017c\3\u017c\3\u017c\3\u017c\3\u017c\5\u017c\u23c9\n\u017c"+
		"\5\u017c\u23cb\n\u017c\3\u017d\3\u017d\3\u017d\3\u017d\3\u017d\3\u017d"+
		"\3\u017d\3\u017d\5\u017d\u23d5\n\u017d\3\u017d\5\u017d\u23d8\n\u017d\3"+
		"\u017d\7\u017d\u23db\n\u017d\f\u017d\16\u017d\u23de\13\u017d\3\u017d\3"+
		"\u017d\3\u017d\3\u017d\3\u017d\3\u017d\5\u017d\u23e6\n\u017d\5\u017d\u23e8"+
		"\n\u017d\5\u017d\u23ea\n\u017d\3\u017d\3\u017d\3\u017d\5\u017d\u23ef\n"+
		"\u017d\3\u017d\3\u017d\3\u017d\3\u017d\7\u017d\u23f5\n\u017d\f\u017d\16"+
		"\u017d\u23f8\13\u017d\3\u017d\3\u017d\5\u017d\u23fc\n\u017d\3\u017d\3"+
		"\u017d\3\u017d\3\u017d\3\u017d\3\u017d\5\u017d\u2404\n\u017d\3\u017d\7"+
		"\u017d\u2407\n\u017d\f\u017d\16\u017d\u240a\13\u017d\3\u017d\3\u017d\3"+
		"\u017d\5\u017d\u240f\n\u017d\3\u017d\3\u017d\3\u017d\3\u017d\3\u017d\3"+
		"\u017d\3\u017d\3\u017d\5\u017d\u2419\n\u017d\5\u017d\u241b\n\u017d\3\u017d"+
		"\3\u017d\5\u017d\u241f\n\u017d\3\u017d\3\u017d\5\u017d\u2423\n\u017d\5"+
		"\u017d\u2425\n\u017d\3\u017e\3\u017e\3\u017e\3\u017f\3\u017f\5\u017f\u242c"+
		"\n\u017f\3\u0180\3\u0180\3\u0181\3\u0181\3\u0181\3\u0181\3\u0181\7\u0181"+
		"\u2435\n\u0181\f\u0181\16\u0181\u2438\13\u0181\3\u0181\3\u0181\3\u0182"+
		"\3\u0182\3\u0182\3\u0182\3\u0182\3\u0182\3\u0182\3\u0182\3\u0182\3\u0182"+
		"\3\u0182\3\u0182\3\u0182\3\u0182\3\u0182\3\u0182\3\u0182\3\u0182\3\u0182"+
		"\3\u0182\3\u0182\3\u0182\3\u0182\3\u0182\3\u0182\3\u0182\3\u0182\7\u0182"+
		"\u2457\n\u0182\f\u0182\16\u0182\u245a\13\u0182\3\u0182\3\u0182\3\u0182"+
		"\3\u0182\3\u0182\3\u0182\3\u0182\3\u0182\3\u0182\3\u0182\3\u0182\3\u0182"+
		"\3\u0182\5\u0182\u2469\n\u0182\3\u0183\3\u0183\3\u0183\3\u0183\3\u0183"+
		"\5\u0183\u2470\n\u0183\5\u0183\u2472\n\u0183\3\u0184\3\u0184\3\u0184\7"+
		"\u0184\u2477\n\u0184\f\u0184\16\u0184\u247a\13\u0184\3\u0185\3\u0185\3"+
		"\u0185\3\u0185\7\u0185\u2480\n\u0185\f\u0185\16\u0185\u2483\13\u0185\3"+
		"\u0185\3\u0185\3\u0186\3\u0186\3\u0186\3\u0186\3\u0186\5\u0186\u248c\n"+
		"\u0186\3\u0187\3\u0187\3\u0187\5\u0187\u2491\n\u0187\3\u0187\3\u0187\3"+
		"\u0187\3\u0187\3\u0187\5\u0187\u2498\n\u0187\3\u0187\5\u0187\u249b\n\u0187"+
		"\3\u0188\3\u0188\3\u0188\3\u0188\3\u0188\5\u0188\u24a2\n\u0188\3\u0188"+
		"\3\u0188\3\u0188\3\u0188\3\u0188\5\u0188\u24a9\n\u0188\3\u0188\5\u0188"+
		"\u24ac\n\u0188\5\u0188\u24ae\n\u0188\3\u0189\3\u0189\3\u0189\3\u0189\3"+
		"\u0189\3\u0189\5\u0189\u24b6\n\u0189\5\u0189\u24b8\n\u0189\3\u018a\3\u018a"+
		"\3\u018a\3\u018a\5\u018a\u24be\n\u018a\3\u018b\3\u018b\3\u018b\7\u018b"+
		"\u24c3\n\u018b\f\u018b\16\u018b\u24c6\13\u018b\3\u018c\3\u018c\3\u018c"+
		"\3\u018c\3\u018c\5\u018c\u24cd\n\u018c\3\u018d\3\u018d\7\u018d\u24d1\n"+
		"\u018d\f\u018d\16\u018d\u24d4\13\u018d\3\u018e\3\u018e\5\u018e\u24d8\n"+
		"\u018e\3\u018e\3\u018e\5\u018e\u24dc\n\u018e\3\u018e\3\u018e\5\u018e\u24e0"+
		"\n\u018e\3\u018e\3\u018e\3\u018e\5\u018e\u24e5\n\u018e\5\u018e\u24e7\n"+
		"\u018e\3\u018e\3\u018e\3\u018e\3\u018e\3\u018e\5\u018e\u24ee\n\u018e\3"+
		"\u018e\3\u018e\5\u018e\u24f2\n\u018e\3\u018e\3\u018e\3\u018e\3\u018e\3"+
		"\u018e\5\u018e\u24f9\n\u018e\5\u018e\u24fb\n\u018e\3\u018e\3\u018e\3\u018e"+
		"\3\u018e\3\u018e\5\u018e\u2502\n\u018e\5\u018e\u2504\n\u018e\3\u018f\3"+
		"\u018f\3\u018f\3\u018f\3\u018f\3\u018f\3\u018f\5\u018f\u250d\n\u018f\3"+
		"\u018f\3\u018f\3\u018f\3\u018f\3\u018f\3\u018f\5\u018f\u2515\n\u018f\3"+
		"\u0190\3\u0190\3\u0190\7\u0190\u251a\n\u0190\f\u0190\16\u0190\u251d\13"+
		"\u0190\3\u0191\3\u0191\3\u0191\5\u0191\u2522\n\u0191\3\u0192\3\u0192\3"+
		"\u0192\3\u0192\3\u0192\3\u0192\3\u0192\3\u0192\3\u0193\5\u0193\u252d\n"+
		"\u0193\3\u0193\3\u0193\5\u0193\u2531\n\u0193\5\u0193\u2533\n\u0193\3\u0193"+
		"\5\u0193\u2536\n\u0193\3\u0193\3\u0193\3\u0193\3\u0193\3\u0193\3\u0193"+
		"\3\u0193\3\u0193\3\u0193\3\u0193\3\u0193\3\u0193\3\u0193\3\u0193\3\u0193"+
		"\3\u0193\3\u0193\3\u0193\3\u0193\3\u0193\3\u0193\3\u0193\5\u0193\u254e"+
		"\n\u0193\3\u0194\3\u0194\3\u0194\3\u0194\3\u0194\3\u0194\3\u0194\3\u0194"+
		"\3\u0195\3\u0195\3\u0195\3\u0195\3\u0195\3\u0195\3\u0195\3\u0195\3\u0195"+
		"\3\u0195\3\u0196\3\u0196\3\u0196\7\u0196\u2565\n\u0196\f\u0196\16\u0196"+
		"\u2568\13\u0196\3\u0197\3\u0197\5\u0197\u256c\n\u0197\3\u0198\3\u0198"+
		"\3\u0198\3\u0198\3\u0198\3\u0198\3\u0198\3\u0198\3\u0198\3\u0198\3\u0198"+
		"\3\u0198\3\u0198\3\u0198\3\u0198\3\u0198\7\u0198\u257e\n\u0198\f\u0198"+
		"\16\u0198\u2581\13\u0198\3\u0198\5\u0198\u2584\n\u0198\3\u0198\3\u0198"+
		"\5\u0198\u2588\n\u0198\3\u0199\3\u0199\3\u0199\3\u0199\3\u019a\3\u019a"+
		"\3\u019a\3\u019a\3\u019a\3\u019a\3\u019a\3\u019a\3\u019a\3\u019a\5\u019a"+
		"\u2598\n\u019a\3\u019b\3\u019b\3\u019b\3\u019b\3\u019b\3\u019b\5\u019b"+
		"\u25a0\n\u019b\3\u019b\3\u019b\3\u019b\3\u019b\3\u019b\3\u019b\3\u019b"+
		"\3\u019b\3\u019b\3\u019b\3\u019b\3\u019b\3\u019b\3\u019b\3\u019b\3\u019b"+
		"\3\u019b\3\u019b\3\u019b\3\u019b\5\u019b\u25b6\n\u019b\3\u019b\3\u019b"+
		"\3\u019b\3\u019b\3\u019b\3\u019b\3\u019b\3\u019b\3\u019b\3\u019b\3\u019b"+
		"\3\u019b\3\u019b\3\u019b\3\u019b\3\u019b\3\u019b\3\u019b\3\u019b\3\u019b"+
		"\3\u019b\3\u019b\3\u019b\3\u019b\3\u019b\3\u019b\3\u019b\3\u019b\3\u019b"+
		"\3\u019b\3\u019b\3\u019b\3\u019b\3\u019b\3\u019b\3\u019b\3\u019b\3\u019b"+
		"\3\u019b\3\u019b\3\u019b\3\u019b\3\u019b\3\u019b\3\u019b\3\u019b\3\u019b"+
		"\3\u019b\3\u019b\3\u019b\3\u019b\3\u019b\3\u019b\3\u019b\3\u019b\3\u019b"+
		"\5\u019b\u25f0\n\u019b\3\u019b\3\u019b\5\u019b\u25f4\n\u019b\3\u019b\3"+
		"\u019b\3\u019b\3\u019b\3\u019b\3\u019b\3\u019b\3\u019b\3\u019b\3\u019b"+
		"\3\u019b\3\u019b\3\u019b\3\u019b\3\u019b\3\u019b\3\u019b\3\u019b\3\u019b"+
		"\3\u019b\3\u019b\3\u019b\3\u019b\3\u019b\3\u019b\3\u019b\3\u019b\3\u019b"+
		"\3\u019b\3\u019b\3\u019b\3\u019b\3\u019b\3\u019b\3\u019b\3\u019b\3\u019b"+
		"\3\u019b\3\u019b\3\u019b\5\u019b\u261e\n\u019b\3\u019c\3\u019c\3\u019c"+
		"\3\u019c\3\u019c\5\u019c\u2625\n\u019c\3\u019d\3\u019d\3\u019d\3\u019d"+
		"\5\u019d\u262b\n\u019d\3\u019d\3\u019d\3\u019d\3\u019d\3\u019d\3\u019d"+
		"\3\u019d\3\u019d\3\u019d\3\u019d\3\u019d\5\u019d\u2638\n\u019d\3\u019d"+
		"\3\u019d\3\u019d\3\u019d\3\u019d\3\u019d\3\u019d\3\u019d\3\u019d\3\u019d"+
		"\3\u019d\3\u019d\3\u019d\5\u019d\u2647\n\u019d\3\u019d\3\u019d\3\u019d"+
		"\3\u019d\3\u019d\3\u019d\3\u019d\3\u019d\3\u019d\5\u019d\u2652\n\u019d"+
		"\3\u019e\3\u019e\3\u019e\5\u019e\u2657\n\u019e\3\u019e\3\u019e\3\u019e"+
		"\3\u019e\3\u019e\3\u019e\3\u019e\3\u019e\5\u019e\u2661\n\u019e\3\u019e"+
		"\3\u019e\3\u019e\3\u019e\3\u019e\3\u019e\3\u019e\5\u019e\u266a\n\u019e"+
		"\3\u019f\3\u019f\3\u019f\3\u019f\3\u019f\3\u019f\3\u019f\3\u01a0\3\u01a0"+
		"\3\u01a0\3\u01a0\3\u01a0\3\u01a0\3\u01a0\3\u01a1\3\u01a1\3\u01a1\3\u01a1"+
		"\3\u01a1\3\u01a1\3\u01a1\3\u01a2\3\u01a2\3\u01a2\3\u01a2\3\u01a2\3\u01a3"+
		"\3\u01a3\3\u01a3\3\u01a3\3\u01a3\3\u01a4\5\u01a4\u268c\n\u01a4\3\u01a4"+
		"\3\u01a4\3\u01a5\5\u01a5\u2691\n\u01a5\3\u01a5\3\u01a5\3\u01a6\3\u01a6"+
		"\5\u01a6\u2697\n\u01a6\3\u01a7\5\u01a7\u269a\n\u01a7\3\u01a7\3\u01a7\3"+
		"\u01a7\5\u01a7\u269f\n\u01a7\3\u01a7\7\u01a7\u26a2\n\u01a7\f\u01a7\16"+
		"\u01a7\u26a5\13\u01a7\3\u01a7\3\u01a7\3\u01a8\3\u01a8\3\u01a8\3\u01a8"+
		"\5\u01a8\u26ad\n\u01a8\3\u01a8\7\u01a8\u26b0\n\u01a8\f\u01a8\16\u01a8"+
		"\u26b3\13\u01a8\3\u01a8\3\u01a8\3\u01a9\5\u01a9\u26b8\n\u01a9\3\u01a9"+
		"\3\u01a9\3\u01a9\3\u01a9\3\u01a9\7\u01a9\u26bf\n\u01a9\f\u01a9\16\u01a9"+
		"\u26c2\13\u01a9\3\u01a9\3\u01a9\3\u01a9\3\u01a9\3\u01a9\7\u01a9\u26c9"+
		"\n\u01a9\f\u01a9\16\u01a9\u26cc\13\u01a9\5\u01a9\u26ce\n\u01a9\3\u01a9"+
		"\3\u01a9\3\u01a9\3\u01a9\3\u01a9\3\u01a9\3\u01a9\3\u01a9\3\u01a9\3\u01a9"+
		"\7\u01a9\u26da\n\u01a9\f\u01a9\16\u01a9\u26dd\13\u01a9\3\u01a9\3\u01a9"+
		"\3\u01a9\5\u01a9\u26e2\n\u01a9\3\u01a9\3\u01a9\3\u01a9\3\u01a9\3\u01a9"+
		"\3\u01a9\5\u01a9\u26ea\n\u01a9\3\u01aa\3\u01aa\5\u01aa\u26ee\n\u01aa\3"+
		"\u01ab\3\u01ab\3\u01ab\3\u01ab\7\u01ab\u26f4\n\u01ab\f\u01ab\16\u01ab"+
		"\u26f7\13\u01ab\3\u01ab\3\u01ab\3\u01ac\3\u01ac\5\u01ac\u26fd\n\u01ac"+
		"\3\u01ad\3\u01ad\3\u01ad\3\u01ad\3\u01ad\3\u01ad\3\u01ad\3\u01ad\3\u01ad"+
		"\7\u01ad\u2708\n\u01ad\f\u01ad\16\u01ad\u270b\13\u01ad\3\u01ae\3\u01ae"+
		"\3\u01ae\7\u01ae\u2710\n\u01ae\f\u01ae\16\u01ae\u2713\13\u01ae\3\u01af"+
		"\3\u01af\3\u01af\3\u01af\3\u01af\3\u01af\3\u01af\3\u01af\3\u01af\3\u01af"+
		"\5\u01af\u271f\n\u01af\3\u01b0\3\u01b0\3\u01b0\3\u01b0\3\u01b0\5\u01b0"+
		"\u2726\n\u01b0\3\u01b0\3\u01b0\3\u01b0\3\u01b0\5\u01b0\u272c\n\u01b0\3"+
		"\u01b0\3\u01b0\5\u01b0\u2730\n\u01b0\3\u01b0\3\u01b0\3\u01b0\3\u01b0\3"+
		"\u01b0\3\u01b0\3\u01b0\3\u01b0\3\u01b0\3\u01b0\3\u01b0\3\u01b0\3\u01b0"+
		"\3\u01b0\3\u01b0\5\u01b0\u2741\n\u01b0\3\u01b1\3\u01b1\3\u01b1\3\u01b1"+
		"\3\u01b1\3\u01b1\3\u01b1\3\u01b1\3\u01b1\3\u01b1\3\u01b1\3\u01b1\3\u01b1"+
		"\5\u01b1\u2750\n\u01b1\5\u01b1\u2752\n\u01b1\3\u01b1\3\u01b1\3\u01b1\5"+
		"\u01b1\u2757\n\u01b1\3\u01b2\5\u01b2\u275a\n\u01b2\3\u01b2\3\u01b2\3\u01b3"+
		"\3\u01b3\3\u01b3\3\u01b3\3\u01b3\5\u01b3\u2763\n\u01b3\3\u01b3\5\u01b3"+
		"\u2766\n\u01b3\3\u01b3\5\u01b3\u2769\n\u01b3\3\u01b3\3\u01b3\3\u01b4\3"+
		"\u01b4\3\u01b4\3\u01b5\3\u01b5\3\u01b5\3\u01b5\3\u01b5\3\u01b5\5\u01b5"+
		"\u2776\n\u01b5\3\u01b6\3\u01b6\5\u01b6\u277a\n\u01b6\3\u01b7\3\u01b7\3"+
		"\u01b7\3\u01b7\3\u01b7\3\u01b7\5\u01b7\u2782\n\u01b7\3\u01b8\3\u01b8\3"+
		"\u01b8\3\u01b8\5\u01b8\u2788\n\u01b8\3\u01b9\3\u01b9\3\u01b9\3\u01b9\7"+
		"\u01b9\u278e\n\u01b9\f\u01b9\16\u01b9\u2791\13\u01b9\3\u01b9\3\u01b9\3"+
		"\u01b9\3\u01b9\5\u01b9\u2797\n\u01b9\3\u01b9\3\u01b9\3\u01b9\3\u01b9\5";
	private static final String _serializedATNSegment1 =
		"\u01b9\u279d\n\u01b9\3\u01b9\3\u01b9\3\u01b9\3\u01b9\3\u01b9\3\u01b9\3"+
		"\u01b9\3\u01b9\3\u01b9\3\u01b9\3\u01b9\3\u01b9\3\u01b9\5\u01b9\u27ac\n"+
		"\u01b9\3\u01ba\3\u01ba\3\u01ba\3\u01ba\3\u01ba\3\u01ba\3\u01ba\5\u01ba"+
		"\u27b5\n\u01ba\3\u01ba\3\u01ba\3\u01bb\3\u01bb\5\u01bb\u27bb\n\u01bb\3"+
		"\u01bc\3\u01bc\3\u01bc\3\u01bc\5\u01bc\u27c1\n\u01bc\3\u01bc\5\u01bc\u27c4"+
		"\n\u01bc\3\u01bc\3\u01bc\5\u01bc\u27c8\n\u01bc\3\u01bc\3\u01bc\3\u01bc"+
		"\7\u01bc\u27cd\n\u01bc\f\u01bc\16\u01bc\u27d0\13\u01bc\3\u01bd\3\u01bd"+
		"\3\u01bd\3\u01bd\3\u01bd\5\u01bd\u27d7\n\u01bd\3\u01bd\5\u01bd\u27da\n"+
		"\u01bd\3\u01bd\3\u01bd\3\u01bd\3\u01bd\5\u01bd\u27e0\n\u01bd\3\u01bd\3"+
		"\u01bd\3\u01bd\3\u01bd\5\u01bd\u27e6\n\u01bd\5\u01bd\u27e8\n\u01bd\3\u01bd"+
		"\3\u01bd\3\u01bd\3\u01bd\5\u01bd\u27ee\n\u01bd\3\u01bd\5\u01bd\u27f1\n"+
		"\u01bd\5\u01bd\u27f3\n\u01bd\3\u01bd\3\u01bd\3\u01bd\3\u01bd\5\u01bd\u27f9"+
		"\n\u01bd\5\u01bd\u27fb\n\u01bd\3\u01bd\3\u01bd\3\u01be\3\u01be\3\u01be"+
		"\3\u01be\3\u01be\3\u01be\3\u01be\3\u01be\3\u01be\3\u01be\5\u01be\u2809"+
		"\n\u01be\3\u01be\3\u01be\3\u01be\3\u01be\3\u01be\5\u01be\u2810\n\u01be"+
		"\3\u01be\3\u01be\3\u01bf\3\u01bf\3\u01bf\3\u01bf\3\u01bf\5\u01bf\u2819"+
		"\n\u01bf\3\u01c0\3\u01c0\3\u01c0\3\u01c0\3\u01c0\5\u01c0\u2820\n\u01c0"+
		"\3\u01c1\3\u01c1\3\u01c1\3\u01c1\3\u01c1\3\u01c1\3\u01c1\3\u01c1\3\u01c1"+
		"\3\u01c1\5\u01c1\u282c\n\u01c1\3\u01c1\3\u01c1\3\u01c1\3\u01c1\3\u01c1"+
		"\5\u01c1\u2833\n\u01c1\3\u01c1\3\u01c1\3\u01c2\3\u01c2\3\u01c2\5\u01c2"+
		"\u283a\n\u01c2\3\u01c2\3\u01c2\3\u01c2\3\u01c2\3\u01c2\5\u01c2\u2841\n"+
		"\u01c2\3\u01c2\3\u01c2\3\u01c2\3\u01c2\5\u01c2\u2847\n\u01c2\3\u01c2\3"+
		"\u01c2\3\u01c2\3\u01c2\3\u01c2\5\u01c2\u284e\n\u01c2\3\u01c2\5\u01c2\u2851"+
		"\n\u01c2\3\u01c3\3\u01c3\3\u01c3\5\u01c3\u2856\n\u01c3\3\u01c3\3\u01c3"+
		"\3\u01c4\3\u01c4\3\u01c4\5\u01c4\u285d\n\u01c4\3\u01c4\3\u01c4\3\u01c5"+
		"\3\u01c5\3\u01c5\3\u01c5\5\u01c5\u2865\n\u01c5\3\u01c5\3\u01c5\5\u01c5"+
		"\u2869\n\u01c5\3\u01c5\5\u01c5\u286c\n\u01c5\3\u01c6\3\u01c6\3\u01c6\3"+
		"\u01c6\3\u01c6\3\u01c6\5\u01c6\u2874\n\u01c6\3\u01c6\3\u01c6\5\u01c6\u2878"+
		"\n\u01c6\3\u01c6\5\u01c6\u287b\n\u01c6\3\u01c7\3\u01c7\5\u01c7\u287f\n"+
		"\u01c7\3\u01c8\3\u01c8\3\u01c8\5\u01c8\u2884\n\u01c8\3\u01c8\3\u01c8\3"+
		"\u01c8\3\u01c8\5\u01c8\u288a\n\u01c8\3\u01c8\3\u01c8\3\u01c8\3\u01c8\5"+
		"\u01c8\u2890\n\u01c8\3\u01c8\3\u01c8\3\u01c8\3\u01c8\5\u01c8\u2896\n\u01c8"+
		"\3\u01c8\3\u01c8\3\u01c8\3\u01c8\5\u01c8\u289c\n\u01c8\3\u01c8\3\u01c8"+
		"\3\u01c8\3\u01c8\5\u01c8\u28a2\n\u01c8\3\u01c8\3\u01c8\3\u01c8\3\u01c8"+
		"\5\u01c8\u28a8\n\u01c8\3\u01c8\3\u01c8\3\u01c8\3\u01c8\5\u01c8\u28ae\n"+
		"\u01c8\3\u01c8\5\u01c8\u28b1\n\u01c8\3\u01c9\3\u01c9\5\u01c9\u28b5\n\u01c9"+
		"\3\u01c9\3\u01c9\3\u01c9\5\u01c9\u28ba\n\u01c9\7\u01c9\u28bc\n\u01c9\f"+
		"\u01c9\16\u01c9\u28bf\13\u01c9\3\u01ca\3\u01ca\3\u01ca\7\u01ca\u28c4\n"+
		"\u01ca\f\u01ca\16\u01ca\u28c7\13\u01ca\3\u01cb\3\u01cb\5\u01cb\u28cb\n"+
		"\u01cb\3\u01cc\3\u01cc\3\u01cd\3\u01cd\3\u01ce\5\u01ce\u28d2\n\u01ce\3"+
		"\u01ce\3\u01ce\3\u01cf\3\u01cf\3\u01cf\3\u01cf\3\u01cf\5\u01cf\u28db\n"+
		"\u01cf\5\u01cf\u28dd\n\u01cf\3\u01d0\3\u01d0\3\u01d0\3\u01d0\3\u01d0\5"+
		"\u01d0\u28e4\n\u01d0\3\u01d1\3\u01d1\3\u01d1\3\u01d1\3\u01d1\3\u01d1\3"+
		"\u01d1\3\u01d1\3\u01d1\3\u01d1\5\u01d1\u28f0\n\u01d1\3\u01d2\3\u01d2\3"+
		"\u01d2\5\u01d2\u28f5\n\u01d2\3\u01d2\3\u01d2\3\u01d2\3\u01d2\3\u01d2\3"+
		"\u01d2\3\u01d2\3\u01d2\3\u01d2\5\u01d2\u2900\n\u01d2\3\u01d2\3\u01d2\3"+
		"\u01d2\3\u01d2\3\u01d2\3\u01d2\3\u01d2\3\u01d2\5\u01d2\u290a\n\u01d2\5"+
		"\u01d2\u290c\n\u01d2\3\u01d2\3\u01d2\3\u01d2\3\u01d2\5\u01d2\u2912\n\u01d2"+
		"\5\u01d2\u2914\n\u01d2\3\u01d2\3\u01d2\3\u01d2\5\u01d2\u2919\n\u01d2\5"+
		"\u01d2\u291b\n\u01d2\3\u01d2\5\u01d2\u291e\n\u01d2\3\u01d3\3\u01d3\5\u01d3"+
		"\u2922\n\u01d3\3\u01d4\3\u01d4\5\u01d4\u2926\n\u01d4\3\u01d5\3\u01d5\3"+
		"\u01d5\3\u01d5\5\u01d5\u292c\n\u01d5\3\u01d5\3\u01d5\3\u01d5\3\u01d5\3"+
		"\u01d5\3\u01d5\3\u01d5\5\u01d5\u2935\n\u01d5\3\u01d5\5\u01d5\u2938\n\u01d5"+
		"\5\u01d5\u293a\n\u01d5\3\u01d6\5\u01d6\u293d\n\u01d6\3\u01d6\3\u01d6\3"+
		"\u01d6\3\u01d6\5\u01d6\u2943\n\u01d6\3\u01d6\3\u01d6\5\u01d6\u2947\n\u01d6"+
		"\3\u01d6\5\u01d6\u294a\n\u01d6\3\u01d7\3\u01d7\3\u01d7\3\u01d7\3\u01d7"+
		"\3\u01d7\3\u01d7\5\u01d7\u2953\n\u01d7\3\u01d8\3\u01d8\3\u01d8\3\u01d8"+
		"\3\u01d8\3\u01d8\3\u01d8\5\u01d8\u295c\n\u01d8\3\u01d9\3\u01d9\3\u01d9"+
		"\3\u01d9\3\u01d9\3\u01d9\3\u01d9\3\u01d9\3\u01d9\3\u01d9\5\u01d9\u2968"+
		"\n\u01d9\3\u01d9\5\u01d9\u296b\n\u01d9\3\u01da\3\u01da\5\u01da\u296f\n"+
		"\u01da\3\u01da\3\u01da\3\u01da\3\u01da\5\u01da\u2975\n\u01da\3\u01da\5"+
		"\u01da\u2978\n\u01da\3\u01da\3\u01da\5\u01da\u297c\n\u01da\3\u01da\3\u01da"+
		"\3\u01da\3\u01da\5\u01da\u2982\n\u01da\3\u01db\3\u01db\3\u01db\5\u01db"+
		"\u2987\n\u01db\3\u01dc\3\u01dc\3\u01dc\5\u01dc\u298c\n\u01dc\3\u01dc\3"+
		"\u01dc\5\u01dc\u2990\n\u01dc\3\u01dc\3\u01dc\5\u01dc\u2994\n\u01dc\3\u01dc"+
		"\3\u01dc\5\u01dc\u2998\n\u01dc\3\u01dd\3\u01dd\3\u01de\3\u01de\3\u01de"+
		"\5\u01de\u299f\n\u01de\3\u01df\3\u01df\3\u01e0\3\u01e0\3\u01e0\3\u01e0"+
		"\3\u01e0\3\u01e0\3\u01e0\3\u01e0\3\u01e0\3\u01e0\3\u01e0\3\u01e0\3\u01e0"+
		"\3\u01e0\3\u01e0\5\u01e0\u29b2\n\u01e0\3\u01e1\3\u01e1\3\u01e2\3\u01e2"+
		"\5\u01e2\u29b8\n\u01e2\3\u01e2\2\4^\u02cc\u01e3\2\4\6\b\n\f\16\20\22\24"+
		"\26\30\32\34\36 \"$&(*,.\60\62\64\668:<>@BDFHJLNPRTVXZ\\^`bdfhjlnprtv"+
		"xz|~\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\2\u008c"+
		"\3\2\u031b\u031c\4\2\u031b\u031b\u0320\u0320\4\2\u01d8\u01d8\u02f0\u02f1"+
		"\4\2\u031b\u031c\u0320\u0320\4\2\u00bc\u00bc\u02d1\u02d1\5\2\u0318\u0318"+
		"\u031b\u031b\u0320\u0320\5\2}}\u012c\u012c\u016c\u016c\4\2\u00e3\u00e3"+
		"\u00e6\u00e6\3\2\u0320\u0321\3\2\u0125\u0129\4\2\u01c6\u01c6\u0279\u0279"+
		"\4\2\u012f\u012f\u0273\u0273\5\2UU\u012f\u012f\u0273\u0273\5\2\u00d6\u00d6"+
		"\u0101\u0101\u02c4\u02c5\4\2\23\23\u02e8\u02e8\4\2\27\27\u0240\u0240\4"+
		"\2\6\6\u02a0\u02a0\5\2\6\6\u0265\u0265\u029e\u029e\4\2\n\nII\4\2\4\4h"+
		"h\4\2\u01f2\u01f2\u02d2\u02d2\4\2\u01e3\u01e3\u01ec\u01ec\4\2\u031c\u031c"+
		"\u0320\u0320\4\2\u022a\u022a\u024f\u024f\4\2\b\t\u00dc\u00dc\5\2\u00d6"+
		"\u00d6\u00f8\u00f8\u00fa\u00fa\4\2\u014e\u014e\u0151\u0151\4\2\13\13\u00ee"+
		"\u00ee\3\2\u031e\u031f\4\2\4\4\u013e\u013e\4\2\u00b7\u00b7\u017c\u017c"+
		"\3\2\u0107\u0108\4\2\u031c\u031c\u0320\u0321\4\2\u00cf\u00cf\u016a\u016a"+
		"\4\2\u00ca\u00ca\u0147\u0147\4\2\u010e\u010e\u01e3\u01e3\4\2\u031e\u031e"+
		"\u0320\u0320\4\2^^\u0092\u0092\6\2]]\u00a3\u00a3\u0133\u0133\u016d\u016d"+
		"\4\2\36\36\u0202\u0202\4\2\u00a3\u00a3\u016d\u016d\4\2]]\u016d\u016d\5"+
		"\2\u020d\u020d\u024f\u024f\u02ec\u02ec\4\2\u0301\u0301\u031c\u031c\5\2"+
		"BB\u0140\u0140\u01f8\u01f8\4\2ZZ\u0320\u0320\4\2ZZ\u031c\u031c\4\2\u0239"+
		"\u0239\u0320\u0320\5\2\u020d\u020d\u022a\u022a\u024f\u024f\7\2\u0188\u018a"+
		"\u01dd\u01dd\u01df\u01df\u029a\u029c\u02f6\u02f7\4\2\u0086\u0086\u008c"+
		"\u008c\5\2\u0218\u0218\u023f\u023f\u0250\u0250\5\2\r\r\u015a\u015a\u0222"+
		"\u0222\4\2\u00d6\u00d6\u00f4\u00f4\3\2\u0103\u0104\5\2]]\u00a3\u00a3\u016d"+
		"\u016d\4\2\u0086\u0086\u018c\u018c\4\2\u027c\u027d\u02a1\u02a1\4\2\u00f6"+
		"\u00f6\u02bd\u02bd\4\2\6\6\u009f\u009f\5\2\u01ef\u01ef\u02bf\u02bf\u0308"+
		"\u0308\5\2\u0157\u0157\u019c\u019c\u01e3\u01e3\5\2\u01d1\u01d1\u021a\u021a"+
		"\u0258\u0258\4\2\u0210\u0210\u0239\u0239\4\2\6\6\u00a7\u00a8\5\2\u00ac"+
		"\u00ac\u00d1\u00d1\u00df\u00df\5\2\u0114\u0114\u0154\u0154\u01e5\u01e5"+
		"\4\2ll\u01e5\u01e5\5\2\6\6\u0180\u0180\u0283\u0283\4\2\u008d\u008d\u00e3"+
		"\u00e3\5\2\u01ea\u01ea\u0274\u0274\u0277\u0277\4\2\u029e\u029e\u02a0\u02a0"+
		"\5\2\u025e\u025e\u02b5\u02b5\u02d6\u02d6\5\2\u0191\u0191\u01e5\u01e5\u0208"+
		"\u0208\4\2\u0119\u0119\u02e6\u02e6\4\2\u0208\u0208\u02d5\u02d5\5\2\u008d"+
		"\u008d\u01ae\u01ae\u02d5\u02d5\5\2\u00d6\u00d6\u01b6\u01b6\u02f4\u02f4"+
		"\4\2\u0258\u0258\u02c7\u02c7\4\2\u0082\u0082\u01fe\u01fe\5\2bb\u0159\u0159"+
		"\u016f\u016f\4\299\u00db\u00db\4\2\u00a1\u00a1\u00d4\u00d4\4\2\u00d8\u00d8"+
		"\u0142\u0142\4\2\u00d3\u00d3\u0209\u0209\4\2\u00da\u00da\u01b6\u01b6\4"+
		"\2CC\u0153\u0153\4\2\u00d7\u00d7\u011f\u011f\4\2\u00ba\u00ba\u00d9\u00d9"+
		"\4\2\u0188\u018a\u02f7\u02f7\4\2\u0172\u0172\u023d\u023d\3\2\u027c\u027d"+
		"\4\2\u0082\u0082\u0321\u0321\4\2\u01d4\u01d4\u01ef\u01ef\4\2\u01f6\u01f6"+
		"\u02dc\u02dc\4\2\u0157\u0157\u0176\u0176\3\2\u0161\u0162\6\2\u01af\u01af"+
		"\u027e\u027e\u02cb\u02cb\u0320\u0320\4\2\u01bf\u01bf\u01e7\u01e7\4\2\20"+
		"\20;;\4\2\u0224\u0224\u02cc\u02cc\4\2\u020a\u020a\u02c1\u02c1\6\2\u01e8"+
		"\u01e8\u01fd\u01fd\u022f\u022f\u02dd\u02dd\5\2\u027a\u027a\u029e\u029e"+
		"\u02c2\u02c2\4\2\u0182\u0182\u02a7\u02a7\3\2\u033b\u033d\5\2\u0330\u0330"+
		"\u033e\u033f\u0341\u0343\3\2\u033e\u033f\5\2\6\6\r\r\u0144\u0144\4\2\6"+
		"\6cc\3\2\u0322\u0323\4\2\u02ba\u02ba\u02bd\u02bd\4\2\u0203\u0203\u0264"+
		"\u0264\4\2\3\3\u0313\u0313\4\2\u019c\u019c\u0284\u0284\5\2\u01a8\u01a8"+
		"\u02b8\u02b8\u02fc\u02fc\4\2\21\21__\4\2\u00ef\u00ef\u0216\u0216\5\2\u00ca"+
		"\u00ca\u01bd\u01bd\u0216\u0216\5\2\u00ca\u00ca\u0216\u0216\u023e\u023e"+
		"\4\2\u00e0\u00e0\u031b\u031c\5\2\u008d\u008d\u00b2\u00b2\u0120\u0120\6"+
		"\2\u00ca\u00ca\u0216\u0216\u023e\u023e\u02a8\u02a8\4\2\u031b\u031b\u031d"+
		"\u031d\5\2\u01db\u01db\u0299\u0299\u02bb\u02bb\b\2\u01a4\u01a4\u0243\u0243"+
		"\u0253\u0253\u02e0\u02e1\u02e5\u02e5\u0306\u0307\3\2\u01c2\u01c3\4\2\u0204"+
		"\u0204\u0232\u0232\4\2\u0230\u0230\u0233\u0233\4\2\u0298\u0298\u02bd\u02bd"+
		"\5\2\u008d\u008d\u00e3\u00e3\u029e\u029e\4\2\65\65\u00d5\u00d5\3\2\u0111"+
		"\u0112\4\2\u0243\u0243\u031c\u031c\4\2\u031c\u031c\u0322\u0322\37\2(("+
		"SSss\u0083\u0084\u0087\u0087\u00a1\u00a1\u00ad\u00ad\u00be\u00bf\u00e4"+
		"\u00e4\u00f2\u00f2\u0106\u0106\u0108\u0108\u010a\u010a\u011b\u011c\u0123"+
		"\u0123\u012a\u012a\u0138\u0138\u0141\u0141\u0145\u0145\u014c\u014c\u014e"+
		"\u014e\u015a\u015a\u0182\u01e8\u01ea\u021f\u0221\u0228\u022a\u030b\u030d"+
		"\u030f\u0311\u0311\u031d\u031d\3\2\u0328\u032f\7\2\u020d\u020d\u022a\u022a"+
		"\u024f\u024f\u02ec\u02ec\u033d\u033d\2\u308d\2\u03c7\3\2\2\2\4\u03dd\3"+
		"\2\2\2\6\u03e3\3\2\2\2\b\u03ee\3\2\2\2\n\u03f5\3\2\2\2\f\u0496\3\2\2\2"+
		"\16\u049d\3\2\2\2\20\u04ab\3\2\2\2\22\u04ad\3\2\2\2\24\u04b8\3\2\2\2\26"+
		"\u04bc\3\2\2\2\30\u04ca\3\2\2\2\32\u04cc\3\2\2\2\34\u04d3\3\2\2\2\36\u04dd"+
		"\3\2\2\2 \u04e9\3\2\2\2\"\u04eb\3\2\2\2$\u04ed\3\2\2\2&\u04ef\3\2\2\2"+
		"(\u0509\3\2\2\2*\u051a\3\2\2\2,\u0527\3\2\2\2.\u0556\3\2\2\2\60\u0558"+
		"\3\2\2\2\62\u0567\3\2\2\2\64\u0569\3\2\2\2\66\u0586\3\2\2\28\u059b\3\2"+
		"\2\2:\u05a8\3\2\2\2<\u05ad\3\2\2\2>\u05b1\3\2\2\2@\u05b5\3\2\2\2B\u05c0"+
		"\3\2\2\2D\u05c5\3\2\2\2F\u05c7\3\2\2\2H\u05cc\3\2\2\2J\u05ce\3\2\2\2L"+
		"\u05d0\3\2\2\2N\u05d3\3\2\2\2P\u05d7\3\2\2\2R\u05dd\3\2\2\2T\u05df\3\2"+
		"\2\2V\u05e2\3\2\2\2X\u05e4\3\2\2\2Z\u05e7\3\2\2\2\\\u05ec\3\2\2\2^\u05f7"+
		"\3\2\2\2`\u0600\3\2\2\2b\u0604\3\2\2\2d\u0606\3\2\2\2f\u060c\3\2\2\2h"+
		"\u060e\3\2\2\2j\u0610\3\2\2\2l\u0613\3\2\2\2n\u061b\3\2\2\2p\u061d\3\2"+
		"\2\2r\u061f\3\2\2\2t\u0635\3\2\2\2v\u0648\3\2\2\2x\u0650\3\2\2\2z\u0654"+
		"\3\2\2\2|\u065c\3\2\2\2~\u066b\3\2\2\2\u0080\u066d\3\2\2\2\u0082\u0699"+
		"\3\2\2\2\u0084\u06a2\3\2\2\2\u0086\u06af\3\2\2\2\u0088\u06b1\3\2\2\2\u008a"+
		"\u06b3\3\2\2\2\u008c\u06b6\3\2\2\2\u008e\u06ba\3\2\2\2\u0090\u06c4\3\2"+
		"\2\2\u0092\u06ce\3\2\2\2\u0094\u06fa\3\2\2\2\u0096\u0711\3\2\2\2\u0098"+
		"\u0713\3\2\2\2\u009a\u0715\3\2\2\2\u009c\u0717\3\2\2\2\u009e\u071c\3\2"+
		"\2\2\u00a0\u071f\3\2\2\2\u00a2\u0882\3\2\2\2\u00a4\u0884\3\2\2\2\u00a6"+
		"\u08ba\3\2\2\2\u00a8\u08bf\3\2\2\2\u00aa\u08eb\3\2\2\2\u00ac\u0902\3\2"+
		"\2\2\u00ae\u0920\3\2\2\2\u00b0\u0924\3\2\2\2\u00b2\u092a\3\2\2\2\u00b4"+
		"\u0930\3\2\2\2\u00b6\u0934\3\2\2\2\u00b8\u0938\3\2\2\2\u00ba\u093d\3\2"+
		"\2\2\u00bc\u094b\3\2\2\2\u00be\u0951\3\2\2\2\u00c0\u0957\3\2\2\2\u00c2"+
		"\u0967\3\2\2\2\u00c4\u096b\3\2\2\2\u00c6\u0971\3\2\2\2\u00c8\u0977\3\2"+
		"\2\2\u00ca\u097f\3\2\2\2\u00cc\u0985\3\2\2\2\u00ce\u0994\3\2\2\2\u00d0"+
		"\u09a6\3\2\2\2\u00d2\u09ad\3\2\2\2\u00d4\u09b2\3\2\2\2\u00d6\u09bd\3\2"+
		"\2\2\u00d8\u09c2\3\2\2\2\u00da\u09c6\3\2\2\2\u00dc\u09ca\3\2\2\2\u00de"+
		"\u09cf\3\2\2\2\u00e0\u09d4\3\2\2\2\u00e2\u09d9\3\2\2\2\u00e4\u09e7\3\2"+
		"\2\2\u00e6\u09ed\3\2\2\2\u00e8\u09f2\3\2\2\2\u00ea\u09fa\3\2\2\2\u00ec"+
		"\u09fe\3\2\2\2\u00ee\u0a0f\3\2\2\2\u00f0\u0a17\3\2\2\2\u00f2\u0a1d\3\2"+
		"\2\2\u00f4\u0a2b\3\2\2\2\u00f6\u0a41\3\2\2\2\u00f8\u0a46\3\2\2\2\u00fa"+
		"\u0a4c\3\2\2\2\u00fc\u0a51\3\2\2\2\u00fe\u0a55\3\2\2\2\u0100\u0a71\3\2"+
		"\2\2\u0102\u0a7c\3\2\2\2\u0104\u0a85\3\2\2\2\u0106\u0a92\3\2\2\2\u0108"+
		"\u0a9a\3\2\2\2\u010a\u0a9f\3\2\2\2\u010c\u0aaa\3\2\2\2\u010e\u0ac8\3\2"+
		"\2\2\u0110\u0ae6\3\2\2\2\u0112\u0af4\3\2\2\2\u0114\u0b0c\3\2\2\2\u0116"+
		"\u0b1c\3\2\2\2\u0118\u0b29\3\2\2\2\u011a\u0b3c\3\2\2\2\u011c\u0b49\3\2"+
		"\2\2\u011e\u0b52\3\2\2\2\u0120\u0b70\3\2\2\2\u0122\u0c63\3\2\2\2\u0124"+
		"\u0c6c\3\2\2\2\u0126\u0ca6\3\2\2\2\u0128\u0cd7\3\2\2\2\u012a\u0cd9\3\2"+
		"\2\2\u012c\u0d02\3\2\2\2\u012e\u0d34\3\2\2\2\u0130\u0d7a\3\2\2\2\u0132"+
		"\u0dbd\3\2\2\2\u0134\u0dcd\3\2\2\2\u0136\u0de9\3\2\2\2\u0138\u0dfc\3\2"+
		"\2\2\u013a\u0e11\3\2\2\2\u013c\u0e59\3\2\2\2\u013e\u0eb8\3\2\2\2\u0140"+
		"\u0ece\3\2\2\2\u0142\u0eda\3\2\2\2\u0144\u0ef6\3\2\2\2\u0146\u0f0b\3\2"+
		"\2\2\u0148\u0f25\3\2\2\2\u014a\u0f2e\3\2\2\2\u014c\u0f4e\3\2\2\2\u014e"+
		"\u0f58\3\2\2\2\u0150\u0f68\3\2\2\2\u0152\u0f74\3\2\2\2\u0154\u0f7d\3\2"+
		"\2\2\u0156\u0f8e\3\2\2\2\u0158\u0fa6\3\2\2\2\u015a\u1012\3\2\2\2\u015c"+
		"\u102c\3\2\2\2\u015e\u1038\3\2\2\2\u0160\u103f\3\2\2\2\u0162\u106b\3\2"+
		"\2\2\u0164\u1076\3\2\2\2\u0166\u108a\3\2\2\2\u0168\u10b4\3\2\2\2\u016a"+
		"\u10bb\3\2\2\2\u016c\u10c9\3\2\2\2\u016e\u10db\3\2\2\2\u0170\u1121\3\2"+
		"\2\2\u0172\u114c\3\2\2\2\u0174\u1182\3\2\2\2\u0176\u120b\3\2\2\2\u0178"+
		"\u129a\3\2\2\2\u017a\u12b7\3\2\2\2\u017c\u12d4\3\2\2\2\u017e\u1343\3\2"+
		"\2\2\u0180\u1350\3\2\2\2\u0182\u1358\3\2\2\2\u0184\u1360\3\2\2\2\u0186"+
		"\u1376\3\2\2\2\u0188\u1394\3\2\2\2\u018a\u13af\3\2\2\2\u018c\u13c3\3\2"+
		"\2\2\u018e\u13f3\3\2\2\2\u0190\u1418\3\2\2\2\u0192\u14e4\3\2\2\2\u0194"+
		"\u1502\3\2\2\2\u0196\u1504\3\2\2\2\u0198\u1524\3\2\2\2\u019a\u1553\3\2"+
		"\2\2\u019c\u1587\3\2\2\2\u019e\u1597\3\2\2\2\u01a0\u15a5\3\2\2\2\u01a2"+
		"\u15ee\3\2\2\2\u01a4\u160d\3\2\2\2\u01a6\u160f\3\2\2\2\u01a8\u1613\3\2"+
		"\2\2\u01aa\u1631\3\2\2\2\u01ac\u1633\3\2\2\2\u01ae\u1648\3\2\2\2\u01b0"+
		"\u16a1\3\2\2\2\u01b2\u16a3\3\2\2\2\u01b4\u16b0\3\2\2\2\u01b6\u16e8\3\2"+
		"\2\2\u01b8\u16eb\3\2\2\2\u01ba\u1719\3\2\2\2\u01bc\u171c\3\2\2\2\u01be"+
		"\u173d\3\2\2\2\u01c0\u174e\3\2\2\2\u01c2\u1751\3\2\2\2\u01c4\u178c\3\2"+
		"\2\2\u01c6\u17a4\3\2\2\2\u01c8\u17b4\3\2\2\2\u01ca\u17b6\3\2\2\2\u01cc"+
		"\u17e7\3\2\2\2\u01ce\u1810\3\2\2\2\u01d0\u183c\3\2\2\2\u01d2\u1844\3\2"+
		"\2\2\u01d4\u1871\3\2\2\2\u01d6\u1873\3\2\2\2\u01d8\u187b\3\2\2\2\u01da"+
		"\u189c\3\2\2\2\u01dc\u18a4\3\2\2\2\u01de\u18bf\3\2\2\2\u01e0\u18d7\3\2"+
		"\2\2\u01e2\u18f7\3\2\2\2\u01e4\u1915\3\2\2\2\u01e6\u192c\3\2\2\2\u01e8"+
		"\u193a\3\2\2\2\u01ea\u193c\3\2\2\2\u01ec\u195b\3\2\2\2\u01ee\u1969\3\2"+
		"\2\2\u01f0\u1989\3\2\2\2\u01f2\u199f\3\2\2\2\u01f4\u19bd\3\2\2\2\u01f6"+
		"\u19bf\3\2\2\2\u01f8\u19f2\3\2\2\2\u01fa\u1a20\3\2\2\2\u01fc\u1a33\3\2"+
		"\2\2\u01fe\u1a35\3\2\2\2\u0200\u1a4e\3\2\2\2\u0202\u1a50\3\2\2\2\u0204"+
		"\u1a58\3\2\2\2\u0206\u1a5a\3\2\2\2\u0208\u1ae6\3\2\2\2\u020a\u1aee\3\2"+
		"\2\2\u020c\u1af0\3\2\2\2\u020e\u1af2\3\2\2\2\u0210\u1af4\3\2\2\2\u0212"+
		"\u1b02\3\2\2\2\u0214\u1b08\3\2\2\2\u0216\u1b0a\3\2\2\2\u0218\u1b0c\3\2"+
		"\2\2\u021a\u1b11\3\2\2\2\u021c\u1b13\3\2\2\2\u021e\u1b17\3\2\2\2\u0220"+
		"\u1b23\3\2\2\2\u0222\u1b25\3\2\2\2\u0224\u1b28\3\2\2\2\u0226\u1b2b\3\2"+
		"\2\2\u0228\u1b2d\3\2\2\2\u022a\u1b2f\3\2\2\2\u022c\u1b31\3\2\2\2\u022e"+
		"\u1b4e\3\2\2\2\u0230\u1b50\3\2\2\2\u0232\u1b5b\3\2\2\2\u0234\u1b5e\3\2"+
		"\2\2\u0236\u1b67\3\2\2\2\u0238\u1b6f\3\2\2\2\u023a\u1b76\3\2\2\2\u023c"+
		"\u1b8d\3\2\2\2\u023e\u1b8f\3\2\2\2\u0240\u1b9a\3\2\2\2\u0242\u1b9c\3\2"+
		"\2\2\u0244\u1bb7\3\2\2\2\u0246\u1bbe\3\2\2\2\u0248\u1bc4\3\2\2\2\u024a"+
		"\u1bd7\3\2\2\2\u024c\u1bd9\3\2\2\2\u024e\u1bea\3\2\2\2\u0250\u1c01\3\2"+
		"\2\2\u0252\u1c12\3\2\2\2\u0254\u1c23\3\2\2\2\u0256\u1c2d\3\2\2\2\u0258"+
		"\u1c3e\3\2\2\2\u025a\u1c4f\3\2\2\2\u025c\u1c59\3\2\2\2\u025e\u1c5b\3\2"+
		"\2\2\u0260\u1c62\3\2\2\2\u0262\u1c9e\3\2\2\2\u0264\u1cbd\3\2\2\2\u0266"+
		"\u1cbf\3\2\2\2\u0268\u1db9\3\2\2\2\u026a\u1ea7\3\2\2\2\u026c\u1ecf\3\2"+
		"\2\2\u026e\u1edc\3\2\2\2\u0270\u1eea\3\2\2\2\u0272\u1f17\3\2\2\2\u0274"+
		"\u1f1b\3\2\2\2\u0276\u1f28\3\2\2\2\u0278\u1f65\3\2\2\2\u027a\u1f67\3\2"+
		"\2\2\u027c\u1f8c\3\2\2\2\u027e\u1f8e\3\2\2\2\u0280\u1f9e\3\2\2\2\u0282"+
		"\u1fab\3\2\2\2\u0284\u1fbf\3\2\2\2\u0286\u1fcc\3\2\2\2\u0288\u1ff1\3\2"+
		"\2\2\u028a\u2002\3\2\2\2\u028c\u2004\3\2\2\2\u028e\u2011\3\2\2\2\u0290"+
		"\u202a\3\2\2\2\u0292\u2046\3\2\2\2\u0294\u206f\3\2\2\2\u0296\u20c2\3\2"+
		"\2\2\u0298\u20c4\3\2\2\2\u029a\u20c8\3\2\2\2\u029c\u20cd\3\2\2\2\u029e"+
		"\u20d1\3\2\2\2\u02a0\u20e0\3\2\2\2\u02a2\u20e5\3\2\2\2\u02a4\u20e9\3\2"+
		"\2\2\u02a6\u20f2\3\2\2\2\u02a8\u20f7\3\2\2\2\u02aa\u20ff\3\2\2\2\u02ac"+
		"\u2103\3\2\2\2\u02ae\u2110\3\2\2\2\u02b0\u2112\3\2\2\2\u02b2\u213f\3\2"+
		"\2\2\u02b4\u2149\3\2\2\2\u02b6\u2174\3\2\2\2\u02b8\u21b8\3\2\2\2\u02ba"+
		"\u21c3\3\2\2\2\u02bc\u21ce\3\2\2\2\u02be\u21da\3\2\2\2\u02c0\u21e1\3\2"+
		"\2\2\u02c2\u220a\3\2\2\2\u02c4\u2215\3\2\2\2\u02c6\u2217\3\2\2\2\u02c8"+
		"\u2266\3\2\2\2\u02ca\u226a\3\2\2\2\u02cc\u2274\3\2\2\2\u02ce\u2290\3\2"+
		"\2\2\u02d0\u22ab\3\2\2\2\u02d2\u22b1\3\2\2\2\u02d4\u22bb\3\2\2\2\u02d6"+
		"\u22c5\3\2\2\2\u02d8\u22c7\3\2\2\2\u02da\u22e3\3\2\2\2\u02dc\u22e5\3\2"+
		"\2\2\u02de\u2301\3\2\2\2\u02e0\u2303\3\2\2\2\u02e2\u230b\3\2\2\2\u02e4"+
		"\u2313\3\2\2\2\u02e6\u231c\3\2\2\2\u02e8\u2357\3\2\2\2\u02ea\u235e\3\2"+
		"\2\2\u02ec\u236c\3\2\2\2\u02ee\u2375\3\2\2\2\u02f0\u239c\3\2\2\2\u02f2"+
		"\u23ac\3\2\2\2\u02f4\u23b3\3\2\2\2\u02f6\u23b5\3\2\2\2\u02f8\u2424\3\2"+
		"\2\2\u02fa\u2426\3\2\2\2\u02fc\u2429\3\2\2\2\u02fe\u242d\3\2\2\2\u0300"+
		"\u242f\3\2\2\2\u0302\u2468\3\2\2\2\u0304\u246a\3\2\2\2\u0306\u2473\3\2"+
		"\2\2\u0308\u247b\3\2\2\2\u030a\u248b\3\2\2\2\u030c\u2490\3\2\2\2\u030e"+
		"\u24ad\3\2\2\2\u0310\u24b7\3\2\2\2\u0312\u24bd\3\2\2\2\u0314\u24bf\3\2"+
		"\2\2\u0316\u24cc\3\2\2\2\u0318\u24ce\3\2\2\2\u031a\u2503\3\2\2\2\u031c"+
		"\u2505\3\2\2\2\u031e\u2516\3\2\2\2\u0320\u251e\3\2\2\2\u0322\u2523\3\2"+
		"\2\2\u0324\u254d\3\2\2\2\u0326\u254f\3\2\2\2\u0328\u2557\3\2\2\2\u032a"+
		"\u2561\3\2\2\2\u032c\u2569\3\2\2\2\u032e\u2587\3\2\2\2\u0330\u2589\3\2"+
		"\2\2\u0332\u2597\3\2\2\2\u0334\u261d\3\2\2\2\u0336\u2624\3\2\2\2\u0338"+
		"\u2651\3\2\2\2\u033a\u2669\3\2\2\2\u033c\u266b\3\2\2\2\u033e\u2672\3\2"+
		"\2\2\u0340\u2679\3\2\2\2\u0342\u2680\3\2\2\2\u0344\u2685\3\2\2\2\u0346"+
		"\u268b\3\2\2\2\u0348\u2690\3\2\2\2\u034a\u2694\3\2\2\2\u034c\u2699\3\2"+
		"\2\2\u034e\u26a8\3\2\2\2\u0350\u26b7\3\2\2\2\u0352\u26ed\3\2\2\2\u0354"+
		"\u26ef\3\2\2\2\u0356\u26fc\3\2\2\2\u0358\u26fe\3\2\2\2\u035a\u270c\3\2"+
		"\2\2\u035c\u271e\3\2\2\2\u035e\u2740\3\2\2\2\u0360\u2756\3\2\2\2\u0362"+
		"\u2759\3\2\2\2\u0364\u275d\3\2\2\2\u0366\u276c\3\2\2\2\u0368\u2775\3\2"+
		"\2\2\u036a\u2779\3\2\2\2\u036c\u2781\3\2\2\2\u036e\u2787\3\2\2\2\u0370"+
		"\u27ab\3\2\2\2\u0372\u27ad\3\2\2\2\u0374\u27ba\3\2\2\2\u0376\u27bc\3\2"+
		"\2\2\u0378\u27d1\3\2\2\2\u037a\u280f\3\2\2\2\u037c\u2818\3\2\2\2\u037e"+
		"\u281f\3\2\2\2\u0380\u2832\3\2\2\2\u0382\u2850\3\2\2\2\u0384\u2855\3\2"+
		"\2\2\u0386\u285c\3\2\2\2\u0388\u286b\3\2\2\2\u038a\u287a\3\2\2\2\u038c"+
		"\u287e\3\2\2\2\u038e\u28b0\3\2\2\2\u0390\u28b2\3\2\2\2\u0392\u28c0\3\2"+
		"\2\2\u0394\u28ca\3\2\2\2\u0396\u28cc\3\2\2\2\u0398\u28ce\3\2\2\2\u039a"+
		"\u28d1\3\2\2\2\u039c\u28dc\3\2\2\2\u039e\u28e3\3\2\2\2\u03a0\u28e5\3\2"+
		"\2\2\u03a2\u28f1\3\2\2\2\u03a4\u2921\3\2\2\2\u03a6\u2925\3\2\2\2\u03a8"+
		"\u2927\3\2\2\2\u03aa\u293c\3\2\2\2\u03ac\u294b\3\2\2\2\u03ae\u295b\3\2"+
		"\2\2\u03b0\u295d\3\2\2\2\u03b2\u2981\3\2\2\2\u03b4\u2986\3\2\2\2\u03b6"+
		"\u2997\3\2\2\2\u03b8\u2999\3\2\2\2\u03ba\u299e\3\2\2\2\u03bc\u29a0\3\2"+
		"\2\2\u03be\u29b1\3\2\2\2\u03c0\u29b3\3\2\2\2\u03c2\u29b5\3\2\2\2\u03c4"+
		"\u03c6\5\4\3\2\u03c5\u03c4\3\2\2\2\u03c6\u03c9\3\2\2\2\u03c7\u03c5\3\2"+
		"\2\2\u03c7\u03c8\3\2\2\2\u03c8\u03ca\3\2\2\2\u03c9\u03c7\3\2\2\2\u03ca"+
		"\u03cb\7\2\2\3\u03cb\3\3\2\2\2\u03cc\u03d0\5\u0272\u013a\2\u03cd\u03cf"+
		"\5\u0298\u014d\2\u03ce\u03cd\3\2\2\2\u03cf\u03d2\3\2\2\2\u03d0\u03ce\3"+
		"\2\2\2\u03d0\u03d1\3\2\2\2\u03d1\u03de\3\2\2\2\u03d2\u03d0\3\2\2\2\u03d3"+
		"\u03d5\5\u0272\u013a\2\u03d4\u03d3\3\2\2\2\u03d4\u03d5\3\2\2\2\u03d5\u03d6"+
		"\3\2\2\2\u03d6\u03da\5\6\4\2\u03d7\u03d9\5\u0298\u014d\2\u03d8\u03d7\3"+
		"\2\2\2\u03d9\u03dc\3\2\2\2\u03da\u03d8\3\2\2\2\u03da\u03db\3\2\2\2\u03db"+
		"\u03de\3\2\2\2\u03dc\u03da\3\2\2\2\u03dd\u03cc\3\2\2\2\u03dd\u03d4\3\2"+
		"\2\2\u03de\5\3\2\2\2\u03df\u03e1\5\b\5\2\u03e0\u03e2\7\u0339\2\2\u03e1"+
		"\u03e0\3\2\2\2\u03e1\u03e2\3\2\2\2\u03e2\u03e4\3\2\2\2\u03e3\u03df\3\2"+
		"\2\2\u03e4\u03e5\3\2\2\2\u03e5\u03e3\3\2\2\2\u03e5\u03e6\3\2\2\2\u03e6"+
		"\7\3\2\2\2\u03e7\u03ef\5\n\6\2\u03e8\u03ef\5\f\7\2\u03e9\u03ef\5\20\t"+
		"\2\u03ea\u03ef\5\u029e\u0150\2\u03eb\u03ef\5\60\31\2\u03ec\u03ef\5\62"+
		"\32\2\u03ed\u03ef\5\16\b\2\u03ee\u03e7\3\2\2\2\u03ee\u03e8\3\2\2\2\u03ee"+
		"\u03e9\3\2\2\2\u03ee\u03ea\3\2\2\2\u03ee\u03eb\3\2\2\2\u03ee\u03ec\3\2"+
		"\2\2\u03ee\u03ed\3\2\2\2\u03ef\t\3\2\2\2\u03f0\u03f6\5\u01ae\u00d8\2\u03f1"+
		"\u03f6\5\u01b4\u00db\2\u03f2\u03f6\5\u01b8\u00dd\2\u03f3\u03f6\5\u01be"+
		"\u00e0\2\u03f4\u03f6\5\u01c2\u00e2\2\u03f5\u03f0\3\2\2\2\u03f5\u03f1\3"+
		"\2\2\2\u03f5\u03f2\3\2\2\2\u03f5\u03f3\3\2\2\2\u03f5\u03f4\3\2\2\2\u03f6"+
		"\13\3\2\2\2\u03f7\u0497\5\64\33\2\u03f8\u0497\5<\37\2\u03f9\u0497\5v<"+
		"\2\u03fa\u0497\5\u0084C\2\u03fb\u0497\5\u0090I\2\u03fc\u0497\5\u0092J"+
		"\2\u03fd\u0497\5\u008eH\2\u03fe\u0497\5\u009eP\2\u03ff\u0497\5\u00a8U"+
		"\2\u0400\u0497\5\u00aaV\2\u0401\u0497\5\u0116\u008c\2\u0402\u0497\5\u011a"+
		"\u008e\2\u0403\u0497\5\u01f8\u00fd\2\u0404\u0497\5\u015c\u00af\2\u0405"+
		"\u0497\5\u0206\u0104\2\u0406\u0497\5\u0120\u0091\2\u0407\u0497\5\u0128"+
		"\u0095\2\u0408\u0497\5\u012a\u0096\2\u0409\u0497\5\u012e\u0098\2\u040a"+
		"\u0497\5\u0132\u009a\2\u040b\u0497\5\u0136\u009c\2\u040c\u0497\5\u013e"+
		"\u00a0\2\u040d\u0497\5\u0142\u00a2\2\u040e\u0497\5\u013a\u009e\2\u040f"+
		"\u0497\5\u014a\u00a6\2\u0410\u0497\5\u0146\u00a4\2\u0411\u0497\5\u014e"+
		"\u00a8\2\u0412\u0497\5\u0150\u00a9\2\u0413\u0497\5\u0152\u00aa\2\u0414"+
		"\u0497\5\u0154\u00ab\2\u0415\u0497\5\u015a\u00ae\2\u0416\u0497\5\u016a"+
		"\u00b6\2\u0417\u0497\5\u0164\u00b3\2\u0418\u0497\5\u0170\u00b9\2\u0419"+
		"\u0497\5\u0174\u00bb\2\u041a\u0497\5\u0178\u00bd\2\u041b\u0497\5\u017c"+
		"\u00bf\2\u041c\u0497\5\u017e\u00c0\2\u041d\u0497\5\u0182\u00c2\2\u041e"+
		"\u0497\5\u0184\u00c3\2\u041f\u0497\5\u0188\u00c5\2\u0420\u0497\5\u018a"+
		"\u00c6\2\u0421\u0497\5\u01f6\u00fc\2\u0422\u0497\5\u0190\u00c9\2\u0423"+
		"\u0497\5\u0196\u00cc\2\u0424\u0497\5\u0198\u00cd\2\u0425\u0497\5\66\34"+
		"\2\u0426\u0497\5r:\2\u0427\u0497\5\u0080A\2\u0428\u0497\5\u00acW\2\u0429"+
		"\u0497\5\u0114\u008b\2\u042a\u0497\5\u0118\u008d\2\u042b\u0497\5\u011c"+
		"\u008f\2\u042c\u0497\5\u01ca\u00e6\2\u042d\u0497\5\u015e\u00b0\2\u042e"+
		"\u0497\5\u011e\u0090\2\u042f\u0497\5\u012c\u0097\2\u0430\u0497\5\u0130"+
		"\u0099\2\u0431\u0497\5\u0134\u009b\2\u0432\u0497\5\u0138\u009d\2\u0433"+
		"\u0497\5\u01cc\u00e7\2\u0434\u0497\5\u0140\u00a1\2\u0435\u0497\5\u0144"+
		"\u00a3\2\u0436\u0497\5\u013c\u009f\2\u0437\u0497\5\u014c\u00a7\2\u0438"+
		"\u0497\5\u0148\u00a5\2\u0439\u0497\5\u00a4S\2\u043a\u0497\5\u01dc\u00ef"+
		"\2\u043b\u0497\5\u01ce\u00e8\2\u043c\u0497\5\u01d0\u00e9\2\u043d\u0497"+
		"\5\u0156\u00ac\2\u043e\u0497\5\u0158\u00ad\2\u043f\u0497\5\u0160\u00b1"+
		"\2\u0440\u0497\5\u0162\u00b2\2\u0441\u0497\5\u0166\u00b4\2\u0442\u0497"+
		"\5\u0168\u00b5\2\u0443\u0497\5\u016c\u00b7\2\u0444\u0497\5\u016e\u00b8"+
		"\2\u0445\u0497\5\u0172\u00ba\2\u0446\u0497\5\u0176\u00bc\2\u0447\u0497"+
		"\5\u017a\u00be\2\u0448\u0497\5\u0180\u00c1\2\u0449\u0497\5\u0186\u00c4"+
		"\2\u044a\u0497\5\u01ea\u00f6\2\u044b\u0497\5\u018c\u00c7\2\u044c\u0497"+
		"\5\u018e\u00c8\2\u044d\u0497\5\u01ee\u00f8\2\u044e\u0497\5\u0258\u012d"+
		"\2\u044f\u0497\5\u0192\u00ca\2\u0450\u0497\5\u0194\u00cb\2\u0451\u0497"+
		"\5\u01f2\u00fa\2\u0452\u0497\5\u019a\u00ce\2\u0453\u0497\5\u019c\u00cf"+
		"\2\u0454\u0497\58\35\2\u0455\u0497\5:\36\2\u0456\u0497\5t;\2\u0457\u0497"+
		"\5\u0082B\2\u0458\u0497\5\u009cO\2\u0459\u0497\5\u00a6T\2\u045a\u0497"+
		"\5\u00aeX\2\u045b\u0497\5\u00b0Y\2\u045c\u0497\5\u00b2Z\2\u045d\u0497"+
		"\5\u00b4[\2\u045e\u0497\5\u00b6\\\2\u045f\u0497\5\u00b8]\2\u0460\u0497"+
		"\5\u00ba^\2\u0461\u0497\5\u00bc_\2\u0462\u0497\5\u00be`\2\u0463\u0497"+
		"\5\u00e8u\2\u0464\u0497\5\u00c0a\2\u0465\u0497\5\u00c2b\2\u0466\u0497"+
		"\5\u00ceh\2\u0467\u0497\5\u00d0i\2\u0468\u0497\5\u00c4c\2\u0469\u0497"+
		"\5\u00c6d\2\u046a\u0497\5\u00c8e\2\u046b\u0497\5\u00caf\2\u046c\u0497"+
		"\5\u00ccg\2\u046d\u0497\5\u00d2j\2\u046e\u0497\5\u00d4k\2\u046f\u0497"+
		"\5\u00d6l\2\u0470\u0497\5\u0250\u0129\2\u0471\u0497\5\u0242\u0122\2\u0472"+
		"\u0497\5\u00d8m\2\u0473\u0497\5\u00dan\2\u0474\u0497\5\u00dco\2\u0475"+
		"\u0497\5\u00dep\2\u0476\u0497\5\u00e0q\2\u0477\u0497\5\u0248\u0125\2\u0478"+
		"\u0497\5\u00e2r\2\u0479\u0497\5\u00e4s\2\u047a\u0497\5\u00e6t\2\u047b"+
		"\u0497\5\u00eav\2\u047c\u0497\5\u00ecw\2\u047d\u0497\5\u00eex\2\u047e"+
		"\u0497\5\u00f0y\2\u047f\u0497\5\u00f2z\2\u0480\u0497\5\u00f4{\2\u0481"+
		"\u0497\5\u00f6|\2\u0482\u0497\5\u00f8}\2\u0483\u0497\5\u00fa~\2\u0484"+
		"\u0497\5\u00fc\177\2\u0485\u0497\5\u00fe\u0080\2\u0486\u0497\5\u0252\u012a"+
		"\2\u0487\u0497\5\u0100\u0081\2\u0488\u0497\5\u0102\u0082\2\u0489\u0497"+
		"\5\u0104\u0083\2\u048a\u0497\5\u0254\u012b\2\u048b\u0497\5\u024a\u0126"+
		"\2\u048c\u0497\5\u025a\u012e\2\u048d\u0497\5\u0106\u0084\2\u048e\u0497"+
		"\5\u0256\u012c\2\u048f\u0497\5\u0108\u0085\2\u0490\u0497\5\u010a\u0086"+
		"\2\u0491\u0497\5\u010c\u0087\2\u0492\u0497\5\u010e\u0088\2\u0493\u0497"+
		"\5\u0110\u0089\2\u0494\u0497\5\u0112\u008a\2\u0495\u0497\5\u01ec\u00f7"+
		"\2\u0496\u03f7\3\2\2\2\u0496\u03f8\3\2\2\2\u0496\u03f9\3\2\2\2\u0496\u03fa"+
		"\3\2\2\2\u0496\u03fb\3\2\2\2\u0496\u03fc\3\2\2\2\u0496\u03fd\3\2\2\2\u0496"+
		"\u03fe\3\2\2\2\u0496\u03ff\3\2\2\2\u0496\u0400\3\2\2\2\u0496\u0401\3\2"+
		"\2\2\u0496\u0402\3\2\2\2\u0496\u0403\3\2\2\2\u0496\u0404\3\2\2\2\u0496"+
		"\u0405\3\2\2\2\u0496\u0406\3\2\2\2\u0496\u0407\3\2\2\2\u0496\u0408\3\2"+
		"\2\2\u0496\u0409\3\2\2\2\u0496\u040a\3\2\2\2\u0496\u040b\3\2\2\2\u0496"+
		"\u040c\3\2\2\2\u0496\u040d\3\2\2\2\u0496\u040e\3\2\2\2\u0496\u040f\3\2"+
		"\2\2\u0496\u0410\3\2\2\2\u0496\u0411\3\2\2\2\u0496\u0412\3\2\2\2\u0496"+
		"\u0413\3\2\2\2\u0496\u0414\3\2\2\2\u0496\u0415\3\2\2\2\u0496\u0416\3\2"+
		"\2\2\u0496\u0417\3\2\2\2\u0496\u0418\3\2\2\2\u0496\u0419\3\2\2\2\u0496"+
		"\u041a\3\2\2\2\u0496\u041b\3\2\2\2\u0496\u041c\3\2\2\2\u0496\u041d\3\2"+
		"\2\2\u0496\u041e\3\2\2\2\u0496\u041f\3\2\2\2\u0496\u0420\3\2\2\2\u0496"+
		"\u0421\3\2\2\2\u0496\u0422\3\2\2\2\u0496\u0423\3\2\2\2\u0496\u0424\3\2"+
		"\2\2\u0496\u0425\3\2\2\2\u0496\u0426\3\2\2\2\u0496\u0427\3\2\2\2\u0496"+
		"\u0428\3\2\2\2\u0496\u0429\3\2\2\2\u0496\u042a\3\2\2\2\u0496\u042b\3\2"+
		"\2\2\u0496\u042c\3\2\2\2\u0496\u042d\3\2\2\2\u0496\u042e\3\2\2\2\u0496"+
		"\u042f\3\2\2\2\u0496\u0430\3\2\2\2\u0496\u0431\3\2\2\2\u0496\u0432\3\2"+
		"\2\2\u0496\u0433\3\2\2\2\u0496\u0434\3\2\2\2\u0496\u0435\3\2\2\2\u0496"+
		"\u0436\3\2\2\2\u0496\u0437\3\2\2\2\u0496\u0438\3\2\2\2\u0496\u0439\3\2"+
		"\2\2\u0496\u043a\3\2\2\2\u0496\u043b\3\2\2\2\u0496\u043c\3\2\2\2\u0496"+
		"\u043d\3\2\2\2\u0496\u043e\3\2\2\2\u0496\u043f\3\2\2\2\u0496\u0440\3\2"+
		"\2\2\u0496\u0441\3\2\2\2\u0496\u0442\3\2\2\2\u0496\u0443\3\2\2\2\u0496"+
		"\u0444\3\2\2\2\u0496\u0445\3\2\2\2\u0496\u0446\3\2\2\2\u0496\u0447\3\2"+
		"\2\2\u0496\u0448\3\2\2\2\u0496\u0449\3\2\2\2\u0496\u044a\3\2\2\2\u0496"+
		"\u044b\3\2\2\2\u0496\u044c\3\2\2\2\u0496\u044d\3\2\2\2\u0496\u044e\3\2"+
		"\2\2\u0496\u044f\3\2\2\2\u0496\u0450\3\2\2\2\u0496\u0451\3\2\2\2\u0496"+
		"\u0452\3\2\2\2\u0496\u0453\3\2\2\2\u0496\u0454\3\2\2\2\u0496\u0455\3\2"+
		"\2\2\u0496\u0456\3\2\2\2\u0496\u0457\3\2\2\2\u0496\u0458\3\2\2\2\u0496"+
		"\u0459\3\2\2\2\u0496\u045a\3\2\2\2\u0496\u045b\3\2\2\2\u0496\u045c\3\2"+
		"\2\2\u0496\u045d\3\2\2\2\u0496\u045e\3\2\2\2\u0496\u045f\3\2\2\2\u0496"+
		"\u0460\3\2\2\2\u0496\u0461\3\2\2\2\u0496\u0462\3\2\2\2\u0496\u0463\3\2"+
		"\2\2\u0496\u0464\3\2\2\2\u0496\u0465\3\2\2\2\u0496\u0466\3\2\2\2\u0496"+
		"\u0467\3\2\2\2\u0496\u0468\3\2\2\2\u0496\u0469\3\2\2\2\u0496\u046a\3\2"+
		"\2\2\u0496\u046b\3\2\2\2\u0496\u046c\3\2\2\2\u0496\u046d\3\2\2\2\u0496"+
		"\u046e\3\2\2\2\u0496\u046f\3\2\2\2\u0496\u0470\3\2\2\2\u0496\u0471\3\2"+
		"\2\2\u0496\u0472\3\2\2\2\u0496\u0473\3\2\2\2\u0496\u0474\3\2\2\2\u0496"+
		"\u0475\3\2\2\2\u0496\u0476\3\2\2\2\u0496\u0477\3\2\2\2\u0496\u0478\3\2"+
		"\2\2\u0496\u0479\3\2\2\2\u0496\u047a\3\2\2\2\u0496\u047b\3\2\2\2\u0496"+
		"\u047c\3\2\2\2\u0496\u047d\3\2\2\2\u0496\u047e\3\2\2\2\u0496\u047f\3\2"+
		"\2\2\u0496\u0480\3\2\2\2\u0496\u0481\3\2\2\2\u0496\u0482\3\2\2\2\u0496"+
		"\u0483\3\2\2\2\u0496\u0484\3\2\2\2\u0496\u0485\3\2\2\2\u0496\u0486\3\2"+
		"\2\2\u0496\u0487\3\2\2\2\u0496\u0488\3\2\2\2\u0496\u0489\3\2\2\2\u0496"+
		"\u048a\3\2\2\2\u0496\u048b\3\2\2\2\u0496\u048c\3\2\2\2\u0496\u048d\3\2"+
		"\2\2\u0496\u048e\3\2\2\2\u0496\u048f\3\2\2\2\u0496\u0490\3\2\2\2\u0496"+
		"\u0491\3\2\2\2\u0496\u0492\3\2\2\2\u0496\u0493\3\2\2\2\u0496\u0494\3\2"+
		"\2\2\u0496\u0495\3\2\2\2\u0497\r\3\2\2\2\u0498\u049e\5\u0266\u0134\2\u0499"+
		"\u049e\5\u0268\u0135\2\u049a\u049e\5\u026a\u0136\2\u049b\u049e\5\u026c"+
		"\u0137\2\u049c\u049e\5\u026e\u0138\2\u049d\u0498\3\2\2\2\u049d\u0499\3"+
		"\2\2\2\u049d\u049a\3\2\2\2\u049d\u049b\3\2\2\2\u049d\u049c\3\2\2\2\u049e"+
		"\17\3\2\2\2\u049f\u04ac\5\22\n\2\u04a0\u04ac\5\24\13\2\u04a1\u04ac\5\26"+
		"\f\2\u04a2\u04ac\5\30\r\2\u04a3\u04ac\5\34\17\2\u04a4\u04ac\5\32\16\2"+
		"\u04a5\u04ac\5\36\20\2\u04a6\u04ac\5&\24\2\u04a7\u04ac\5(\25\2\u04a8\u04ac"+
		"\5*\26\2\u04a9\u04ac\5,\27\2\u04aa\u04ac\5.\30\2\u04ab\u049f\3\2\2\2\u04ab"+
		"\u04a0\3\2\2\2\u04ab\u04a1\3\2\2\2\u04ab\u04a2\3\2\2\2\u04ab\u04a3\3\2"+
		"\2\2\u04ab\u04a4\3\2\2\2\u04ab\u04a5\3\2\2\2\u04ab\u04a6\3\2\2\2\u04ab"+
		"\u04a7\3\2\2\2\u04ab\u04a8\3\2\2\2\u04ab\u04a9\3\2\2\2\u04ab\u04aa\3\2"+
		"\2\2\u04ac\21\3\2\2\2\u04ad\u04af\7\34\2\2\u04ae\u04b0\7\u0339\2\2\u04af"+
		"\u04ae\3\2\2\2\u04af\u04b0\3\2\2\2\u04b0\u04b2\3\2\2\2\u04b1\u04b3\5\6"+
		"\4\2\u04b2\u04b1\3\2\2\2\u04b2\u04b3\3\2\2\2\u04b3\u04b4\3\2\2\2\u04b4"+
		"\u04b6\7m\2\2\u04b5\u04b7\7\u0339\2\2\u04b6\u04b5\3\2\2\2\u04b6\u04b7"+
		"\3\2\2\2\u04b7\23\3\2\2\2\u04b8\u04ba\7!\2\2\u04b9\u04bb\7\u0339\2\2\u04ba"+
		"\u04b9\3\2\2\2\u04ba\u04bb\3\2\2\2\u04bb\25\3\2\2\2\u04bc\u04be\7B\2\2"+
		"\u04bd\u04bf\7\u0339\2\2\u04be\u04bd\3\2\2\2\u04be\u04bf\3\2\2\2\u04bf"+
		"\27\3\2\2\2\u04c0\u04c1\7\u0090\2\2\u04c1\u04c3\5\u03ba\u01de\2\u04c2"+
		"\u04c4\7\u0339\2\2\u04c3\u04c2\3\2\2\2\u04c3\u04c4\3\2\2\2\u04c4\u04cb"+
		"\3\2\2\2\u04c5\u04c6\5\u03ba\u01de\2\u04c6\u04c8\7\u033a\2\2\u04c7\u04c9"+
		"\7\u0339\2\2\u04c8\u04c7\3\2\2\2\u04c8\u04c9\3\2\2\2\u04c9\u04cb\3\2\2"+
		"\2\u04ca\u04c0\3\2\2\2\u04ca\u04c5\3\2\2\2\u04cb\31\3\2\2\2\u04cc\u04ce"+
		"\7\u011b\2\2\u04cd\u04cf\5\u02cc\u0167\2\u04ce\u04cd\3\2\2\2\u04ce\u04cf"+
		"\3\2\2\2\u04cf\u04d1\3\2\2\2\u04d0\u04d2\7\u0339\2\2\u04d1\u04d0\3\2\2"+
		"\2\u04d1\u04d2\3\2\2\2\u04d2\33\3\2\2\2\u04d3\u04d4\7\u009a\2\2\u04d4"+
		"\u04d5\5\u02e2\u0172\2\u04d5\u04d8\5\b\5\2\u04d6\u04d7\7k\2\2\u04d7\u04d9"+
		"\5\b\5\2\u04d8\u04d6\3\2\2\2\u04d8\u04d9\3\2\2\2\u04d9\u04db\3\2\2\2\u04da"+
		"\u04dc\7\u0339\2\2\u04db\u04da\3\2\2\2\u04db\u04dc\3\2\2\2\u04dc\35\3"+
		"\2\2\2\u04dd\u04e4\7\u02ee\2\2\u04de\u04df\5 \21\2\u04df\u04e0\7\u0338"+
		"\2\2\u04e0\u04e1\5\"\22\2\u04e1\u04e2\7\u0338\2\2\u04e2\u04e3\5$\23\2"+
		"\u04e3\u04e5\3\2\2\2\u04e4\u04de\3\2\2\2\u04e4\u04e5\3\2\2\2\u04e5\u04e7"+
		"\3\2\2\2\u04e6\u04e8\7\u0339\2\2\u04e7\u04e6\3\2\2\2\u04e7\u04e8\3\2\2"+
		"\2\u04e8\37\3\2\2\2\u04e9\u04ea\t\2\2\2\u04ea!\3\2\2\2\u04eb\u04ec\t\3"+
		"\2\2\u04ec#\3\2\2\2\u04ed\u04ee\t\2\2\2\u04ee%\3\2\2\2\u04ef\u04f0\7\34"+
		"\2\2\u04f0\u04f2\7\u02f9\2\2\u04f1\u04f3\7\u0339\2\2\u04f2\u04f1\3\2\2"+
		"\2\u04f2\u04f3\3\2\2\2\u04f3\u04f5\3\2\2\2\u04f4\u04f6\5\6\4\2\u04f5\u04f4"+
		"\3\2\2\2\u04f5\u04f6\3\2\2\2\u04f6\u04f7\3\2\2\2\u04f7\u04f8\7m\2\2\u04f8"+
		"\u04fa\7\u02f9\2\2\u04f9\u04fb\7\u0339\2\2\u04fa\u04f9\3\2\2\2\u04fa\u04fb"+
		"\3\2\2\2\u04fb\u04fc\3\2\2\2\u04fc\u04fd\7\34\2\2\u04fd\u04ff\7\u01b3"+
		"\2\2\u04fe\u0500\7\u0339\2\2\u04ff\u04fe\3\2\2\2\u04ff\u0500\3\2\2\2\u0500"+
		"\u0502\3\2\2\2\u0501\u0503\5\6\4\2\u0502\u0501\3\2\2\2\u0502\u0503\3\2"+
		"\2\2\u0503\u0504\3\2\2\2\u0504\u0505\7m\2\2\u0505\u0507\7\u01b3\2\2\u0506"+
		"\u0508\7\u0339\2\2\u0507\u0506\3\2\2\2\u0507\u0508\3\2\2\2\u0508\'\3\2"+
		"\2\2\u0509\u050b\7\u0178\2\2\u050a\u050c\5\u01bc\u00df\2\u050b\u050a\3"+
		"\2\2\2\u050b\u050c\3\2\2\2\u050c\u050e\3\2\2\2\u050d\u050f\7\u0338\2\2"+
		"\u050e\u050d\3\2\2\2\u050e\u050f\3\2\2\2\u050f\u0512\3\2\2\2\u0510\u0511"+
		"\t\4\2\2\u0511\u0513\5\u01c0\u00e1\2\u0512\u0510\3\2\2\2\u0512\u0513\3"+
		"\2\2\2\u0513\u0515\3\2\2\2\u0514\u0516\5\u02cc\u0167\2\u0515\u0514\3\2"+
		"\2\2\u0515\u0516\3\2\2\2\u0516\u0518\3\2\2\2\u0517\u0519\7\u0339\2\2\u0518"+
		"\u0517\3\2\2\2\u0518\u0519\3\2\2\2\u0519)\3\2\2\2\u051a\u051b\7\u017b"+
		"\2\2\u051b\u0525\5\u02e2\u0172\2\u051c\u0526\5\b\5\2\u051d\u051f\7!\2"+
		"\2\u051e\u0520\7\u0339\2\2\u051f\u051e\3\2\2\2\u051f\u0520\3\2\2\2\u0520"+
		"\u0526\3\2\2\2\u0521\u0523\7B\2\2\u0522\u0524\7\u0339\2\2\u0523\u0522"+
		"\3\2\2\2\u0523\u0524\3\2\2\2\u0524\u0526\3\2\2\2\u0525\u051c\3\2\2\2\u0525"+
		"\u051d\3\2\2\2\u0525\u0521\3\2\2\2\u0526+\3\2\2\2\u0527\u052a\7\u0102"+
		"\2\2\u0528\u052b\5\u02cc\u0167\2\u0529\u052b\7\u0318\2\2\u052a\u0528\3"+
		"\2\2\2\u052a\u0529\3\2\2\2\u052b\u0530\3\2\2\2\u052c\u052d\7\u0338\2\2"+
		"\u052d\u052f\7\u031b\2\2\u052e\u052c\3\2\2\2\u052f\u0532\3\2\2\2\u0530"+
		"\u052e\3\2\2\2\u0530\u0531\3\2\2\2\u0531\u0534\3\2\2\2\u0532\u0530\3\2"+
		"\2\2\u0533\u0535\7\u0339\2\2\u0534\u0533\3\2\2\2\u0534\u0535\3\2\2\2\u0535"+
		"-\3\2\2\2\u0536\u0537\7\u0109\2\2\u0537\u0538\7\u0336\2\2\u0538\u0539"+
		"\t\5\2\2\u0539\u053a\7\u0338\2\2\u053a\u053b\5\u02ca\u0166\2\u053b\u053c"+
		"\7\u0338\2\2\u053c\u0541\5\u02ca\u0166\2\u053d\u053e\7\u0338\2\2\u053e"+
		"\u0540\5\u02ca\u0166\2\u053f\u053d\3\2\2\2\u0540\u0543\3\2\2\2\u0541\u053f"+
		"\3\2\2\2\u0541\u0542\3\2\2\2\u0542\u0544\3\2\2\2\u0543\u0541\3\2\2\2\u0544"+
		"\u0547\7\u0337\2\2\u0545\u0546\7\u017d\2\2\u0546\u0548\t\6\2\2\u0547\u0545"+
		"\3\2\2\2\u0547\u0548\3\2\2\2\u0548\u054a\3\2\2\2\u0549\u054b\7\u0339\2"+
		"\2\u054a\u0549\3\2\2\2\u054a\u054b\3\2\2\2\u054b\u0557\3\2\2\2\u054c\u054d"+
		"\7\u0109\2\2\u054d\u054e\7\u031c\2\2\u054e\u0553\t\7\2\2\u054f\u0550\7"+
		"\u0338\2\2\u0550\u0552\t\5\2\2\u0551\u054f\3\2\2\2\u0552\u0555\3\2\2\2"+
		"\u0553\u0551\3\2\2\2\u0553\u0554\3\2\2\2\u0554\u0557\3\2\2\2\u0555\u0553"+
		"\3\2\2\2\u0556\u0536\3\2\2\2\u0556\u054c\3\2\2\2\u0557/\3\2\2\2\u0558"+
		"\u0559\7\u0339\2\2\u0559\61\3\2\2\2\u055a\u0568\5\u0262\u0132\2\u055b"+
		"\u0568\5\u0264\u0133\2\u055c\u0568\5\u01aa\u00d6\2\u055d\u0568\5\u01a8"+
		"\u00d5\2\u055e\u0568\5\u019e\u00d0\2\u055f\u0568\5\u01a2\u00d2\2\u0560"+
		"\u0568\5\u0270\u0139\2\u0561\u0568\5\u01ac\u00d7\2\u0562\u0568\5\u0278"+
		"\u013d\2\u0563\u0568\5\u0294\u014b\2\u0564\u0568\5\u0296\u014c\2\u0565"+
		"\u0568\5\u029a\u014e\2\u0566\u0568\5\u029c\u014f\2\u0567\u055a\3\2\2\2"+
		"\u0567\u055b\3\2\2\2\u0567\u055c\3\2\2\2\u0567\u055d\3\2\2\2\u0567\u055e"+
		"\3\2\2\2\u0567\u055f\3\2\2\2\u0567\u0560\3\2\2\2\u0567\u0561\3\2\2\2\u0567"+
		"\u0562\3\2\2\2\u0567\u0563\3\2\2\2\u0567\u0564\3\2\2\2\u0567\u0565\3\2"+
		"\2\2\u0567\u0566\3\2\2\2\u0568\63\3\2\2\2\u0569\u056a\7\n\2\2\u056a\u056b"+
		"\7\17\2\2\u056b\u056c\7\u0122\2\2\u056c\u056d\5\u03ba\u01de\2\u056d\u0574"+
		"\7\u017d\2\2\u056e\u0570\7\u0338\2\2\u056f\u056e\3\2\2\2\u056f\u0570\3"+
		"\2\2\2\u0570\u0571\3\2\2\2\u0571\u0572\7\u025f\2\2\u0572\u0573\7\u0324"+
		"\2\2\u0573\u0575\5\u03ba\u01de\2\u0574\u056f\3\2\2\2\u0574\u0575\3\2\2"+
		"\2\u0575\u057c\3\2\2\2\u0576\u0578\7\u0338\2\2\u0577\u0576\3\2\2\2\u0577"+
		"\u0578\3\2\2\2\u0578\u0579\3\2\2\2\u0579\u057a\7\u00f5\2\2\u057a\u057b"+
		"\7\u0324\2\2\u057b\u057d\7\u0320\2\2\u057c\u0577\3\2\2\2\u057c\u057d\3"+
		"\2\2\2\u057d\u0584\3\2\2\2\u057e\u0580\7\u0338\2\2\u057f\u057e\3\2\2\2"+
		"\u057f\u0580\3\2\2\2\u0580\u0581\3\2\2\2\u0581\u0582\7\\\2\2\u0582\u0583"+
		"\7\u0324\2\2\u0583\u0585\5\u03ba\u01de\2\u0584\u057f\3\2\2\2\u0584\u0585"+
		"\3\2\2\2\u0585\65\3\2\2\2\u0586\u0587\7I\2\2\u0587\u0588\7\17\2\2\u0588"+
		"\u0589\7\u0122\2\2\u0589\u058a\5\u03ba\u01de\2\u058a\u0591\7\u017d\2\2"+
		"\u058b\u058d\7\u0338\2\2\u058c\u058b\3\2\2\2\u058c\u058d\3\2\2\2\u058d"+
		"\u058e\3\2\2\2\u058e\u058f\7\u00f5\2\2\u058f\u0590\7\u0324\2\2\u0590\u0592"+
		"\7\u0320\2\2\u0591\u058c\3\2\2\2\u0591\u0592\3\2\2\2\u0592\u0599\3\2\2"+
		"\2\u0593\u0595\7\u0338\2\2\u0594\u0593\3\2\2\2\u0594\u0595\3\2\2\2\u0595"+
		"\u0596\3\2\2\2\u0596\u0597\7\\\2\2\u0597\u0598\7\u0324\2\2\u0598\u059a"+
		"\5\u03ba\u01de\2\u0599\u0594\3\2\2\2\u0599\u059a\3\2\2\2\u059a\67\3\2"+
		"\2\2\u059b\u059c\7h\2\2\u059c\u059f\7\u018d\2\2\u059d\u059e\7\u009a\2"+
		"\2\u059e\u05a0\7x\2\2\u059f\u059d\3\2\2\2\u059f\u05a0\3\2\2\2\u05a0\u05a4"+
		"\3\2\2\2\u05a1\u05a2\5\u03ba\u01de\2\u05a2\u05a3\7\u0331\2\2\u05a3\u05a5"+
		"\3\2\2\2\u05a4\u05a1\3\2\2\2\u05a4\u05a5\3\2\2\2\u05a5\u05a6\3\2\2\2\u05a6"+
		"\u05a7\5\u03ba\u01de\2\u05a79\3\2\2\2\u05a8\u05a9\7h\2\2\u05a9\u05aa\7"+
		"\17\2\2\u05aa\u05ab\7\u0122\2\2\u05ab\u05ac\5\u03ba\u01de\2\u05ac;\3\2"+
		"\2\2\u05ad\u05ae\5> \2\u05ae\u05af\5\u03ba\u01de\2\u05af\u05b0\5@!\2\u05b0"+
		"=\3\2\2\2\u05b1\u05b2\7\n\2\2\u05b2\u05b3\7\u0199\2\2\u05b3?\3\2\2\2\u05b4"+
		"\u05b6\5B\"\2\u05b5\u05b4\3\2\2\2\u05b5\u05b6\3\2\2\2\u05b6\u05b8\3\2"+
		"\2\2\u05b7\u05b9\5X-\2\u05b8\u05b7\3\2\2\2\u05b8\u05b9\3\2\2\2\u05b9\u05bb"+
		"\3\2\2\2\u05ba\u05bc\5F$\2\u05bb\u05ba\3\2\2\2\u05bb\u05bc\3\2\2\2\u05bc"+
		"\u05be\3\2\2\2\u05bd\u05bf\5L\'\2\u05be\u05bd\3\2\2\2\u05be\u05bf\3\2"+
		"\2\2\u05bfA\3\2\2\2\u05c0\u05c3\5D#\2\u05c1\u05c4\5\\/\2\u05c2\u05c4\5"+
		"T+\2\u05c3\u05c1\3\2\2\2\u05c3\u05c2\3\2\2\2\u05c4C\3\2\2\2\u05c5\u05c6"+
		"\7\u008c\2\2\u05c6E\3\2\2\2\u05c7\u05c8\5J&\2\u05c8\u05c9\5H%\2\u05c9"+
		"G\3\2\2\2\u05ca\u05cd\7\6\2\2\u05cb\u05cd\5n8\2\u05cc\u05ca\3\2\2\2\u05cc"+
		"\u05cb\3\2\2\2\u05cdI\3\2\2\2\u05ce\u05cf\7h\2\2\u05cfK\3\2\2\2\u05d0"+
		"\u05d1\5N(\2\u05d1\u05d2\5P)\2\u05d2M\3\2\2\2\u05d3\u05d4\7\4\2\2\u05d4"+
		"\u05d5\7\u0082\2\2\u05d5\u05d6\7\u008c\2\2\u05d6O\3\2\2\2\u05d7\u05db"+
		"\5R*\2\u05d8\u05d9\5V,\2\u05d9\u05da\5\u03ba\u01de\2\u05da\u05dc\3\2\2"+
		"\2\u05db\u05d8\3\2\2\2\u05db\u05dc\3\2\2\2\u05dcQ\3\2\2\2\u05dd\u05de"+
		"\7\u0320\2\2\u05deS\3\2\2\2\u05df\u05e0\5V,\2\u05e0\u05e1\5\u03ba\u01de"+
		"\2\u05e1U\3\2\2\2\u05e2\u05e3\7\20\2\2\u05e3W\3\2\2\2\u05e4\u05e5\5Z."+
		"\2\u05e5\u05e6\5^\60\2\u05e6Y\3\2\2\2\u05e7\u05e8\7\u017d\2\2\u05e8[\3"+
		"\2\2\2\u05e9\u05ed\5`\61\2\u05ea\u05ed\5j\66\2\u05eb\u05ed\7\u0320\2\2"+
		"\u05ec\u05e9\3\2\2\2\u05ec\u05ea\3\2\2\2\u05ec\u05eb\3\2\2\2\u05ed]\3"+
		"\2\2\2\u05ee\u05ef\b\60\1\2\u05ef\u05f0\7\u00f7\2\2\u05f0\u05f1\7\u0324"+
		"\2\2\u05f1\u05f8\t\b\2\2\u05f2\u05f3\7\u0177\2\2\u05f3\u05f4\7\u0324\2"+
		"\2\u05f4\u05f8\t\t\2\2\u05f5\u05f6\7\u0167\2\2\u05f6\u05f8\7R\2\2\u05f7"+
		"\u05ee\3\2\2\2\u05f7\u05f2\3\2\2\2\u05f7\u05f5\3\2\2\2\u05f8\u05fd\3\2"+
		"\2\2\u05f9\u05fa\f\3\2\2\u05fa\u05fc\7\u0338\2\2\u05fb\u05f9\3\2\2\2\u05fc"+
		"\u05ff\3\2\2\2\u05fd\u05fb\3\2\2\2\u05fd\u05fe\3\2\2\2\u05fe_\3\2\2\2"+
		"\u05ff\u05fd\3\2\2\2\u0600\u0601\5d\63\2\u0601\u0602\5b\62\2\u0602\u0603"+
		"\5f\64\2\u0603a\3\2\2\2\u0604\u0605\5\u03ba\u01de\2\u0605c\3\2\2\2\u0606"+
		"\u0607\7f\2\2\u0607e\3\2\2\2\u0608\u0609\5h\65\2\u0609\u060a\5f\64\2\u060a"+
		"\u060d\3\2\2\2\u060b\u060d\5\u03ba\u01de\2\u060c\u0608\3\2\2\2\u060c\u060b"+
		"\3\2\2\2\u060dg\3\2\2\2\u060e\u060f\7\31\2\2\u060fi\3\2\2\2\u0610\u0611"+
		"\5l\67\2\u0611\u0612\5f\64\2\u0612k\3\2\2\2\u0613\u0614\7\u01e6\2\2\u0614"+
		"m\3\2\2\2\u0615\u0616\5p9\2\u0616\u0617\5j\66\2\u0617\u0618\7\u0319\2"+
		"\2\u0618\u0619\7\u0338\2\2\u0619\u061c\3\2\2\2\u061a\u061c\5j\66\2\u061b"+
		"\u0615\3\2\2\2\u061b\u061a\3\2\2\2\u061co\3\2\2\2\u061d\u061e\7\u0319"+
		"\2\2\u061eq\3\2\2\2\u061f\u0620\7I\2\2\u0620\u0621\7\u0199\2\2\u0621\u0624"+
		"\5\u03ba\u01de\2\u0622\u0623\7\24\2\2\u0623\u0625\5\u03ba\u01de\2\u0624"+
		"\u0622\3\2\2\2\u0624\u0625\3\2\2\2\u0625\u0626\3\2\2\2\u0626\u062b\7\u008c"+
		"\2\2\u0627\u0629\7\u0338\2\2\u0628\u0627\3\2\2\2\u0628\u0629\3\2\2\2\u0629"+
		"\u062a\3\2\2\2\u062a\u062c\t\n\2\2\u062b\u0628\3\2\2\2\u062c\u062d\3\2"+
		"\2\2\u062d\u062b\3\2\2\2\u062d\u062e\3\2\2\2\u062e\u0633\3\2\2\2\u062f"+
		"\u0630\7\u017d\2\2\u0630\u0631\7\u00f7\2\2\u0631\u0632\7\u0324\2\2\u0632"+
		"\u0634\t\b\2\2\u0633\u062f\3\2\2\2\u0633\u0634\3\2\2\2\u0634s\3\2\2\2"+
		"\u0635\u0636\7h\2\2\u0636\u0639\7\u0199\2\2\u0637\u0638\7\u009a\2\2\u0638"+
		"\u063a\7x\2\2\u0639\u0637\3\2\2\2\u0639\u063a\3\2\2\2\u063a\u063f\3\2"+
		"\2\2\u063b\u063d\7\u0338\2\2\u063c\u063b\3\2\2\2\u063c\u063d\3\2\2\2\u063d"+
		"\u063e\3\2\2\2\u063e\u0640\5\u03ba\u01de\2\u063f\u063c\3\2\2\2\u0640\u0641"+
		"\3\2\2\2\u0641\u063f\3\2\2\2\u0641\u0642\3\2\2\2\u0642\u0646\3\2\2\2\u0643"+
		"\u0644\7\u017d\2\2\u0644\u0645\7\u0265\2\2\u0645\u0647\7\u01dc\2\2\u0646"+
		"\u0643\3\2\2\2\u0646\u0647\3\2\2\2\u0647u\3\2\2\2\u0648\u0649\5x=\2\u0649"+
		"\u064e\5\u03ba\u01de\2\u064a\u064f\5z>\2\u064b\u064c\7\u02aa\2\2\u064c"+
		"\u064d\7\u028d\2\2\u064d\u064f\7\u00ad\2\2\u064e\u064a\3\2\2\2\u064e\u064b"+
		"\3\2\2\2\u064fw\3\2\2\2\u0650\u0651\7\n\2\2\u0651\u0652\7\22\2\2\u0652"+
		"\u0653\7\u00ad\2\2\u0653y\3\2\2\2\u0654\u0655\5|?\2\u0655\u0658\5~@\2"+
		"\u0656\u0657\7\u0338\2\2\u0657\u0659\5~@\2\u0658\u0656\3\2\2\2\u0658\u0659"+
		"\3\2\2\2\u0659\u065a\3\2\2\2\u065a\u065b\7\u0337\2\2\u065b{\3\2\2\2\u065c"+
		"\u065d\7\u017d\2\2\u065d\u065e\7\u028d\2\2\u065e\u065f\7\u00ad\2\2\u065f"+
		"\u0660\7\u0336\2\2\u0660}\3\2\2\2\u0661\u0662\7\u01d4\2\2\u0662\u0663"+
		"\7&\2\2\u0663\u0664\7\u00f5\2\2\u0664\u0665\7\u0324\2\2\u0665\u066c\7"+
		"\u0320\2\2\u0666\u0667\7\u01ef\2\2\u0667\u0668\7&\2\2\u0668\u0669\7\u00f5"+
		"\2\2\u0669\u066a\7\u0324\2\2\u066a\u066c\7\u0320\2\2\u066b\u0661\3\2\2"+
		"\2\u066b\u0666\3\2\2\2\u066c\177\3\2\2\2\u066d\u066e\7I\2\2\u066e\u066f"+
		"\7\22\2\2\u066f\u0670\7\u00ad\2\2\u0670\u0673\5\u03ba\u01de\2\u0671\u0672"+
		"\7\24\2\2\u0672\u0674\5\u03ba\u01de\2\u0673\u0671\3\2\2\2\u0673\u0674"+
		"\3\2\2\2\u0674\u0682\3\2\2\2\u0675\u0680\7\u008c\2\2\u0676\u0677\7\u0082"+
		"\2\2\u0677\u0678\7\u0324\2\2\u0678\u0681\7\u0320\2\2\u0679\u067a\7v\2"+
		"\2\u067a\u067b\7\u0324\2\2\u067b\u0681\7\u0320\2\2\u067c\u067d\7\u0199"+
		"\2\2\u067d\u0681\5\u03ba\u01de\2\u067e\u067f\7\u0292\2\2\u067f\u0681\5"+
		"\u03ba\u01de\2\u0680\u0676\3\2\2\2\u0680\u0679\3\2\2\2\u0680\u067c\3\2"+
		"\2\2\u0680\u067e\3\2\2\2\u0681\u0683\3\2\2\2\u0682\u0675\3\2\2\2\u0682"+
		"\u0683\3\2\2\2\u0683\u0690\3\2\2\2\u0684\u068e\7\u017d\2\2\u0685\u0686"+
		"\7\u018e\2\2\u0686\u0687\7\u0324\2\2\u0687\u068f\t\13\2\2\u0688\u0689"+
		"\7\u0293\2\2\u0689\u068a\7\u0324\2\2\u068a\u068f\7\u0320\2\2\u068b\u068c"+
		"\7\u01c7\2\2\u068c\u068d\7\u0324\2\2\u068d\u068f\t\f\2\2\u068e\u0685\3"+
		"\2\2\2\u068e\u0688\3\2\2\2\u068e\u068b\3\2\2\2\u068f\u0691\3\2\2\2\u0690"+
		"\u0684\3\2\2\2\u0690\u0691\3\2\2\2\u0691\u0697\3\2\2\2\u0692\u0693\7\u01ef"+
		"\2\2\u0693\u0694\7&\2\2\u0694\u0695\7\u00f5\2\2\u0695\u0696\7\u0324\2"+
		"\2\u0696\u0698\7\u0320\2\2\u0697\u0692\3\2\2\2\u0697\u0698\3\2\2\2\u0698"+
		"\u0081\3\2\2\2\u0699\u069a\7h\2\2\u069a\u069b\7\22\2\2\u069b\u069c\7\u00ad"+
		"\2\2\u069c\u06a0\5\u03ba\u01de\2\u069d\u069e\7\u02aa\2\2\u069e\u069f\7"+
		"\u0292\2\2\u069f\u06a1\7\u00ad\2\2\u06a0\u069d\3\2\2\2\u06a0\u06a1\3\2"+
		"\2\2\u06a1\u0083\3\2\2\2\u06a2\u06a6\5\u008cG\2\u06a3\u06a4\5\u0094K\2"+
		"\u06a4\u06a5\5\u008aF\2\u06a5\u06a7\3\2\2\2\u06a6\u06a3\3\2\2\2\u06a6"+
		"\u06a7\3\2\2\2\u06a7\u06a8\3\2\2\2\u06a8\u06a9\5\u037a\u01be\2\u06a9\u06aa"+
		"\5\u0088E\2\u06aa\u06ab\5\u0086D\2\u06ab\u0085\3\2\2\2\u06ac\u06b0\5\u03ba"+
		"\u01de\2\u06ad\u06ae\7\u012f\2\2\u06ae\u06b0\7\u027e\2\2\u06af\u06ac\3"+
		"\2\2\2\u06af\u06ad\3\2\2\2\u06b0\u0087\3\2\2\2\u06b1\u06b2\7\u015e\2\2"+
		"\u06b2\u0089\3\2\2\2\u06b3\u06b4\7\u033a\2\2\u06b4\u06b5\7\u033a\2\2\u06b5"+
		"\u008b\3\2\2\2\u06b6\u06b7\7\n\2\2\u06b7\u06b8\7\24\2\2\u06b8\u06b9\7"+
		"\u00e6\2\2\u06b9\u008d\3\2\2\2\u06ba\u06be\5\u008cG\2\u06bb\u06bc\5\u0096"+
		"L\2\u06bc\u06bd\5\u008aF\2\u06bd\u06bf\3\2\2\2\u06be\u06bb\3\2\2\2\u06be"+
		"\u06bf\3\2\2\2\u06bf\u06c0\3\2\2\2\u06c0\u06c1\5\u037a\u01be\2\u06c1\u06c2"+
		"\5\u0088E\2\u06c2\u06c3\5\u0086D\2\u06c3\u008f\3\2\2\2\u06c4\u06c8\5\u008c"+
		"G\2\u06c5\u06c6\5\u0098M\2\u06c6\u06c7\5\u008aF\2\u06c7\u06c9\3\2\2\2"+
		"\u06c8\u06c5\3\2\2\2\u06c8\u06c9\3\2\2\2\u06c9\u06ca\3\2\2\2\u06ca\u06cb"+
		"\5\u037c\u01bf\2\u06cb\u06cc\5\u0088E\2\u06cc\u06cd\5\u0086D\2\u06cd\u0091"+
		"\3\2\2\2\u06ce\u06d2\5\u008cG\2\u06cf\u06d0\5\u009aN\2\u06d0\u06d1\5\u008a"+
		"F\2\u06d1\u06d3\3\2\2\2\u06d2\u06cf\3\2\2\2\u06d2\u06d3\3\2\2\2\u06d3"+
		"\u06d4\3\2\2\2\u06d4\u06d5\5\u037e\u01c0\2\u06d5\u06d6\5\u0088E\2\u06d6"+
		"\u06d7\5\u0086D\2\u06d7\u0093\3\2\2\2\u06d8\u06fb\7\u0273\2\2\u06d9\u06fb"+
		"\7\u0199\2\2\u06da\u06db\7\22\2\2\u06db\u06fb\7\u00ad\2\2\u06dc\u06dd"+
		"\7\u01a3\2\2\u06dd\u06fb\7\u0093\2\2\u06de\u06fb\7+\2\2\u06df\u06fb\7"+
		"D\2\2\u06e0\u06fb\7\u02fc\2\2\u06e1\u06fb\7U\2\2\u06e2\u06fb\7n\2\2\u06e3"+
		"\u06e4\7\u020c\2\2\u06e4\u06fb\7\u01b2\2\2\u06e5\u06e6\7\u020c\2\2\u06e6"+
		"\u06fb\7\u02e2\2\2\u06e7\u06e8\7\u0252\2\2\u06e8\u06fb\7\u02fc\2\2\u06e9"+
		"\u06ea\7\u02a8\2\2\u06ea\u06eb\7\u0139\2\2\u06eb\u06fb\7\u01aa\2\2\u06ec"+
		"\u06fb\7\u0122\2\2\u06ed\u06fb\7\u02b9\2\2\u06ee\u06fb\7\u012f\2\2\u06ef"+
		"\u06f0\7\u02c3\2\2\u06f0\u06f1\7\u0291\2\2\u06f1\u06fb\7\u0235\2\2\u06f2"+
		"\u06f3\7\u0138\2\2\u06f3\u06fb\7\u0122\2\2\u06f4\u06fb\7\u0139\2\2\u06f5"+
		"\u06f6\7\u02e7\2\2\u06f6\u06fb\7\u00ad\2\2\u06f7\u06f8\7\u030f\2\2\u06f8"+
		"\u06f9\7\u012f\2\2\u06f9\u06fb\7\u01b9\2\2\u06fa\u06d8\3\2\2\2\u06fa\u06d9"+
		"\3\2\2\2\u06fa\u06da\3\2\2\2\u06fa\u06dc\3\2\2\2\u06fa\u06de\3\2\2\2\u06fa"+
		"\u06df\3\2\2\2\u06fa\u06e0\3\2\2\2\u06fa\u06e1\3\2\2\2\u06fa\u06e2\3\2"+
		"\2\2\u06fa\u06e3\3\2\2\2\u06fa\u06e5\3\2\2\2\u06fa\u06e7\3\2\2\2\u06fa"+
		"\u06e9\3\2\2\2\u06fa\u06ec\3\2\2\2\u06fa\u06ed\3\2\2\2\u06fa\u06ee\3\2"+
		"\2\2\u06fa\u06ef\3\2\2\2\u06fa\u06f2\3\2\2\2\u06fa\u06f4\3\2\2\2\u06fa"+
		"\u06f5\3\2\2\2\u06fa\u06f7\3\2\2\2\u06fb\u0095\3\2\2\2\u06fc\u0712\7\u0273"+
		"\2\2\u06fd\u0712\7\u0199\2\2\u06fe\u06ff\7\22\2\2\u06ff\u0712\7\u00ad"+
		"\2\2\u0700\u0712\7+\2\2\u0701\u0712\7\u02fc\2\2\u0702\u0712\7U\2\2\u0703"+
		"\u0704\7\u020c\2\2\u0704\u0712\7\u01b2\2\2\u0705\u0706\7\u020c\2\2\u0706"+
		"\u0712\7\u02e2\2\2\u0707\u0712\7\u0122\2\2\u0708\u0712\7\u012f\2\2\u0709"+
		"\u070a\7\u02c3\2\2\u070a\u070b\7\u0291\2\2\u070b\u0712\7\u0235\2\2\u070c"+
		"\u070d\7\u02e7\2\2\u070d\u0712\7\u00ad\2\2\u070e\u070f\7\u030f\2\2\u070f"+
		"\u0710\7\u012f\2\2\u0710\u0712\7\u01b9\2\2\u0711\u06fc\3\2\2\2\u0711\u06fd"+
		"\3\2\2\2\u0711\u06fe\3\2\2\2\u0711\u0700\3\2\2\2\u0711\u0701\3\2\2\2\u0711"+
		"\u0702\3\2\2\2\u0711\u0703\3\2\2\2\u0711\u0705\3\2\2\2\u0711\u0707\3\2"+
		"\2\2\u0711\u0708\3\2\2\2\u0711\u0709\3\2\2\2\u0711\u070c\3\2\2\2\u0711"+
		"\u070e\3\2\2\2\u0712\u0097\3\2\2\2\u0713\u0714\t\r\2\2\u0714\u0099\3\2"+
		"\2\2\u0715\u0716\t\16\2\2\u0716\u009b\3\2\2\2\u0717\u0718\7h\2\2\u0718"+
		"\u0719\7\u01a3\2\2\u0719\u071a\7\u0093\2\2\u071a\u071b\5\u03ba\u01de\2"+
		"\u071b\u009d\3\2\2\2\u071c\u071d\5\u00a0Q\2\u071d\u071e\5\u00a2R\2\u071e"+
		"\u009f\3\2\2\2\u071f\u0720\7\n\2\2\u0720\u0721\7\u01a3\2\2\u0721\u0722"+
		"\7\u0093\2\2\u0722\u0723\5\u03ba\u01de\2\u0723\u00a1\3\2\2\2\u0724\u0725"+
		"\7\u013e\2\2\u0725\u0735\7\u0336\2\2\u0726\u0727\7\26\2\2\u0727\u0728"+
		"\7\u0324\2\2\u0728\u0736\t\17\2\2\u0729\u072a\7\u01fb\2\2\u072a\u072b"+
		"\7\u0324\2\2\u072b\u0736\7\u031c\2\2\u072c\u072d\7\u0217\2\2\u072d\u072e"+
		"\7\u0324\2\2\u072e\u0736\7\u031c\2\2\u072f\u0730\7\u01d3\2\2\u0730\u0731"+
		"\7\u0324\2\2\u0731\u0736\t\t\2\2\u0732\u0733\7\u02b1\2\2\u0733\u0734\7"+
		"\u0324\2\2\u0734\u0736\7\u031c\2\2\u0735\u0726\3\2\2\2\u0735\u0729\3\2"+
		"\2\2\u0735\u072c\3\2\2\2\u0735\u072f\3\2\2\2\u0735\u0732\3\2\2\2\u0736"+
		"\u0737\3\2\2\2\u0737\u0883\7\u0337\2\2\u0738\u0739\7\4\2\2\u0739\u073a"+
		"\7U\2\2\u073a\u0883\5\u03ba\u01de\2\u073b\u073c\7\u02aa\2\2\u073c\u073d"+
		"\7U\2\2\u073d\u0883\5\u03ba\u01de\2\u073e\u073f\7\4\2\2\u073f\u0740\7"+
		"\u02ad\2\2\u0740\u0741\7\u00e6\2\2\u0741\u0742\7\u0320\2\2\u0742\u0743"+
		"\7\u017d\2\2\u0743\u0747\7\u0336\2\2\u0744\u0745\7\u01f0\2\2\u0745\u0746"+
		"\7\u0324\2\2\u0746\u0748\7\u0320\2\2\u0747\u0744\3\2\2\2\u0747\u0748\3"+
		"\2\2\2\u0748\u074f\3\2\2\2\u0749\u074b\7\u0338\2\2\u074a\u0749\3\2\2\2"+
		"\u074a\u074b\3\2\2\2\u074b\u074c\3\2\2\2\u074c\u074d\7\30\2\2\u074d\u074e"+
		"\7\u0324\2\2\u074e\u0750\t\20\2\2\u074f\u074a\3\2\2\2\u074f\u0750\3\2"+
		"\2\2\u0750\u0757\3\2\2\2\u0751\u0753\7\u0338\2\2\u0752\u0751\3\2\2\2\u0752"+
		"\u0753\3\2\2\2\u0753\u0754\3\2\2\2\u0754\u0755\7\u01f9\2\2\u0755\u0756"+
		"\7\u0324\2\2\u0756\u0758\t\21\2\2\u0757\u0752\3\2\2\2\u0757\u0758\3\2"+
		"\2\2\u0758\u075f\3\2\2\2\u0759\u075b\7\u0338\2\2\u075a\u0759\3\2\2\2\u075a"+
		"\u075b\3\2\2\2\u075b\u075c\3\2\2\2\u075c\u075d\7\u02ca\2\2\u075d\u075e"+
		"\7\u0324\2\2\u075e\u0760\t\21\2\2\u075f\u075a\3\2\2\2\u075f\u0760\3\2"+
		"\2\2\u0760\u0767\3\2\2\2\u0761\u0763\7\u0338\2\2\u0762\u0761\3\2\2\2\u0762"+
		"\u0763\3\2\2\2\u0763\u0764\3\2\2\2\u0764\u0765\7\u01a5\2\2\u0765\u0766"+
		"\7\u0324\2\2\u0766\u0768\7\u031c\2\2\u0767\u0762\3\2\2\2\u0767\u0768\3"+
		"\2\2\2\u0768\u0772\3\2\2\2\u0769\u076b\7\u0338\2\2\u076a\u0769\3\2\2\2"+
		"\u076a\u076b\3\2\2\2\u076b\u076c\3\2\2\2\u076c\u076d\7\u0289\2\2\u076d"+
		"\u076e\7\u0336\2\2\u076e\u076f\7\7\2\2\u076f\u0770\7\u0324\2\2\u0770\u0771"+
		"\t\22\2\2\u0771\u0773\7\u0337\2\2\u0772\u076a\3\2\2\2\u0772\u0773\3\2"+
		"\2\2\u0773\u077d\3\2\2\2\u0774\u0776\7\u0338\2\2\u0775\u0774\3\2\2\2\u0775"+
		"\u0776\3\2\2\2\u0776\u0777\3\2\2\2\u0777\u0778\7\u02c6\2\2\u0778\u0779"+
		"\7\u0336\2\2\u0779\u077a\7\7\2\2\u077a\u077b\7\u0324\2\2\u077b\u077c\7"+
		"\u029e\2\2\u077c\u077e\7\u0337\2\2\u077d\u0775\3\2\2\2\u077d\u077e\3\2"+
		"\2\2\u077e\u077f\3\2\2\2\u077f\u0883\7\u0337\2\2\u0780\u0781\7\u02c6\2"+
		"\2\u0781\u078a\7\u0336\2\2\u0782\u0783\7\7\2\2\u0783\u0784\7\u0324\2\2"+
		"\u0784\u078b\t\23\2\2\u0785\u0786\7\u029f\2\2\u0786\u0787\7\u0324\2\2"+
		"\u0787\u0788\7\u0336\2\2\u0788\u0789\7\u0320\2\2\u0789\u078b\7\u0337\2"+
		"\2\u078a\u0782\3\2\2\2\u078a\u0785\3\2\2\2\u078b\u0883\3\2\2\2\u078c\u078d"+
		"\7\u0289\2\2\u078d\u07a4\7\u0336\2\2\u078e\u078f\7\7\2\2\u078f\u0790\7"+
		"\u0324\2\2\u0790\u07a5\t\23\2\2\u0791\u0792\7\u029f\2\2\u0792\u0793\7"+
		"\u0324\2\2\u0793\u079e\7\u0336\2\2\u0794\u0796\7\u0338\2\2\u0795\u0794"+
		"\3\2\2\2\u0795\u0796\3\2\2\2\u0796\u0797\3\2\2\2\u0797\u0799\7\u0320\2"+
		"\2\u0798\u0795\3\2\2\2\u0799\u079c\3\2\2\2\u079a\u0798\3\2\2\2\u079a\u079b"+
		"\3\2\2\2\u079b\u079f\3\2\2\2\u079c\u079a\3\2\2\2\u079d\u079f\7\u00d6\2"+
		"\2\u079e\u079a\3\2\2\2\u079e\u079d\3\2\2\2\u079f\u07a0\3\2\2\2\u07a0\u07a5"+
		"\7\u0337\2\2\u07a1\u07a2\7\u02d0\2\2\u07a2\u07a3\7\u0324\2\2\u07a3\u07a5"+
		"\7\u031c\2\2\u07a4\u078e\3\2\2\2\u07a4\u0791\3\2\2\2\u07a4\u07a1\3\2\2"+
		"\2\u07a5\u0883\3\2\2\2\u07a6\u07a7\7\u025c\2\2\u07a7\u07a8\7\u02ad\2\2"+
		"\u07a8\u07a9\7\u00e6\2\2\u07a9\u07e3\7\u0320\2\2\u07aa\u07ab\7\u017d\2"+
		"\2\u07ab\u07bb\7\u0336\2\2\u07ac\u07ad\7\u01f0\2\2\u07ad\u07ae\7\u0324"+
		"\2\2\u07ae\u07bc\7\u0320\2\2\u07af\u07b0\7\30\2\2\u07b0\u07b1\7\u0324"+
		"\2\2\u07b1\u07bc\t\20\2\2\u07b2\u07b3\7\u01f9\2\2\u07b3\u07b4\7\u0324"+
		"\2\2\u07b4\u07bc\t\21\2\2\u07b5\u07b6\7\u02ca\2\2\u07b6\u07b7\7\u0324"+
		"\2\2\u07b7\u07bc\t\21\2\2\u07b8\u07b9\7\u01a5\2\2\u07b9\u07ba\7\u0324"+
		"\2\2\u07ba\u07bc\7\u031c\2\2\u07bb\u07ac\3\2\2\2\u07bb\u07af\3\2\2\2\u07bb"+
		"\u07b2\3\2\2\2\u07bb\u07b5\3\2\2\2\u07bb\u07b8\3\2\2\2\u07bc\u07e4\3\2"+
		"\2\2\u07bd\u07be\7\u02c6\2\2\u07be\u07c7\7\u0336\2\2\u07bf\u07c0\7\7\2"+
		"\2\u07c0\u07c1\7\u0324\2\2\u07c1\u07c8\t\23\2\2\u07c2\u07c3\7\u029f\2"+
		"\2\u07c3\u07c4\7\u0324\2\2\u07c4\u07c5\7\u0336\2\2\u07c5\u07c6\7\u0320"+
		"\2\2\u07c6\u07c8\7\u0337\2\2\u07c7\u07bf\3\2\2\2\u07c7\u07c2\3\2\2\2\u07c8"+
		"\u07e4\3\2\2\2\u07c9\u07ca\7\u0289\2\2\u07ca\u07e1\7\u0336\2\2\u07cb\u07cc"+
		"\7\7\2\2\u07cc\u07cd\7\u0324\2\2\u07cd\u07e2\t\23\2\2\u07ce\u07cf\7\u029f"+
		"\2\2\u07cf\u07d0\7\u0324\2\2\u07d0\u07db\7\u0336\2\2\u07d1\u07d3\7\u0338"+
		"\2\2\u07d2\u07d1\3\2\2\2\u07d2\u07d3\3\2\2\2\u07d3\u07d4\3\2\2\2\u07d4"+
		"\u07d6\7\u0320\2\2\u07d5\u07d2\3\2\2\2\u07d6\u07d9\3\2\2\2\u07d7\u07d5"+
		"\3\2\2\2\u07d7\u07d8\3\2\2\2\u07d8\u07dc\3\2\2\2\u07d9\u07d7\3\2\2\2\u07da"+
		"\u07dc\7\u00d6\2\2\u07db\u07d7\3\2\2\2\u07db\u07da\3\2\2\2\u07dc\u07dd"+
		"\3\2\2\2\u07dd\u07e2\7\u0337\2\2\u07de\u07df\7\u02d0\2\2\u07df\u07e0\7"+
		"\u0324\2\2\u07e0\u07e2\7\u031c\2\2\u07e1\u07cb\3\2\2\2\u07e1\u07ce\3\2"+
		"\2\2\u07e1\u07de\3\2\2\2\u07e2\u07e4\3\2\2\2\u07e3\u07aa\3\2\2\2\u07e3"+
		"\u07bd\3\2\2\2\u07e3\u07c9\3\2\2\2\u07e4\u07e5\3\2\2\2\u07e5\u0883\7\u0337"+
		"\2\2\u07e6\u07e7\7\u02aa\2\2\u07e7\u07e8\7\u02ad\2\2\u07e8\u07e9\7\u00e6"+
		"\2\2\u07e9\u0883\7\u0320\2\2\u07ea\u0883\7\u00ab\2\2\u07eb\u07ec\7\u00ab"+
		"\2\2\u07ec\u07ed\7\u01a3\2\2\u07ed\u07ee\7\u0093\2\2\u07ee\u0805\7\u00e6"+
		"\2\2\u07ef\u07f1\7\u0338\2\2\u07f0\u07ef\3\2\2\2\u07f0\u07f1\3\2\2\2\u07f1"+
		"\u07f2\3\2\2\2\u07f2\u07f3\7\u0320\2\2\u07f3\u07f4\7\u017d\2\2\u07f4\u07f5"+
		"\7\u0336\2\2\u07f5\u07f6\7\u0237\2\2\u07f6\u07f7\7\u0324\2\2\u07f7\u07f8"+
		"\7\u0320\2\2\u07f8\u07f9\7\u0338\2\2\u07f9\u07fa\7\30\2\2\u07fa\u07fb"+
		"\7\u0324\2\2\u07fb\u07fc\t\20\2\2\u07fc\u07fd\7\u0338\2\2\u07fd\u07fe"+
		"\7\u01f9\2\2\u07fe\u07ff\7\u0324\2\2\u07ff\u0800\7\u0240\2\2\u0800\u0801"+
		"\7\u0338\2\2\u0801\u0802\7\u02ca\2\2\u0802\u0803\7\u0324\2\2\u0803\u0804"+
		"\t\21\2\2\u0804\u0806\7\u0337\2\2\u0805\u07f0\3\2\2\2\u0806\u0807\3\2"+
		"\2\2\u0807\u0805\3\2\2\2\u0807\u0808\3\2\2\2\u0808\u0883\3\2\2\2\u0809"+
		"\u080a\7\u025c\2\2\u080a\u080b\7\u01a3\2\2\u080b\u080c\7\u0093\2\2\u080c"+
		"\u082f\7\u00e6\2\2\u080d\u080f\7\u0338\2\2\u080e\u080d\3\2\2\2\u080e\u080f"+
		"\3\2\2\2\u080f\u0810\3\2\2\2\u0810\u0811\7\u0320\2\2\u0811\u0812\7\u017d"+
		"\2\2\u0812\u0813\7\u0336\2\2\u0813\u0814\7\u0237\2\2\u0814\u0815\7\u0324"+
		"\2\2\u0815\u081c\7\u0320\2\2\u0816\u0818\7\u0338\2\2\u0817\u0816\3\2\2"+
		"\2\u0817\u0818\3\2\2\2\u0818\u0819\3\2\2\2\u0819\u081a\7\30\2\2\u081a"+
		"\u081b\7\u0324\2\2\u081b\u081d\t\20\2\2\u081c\u0817\3\2\2\2\u081c\u081d"+
		"\3\2\2\2\u081d\u0824\3\2\2\2\u081e\u0820\7\u0338\2\2\u081f\u081e\3\2\2"+
		"\2\u081f\u0820\3\2\2\2\u0820\u0821\3\2\2\2\u0821\u0822\7\u01f9\2\2\u0822"+
		"\u0823\7\u0324\2\2\u0823\u0825\7\u0240\2\2\u0824\u081f\3\2\2\2\u0824\u0825"+
		"\3\2\2\2\u0825\u082c\3\2\2\2\u0826\u0828\7\u0338\2\2\u0827\u0826\3\2\2"+
		"\2\u0827\u0828\3\2\2\2\u0828\u0829\3\2\2\2\u0829\u082a\7\u02ca\2\2\u082a"+
		"\u082b\7\u0324\2\2\u082b\u082d\t\21\2\2\u082c\u0827\3\2\2\2\u082c\u082d"+
		"\3\2\2\2\u082d\u082e\3\2\2\2\u082e\u0830\7\u0337\2\2\u082f\u080e\3\2\2"+
		"\2\u0830\u0831\3\2\2\2\u0831\u082f\3\2\2\2\u0831\u0832\3\2\2\2\u0832\u0883"+
		"\3\2\2\2\u0833\u0834\7\u0092\2\2\u0834\u0835\7I\2\2\u0835\u0836\7\r\2"+
		"\2\u0836\u0883\7U\2\2\u0837\u0838\7^\2\2\u0838\u0839\7I\2\2\u0839\u083a"+
		"\7\r\2\2\u083a\u0883\7U\2\2\u083b\u0883\7~\2\2\u083c\u0883\7\u0207\2\2"+
		"\u083d\u083e\7\4\2\2\u083e\u083f\7\u0236\2\2\u083f\u0840\7\u0320\2\2\u0840"+
		"\u0862\7\u0336\2\2\u0841\u0842\7\u017d\2\2\u0842\u0843\7\u01e0\2\2\u0843"+
		"\u0844\7\u00e6\2\2\u0844\u0845\7\u0336\2\2\u0845\u0846\7\u00a7\2\2\u0846"+
		"\u0847\7\u00a7\2\2\u0847\u0848\3\2\2\2\u0848\u0863\7\u0337\2\2\u0849\u084a"+
		"\7\u017d\2\2\u084a\u084b\7\u0227\2\2\u084b\u0857\7\u0336\2\2\u084c\u084e"+
		"\7\u0338\2\2\u084d\u084c\3\2\2\2\u084d\u084e\3\2\2\2\u084e\u084f\3\2\2"+
		"\2\u084f\u0854\7\u0336\2\2\u0850\u0851\7\u00a7\2\2\u0851\u0852\7\u0338"+
		"\2\2\u0852\u0855\7\u00a7\2\2\u0853\u0855\7\u00a8\2\2\u0854\u0850\3\2\2"+
		"\2\u0854\u0853\3\2\2\2\u0855\u0856\3\2\2\2\u0856\u0858\7\u0337\2\2\u0857"+
		"\u084d\3\2\2\2\u0858\u0859\3\2\2\2\u0859\u0857\3\2\2\2\u0859\u085a\3\2"+
		"\2\2\u085a\u085b\3\2\2\2\u085b\u0860\7\u0337\2\2\u085c\u085d\7\u0338\2"+
		"\2\u085d\u085e\7\u0287\2\2\u085e\u085f\7\u0324\2\2\u085f\u0861\7\u031c"+
		"\2\2\u0860\u085c\3\2\2\2\u0860\u0861\3\2\2\2\u0861\u0863\3\2\2\2\u0862"+
		"\u0841\3\2\2\2\u0862\u0849\3\2\2\2\u0863\u0864\3\2\2\2\u0864\u0883\7\u0337"+
		"\2\2\u0865\u0866\7\u025c\2\2\u0866\u0873\7\u0236\2\2\u0867\u0868\7\4\2"+
		"\2\u0868\u0869\7\u0227\2\2\u0869\u086d\7\u0336\2\2\u086a\u086b\7\u00a7"+
		"\2\2\u086b\u086e\7\u00a7\2\2\u086c\u086e\7\u00a8\2\2\u086d\u086a\3\2\2"+
		"\2\u086d\u086c\3\2\2\2\u086e\u086f\3\2\2\2\u086f\u0874\7\u0337\2\2\u0870"+
		"\u0871\7\u0287\2\2\u0871\u0872\7\u0324\2\2\u0872\u0874\7\u031c\2\2\u0873"+
		"\u0867\3\2\2\2\u0873\u0870\3\2\2\2\u0874\u0883\3\2\2\2\u0875\u0876\7\u0116"+
		"\2\2\u0876\u0877\7\u0236\2\2\u0877\u0883\7\u0320\2\2\u0878\u0879\7\u02aa"+
		"\2\2\u0879\u087a\7\u0236\2\2\u087a\u0883\7\u0320\2\2\u087b\u0883\7\u0274"+
		"\2\2\u087c\u087d\7\u017d\2\2\u087d\u087e\7\u0336\2\2\u087e\u087f\7i\2"+
		"\2\u087f\u0880\7\u0324\2\2\u0880\u0881\7\u00f9\2\2\u0881\u0883\7\u0337"+
		"\2\2\u0882\u0724\3\2\2\2\u0882\u0738\3\2\2\2\u0882\u073b\3\2\2\2\u0882"+
		"\u073e\3\2\2\2\u0882\u0780\3\2\2\2\u0882\u078c\3\2\2\2\u0882\u07a6\3\2"+
		"\2\2\u0882\u07e6\3\2\2\2\u0882\u07ea\3\2\2\2\u0882\u07eb\3\2\2\2\u0882"+
		"\u0809\3\2\2\2\u0882\u0833\3\2\2\2\u0882\u0837\3\2\2\2\u0882\u083b\3\2"+
		"\2\2\u0882\u083c\3\2\2\2\u0882\u083d\3\2\2\2\u0882\u0865\3\2\2\2\u0882"+
		"\u0875\3\2\2\2\u0882\u0878\3\2\2\2\u0882\u087b\3\2\2\2\u0882\u087c\3\2"+
		"\2\2\u0883\u00a3\3\2\2\2\u0884\u0885\t\24\2\2\u0885\u0886\7\u01ac\2\2"+
		"\u0886\u0887\7\u028b\2\2\u0887\u0888\5\u03ba\u01de\2\u0888\u0889\7\u0086"+
		"\2\2\u0889\u088a\7F\2\2\u088a\u088b\7\u013e\2\2\u088b\u0895\7\u0336\2"+
		"\2\u088c\u088d\7E\2\2\u088d\u0890\7\u0324\2\2\u088e\u0891\5\u03ba\u01de"+
		"\2\u088f\u0891\7\r\2\2\u0890\u088e\3\2\2\2\u0890\u088f\3\2\2\2\u0891\u0893"+
		"\3\2\2\2\u0892\u0894\7\u0338\2\2\u0893\u0892\3\2\2\2\u0893\u0894\3\2\2"+
		"\2\u0894\u0896\3\2\2\2\u0895\u088c\3\2\2\2\u0895\u0896\3\2\2\2\u0896\u08a3"+
		"\3\2\2\2\u0897\u0898\7\u00bb\2\2\u0898\u089e\7\u0324\2\2\u0899\u089b\7"+
		"g\2\2\u089a\u0899\3\2\2\2\u089a\u089b\3\2\2\2\u089b\u089c\3\2\2\2\u089c"+
		"\u089f\5\u03ba\u01de\2\u089d\u089f\7\r\2\2\u089e\u089a\3\2\2\2\u089e\u089d"+
		"\3\2\2\2\u089f\u08a1\3\2\2\2\u08a0\u08a2\7\u0338\2\2\u08a1\u08a0\3\2\2"+
		"\2\u08a1\u08a2\3\2\2\2\u08a2\u08a4\3\2\2\2\u08a3\u0897\3\2\2\2\u08a3\u08a4"+
		"\3\2\2\2\u08a4\u08ae\3\2\2\2\u08a5\u08a6\7\u02a9\2\2\u08a6\u08a9\7\u0324"+
		"\2\2\u08a7\u08aa\7\u0320\2\2\u08a8\u08aa\7\r\2\2\u08a9\u08a7\3\2\2\2\u08a9"+
		"\u08a8\3\2\2\2\u08aa\u08ac\3\2\2\2\u08ab\u08ad\7\u0338\2\2\u08ac\u08ab"+
		"\3\2\2\2\u08ac\u08ad\3\2\2\2\u08ad\u08af\3\2\2\2\u08ae\u08a5\3\2\2\2\u08ae"+
		"\u08af\3\2\2\2\u08af\u08b6\3\2\2\2\u08b0\u08b1\7\u028c\2\2\u08b1\u08b4"+
		"\7\u0324\2\2\u08b2\u08b5\7\u031c\2\2\u08b3\u08b5\7Z\2\2\u08b4\u08b2\3"+
		"\2\2\2\u08b4\u08b3\3\2\2\2\u08b5\u08b7\3\2\2\2\u08b6\u08b0\3\2\2\2\u08b6"+
		"\u08b7\3\2\2\2\u08b7\u08b8\3\2\2\2\u08b8\u08b9\7\u0337\2\2\u08b9\u00a5"+
		"\3\2\2\2\u08ba\u08bb\7h\2\2\u08bb\u08bc\7\u01ac\2\2\u08bc\u08bd\7\u028b"+
		"\2\2\u08bd\u08be\5\u03ba\u01de\2\u08be\u00a7\3\2\2\2\u08bf\u08c0\7\n\2"+
		"\2\u08c0\u08c1\7+\2\2\u08c1\u08e9\5\u03ba\u01de\2\u08c2\u08c3\7\u02aa"+
		"\2\2\u08c3\u08ea\7\u028e\2\2\u08c4\u08c5\7\u017d\2\2\u08c5\u08c6\7\u028d"+
		"\2\2\u08c6\u08c7\7\u00ad\2\2\u08c7\u08de\7\u0336\2\2\u08c8\u08c9\7\u0082"+
		"\2\2\u08c9\u08ca\7\u0324\2\2\u08ca\u08cc\7\u0320\2\2\u08cb\u08cd\7\u0338"+
		"\2\2\u08cc\u08cb\3\2\2\2\u08cc\u08cd\3\2\2\2\u08cd\u08df\3\2\2\2\u08ce"+
		"\u08cf\7\u01d4\2\2\u08cf\u08d0\7&\2\2\u08d0\u08d1\7\u00f5\2\2\u08d1\u08d2"+
		"\7\u0324\2\2\u08d2\u08d4\7\u0320\2\2\u08d3\u08d5\7\u0338\2\2\u08d4\u08d3"+
		"\3\2\2\2\u08d4\u08d5\3\2\2\2\u08d5\u08df\3\2\2\2\u08d6\u08d7\7\u01ef\2"+
		"\2\u08d7\u08d8\7&\2\2\u08d8\u08d9\7\u00f5\2\2\u08d9\u08da\7\u0324\2\2"+
		"\u08da\u08dc\7\u0320\2\2\u08db\u08dd\7\u0338\2\2\u08dc\u08db\3\2\2\2\u08dc"+
		"\u08dd\3\2\2\2\u08dd\u08df\3\2\2\2\u08de\u08c8\3\2\2\2\u08de\u08ce\3\2"+
		"\2\2\u08de\u08d6\3\2\2\2\u08df\u08e0\3\2\2\2\u08e0\u08de\3\2\2\2\u08e0"+
		"\u08e1\3\2\2\2\u08e1\u08e2\3\2\2\2\u08e2\u08ea\7\u0337\2\2\u08e3\u08e4"+
		"\7\u017d\2\2\u08e4\u08e5\7\u0186\2\2\u08e5\u08e6\7\u0086\2\2\u08e6\u08e7"+
		"\7\u01a6\2\2\u08e7\u08e8\7\u0324\2\2\u08e8\u08ea\t\t\2\2\u08e9\u08c2\3"+
		"\2\2\2\u08e9\u08c4\3\2\2\2\u08e9\u08e3\3\2\2\2\u08ea\u00a9\3\2\2\2\u08eb"+
		"\u08ec\7\n\2\2\u08ec\u08ed\78\2\2\u08ed\u08ee\7\u01ef\2\2\u08ee\u08ef"+
		"\7\u00ad\2\2\u08ef\u08f0\5\u03ba\u01de\2\u08f0\u08f1\t\25\2\2\u08f1\u08f2"+
		"\7\u0305\2\2\u08f2\u08f3\7\u0336\2\2\u08f3\u08f4\7\u01ba\2\2\u08f4\u08f5"+
		"\7\u0324\2\2\u08f5\u08fe\5\u03ba\u01de\2\u08f6\u08f7\7\u0338\2\2\u08f7"+
		"\u08f8\7\u018e\2\2\u08f8\u08f9\7\u0324\2\2\u08f9\u08fa\7\u0320\2\2\u08fa"+
		"\u08fb\7\u0338\2\2\u08fb\u08fc\7\u01ee\2\2\u08fc\u08fd\7\u0324\2\2\u08fd"+
		"\u08ff\7\u0321\2\2\u08fe\u08f6\3\2\2\2\u08fe\u08ff\3\2\2\2\u08ff\u0900"+
		"\3\2\2\2\u0900\u0901\7\u0337\2\2\u0901\u00ab\3\2\2\2\u0902\u0903\7I\2"+
		"\2\u0903\u0904\78\2\2\u0904\u0905\7\u01ef\2\2\u0905\u0906\7\u00ad\2\2"+
		"\u0906\u0907\5\u03ba\u01de\2\u0907\u0908\7\u017d\2\2\u0908\u091c\7\u0173"+
		"\2\2\u0909\u090b\7\u0336\2\2\u090a\u090c\7\u0338\2\2\u090b\u090a\3\2\2"+
		"\2\u090b\u090c\3\2\2\2\u090c\u090d\3\2\2\2\u090d\u090e\7\u01ba\2\2\u090e"+
		"\u090f\7\u0324\2\2\u090f\u0910\5\u03ba\u01de\2\u0910\u0911\7\u0338\2\2"+
		"\u0911\u0912\7\u018e\2\2\u0912\u0913\7\u0324\2\2\u0913\u0914\7\u0320\2"+
		"\2\u0914\u0915\7\u0338\2\2\u0915\u0916\7\u01ee\2\2\u0916\u0917\7\u0324"+
		"\2\2\u0917\u0918\7\u0321\2\2\u0918\u091a\7\u0337\2\2\u0919\u091b\7\u0338"+
		"\2\2\u091a\u0919\3\2\2\2\u091a\u091b\3\2\2\2\u091b\u091d\3\2\2\2\u091c"+
		"\u0909\3\2\2\2\u091d\u091e\3\2\2\2\u091e\u091c\3\2\2\2\u091e\u091f\3\2"+
		"\2\2\u091f\u00ad\3\2\2\2\u0920\u0921\7h\2\2\u0921\u0922\7+\2\2\u0922\u0923"+
		"\5\u03ba\u01de\2\u0923\u00af\3\2\2\2\u0924\u0925\7h\2\2\u0925\u0926\7"+
		"8\2\2\u0926\u0927\7\u01ef\2\2\u0927\u0928\7\u00ad\2\2\u0928\u0929\5\u03ba"+
		"\u01de\2\u0929\u00b1\3\2\2\2\u092a\u092b\7h\2\2\u092b\u092c\78\2\2\u092c"+
		"\u092d\7\u00be\2\2\u092d\u092e\7\u00ad\2\2\u092e\u092f\5\u03ba\u01de\2"+
		"\u092f\u00b3\3\2\2\2\u0930\u0931\7h\2\2\u0931\u0932\7D\2\2\u0932\u0933"+
		"\5\u03ba\u01de\2\u0933\u00b5\3\2\2\2\u0934\u0935\7h\2\2\u0935\u0936\7"+
		"\u01c8\2\2\u0936\u0937\5\u03ba\u01de\2\u0937\u00b7\3\2\2\2\u0938\u0939"+
		"\7h\2\2\u0939\u093a\7\u01c9\2\2\u093a\u093b\7\u0292\2\2\u093b\u093c\5"+
		"\u03ba\u01de\2\u093c\u00b9\3\2\2\2\u093d\u093e\7h\2\2\u093e\u0941\7U\2"+
		"\2\u093f\u0940\7\u009a\2\2\u0940\u0942\7x\2\2\u0941\u093f\3\2\2\2\u0941"+
		"\u0942\3\2\2\2\u0942\u0947\3\2\2\2\u0943\u0945\7\u0338\2\2\u0944\u0943"+
		"\3\2\2\2\u0944\u0945\3\2\2\2\u0945\u0946\3\2\2\2\u0946\u0948\5\u03ba\u01de"+
		"\2\u0947\u0944\3\2\2\2\u0948\u0949\3\2\2\2\u0949\u0947\3\2\2\2\u0949\u094a"+
		"\3\2\2\2\u094a\u00bb\3\2\2\2\u094b\u094c\7h\2\2\u094c\u094d\7U\2\2\u094d"+
		"\u094e\7\u019a\2\2\u094e\u094f\7\u0146\2\2\u094f\u0950\5\u03ba\u01de\2"+
		"\u0950\u00bd\3\2\2\2\u0951\u0952\7h\2\2\u0952\u0953\7U\2\2\u0953\u0954"+
		"\7\u02c0\2\2\u0954\u0955\7\u01c8\2\2\u0955\u0956\5\u03ba\u01de\2\u0956"+
		"\u00bf\3\2\2\2\u0957\u0958\7h\2\2\u0958\u095b\7Z\2\2\u0959\u095a\7\u009a"+
		"\2\2\u095a\u095c\7x\2\2\u095b\u0959\3\2\2\2\u095b\u095c\3\2\2\2\u095c"+
		"\u095e\3\2\2\2\u095d\u095f\7\u0338\2\2\u095e\u095d\3\2\2\2\u095e\u095f"+
		"\3\2\2\2\u095f\u0963\3\2\2\2\u0960\u0961\5\u03ba\u01de\2\u0961\u0962\7"+
		"\u0331\2\2\u0962\u0964\3\2\2\2\u0963\u0960\3\2\2\2\u0963\u0964\3\2\2\2"+
		"\u0964\u0965\3\2\2\2\u0965\u0966\5\u03ba\u01de\2\u0966\u00c1\3\2\2\2\u0967"+
		"\u0968\7h\2\2\u0968\u0969\7n\2\2\u0969\u096a\5\u03ba\u01de\2\u096a\u00c3"+
		"\3\2\2\2\u096b\u096c\7h\2\2\u096c\u096d\7|\2\2\u096d\u096e\7R\2\2\u096e"+
		"\u096f\7\u0145\2\2\u096f\u0970\5\u03ba\u01de\2\u0970\u00c5\3\2\2\2\u0971"+
		"\u0972\7h\2\2\u0972\u0973\7|\2\2\u0973\u0974\7\u0082\2\2\u0974\u0975\7"+
		"\u0209\2\2\u0975\u0976\5\u03ba\u01de\2\u0976\u00c7\3\2\2\2\u0977\u0978"+
		"\7h\2\2\u0978\u0979\7|\2\2\u0979\u097a\7\u00b3\2\2\u097a\u097d\5\u03ba"+
		"\u01de\2\u097b\u097c\7\24\2\2\u097c\u097e\5\u03ba\u01de\2\u097d\u097b"+
		"\3\2\2\2\u097d\u097e\3\2\2\2\u097e\u00c9\3\2\2\2\u097f\u0980\7h\2\2\u0980"+
		"\u0981\7|\2\2\u0981\u0982\7\u02b3\2\2\u0982\u0983\7\u0286\2\2\u0983\u0984"+
		"\5\u03ba\u01de\2\u0984\u00cb\3\2\2\2\u0985\u0986\7h\2\2\u0986\u0987\7"+
		"|\2\2\u0987\u098b\7\u0157\2\2\u0988\u0989\5\u03ba\u01de\2\u0989\u098a"+
		"\7\u0331\2\2\u098a\u098c\3\2\2\2\u098b\u0988\3\2\2\2\u098b\u098c\3\2\2"+
		"\2\u098c\u0990\3\2\2\2\u098d\u098e\5\u03ba\u01de\2\u098e\u098f\7\u0331"+
		"\2\2\u098f\u0991\3\2\2\2\u0990\u098d\3\2\2\2\u0990\u0991\3\2\2\2\u0991"+
		"\u0992\3\2\2\2\u0992\u0993\5\u03ba\u01de\2\u0993\u00cd\3\2\2\2\u0994\u0995"+
		"\7h\2\2\u0995\u0996\7r\2\2\u0996\u099b\7\u00de\2\2\u0997\u0999\7\u0338"+
		"\2\2\u0998\u0997\3\2\2\2\u0998\u0999\3\2\2\2\u0999\u099a\3\2\2\2\u099a"+
		"\u099c\5\u03ba\u01de\2\u099b\u0998\3\2\2\2\u099c\u099d\3\2\2\2\u099d\u099b"+
		"\3\2\2\2\u099d\u099e\3\2\2\2\u099e\u099f\3\2\2\2\u099f\u09a4\7\u00e6\2"+
		"\2\u09a0\u09a5\7\u0138\2\2\u09a1\u09a5\7U\2\2\u09a2\u09a3\7\u0295\2\2"+
		"\u09a3\u09a5\5\u03ba\u01de\2\u09a4\u09a0\3\2\2\2\u09a4\u09a1\3\2\2\2\u09a4"+
		"\u09a2\3\2\2\2\u09a5\u00cf\3\2\2\2\u09a6\u09a7\7h\2\2\u09a7\u09a8\7r\2"+
		"\2\u09a8\u09a9\7\u013c\2\2\u09a9\u09aa\5\u03ba\u01de\2\u09aa\u09ab\7\u00e6"+
		"\2\2\u09ab\u09ac\7\u0138\2\2\u09ac\u00d1\3\2\2\2\u09ad\u09ae\7h\2\2\u09ae"+
		"\u09af\7\u020c\2\2\u09af\u09b0\7\u01b2\2\2\u09b0\u09b1\5\u03ba\u01de\2"+
		"\u09b1\u00d3\3\2\2\2\u09b2\u09b3\7h\2\2\u09b3\u09b4\7\u020c\2\2\u09b4"+
		"\u09b5\7\u009f\2\2\u09b5\u09b9\7\u00e6\2\2\u09b6\u09b7\5\u03ba\u01de\2"+
		"\u09b7\u09b8\7\u0331\2\2\u09b8\u09ba\3\2\2\2\u09b9\u09b6\3\2\2\2\u09b9"+
		"\u09ba\3\2\2\2\u09ba\u09bb\3\2\2\2\u09bb\u09bc\5\u03ba\u01de\2\u09bc\u00d5"+
		"\3\2\2\2\u09bd\u09be\7h\2\2\u09be\u09bf\7\u020c\2\2\u09bf\u09c0\7\u02e2"+
		"\2\2\u09c0\u09c1\5\u03ba\u01de\2\u09c1\u00d7\3\2\2\2\u09c2\u09c3\7h\2"+
		"\2\u09c3\u09c4\7\u023d\2\2\u09c4\u09c5\5\u03ba\u01de\2\u09c5\u00d9\3\2"+
		"\2\2\u09c6\u09c7\7h\2\2\u09c7\u09c8\7\u00be\2\2\u09c8\u09c9\7\u00ad\2"+
		"\2\u09c9\u00db\3\2\2\2\u09ca\u09cb\7h\2\2\u09cb\u09cc\7\u0252\2\2\u09cc"+
		"\u09cd\7\u02fc\2\2\u09cd\u09ce\5\u03ba\u01de\2\u09ce\u00dd\3\2\2\2\u09cf"+
		"\u09d0\7h\2\2\u09d0\u09d1\7\u0281\2\2\u09d1\u09d2\7\u008e\2\2\u09d2\u09d3"+
		"\5\u03ba\u01de\2\u09d3\u00df\3\2\2\2\u09d4\u09d5\7h\2\2\u09d5\u09d6\7"+
		"\u0281\2\2\u09d6\u09d7\7\u0130\2\2\u09d7\u09d8\5\u03ba\u01de\2\u09d8\u00e1"+
		"\3\2\2\2\u09d9\u09da\7h\2\2\u09da\u09de\7\u0295\2\2\u09db\u09dc\5\u03ba"+
		"\u01de\2\u09dc\u09dd\7\u0331\2\2\u09dd\u09df\3\2\2\2\u09de\u09db\3\2\2"+
		"\2\u09de\u09df\3\2\2\2\u09df\u09e3\3\2\2\2\u09e0\u09e1\5\u03ba\u01de\2"+
		"\u09e1\u09e2\7\u0331\2\2\u09e2\u09e4\3\2\2\2\u09e3\u09e0\3\2\2\2\u09e3"+
		"\u09e4\3\2\2\2\u09e4\u09e5\3\2\2\2\u09e5\u09e6\5\u03ba\u01de\2\u09e6\u00e3"+
		"\3\2\2\2\u09e7\u09e8\7h\2\2\u09e8\u09e9\7\u02a8\2\2\u09e9\u09ea\7\u0139"+
		"\2\2\u09ea\u09eb\7\u01aa\2\2\u09eb\u09ec\5\u03ba\u01de\2\u09ec\u00e5\3"+
		"\2\2\2\u09ed\u09ee\7h\2\2\u09ee\u09ef\7\u02b3\2\2\u09ef\u09f0\7\u0286"+
		"\2\2\u09f0\u09f1\5\u03ba\u01de\2\u09f1\u00e7\3\2\2\2\u09f2\u09f3\7h\2"+
		"\2\u09f3\u09f6\7\u0122\2\2\u09f4\u09f5\7\u009a\2\2\u09f5\u09f7\7x\2\2"+
		"\u09f6\u09f4\3\2\2\2\u09f6\u09f7\3\2\2\2\u09f7\u09f8\3\2\2\2\u09f8\u09f9"+
		"\5\u03ba\u01de\2\u09f9\u00e9\3\2\2\2\u09fa\u09fb\7h\2\2\u09fb\u09fc\7"+
		"\u02b9\2\2\u09fc\u09fd\5\u03ba\u01de\2\u09fd\u00eb\3\2\2\2\u09fe\u09ff"+
		"\7h\2\2\u09ff\u0a02\7\u012b\2\2\u0a00\u0a01\7\u009a\2\2\u0a01\u0a03\7"+
		"x\2\2\u0a02\u0a00\3\2\2\2\u0a02\u0a03\3\2\2\2\u0a03\u0a0d\3\2\2\2\u0a04"+
		"\u0a06\7\u0338\2\2\u0a05\u0a04\3\2\2\2\u0a05\u0a06\3\2\2\2\u0a06\u0a0a"+
		"\3\2\2\2\u0a07\u0a08\5\u03ba\u01de\2\u0a08\u0a09\7\u0331\2\2\u0a09\u0a0b"+
		"\3\2\2\2\u0a0a\u0a07\3\2\2\2\u0a0a\u0a0b\3\2\2\2\u0a0b\u0a0c\3\2\2\2\u0a0c"+
		"\u0a0e\5\u03ba\u01de\2\u0a0d\u0a05\3\2\2\2\u0a0d\u0a0e\3\2\2\2\u0a0e\u00ed"+
		"\3\2\2\2\u0a0f\u0a10\7h\2\2\u0a10\u0a13\7\u012f\2\2\u0a11\u0a12\7\u009a"+
		"\2\2\u0a12\u0a14\7x\2\2\u0a13\u0a11\3\2\2\2\u0a13\u0a14\3\2\2\2\u0a14"+
		"\u0a15\3\2\2\2\u0a15\u0a16\5\u03ba\u01de\2\u0a16\u00ef\3\2\2\2\u0a17\u0a18"+
		"\7h\2\2\u0a18\u0a19\7\u02c3\2\2\u0a19\u0a1a\7\u0291\2\2\u0a1a\u0a1b\7"+
		"\u0235\2\2\u0a1b\u0a1c\5\u03ba\u01de\2\u0a1c\u00f1\3\2\2\2\u0a1d\u0a1e"+
		"\7h\2\2\u0a1e\u0a1f\7\u0131\2\2\u0a1f\u0a22\7\u00fe\2\2\u0a20\u0a21\7"+
		"\u009a\2\2\u0a21\u0a23\7x\2\2\u0a22\u0a20\3\2\2\2\u0a22\u0a23\3\2\2\2"+
		"\u0a23\u0a27\3\2\2\2\u0a24\u0a25\5\u03ba\u01de\2\u0a25\u0a26\7\u0331\2"+
		"\2\u0a26\u0a28\3\2\2\2\u0a27\u0a24\3\2\2\2\u0a27\u0a28\3\2\2\2\u0a28\u0a29"+
		"\3\2\2\2\u0a29\u0a2a\5\u03ba\u01de\2\u0a2a\u00f3\3\2\2\2\u0a2b\u0a2c\7"+
		"h\2\2\u0a2c\u0a2f\7\u0137\2\2\u0a2d\u0a2e\7\u009a\2\2\u0a2e\u0a30\7x\2"+
		"\2\u0a2f\u0a2d\3\2\2\2\u0a2f\u0a30\3\2\2\2\u0a30\u0a3f\3\2\2\2\u0a31\u0a33"+
		"\7\u0338\2\2\u0a32\u0a31\3\2\2\2\u0a32\u0a33\3\2\2\2\u0a33\u0a37\3\2\2"+
		"\2\u0a34\u0a35\5\u03ba\u01de\2\u0a35\u0a36\7\u0331\2\2\u0a36\u0a38\3\2"+
		"\2\2\u0a37\u0a34\3\2\2\2\u0a37\u0a38\3\2\2\2\u0a38\u0a3c\3\2\2\2\u0a39"+
		"\u0a3a\5\u03ba\u01de\2\u0a3a\u0a3b\7\u0331\2\2\u0a3b\u0a3d\3\2\2\2\u0a3c"+
		"\u0a39\3\2\2\2\u0a3c\u0a3d\3\2\2\2\u0a3d\u0a3e\3\2\2\2\u0a3e\u0a40\5\u03ba"+
		"\u01de\2\u0a3f\u0a32\3\2\2\2\u0a3f\u0a40\3\2\2\2\u0a40\u00f5\3\2\2\2\u0a41"+
		"\u0a42\7h\2\2\u0a42\u0a43\7\u0138\2\2\u0a43\u0a44\7\u019a\2\2\u0a44\u0a45"+
		"\5\u03ba\u01de\2\u0a45\u00f7\3\2\2\2\u0a46\u0a47\7h\2\2\u0a47\u0a48\7"+
		"\u0138\2\2\u0a48\u0a49\7\u019a\2\2\u0a49\u0a4a\7\u0146\2\2\u0a4a\u0a4b"+
		"\5\u03ba\u01de\2\u0a4b\u00f9\3\2\2\2\u0a4c\u0a4d\7h\2\2\u0a4d\u0a4e\7"+
		"\u0138\2\2\u0a4e\u0a4f\7\u0122\2\2\u0a4f\u0a50\5\u03ba\u01de\2\u0a50\u00fb"+
		"\3\2\2\2\u0a51\u0a52\7h\2\2\u0a52\u0a53\7\u0139\2\2\u0a53\u0a54\5\u03ba"+
		"\u01de\2\u0a54\u00fd\3\2\2\2\u0a55\u0a57\7h\2\2\u0a56\u0a58\7\u01c4\2"+
		"\2\u0a57\u0a56\3\2\2\2\u0a57\u0a58\3\2\2\2\u0a58\u0a59\3\2\2\2\u0a59\u0a5a"+
		"\7\u02d4\2\2\u0a5a\u0a5e\7\u008c\2\2\u0a5b\u0a5c\5\u03ba\u01de\2\u0a5c"+
		"\u0a5d\7\u0331\2\2\u0a5d\u0a5f\3\2\2\2\u0a5e\u0a5b\3\2\2\2\u0a5e\u0a5f"+
		"\3\2\2\2\u0a5f\u0a60\3\2\2\2\u0a60\u0a61\5\u03ba\u01de\2\u0a61\u0a6d\7"+
		"&\2\2\u0a62\u0a64\7\u0338\2\2\u0a63\u0a62\3\2\2\2\u0a63\u0a64\3\2\2\2"+
		"\u0a64\u0a65\3\2\2\2\u0a65\u0a66\7+\2\2\u0a66\u0a6e\5\u03ba\u01de\2\u0a67"+
		"\u0a69\7\u0338\2\2\u0a68\u0a67\3\2\2\2\u0a68\u0a69\3\2\2\2\u0a69\u0a6a"+
		"\3\2\2\2\u0a6a\u0a6b\7\22\2\2\u0a6b\u0a6c\7\u00ad\2\2\u0a6c\u0a6e\5\u03ba"+
		"\u01de\2\u0a6d\u0a63\3\2\2\2\u0a6d\u0a68\3\2\2\2\u0a6e\u0a6f\3\2\2\2\u0a6f"+
		"\u0a6d\3\2\2\2\u0a6f\u0a70\3\2\2\2\u0a70\u00ff\3\2\2\2\u0a71\u0a72\7h"+
		"\2\2\u0a72\u0a76\7\u014b\2\2\u0a73\u0a74\5\u03ba\u01de\2\u0a74\u0a75\7"+
		"\u0331\2\2\u0a75\u0a77\3\2\2\2\u0a76\u0a73\3\2\2\2\u0a76\u0a77\3\2\2\2"+
		"\u0a77\u0a78\3\2\2\2\u0a78\u0a79\5\u03ba\u01de\2\u0a79\u0a7a\7\u0331\2"+
		"\2\u0a7a\u0a7b\5\u03ba\u01de\2\u0a7b\u0101\3\2\2\2\u0a7c\u0a7d\7h\2\2"+
		"\u0a7d\u0a7e\7\u02e7\2\2\u0a7e\u0a7f\7\u00ad\2\2\u0a7f\u0a83\5\u03ba\u01de"+
		"\2\u0a80\u0a81\7\u02aa\2\2\u0a81\u0a82\7\u0292\2\2\u0a82\u0a84\7\u00ad"+
		"\2\2\u0a83\u0a80\3\2\2\2\u0a83\u0a84\3\2\2\2\u0a84\u0103\3\2\2\2\u0a85"+
		"\u0a86\7h\2\2\u0a86\u0a89\7\u02e9\2\2\u0a87\u0a88\7\u009a\2\2\u0a88\u0a8a"+
		"\7x\2\2\u0a89\u0a87\3\2\2\2\u0a89\u0a8a\3\2\2\2\u0a8a\u0a8e\3\2\2\2\u0a8b"+
		"\u0a8c\5\u03ba\u01de\2\u0a8c\u0a8d\7\u0331\2\2\u0a8d\u0a8f\3\2\2\2\u0a8e"+
		"\u0a8b\3\2\2\2\u0a8e\u0a8f\3\2\2\2\u0a8f\u0a90\3\2\2\2\u0a90\u0a91\5\u03ba"+
		"\u01de\2\u0a91\u0105\3\2\2\2\u0a92\u0a93\7h\2\2\u0a93\u0a96\7\u0172\2"+
		"\2\u0a94\u0a95\7\u009a\2\2\u0a95\u0a97\7x\2\2\u0a96\u0a94\3\2\2\2\u0a96"+
		"\u0a97\3\2\2\2\u0a97\u0a98\3\2\2\2\u0a98\u0a99\5\u03ba\u01de\2\u0a99\u0107"+
		"\3\2\2\2\u0a9a\u0a9b\7h\2\2\u0a9b\u0a9c\7\u030e\2\2\u0a9c\u0a9d\7\u0093"+
		"\2\2\u0a9d\u0a9e\5\u03ba\u01de\2\u0a9e\u0109\3\2\2\2\u0a9f\u0aa0\7h\2"+
		"\2\u0aa0\u0aa1\7\u030f\2\2\u0aa1\u0aa2\7\u012f\2\2\u0aa2\u0aa6\7\u01b9"+
		"\2\2\u0aa3\u0aa4\5\u03ba\u01de\2\u0aa4\u0aa5\7\u0331\2\2\u0aa5\u0aa7\3"+
		"\2\2\2\u0aa6\u0aa3\3\2\2\2\u0aa6\u0aa7\3\2\2\2\u0aa7\u0aa8\3\2\2\2\u0aa8"+
		"\u0aa9\5\u03ba\u01de\2\u0aa9\u010b\3\2\2\2\u0aaa\u0aab\7\u01e3\2\2\u0aab"+
		"\u0aba\7\u0164\2\2\u0aac\u0aae\7\u0338\2\2\u0aad\u0aac\3\2\2\2\u0aad\u0aae"+
		"\3\2\2\2\u0aae\u0ab2\3\2\2\2\u0aaf\u0ab0\5\u03ba\u01de\2\u0ab0\u0ab1\7"+
		"\u0331\2\2\u0ab1\u0ab3\3\2\2\2\u0ab2\u0aaf\3\2\2\2\u0ab2\u0ab3\3\2\2\2"+
		"\u0ab3\u0ab4\3\2\2\2\u0ab4\u0ab6\5\u03ba\u01de\2\u0ab5\u0aad\3\2\2\2\u0ab6"+
		"\u0ab7\3\2\2\2\u0ab7\u0ab5\3\2\2\2\u0ab7\u0ab8\3\2\2\2\u0ab8\u0abb\3\2"+
		"\2\2\u0ab9\u0abb\7\6\2\2\u0aba\u0ab5\3\2\2\2\u0aba\u0ab9\3\2\2\2\u0abb"+
		"\u0abc\3\2\2\2\u0abc\u0ac6\7\u00e6\2\2\u0abd\u0abe\5\u03ba\u01de\2\u0abe"+
		"\u0abf\7\u0331\2\2\u0abf\u0ac1\3\2\2\2\u0ac0\u0abd\3\2\2\2\u0ac0\u0ac1"+
		"\3\2\2\2\u0ac1\u0ac2\3\2\2\2\u0ac2\u0ac7\5\u03ba\u01de\2\u0ac3\u0ac7\7"+
		"U\2\2\u0ac4\u0ac5\7\6\2\2\u0ac5\u0ac7\7\u0138\2\2\u0ac6\u0ac0\3\2\2\2"+
		"\u0ac6\u0ac3\3\2\2\2\u0ac6\u0ac4\3\2\2\2\u0ac7\u010d\3\2\2\2\u0ac8\u0ac9"+
		"\7\u01ec\2\2\u0ac9\u0ad8\7\u0164\2\2\u0aca\u0acc\7\u0338\2\2\u0acb\u0aca"+
		"\3\2\2\2\u0acb\u0acc\3\2\2\2\u0acc\u0ad0\3\2\2\2\u0acd\u0ace\5\u03ba\u01de"+
		"\2\u0ace\u0acf\7\u0331\2\2\u0acf\u0ad1\3\2\2\2\u0ad0\u0acd\3\2\2\2\u0ad0"+
		"\u0ad1\3\2\2\2\u0ad1\u0ad2\3\2\2\2\u0ad2\u0ad4\5\u03ba\u01de\2\u0ad3\u0acb"+
		"\3\2\2\2\u0ad4\u0ad5\3\2\2\2\u0ad5\u0ad3\3\2\2\2\u0ad5\u0ad6\3\2\2\2\u0ad6"+
		"\u0ad9\3\2\2\2\u0ad7\u0ad9\7\6\2\2\u0ad8\u0ad3\3\2\2\2\u0ad8\u0ad7\3\2"+
		"\2\2\u0ad9\u0ada\3\2\2\2\u0ada\u0ae4\7\u00e6\2\2\u0adb\u0adc\5\u03ba\u01de"+
		"\2\u0adc\u0add\7\u0331\2\2\u0add\u0adf\3\2\2\2\u0ade\u0adb\3\2\2\2\u0ade"+
		"\u0adf\3\2\2\2\u0adf\u0ae0\3\2\2\2\u0ae0\u0ae5\5\u03ba\u01de\2\u0ae1\u0ae5"+
		"\7U\2\2\u0ae2\u0ae3\7\6\2\2\u0ae3\u0ae5\7\u0138\2\2\u0ae4\u0ade\3\2\2"+
		"\2\u0ae4\u0ae1\3\2\2\2\u0ae4\u0ae2\3\2\2\2\u0ae5\u010f\3\2\2\2\u0ae6\u0ae7"+
		"\7\u023b\2\2\u0ae7\u0ae8\7\u0157\2\2\u0ae8\u0ae9\5\u0382\u01c2\2\u0ae9"+
		"\u0aea\7\u009c\2\2\u0aea\u0aeb\t\26\2\2\u0aeb\u0aef\7\u025b\2\2\u0aec"+
		"\u0aed\7\u030a\2\2\u0aed\u0af0\7\u031c\2\2\u0aee\u0af0\7\u026e\2\2\u0aef"+
		"\u0aec\3\2\2\2\u0aef\u0aee\3\2\2\2\u0aef\u0af0\3\2\2\2\u0af0\u0af2\3\2"+
		"\2\2\u0af1\u0af3\7\u0339\2\2\u0af2\u0af1\3\2\2\2\u0af2\u0af3\3\2\2\2\u0af3"+
		"\u0111\3\2\2\2\u0af4\u0af5\7\u0165\2\2\u0af5\u0af6\7\u0157\2\2\u0af6\u0b0a"+
		"\5\u0382\u01c2\2\u0af7\u0af8\7\u017d\2\2\u0af8\u0af9\7\u0336\2\2\u0af9"+
		"\u0afa\7\u0282\2\2\u0afa\u0b04\7\u0336\2\2\u0afb\u0afd\7\u0338\2\2\u0afc"+
		"\u0afb\3\2\2\2\u0afc\u0afd\3\2\2\2\u0afd\u0b02\3\2\2\2\u0afe\u0b03\7\u031c"+
		"\2\2\u0aff\u0b00\7\u031c\2\2\u0b00\u0b01\7\u015e\2\2\u0b01\u0b03\7\u031c"+
		"\2\2\u0b02\u0afe\3\2\2\2\u0b02\u0aff\3\2\2\2\u0b03\u0b05\3\2\2\2\u0b04"+
		"\u0afc\3\2\2\2\u0b05\u0b06\3\2\2\2\u0b06\u0b04\3\2\2\2\u0b06\u0b07\3\2"+
		"\2\2\u0b07\u0b08\3\2\2\2\u0b08\u0b09\7\u0337\2\2\u0b09\u0b0b\7\u0337\2"+
		"\2\u0b0a\u0af7\3\2\2\2\u0b0a\u0b0b\3\2\2\2\u0b0b\u0113\3\2\2\2\u0b0c\u0b0d"+
		"\7I\2\2\u0b0d\u0b0e\78\2\2\u0b0e\u0b0f\7\u00be\2\2\u0b0f\u0b10\7\u00ad"+
		"\2\2\u0b10\u0b11\5\u03ba\u01de\2\u0b11\u0b12\7\u017d\2\2\u0b12\u0b13\7"+
		"\u0336\2\2\u0b13\u0b14\7\u00af\2\2\u0b14\u0b15\7\u0324\2\2\u0b15\u0b16"+
		"\7\u0320\2\2\u0b16\u0b17\7\u0338\2\2\u0b17\u0b18\7\u00ae\2\2\u0b18\u0b19"+
		"\7\u0324\2\2\u0b19\u0b1a\7\u0320\2\2\u0b1a\u0b1b\7\u0337\2\2\u0b1b\u0115"+
		"\3\2\2\2\u0b1c\u0b1d\7\n\2\2\u0b1d\u0b1e\7\u01c8\2\2\u0b1e\u0b1f\5\u03ba"+
		"\u01de\2\u0b1f\u0b20\7\u017d\2\2\u0b20\u0b21\7\u0097\2\2\u0b21\u0b22\7"+
		"\u0324\2\2\u0b22\u0b27\7\u0320\2\2\u0b23\u0b24\7\u0338\2\2\u0b24\u0b25"+
		"\7\u02c8\2\2\u0b25\u0b26\7\u0324\2\2\u0b26\u0b28\7\u0320\2\2\u0b27\u0b23"+
		"\3\2\2\2\u0b27\u0b28\3\2\2\2\u0b28\u0117\3\2\2\2\u0b29\u0b2a\7I\2\2\u0b2a"+
		"\u0b2b\7\u01c8\2\2\u0b2b\u0b2c\5\u03ba\u01de\2\u0b2c\u0b2d\7\u017d\2\2"+
		"\u0b2d\u0b2e\7\u0097\2\2\u0b2e\u0b2f\7\u0324\2\2\u0b2f\u0b34\7\u0320\2"+
		"\2\u0b30\u0b31\7\u0338\2\2\u0b31\u0b32\7\u02c8\2\2\u0b32\u0b33\7\u0324"+
		"\2\2\u0b33\u0b35\7\u0320\2\2\u0b34\u0b30\3\2\2\2\u0b34\u0b35\3\2\2\2\u0b35"+
		"\u0b3a\3\2\2\2\u0b36\u0b37\7\u0086\2\2\u0b37\u0b38\7\u01c9\2\2\u0b38\u0b39"+
		"\7\u0292\2\2\u0b39\u0b3b\5\u03ba\u01de\2\u0b3a\u0b36\3\2\2\2\u0b3a\u0b3b"+
		"\3\2\2\2\u0b3b\u0119\3\2\2\2\u0b3c\u0b3d\7\n\2\2\u0b3d\u0b3e\7\u01c9\2"+
		"\2\u0b3e\u0b3f\7\u0292\2\2\u0b3f\u0b44\5\u03ba\u01de\2\u0b40\u0b41\7\u008c"+
		"\2\2\u0b41\u0b42\7\u0082\2\2\u0b42\u0b43\7\u0324\2\2\u0b43\u0b45\7\u0320"+
		"\2\2\u0b44\u0b40\3\2\2\2\u0b44\u0b45\3\2\2\2\u0b45\u0b47\3\2\2\2\u0b46"+
		"\u0b48\t\27\2\2\u0b47\u0b46\3\2\2\2\u0b47\u0b48\3\2\2\2\u0b48\u011b\3"+
		"\2\2\2\u0b49\u0b4a\7I\2\2\u0b4a\u0b4b\7\u01c9\2\2\u0b4b\u0b4c\7\u0292"+
		"\2\2\u0b4c\u0b4d\5\u03ba\u01de\2\u0b4d\u0b4e\7\u008c\2\2\u0b4e\u0b4f\7"+
		"\u0082\2\2\u0b4f\u0b50\7\u0324\2\2\u0b50\u0b51\7\u0320\2\2\u0b51\u011d"+
		"\3\2\2\2\u0b52\u0b53\7I\2\2\u0b53\u0b54\7r\2\2\u0b54\u0b55\7\u00de\2\2"+
		"\u0b55\u0b56\5\u03ba\u01de\2\u0b56\u0b5b\7\u00e6\2\2\u0b57\u0b5c\7\u0138"+
		"\2\2\u0b58\u0b5c\7U\2\2\u0b59\u0b5a\7\u0295\2\2\u0b5a\u0b5c\5\u03ba\u01de"+
		"\2\u0b5b\u0b57\3\2\2\2\u0b5b\u0b58\3\2\2\2\u0b5b\u0b59\3\2\2\2\u0b5c\u0b5f"+
		"\3\2\2\2\u0b5d\u0b5e\7\u017d\2\2\u0b5e\u0b60\7\u0080\2\2\u0b5f\u0b5d\3"+
		"\2\2\2\u0b5f\u0b60\3\2\2\2\u0b60\u0b61\3\2\2\2\u0b61\u0b66\7\u0086\2\2"+
		"\u0b62\u0b64\7\u0338\2\2\u0b63\u0b62\3\2\2\2\u0b63\u0b64\3\2\2\2\u0b64"+
		"\u0b65\3\2\2\2\u0b65\u0b67\5\u03ba\u01de\2\u0b66\u0b63\3\2\2\2\u0b67\u0b68"+
		"\3\2\2\2\u0b68\u0b66\3\2\2\2\u0b68\u0b69\3\2\2\2\u0b69\u0b6a\3\2\2\2\u0b6a"+
		"\u0b6b\7\u015e\2\2\u0b6b\u0b6c\7\u0139\2\2\u0b6c\u0b6d\7\u0320\2\2\u0b6d"+
		"\u0b6e\7\u0338\2\2\u0b6e\u0b6f\7\u0320\2\2\u0b6f\u011f\3\2\2\2\u0b70\u0b71"+
		"\t\24\2\2\u0b71\u0b72\7r\2\2\u0b72\u0b73\7\u013c\2\2\u0b73\u0b74\5\u03ba"+
		"\u01de\2\u0b74\u0b75\7\u00e6\2\2\u0b75\u0bb9\7\u0138\2\2\u0b76\u0b78\7"+
		"\u0338\2\2\u0b77\u0b76\3\2\2\2\u0b77\u0b78\3\2\2\2\u0b78\u0b79\3\2\2\2"+
		"\u0b79\u0b7a\7\4\2\2\u0b7a\u0b7e\7r\2\2\u0b7b\u0b7c\5\u03ba\u01de\2\u0b7c"+
		"\u0b7d\7\u0331\2\2\u0b7d\u0b7f\3\2\2\2\u0b7e\u0b7b\3\2\2\2\u0b7e\u0b7f"+
		"\3\2\2\2\u0b7f\u0b80\3\2\2\2\u0b80\u0b81\5\u03ba\u01de\2\u0b81\u0b82\7"+
		"\u0331\2\2\u0b82\u0b83\5\u03ba\u01de\2\u0b83\u0bb4\3\2\2\2\u0b84\u0b92"+
		"\7\u0336\2\2\u0b85\u0b8f\7\u013e\2\2\u0b86\u0b88\7\u0338\2\2\u0b87\u0b86"+
		"\3\2\2\2\u0b87\u0b88\3\2\2\2\u0b88\u0b89\3\2\2\2\u0b89\u0b8a\5\u03ba\u01de"+
		"\2\u0b8a\u0b8b\7\u0324\2\2\u0b8b\u0b8c\t\30\2\2\u0b8c\u0b8e\3\2\2\2\u0b8d"+
		"\u0b87\3\2\2\2\u0b8e\u0b91\3\2\2\2\u0b8f\u0b8d\3\2\2\2\u0b8f\u0b90\3\2"+
		"\2\2\u0b90\u0b93\3\2\2\2\u0b91\u0b8f\3\2\2\2\u0b92\u0b85\3\2\2\2\u0b92"+
		"\u0b93\3\2\2\2\u0b93\u0ba8\3\2\2\2\u0b94\u0b95\7\u0184\2\2\u0b95\u0ba2"+
		"\7\u0336\2\2\u0b96\u0b98\7\u0338\2\2\u0b97\u0b96\3\2\2\2\u0b97\u0b98\3"+
		"\2\2\2\u0b98\u0b9c\3\2\2\2\u0b99\u0b9a\5\u03ba\u01de\2\u0b9a\u0b9b\7\u0331"+
		"\2\2\u0b9b\u0b9d\3\2\2\2\u0b9c\u0b99\3\2\2\2\u0b9c\u0b9d\3\2\2\2\u0b9d"+
		"\u0b9e\3\2\2\2\u0b9e\u0b9f\5\u03ba\u01de\2\u0b9f\u0ba0\7\u0331\2\2\u0ba0"+
		"\u0ba1\5\u03ba\u01de\2\u0ba1\u0ba3\3\2\2\2\u0ba2\u0b97\3\2\2\2\u0ba3\u0ba4"+
		"\3\2\2\2\u0ba4\u0ba2\3\2\2\2\u0ba4\u0ba5\3\2\2\2\u0ba5\u0ba6\3\2\2\2\u0ba6"+
		"\u0ba7\7\u0337\2\2\u0ba7\u0ba9\3\2\2\2\u0ba8\u0b94\3\2\2\2\u0ba9\u0baa"+
		"\3\2\2\2\u0baa\u0ba8\3\2\2\2\u0baa\u0bab\3\2\2\2\u0bab\u0bae\3\2\2\2\u0bac"+
		"\u0bad\7\u017a\2\2\u0bad\u0baf\5\u0122\u0092\2\u0bae\u0bac\3\2\2\2\u0bae"+
		"\u0baf\3\2\2\2\u0baf\u0bb0\3\2\2\2\u0bb0\u0bb1\7\u0337\2\2\u0bb1\u0bb3"+
		"\3\2\2\2\u0bb2\u0b84\3\2\2\2\u0bb3\u0bb6\3\2\2\2\u0bb4\u0bb2\3\2\2\2\u0bb4"+
		"\u0bb5\3\2\2\2\u0bb5\u0bb8\3\2\2\2\u0bb6\u0bb4\3\2\2\2\u0bb7\u0b77\3\2"+
		"\2\2\u0bb8\u0bbb\3\2\2\2\u0bb9\u0bb7\3\2\2\2\u0bb9\u0bba\3\2\2\2\u0bba"+
		"\u0bcc\3\2\2\2\u0bbb\u0bb9\3\2\2\2\u0bbc\u0bbe\7\u0338\2\2\u0bbd\u0bbc"+
		"\3\2\2\2\u0bbd\u0bbe\3\2\2\2\u0bbe\u0bbf\3\2\2\2\u0bbf\u0bc0\7h\2\2\u0bc0"+
		"\u0bc4\7r\2\2\u0bc1\u0bc2\5\u03ba\u01de\2\u0bc2\u0bc3\7\u0331\2\2\u0bc3"+
		"\u0bc5\3\2\2\2\u0bc4\u0bc1\3\2\2\2\u0bc4\u0bc5\3\2\2\2\u0bc5\u0bc6\3\2"+
		"\2\2\u0bc6\u0bc7\5\u03ba\u01de\2\u0bc7\u0bc8\7\u0331\2\2\u0bc8\u0bc9\5"+
		"\u03ba\u01de\2\u0bc9\u0bcb\3\2\2\2\u0bca\u0bbd\3\2\2\2\u0bcb\u0bce\3\2"+
		"\2\2\u0bcc\u0bca\3\2\2\2\u0bcc\u0bcd\3\2\2\2\u0bcd\u0bf8\3\2\2\2\u0bce"+
		"\u0bcc\3\2\2\2\u0bcf\u0bd0\7\4\2\2\u0bd0\u0bd4\7\u015a\2\2\u0bd1\u0bd2"+
		"\5\u03ba\u01de\2\u0bd2\u0bd3\7\u0331\2\2\u0bd3\u0bd5\3\2\2\2\u0bd4\u0bd1"+
		"\3\2\2\2\u0bd4\u0bd5\3\2\2\2\u0bd5\u0bd6\3\2\2\2\u0bd6\u0bd7\5\u03ba\u01de"+
		"\2\u0bd7\u0bd8\7\u0331\2\2\u0bd8\u0bd9\5\u03ba\u01de\2\u0bd9\u0bf3\3\2"+
		"\2\2\u0bda\u0bdb\7\u0336\2\2\u0bdb\u0beb\7\u013e\2\2\u0bdc\u0bde\7\u0338"+
		"\2\2\u0bdd\u0bdc\3\2\2\2\u0bdd\u0bde\3\2\2\2\u0bde\u0bdf\3\2\2\2\u0bdf"+
		"\u0be0\5\u03ba\u01de\2\u0be0\u0be9\7\u0324\2\2\u0be1\u0be3\7\u0336\2\2"+
		"\u0be2\u0be1\3\2\2\2\u0be2\u0be3\3\2\2\2\u0be3\u0be4\3\2\2\2\u0be4\u0be6"+
		"\7\u031c\2\2\u0be5\u0be7\7\u0337\2\2\u0be6\u0be5\3\2\2\2\u0be6\u0be7\3"+
		"\2\2\2\u0be7\u0bea\3\2\2\2\u0be8\u0bea\7\u0320\2\2\u0be9\u0be2\3\2\2\2"+
		"\u0be9\u0be8\3\2\2\2\u0bea\u0bec\3\2\2\2\u0beb\u0bdd\3\2\2\2\u0bec\u0bed"+
		"\3\2\2\2\u0bed\u0beb\3\2\2\2\u0bed\u0bee\3\2\2\2\u0bee\u0bef\3\2\2\2\u0bef"+
		"\u0bf0\7\u0337\2\2\u0bf0\u0bf2\3\2\2\2\u0bf1\u0bda\3\2\2\2\u0bf2\u0bf5"+
		"\3\2\2\2\u0bf3\u0bf1\3\2\2\2\u0bf3\u0bf4\3\2\2\2\u0bf4\u0bf7\3\2\2\2\u0bf5"+
		"\u0bf3\3\2\2\2\u0bf6\u0bcf\3\2\2\2\u0bf7\u0bfa\3\2\2\2\u0bf8\u0bf6\3\2"+
		"\2\2\u0bf8\u0bf9\3\2\2\2\u0bf9\u0c08\3\2\2\2\u0bfa\u0bf8\3\2\2\2\u0bfb"+
		"\u0bfc\7h\2\2\u0bfc\u0c00\7\u015a\2\2\u0bfd\u0bfe\5\u03ba\u01de\2\u0bfe"+
		"\u0bff\7\u0331\2\2\u0bff\u0c01\3\2\2\2\u0c00\u0bfd\3\2\2\2\u0c00\u0c01"+
		"\3\2\2\2\u0c01\u0c02\3\2\2\2\u0c02\u0c03\5\u03ba\u01de\2\u0c03\u0c04\7"+
		"\u0331\2\2\u0c04\u0c05\5\u03ba\u01de\2\u0c05\u0c07\3\2\2\2\u0c06\u0bfb"+
		"\3\2\2\2\u0c07\u0c0a\3\2\2\2\u0c08\u0c06\3\2\2\2\u0c08\u0c09\3\2\2\2\u0c09"+
		"\u0c4c\3\2\2\2\u0c0a\u0c08\3\2\2\2\u0c0b\u0c0c\7\u017d\2\2\u0c0c\u0c14"+
		"\7\u0336\2\2\u0c0d\u0c0f\7\u0338\2\2\u0c0e\u0c0d\3\2\2\2\u0c0e\u0c0f\3"+
		"\2\2\2\u0c0f\u0c10\3\2\2\2\u0c10\u0c11\7\u00bf\2\2\u0c11\u0c12\7\u0324"+
		"\2\2\u0c12\u0c13\7\u031c\2\2\u0c13\u0c15\t\31\2\2\u0c14\u0c0e\3\2\2\2"+
		"\u0c14\u0c15\3\2\2\2\u0c15\u0c1c\3\2\2\2\u0c16\u0c18\7\u0338\2\2\u0c17"+
		"\u0c16\3\2\2\2\u0c17\u0c18\3\2\2\2\u0c18\u0c19\3\2\2\2\u0c19\u0c1a\7t"+
		"\2\2\u0c1a\u0c1b\7\u0324\2\2\u0c1b\u0c1d\t\32\2\2\u0c1c\u0c17\3\2\2\2"+
		"\u0c1c\u0c1d\3\2\2\2\u0c1d\u0c28\3\2\2\2\u0c1e\u0c20\7\u0338\2\2\u0c1f"+
		"\u0c1e\3\2\2\2\u0c1f\u0c20\3\2\2\2\u0c20\u0c21\3\2\2\2\u0c21\u0c22\7\u00c2"+
		"\2\2\u0c22\u0c26\7\u0324\2\2\u0c23\u0c24\7\u031c\2\2\u0c24\u0c27\7\u02c7"+
		"\2\2\u0c25\u0c27\7\u00a0\2\2\u0c26\u0c23\3\2\2\2\u0c26\u0c25\3\2\2\2\u0c27"+
		"\u0c29\3\2\2\2\u0c28\u0c1f\3\2\2\2\u0c28\u0c29\3\2\2\2\u0c29\u0c31\3\2"+
		"\2\2\u0c2a\u0c2c\7\u0338\2\2\u0c2b\u0c2a\3\2\2\2\u0c2b\u0c2c\3\2\2\2\u0c2c"+
		"\u0c2d\3\2\2\2\u0c2d\u0c2e\7\u00c3\2\2\u0c2e\u0c2f\7\u0324\2\2\u0c2f\u0c30"+
		"\7\u031c\2\2\u0c30\u0c32\t\31\2\2\u0c31\u0c2b\3\2\2\2\u0c31\u0c32\3\2"+
		"\2\2\u0c32\u0c39\3\2\2\2\u0c33\u0c35\7\u0338\2\2\u0c34\u0c33\3\2\2\2\u0c34"+
		"\u0c35\3\2\2\2\u0c35\u0c36\3\2\2\2\u0c36\u0c37\7\u00c9\2\2\u0c37\u0c38"+
		"\7\u0324\2\2\u0c38\u0c3a\t\33\2\2\u0c39\u0c34\3\2\2\2\u0c39\u0c3a\3\2"+
		"\2\2\u0c3a\u0c41\3\2\2\2\u0c3b\u0c3d\7\u0338\2\2\u0c3c\u0c3b\3\2\2\2\u0c3c"+
		"\u0c3d\3\2\2\2\u0c3d\u0c3e\3\2\2\2\u0c3e\u0c3f\7\u0160\2\2\u0c3f\u0c40"+
		"\7\u0324\2\2\u0c40\u0c42\t\t\2\2\u0c41\u0c3c\3\2\2\2\u0c41\u0c42\3\2\2"+
		"\2\u0c42\u0c49\3\2\2\2\u0c43\u0c45\7\u0338\2\2\u0c44\u0c43\3\2\2\2\u0c44"+
		"\u0c45\3\2\2\2\u0c45\u0c46\3\2\2\2\u0c46\u0c47\7\u0150\2\2\u0c47\u0c48"+
		"\7\u0324\2\2\u0c48\u0c4a\t\t\2\2\u0c49\u0c44\3\2\2\2\u0c49\u0c4a\3\2\2"+
		"\2\u0c4a\u0c4b\3\2\2\2\u0c4b\u0c4d\7\u0337\2\2\u0c4c\u0c0b\3\2\2\2\u0c4c"+
		"\u0c4d\3\2\2\2\u0c4d\u0c51\3\2\2\2\u0c4e\u0c4f\7\u014c\2\2\u0c4f\u0c50"+
		"\7\u0324\2\2\u0c50\u0c52\t\34\2\2\u0c51\u0c4e\3\2\2\2\u0c51\u0c52";
	private static final String _serializedATNSegment2 =
		"\3\2\2\2\u0c52\u0121\3\2\2\2\u0c53\u0c55\7\u0338\2\2\u0c54\u0c53\3\2\2"+
		"\2\u0c54\u0c55\3\2\2\2\u0c55\u0c57\3\2\2\2\u0c56\u0c58\t\35\2\2\u0c57"+
		"\u0c56\3\2\2\2\u0c57\u0c58\3\2\2\2\u0c58\u0c5a\3\2\2\2\u0c59\u0c5b\7\u00dd"+
		"\2\2\u0c5a\u0c59\3\2\2\2\u0c5a\u0c5b\3\2\2\2\u0c5b\u0c61\3\2\2\2\u0c5c"+
		"\u0c62\5\u0124\u0093\2\u0c5d\u0c5e\7\u0336\2\2\u0c5e\u0c5f\5\u0122\u0092"+
		"\2\u0c5f\u0c60\7\u0337\2\2\u0c60\u0c62\3\2\2\2\u0c61\u0c5c\3\2\2\2\u0c61"+
		"\u0c5d\3\2\2\2\u0c62\u0c64\3\2\2\2\u0c63\u0c54\3\2\2\2\u0c64\u0c65\3\2"+
		"\2\2\u0c65\u0c63\3\2\2\2\u0c65\u0c66\3\2\2\2\u0c66\u0123\3\2\2\2\u0c67"+
		"\u0c6d\5\u0126\u0094\2\u0c68\u0c69\7\u0336\2\2\u0c69\u0c6a\5\u0122\u0092"+
		"\2\u0c6a\u0c6b\7\u0337\2\2\u0c6b\u0c6d\3\2\2\2\u0c6c\u0c67\3\2\2\2\u0c6c"+
		"\u0c68\3\2\2\2\u0c6d\u0125\3\2\2\2\u0c6e\u0c8b\5\u03ba\u01de\2\u0c6f\u0c7a"+
		"\5\u03ba\u01de\2\u0c70\u0c71\5\u03ba\u01de\2\u0c71\u0c72\7\u0331\2\2\u0c72"+
		"\u0c74\3\2\2\2\u0c73\u0c70\3\2\2\2\u0c73\u0c74\3\2\2\2\u0c74\u0c75\3\2"+
		"\2\2\u0c75\u0c76\5\u03ba\u01de\2\u0c76\u0c77\7\u0331\2\2\u0c77\u0c78\5"+
		"\u03ba\u01de\2\u0c78\u0c7a\3\2\2\2\u0c79\u0c6f\3\2\2\2\u0c79\u0c73\3\2"+
		"\2\2\u0c7a\u0c86\3\2\2\2\u0c7b\u0c87\7\u0324\2\2\u0c7c\u0c7d\7\u0326\2"+
		"\2\u0c7d\u0c87\7\u0325\2\2\u0c7e\u0c7f\7\u0327\2\2\u0c7f\u0c87\7\u0324"+
		"\2\2\u0c80\u0c87\7\u0325\2\2\u0c81\u0c82\7\u0325\2\2\u0c82\u0c87\7\u0324"+
		"\2\2\u0c83\u0c87\7\u0326\2\2\u0c84\u0c85\7\u0326\2\2\u0c85\u0c87\7\u0324"+
		"\2\2\u0c86\u0c7b\3\2\2\2\u0c86\u0c7c\3\2\2\2\u0c86\u0c7e\3\2\2\2\u0c86"+
		"\u0c80\3\2\2\2\u0c86\u0c81\3\2\2\2\u0c86\u0c83\3\2\2\2\u0c86\u0c84\3\2"+
		"\2\2\u0c87\u0c88\3\2\2\2\u0c88\u0c89\t\30\2\2\u0c89\u0c8b\3\2\2\2\u0c8a"+
		"\u0c6e\3\2\2\2\u0c8a\u0c79\3\2\2\2\u0c8b\u0ca7\3\2\2\2\u0c8c\u0c8d\5\u03ba"+
		"\u01de\2\u0c8d\u0c8e\7\u0331\2\2\u0c8e\u0c90\3\2\2\2\u0c8f\u0c8c\3\2\2"+
		"\2\u0c8f\u0c90\3\2\2\2\u0c90\u0c91\3\2\2\2\u0c91\u0c92\5\u03ba\u01de\2"+
		"\u0c92\u0c93\7\u0331\2\2\u0c93\u0c94\5\u03ba\u01de\2\u0c94\u0ca2\7\u0336"+
		"\2\2\u0c95\u0ca3\5\u03ba\u01de\2\u0c96\u0c97\5\u03ba\u01de\2\u0c97\u0c98"+
		"\7\u0331\2\2\u0c98\u0c9a\3\2\2\2\u0c99\u0c96\3\2\2\2\u0c99\u0c9a\3\2\2"+
		"\2\u0c9a\u0c9b\3\2\2\2\u0c9b\u0c9c\5\u03ba\u01de\2\u0c9c\u0c9d\7\u0331"+
		"\2\2\u0c9d\u0c9e\5\u03ba\u01de\2\u0c9e\u0c9f\3\2\2\2\u0c9f\u0ca0\7\u0338"+
		"\2\2\u0ca0\u0ca1\t\30\2\2\u0ca1\u0ca3\3\2\2\2\u0ca2\u0c95\3\2\2\2\u0ca2"+
		"\u0c99\3\2\2\2\u0ca3\u0ca4\3\2\2\2\u0ca4\u0ca5\7\u0337\2\2\u0ca5\u0ca7"+
		"\3\2\2\2\u0ca6\u0c8a\3\2\2\2\u0ca6\u0c8f\3\2\2\2\u0ca7\u0127\3\2\2\2\u0ca8"+
		"\u0ca9\7\n\2\2\u0ca9\u0caa\7|\2\2\u0caa\u0cab\7R\2\2\u0cab\u0cac\7\u0145"+
		"\2\2\u0cac\u0cad\5\u03ba\u01de\2\u0cad\u0cbd\7\u013e\2\2\u0cae\u0caf\7"+
		"\u023a\2\2\u0caf\u0cb0\7\u0324\2\2\u0cb0\u0cb2\t\36\2\2\u0cb1\u0cb3\7"+
		"\u0338\2\2\u0cb2\u0cb1\3\2\2\2\u0cb2\u0cb3\3\2\2\2\u0cb3\u0cbe\3\2\2\2"+
		"\u0cb4\u0cb5\7\u02b4\2\2\u0cb5\u0cb6\7\u0324\2\2\u0cb6\u0cb8\t\36\2\2"+
		"\u0cb7\u0cb9\7\u0338\2\2\u0cb8\u0cb7\3\2\2\2\u0cb8\u0cb9\3\2\2\2\u0cb9"+
		"\u0cbe\3\2\2\2\u0cba\u0cbb\7\u01c8\2\2\u0cbb\u0cbc\7\u0324\2\2\u0cbc\u0cbe"+
		"\5\u03ba\u01de\2\u0cbd\u0cae\3\2\2\2\u0cbd\u0cb4\3\2\2\2\u0cbd\u0cba\3"+
		"\2\2\2\u0cbe\u0cbf\3\2\2\2\u0cbf\u0cbd\3\2\2\2\u0cbf\u0cc0\3\2\2\2\u0cc0"+
		"\u0cd8\3\2\2\2\u0cc1\u0cc2\7\n\2\2\u0cc2\u0cc3\7|\2\2\u0cc3\u0cc4\7R\2"+
		"\2\u0cc4\u0cc5\7\u0145\2\2\u0cc5\u0cc6\5\u03ba\u01de\2\u0cc6\u0cc7\7\u017d"+
		"\2\2\u0cc7\u0cc8\7\u0336\2\2\u0cc8\u0cc9\7\u02fc\2\2\u0cc9\u0cca\7\u0324"+
		"\2\2\u0cca\u0ccb\7\u01ab\2\2\u0ccb\u0ccc\7\u0338\2\2\u0ccc\u0ccd\7\u023a"+
		"\2\2\u0ccd\u0cce\7\u0324\2\2\u0cce\u0cd3\7\u0320\2\2\u0ccf\u0cd0\7\u0338"+
		"\2\2\u0cd0\u0cd1\7\u01c8\2\2\u0cd1\u0cd2\7\u0324\2\2\u0cd2\u0cd4\5\u03ba"+
		"\u01de\2\u0cd3\u0ccf\3\2\2\2\u0cd3\u0cd4\3\2\2\2\u0cd4\u0cd5\3\2\2\2\u0cd5"+
		"\u0cd6\7\u0337\2\2\u0cd6\u0cd8\3\2\2\2\u0cd7\u0ca8\3\2\2\2\u0cd7\u0cc1"+
		"\3\2\2\2\u0cd8\u0129\3\2\2\2\u0cd9\u0cda\7\n\2\2\u0cda\u0cdb\7|\2\2\u0cdb"+
		"\u0cdc\7\u00b3\2\2\u0cdc\u0cdf\5\u03ba\u01de\2\u0cdd\u0cde\7\24\2\2\u0cde"+
		"\u0ce0\5\u03ba\u01de\2\u0cdf\u0cdd\3\2\2\2\u0cdf\u0ce0\3\2\2\2\u0ce0\u0ce1"+
		"\3\2\2\2\u0ce1\u0ce2\t\37\2\2\u0ce2\u0ce3\7\u0336\2\2\u0ce3\u0ce4\7\u01bf"+
		"\2\2\u0ce4\u0ce8\7\u0324\2\2\u0ce5\u0ce9\7\u0320\2\2\u0ce6\u0ce9\7\u0321"+
		"\2\2\u0ce7\u0ce9\7\u00d6\2\2\u0ce8\u0ce5\3\2\2\2\u0ce8\u0ce6\3\2\2\2\u0ce8"+
		"\u0ce7\3\2\2\2\u0ce9\u0cea\3\2\2\2\u0cea\u0ceb\7\u0338\2\2\u0ceb\u0cec"+
		"\7\u00fd\2\2\u0cec\u0cee\7\u0324\2\2\u0ced\u0cef\t \2\2\u0cee\u0ced\3"+
		"\2\2\2\u0cee\u0cef\3\2\2\2\u0cef\u0cf0\3\2\2\2\u0cf0\u0cf1\7\u0337\2\2"+
		"\u0cf1\u0cf2\3\2\2\2\u0cf2\u0cfc\7\u017d\2\2\u0cf3\u0cf5\7\u0338\2\2\u0cf4"+
		"\u0cf3\3\2\2\2\u0cf4\u0cf5\3\2\2\2\u0cf5\u0cf6\3\2\2\2\u0cf6\u0cf7\7\u00b1"+
		"\2\2\u0cf7\u0cf8\7\u0324\2\2\u0cf8\u0cfd\t!\2\2\u0cf9\u0cfa\7T\2\2\u0cfa"+
		"\u0cfb\7\u0324\2\2\u0cfb\u0cfd\5\u03ba\u01de\2\u0cfc\u0cf4\3\2\2\2\u0cfc"+
		"\u0cf9\3\2\2\2\u0cfd\u0cfe\3\2\2\2\u0cfe\u0cfc\3\2\2\2\u0cfe\u0cff\3\2"+
		"\2\2\u0cff\u0d00\3\2\2\2\u0d00\u0d01\7\u0337\2\2\u0d01\u012b\3\2\2\2\u0d02"+
		"\u0d03\7I\2\2\u0d03\u0d04\7|\2\2\u0d04\u0d05\7\u00b3\2\2\u0d05\u0d08\5"+
		"\u03ba\u01de\2\u0d06\u0d07\7\24\2\2\u0d07\u0d09\5\u03ba\u01de\2\u0d08"+
		"\u0d06\3\2\2\2\u0d08\u0d09\3\2\2\2\u0d09\u0d0a\3\2\2\2\u0d0a\u0d0c\7\u008c"+
		"\2\2\u0d0b\u0d0d\7\u0338\2\2\u0d0c\u0d0b\3\2\2\2\u0d0c\u0d0d\3\2\2\2\u0d0d"+
		"\u0d0f\3\2\2\2\u0d0e\u0d10\7\u0336\2\2\u0d0f\u0d0e\3\2\2\2\u0d0f\u0d10"+
		"\3\2\2\2\u0d10\u0d13\3\2\2\2\u0d11\u0d12\7\u01bf\2\2\u0d12\u0d14\7\u0324"+
		"\2\2\u0d13\u0d11\3\2\2\2\u0d13\u0d14\3\2\2\2\u0d14\u0d18\3\2\2\2\u0d15"+
		"\u0d19\7\u0320\2\2\u0d16\u0d19\7\u0321\2\2\u0d17\u0d19\7\u00d6\2\2\u0d18"+
		"\u0d15\3\2\2\2\u0d18\u0d16\3\2\2\2\u0d18\u0d17\3\2\2\2\u0d19\u0d21\3\2"+
		"\2\2\u0d1a\u0d1b\7\u0338\2\2\u0d1b\u0d1c\7\u00fd\2\2\u0d1c\u0d1e\7\u0324"+
		"\2\2\u0d1d\u0d1f\t \2\2\u0d1e\u0d1d\3\2\2\2\u0d1e\u0d1f\3\2\2\2\u0d1f"+
		"\u0d20\3\2\2\2\u0d20\u0d22\7\u0337\2\2\u0d21\u0d1a\3\2\2\2\u0d21\u0d22"+
		"\3\2\2\2\u0d22\u0d32\3\2\2\2\u0d23\u0d2d\7\u017d\2\2\u0d24\u0d26\7\u0338"+
		"\2\2\u0d25\u0d24\3\2\2\2\u0d25\u0d26\3\2\2\2\u0d26\u0d27\3\2\2\2\u0d27"+
		"\u0d28\7\u00b1\2\2\u0d28\u0d29\7\u0324\2\2\u0d29\u0d2e\t!\2\2\u0d2a\u0d2b"+
		"\7T\2\2\u0d2b\u0d2c\7\u0324\2\2\u0d2c\u0d2e\5\u03ba\u01de\2\u0d2d\u0d25"+
		"\3\2\2\2\u0d2d\u0d2a\3\2\2\2\u0d2e\u0d2f\3\2\2\2\u0d2f\u0d2d\3\2\2\2\u0d2f"+
		"\u0d30\3\2\2\2\u0d30\u0d31\3\2\2\2\u0d31\u0d33\7\u0337\2\2\u0d32\u0d23"+
		"\3\2\2\2\u0d32\u0d33\3\2\2\2\u0d33\u012d\3\2\2\2\u0d34\u0d35\7\n\2\2\u0d35"+
		"\u0d36\7|\2\2\u0d36\u0d37\7\u02b3\2\2\u0d37\u0d3a\7\u0286\2\2\u0d38\u0d3b"+
		"\5\u03ba\u01de\2\u0d39\u0d3b\7\u01d5\2\2\u0d3a\u0d38\3\2\2\2\u0d3a\u0d39"+
		"\3\2\2\2\u0d3b\u0d3c\3\2\2\2\u0d3c\u0d3d\7\u017d\2\2\u0d3d\u0d3e\7\u0336"+
		"\2\2\u0d3e\u0d3f\7\u0244\2\2\u0d3f\u0d40\7\u0324\2\2\u0d40\u0d66\7\u031c"+
		"\2\2\u0d41\u0d43\7\u0338\2\2\u0d42\u0d41\3\2\2\2\u0d42\u0d43\3\2\2\2\u0d43"+
		"\u0d44\3\2\2\2\u0d44\u0d45\7\u018b\2\2\u0d45\u0d46\7\u01c5\2\2\u0d46\u0d54"+
		"\7\u0324\2\2\u0d47\u0d55\7\u019c\2\2\u0d48\u0d4a\7\u0338\2\2\u0d49\u0d48"+
		"\3\2\2\2\u0d49\u0d4a\3\2\2\2\u0d4a\u0d4b\3\2\2\2\u0d4b\u0d4c\7\u031c\2"+
		"\2\u0d4c\u0d4d\7\u015e\2\2\u0d4d\u0d51\7\u031c\2\2\u0d4e\u0d4f\7\u0338"+
		"\2\2\u0d4f\u0d51\7\u031c\2\2\u0d50\u0d49\3\2\2\2\u0d50\u0d4e\3\2\2\2\u0d51"+
		"\u0d52\3\2\2\2\u0d52\u0d50\3\2\2\2\u0d52\u0d53\3\2\2\2\u0d53\u0d55\3\2"+
		"\2\2\u0d54\u0d47\3\2\2\2\u0d54\u0d50\3\2\2\2\u0d55\u0d67\3\2\2\2\u0d56"+
		"\u0d57\7\u0270\2\2\u0d57\u0d62\7\u0324\2\2\u0d58\u0d5a\7\u0338\2\2\u0d59"+
		"\u0d58\3\2\2\2\u0d59\u0d5a\3\2\2\2\u0d5a\u0d5b\3\2\2\2\u0d5b\u0d5c\7\u031c"+
		"\2\2\u0d5c\u0d5d\7\u015e\2\2\u0d5d\u0d63\7\u031c\2\2\u0d5e\u0d60\7\u0338"+
		"\2\2\u0d5f\u0d5e\3\2\2\2\u0d5f\u0d60\3\2\2\2\u0d60\u0d61\3\2\2\2\u0d61"+
		"\u0d63\7\u031c\2\2\u0d62\u0d59\3\2\2\2\u0d62\u0d5f\3\2\2\2\u0d63\u0d64"+
		"\3\2\2\2\u0d64\u0d62\3\2\2\2\u0d64\u0d65\3\2\2\2\u0d65\u0d67\3\2\2\2\u0d66"+
		"\u0d42\3\2\2\2\u0d66\u0d56\3\2\2\2\u0d67\u0d6e\3\2\2\2\u0d68\u0d6a\7\u0338"+
		"\2\2\u0d69\u0d68\3\2\2\2\u0d69\u0d6a\3\2\2\2\u0d6a\u0d6b\3\2\2\2\u0d6b"+
		"\u0d6c\7\u0248\2\2\u0d6c\u0d6d\7\u0324\2\2\u0d6d\u0d6f\7\u031c\2\2\u0d6e"+
		"\u0d69\3\2\2\2\u0d6e\u0d6f\3\2\2\2\u0d6f\u0d76\3\2\2\2\u0d70\u0d72\7\u0338"+
		"\2\2\u0d71\u0d70\3\2\2\2\u0d71\u0d72\3\2\2\2\u0d72\u0d73\3\2\2\2\u0d73"+
		"\u0d74\7\u0249\2\2\u0d74\u0d75\7\u0324\2\2\u0d75\u0d77\7\u031c\2\2\u0d76"+
		"\u0d71\3\2\2\2\u0d76\u0d77\3\2\2\2\u0d77\u0d78\3\2\2\2\u0d78\u0d79\7\u0337"+
		"\2\2\u0d79\u012f\3\2\2\2\u0d7a\u0d7b\7I\2\2\u0d7b\u0d7c\7|\2\2\u0d7c\u0d7d"+
		"\7\u02b3\2\2\u0d7d\u0d7e\7\u0286\2\2\u0d7e\u0d7f\5\u03ba\u01de\2\u0d7f"+
		"\u0d80\7\u017d\2\2\u0d80\u0d81\7\u0336\2\2\u0d81\u0d82\7\u0244\2\2\u0d82"+
		"\u0d83\7\u0324\2\2\u0d83\u0da9\7\u031c\2\2\u0d84\u0d86\7\u0338\2\2\u0d85"+
		"\u0d84\3\2\2\2\u0d85\u0d86\3\2\2\2\u0d86\u0d87\3\2\2\2\u0d87\u0d88\7\u018b"+
		"\2\2\u0d88\u0d89\7\u01c5\2\2\u0d89\u0d97\7\u0324\2\2\u0d8a\u0d98\7\u019c"+
		"\2\2\u0d8b\u0d8d\7\u0338\2\2\u0d8c\u0d8b\3\2\2\2\u0d8c\u0d8d\3\2\2\2\u0d8d"+
		"\u0d8e\3\2\2\2\u0d8e\u0d8f\7\u031c\2\2\u0d8f\u0d90\7\u015e\2\2\u0d90\u0d94"+
		"\7\u031c\2\2\u0d91\u0d92\7\u0338\2\2\u0d92\u0d94\7\u031c\2\2\u0d93\u0d8c"+
		"\3\2\2\2\u0d93\u0d91\3\2\2\2\u0d94\u0d95\3\2\2\2\u0d95\u0d93\3\2\2\2\u0d95"+
		"\u0d96\3\2\2\2\u0d96\u0d98\3\2\2\2\u0d97\u0d8a\3\2\2\2\u0d97\u0d93\3\2"+
		"\2\2\u0d98\u0daa\3\2\2\2\u0d99\u0d9a\7\u0270\2\2\u0d9a\u0da5\7\u0324\2"+
		"\2\u0d9b\u0d9d\7\u0338\2\2\u0d9c\u0d9b\3\2\2\2\u0d9c\u0d9d\3\2\2\2\u0d9d"+
		"\u0d9e\3\2\2\2\u0d9e\u0d9f\7\u031c\2\2\u0d9f\u0da0\7\u015e\2\2\u0da0\u0da6"+
		"\7\u031c\2\2\u0da1\u0da3\7\u0338\2\2\u0da2\u0da1\3\2\2\2\u0da2\u0da3\3"+
		"\2\2\2\u0da3\u0da4\3\2\2\2\u0da4\u0da6\7\u031c\2\2\u0da5\u0d9c\3\2\2\2"+
		"\u0da5\u0da2\3\2\2\2\u0da6\u0da7\3\2\2\2\u0da7\u0da5\3\2\2\2\u0da7\u0da8"+
		"\3\2\2\2\u0da8\u0daa\3\2\2\2\u0da9\u0d85\3\2\2\2\u0da9\u0d99\3\2\2\2\u0daa"+
		"\u0db1\3\2\2\2\u0dab\u0dad\7\u0338\2\2\u0dac\u0dab\3\2\2\2\u0dac\u0dad"+
		"\3\2\2\2\u0dad\u0dae\3\2\2\2\u0dae\u0daf\7\u0248\2\2\u0daf\u0db0\7\u0324"+
		"\2\2\u0db0\u0db2\7\u031c\2\2\u0db1\u0dac\3\2\2\2\u0db1\u0db2\3\2\2\2\u0db2"+
		"\u0db9\3\2\2\2\u0db3\u0db5\7\u0338\2\2\u0db4\u0db3\3\2\2\2\u0db4\u0db5"+
		"\3\2\2\2\u0db5\u0db6\3\2\2\2\u0db6\u0db7\7\u0249\2\2\u0db7\u0db8\7\u0324"+
		"\2\2\u0db8\u0dba\7\u031c\2\2\u0db9\u0db4\3\2\2\2\u0db9\u0dba\3\2\2\2\u0dba"+
		"\u0dbb\3\2\2\2\u0dbb\u0dbc\7\u0337\2\2\u0dbc\u0131\3\2\2\2\u0dbd\u0dbe"+
		"\7\n\2\2\u0dbe\u0dbf\7\u020c\2\2\u0dbf\u0dc0\7\u01b2\2\2\u0dc0\u0dcb\5"+
		"\u03ba\u01de\2\u0dc1\u0dc6\7\u02a2\2\2\u0dc2\u0dc3\7\u017d\2\2\u0dc3\u0dc4"+
		"\7\u0183\2\2\u0dc4\u0dc5\7\u0324\2\2\u0dc5\u0dc7\t\t\2\2\u0dc6\u0dc2\3"+
		"\2\2\2\u0dc6\u0dc7\3\2\2\2\u0dc7\u0dcc\3\2\2\2\u0dc8\u0dcc\7\u02ab\2\2"+
		"\u0dc9\u0dca\7\20\2\2\u0dca\u0dcc\7Z\2\2\u0dcb\u0dc1\3\2\2\2\u0dcb\u0dc8"+
		"\3\2\2\2\u0dcb\u0dc9\3\2\2\2\u0dcc\u0133\3\2\2\2\u0dcd\u0dce\7I\2\2\u0dce"+
		"\u0dcf\7\u020c\2\2\u0dcf\u0dd0\7\u01b2\2\2\u0dd0\u0dd4\5\u03ba\u01de\2"+
		"\u0dd1\u0dd2\7\u00e6\2\2\u0dd2\u0dd3\7\u01fe\2\2\u0dd3\u0dd5\5\u03ba\u01de"+
		"\2\u0dd4\u0dd1\3\2\2\2\u0dd4\u0dd5\3\2\2\2\u0dd5\u0dd9\3\2\2\2\u0dd6\u0dd7"+
		"\7\u009c\2\2\u0dd7\u0dd8\7\u0284\2\2\u0dd8\u0dda\7\u0320\2\2\u0dd9\u0dd6"+
		"\3\2\2\2\u0dd9\u0dda\3\2\2\2\u0dda\u0ddf\3\2\2\2\u0ddb\u0ddc\7\u017d\2"+
		"\2\u0ddc\u0ddd\7\u0183\2\2\u0ddd\u0dde\7\u0324\2\2\u0dde\u0de0\t\t\2\2"+
		"\u0ddf\u0ddb\3\2\2\2\u0ddf\u0de0\3\2\2\2\u0de0\u0de3\3\2\2\2\u0de1\u0de2"+
		"\7\20\2\2\u0de2\u0de4\7Z\2\2\u0de3\u0de1\3\2\2\2\u0de3\u0de4\3\2\2\2\u0de4"+
		"\u0de7\3\2\2\2\u0de5\u0de6\7\24\2\2\u0de6\u0de8\5\u03ba\u01de\2\u0de7"+
		"\u0de5\3\2\2\2\u0de7\u0de8\3\2\2\2\u0de8\u0135\3\2\2\2\u0de9\u0dea\7\n"+
		"\2\2\u0dea\u0deb\7\u020c\2\2\u0deb\u0dec\7\u02e2\2\2\u0dec\u0dfa\5\u03ba"+
		"\u01de\2\u0ded\u0dee\7\4\2\2\u0dee\u0def\7\u0320\2\2\u0def\u0df0\7\u00b1"+
		"\2\2\u0df0\u0dfb\t\"\2\2\u0df1\u0df8\7h\2\2\u0df2\u0df3\7\u0320\2\2\u0df3"+
		"\u0df4\7\u00b1\2\2\u0df4\u0df9\t\"\2\2\u0df5\u0df6\7\6\2\2\u0df6\u0df9"+
		"\t\"\2\2\u0df7\u0df9\7\6\2\2\u0df8\u0df2\3\2\2\2\u0df8\u0df5\3\2\2\2\u0df8"+
		"\u0df7\3\2\2\2\u0df9\u0dfb\3\2\2\2\u0dfa\u0ded\3\2\2\2\u0dfa\u0df1\3\2"+
		"\2\2\u0dfb\u0137\3\2\2\2\u0dfc\u0dfd\7I\2\2\u0dfd\u0dfe\7\u020c\2\2\u0dfe"+
		"\u0dff\7\u02e2\2\2\u0dff\u0e0b\5\u03ba\u01de\2\u0e00\u0e09\7\u008c\2\2"+
		"\u0e01\u0e02\5\u03ba\u01de\2\u0e02\u0e03\7\u0331\2\2\u0e03\u0e05\3\2\2"+
		"\2\u0e04\u0e01\3\2\2\2\u0e04\u0e05\3\2\2\2\u0e05\u0e06\3\2\2\2\u0e06\u0e0a"+
		"\5\u03ba\u01de\2\u0e07\u0e08\7\u0155\2\2\u0e08\u0e0a\7\u02e2\2\2\u0e09"+
		"\u0e04\3\2\2\2\u0e09\u0e07\3\2\2\2\u0e0a\u0e0c\3\2\2\2\u0e0b\u0e00\3\2"+
		"\2\2\u0e0b\u0e0c\3\2\2\2\u0e0c\u0e0f\3\2\2\2\u0e0d\u0e0e\7\24\2\2\u0e0e"+
		"\u0e10\5\u03ba\u01de\2\u0e0f\u0e0d\3\2\2\2\u0e0f\u0e10\3\2\2\2\u0e10\u0139"+
		"\3\2\2\2\u0e11\u0e12\7\n\2\2\u0e12\u0e13\7\u023d\2\2\u0e13\u0e57\5\u03ba"+
		"\u01de\2\u0e14\u0e16\t\27\2\2\u0e15\u0e14\3\2\2\2\u0e15\u0e16\3\2\2\2"+
		"\u0e16\u0e58\3\2\2\2\u0e17\u0e25\7\u017d\2\2\u0e18\u0e19\7\u00f5\2\2\u0e19"+
		"\u0e1d\7\u0324\2\2\u0e1a\u0e1e\7\u0320\2\2\u0e1b\u0e1c\7\u0321\2\2\u0e1c"+
		"\u0e1e\7\u0095\2\2\u0e1d\u0e1a\3\2\2\2\u0e1d\u0e1b\3\2\2\2\u0e1e\u0e22"+
		"\3\2\2\2\u0e1f\u0e21\t#\2\2\u0e20\u0e1f\3\2\2\2\u0e21\u0e24\3\2\2\2\u0e22"+
		"\u0e20\3\2\2\2\u0e22\u0e23\3\2\2\2\u0e23\u0e26\3\2\2\2\u0e24\u0e22\3\2"+
		"\2\2\u0e25\u0e18\3\2\2\2\u0e25\u0e26\3\2\2\2\u0e26\u0e30\3\2\2\2\u0e27"+
		"\u0e28\7\u00e5\2\2\u0e28\u0e29\7\u0324\2\2\u0e29\u0e2d\7\u0320\2\2\u0e2a"+
		"\u0e2c\t#\2\2\u0e2b\u0e2a\3\2\2\2\u0e2c\u0e2f\3\2\2\2\u0e2d\u0e2b\3\2"+
		"\2\2\u0e2d\u0e2e\3\2\2\2\u0e2e\u0e31\3\2\2\2\u0e2f\u0e2d\3\2\2\2\u0e30"+
		"\u0e27\3\2\2\2\u0e30\u0e31\3\2\2\2\u0e31\u0e35\3\2\2\2\u0e32\u0e33\7["+
		"\2\2\u0e33\u0e34\7\u0324\2\2\u0e34\u0e36\5\u03ba\u01de\2\u0e35\u0e32\3"+
		"\2\2\2\u0e35\u0e36\3\2\2\2\u0e36\u0e3a\3\2\2\2\u0e37\u0e38\7\u01d7\2\2"+
		"\u0e38\u0e39\7\u0324\2\2\u0e39\u0e3b\5\u03ba\u01de\2\u0e3a\u0e37\3\2\2"+
		"\2\u0e3a\u0e3b\3\2\2\2\u0e3b\u0e3f\3\2\2\2\u0e3c\u0e3d\7\u025f\2\2\u0e3d"+
		"\u0e3e\7\u0324\2\2\u0e3e\u0e40\5\u03ba\u01de\2\u0e3f\u0e3c\3\2\2\2\u0e3f"+
		"\u0e40\3\2\2\2\u0e40\u0e44\3\2\2\2\u0e41\u0e42\7\60\2\2\u0e42\u0e43\7"+
		"\u0324\2\2\u0e43\u0e45\t\t\2\2\u0e44\u0e41\3\2\2\2\u0e44\u0e45\3\2\2\2"+
		"\u0e45\u0e49\3\2\2\2\u0e46\u0e47\7\61\2\2\u0e47\u0e48\7\u0324\2\2\u0e48"+
		"\u0e4a\t\t\2\2\u0e49\u0e46\3\2\2\2\u0e49\u0e4a\3\2\2\2\u0e4a\u0e4e\3\2"+
		"\2\2\u0e4b\u0e4c\7\u01c8\2\2\u0e4c\u0e4d\7\u0324\2\2\u0e4d\u0e4f\5\u03ba"+
		"\u01de\2\u0e4e\u0e4b\3\2\2\2\u0e4e\u0e4f\3\2\2\2\u0e4f\u0e52\3\2\2\2\u0e50"+
		"\u0e51\7\u0265\2\2\u0e51\u0e53\7\u01c8\2\2\u0e52\u0e50\3\2\2\2\u0e52\u0e53"+
		"\3\2\2\2\u0e53\u0e58\3\2\2\2\u0e54\u0e55\t\25\2\2\u0e55\u0e56\7\u01c8"+
		"\2\2\u0e56\u0e58\5\u03ba\u01de\2\u0e57\u0e15\3\2\2\2\u0e57\u0e17\3\2\2"+
		"\2\u0e57\u0e54\3\2\2\2\u0e58\u013b\3\2\2\2\u0e59\u0e5a\7I\2\2\u0e5a\u0e5b"+
		"\7\u023d\2\2\u0e5b\u0eb6\5\u03ba\u01de\2\u0e5c\u0e6a\7\u017d\2\2\u0e5d"+
		"\u0e5e\7\u00f5\2\2\u0e5e\u0e62\7\u0324\2\2\u0e5f\u0e63\7\u0320\2\2\u0e60"+
		"\u0e61\7\u0321\2\2\u0e61\u0e63\7\u0095\2\2\u0e62\u0e5f\3\2\2\2\u0e62\u0e60"+
		"\3\2\2\2\u0e63\u0e67\3\2\2\2\u0e64\u0e66\t#\2\2\u0e65\u0e64\3\2\2\2\u0e66"+
		"\u0e69\3\2\2\2\u0e67\u0e65\3\2\2\2\u0e67\u0e68\3\2\2\2\u0e68\u0e6b\3\2"+
		"\2\2\u0e69\u0e67\3\2\2\2\u0e6a\u0e5d\3\2\2\2\u0e6a\u0e6b\3\2\2\2\u0e6b"+
		"\u0e72\3\2\2\2\u0e6c\u0e6e\7\u0338\2\2\u0e6d\u0e6c\3\2\2\2\u0e6d\u0e6e"+
		"\3\2\2\2\u0e6e\u0e6f\3\2\2\2\u0e6f\u0e70\7\u0141\2\2\u0e70\u0e71\7\u0324"+
		"\2\2\u0e71\u0e73\7\u0321\2\2\u0e72\u0e6d\3\2\2\2\u0e72\u0e73\3\2\2\2\u0e73"+
		"\u0e7a\3\2\2\2\u0e74\u0e76\7\u0338\2\2\u0e75\u0e74\3\2\2\2\u0e75\u0e76"+
		"\3\2\2\2\u0e76\u0e77\3\2\2\2\u0e77\u0e78\7[\2\2\u0e78\u0e79\7\u0324\2"+
		"\2\u0e79\u0e7b\5\u03ba\u01de\2\u0e7a\u0e75\3\2\2\2\u0e7a\u0e7b\3\2\2\2"+
		"\u0e7b\u0e82\3\2\2\2\u0e7c\u0e7e\7\u0338\2\2\u0e7d\u0e7c\3\2\2\2\u0e7d"+
		"\u0e7e\3\2\2\2\u0e7e\u0e7f\3\2\2\2\u0e7f\u0e80\7\u01d7\2\2\u0e80\u0e81"+
		"\7\u0324\2\2\u0e81\u0e83\5\u03ba\u01de\2\u0e82\u0e7d\3\2\2\2\u0e82\u0e83"+
		"\3\2\2\2\u0e83\u0e8a\3\2\2\2\u0e84\u0e86\7\u0338\2\2\u0e85\u0e84\3\2\2"+
		"\2\u0e85\u0e86\3\2\2\2\u0e86\u0e87\3\2\2\2\u0e87\u0e88\7\61\2\2\u0e88"+
		"\u0e89\7\u0324\2\2\u0e89\u0e8b\t\t\2\2\u0e8a\u0e85\3\2\2\2\u0e8a\u0e8b"+
		"\3\2\2\2\u0e8b\u0e92\3\2\2\2\u0e8c\u0e8e\7\u0338\2\2\u0e8d\u0e8c\3\2\2"+
		"\2\u0e8d\u0e8e\3\2\2\2\u0e8e\u0e8f\3\2\2\2\u0e8f\u0e90\7\60\2\2\u0e90"+
		"\u0e91\7\u0324\2\2\u0e91\u0e93\t\t\2\2\u0e92\u0e8d\3\2\2\2\u0e92\u0e93"+
		"\3\2\2\2\u0e93\u0e9a\3\2\2\2\u0e94\u0e96\7\u0338\2\2\u0e95\u0e94\3\2\2"+
		"\2\u0e95\u0e96\3\2\2\2\u0e96\u0e97\3\2\2\2\u0e97\u0e98\7\u01c8\2\2\u0e98"+
		"\u0e99\7\u0324\2\2\u0e99\u0e9b\5\u03ba\u01de\2\u0e9a\u0e95\3\2\2\2\u0e9a"+
		"\u0e9b\3\2\2\2\u0e9b\u0eb7\3\2\2\2\u0e9c\u0eb4\7\u008c\2\2\u0e9d\u0e9e"+
		"\7\u017c\2\2\u0e9e\u0ea5\7\u017d\2\2\u0e9f\u0ea1\7\u0338\2\2\u0ea0\u0e9f"+
		"\3\2\2\2\u0ea0\u0ea1\3\2\2\2\u0ea1\u0ea2\3\2\2\2\u0ea2\u0ea3\7[\2\2\u0ea3"+
		"\u0ea4\7\u0324\2\2\u0ea4\u0ea6\5\u03ba\u01de\2\u0ea5\u0ea0\3\2\2\2\u0ea5"+
		"\u0ea6\3\2\2\2\u0ea6\u0ead\3\2\2\2\u0ea7\u0ea9\7\u0338\2\2\u0ea8\u0ea7"+
		"\3\2\2\2\u0ea8\u0ea9\3\2\2\2\u0ea9\u0eaa\3\2\2\2\u0eaa\u0eab\7\u01d7\2"+
		"\2\u0eab\u0eac\7\u0324\2\2\u0eac\u0eae\7\u0320\2\2\u0ead\u0ea8\3\2\2\2"+
		"\u0ead\u0eae\3\2\2\2\u0eae\u0eb5\3\2\2\2\u0eaf\u0eb0\7+\2\2\u0eb0\u0eb5"+
		"\5\u03ba\u01de\2\u0eb1\u0eb2\7\22\2\2\u0eb2\u0eb3\7\u00ad\2\2\u0eb3\u0eb5"+
		"\5\u03ba\u01de\2\u0eb4\u0e9d\3\2\2\2\u0eb4\u0eaf\3\2\2\2\u0eb4\u0eb1\3"+
		"\2\2\2\u0eb5\u0eb7\3\2\2\2\u0eb6\u0e5c\3\2\2\2\u0eb6\u0e9c\3\2\2\2\u0eb7"+
		"\u013d\3\2\2\2\u0eb8\u0eb9\7\n\2\2\u0eb9\u0eba\7\u023d\2\2\u0eba\u0ecc"+
		"\5\u03ba\u01de\2\u0ebb\u0ebd\t\27\2\2\u0ebc\u0ebb\3\2\2\2\u0ebc\u0ebd"+
		"\3\2\2\2\u0ebd\u0ecd\3\2\2\2\u0ebe\u0eca\7\u017d\2\2\u0ebf\u0ec0\7\u00f5"+
		"\2\2\u0ec0\u0ec1\7\u0324\2\2\u0ec1\u0ec5\7\u0320\2\2\u0ec2\u0ec3\7\u00e5"+
		"\2\2\u0ec3\u0ec4\7\u0324\2\2\u0ec4\u0ec6\7\u0320\2\2\u0ec5\u0ec2\3\2\2"+
		"\2\u0ec5\u0ec6\3\2\2\2\u0ec6\u0ecb\3\2\2\2\u0ec7\u0ec8\7\u025f\2\2\u0ec8"+
		"\u0ec9\7\u0324\2\2\u0ec9\u0ecb\5\u03ba\u01de\2\u0eca\u0ebf\3\2\2\2\u0eca"+
		"\u0ec7\3\2\2\2\u0ecb\u0ecd\3\2\2\2\u0ecc\u0ebc\3\2\2\2\u0ecc\u0ebe\3\2"+
		"\2\2\u0ecd\u013f\3\2\2\2\u0ece\u0ecf\7I\2\2\u0ecf\u0ed0\7\u023d\2\2\u0ed0"+
		"\u0ed1\5\u03ba\u01de\2\u0ed1\u0ed2\7\u017d\2\2\u0ed2\u0ed3\7\u00f5\2\2"+
		"\u0ed3\u0ed4\7\u0324\2\2\u0ed4\u0ed8\7\u0320\2\2\u0ed5\u0ed6\7\u0141\2"+
		"\2\u0ed6\u0ed7\7\u0324\2\2\u0ed7\u0ed9\7\u0321\2\2\u0ed8\u0ed5\3\2\2\2"+
		"\u0ed8\u0ed9\3\2\2\2\u0ed9\u0141\3\2\2\2\u0eda\u0edb\7\n\2\2\u0edb\u0edc"+
		"\7\u023d\2\2\u0edc\u0ef4\5\u03ba\u01de\2\u0edd\u0edf\t\27\2\2\u0ede\u0edd"+
		"\3\2\2\2\u0ede\u0edf\3\2\2\2\u0edf\u0ef5\3\2\2\2\u0ee0\u0ef2\7\u017d\2"+
		"\2\u0ee1\u0ee2\7\u00f5\2\2\u0ee2\u0ee3\7\u0324\2\2\u0ee3\u0eed\7\u0320"+
		"\2\2\u0ee4\u0ee5\7\u00e5\2\2\u0ee5\u0ee6\7\u0324\2\2\u0ee6\u0eea\7\u0320"+
		"\2\2\u0ee7\u0ee9\t#\2\2\u0ee8\u0ee7\3\2\2\2\u0ee9\u0eec\3\2\2\2\u0eea"+
		"\u0ee8\3\2\2\2\u0eea\u0eeb\3\2\2\2\u0eeb\u0eee\3\2\2\2\u0eec\u0eea\3\2"+
		"\2\2\u0eed\u0ee4\3\2\2\2\u0eed\u0eee\3\2\2\2\u0eee\u0ef3\3\2\2\2\u0eef"+
		"\u0ef0\7\u025f\2\2\u0ef0\u0ef1\7\u0324\2\2\u0ef1\u0ef3\5\u03ba\u01de\2"+
		"\u0ef2\u0ee1\3\2\2\2\u0ef2\u0eef\3\2\2\2\u0ef3\u0ef5\3\2\2\2\u0ef4\u0ede"+
		"\3\2\2\2\u0ef4\u0ee0\3\2\2\2\u0ef5\u0143\3\2\2\2\u0ef6\u0ef7\7I\2\2\u0ef7"+
		"\u0ef8\7\u023d\2\2\u0ef8\u0f09\5\u03ba\u01de\2\u0ef9\u0efa\7\u017d\2\2"+
		"\u0efa\u0efb\7\u00f5\2\2\u0efb\u0efc\7\u0324\2\2\u0efc\u0efe\7\u0320\2"+
		"\2\u0efd\u0eff\7\u00cf\2\2\u0efe\u0efd\3\2\2\2\u0efe\u0eff\3\2\2\2\u0eff"+
		"\u0f05\3\2\2\2\u0f00\u0f01\7\60\2\2\u0f01\u0f03\7\u0324\2\2\u0f02\u0f04"+
		"\t\t\2\2\u0f03\u0f02\3\2\2\2\u0f03\u0f04\3\2\2\2\u0f04\u0f06\3\2\2\2\u0f05"+
		"\u0f00\3\2\2\2\u0f05\u0f06\3\2\2\2\u0f06\u0f0a\3\2\2\2\u0f07\u0f08\7\u008c"+
		"\2\2\u0f08\u0f0a\7\u017c\2\2\u0f09\u0ef9\3\2\2\2\u0f09\u0f07\3\2\2\2\u0f0a"+
		"\u0145\3\2\2\2\u0f0b\u0f0c\7\n\2\2\u0f0c\u0f0d\7\u00be\2\2\u0f0d\u0f23"+
		"\7\u00ad\2\2\u0f0e\u0f10\7\u0206\2\2\u0f0f\u0f0e\3\2\2\2\u0f0f\u0f10\3"+
		"\2\2\2\u0f10\u0f11\3\2\2\2\u0f11\u0f12\7\u0110\2\2\u0f12\u0f13\7\u017d"+
		"\2\2\u0f13\u0f14\7\u01ef\2\2\u0f14\u0f15\7&\2\2\u0f15\u0f16\7\u00f5\2"+
		"\2\u0f16\u0f17\7\u0324\2\2\u0f17\u0f24\7\u0320\2\2\u0f18\u0f19\t\25\2"+
		"\2\u0f19\u0f1a\7\u01ef\2\2\u0f1a\u0f21\7&\2\2\u0f1b\u0f1c\7\u0139\2\2"+
		"\u0f1c\u0f1d\7\u00be\2\2\u0f1d\u0f22\7\u00ad\2\2\u0f1e\u0f1f\7\u00f5\2"+
		"\2\u0f1f\u0f20\7\u0324\2\2\u0f20\u0f22\7\u0320\2\2\u0f21\u0f1b\3\2\2\2"+
		"\u0f21\u0f1e\3\2\2\2\u0f22\u0f24\3\2\2\2\u0f23\u0f0f\3\2\2\2\u0f23\u0f18"+
		"\3\2\2\2\u0f24\u0147\3\2\2\2\u0f25\u0f26\7I\2\2\u0f26\u0f27\7\u00be\2"+
		"\2\u0f27\u0f28\7\u00ad\2\2\u0f28\u0f29\7\u01ef\2\2\u0f29\u0f2a\7&\2\2"+
		"\u0f2a\u0f2b\7\u00f5\2\2\u0f2b\u0f2c\7\u0324\2\2\u0f2c\u0f2d\7\u0320\2"+
		"\2\u0f2d\u0149\3\2\2\2\u0f2e\u0f2f\7\n\2\2\u0f2f\u0f30\7\u00be\2\2\u0f30"+
		"\u0f4c\7\u00ad\2\2\u0f31\u0f33\7\u0206\2\2\u0f32\u0f31\3\2\2\2\u0f32\u0f33"+
		"\3\2\2\2\u0f33\u0f34\3\2\2\2\u0f34\u0f35\7\u0110\2\2\u0f35\u0f36\7\u017d"+
		"\2\2\u0f36\u0f37\7\u01ef\2\2\u0f37\u0f38\7&\2\2\u0f38\u0f39\7\u00f5\2"+
		"\2\u0f39\u0f3a\7\u0324\2\2\u0f3a\u0f4d\7\u0320\2\2\u0f3b\u0f3c\7\4\2\2"+
		"\u0f3c\u0f3d\7\u01ef\2\2\u0f3d\u0f44\7&\2\2\u0f3e\u0f3f\7\u0139\2\2\u0f3f"+
		"\u0f40\7\u00be\2\2\u0f40\u0f45\7\u00ad\2\2\u0f41\u0f42\7\u00f5\2\2\u0f42"+
		"\u0f43\7\u0324\2\2\u0f43\u0f45\7\u0320\2\2\u0f44\u0f3e\3\2\2\2\u0f44\u0f41"+
		"\3\2\2\2\u0f45\u0f4d\3\2\2\2\u0f46\u0f47\7h\2\2\u0f47\u0f48\7\u01ef\2"+
		"\2\u0f48\u0f49\7&\2\2\u0f49\u0f4a\7\u00f5\2\2\u0f4a\u0f4b\7\u0324\2\2"+
		"\u0f4b\u0f4d\7\u0320\2\2\u0f4c\u0f32\3\2\2\2\u0f4c\u0f3b\3\2\2\2\u0f4c"+
		"\u0f46\3\2\2\2\u0f4d\u014b\3\2\2\2\u0f4e\u0f4f\7I\2\2\u0f4f\u0f50\7\u00be"+
		"\2\2\u0f50\u0f56\7\u00ad\2\2\u0f51\u0f52\7\u01ef\2\2\u0f52\u0f53\7&\2"+
		"\2\u0f53\u0f54\7\u00f5\2\2\u0f54\u0f55\7\u0324\2\2\u0f55\u0f57\7\u0320"+
		"\2\2\u0f56\u0f51\3\2\2\2\u0f56\u0f57\3\2\2\2\u0f57\u014d\3\2\2\2\u0f58"+
		"\u0f59\7\n\2\2\u0f59\u0f5a\7\u0252\2\2\u0f5a\u0f5b\7\u02fc\2\2\u0f5b\u0f5c"+
		"\5\u03ba\u01de\2\u0f5c\u0f5d\7\u0304\2\2\u0f5d\u0f66\7\u0324\2\2\u0f5e"+
		"\u0f67\7\u00d6\2\2\u0f5f\u0f67\7\u01eb\2\2\u0f60\u0f67\7\u030b\2\2\u0f61"+
		"\u0f62\7\u0303\2\2\u0f62\u0f63\7\u017d\2\2\u0f63\u0f64\7\u012f\2\2\u0f64"+
		"\u0f65\7\u01b9\2\2\u0f65\u0f67\5\u03ba\u01de\2\u0f66\u0f5e\3\2\2\2\u0f66"+
		"\u0f5f\3\2\2\2\u0f66\u0f60\3\2\2\2\u0f66\u0f61\3\2\2\2\u0f67\u014f\3\2"+
		"\2\2\u0f68\u0f69\7\n\2\2\u0f69\u0f6a\7\u0281\2\2\u0f6a\u0f6b\7\u008e\2"+
		"\2\u0f6b\u0f6c\5\u03ba\u01de\2\u0f6c\u0f6d\7\u0336\2\2\u0f6d\u0f6e\7\u0337"+
		"\2\2\u0f6e\u0f6f\t$\2\2\u0f6f\u0f70\7\u0298\2\2\u0f70\u0f71\7\u0336\2"+
		"\2\u0f71\u0f72\7\u031c\2\2\u0f72\u0f73\7\u0337\2\2\u0f73\u0151\3\2\2\2"+
		"\u0f74\u0f75\7\n\2\2\u0f75\u0f76\7\u0281\2\2\u0f76\u0f77\7\u0130\2\2\u0f77"+
		"\u0f78\5\u03ba\u01de\2\u0f78\u0f79\7\u0264\2\2\u0f79\u0f7b\7\u0171\2\2"+
		"\u0f7a\u0f7c\5\u03ba\u01de\2\u0f7b\u0f7a\3\2\2\2\u0f7b\u0f7c\3\2\2\2\u0f7c"+
		"\u0153\3\2\2\2\u0f7d\u0f7e\7\n\2\2\u0f7e\u0f7f\7\u02a8\2\2\u0f7f\u0f80"+
		"\7\u0139\2\2\u0f80\u0f81\7\u01aa\2\2\u0f81\u0f82\5\u03ba\u01de\2\u0f82"+
		"\u0f86\7\u017d\2\2\u0f83\u0f84\7\u0172\2\2\u0f84\u0f85\7\u0324\2\2\u0f85"+
		"\u0f87\5\u03ba\u01de\2\u0f86\u0f83\3\2\2\2\u0f86\u0f87\3\2\2\2\u0f87\u0f8c"+
		"\3\2\2\2\u0f88\u0f89\7\u0338\2\2\u0f89\u0f8a\7\f\2\2\u0f8a\u0f8b\7\u0324"+
		"\2\2\u0f8b\u0f8d\t\t\2\2\u0f8c\u0f88\3\2\2\2\u0f8c\u0f8d\3\2\2\2\u0f8d"+
		"\u0155\3\2\2\2\u0f8e\u0f8f\7I\2\2\u0f8f\u0f90\7\u02a8\2\2\u0f90\u0f91"+
		"\7\u0139\2\2\u0f91\u0f92\7\u01aa\2\2\u0f92\u0f95\5\u03ba\u01de\2\u0f93"+
		"\u0f94\7\24\2\2\u0f94\u0f96\5\u03ba\u01de\2\u0f95\u0f93\3\2\2\2\u0f95"+
		"\u0f96\3\2\2\2\u0f96\u0f97\3\2\2\2\u0f97\u0f98\7\u015e\2\2\u0f98\u0f99"+
		"\7\u0139\2\2\u0f99\u0f9a\7\u0320\2\2\u0f9a\u0f9e\7\u017d\2\2\u0f9b\u0f9c"+
		"\7\u0172\2\2\u0f9c\u0f9d\7\u0324\2\2\u0f9d\u0f9f\5\u03ba\u01de\2\u0f9e"+
		"\u0f9b\3\2\2\2\u0f9e\u0f9f\3\2\2\2\u0f9f\u0fa4\3\2\2\2\u0fa0\u0fa1\7\u0338"+
		"\2\2\u0fa1\u0fa2\7\f\2\2\u0fa2\u0fa3\7\u0324\2\2\u0fa3\u0fa5\t\t\2\2\u0fa4"+
		"\u0fa0\3\2\2\2\u0fa4\u0fa5\3\2\2\2\u0fa5\u0157\3\2\2\2\u0fa6\u0fa7\7I"+
		"\2\2\u0fa7\u0fa8\7\u02b3\2\2\u0fa8\u0fa9\7\u0286\2\2\u0fa9\u1010\5\u03ba"+
		"\u01de\2\u0faa\u0fab\7\u017d\2\2\u0fab\u0fb2\7\u0336\2\2\u0fac\u0fae\7"+
		"\u0338\2\2\u0fad\u0fac\3\2\2\2\u0fad\u0fae\3\2\2\2\u0fae\u0faf\3\2\2\2"+
		"\u0faf\u0fb0\7\u0255\2\2\u0fb0\u0fb1\7\u0324\2\2\u0fb1\u0fb3\7\u031c\2"+
		"\2\u0fb2\u0fad\3\2\2\2\u0fb2\u0fb3\3\2\2\2\u0fb3\u0fba\3\2\2\2\u0fb4\u0fb6"+
		"\7\u0338\2\2\u0fb5\u0fb4\3\2\2\2\u0fb5\u0fb6\3\2\2\2\u0fb6\u0fb7\3\2\2"+
		"\2\u0fb7\u0fb8\7\u0244\2\2\u0fb8\u0fb9\7\u0324\2\2\u0fb9\u0fbb\7\u031c"+
		"\2\2\u0fba\u0fb5\3\2\2\2\u0fba\u0fbb\3\2\2\2\u0fbb\u0fc2\3\2\2\2\u0fbc"+
		"\u0fbe\7\u0338\2\2\u0fbd\u0fbc\3\2\2\2\u0fbd\u0fbe\3\2\2\2\u0fbe\u0fbf"+
		"\3\2\2\2\u0fbf\u0fc0\7\u01b0\2\2\u0fc0\u0fc1\7\u0324\2\2\u0fc1\u0fc3\7"+
		"\u031c\2\2\u0fc2\u0fbd\3\2\2\2\u0fc2\u0fc3\3\2\2\2\u0fc3\u0fed\3\2\2\2"+
		"\u0fc4\u0fc6\7\u0338\2\2\u0fc5\u0fc4\3\2\2\2\u0fc5\u0fc6\3\2\2\2\u0fc6"+
		"\u0fc7\3\2\2\2\u0fc7\u0fc8\7\u018b\2\2\u0fc8\u0fc9\7\u012e\2\2\u0fc9\u0feb"+
		"\7\u0324\2\2\u0fca\u0fec\7\u019c\2\2\u0fcb\u0fd5\7\u0336\2\2\u0fcc\u0fce"+
		"\7\u0338\2\2\u0fcd\u0fcc\3\2\2\2\u0fcd\u0fce\3\2\2\2\u0fce\u0fd3\3\2\2"+
		"\2\u0fcf\u0fd4\7\u031c\2\2\u0fd0\u0fd1\7\u031c\2\2\u0fd1\u0fd2\7\u015e"+
		"\2\2\u0fd2\u0fd4\7\u031c\2\2\u0fd3\u0fcf\3\2\2\2\u0fd3\u0fd0\3\2\2\2\u0fd4"+
		"\u0fd6\3\2\2\2\u0fd5\u0fcd\3\2\2\2\u0fd6\u0fd7\3\2\2\2\u0fd7\u0fd5\3\2"+
		"\2\2\u0fd7\u0fd8\3\2\2\2\u0fd8\u0fd9\3\2\2\2\u0fd9\u0fec\7\u0337\2\2\u0fda"+
		"\u0fdb\7\u0270\2\2\u0fdb\u0fdc\7\u0324\2\2\u0fdc\u0fe6\7\u0336\2\2\u0fdd"+
		"\u0fdf\7\u0338\2\2\u0fde\u0fdd\3\2\2\2\u0fde\u0fdf\3\2\2\2\u0fdf\u0fe4"+
		"\3\2\2\2\u0fe0\u0fe5\7\u031c\2\2\u0fe1\u0fe2\7\u031c\2\2\u0fe2\u0fe3\7"+
		"\u015e\2\2\u0fe3\u0fe5\7\u031c\2\2\u0fe4\u0fe0\3\2\2\2\u0fe4\u0fe1\3\2"+
		"\2\2\u0fe5\u0fe7\3\2\2\2\u0fe6\u0fde\3\2\2\2\u0fe7\u0fe8\3\2\2\2\u0fe8"+
		"\u0fe6\3\2\2\2\u0fe8\u0fe9\3\2\2\2\u0fe9\u0fea\3\2\2\2\u0fea\u0fec\7\u0337"+
		"\2\2\u0feb\u0fca\3\2\2\2\u0feb\u0fcb\3\2\2\2\u0feb\u0fda\3\2\2\2\u0fec"+
		"\u0fee\3\2\2\2\u0fed\u0fc5\3\2\2\2\u0fed\u0fee\3\2\2\2\u0fee\u0ff5\3\2"+
		"\2\2\u0fef\u0ff1\7\u0338\2\2\u0ff0\u0fef\3\2\2\2\u0ff0\u0ff1\3\2\2\2\u0ff1"+
		"\u0ff2\3\2\2\2\u0ff2\u0ff3\7\u0257\2\2\u0ff3\u0ff4\7\u0324\2\2\u0ff4\u0ff6"+
		"\7\u031c\2\2\u0ff5\u0ff0\3\2\2\2\u0ff5\u0ff6\3\2\2\2\u0ff6\u0ffd\3\2\2"+
		"\2\u0ff7\u0ff9\7\u0338\2\2\u0ff8\u0ff7\3\2\2\2\u0ff8\u0ff9\3\2\2\2\u0ff9"+
		"\u0ffa\3\2\2\2\u0ffa\u0ffb\7\u0248\2\2\u0ffb\u0ffc\7\u0324\2\2\u0ffc\u0ffe"+
		"\7\u031c\2\2\u0ffd\u0ff8\3\2\2\2\u0ffd\u0ffe\3\2\2\2\u0ffe\u1005\3\2\2"+
		"\2\u0fff\u1001\7\u0338\2\2\u1000\u0fff\3\2\2\2\u1000\u1001\3\2\2\2\u1001"+
		"\u1002\3\2\2\2\u1002\u1003\7\u0256\2\2\u1003\u1004\7\u0324\2\2\u1004\u1006"+
		"\7\u031c\2\2\u1005\u1000\3\2\2\2\u1005\u1006\3\2\2\2\u1006\u100d\3\2\2"+
		"\2\u1007\u1009\7\u0338\2\2\u1008\u1007\3\2\2\2\u1008\u1009\3\2\2\2\u1009"+
		"\u100a\3\2\2\2\u100a\u100b\7\u0247\2\2\u100b\u100c\7\u0324\2\2\u100c\u100e"+
		"\7\u031c\2\2\u100d\u1008\3\2\2\2\u100d\u100e\3\2\2\2\u100e\u100f\3\2\2"+
		"\2\u100f\u1011\7\u0337\2\2\u1010\u0faa\3\2\2\2\u1010\u1011\3\2\2\2\u1011"+
		"\u0159\3\2\2\2\u1012\u1013\7\n\2\2\u1013\u1014\7\u02b3\2\2\u1014\u102a"+
		"\7\u0091\2\2\u1015\u102b\t%\2\2\u1016\u1017\7\u017d\2\2\u1017\u1018\7"+
		"\u0336\2\2\u1018\u1019\7\62\2\2\u1019\u101f\7\u0324\2\2\u101a\u101b\5"+
		"\u03ba\u01de\2\u101b\u101c\7\u0331\2\2\u101c\u101d\5\u03ba\u01de\2\u101d"+
		"\u1020\3\2\2\2\u101e\u1020\7\u00e0\2\2\u101f\u101a\3\2\2\2\u101f\u101e"+
		"\3\2\2\2\u1020\u1021\3\2\2\2\u1021\u102b\7\u0337\2\2\u1022\u1023\7\u0115"+
		"\2\2\u1023\u102b\7\u014b\2\2\u1024\u1025\7\u017d\2\2\u1025\u1026\7\u0336"+
		"\2\2\u1026\u1027\7\u00c5\2\2\u1027\u1028\7\u0324\2\2\u1028\u1029\7\u031c"+
		"\2\2\u1029\u102b\7\u0337\2\2\u102a\u1015\3\2\2\2\u102a\u1016\3\2\2\2\u102a"+
		"\u1022\3\2\2\2\u102a\u1024\3\2\2\2\u102b\u015b\3\2\2\2\u102c\u102d\7\n"+
		"\2\2\u102d\u102e\7\u0122\2\2\u102e\u1036\5\u03ba\u01de\2\u102f\u1030\t"+
		"\25\2\2\u1030\u1031\7\u00c8\2\2\u1031\u1037\5\u03ba\u01de\2\u1032\u1033"+
		"\7\u017d\2\2\u1033\u1034\7\u025f\2\2\u1034\u1035\7\u0324\2\2\u1035\u1037"+
		"\5\u03ba\u01de\2\u1036\u102f\3\2\2\2\u1036\u1032\3\2\2\2\u1037\u015d\3"+
		"\2\2\2\u1038\u1039\7I\2\2\u1039\u103a\7\u0122\2\2\u103a\u103d\5\u03ba"+
		"\u01de\2\u103b\u103c\7\24\2\2\u103c\u103e\5\u03ba\u01de\2\u103d\u103b"+
		"\3\2\2\2\u103d\u103e\3\2\2\2\u103e\u015f\3\2\2\2\u103f\u1040\7I\2\2\u1040"+
		"\u1041\7\u02b9\2\2\u1041\u1044\5\u03ba\u01de\2\u1042\u1043\7\24\2\2\u1043"+
		"\u1045\5\u03ba\u01de\2\u1044\u1042\3\2\2\2\u1044\u1045\3\2\2\2\u1045\u1046"+
		"\3\2\2\2\u1046\u104d\7\u017d\2\2\u1047\u1049\7\u0338\2\2\u1048\u1047\3"+
		"\2\2\2\u1048\u1049\3\2\2\2\u1049\u104a\3\2\2\2\u104a\u104b\7\u013b\2\2"+
		"\u104b\u104c\7\u0324\2\2\u104c\u104e\7\u0320\2\2\u104d\u1048\3\2\2\2\u104d"+
		"\u104e\3\2\2\2\u104e\u1055\3\2\2\2\u104f\u1051\7\u0338\2\2\u1050\u104f"+
		"\3\2\2\2\u1050\u1051\3\2\2\2\u1051\u1052\3\2\2\2\u1052\u1053\7\u01ad\2"+
		"\2\u1053\u1054\7\u0324\2\2\u1054\u1056\7\u0320\2\2\u1055\u1050\3\2\2\2"+
		"\u1055\u1056\3\2\2\2\u1056\u105d\3\2\2\2\u1057\u1059\7\u0338\2\2\u1058"+
		"\u1057\3\2\2\2\u1058\u1059\3\2\2\2\u1059\u105a\3\2\2\2\u105a\u105b\7\u00b4"+
		"\2\2\u105b\u105c\7\u0324\2\2\u105c\u105e\7\u031c\2\2\u105d\u1058\3\2\2"+
		"\2\u105d\u105e\3\2\2\2\u105e\u1060\3\2\2\2\u105f\u1061\7\u0338\2\2\u1060"+
		"\u105f\3\2\2\2\u1060\u1061\3\2\2\2\u1061\u1062\3\2\2\2\u1062\u1063\7\u0187"+
		"\2\2\u1063\u1064\7\u0324\2\2\u1064\u1069\t&\2\2\u1065\u1066\7\u0338\2"+
		"\2\u1066\u1067\7\u0259\2\2\u1067\u1068\7\u0324\2\2\u1068\u106a\t&\2\2"+
		"\u1069\u1065\3\2\2\2\u1069\u106a\3\2\2\2\u106a\u0161\3\2\2\2\u106b\u106c"+
		"\7I\2\2\u106c\u1070\7\u012b\2\2\u106d\u106e\5\u03ba\u01de\2\u106e\u106f"+
		"\7\u0331\2\2\u106f\u1071\3\2\2\2\u1070\u106d\3\2\2\2\u1070\u1071\3\2\2"+
		"\2\u1071\u1072\3\2\2\2\u1072\u1073\5\u03ba\u01de\2\u1073\u1074\7\20\2"+
		"\2\u1074\u1075\5\u02e2\u0172\2\u1075\u0163\3\2\2\2\u1076\u1077\7\n\2\2"+
		"\u1077\u1078\7\u012f\2\2\u1078\u1079\5\u03ba\u01de\2\u1079\u1083\7\u0163"+
		"\2\2\u107a\u1080\7\u0273\2\2\u107b\u1080\7\u02fc\2\2\u107c\u107d\7\u030f"+
		"\2\2\u107d\u107e\7\u012f\2\2\u107e\u1080\7\u01b9\2\2\u107f\u107a\3\2\2"+
		"\2\u107f\u107b\3\2\2\2\u107f\u107c\3\2\2\2\u1080\u1081\3\2\2\2\u1081\u1082"+
		"\7\u033a\2\2\u1082\u1084\7\u033a\2\2\u1083\u107f\3\2\2\2\u1083\u1084\3"+
		"\2\2\2\u1084\u1085\3\2\2\2\u1085\u1088\5\u03ba\u01de\2\u1086\u1087\7\u0331"+
		"\2\2\u1087\u1089\5\u03ba\u01de\2\u1088\u1086\3\2\2\2\u1088\u1089\3\2\2"+
		"\2\u1089\u0165\3\2\2\2\u108a\u108b\7I\2\2\u108b\u1093\7\u012f\2\2\u108c"+
		"\u1094\5\u03ba\u01de\2\u108d\u108e\7\24\2\2\u108e\u1094\5\u03ba\u01de"+
		"\2\u108f\u1090\5\u03ba\u01de\2\u1090\u1091\7\24\2\2\u1091\u1092\5\u03ba"+
		"\u01de\2\u1092\u1094\3\2\2\2\u1093\u108c\3\2\2\2\u1093\u108d\3\2\2\2\u1093"+
		"\u108f\3\2\2\2\u1094\u10b1\3\2\2\2\u1095\u10b0\5\u01ee\u00f8\2\u1096\u10b0"+
		"\5\u01f2\u00fa\2\u1097\u1098\t\'\2\2\u1098\u1099\t(\2\2\u1099\u109d\7"+
		"\u00e6\2\2\u109a\u109b\7\u012f\2\2\u109b\u109c\7\u033a\2\2\u109c\u109e"+
		"\7\u033a\2\2\u109d\u109a\3\2\2\2\u109d\u109e\3\2\2\2\u109e\u109f\3\2\2"+
		"\2\u109f\u10a0\5\u03ba\u01de\2\u10a0\u10a1\7\u015e\2\2\u10a1\u10a2\5\u03ba"+
		"\u01de\2\u10a2\u10b0\3\2\2\2\u10a3\u10a4\7\u011e\2\2\u10a4\u10a5\t(\2"+
		"\2\u10a5\u10a9\7\u00e6\2\2\u10a6\u10a7\7\u012f\2\2\u10a7\u10a8\7\u033a"+
		"\2\2\u10a8\u10aa\7\u033a\2\2\u10a9\u10a6\3\2\2\2\u10a9\u10aa\3\2\2\2\u10aa"+
		"\u10ab\3\2\2\2\u10ab\u10ac\5\u03ba\u01de\2\u10ac\u10ad\7\u008c\2\2\u10ad"+
		"\u10ae\5\u03ba\u01de\2\u10ae\u10b0\3\2\2\2\u10af\u1095\3\2\2\2\u10af\u1096"+
		"\3\2\2\2\u10af\u1097\3\2\2\2\u10af\u10a3\3\2\2\2\u10b0\u10b3\3\2\2\2\u10b1"+
		"\u10af\3\2\2\2\u10b1\u10b2\3\2\2\2\u10b2\u0167\3\2\2\2\u10b3\u10b1\3\2"+
		"\2\2\u10b4\u10b5\7I\2\2\u10b5\u10b6\7\u012f\2\2\u10b6\u10b9\5\u03ba\u01de"+
		"\2\u10b7\u10b8\7\24\2\2\u10b8\u10ba\5\u03ba\u01de\2\u10b9\u10b7\3\2\2"+
		"\2\u10b9\u10ba\3\2\2\2\u10ba\u0169\3\2\2\2\u10bb\u10bc\7\n\2\2\u10bc\u10bd"+
		"\7\u012f\2\2\u10bd\u10be\5\u03ba\u01de\2\u10be\u10c2\7\u0163\2\2\u10bf"+
		"\u10c0\7\u0273\2\2\u10c0\u10c1\7\u033a\2\2\u10c1\u10c3\7\u033a\2\2\u10c2"+
		"\u10bf\3\2\2\2\u10c2\u10c3\3\2\2\2\u10c3\u10c4\3\2\2\2\u10c4\u10c7\5\u03ba"+
		"\u01de\2\u10c5\u10c6\7\u0331\2\2\u10c6\u10c8\7\u031d\2\2\u10c7\u10c5\3"+
		"\2\2\2\u10c7\u10c8\3\2\2\2\u10c8\u016b\3\2\2\2\u10c9\u10ca\7I\2\2\u10ca"+
		"\u10cb\7\u02c3\2\2\u10cb\u10cc\7\u0291\2\2\u10cc\u10cd\7\u0235\2\2\u10cd"+
		"\u10d5\5\u03ba\u01de\2\u10ce\u10d2\7\u008c\2\2\u10cf\u10d0\5\u03ba\u01de"+
		"\2\u10d0\u10d1\7\u0331\2\2\u10d1\u10d3\3\2\2\2\u10d2\u10cf\3\2\2\2\u10d2"+
		"\u10d3\3\2\2\2\u10d3\u10d4\3\2\2\2\u10d4\u10d6\5\u03ba\u01de\2\u10d5\u10ce"+
		"\3\2\2\2\u10d5\u10d6\3\2\2\2\u10d6\u10d9\3\2\2\2\u10d7\u10d8\7\24\2\2"+
		"\u10d8\u10da\5\u03ba\u01de\2\u10d9\u10d7\3\2\2\2\u10d9\u10da\3\2\2\2\u10da"+
		"\u016d\3\2\2\2\u10db\u10dc\7I\2\2\u10dc\u10dd\7\u0131\2\2\u10dd\u10e1"+
		"\7\u00fe\2\2\u10de\u10df\5\u03ba\u01de\2\u10df\u10e0\7\u0331\2\2\u10e0"+
		"\u10e2\3\2\2\2\u10e1\u10de\3\2\2\2\u10e1\u10e2\3\2\2\2\u10e2\u10e3\3\2"+
		"\2\2\u10e3\u110c\5\u03ba\u01de\2\u10e4\u10e6\7\u0338\2\2\u10e5\u10e4\3"+
		"\2\2\2\u10e5\u10e6\3\2\2\2\u10e6\u10e7\3\2\2\2\u10e7\u10e9\7\4\2\2\u10e8"+
		"\u10ea\t)\2\2\u10e9\u10e8\3\2\2\2\u10e9\u10ea\3\2\2\2\u10ea\u10eb\3\2"+
		"\2\2\u10eb\u10ec\7\u0100\2\2\u10ec\u10ed\5\u03ba\u01de\2\u10ed\u10ee\7"+
		"\u0331\2\2\u10ee\u10ef\5\u03ba\u01de\2\u10ef\u10f4\7\u0336\2\2\u10f0\u10f2"+
		"\7\u0338\2\2\u10f1\u10f0\3\2\2\2\u10f1\u10f2\3\2\2\2\u10f2\u10f3\3\2\2"+
		"\2\u10f3\u10f5\5\u03ba\u01de\2\u10f4\u10f1\3\2\2\2\u10f5\u10f6\3\2\2\2"+
		"\u10f6\u10f4\3\2\2\2\u10f6\u10f7\3\2\2\2\u10f7\u10f8\3\2\2\2\u10f8\u10f9"+
		"\7\u0337\2\2\u10f9\u10fa\7\u00e6\2\2\u10fa\u10fb\5\u03ba\u01de\2\u10fb"+
		"\u10fc\7\u0331\2\2\u10fc\u1109\5\u03ba\u01de\2\u10fd\u10ff\7\u0338\2\2"+
		"\u10fe\u10fd\3\2\2\2\u10fe\u10ff\3\2\2\2\u10ff\u1100\3\2\2\2\u1100\u1101"+
		"\7\u018c\2\2\u1101\u1108\t*\2\2\u1102\u1104\7\u0338\2\2\u1103\u1102\3"+
		"\2\2\2\u1103\u1104\3\2\2\2\u1104\u1105\3\2\2\2\u1105\u1106\7\33\2\2\u1106"+
		"\u1108\t+\2\2\u1107\u10fe\3\2\2\2\u1107\u1103\3\2\2\2\u1108\u110b\3\2"+
		"\2\2\u1109\u1107\3\2\2\2\u1109\u110a\3\2\2\2\u110a\u110d\3\2\2\2\u110b"+
		"\u1109\3\2\2\2\u110c\u10e5\3\2\2\2\u110d\u110e\3\2\2\2\u110e\u110c\3\2"+
		"\2\2\u110e\u110f\3\2\2\2\u110f\u111a\3\2\2\2\u1110\u1111\7\u017d\2\2\u1111"+
		"\u1112\7\u0336\2\2\u1112\u1113\7\u014c\2\2\u1113\u1114\7\u0324\2\2\u1114"+
		"\u1117\t\t\2\2\u1115\u1116\7\u02bf\2\2\u1116\u1118\t\t\2\2\u1117\u1115"+
		"\3\2\2\2\u1117\u1118\3\2\2\2\u1118\u1119\3\2\2\2\u1119\u111b\7\u0337\2"+
		"\2\u111a\u1110\3\2\2\2\u111a\u111b\3\2\2\2\u111b\u111f\3\2\2\2\u111c\u111d"+
		"\7\u00dd\2\2\u111d\u111e\7\u0086\2\2\u111e\u1120\7\u0113\2\2\u111f\u111c"+
		"\3\2\2\2\u111f\u1120\3\2\2\2\u1120\u016f\3\2\2\2\u1121\u1122\7\n\2\2\u1122"+
		"\u1126\7\u0137\2\2\u1123\u1124\5\u03ba\u01de\2\u1124\u1125\7\u0331\2\2"+
		"\u1125\u1127\3\2\2\2\u1126\u1123\3\2\2\2\u1126\u1127\3\2\2\2\u1127\u1128"+
		"\3\2\2\2\u1128\u112e\5\u03ba\u01de\2\u1129\u112c\7\u0116\2\2\u112a\u112b"+
		"\7\u017d\2\2\u112b\u112d\7\u031c\2\2\u112c\u112a\3\2\2\2\u112c\u112d\3"+
		"\2\2\2\u112d\u112f\3\2\2\2\u112e\u1129\3\2\2\2\u112e\u112f\3\2\2\2\u112f"+
		"\u1133\3\2\2\2\u1130\u1131\7\u009e\2\2\u1131\u1132\7&\2\2\u1132\u1134"+
		"\7\u031c\2\2\u1133\u1130\3\2\2\2\u1133\u1134\3\2\2\2\u1134\u1139\3\2\2"+
		"\2\u1135\u1136\7\u00cd\2\2\u1136\u113a\7\u031c\2\2\u1137\u1138\7\u0265"+
		"\2\2\u1138\u113a\7\u00cd\2\2\u1139\u1135\3\2\2\2\u1139\u1137\3\2\2\2\u1139"+
		"\u113a\3\2\2\2\u113a\u113f\3\2\2\2\u113b\u113c\7\u00c1\2\2\u113c\u1140"+
		"\7\u031c\2\2\u113d\u113e\7\u0265\2\2\u113e\u1140\7\u00c1\2\2\u113f\u113b"+
		"\3\2\2\2\u113f\u113d\3\2\2\2\u113f\u1140\3\2\2\2\u1140\u1144\3\2\2\2\u1141"+
		"\u1145\7Q\2\2\u1142\u1143\7\u0265\2\2\u1143\u1145\7Q\2\2\u1144\u1141\3"+
		"\2\2\2\u1144\u1142\3\2\2\2\u1144\u1145\3\2\2\2\u1145\u114a\3\2\2\2\u1146"+
		"\u1147\7\'\2\2\u1147\u114b\7\u031c\2\2\u1148\u1149\7\u0265\2\2\u1149\u114b"+
		"\7\'\2\2\u114a\u1146\3\2\2\2\u114a\u1148\3\2\2\2\u114a\u114b\3\2\2\2\u114b"+
		"\u0171\3\2\2\2\u114c\u114d\7I\2\2\u114d\u1151\7\u0137\2\2\u114e\u114f"+
		"\5\u03ba\u01de\2\u114f\u1150\7\u0331\2\2\u1150\u1152\3\2\2\2\u1151\u114e"+
		"\3\2\2\2\u1151\u1152\3\2\2\2\u1152\u1153\3\2\2\2\u1153\u1156\5\u03ba\u01de"+
		"\2\u1154\u1155\7\20\2\2\u1155\u1157\5\u03b2\u01da\2\u1156\u1154\3\2\2"+
		"\2\u1156\u1157\3\2\2\2\u1157\u115b\3\2\2\2\u1158\u1159\7\u014e\2\2\u1159"+
		"\u115a\7\u017d\2\2\u115a\u115c\7\u031c\2\2\u115b\u1158\3\2\2\2\u115b\u115c"+
		"\3\2\2\2\u115c\u1163\3\2\2\2\u115d\u115e\7\u009e\2\2\u115e\u1160\7&\2"+
		"\2\u115f\u1161\7\u033f\2\2\u1160\u115f\3\2\2\2\u1160\u1161\3\2\2\2\u1161"+
		"\u1162\3\2\2\2\u1162\u1164\7\u031c\2\2\u1163\u115d\3\2\2\2\u1163\u1164"+
		"\3\2\2\2\u1164\u116b\3\2\2\2\u1165\u1167\7\u00cd\2\2\u1166\u1168\7\u031c"+
		"\2\2\u1167\u1166\3\2\2\2\u1167\u1168\3\2\2\2\u1168\u116c\3\2\2\2\u1169"+
		"\u116a\7\u0265\2\2\u116a\u116c\7\u00cd\2\2\u116b\u1165\3\2\2\2\u116b\u1169"+
		"\3\2\2\2\u116b\u116c\3\2\2\2\u116c\u1173\3\2\2\2\u116d\u116f\7\u00c1\2"+
		"\2\u116e\u1170\7\u031c\2\2\u116f\u116e\3\2\2\2\u116f\u1170\3\2\2\2\u1170"+
		"\u1174\3\2\2\2\u1171\u1172\7\u0265\2\2\u1172\u1174\7\u00c1\2\2\u1173\u116d"+
		"\3\2\2\2\u1173\u1171\3\2\2\2\u1173\u1174\3\2\2\2\u1174\u1178\3\2\2\2\u1175"+
		"\u1179\7Q\2\2\u1176\u1177\7\u0265\2\2\u1177\u1179\7Q\2\2\u1178\u1175\3"+
		"\2\2\2\u1178\u1176\3\2\2\2\u1178\u1179\3\2\2\2\u1179\u1180\3\2\2\2\u117a"+
		"\u117c\7\'\2\2\u117b\u117d\7\u031c\2\2\u117c\u117b\3\2\2\2\u117c\u117d"+
		"\3\2\2\2\u117d\u1181\3\2\2\2\u117e\u117f\7\u0265\2\2\u117f\u1181\7\'\2"+
		"\2\u1180\u117a\3\2\2\2\u1180\u117e\3\2\2\2\u1180\u1181\3\2\2\2\u1181\u0173"+
		"\3\2\2\2\u1182\u1183\7\n\2\2\u1183\u1184\7\u0138\2\2\u1184\u1185\7\u019a"+
		"\2\2\u1185\u1209\5\u03ba\u01de\2\u1186\u11b3\7\u015e\2\2\u1187\u1188\7"+
		"\u0082\2\2\u1188\u11ad\7\u0336\2\2\u1189\u118b\7\u0338\2\2\u118a\u1189"+
		"\3\2\2\2\u118a\u118b\3\2\2\2\u118b\u118c\3\2\2\2\u118c\u118d\7\u0200\2"+
		"\2\u118d\u118e\7\u0324\2\2\u118e\u11ac\7\u0320\2\2\u118f\u1191\7\u0338"+
		"\2\2\u1190\u118f\3\2\2\2\u1190\u1191\3\2\2\2\u1191\u1192\3\2\2\2\u1192"+
		"\u1193\7\u024e\2\2\u1193\u1197\7\u0324\2\2\u1194\u1195\7\u031c\2\2\u1195"+
		"\u1198\t,\2\2\u1196\u1198\7\u0301\2\2\u1197\u1194\3\2\2\2\u1197\u1196"+
		"\3\2\2\2\u1198\u11ac\3\2\2\2\u1199\u119b\7\u0338\2\2\u119a\u1199\3\2\2"+
		"\2\u119a\u119b\3\2\2\2\u119b\u119c\3\2\2\2\u119c\u119d\7\u024b\2\2\u119d"+
		"\u119e\7\u0324\2\2\u119e\u11ac\t-\2\2\u119f\u11a1\7\u0338\2\2\u11a0\u119f"+
		"\3\2\2\2\u11a0\u11a1\3\2\2\2\u11a1\u11a2\3\2\2\2\u11a2\u11a3\7\u0246\2"+
		"\2\u11a3\u11a4\7\u0324\2\2\u11a4\u11ac\7\u031c\2\2\u11a5\u11a7\7\u0338"+
		"\2\2\u11a6\u11a5\3\2\2\2\u11a6\u11a7\3\2\2\2\u11a7\u11a8\3\2\2\2\u11a8"+
		"\u11a9\7\u02b2\2\2\u11a9\u11aa\7\u0324\2\2\u11aa\u11ac\t\t\2\2\u11ab\u118a"+
		"\3\2\2\2\u11ab\u1190\3\2\2\2\u11ab\u119a\3\2\2\2\u11ab\u11a0\3\2\2\2\u11ab"+
		"\u11a6\3\2\2\2\u11ac\u11af\3\2\2\2\u11ad\u11ab\3\2\2\2\u11ad\u11ae\3\2"+
		"\2\2\u11ae\u11b0\3\2\2\2\u11af\u11ad\3\2\2\2\u11b0\u11b4\7\u0337\2\2\u11b1"+
		"\u11b4\7\u0196\2\2\u11b2\u11b4\7\u02c9\2\2\u11b3\u1187\3\2\2\2\u11b3\u11b1"+
		"\3\2\2\2\u11b3\u11b2\3\2\2\2\u11b4\u11b6\3\2\2\2\u11b5\u1186\3\2\2\2\u11b5"+
		"\u11b6\3\2\2\2\u11b6\u11d1\3\2\2\2\u11b7\u11b8\7\u017d\2\2\u11b8\u11cd"+
		"\7\u0336\2\2\u11b9\u11bb\7\u0338\2\2\u11ba\u11b9\3\2\2\2\u11ba\u11bb\3"+
		"\2\2\2\u11bb\u11bc\3\2\2\2\u11bc\u11bd\7\u0296\2\2\u11bd\u11be\7\u0324"+
		"\2\2\u11be\u11cc\7\u031c\2\2\u11bf\u11c1\7\u0338\2\2\u11c0\u11bf\3\2\2"+
		"\2\u11c0\u11c1\3\2\2\2\u11c1\u11c2\3\2\2\2\u11c2\u11c3\7\u00e7\2\2\u11c3"+
		"\u11c4\7\u0324\2\2\u11c4\u11cc\t.\2\2\u11c5\u11c7\7\u0338\2\2\u11c6\u11c5"+
		"\3\2\2\2\u11c6\u11c7\3\2\2\2\u11c7\u11c8\3\2\2\2\u11c8\u11c9\7\u014c\2"+
		"\2\u11c9\u11ca\7\u0324\2\2\u11ca\u11cc\t\t\2\2\u11cb\u11ba\3\2\2\2\u11cb"+
		"\u11c0\3\2\2\2\u11cb\u11c6\3\2\2\2\u11cc\u11cf\3\2\2\2\u11cd\u11cb\3\2"+
		"\2\2\u11cd\u11ce\3\2\2\2\u11ce\u11d0\3\2\2\2\u11cf\u11cd\3\2\2\2\u11d0"+
		"\u11d2\7\u0337\2\2\u11d1\u11b7\3\2\2\2\u11d1\u11d2\3\2\2\2\u11d2\u1201"+
		"\3\2\2\2\u11d3\u11ff\7\u017a\2\2\u11d4\u11d6\7\u0338\2\2\u11d5\u11d4\3"+
		"\2\2\2\u11d5\u11d6\3\2\2\2\u11d6\u11d8\3\2\2\2\u11d7\u11d9\7\u00dd\2\2"+
		"\u11d8\u11d7\3\2\2\2\u11d8\u11d9\3\2\2\2\u11d9\u11da\3\2\2\2\u11da\u11e6"+
		"\5\u03ba\u01de\2\u11db\u11e7\7\u0324\2\2\u11dc\u11dd\7\u0326\2\2\u11dd"+
		"\u11e7\7\u0325\2\2\u11de\u11df\7\u0327\2\2\u11df\u11e7\7\u0324\2\2\u11e0"+
		"\u11e7\7\u0325\2\2\u11e1\u11e2\7\u0325\2\2\u11e2\u11e7\7\u0324\2\2\u11e3"+
		"\u11e7\7\u0326\2\2\u11e4\u11e5\7\u0326\2\2\u11e5\u11e7\7\u0324\2\2\u11e6"+
		"\u11db\3\2\2\2\u11e6\u11dc\3\2\2\2\u11e6\u11de\3\2\2\2\u11e6\u11e0\3\2"+
		"\2\2\u11e6\u11e1\3\2\2\2\u11e6\u11e3\3\2\2\2\u11e6\u11e4\3\2\2\2\u11e7"+
		"\u11e8\3\2\2\2\u11e8\u11e9\t\30\2\2\u11e9\u1200\3\2\2\2\u11ea\u11ec\7"+
		"\u0338\2\2\u11eb\u11ea\3\2\2\2\u11eb\u11ec\3\2\2\2\u11ec\u11ed\3\2\2\2"+
		"\u11ed\u11ef\t\35\2\2\u11ee\u11f0\7\u00dd\2\2\u11ef\u11ee\3\2\2\2\u11ef"+
		"\u11f0\3\2\2\2\u11f0\u11fc\3\2\2\2\u11f1\u11fd\7\u0324\2\2\u11f2\u11f3"+
		"\7\u0326\2\2\u11f3\u11fd\7\u0325\2\2\u11f4\u11f5\7\u0327\2\2\u11f5\u11fd"+
		"\7\u0324\2\2\u11f6\u11fd\7\u0325\2\2\u11f7\u11f8\7\u0325\2\2\u11f8\u11fd"+
		"\7\u0324\2\2\u11f9\u11fd\7\u0326\2\2\u11fa\u11fb\7\u0326\2\2\u11fb\u11fd"+
		"\7\u0324\2\2\u11fc\u11f1\3\2\2\2\u11fc\u11f2\3\2\2\2\u11fc\u11f4\3\2\2"+
		"\2\u11fc\u11f6\3\2\2\2\u11fc\u11f7\3\2\2\2\u11fc\u11f9\3\2\2\2\u11fc\u11fa"+
		"\3\2\2\2\u11fd\u11fe\3\2\2\2\u11fe\u1200\t\30\2\2\u11ff\u11d5\3\2\2\2"+
		"\u11ff\u11eb\3\2\2\2\u1200\u1202\3\2\2\2\u1201\u11d3\3\2\2\2\u1201\u1202"+
		"\3\2\2\2\u1202\u120a\3\2\2\2\u1203\u1204\7\u02aa\2\2\u1204\u120a\7\u017a"+
		"\2\2\u1205\u1206\7\u025c\2\2\u1206\u1207\7\u025f\2\2\u1207\u1208\7\u0324"+
		"\2\2\u1208\u120a\5\u03ba\u01de\2\u1209\u11b5\3\2\2\2\u1209\u1203\3\2\2"+
		"\2\u1209\u1205\3\2\2\2\u120a\u0175\3\2\2\2\u120b\u120c\7I\2\2\u120c\u120d"+
		"\7\u0138\2\2\u120d\u120e\7\u019a\2\2\u120e\u1298\5\u03ba\u01de\2\u120f"+
		"\u123c\7\u015e\2\2\u1210\u1211\7\u0082\2\2\u1211\u1236\7\u0336\2\2\u1212"+
		"\u1214\7\u0338\2\2\u1213\u1212\3\2\2\2\u1213\u1214\3\2\2\2\u1214\u1215"+
		"\3\2\2\2\u1215\u1216\7\u0200\2\2\u1216\u1217\7\u0324\2\2\u1217\u1235\7"+
		"\u0320\2\2\u1218\u121a\7\u0338\2\2\u1219\u1218\3\2\2\2\u1219\u121a\3\2"+
		"\2\2\u121a\u121b\3\2\2\2\u121b\u121c\7\u024e\2\2\u121c\u1220\7\u0324\2"+
		"\2\u121d\u121e\7\u031c\2\2\u121e\u1221\t,\2\2\u121f\u1221\7\u0301\2\2"+
		"\u1220\u121d\3\2\2\2\u1220\u121f\3\2\2\2\u1221\u1235\3\2\2\2\u1222\u1224"+
		"\7\u0338\2\2\u1223\u1222\3\2\2\2\u1223\u1224\3\2\2\2\u1224\u1225\3\2\2"+
		"\2\u1225\u1226\7\u024b\2\2\u1226\u1227\7\u0324\2\2\u1227\u1235\t-\2\2"+
		"\u1228\u122a\7\u0338\2\2\u1229\u1228\3\2\2\2\u1229\u122a\3\2\2\2\u122a"+
		"\u122b\3\2\2\2\u122b\u122c\7\u0246\2\2\u122c\u122d\7\u0324\2\2\u122d\u1235"+
		"\7\u031c\2\2\u122e\u1230\7\u0338\2\2\u122f\u122e\3\2\2\2\u122f\u1230\3"+
		"\2\2\2\u1230\u1231\3\2\2\2\u1231\u1232\7\u02b2\2\2\u1232\u1233\7\u0324"+
		"\2\2\u1233\u1235\t\t\2\2\u1234\u1213\3\2\2\2\u1234\u1219\3\2\2\2\u1234"+
		"\u1223\3\2\2\2\u1234\u1229\3\2\2\2\u1234\u122f\3\2\2\2\u1235\u1238\3\2"+
		"\2\2\u1236\u1234\3\2\2\2\u1236\u1237\3\2\2\2\u1237\u1239\3\2\2\2\u1238"+
		"\u1236\3\2\2\2\u1239\u123d\7\u0337\2\2\u123a\u123d\7\u0196\2\2\u123b\u123d"+
		"\7\u02c9\2\2\u123c\u1210\3\2\2\2\u123c\u123a\3\2\2\2\u123c\u123b\3\2\2"+
		"\2\u123d\u123f\3\2\2\2\u123e\u120f\3\2\2\2\u123e\u123f\3\2\2\2\u123f\u1260"+
		"\3\2\2\2\u1240\u1241\7\u017d\2\2\u1241\u125c\7\u0336\2\2\u1242\u1244\7"+
		"\u0338\2\2\u1243\u1242\3\2\2\2\u1243\u1244\3\2\2\2\u1244\u1245\3\2\2\2"+
		"\u1245\u1246\7\u0296\2\2\u1246\u1247\7\u0324\2\2\u1247\u125b\7\u031c\2"+
		"\2\u1248\u124a\7\u0338\2\2\u1249\u1248\3\2\2\2\u1249\u124a\3\2\2\2\u124a"+
		"\u124b\3\2\2\2\u124b\u124c\7\u00e7\2\2\u124c\u124d\7\u0324\2\2\u124d\u125b"+
		"\t.\2\2\u124e\u1250\7\u0338\2\2\u124f\u124e\3\2\2\2\u124f\u1250\3\2\2"+
		"\2\u1250\u1251\3\2\2\2\u1251\u1252\7\u014c\2\2\u1252\u1253\7\u0324\2\2"+
		"\u1253\u125b\t\t\2\2\u1254\u1256\7\u0338\2\2\u1255\u1254\3\2\2\2\u1255"+
		"\u1256\3\2\2\2\u1256\u1257\3\2\2\2\u1257\u1258\7\u019b\2\2\u1258\u1259"+
		"\7\u0324\2\2\u1259\u125b\5\u03ba\u01de\2\u125a\u1243\3\2\2\2\u125a\u1249"+
		"\3\2\2\2\u125a\u124f\3\2\2\2\u125a\u1255\3\2\2\2\u125b\u125e\3\2\2\2\u125c"+
		"\u125a\3\2\2\2\u125c\u125d\3\2\2\2\u125d\u125f\3\2\2\2\u125e\u125c\3\2"+
		"\2\2\u125f\u1261\7\u0337\2\2\u1260\u1240\3\2\2\2\u1260\u1261\3\2\2\2\u1261"+
		"\u1290\3\2\2\2\u1262\u128e\7\u017a\2\2\u1263\u1265\7\u0338\2\2\u1264\u1263"+
		"\3\2\2\2\u1264\u1265\3\2\2\2\u1265\u1267\3\2\2\2\u1266\u1268\7\u00dd\2"+
		"\2\u1267\u1266\3\2\2\2\u1267\u1268\3\2\2\2\u1268\u1269\3\2\2\2\u1269\u1275"+
		"\5\u03ba\u01de\2\u126a\u1276\7\u0324\2\2\u126b\u126c\7\u0326\2\2\u126c"+
		"\u1276\7\u0325\2\2\u126d\u126e\7\u0327\2\2\u126e\u1276\7\u0324\2\2\u126f"+
		"\u1276\7\u0325\2\2\u1270\u1271\7\u0325\2\2\u1271\u1276\7\u0324\2\2\u1272"+
		"\u1276\7\u0326\2\2\u1273\u1274\7\u0326\2\2\u1274\u1276\7\u0324\2\2\u1275"+
		"\u126a\3\2\2\2\u1275\u126b\3\2\2\2\u1275\u126d\3\2\2\2\u1275\u126f\3\2"+
		"\2\2\u1275\u1270\3\2\2\2\u1275\u1272\3\2\2\2\u1275\u1273\3\2\2\2\u1276"+
		"\u1277\3\2\2\2\u1277\u1278\t\30\2\2\u1278\u128f\3\2\2\2\u1279\u127b\7"+
		"\u0338\2\2\u127a\u1279\3\2\2\2\u127a\u127b\3\2\2\2\u127b\u127c\3\2\2\2"+
		"\u127c\u127e\t\35\2\2\u127d\u127f\7\u00dd\2\2\u127e\u127d\3\2\2\2\u127e"+
		"\u127f\3\2\2\2\u127f\u128b\3\2\2\2\u1280\u128c\7\u0324\2\2\u1281\u1282"+
		"\7\u0326\2\2\u1282\u128c\7\u0325\2\2\u1283\u1284\7\u0327\2\2\u1284\u128c"+
		"\7\u0324\2\2\u1285\u128c\7\u0325\2\2\u1286\u1287\7\u0325\2\2\u1287\u128c"+
		"\7\u0324\2\2\u1288\u128c\7\u0326\2\2\u1289\u128a\7\u0326\2\2\u128a\u128c"+
		"\7\u0324\2\2\u128b\u1280\3\2\2\2\u128b\u1281\3\2\2\2\u128b\u1283\3\2\2"+
		"\2\u128b\u1285\3\2\2\2\u128b\u1286\3\2\2\2\u128b\u1288\3\2\2\2\u128b\u1289"+
		"\3\2\2\2\u128c\u128d\3\2\2\2\u128d\u128f\t\30\2\2\u128e\u1264\3\2\2\2"+
		"\u128e\u127a\3\2\2\2\u128f\u1291\3\2\2\2\u1290\u1262\3\2\2\2\u1290\u1291"+
		"\3\2\2\2\u1291\u1299\3\2\2\2\u1292\u1293\7\u02aa\2\2\u1293\u1299\7\u017a"+
		"\2\2\u1294\u1295\7\u025c\2\2\u1295\u1296\7\u025f\2\2\u1296\u1297\7\u0324"+
		"\2\2\u1297\u1299\5\u03ba\u01de\2\u1298\u123e\3\2\2\2\u1298\u1292\3\2\2"+
		"\2\u1298\u1294\3\2\2\2\u1299\u0177\3\2\2\2\u129a\u129b\7\n\2\2\u129b\u129c"+
		"\7\u0138\2\2\u129c\u129d\7\u019a\2\2\u129d\u129e\7\u0146\2\2\u129e\u12a3"+
		"\5\u03ba\u01de\2\u129f\u12a0\7\u0086\2\2\u12a0\u12a1\7\u0138\2\2\u12a1"+
		"\u12a2\7\u019a\2\2\u12a2\u12a4\5\u03ba\u01de\2\u12a3\u129f\3\2\2\2\u12a3"+
		"\u12a4\3\2\2\2\u12a4\u12ac\3\2\2\2\u12a5\u12a6\t\25\2\2\u12a6\u12a7\7"+
		"\u0336\2\2\u12a7\u12a8\5\u03ba\u01de\2\u12a8\u12a9\7\u0337\2\2\u12a9\u12ab"+
		"\3\2\2\2\u12aa\u12a5\3\2\2\2\u12ab\u12ae\3\2\2\2\u12ac\u12aa\3\2\2\2\u12ac"+
		"\u12ad\3\2\2\2\u12ad\u12b5\3\2\2\2\u12ae\u12ac\3\2\2\2\u12af\u12b0\7\u017d"+
		"\2\2\u12b0\u12b1\7\u0336\2\2\u12b1\u12b2\7\u014c\2\2\u12b2\u12b3\7\u0324"+
		"\2\2\u12b3\u12b4\t\t\2\2\u12b4\u12b6\7\u0337\2\2\u12b5\u12af\3\2\2\2\u12b5"+
		"\u12b6\3\2\2\2\u12b6\u0179\3\2\2\2\u12b7\u12b8\7I\2\2\u12b8\u12b9\7\u0138"+
		"\2\2\u12b9\u12ba\7\u019a\2\2\u12ba\u12bb\7\u0146\2\2\u12bb\u12c0\5\u03ba"+
		"\u01de\2\u12bc\u12bd\7\u0086\2\2\u12bd\u12be\7\u0138\2\2\u12be\u12bf\7"+
		"\u019a\2\2\u12bf\u12c1\5\u03ba\u01de\2\u12c0\u12bc\3\2\2\2\u12c0\u12c1"+
		"\3\2\2\2\u12c1\u12c9\3\2\2\2\u12c2\u12c3\7\4\2\2\u12c3\u12c4\7\u0336\2"+
		"\2\u12c4\u12c5\5\u03ba\u01de\2\u12c5\u12c6\7\u0337\2\2\u12c6\u12c8\3\2"+
		"\2\2\u12c7\u12c2\3\2\2\2\u12c8\u12cb\3\2\2\2\u12c9\u12c7\3\2\2\2\u12c9"+
		"\u12ca\3\2\2\2\u12ca\u12d2\3\2\2\2\u12cb\u12c9\3\2\2\2\u12cc\u12cd\7\u017d"+
		"\2\2\u12cd\u12ce\7\u0336\2\2\u12ce\u12cf\7\u014c\2\2\u12cf\u12d0\7\u0324"+
		"\2\2\u12d0\u12d1\t\t\2\2\u12d1\u12d3\7\u0337\2\2\u12d2\u12cc\3\2\2\2\u12d2"+
		"\u12d3\3\2\2\2\u12d3\u017b\3\2\2\2\u12d4\u12d5\7\n\2\2\u12d5\u12d6\7\u0138"+
		"\2\2\u12d6\u12d7\7<\2\2\u12d7\u1341\7\u013e\2\2\u12d8\u12d9\7\u0105\2"+
		"\2\u12d9\u12fd\7\u018b\2\2\u12da\u12db\7\u01c5\2\2\u12db\u12eb\7\u0324"+
		"\2\2\u12dc\u12ec\7\u019c\2\2\u12dd\u12df\7\u0338\2\2\u12de\u12dd\3\2\2"+
		"\2\u12de\u12df\3\2\2\2\u12df\u12e0\3\2\2\2\u12e0\u12e8\7\u031c\2\2\u12e1"+
		"\u12e3\7\u0338\2\2\u12e2\u12e1\3\2\2\2\u12e2\u12e3\3\2\2\2\u12e3\u12e4"+
		"\3\2\2\2\u12e4\u12e5\7\u031c\2\2\u12e5\u12e6\7\u015e\2\2\u12e6\u12e8\7"+
		"\u031c\2\2\u12e7\u12de\3\2\2\2\u12e7\u12e2\3\2\2\2\u12e8\u12e9\3\2\2\2"+
		"\u12e9\u12e7\3\2\2\2\u12e9\u12ea\3\2\2\2\u12ea\u12ec\3\2\2\2\u12eb\u12dc"+
		"\3\2\2\2\u12eb\u12e7\3\2\2\2\u12ec\u12fe\3\2\2\2\u12ed\u12ee\7\u0270\2"+
		"\2\u12ee\u12f9\7\u0324\2\2\u12ef\u12f1\7\u0338\2\2\u12f0\u12ef\3\2\2\2"+
		"\u12f0\u12f1\3\2\2\2\u12f1\u12f2\3\2\2\2\u12f2\u12fa\7\u031c\2\2\u12f3"+
		"\u12f5\7\u0338\2\2\u12f4\u12f3\3\2\2\2\u12f4\u12f5\3\2\2\2\u12f5\u12f6"+
		"\3\2\2\2\u12f6\u12f7\7\u031c\2\2\u12f7\u12f8\7\u015e\2\2\u12f8\u12fa\7"+
		"\u031c\2\2\u12f9\u12f0\3\2\2\2\u12f9\u12f4\3\2\2\2\u12fa\u12fb\3\2\2\2"+
		"\u12fb\u12f9\3\2\2\2\u12fb\u12fc\3\2\2\2\u12fc\u12fe\3\2\2\2\u12fd\u12da"+
		"\3\2\2\2\u12fd\u12ed\3\2\2\2\u12fe\u1342\3\2\2\2\u12ff\u1300\7`\2\2\u1300"+
		"\u1310\7\u00bc\2\2\u1301\u1311\7\u00e6\2\2\u1302\u1311\7\u00e3\2\2\u1303"+
		"\u1304\7\u0284\2\2\u1304\u1305\7\u0324\2\2\u1305\u1311\t/\2\2\u1306\u1307"+
		"\7\u00c4\2\2\u1307\u130b\7\u0324\2\2\u1308\u1309\7\u031c\2\2\u1309\u130c"+
		"\7\u024f\2\2\u130a\u130c\7Z\2\2\u130b\u1308\3\2\2\2\u130b\u130a\3\2\2"+
		"\2\u130c\u1311\3\2\2\2\u130d\u130e\7\u0246\2\2\u130e\u130f\7\u0324\2\2"+
		"\u130f\u1311\t\60\2\2\u1310\u1301\3\2\2\2\u1310\u1302\3\2\2\2\u1310\u1303"+
		"\3\2\2\2\u1310\u1306\3\2\2\2\u1310\u130d\3\2\2\2\u1311\u1342\3\2\2\2\u1312"+
		"\u1313\7~\2\2\u1313\u1314\7\64\2\2\u1314\u1326\7\u0291\2\2\u1315\u1316"+
		"\7\u0175\2\2\u1316\u1317\7\u0324\2\2\u1317\u1327\t/\2\2\u1318\u1319\7"+
		"\u0148\2\2\u1319\u131a\7\u0324\2\2\u131a\u1327\t/\2\2\u131b\u131c\7\u0149"+
		"\2\2\u131c\u131d\7\u0324\2\2\u131d\u1327\t/\2\2\u131e\u131f\7\u014a\2"+
		"\2\u131f\u1327\t/\2\2\u1320\u1321\7\177\2\2\u1321\u1322\7\u0324\2\2\u1322"+
		"\u1327\t/\2\2\u1323\u1324\7\u0096\2\2\u1324\u1325\7\u0324\2\2\u1325\u1327"+
		"\t\60\2\2\u1326\u1315\3\2\2\2\u1326\u1318\3\2\2\2\u1326\u131b\3\2\2\2"+
		"\u1326\u131e\3\2\2\2\u1326\u1320\3\2\2\2\u1326\u1323\3\2\2\2\u1327\u1342"+
		"\3\2\2\2\u1328\u1329\7\u0215\2\2\u1329\u132a\7\64\2\2\u132a\u132b\7A\2"+
		"\2\u132b\u132c\7\u0324\2\2\u132c\u1342\t\61\2\2\u132d\u132e\7#\2\2\u132e"+
		"\u132f\7\u0286\2\2\u132f\u133c\7{\2\2\u1330\u1331\7\u00e6\2\2\u1331\u1332"+
		"\7\u0336\2\2\u1332\u1333\7\u0083\2\2\u1333\u1334\7\u0324\2\2\u1334\u1335"+
		"\7\u0320\2\2\u1335\u1336\7\u0338\2\2\u1336\u1337\7\u02d7\2\2\u1337\u1338"+
		"\7\u0324\2\2\u1338\u1339\7\u031c\2\2\u1339\u133a\t\62\2\2\u133a\u133d"+
		"\7\u0337\2\2\u133b\u133d\7\u00e3\2\2\u133c\u1330\3\2\2\2\u133c\u133b\3"+
		"\2\2\2\u133d\u1342\3\2\2\2\u133e\u133f\7\u013e\2\2\u133f\u1340\7\u0143"+
		"\2\2\u1340\u1342\t\t\2\2\u1341\u12d8\3\2\2\2\u1341\u12ff\3\2\2\2\u1341"+
		"\u1312\3\2\2\2\u1341\u1328\3\2\2\2\u1341\u132d\3\2\2\2\u1341\u133e\3\2"+
		"\2\2\u1342\u017d\3\2\2\2\u1343\u1344\7\n\2\2\u1344\u1345\7\u0138\2\2\u1345"+
		"\u1346\7\u0122\2\2\u1346\u134e\5\u03ba\u01de\2\u1347\u1348\t\25\2\2\u1348"+
		"\u1349\7\u00c8\2\2\u1349\u134f\5\u03ba\u01de\2\u134a\u134b\7\u017d\2\2"+
		"\u134b\u134c\7\u025f\2\2\u134c\u134d\7\u0324\2\2\u134d\u134f\5\u03ba\u01de"+
		"\2\u134e\u1347\3\2\2\2\u134e\u134a\3\2\2\2\u134f\u017f\3\2\2\2\u1350\u1351"+
		"\7I\2\2\u1351\u1352\7\u0138\2\2\u1352\u1353\7\u0122\2\2\u1353\u1356\5"+
		"\u03ba\u01de\2\u1354\u1355\7\24\2\2\u1355\u1357\5\u03ba\u01de\2\u1356"+
		"\u1354\3\2\2\2\u1356\u1357\3\2\2\2\u1357\u0181\3\2\2\2\u1358\u1359\7\n"+
		"\2\2\u1359\u135a\7\u0138\2\2\u135a\u135b\7\u0122\2\2\u135b\u135c\5\u03ba"+
		"\u01de\2\u135c\u135d\t\25\2\2\u135d\u135e\7\u00c8\2\2\u135e\u135f\5\u03ba"+
		"\u01de\2\u135f\u0183\3\2\2\2\u1360\u1361\7\n\2\2\u1361\u1362\7\u0139\2"+
		"\2\u1362\u136a\5\u03ba\u01de\2\u1363\u1364\7\u00e6\2\2\u1364\u1365\7\u0295"+
		"\2\2\u1365\u1366\5\u03ba\u01de\2\u1366\u1367\7\u0331\2\2\u1367\u1368\3"+
		"\2\2\2\u1368\u1369\5\u03ba\u01de\2\u1369\u136b\3\2\2\2\u136a\u1363\3\2"+
		"\2\2\u136a\u136b\3\2\2\2\u136b\u1373\3\2\2\2\u136c\u136e\7\u0338\2\2\u136d"+
		"\u136c\3\2\2\2\u136d\u136e\3\2\2\2\u136e\u136f\3\2\2\2\u136f\u1370\t\25"+
		"\2\2\u1370\u1372\5\u03ba\u01de\2\u1371\u136d\3\2\2\2\u1372\u1375\3\2\2"+
		"\2\u1373\u1371\3\2\2\2\u1373\u1374\3\2\2\2\u1374\u0185\3\2\2\2\u1375\u1373"+
		"\3\2\2\2\u1376\u1377\7I\2\2\u1377\u1378\7\u0139\2\2\u1378\u137b\5\u03ba"+
		"\u01de\2\u1379\u137a\7\24\2\2\u137a\u137c\5\u03ba\u01de\2\u137b\u1379"+
		"\3\2\2\2\u137b\u137c\3\2\2\2\u137c\u137d\3\2\2\2\u137d\u137e\7\u00e6\2"+
		"\2\u137e\u1382\7\u0295\2\2\u137f\u1380\5\u03ba\u01de\2\u1380\u1381\7\u0331"+
		"\2\2\u1381\u1383\3\2\2\2\u1382\u137f\3\2\2\2\u1382\u1383\3\2\2\2\u1383"+
		"\u1384\3\2\2\2\u1384\u1392\5\u03ba\u01de\2\u1385\u138d\7\u0336\2\2\u1386"+
		"\u1388\7\u0338\2\2\u1387\u1386\3\2\2\2\u1387\u1388\3\2\2\2\u1388\u138b"+
		"\3\2\2\2\u1389\u138c\5\u03ba\u01de\2\u138a\u138c\7Z\2\2\u138b\u1389\3"+
		"\2\2\2\u138b\u138a\3\2\2\2\u138c\u138e\3\2\2\2\u138d\u1387\3\2\2\2\u138e"+
		"\u138f\3\2\2\2\u138f\u138d\3\2\2\2\u138f\u1390\3\2\2\2\u1390\u1391\3\2"+
		"\2\2\u1391\u1393\7\u0337\2\2\u1392\u1385\3\2\2\2\u1392\u1393\3\2\2\2\u1393"+
		"\u0187\3\2\2\2\u1394\u1395\7\n\2\2\u1395\u1396\7\u0139\2\2\u1396\u1397"+
		"\7\u00be\2\2\u1397\u13ad\7\u00ad\2\2\u1398\u139a\7\u0206\2\2\u1399\u1398"+
		"\3\2\2\2\u1399\u139a\3\2\2\2\u139a\u139b\3\2\2\2\u139b\u13ae\7\u0110\2"+
		"\2\u139c\u13ab\7\u017d\2\2\u139d\u139e\7\u0276\2\2\u139e\u139f\7\u0324"+
		"\2\2\u139f\u13a0\7\u0320\2\2\u13a0\u13a1\7\u0338\2\2\u13a1\u13a2\7\u00e5"+
		"\2\2\u13a2\u13a3\7\u0324\2\2\u13a3\u13ac\7\u0320\2\2\u13a4\u13a5\7\u0261"+
		"\2\2\u13a5\u13a6\7\u0324\2\2\u13a6\u13a7\7\u0320\2\2\u13a7\u13a8\7\u0338"+
		"\2\2\u13a8\u13a9\7\u0263\2\2\u13a9\u13aa\7\u0324\2\2\u13aa\u13ac\7\u0320"+
		"\2\2\u13ab\u139d\3\2\2\2\u13ab\u13a4\3\2\2\2\u13ab\u13ac\3\2\2\2\u13ac"+
		"\u13ae\3\2\2\2\u13ad\u1399\3\2\2\2\u13ad\u139c\3\2\2\2\u13ae\u0189\3\2"+
		"\2\2\u13af\u13b0\7\n\2\2\u13b0\u13b1\7\u02e7\2\2\u13b1\u13b2\7\u00ad\2"+
		"\2\u13b2\u13b3\5\u03ba\u01de\2\u13b3\u13b4\t\25\2\2\u13b4\u13b5\7\u01ef"+
		"\2\2\u13b5\u13c1\7&\2\2\u13b6\u13b7\7+\2\2\u13b7\u13c2\5\u03ba\u01de\2"+
		"\u13b8\u13b9\7\u00f5\2\2\u13b9\u13ba\7\u0324\2\2\u13ba\u13c2\7\u0320\2"+
		"\2\u13bb\u13bc\7\u02e7\2\2\u13bc\u13bd\7\u00ad\2\2\u13bd\u13c2\5\u03ba"+
		"\u01de\2\u13be\u13bf\7\22\2\2\u13bf\u13c0\7\u00ad\2\2\u13c0\u13c2\5\u03ba"+
		"\u01de\2\u13c1\u13b6\3\2\2\2\u13c1\u13b8\3\2\2\2\u13c1\u13bb\3\2\2\2\u13c1"+
		"\u13be\3\2\2\2\u13c2\u018b\3\2\2\2\u13c3\u13c4\7\n\2\2\u13c4\u13c5\7\u02e7"+
		"\2\2\u13c5\u13c6\7\u00ad\2\2\u13c6\u13c9\5\u03ba\u01de\2\u13c7\u13c8\7"+
		"\24\2\2\u13c8\u13ca\5\u03ba\u01de\2\u13c9\u13c7\3\2\2\2\u13c9\u13ca\3"+
		"\2\2\2\u13ca\u13ce\3\2\2\2\u13cb\u13cc\7\u008c\2\2\u13cc\u13cd\7\u0292"+
		"\2\2\u13cd\u13cf\5\u03ba\u01de\2\u13ce\u13cb\3\2\2\2\u13ce\u13cf\3\2\2"+
		"\2\u13cf\u13d0\3\2\2\2\u13d0\u13f1\7\u017d\2\2\u13d1\u13d2\7\u022d\2\2"+
		"\u13d2\u13d3\7\u0324\2\2\u13d3\u13e1\7\u0320\2\2\u13d4\u13d5\7\u018e\2"+
		"\2\u13d5\u13d6\7\u0324\2\2\u13d6\u13e1\t\63\2\2\u13d7\u13d8\7\u021b\2"+
		"\2\u13d8\u13d9\7\u0324\2\2\u13d9\u13e1\7\u0320\2\2\u13da\u13db\7\u0293"+
		"\2\2\u13db\u13dc\7\u0324\2\2\u13dc\u13e1\7\u0320\2\2\u13dd\u13de\7\u01c7"+
		"\2\2\u13de\u13df\7\u0324\2\2\u13df\u13e1\t\f\2\2\u13e0\u13d1\3\2\2\2\u13e0"+
		"\u13d4\3\2\2\2\u13e0\u13d7\3\2\2\2\u13e0\u13da\3\2\2\2\u13e0\u13dd\3\2"+
		"\2\2\u13e1\u13f2\3\2\2\2\u13e2\u13e3\7\u01ef\2\2\u13e3\u13ef\7&\2\2\u13e4"+
		"\u13e5\7+\2\2\u13e5\u13f0\5\u03ba\u01de\2\u13e6\u13e7\7\u00f5\2\2\u13e7"+
		"\u13e8\7\u0324\2\2\u13e8\u13f0\7\u0320\2\2\u13e9\u13ea\7\u02e7\2\2\u13ea"+
		"\u13eb\7\u00ad\2\2\u13eb\u13f0\5\u03ba\u01de\2\u13ec\u13ed\7\22\2\2\u13ed"+
		"\u13ee\7\u00ad\2\2\u13ee\u13f0\5\u03ba\u01de\2\u13ef\u13e4\3\2\2\2\u13ef"+
		"\u13e6\3\2\2\2\u13ef\u13e9\3\2\2\2\u13ef\u13ec\3\2\2\2\u13f0\u13f2\3\2"+
		"\2\2\u13f1\u13e0\3\2\2\2\u13f1\u13e2\3\2\2\2\u13f2\u018d\3\2\2\2\u13f3"+
		"\u13f4\7I\2\2\u13f4\u13f8\7\u02e9\2\2\u13f5\u13f6\5\u03ba\u01de\2\u13f6"+
		"\u13f7\7\u0331\2\2\u13f7\u13f9\3\2\2\2\u13f8\u13f5\3\2\2\2\u13f8\u13f9"+
		"\3\2\2\2\u13f9\u13fa\3\2\2\2\u13fa\u13fb\5\u03ba\u01de\2\u13fb\u1416\7"+
		"\u0086\2\2\u13fc\u13fd\5\u03ba\u01de\2\u13fd\u13fe\7\u0331\2\2\u13fe\u1400"+
		"\3\2\2\2\u13ff\u13fc\3\2\2\2\u13ff\u1400\3\2\2\2\u1400\u1404\3\2\2\2\u1401"+
		"\u1402\5\u03ba\u01de\2\u1402\u1403\7\u0331\2\2\u1403\u1405\3\2\2\2\u1404"+
		"\u1401\3\2\2\2\u1404\u1405\3\2\2\2\u1405\u1409\3\2\2\2\u1406\u1407\5\u03ba"+
		"\u01de\2\u1407\u1408\7\u0331\2\2\u1408\u140a\3\2\2\2\u1409\u1406\3\2\2"+
		"\2\u1409\u140a\3\2\2\2\u140a\u140b\3\2\2\2\u140b\u1417\5\u03ba\u01de\2"+
		"\u140c\u140d\5\u03ba\u01de\2\u140d\u140e\7\u0331\2\2\u140e\u1410\3\2\2"+
		"\2\u140f\u140c\3\2\2\2\u140f\u1410\3\2\2\2\u1410\u1414\3\2\2\2\u1411\u1412"+
		"\5\u03ba\u01de\2\u1412\u1413\7\u0331\2\2\u1413\u1415\3\2\2\2\u1414\u1411"+
		"\3\2\2\2\u1414\u1415\3\2\2\2\u1415\u1417\3\2\2\2\u1416\u13ff\3\2\2\2\u1416"+
		"\u140f\3\2\2\2\u1417\u018f\3\2\2\2\u1418\u1419\7\n\2\2\u1419\u141a\7\u0172"+
		"\2\2\u141a\u141b\5\u03ba\u01de\2\u141b\u144e\7\u017d\2\2\u141c\u141e\7"+
		"\u0338\2\2\u141d\u141c\3\2\2\2\u141d\u141e\3\2\2\2\u141e\u141f\3\2\2\2"+
		"\u141f\u1420\7\u025f\2\2\u1420\u1421\7\u0324\2\2\u1421\u144f\5\u03ba\u01de"+
		"\2\u1422\u1424\7\u0338\2\2\u1423\u1422\3\2\2\2\u1423\u1424\3\2\2\2\u1424"+
		"\u1425\3\2\2\2\u1425\u1426\7\\\2\2\u1426\u1429\7\u0324\2\2\u1427\u142a"+
		"\5\u03ba\u01de\2\u1428\u142a\7\u00e0\2\2\u1429\u1427\3\2\2\2\u1429\u1428"+
		"\3\2\2\2\u142a\u144f\3\2\2\2\u142b\u142d\7\u0338\2\2\u142c\u142b\3\2\2"+
		"\2\u142c\u142d\3\2\2\2\u142d\u142e\3\2\2\2\u142e\u142f\7\u023d\2\2\u142f"+
		"\u1430\7\u0324\2\2\u1430\u144f\5\u03ba\u01de\2\u1431\u1433\7\u0338\2\2"+
		"\u1432\u1431\3\2\2\2\u1432\u1433\3\2\2\2\u1433\u1434\3\2\2\2\u1434\u1435"+
		"\7\u00f5\2\2\u1435\u1436\7\u0324\2\2\u1436\u143a\7\u0320\2\2\u1437\u1438"+
		"\7\u00e5\2\2\u1438\u1439\7\u0324\2\2\u1439\u143b\7\u0320\2\2\u143a\u1437"+
		"\3\2\2\2\u143b\u143c\3\2\2\2\u143c\u143a\3\2\2\2\u143c\u143d\3\2\2\2\u143d"+
		"\u144f\3\2\2\2\u143e\u1440\7\u0338\2\2\u143f\u143e\3\2\2\2\u143f\u1440"+
		"\3\2\2\2\u1440\u1441\3\2\2\2\u1441\u1442\7\u01d7\2\2\u1442\u1446\7\u0324"+
		"\2\2\u1443\u1447\7\u00d6\2\2\u1444\u1447\7\u031c\2\2\u1445\u1447\5\u03ba"+
		"\u01de\2\u1446\u1443\3\2\2\2\u1446\u1444\3\2\2\2\u1446\u1445\3\2\2\2\u1447"+
		"\u144f\3\2\2\2\u1448\u144a\7\u0338\2\2\u1449\u1448\3\2\2\2\u1449\u144a"+
		"\3\2\2\2\u144a\u144b\3\2\2\2\u144b\u144c\7\u018f\2\2\u144c\u144d\7\u0324"+
		"\2\2\u144d\u144f\t\t\2\2\u144e\u141d\3\2\2\2\u144e\u1423\3\2\2\2\u144e"+
		"\u142c\3\2\2\2\u144e\u1432\3\2\2\2\u144e\u143f\3\2\2\2\u144e\u1449\3\2"+
		"\2\2\u144f\u1450\3\2\2\2\u1450\u144e\3\2\2\2\u1450\u1451\3\2\2\2\u1451"+
		"\u0191\3\2\2\2\u1452\u1453\7I\2\2\u1453\u1454\7\u0172\2\2\u1454\u1458"+
		"\5\u03ba\u01de\2\u1455\u1456\t\64\2\2\u1456\u1457\7\u023d\2\2\u1457\u1459"+
		"\5\u03ba\u01de\2\u1458\u1455\3\2\2\2\u1458\u1459\3\2\2\2\u1459\u146c\3"+
		"\2\2\2\u145a\u1469\7\u017d\2\2\u145b\u145d\7\u0338\2\2\u145c\u145b\3\2"+
		"\2\2\u145c\u145d\3\2\2\2\u145d\u145e\3\2\2\2\u145e\u145f\7\\\2\2\u145f"+
		"\u1460\7\u0324\2\2\u1460\u1468\5\u03ba\u01de\2\u1461\u1463\7\u0338\2\2"+
		"\u1462\u1461\3\2\2\2\u1462\u1463\3\2\2\2\u1463\u1464\3\2\2\2\u1464\u1465"+
		"\7\u018f\2\2\u1465\u1466\7\u0324\2\2\u1466\u1468\t\t\2\2\u1467\u145c\3"+
		"\2\2\2\u1467\u1462\3\2\2\2\u1468\u146b\3\2\2\2\u1469\u1467\3\2\2\2\u1469"+
		"\u146a\3\2\2\2\u146a\u146d\3\2\2\2\u146b\u1469\3\2\2\2\u146c\u145a\3\2"+
		"\2\2\u146c\u146d\3\2\2\2\u146d\u14e5\3\2\2\2\u146e\u146f\7I\2\2\u146f"+
		"\u14c0\7\u0172\2\2\u1470\u1493\5\u03ba\u01de\2\u1471\u1490\7\u017d\2\2"+
		"\u1472\u1474\7\u0338\2\2\u1473\u1472\3\2\2\2\u1473\u1474\3\2\2\2\u1474"+
		"\u1475\3\2\2\2\u1475\u1476\7\\\2\2\u1476\u1477\7\u0324\2\2\u1477\u148f"+
		"\5\u03ba\u01de\2\u1478\u147a\7\u0338\2\2\u1479\u1478\3\2\2\2\u1479\u147a"+
		"\3\2\2\2\u147a\u147b\3\2\2\2\u147b\u147c\7\u01d7\2\2\u147c\u1480\7\u0324"+
		"\2\2\u147d\u1481\7\u00d6\2\2\u147e\u1481\7\u031c\2\2\u147f\u1481\5\u03ba"+
		"\u01de\2\u1480\u147d\3\2\2\2\u1480\u147e\3\2\2\2\u1480\u147f\3\2\2\2\u1481"+
		"\u148f\3\2\2\2\u1482\u1484\7\u0338\2\2\u1483\u1482\3\2\2\2\u1483\u1484"+
		"\3\2\2\2\u1484\u1485\3\2\2\2\u1485\u1486\7\u0141\2\2\u1486\u1487\7\u0324"+
		"\2\2\u1487\u148f\7\u0321\2\2\u1488\u148a\7\u0338\2\2\u1489\u1488\3\2\2"+
		"\2\u1489\u148a\3\2\2\2\u148a\u148b\3\2\2\2\u148b\u148c\7\u018f\2\2\u148c"+
		"\u148d\7\u0324\2\2\u148d\u148f\t\t\2\2\u148e\u1473\3\2\2\2\u148e\u1479"+
		"\3\2\2\2\u148e\u1483\3\2\2\2\u148e\u1489\3\2\2\2\u148f\u1492\3\2\2\2\u1490"+
		"\u148e\3\2\2\2\u1490\u1491\3\2\2\2\u1491\u1494\3\2\2\2\u1492\u1490\3\2"+
		"\2\2\u1493\u1471\3\2\2\2\u1493\u1494\3\2\2\2\u1494\u14c1\3\2\2\2\u1495"+
		"\u1496\5\u03ba\u01de\2\u1496\u1497\7\u017d\2\2\u1497\u1498\7\u00f5\2\2"+
		"\u1498\u1499\7\u0324\2\2\u1499\u14b8\7\u0320\2\2\u149a\u149c\7\u0338\2"+
		"\2\u149b\u149a\3\2\2\2\u149b\u149c\3\2\2\2\u149c\u149d\3\2\2\2\u149d\u149e"+
		"\7\\\2\2\u149e\u149f\7\u0324\2\2\u149f\u14b7\5\u03ba\u01de\2\u14a0\u14a2"+
		"\7\u0338\2\2\u14a1\u14a0\3\2\2\2\u14a1\u14a2\3\2\2\2\u14a2\u14a3\3\2\2"+
		"\2\u14a3\u14a4\7\u01d7\2\2\u14a4\u14a8\7\u0324\2\2\u14a5\u14a9\7\u00d6"+
		"\2\2\u14a6\u14a9\7\u031c\2\2\u14a7\u14a9\5\u03ba\u01de\2\u14a8\u14a5\3"+
		"\2\2\2\u14a8\u14a6\3\2\2\2\u14a8\u14a7\3\2\2\2\u14a9\u14b7\3\2\2\2\u14aa"+
		"\u14ac\7\u0338\2\2\u14ab\u14aa\3\2\2\2\u14ab\u14ac\3\2\2\2\u14ac\u14ad"+
		"\3\2\2\2\u14ad\u14ae\7\u0141\2\2\u14ae\u14af\7\u0324\2\2\u14af\u14b7\7"+
		"\u0321\2\2\u14b0\u14b2\7\u0338\2\2\u14b1\u14b0\3\2\2\2\u14b1\u14b2\3\2"+
		"\2\2\u14b2\u14b3\3\2\2\2\u14b3\u14b4\7\u018f\2\2\u14b4\u14b5\7\u0324\2"+
		"\2\u14b5\u14b7\t\t\2\2\u14b6\u149b\3\2\2\2\u14b6\u14a1\3\2\2\2\u14b6\u14ab"+
		"\3\2\2\2\u14b6\u14b1\3\2\2\2\u14b7\u14ba\3\2\2\2\u14b8\u14b6\3\2\2\2\u14b8"+
		"\u14b9\3\2\2\2\u14b9\u14c1\3\2\2\2\u14ba\u14b8\3\2\2\2\u14bb\u14bc\5\u03ba"+
		"\u01de\2\u14bc\u14bd\7\u008c\2\2\u14bd\u14be\7|\2\2\u14be\u14bf\7\u0292"+
		"\2\2\u14bf\u14c1\3\2\2\2\u14c0\u1470\3\2\2\2\u14c0\u1495\3\2\2\2\u14c0"+
		"\u14bb\3\2\2\2\u14c1\u14e5\3\2\2\2\u14c2\u14c3\7I\2\2\u14c3\u14c4\7\u0172"+
		"\2\2\u14c4\u14df\5\u03ba\u01de\2\u14c5\u14c6\7\u017f\2\2\u14c6\u14d5\7"+
		"\u023d\2\2\u14c7\u14c9\7\u0338\2\2\u14c8\u14c7\3\2\2\2\u14c8\u14c9\3\2"+
		"\2\2\u14c9\u14ca\3\2\2\2\u14ca\u14cb\7\\\2\2\u14cb\u14cc\7\u0324\2\2\u14cc"+
		"\u14d4\5\u03ba\u01de\2\u14cd\u14cf\7\u0338\2\2\u14ce\u14cd\3\2\2\2\u14ce"+
		"\u14cf\3\2\2\2\u14cf\u14d0\3\2\2\2\u14d0\u14d1\7\u018f\2\2\u14d1\u14d2"+
		"\7\u0324\2\2\u14d2\u14d4\t\t\2\2\u14d3\u14c8\3\2\2\2\u14d3\u14ce\3\2\2"+
		"\2\u14d4\u14d7\3\2\2\2\u14d5\u14d3\3\2\2\2\u14d5\u14d6\3\2\2\2\u14d6\u14e0"+
		"\3\2\2\2\u14d7\u14d5\3\2\2\2\u14d8\u14d9\t\64\2\2\u14d9\u14da\7+\2\2\u14da"+
		"\u14e0\5\u03ba\u01de\2\u14db\u14dc\t\64\2\2\u14dc\u14dd\7\22\2\2\u14dd"+
		"\u14de\7\u00ad\2\2\u14de\u14e0\5\u03ba\u01de\2\u14df\u14c5\3\2\2\2\u14df"+
		"\u14d8\3\2\2\2\u14df\u14db\3\2\2\2\u14e0\u14e5\3\2\2\2\u14e1\u14e2\7I"+
		"\2\2\u14e2\u14e3\7\u0172\2\2\u14e3\u14e5\5\u03ba\u01de\2\u14e4\u1452\3"+
		"\2\2\2\u14e4\u146e\3\2\2\2\u14e4\u14c2\3\2\2\2\u14e4\u14e1\3\2\2\2\u14e5"+
		"\u0193\3\2\2\2\u14e6\u14e7\7I\2\2\u14e7\u14e8\7\u0172\2\2\u14e8\u14ee"+
		"\5\u03ba\u01de\2\u14e9\u14ea\t\64\2\2\u14ea\u14eb\7\u023d\2\2\u14eb\u14ef"+
		"\5\u03ba\u01de\2\u14ec\u14ed\7\u017f\2\2\u14ed\u14ef\7\u023d\2\2\u14ee"+
		"\u14e9\3\2\2\2\u14ee\u14ec\3\2\2\2\u14ee\u14ef\3\2\2\2\u14ef\u14f4\3\2"+
		"\2\2\u14f0\u14f1\7\u017d\2\2\u14f1\u14f2\7\\\2\2\u14f2\u14f3\7\u0324\2"+
		"\2\u14f3\u14f5\5\u03ba\u01de\2\u14f4\u14f0\3\2\2\2\u14f4\u14f5\3\2\2\2"+
		"\u14f5\u1503\3\2\2\2\u14f6\u14f7\7I\2\2\u14f7\u14f8\7\u0172\2\2\u14f8"+
		"\u14f9\5\u03ba\u01de\2\u14f9\u14fa\7\u008c\2\2\u14fa\u14fb\7|\2\2\u14fb"+
		"\u1500\7\u0292\2\2\u14fc\u14fd\7\u017d\2\2\u14fd\u14fe\7\\\2\2\u14fe\u14ff"+
		"\7\u0324\2\2\u14ff\u1501\5\u03ba\u01de\2\u1500\u14fc\3\2\2\2\u1500\u1501"+
		"\3\2\2\2\u1501\u1503\3\2\2\2\u1502\u14e6\3\2\2\2\u1502\u14f6\3\2\2\2\u1503"+
		"\u0195\3\2\2\2\u1504\u1505\7\n\2\2\u1505\u1506\7\u0172\2\2\u1506\u1507"+
		"\5\u03ba\u01de\2\u1507\u1520\7\u017d\2\2\u1508\u150a\7\u0338\2\2\u1509"+
		"\u1508\3\2\2\2\u1509\u150a\3\2\2\2\u150a\u150b\3\2\2\2\u150b\u150c\7\u025f"+
		"\2\2\u150c\u150d\7\u0324\2\2\u150d\u1521\5\u03ba\u01de\2\u150e\u1510\7"+
		"\u0338\2\2\u150f\u150e\3\2\2\2\u150f\u1510\3\2\2\2\u1510\u1511\3\2\2\2"+
		"\u1511\u1512\7\\\2\2\u1512\u1513\7\u0324\2\2\u1513\u1521\5\u03ba\u01de"+
		"\2\u1514\u1516\7\u0338\2\2\u1515\u1514\3\2\2\2\u1515\u1516\3\2\2\2\u1516"+
		"\u1517\3\2\2\2\u1517\u1518\7\u023d\2\2\u1518\u1519\7\u0324\2\2\u1519\u1521"+
		"\5\u03ba\u01de\2\u151a\u151c\7\u0338\2\2\u151b\u151a\3\2\2\2\u151b\u151c"+
		"\3\2\2\2\u151c\u151d\3\2\2\2\u151d\u151e\7\u018f\2\2\u151e\u151f\7\u0324"+
		"\2\2\u151f\u1521\t\t\2\2\u1520\u1509\3\2\2\2\u1520\u150f\3\2\2\2\u1520"+
		"\u1515\3\2\2\2\u1520\u151b\3\2\2\2\u1521\u1522\3\2\2\2\u1522\u1520\3\2"+
		"\2\2\u1522\u1523\3\2\2\2\u1523\u0197\3\2\2\2\u1524\u1525\7\n\2\2\u1525"+
		"\u1526\7\u030e\2\2\u1526\u1529\7\u0093\2\2\u1527\u152a\5\u03ba\u01de\2"+
		"\u1528\u152a\7\u01d5\2\2\u1529\u1527\3\2\2\2\u1529\u1528\3\2\2\2\u152a"+
		"\u154a\3\2\2\2\u152b\u152c\7\u017d\2\2\u152c\u1545\7\u0336\2\2\u152d\u152e"+
		"\7\u021f\2\2\u152e\u152f\7\u0324\2\2\u152f\u1546\t\65\2\2\u1530\u1532"+
		"\7\u0338\2\2\u1531\u1530\3\2\2\2\u1531\u1532\3\2\2\2\u1532\u1533\3\2\2"+
		"\2\u1533\u1534\7\u02af\2\2\u1534\u1535\7\u0324\2\2\u1535\u1546\7\u031c"+
		"\2\2\u1536\u1538\7\u0338\2\2\u1537\u1536\3\2\2\2\u1537\u1538\3\2\2\2\u1538"+
		"\u1539\3\2\2\2\u1539\u153a\7\u02ae\2\2\u153a\u153b\7\u0324\2\2\u153b\u1546"+
		"\7\u031c\2\2\u153c\u153d\7\u02b0\2\2\u153d\u153e\7\u0324\2\2\u153e\u1546"+
		"\7\u031c\2\2\u153f\u1540\7\u0245\2\2\u1540\u1541\7\u0324\2\2\u1541\u1546"+
		"\7\u031c\2\2\u1542\u1543\7\u0212\2\2\u1543\u1544\7\u0324\2\2\u1544\u1546"+
		"\7\u031c\2\2\u1545\u152d\3\2\2\2\u1545\u1531\3\2\2\2\u1545\u1537\3\2\2"+
		"\2\u1545\u153c\3\2\2\2\u1545\u153f\3\2\2\2\u1545\u1542\3\2\2\2\u1546\u1547"+
		"\3\2\2\2\u1547\u1545\3\2\2\2\u1547\u1548\3\2\2\2\u1548\u1549\3\2\2\2\u1549"+
		"\u154b\7\u0337\2\2\u154a\u152b\3\2\2\2\u154a\u154b\3\2\2\2\u154b\u1551"+
		"\3\2\2\2\u154c\u154f\7\u0302\2\2\u154d\u1550\5\u03ba\u01de\2\u154e\u1550"+
		"\7\u01d5\2\2\u154f\u154d\3\2\2\2\u154f\u154e\3\2\2\2\u1550\u1552\3\2\2"+
		"\2\u1551\u154c\3\2\2\2\u1551\u1552\3\2\2\2\u1552\u0199\3\2\2\2\u1553\u1554"+
		"\7I\2\2\u1554\u1555\7\u030e\2\2\u1555\u1556\7\u0093\2\2\u1556\u1576\5"+
		"\u03ba\u01de\2\u1557\u1558\7\u017d\2\2\u1558\u1571\7\u0336\2\2\u1559\u155a"+
		"\7\u021f\2\2\u155a\u155b\7\u0324\2\2\u155b\u1572\t\65\2\2\u155c\u155e"+
		"\7\u0338\2\2\u155d\u155c\3\2\2\2\u155d\u155e\3\2\2\2\u155e\u155f\3\2\2"+
		"\2\u155f\u1560\7\u02af\2\2\u1560\u1561\7\u0324\2\2\u1561\u1572\7\u031c"+
		"\2\2\u1562\u1564\7\u0338\2\2\u1563\u1562\3\2\2\2\u1563\u1564\3\2\2\2\u1564"+
		"\u1565\3\2\2\2\u1565\u1566\7\u02ae\2\2\u1566\u1567\7\u0324\2\2\u1567\u1572"+
		"\7\u031c\2\2\u1568\u1569\7\u02b0\2\2\u1569\u156a\7\u0324\2\2\u156a\u1572"+
		"\7\u031c\2\2\u156b\u156c\7\u0245\2\2\u156c\u156d\7\u0324\2\2\u156d\u1572"+
		"\7\u031c\2\2\u156e\u156f\7\u0212\2\2\u156f\u1570\7\u0324\2\2\u1570\u1572"+
		"\7\u031c\2\2\u1571\u1559\3\2\2\2\u1571\u155d\3\2\2\2\u1571\u1563\3\2\2"+
		"\2\u1571\u1568\3\2\2\2\u1571\u156b\3\2\2\2\u1571\u156e\3\2\2\2\u1572\u1573"+
		"\3\2\2\2\u1573\u1571\3\2\2\2\u1573\u1574\3\2\2\2\u1574\u1575\3\2\2\2\u1575"+
		"\u1577\7\u0337\2\2\u1576\u1557\3\2\2\2\u1576\u1577\3\2\2\2\u1577\u1585"+
		"\3\2\2\2\u1578\u157b\7\u0302\2\2\u1579\u157c\5\u03ba\u01de\2\u157a\u157c"+
		"\7\u01d5\2\2\u157b\u1579\3\2\2\2\u157b\u157a\3\2\2\2\u157b\u157c\3\2\2"+
		"\2\u157c\u1583\3\2\2\2\u157d\u157f\7\u0338\2\2\u157e\u157d\3\2\2\2\u157e"+
		"\u157f\3\2\2\2\u157f\u1580\3\2\2\2\u1580\u1581\7|\2\2\u1581\u1584\5\u03ba"+
		"\u01de\2\u1582\u1584\7\u01d5\2\2\u1583\u157e\3\2\2\2\u1583\u1582\3\2\2"+
		"\2\u1583\u1584\3\2\2\2\u1584\u1586\3\2\2\2\u1585\u1578\3\2\2\2\u1585\u1586"+
		"\3\2\2\2\u1586\u019b\3\2\2\2\u1587\u1588\7I\2\2\u1588\u1589\7\u030f\2"+
		"\2\u1589\u158a\7\u012f\2\2\u158a\u158e\7\u01b9\2\2\u158b\u158c\5\u03ba"+
		"\u01de\2\u158c\u158d\7\u0331\2\2\u158d\u158f\3\2\2\2\u158e\u158b\3\2\2"+
		"\2\u158e\u158f\3\2\2\2\u158f\u1590\3\2\2\2\u1590\u1591\5\u03ba\u01de\2"+
		"\u1591\u1595\7\20\2\2\u1592\u1596\7\u0320\2\2\u1593\u1596\5\u03ba\u01de"+
		"\2\u1594\u1596\7\u031b\2\2\u1595\u1592\3\2\2\2\u1595\u1593\3\2\2\2\u1595"+
		"\u1594\3\2\2\2\u1596\u019d\3\2\2\2\u1597\u1598\7I\2\2\u1598\u159b\7\u0295"+
		"\2\2\u1599\u159c\5\u0380\u01c1\2\u159a\u159c\5\u03ba\u01de\2\u159b\u1599"+
		"\3\2\2\2\u159b\u159a\3\2\2\2\u159c\u159e\3\2\2\2\u159d\u159f\5\u01a0\u00d1"+
		"\2\u159e\u159d\3\2\2\2\u159e\u159f\3\2\2\2\u159f\u15a3\3\2\2\2\u15a0\u15a1"+
		"\7\u00e6\2\2\u15a1\u15a4\5\u03ba\u01de\2\u15a2\u15a4\7Z\2\2\u15a3\u15a0"+
		"\3\2\2\2\u15a3\u15a2\3\2\2\2\u15a3\u15a4\3\2\2\2\u15a4\u019f\3\2\2\2\u15a5"+
		"\u15ac\7\u017d\2\2\u15a6\u15a7\7\u02df\2\2\u15a7\u15a8\7\u0324\2\2\u15a8"+
		"\u15aa\t\t\2\2\u15a9\u15ab\7\u0338\2\2\u15aa\u15a9\3\2\2\2\u15aa\u15ab"+
		"\3\2\2\2\u15ab\u15ad\3\2\2\2\u15ac\u15a6\3\2\2\2\u15ac\u15ad\3\2\2\2\u15ad"+
		"\u15b4\3\2\2\2\u15ae\u15af\7\u02b6\2\2\u15af\u15b0\7\u0324\2\2\u15b0\u15b2"+
		"\t\t\2\2\u15b1\u15b3\7\u0338\2\2\u15b2\u15b1\3\2\2\2\u15b2\u15b3\3\2\2"+
		"\2\u15b3\u15b5\3\2\2\2\u15b4\u15ae\3\2\2\2\u15b4\u15b5\3\2\2\2\u15b5\u15e3"+
		"\3\2\2\2\u15b6\u15b7\7\u0185\2\2\u15b7\u15dd\7\u0336\2\2\u15b8\u15b9\7"+
		"\u02df\2\2\u15b9\u15ba\7\u0324\2\2\u15ba\u15bc\t\t\2\2\u15bb\u15bd\7\u0338"+
		"\2\2\u15bc\u15bb\3\2\2\2\u15bc\u15bd\3\2\2\2\u15bd\u15bf\3\2\2\2\u15be"+
		"\u15b8\3\2\2\2\u15be\u15bf\3\2\2\2\u15bf\u15c6\3\2\2\2\u15c0\u15c1\7\u0290"+
		"\2\2\u15c1\u15c2\7\u0324\2\2\u15c2\u15c4\5\u0388\u01c5\2\u15c3\u15c5\7"+
		"\u0338\2\2\u15c4\u15c3\3\2\2\2\u15c4\u15c5\3\2\2\2\u15c5\u15c7\3\2\2\2"+
		"\u15c6\u15c0\3\2\2\2\u15c6\u15c7\3\2\2\2\u15c7\u15ce\3\2\2\2\u15c8\u15c9"+
		"\7\u024a\2\2\u15c9\u15ca\7\u0324\2\2\u15ca\u15cc\7\u031c\2\2\u15cb\u15cd"+
		"\7\u0338\2\2\u15cc\u15cb\3\2\2\2\u15cc\u15cd\3\2\2\2\u15cd\u15cf\3\2\2"+
		"\2\u15ce\u15c8\3\2\2\2\u15ce\u15cf\3\2\2\2\u15cf\u15da\3\2\2\2\u15d0\u15d1"+
		"\7w\2\2\u15d1\u15d5\7\20\2\2\u15d2\u15d6\7\u02cb\2\2\u15d3\u15d6\7\u0320"+
		"\2\2\u15d4\u15d6\7\u027e\2\2\u15d5\u15d2\3\2\2\2\u15d5\u15d3\3\2\2\2\u15d5"+
		"\u15d4\3\2\2\2\u15d6\u15d8\3\2\2\2\u15d7\u15d9\7\u0338\2\2\u15d8\u15d7"+
		"\3\2\2\2\u15d8\u15d9\3\2\2\2\u15d9\u15db\3\2\2\2\u15da\u15d0\3\2\2\2\u15da"+
		"\u15db\3\2\2\2\u15db\u15de\3\2\2\2\u15dc\u15de\7h\2\2\u15dd\u15be\3\2"+
		"\2\2\u15dd\u15dc\3\2\2\2\u15de\u15df\3\2\2\2\u15df\u15e1\7\u0337\2\2\u15e0"+
		"\u15e2\7\u0338\2\2\u15e1\u15e0\3\2\2\2\u15e1\u15e2\3\2\2\2\u15e2\u15e4"+
		"\3\2\2\2\u15e3\u15b6\3\2\2\2\u15e3\u15e4\3\2\2\2\u15e4\u15ec\3\2\2\2\u15e5"+
		"\u15e6\7\u0285\2\2\u15e6\u15e7\7\u0336\2\2\u15e7\u15e8\7\u02df\2\2\u15e8"+
		"\u15e9\7\u0324\2\2\u15e9\u15ea\t\t\2\2\u15ea\u15eb\3\2\2\2\u15eb\u15ed"+
		"\7\u0337\2\2\u15ec\u15e5\3\2\2\2\u15ec\u15ed\3\2\2\2\u15ed\u01a1\3\2\2"+
		"\2\u15ee\u15ef\7\n\2\2\u15ef\u15f2\7\u0295\2\2\u15f0\u15f3\5\u0380\u01c1"+
		"\2\u15f1\u15f3\5\u03ba\u01de\2\u15f2\u15f0\3\2\2\2\u15f2\u15f1\3\2\2\2"+
		"\u15f3\u15f6\3\2\2\2\u15f4\u15f7\5\u01a0\u00d1\2\u15f5\u15f7\5\u01a4\u00d3"+
		"\2\u15f6\u15f4\3\2\2\2\u15f6\u15f5\3\2\2\2\u15f7\u01a3\3\2\2\2\u15f8\u15fe"+
		"\7\u02a2\2\2\u15f9\u15fa\7\u017d\2\2\u15fa\u15fb\7\u0336\2\2\u15fb\u15fc"+
		"\5\u01a6\u00d4\2\u15fc\u15fd\7\u0337\2\2\u15fd\u15ff\3\2\2\2\u15fe\u15f9"+
		"\3\2\2\2\u15fe\u15ff\3\2\2\2\u15ff\u160e\3\2\2\2\u1600\u1605\7\u02ab\2"+
		"\2\u1601\u1602\7\u017d\2\2\u1602\u1603\7\u0238\2\2\u1603\u1604\7\u0324"+
		"\2\2\u1604\u1606\t\t\2\2\u1605\u1601\3\2\2\2\u1605\u1606\3\2\2\2\u1606"+
		"\u160e\3\2\2\2\u1607\u1608\7\u025d\2\2\u1608\u160b\7\u015e\2\2\u1609\u160c"+
		"\5\u03ba\u01de\2\u160a\u160c\7Z\2\2\u160b\u1609\3\2\2\2\u160b\u160a\3"+
		"\2\2\2\u160c\u160e\3\2\2\2\u160d\u15f8\3\2\2\2\u160d\u1600\3\2\2\2\u160d"+
		"\u1607\3\2\2\2\u160e\u01a5\3\2\2\2\u160f\u1610\7\u024c\2\2\u1610\u1611"+
		"\7\u0324\2\2\u1611\u1612\7\u031c\2\2\u1612\u01a7\3\2\2\2\u1613\u1614\7"+
		"I\2\2\u1614\u1615\7D\2\2\u1615\u1618\5\u03a4\u01d3\2\u1616\u1617\7\24"+
		"\2\2\u1617\u1619\5\u03ba\u01de\2\u1618\u1616\3\2\2\2\u1618\u1619\3\2\2"+
		"\2\u1619\u161a\3\2\2\2\u161a\u1625\7\u0336\2\2\u161b\u161e\5\u03ba\u01de"+
		"\2\u161c\u161e\7Z\2\2\u161d\u161b\3\2\2\2\u161d\u161c\3\2\2\2\u161e\u161f"+
		"\3\2\2\2\u161f\u1620\7\u02ce\2\2\u1620\u1621\7&\2\2\u1621\u1623\t\66\2"+
		"\2\u1622\u1624\7\u0338\2\2\u1623\u1622\3\2\2\2\u1623\u1624\3\2\2\2\u1624"+
		"\u1626\3\2\2\2\u1625\u161d\3\2\2\2\u1626\u1627\3\2\2\2\u1627\u1625\3\2"+
		"\2\2\u1627\u1628\3\2\2\2\u1628\u1629\3\2\2\2\u1629\u162a\7\u0337\2\2\u162a"+
		"\u01a9\3\2\2\2\u162b\u1632\5\u03a0\u01d1\2\u162c\u1632\5\u03a2\u01d2\2"+
		"\u162d\u1632\5\u03a8\u01d5\2\u162e\u1632\5\u03ac\u01d7\2\u162f\u1632\5"+
		"\u03b0\u01d9\2\u1630\u1632\5\u03aa\u01d6\2\u1631\u162b\3\2\2\2\u1631\u162c"+
		"\3\2\2\2\u1631\u162d\3\2\2\2\u1631\u162e\3\2\2\2\u1631\u162f\3\2\2\2\u1631"+
		"\u1630\3\2\2\2\u1632\u01ab\3\2\2\2\u1633\u1634\7I\2\2\u1634\u1635\7\u0252"+
		"\2\2\u1635\u1636\7\u02fc\2\2\u1636\u1639\5\u03ba\u01de\2\u1637\u1638\7"+
		"\24\2\2\u1638\u163a\5\u03ba\u01de\2\u1639\u1637\3\2\2\2\u1639\u163a\3"+
		"\2\2\2\u163a\u163b\3\2\2\2\u163b\u163c\7\u0304\2\2\u163c\u1645\7\u0324"+
		"\2\2\u163d\u1646\7\u00d6\2\2\u163e\u1646\7\u01eb\2\2\u163f\u1646\7\u030b"+
		"\2\2\u1640\u1641\7\u0303\2\2\u1641\u1642\7\u017d\2\2\u1642\u1643\7\u012f"+
		"\2\2\u1643\u1644\7\u01b9\2\2\u1644\u1646\5\u03ba\u01de\2\u1645\u163d\3"+
		"\2\2\2\u1645\u163e\3\2\2\2\u1645\u163f\3\2\2\2\u1645\u1640\3\2\2\2\u1646"+
		"\u01ad\3\2\2\2\u1647\u1649\5\u02da\u016e\2\u1648\u1647\3\2\2\2\u1648\u1649"+
		"\3\2\2\2\u1649\u164a\3\2\2\2\u164a\u1652\7\u00ca\2\2\u164b\u164c\7\u015f"+
		"\2\2\u164c\u164d\7\u0336\2\2\u164d\u164e\5\u02cc\u0167\2\u164e\u1650\7"+
		"\u0337\2\2\u164f\u1651\7\u00f6\2\2\u1650\u164f\3\2\2\2\u1650\u1651\3\2"+
		"\2\2\u1651\u1653\3\2\2\2\u1652\u164b\3\2\2\2\u1652\u1653\3\2\2\2\u1653"+
		"\u1655\3\2\2\2\u1654\u1656\7\u00a6\2\2\u1655\u1654\3\2\2\2\u1655\u1656"+
		"\3\2\2\2\u1656\u1657\3\2\2\2\u1657\u1659\5\u038c\u01c7\2\u1658\u165a\5"+
		"\u034e\u01a8\2\u1659\u1658\3\2\2\2\u1659\u165a\3\2\2\2\u165a\u165c\3\2"+
		"\2\2\u165b\u165d\5\u0348\u01a5\2\u165c\u165b\3\2\2\2\u165c\u165d\3\2\2"+
		"\2\u165d\u165e\3\2\2\2\u165e\u165f\7\u0302\2\2\u165f\u1660\5\u0314\u018b"+
		"\2\u1660\u1661\7\u00e6\2\2\u1661\u166c\5\u02e2\u0172\2\u1662\u1663\7\u0179"+
		"\2\2\u1663\u1666\7\u00bd\2\2\u1664\u1665\7\13\2\2\u1665\u1667\5\u02e2"+
		"\u0172\2\u1666\u1664\3\2\2\2\u1666\u1667\3\2\2\2\u1667\u1668\3\2\2\2\u1668"+
		"\u1669\7\u015d\2\2\u1669\u166b\5\u01b0\u00d9\2\u166a\u1662\3\2\2\2\u166b"+
		"\u166e\3\2\2\2\u166c\u166a\3\2\2\2\u166c\u166d\3\2\2\2\u166d\u167c\3\2"+
		"\2\2\u166e\u166c\3\2\2\2\u166f\u1670\7\u0179\2\2\u1670\u1671\7\u00dd\2"+
		"\2\u1671\u1674\7\u00bd\2\2\u1672\u1673\7&\2\2\u1673\u1675\7\u015a\2\2"+
		"\u1674\u1672\3\2\2\2\u1674\u1675\3\2\2\2\u1675\u1678\3\2\2\2\u1676\u1677"+
		"\7\13\2\2\u1677\u1679\5\u02e2\u0172\2\u1678\u1676\3\2\2\2\u1678\u1679"+
		"\3\2\2\2\u1679\u167a\3\2\2\2\u167a\u167b\7\u015d\2\2\u167b\u167d\5\u01b2"+
		"\u00da\2\u167c\u166f\3\2\2\2\u167c\u167d\3\2\2\2\u167d\u168b\3\2\2\2\u167e"+
		"\u167f\7\u0179\2\2\u167f\u1680\7\u00dd\2\2\u1680\u1681\7\u00bd\2\2\u1681"+
		"\u1682\7&\2\2\u1682\u1685\7\u0145\2\2\u1683\u1684\7\13\2\2\u1684\u1686"+
		"\5\u02e2\u0172\2\u1685\u1683\3\2\2\2\u1685\u1686\3\2\2\2\u1686\u1687\3"+
		"\2\2\2\u1687\u1688\7\u015d\2\2\u1688\u168a\5\u01b0\u00d9\2\u1689\u167e"+
		"\3\2\2\2\u168a\u168d\3\2\2\2\u168b\u1689\3\2\2\2\u168b\u168c\3\2\2\2\u168c"+
		"\u168f\3\2\2\2\u168d\u168b\3\2\2\2\u168e\u1690\5\u01c4\u00e3\2\u168f\u168e"+
		"\3\2\2\2\u168f\u1690\3\2\2\2\u1690\u1692\3\2\2\2\u1691\u1693\5\u0300\u0181"+
		"\2\u1692\u1691\3\2\2\2\u1692\u1693\3\2\2\2\u1693\u1694\3\2\2\2\u1694\u1695"+
		"\7\u0339\2\2\u1695\u01af\3\2\2\2\u1696\u1697\7\u016d\2\2\u1697\u1698\7"+
		"\u013e\2\2\u1698\u169d\5\u02de\u0170\2\u1699\u169a\7\u0338\2\2\u169a\u169c"+
		"\5\u02de\u0170\2\u169b\u1699\3\2\2\2\u169c\u169f\3\2\2\2\u169d\u169b\3"+
		"\2\2\2\u169d\u169e\3\2\2\2\u169e\u16a2\3\2\2\2\u169f\u169d\3\2\2\2\u16a0"+
		"\u16a2\7]\2\2\u16a1\u1696\3\2\2\2\u16a1\u16a0\3\2\2\2\u16a2\u01b1\3\2"+
		"\2\2\u16a3\u16a8\7\u00a3\2\2\u16a4\u16a5\7\u0336\2\2\u16a5\u16a6\5\u0392"+
		"\u01ca\2\u16a6\u16a7\7\u0337\2\2\u16a7\u16a9\3\2\2\2\u16a8\u16a4\3\2\2"+
		"\2\u16a8\u16a9\3\2\2\2\u16a9\u16ad\3\2\2\2\u16aa\u16ae\5\u0358\u01ad\2"+
		"\u16ab\u16ac\7Z\2\2\u16ac\u16ae\7\u0173\2\2\u16ad\u16aa\3\2\2\2\u16ad"+
		"\u16ab\3\2\2\2\u16ae\u01b3\3\2\2\2\u16af\u16b1\5\u02da\u016e\2\u16b0\u16af"+
		"\3\2\2\2\u16b0\u16b1\3\2\2\2\u16b1\u16b2\3\2\2\2\u16b2\u16bc\7]\2\2\u16b3"+
		"\u16b4\7\u015f\2\2\u16b4\u16b5\7\u0336\2\2\u16b5\u16b6\5\u02cc\u0167\2"+
		"\u16b6\u16b8\7\u0337\2\2\u16b7\u16b9\7\u00f6\2\2\u16b8\u16b7\3\2\2\2\u16b8"+
		"\u16b9\3\2\2\2\u16b9\u16bd\3\2\2\2\u16ba\u16bb\7\u015f\2\2\u16bb\u16bd"+
		"\7\u031c\2\2\u16bc\u16b3\3\2\2\2\u16bc\u16ba\3\2\2\2\u16bc\u16bd\3\2\2"+
		"\2\u16bd\u16bf\3\2\2\2\u16be\u16c0\7\u008c\2\2\u16bf\u16be\3\2\2\2\u16bf"+
		"\u16c0\3\2\2\2\u16c0\u16c1\3\2\2\2\u16c1\u16c3\5\u01b6\u00dc\2\u16c2\u16c4"+
		"\5\u034e\u01a8\2\u16c3\u16c2\3\2\2\2\u16c3\u16c4\3\2\2\2\u16c4\u16c6\3"+
		"\2\2\2\u16c5\u16c7\5\u01c4\u00e3\2\u16c6\u16c5\3\2\2\2\u16c6\u16c7\3\2"+
		"\2\2\u16c7\u16ca\3\2\2\2\u16c8\u16c9\7\u008c\2\2\u16c9\u16cb\5\u0314\u018b"+
		"\2\u16ca\u16c8\3\2\2\2\u16ca\u16cb\3\2\2\2\u16cb\u16d9\3\2\2\2\u16cc\u16d7"+
		"\7\u017a\2\2\u16cd\u16d8\5\u02e2\u0172\2\u16ce\u16cf\7K\2\2\u16cf\u16d5"+
		"\7\u00e2\2\2\u16d0\u16d2\7\u0210\2\2\u16d1\u16d0\3\2\2\2\u16d1\u16d2\3"+
		"\2\2\2\u16d2\u16d3\3\2\2\2\u16d3\u16d6\5\u0394\u01cb\2\u16d4\u16d6\7\u031b"+
		"\2\2\u16d5\u16d1\3\2\2\2\u16d5\u16d4\3\2\2\2\u16d6\u16d8\3\2\2\2\u16d7"+
		"\u16cd\3\2\2\2\u16d7\u16ce\3\2\2\2\u16d8\u16da\3\2\2\2\u16d9\u16cc\3\2"+
		"\2\2\u16d9\u16da\3\2\2\2\u16da\u16dc\3\2\2\2\u16db\u16dd\5\u02f8\u017d"+
		"\2\u16dc\u16db\3\2\2\2\u16dc\u16dd\3\2\2\2\u16dd\u16df\3\2\2\2\u16de\u16e0"+
		"\5\u0300\u0181\2\u16df\u16de\3\2\2\2\u16df\u16e0\3\2\2\2\u16e0\u16e2\3"+
		"\2\2\2\u16e1\u16e3\7\u0339\2\2\u16e2\u16e1\3\2\2\2\u16e2\u16e3\3\2\2\2"+
		"\u16e3\u01b5\3\2\2\2\u16e4\u16e9\5\u038c\u01c7\2\u16e5\u16e9\5\u034a\u01a6"+
		"\2\u16e6\u16e9\5\u025c\u012f\2\u16e7\u16e9\7\u031b\2\2\u16e8\u16e4\3\2"+
		"\2\2\u16e8\u16e5\3\2\2\2\u16e8\u16e6\3\2\2\2\u16e8\u16e7\3\2\2\2\u16e9"+
		"\u01b7\3\2\2\2\u16ea\u16ec\5\u02da\u016e\2\u16eb\u16ea\3\2\2\2\u16eb\u16ec"+
		"\3\2\2\2\u16ec\u16ed\3\2\2\2\u16ed\u16f5\7\u00a3\2\2\u16ee\u16ef\7\u015f"+
		"\2\2\u16ef\u16f0\7\u0336\2\2\u16f0\u16f1\5\u02cc\u0167\2\u16f1\u16f3\7"+
		"\u0337\2\2\u16f2\u16f4\7\u00f6\2\2\u16f3\u16f2\3\2\2\2\u16f3\u16f4\3\2"+
		"\2\2\u16f4\u16f6\3\2\2\2\u16f5\u16ee\3\2\2\2\u16f5\u16f6\3\2\2\2\u16f6"+
		"\u16f8\3\2\2\2\u16f7\u16f9\7\u00a6\2\2\u16f8\u16f7\3\2\2\2\u16f8\u16f9"+
		"\3\2\2\2\u16f9\u16fc\3\2\2\2\u16fa\u16fd\5\u038c\u01c7\2\u16fb\u16fd\5"+
		"\u025c\u012f\2\u16fc\u16fa\3\2\2\2\u16fc\u16fb\3\2\2\2\u16fd\u16ff\3\2"+
		"\2\2\u16fe\u1700\5\u034e\u01a8\2\u16ff\u16fe\3\2\2\2\u16ff\u1700\3\2\2"+
		"\2\u1700\u1705\3\2\2\2\u1701\u1702\7\u0336\2\2\u1702\u1703\5\u0392\u01ca"+
		"\2\u1703\u1704\7\u0337\2\2\u1704\u1706\3\2\2\2\u1705\u1701\3\2\2\2\u1705"+
		"\u1706\3\2\2\2\u1706\u1708\3\2\2\2\u1707\u1709\5\u01c4\u00e3\2\u1708\u1707"+
		"\3\2\2\2\u1708\u1709\3\2\2\2\u1709\u170a\3\2\2\2\u170a\u170c\5\u01ba\u00de"+
		"\2\u170b\u170d\5\u02f8\u017d\2\u170c\u170b\3\2\2\2\u170c\u170d\3\2\2\2"+
		"\u170d\u170f\3\2\2\2\u170e\u1710\5\u0300\u0181\2\u170f\u170e\3\2\2\2\u170f"+
		"\u1710\3\2\2\2\u1710\u1712\3\2\2\2\u1711\u1713\7\u0339\2\2\u1712\u1711"+
		"\3\2\2\2\u1712\u1713\3\2\2\2\u1713\u01b9\3\2\2\2\u1714\u171a\5\u0358\u01ad"+
		"\2\u1715\u171a\5\u0332\u019a\2\u1716\u171a\5\u0270\u0139\2\u1717\u1718"+
		"\7Z\2\2\u1718\u171a\7\u0173\2\2\u1719\u1714\3\2\2\2\u1719\u1715\3\2\2"+
		"\2\u1719\u1716\3\2\2\2\u1719\u1717\3\2\2\2\u171a\u01bb\3\2\2\2\u171b\u171d"+
		"\7\u0336\2\2\u171c\u171b\3\2\2\2\u171c\u171d\3\2\2\2\u171d\u171e\3\2\2"+
		"\2\u171e\u1723\7\u02a3\2\2\u171f\u1724\7\6\2\2\u1720\u1724\7c\2\2\u1721"+
		"\u1724\5\u02f0\u0179\2\u1722\u1724\7\u033b\2\2\u1723\u171f\3\2\2\2\u1723"+
		"\u1720\3\2\2\2\u1723\u1721\3\2\2\2\u1723\u1722\3\2\2\2\u1724\u172d\3\2"+
		"\2\2\u1725\u1726\7\u031b\2\2\u1726\u1727\7\u0324\2\2\u1727\u1729\5\u02cc"+
		"\u0167\2\u1728\u172a\7\u0338\2\2\u1729\u1728\3\2\2\2\u1729\u172a\3\2\2"+
		"\2\u172a\u172c\3\2\2\2\u172b\u1725\3\2\2\2\u172c\u172f\3\2\2\2\u172d\u172b"+
		"\3\2\2\2\u172d\u172e\3\2\2\2\u172e\u1730\3\2\2\2\u172f\u172d\3\2\2\2\u1730"+
		"\u1731\7\u008c\2\2\u1731\u1737\5\u0380\u01c1\2\u1732\u1733\7\u00a6\2\2"+
		"\u1733\u1734\5\u03ba\u01de\2\u1734\u1735\7\u017a\2\2\u1735\u1736\5\u02e2"+
		"\u0172\2\u1736\u1738\3\2\2\2\u1737\u1732\3\2\2\2\u1737\u1738\3\2\2\2\u1738"+
		"\u173a\3\2\2\2\u1739\u173b\7\u0337\2\2\u173a\u1739\3\2\2\2\u173a\u173b"+
		"\3\2\2\2\u173b\u01bd\3\2\2\2\u173c\u173e\5\u02da\u016e\2\u173d\u173c\3"+
		"\2\2\2\u173d\u173e\3\2\2\2\u173e\u173f\3\2\2\2\u173f\u1741\5\u02ea\u0176"+
		"\2\u1740\u1742\5\u02f6\u017c\2\u1741\u1740\3\2\2\2\u1741\u1742\3\2\2\2"+
		"\u1742\u1744\3\2\2\2\u1743\u1745\5\u02f8\u017d\2\u1744\u1743\3\2\2\2\u1744"+
		"\u1745\3\2\2\2\u1745\u1747\3\2\2\2\u1746\u1748\5\u0300\u0181\2\u1747\u1746"+
		"\3\2\2\2\u1747\u1748\3\2\2\2\u1748\u174a\3\2\2\2\u1749\u174b\7\u0339\2"+
		"\2\u174a\u1749\3\2\2\2\u174a\u174b\3\2\2\2\u174b\u01bf\3\2\2\2\u174c\u174f"+
		"\7\u031b\2\2\u174d\u174f\5\u03b6\u01dc\2\u174e\u174c\3\2\2\2\u174e\u174d"+
		"\3\2\2\2\u174f\u01c1\3\2\2\2\u1750\u1752\5\u02da\u016e\2\u1751\u1750\3"+
		"\2\2\2\u1751\u1752\3\2\2\2\u1752\u1753\3\2\2\2\u1753\u175b\7\u016d\2\2"+
		"\u1754\u1755\7\u015f\2\2\u1755\u1756\7\u0336\2\2\u1756\u1757\5\u02cc\u0167"+
		"\2\u1757\u1759\7\u0337\2\2\u1758\u175a\7\u00f6\2\2\u1759\u1758\3\2\2\2"+
		"\u1759\u175a\3\2\2\2\u175a\u175c\3\2\2\2\u175b\u1754\3\2\2\2\u175b\u175c"+
		"\3\2\2\2\u175c\u175f\3\2\2\2\u175d\u1760\5\u038c\u01c7\2\u175e\u1760\5"+
		"\u025c\u012f\2\u175f\u175d\3\2\2\2\u175f\u175e\3\2\2\2\u1760\u1762\3\2"+
		"\2\2\u1761\u1763\5\u034c\u01a7\2\u1762\u1761\3\2\2\2\u1762\u1763\3\2\2"+
		"\2\u1763\u1764\3\2\2\2\u1764\u1765\7\u013e\2\2\u1765\u176a\5\u02de\u0170"+
		"\2\u1766\u1767\7\u0338\2\2\u1767\u1769\5\u02de\u0170\2\u1768\u1766\3\2"+
		"\2\2\u1769\u176c\3\2\2\2\u176a\u1768\3\2\2\2\u176a\u176b\3\2\2\2\u176b"+
		"\u176e\3\2\2\2\u176c\u176a\3\2\2\2\u176d\u176f\5\u01c4\u00e3\2\u176e\u176d"+
		"\3\2\2\2\u176e\u176f\3\2\2\2\u176f\u1772\3\2\2\2\u1770\u1771\7\u008c\2"+
		"\2\u1771\u1773\5\u0314\u018b\2\u1772\u1770\3\2\2\2\u1772\u1773\3\2\2\2"+
		"\u1773\u1781\3\2\2\2\u1774\u177f\7\u017a\2\2\u1775\u1780\5\u02e0\u0171"+
		"\2\u1776\u1777\7K\2\2\u1777\u177d\7\u00e2\2\2\u1778\u177a\7\u0210\2\2"+
		"\u1779\u1778\3\2\2\2\u1779\u177a\3\2\2\2\u177a\u177b\3\2\2\2\u177b\u177e"+
		"\5\u0394\u01cb\2\u177c\u177e\7\u031b\2\2\u177d\u1779\3\2\2\2\u177d\u177c"+
		"\3\2\2\2\u177e\u1780\3\2\2\2\u177f\u1775\3\2\2\2\u177f\u1776\3\2\2\2\u1780"+
		"\u1782\3\2\2\2\u1781\u1774\3\2\2\2\u1781\u1782\3\2\2\2\u1782\u1784\3\2"+
		"\2\2\u1783\u1785\5\u02f8\u017d\2\u1784\u1783\3\2\2\2\u1784\u1785\3\2\2"+
		"\2\u1785\u1787\3\2\2\2\u1786\u1788\5\u0300\u0181\2\u1787\u1786\3\2\2\2"+
		"\u1787\u1788\3\2\2\2\u1788\u178a\3\2\2\2\u1789\u178b\7\u0339\2\2\u178a"+
		"\u1789\3\2\2\2\u178a\u178b\3\2\2\2\u178b\u01c3\3\2\2\2\u178c\u178d\7\u027d"+
		"\2\2\u178d\u1792\5\u01c6\u00e4\2\u178e\u178f\7\u0338\2\2\u178f\u1791\5"+
		"\u01c6\u00e4\2\u1790\u178e\3\2\2\2\u1791\u1794\3\2\2\2\u1792\u1790\3\2"+
		"\2\2\u1792\u1793\3\2\2\2\u1793\u17a0\3\2\2\2\u1794\u1792\3\2\2\2\u1795"+
		"\u1798\7\u00a6\2\2\u1796\u1799\7\u031b\2\2\u1797\u1799\5\u0382\u01c2\2"+
		"\u1798\u1796\3\2\2\2\u1798\u1797\3\2\2\2\u1799\u179e\3\2\2\2\u179a\u179b"+
		"\7\u0336\2\2\u179b\u179c\5\u0392\u01ca\2\u179c\u179d\7\u0337\2\2\u179d"+
		"\u179f\3\2\2\2\u179e\u179a\3\2\2\2\u179e\u179f\3\2\2\2\u179f\u17a1\3\2"+
		"\2\2\u17a0\u1795\3\2\2\2\u17a0\u17a1\3\2\2\2\u17a1\u01c5\3\2\2\2\u17a2"+
		"\u17a5\5\u01c8\u00e5\2\u17a3\u17a5\5\u02cc\u0167\2\u17a4\u17a2\3\2\2\2"+
		"\u17a4\u17a3\3\2\2\2\u17a5\u17a7\3\2\2\2\u17a6\u17a8\5\u0346\u01a4\2\u17a7"+
		"\u17a6\3\2\2\2\u17a7\u17a8\3\2\2\2\u17a8\u01c7\3\2\2\2\u17a9\u17ad\7\u01da"+
		"\2\2\u17aa\u17ad\7\u0225\2\2\u17ab\u17ad\5\u0382\u01c2\2\u17ac\u17a9\3"+
		"\2\2\2\u17ac\u17aa\3\2\2\2\u17ac\u17ab\3\2\2\2\u17ad\u17ae\3\2\2\2\u17ae"+
		"\u17b1\7\u0331\2\2\u17af\u17b2\7\u033b\2\2\u17b0\u17b2\5\u03ba\u01de\2"+
		"\u17b1\u17af\3\2\2\2\u17b1\u17b0\3\2\2\2\u17b2\u17b5\3\2\2\2\u17b3\u17b5"+
		"\7\u0314\2\2\u17b4\u17ac\3\2\2\2\u17b4\u17b3\3\2\2\2\u17b5\u01c9\3\2\2"+
		"\2\u17b6\u17b7\7I\2\2\u17b7\u17b8\7U\2\2\u17b8\u17bc\5\u03ba\u01de\2\u17b9"+
		"\u17ba\7>\2\2\u17ba\u17bb\7\u0324\2\2\u17bb\u17bd\t\67\2\2\u17bc\u17b9"+
		"\3\2\2\2\u17bc\u17bd\3\2\2\2\u17bd\u17ca\3\2\2\2\u17be\u17c0\7\u00e6\2"+
		"\2\u17bf\u17c1\7\u0101\2\2\u17c0\u17bf\3\2\2\2\u17c0\u17c1\3\2\2\2\u17c1"+
		"\u17c2\3\2\2\2\u17c2\u17c7\5\u0374\u01bb\2\u17c3\u17c4\7\u0338\2\2\u17c4"+
		"\u17c6\5\u0374\u01bb\2\u17c5\u17c3\3\2\2\2\u17c6\u17c9\3\2\2\2\u17c7\u17c5"+
		"\3\2\2\2\u17c7\u17c8\3\2\2\2\u17c8\u17cb\3\2\2\2\u17c9\u17c7\3\2\2\2\u17ca"+
		"\u17be\3\2\2\2\u17ca\u17cb\3\2\2\2\u17cb\u17d6\3\2\2\2\u17cc\u17cd\7\u00bc"+
		"\2\2\u17cd\u17ce\7\u00e6\2\2\u17ce\u17d3\5\u0374\u01bb\2\u17cf\u17d0\7"+
		"\u0338\2\2\u17d0\u17d2\5\u0374\u01bb\2\u17d1\u17cf\3\2\2\2\u17d2\u17d5"+
		"\3\2\2\2\u17d3\u17d1\3\2\2\2\u17d3\u17d4\3\2\2\2\u17d4\u17d7\3\2\2\2\u17d5"+
		"\u17d3\3\2\2\2\u17d6\u17cc\3\2\2\2\u17d6\u17d7\3\2\2\2\u17d7\u17da\3\2"+
		"\2\2\u17d8\u17d9\7\67\2\2\u17d9\u17db\5\u03ba\u01de\2\u17da\u17d8\3\2"+
		"\2\2\u17da\u17db\3\2\2\2\u17db\u17e5\3\2\2\2\u17dc\u17dd\7\u017d\2\2\u17dd"+
		"\u17e2\5\u0370\u01b9\2\u17de\u17df\7\u0338\2\2\u17df\u17e1\5\u0370\u01b9"+
		"\2\u17e0\u17de\3\2\2\2\u17e1\u17e4\3\2\2\2\u17e2\u17e0\3\2\2\2\u17e2\u17e3"+
		"\3\2\2\2\u17e3\u17e6\3\2\2\2\u17e4\u17e2\3\2\2\2\u17e5\u17dc\3\2\2\2\u17e5"+
		"\u17e6\3\2\2\2\u17e6\u01cb\3\2\2\2\u17e7\u17e9\7I\2\2\u17e8\u17ea\7\u0169"+
		"\2\2\u17e9\u17e8\3\2\2\2\u17e9\u17ea\3\2\2\2\u17ea\u17ec\3\2\2\2\u17eb"+
		"\u17ed\5\u0398\u01cd\2\u17ec\u17eb\3\2\2\2\u17ec\u17ed\3\2\2\2\u17ed\u17ee"+
		"\3\2\2\2\u17ee\u17ef\7\u009f\2\2\u17ef\u17f0\5\u03ba\u01de\2\u17f0\u17f1"+
		"\7\u00e6\2\2\u17f1\u17f2\5\u032c\u0197\2\u17f2\u17f3\7\u0336\2\2\u17f3"+
		"\u17f4\5\u0390\u01c9\2\u17f4\u17fa\7\u0337\2\2\u17f5\u17f6\7\u009d\2\2"+
		"\u17f6\u17f7\7\u0336\2\2\u17f7\u17f8\5\u0392\u01ca\2\u17f8\u17f9\7\u0337"+
		"\2\2\u17f9\u17fb\3\2\2\2\u17fa\u17f5\3\2\2\2\u17fa\u17fb\3\2\2\2\u17fb"+
		"\u17fe\3\2\2\2\u17fc\u17fd\7\u017a\2\2\u17fd\u17ff\5\u02e2\u0172\2\u17fe"+
		"\u17fc\3\2\2\2\u17fe\u17ff\3\2\2\2\u17ff\u1801\3\2\2\2\u1800";
	private static final String _serializedATNSegment3 =
		"\u1802\5\u02bc\u015f\2\u1801\u1800\3\2\2\2\u1801\u1802\3\2\2\2\u1802\u1805"+
		"\3\2\2\2\u1803\u1804\7\u00e6\2\2\u1804\u1806\5\u03ba\u01de\2\u1805\u1803"+
		"\3\2\2\2\u1805\u1806\3\2\2\2\u1806\u1808\3\2\2\2\u1807\u1809\7\u0339\2"+
		"\2\u1808\u1807\3\2\2\2\u1808\u1809\3\2\2\2\u1809\u01cd\3\2\2\2\u180a\u180d"+
		"\7I\2\2\u180b\u180c\7\u00ee\2\2\u180c\u180e\7\n\2\2\u180d\u180b\3\2\2"+
		"\2\u180d\u180e\3\2\2\2\u180e\u1811\3\2\2\2\u180f\u1811\7\n\2\2\u1810\u180a"+
		"\3\2\2\2\u1810\u180f\3\2\2\2\u1811\u1812\3\2\2\2\u1812\u1813\t8\2\2\u1813"+
		"\u1816\5\u0386\u01c4\2\u1814\u1815\7\u0339\2\2\u1815\u1817\7\u031c\2\2"+
		"\u1816\u1814\3\2\2\2\u1816\u1817\3\2\2\2\u1817\u1826\3\2\2\2\u1818\u181a"+
		"\7\u0336\2\2\u1819\u1818\3\2\2\2\u1819\u181a\3\2\2\2\u181a\u181b\3\2\2"+
		"\2\u181b\u1820\5\u01e4\u00f3\2\u181c\u181d\7\u0338\2\2\u181d\u181f\5\u01e4"+
		"\u00f3\2\u181e\u181c\3\2\2\2\u181f\u1822\3\2\2\2\u1820\u181e\3\2\2\2\u1820"+
		"\u1821\3\2\2\2\u1821\u1824\3\2\2\2\u1822\u1820\3\2\2\2\u1823\u1825\7\u0337"+
		"\2\2\u1824\u1823\3\2\2\2\u1824\u1825\3\2\2\2\u1825\u1827\3\2\2\2\u1826"+
		"\u1819\3\2\2\2\u1826\u1827\3\2\2\2\u1827\u1831\3\2\2\2\u1828\u1829\7\u017d"+
		"\2\2\u1829\u182e\5\u01e6\u00f4\2\u182a\u182b\7\u0338\2\2\u182b\u182d\5"+
		"\u01e6\u00f4\2\u182c\u182a\3\2\2\2\u182d\u1830\3\2\2\2\u182e\u182c\3\2"+
		"\2\2\u182e\u182f\3\2\2\2\u182f\u1832\3\2\2\2\u1830\u182e\3\2\2\2\u1831"+
		"\u1828\3\2\2\2\u1831\u1832\3\2\2\2\u1832\u1835\3\2\2\2\u1833\u1834\7\u0086"+
		"\2\2\u1834\u1836\7\u0113\2\2\u1835\u1833\3\2\2\2\u1835\u1836\3\2\2\2\u1836"+
		"\u1837\3\2\2\2\u1837\u1838\7\20\2\2\u1838\u1839\5\6\4\2\u1839\u01cf\3"+
		"\2\2\2\u183a\u183d\5\u01d2\u00ea\2\u183b\u183d\5\u01d8\u00ed\2\u183c\u183a"+
		"\3\2\2\2\u183c\u183b\3\2\2\2\u183d\u01d1\3\2\2\2\u183e\u1841\7I\2\2\u183f"+
		"\u1840\7\u00ee\2\2\u1840\u1842\7\n\2\2\u1841\u183f\3\2\2\2\u1841\u1842"+
		"\3\2\2\2\u1842\u1845\3\2\2\2\u1843\u1845\7\n\2\2\u1844\u183e\3\2\2\2\u1844"+
		"\u1843\3\2\2\2\u1845\u1846\3\2\2\2\u1846\u1847\7\u0164\2\2\u1847\u1848"+
		"\5\u0384\u01c3\2\u1848\u1849\7\u00e6\2\2\u1849\u1853\5\u0382\u01c2\2\u184a"+
		"\u184b\7\u017d\2\2\u184b\u1850\5\u01d4\u00eb\2\u184c\u184d\7\u0338\2\2"+
		"\u184d\u184f\5\u01d4\u00eb\2\u184e\u184c\3\2\2\2\u184f\u1852\3\2\2\2\u1850"+
		"\u184e\3\2\2\2\u1850\u1851\3\2\2\2\u1851\u1854\3\2\2\2\u1852\u1850\3\2"+
		"\2\2\u1853\u184a\3\2\2\2\u1853\u1854\3\2\2\2\u1854\u1859\3\2\2\2\u1855"+
		"\u185a\7\u0086\2\2\u1856\u185a\7\u018c\2\2\u1857\u1858\7\u00a4\2\2\u1858"+
		"\u185a\7\u00e2\2\2\u1859\u1855\3\2\2\2\u1859\u1856\3\2\2\2\u1859\u1857"+
		"\3\2\2\2\u185a\u185b\3\2\2\2\u185b\u1860\5\u01d6\u00ec\2\u185c\u185d\7"+
		"\u0338\2\2\u185d\u185f\5\u01d6\u00ec\2\u185e\u185c\3\2\2\2\u185f\u1862"+
		"\3\2\2\2\u1860\u185e\3\2\2\2\u1860\u1861\3\2\2\2\u1861\u1865\3\2\2\2\u1862"+
		"\u1860\3\2\2\2\u1863\u1864\7\u017d\2\2\u1864\u1866\7\16\2\2\u1865\u1863"+
		"\3\2\2\2\u1865\u1866\3\2\2\2\u1866\u186a\3\2\2\2\u1867\u1868\7\u00dd\2"+
		"\2\u1868\u1869\7\u0086\2\2\u1869\u186b\7\u0113\2\2\u186a\u1867\3\2\2\2"+
		"\u186a\u186b\3\2\2\2\u186b\u186c\3\2\2\2\u186c\u186d\7\20\2\2\u186d\u186e"+
		"\5\6\4\2\u186e\u01d3\3\2\2\2\u186f\u1872\7\u01ef\2\2\u1870\u1872\5\u02a2"+
		"\u0152\2\u1871\u186f\3\2\2\2\u1871\u1870\3\2\2\2\u1872\u01d5\3\2\2\2\u1873"+
		"\u1874\t9\2\2\u1874\u01d7\3\2\2\2\u1875\u1878\7I\2\2\u1876\u1877\7\u00ee"+
		"\2\2\u1877\u1879\7\n\2\2\u1878\u1876\3\2\2\2\u1878\u1879\3\2\2\2\u1879"+
		"\u187c\3\2\2\2\u187a\u187c\7\n\2\2\u187b\u1875\3\2\2\2\u187b\u187a\3\2"+
		"\2\2\u187c\u187d\3\2\2\2\u187d\u187e\7\u0164\2\2\u187e\u187f\5\u03bc\u01df"+
		"\2\u187f\u1883\7\u00e6\2\2\u1880\u1881\7\6\2\2\u1881\u1884\7\u0138\2\2"+
		"\u1882\u1884\7U\2\2\u1883\u1880\3\2\2\2\u1883\u1882\3\2\2\2\u1884\u188e"+
		"\3\2\2\2\u1885\u1886\7\u017d\2\2\u1886\u188b\5\u01d4\u00eb\2\u1887\u1888"+
		"\7\u0338\2\2\u1888\u188a\5\u01d4\u00eb\2\u1889\u1887\3\2\2\2\u188a\u188d"+
		"\3\2\2\2\u188b\u1889\3\2\2\2\u188b\u188c\3\2\2\2\u188c\u188f\3\2\2\2\u188d"+
		"\u188b\3\2\2\2\u188e\u1885\3\2\2\2\u188e\u188f\3\2\2\2\u188f\u1890\3\2"+
		"\2\2\u1890\u1891\t:\2\2\u1891\u1896\5\u01da\u00ee\2\u1892\u1893\7\u0338"+
		"\2\2\u1893\u1895\5\u01d6\u00ec\2\u1894\u1892\3\2\2\2\u1895\u1898\3\2\2"+
		"\2\u1896\u1894\3\2\2\2\u1896\u1897\3\2\2\2\u1897\u1899\3\2\2\2\u1898\u1896"+
		"\3\2\2\2\u1899\u189a\7\20\2\2\u189a\u189b\5\6\4\2\u189b\u01d9\3\2\2\2"+
		"\u189c\u189d\5\u03bc\u01df\2\u189d\u01db\3\2\2\2\u189e\u18a1\7I\2\2\u189f"+
		"\u18a0\7\u00ee\2\2\u18a0\u18a2\7\n\2\2\u18a1\u189f\3\2\2\2\u18a1\u18a2"+
		"\3\2\2\2\u18a2\u18a5\3\2\2\2\u18a3\u18a5\7\n\2\2\u18a4\u189e\3\2\2\2\u18a4"+
		"\u18a3\3\2\2\2\u18a5\u18a6\3\2\2\2\u18a6\u18a7\7\u008e\2\2\u18a7\u18b5"+
		"\5\u0386\u01c4\2\u18a8\u18a9\7\u0336\2\2\u18a9\u18ae\5\u01e4\u00f3\2\u18aa"+
		"\u18ab\7\u0338\2\2\u18ab\u18ad\5\u01e4\u00f3\2\u18ac\u18aa\3\2\2\2\u18ad"+
		"\u18b0\3\2\2\2\u18ae\u18ac\3\2\2\2\u18ae\u18af\3\2\2\2\u18af\u18b1\3\2"+
		"\2\2\u18b0\u18ae\3\2\2\2\u18b1\u18b2\7\u0337\2\2\u18b2\u18b6\3\2\2\2\u18b3"+
		"\u18b4\7\u0336\2\2\u18b4\u18b6\7\u0337\2\2\u18b5\u18a8\3\2\2\2\u18b5\u18b3"+
		"\3\2\2\2\u18b6\u18ba\3\2\2\2\u18b7\u18bb\5\u01de\u00f0\2\u18b8\u18bb\5"+
		"\u01e0\u00f1\2\u18b9\u18bb\5\u01e2\u00f2\2\u18ba\u18b7\3\2\2\2\u18ba\u18b8"+
		"\3\2\2\2\u18ba\u18b9\3\2\2\2\u18bb\u18bd\3\2\2\2\u18bc\u18be\7\u0339\2"+
		"\2\u18bd\u18bc\3\2\2\2\u18bd\u18be\3\2\2\2\u18be\u01dd\3\2\2\2\u18bf\u18c0"+
		"\7\u011c\2\2\u18c0\u18ca\7\u0157\2\2\u18c1\u18c2\7\u017d\2\2\u18c2\u18c7"+
		"\5\u01e8\u00f5\2\u18c3\u18c4\7\u0338\2\2\u18c4\u18c6\5\u01e8\u00f5\2\u18c5"+
		"\u18c3\3\2\2\2\u18c6\u18c9\3\2\2\2\u18c7\u18c5\3\2\2\2\u18c7\u18c8\3\2"+
		"\2\2\u18c8\u18cb\3\2\2\2\u18c9\u18c7\3\2\2\2\u18ca\u18c1\3\2\2\2\u18ca"+
		"\u18cb\3\2\2\2\u18cb\u18cd\3\2\2\2\u18cc\u18ce\7\20\2\2\u18cd\u18cc\3"+
		"\2\2\2\u18cd\u18ce\3\2\2\2\u18ce\u18cf\3\2\2\2\u18cf\u18d5\7\u011b\2\2"+
		"\u18d0\u18d1\7\u0336\2\2\u18d1\u18d2\5\u01be\u00e0\2\u18d2\u18d3\7\u0337"+
		"\2\2\u18d3\u18d6\3\2\2\2\u18d4\u18d6\5\u01be\u00e0\2\u18d5\u18d0\3\2\2"+
		"\2\u18d5\u18d4\3\2\2\2\u18d6\u01df\3\2\2\2\u18d7\u18d8\7\u011c\2\2\u18d8"+
		"\u18d9\7\u031b\2\2\u18d9\u18e3\5\u02a6\u0154\2\u18da\u18db\7\u017d\2\2"+
		"\u18db\u18e0\5\u01e8\u00f5\2\u18dc\u18dd\7\u0338\2\2\u18dd\u18df\5\u01e8"+
		"\u00f5\2\u18de\u18dc\3\2\2\2\u18df\u18e2\3\2\2\2\u18e0\u18de\3\2\2\2\u18e0"+
		"\u18e1\3\2\2\2\u18e1\u18e4\3\2\2\2\u18e2\u18e0\3\2\2\2\u18e3\u18da\3\2"+
		"\2\2\u18e3\u18e4\3\2\2\2\u18e4\u18e6\3\2\2\2\u18e5\u18e7\7\20\2\2\u18e6"+
		"\u18e5\3\2\2\2\u18e6\u18e7\3\2\2\2\u18e7\u18e8\3\2\2\2\u18e8\u18ec\7\34"+
		"\2\2\u18e9\u18eb\5\b\5\2\u18ea\u18e9\3\2\2\2\u18eb\u18ee\3\2\2\2\u18ec"+
		"\u18ea\3\2\2\2\u18ec\u18ed\3\2\2\2\u18ed\u18ef\3\2\2\2\u18ee\u18ec\3\2"+
		"\2\2\u18ef\u18f1\7\u011b\2\2\u18f0\u18f2\7\u0339\2\2\u18f1\u18f0\3\2\2"+
		"\2\u18f1\u18f2\3\2\2\2\u18f2\u18f3\3\2\2\2\u18f3\u18f5\7m\2\2\u18f4\u18f6"+
		"\7\u0339\2\2\u18f5\u18f4\3\2\2\2\u18f5\u18f6\3\2\2\2\u18f6\u01e1\3\2\2"+
		"\2\u18f7\u18f8\7\u011c\2\2\u18f8\u1902\5\u03b2\u01da\2\u18f9\u18fa\7\u017d"+
		"\2\2\u18fa\u18ff\5\u01e8\u00f5\2\u18fb\u18fc\7\u0338\2\2\u18fc\u18fe\5"+
		"\u01e8\u00f5\2\u18fd\u18fb\3\2\2\2\u18fe\u1901\3\2\2\2\u18ff\u18fd\3\2"+
		"\2\2\u18ff\u1900\3\2\2\2\u1900\u1903\3\2\2\2\u1901\u18ff\3\2\2\2\u1902"+
		"\u18f9\3\2\2\2\u1902\u1903\3\2\2\2\u1903\u1905\3\2\2\2\u1904\u1906\7\20"+
		"\2\2\u1905\u1904\3\2\2\2\u1905\u1906\3\2\2\2\u1906\u1907\3\2\2\2\u1907"+
		"\u190b\7\34\2\2\u1908\u190a\5\b\5\2\u1909\u1908\3\2\2\2\u190a\u190d\3"+
		"\2\2\2\u190b\u1909\3\2\2\2\u190b\u190c\3\2\2\2\u190c\u190e\3\2\2\2\u190d"+
		"\u190b\3\2\2\2\u190e\u190f\7\u011b\2\2\u190f\u1911\5\u02cc\u0167\2\u1910"+
		"\u1912\7\u0339\2\2\u1911\u1910\3\2\2\2\u1911\u1912\3\2\2\2\u1912\u1913"+
		"\3\2\2\2\u1913\u1914\7m\2\2\u1914\u01e3\3\2\2\2\u1915\u1919\7\u031b\2"+
		"\2\u1916\u1917\5\u03ba\u01de\2\u1917\u1918\7\u0331\2\2\u1918\u191a\3\2"+
		"\2\2\u1919\u1916\3\2\2\2\u1919\u191a\3\2\2\2\u191a\u191c\3\2\2\2\u191b"+
		"\u191d\7\20\2\2\u191c\u191b\3\2\2\2\u191c\u191d\3\2\2\2\u191d\u191e\3"+
		"\2\2\2\u191e\u1920\5\u03b2\u01da\2\u191f\u1921\7\u0174\2\2\u1920\u191f"+
		"\3\2\2\2\u1920\u1921\3\2\2\2\u1921\u1924\3\2\2\2\u1922\u1923\7\u0324\2"+
		"\2\u1923\u1925\5\u03b4\u01db\2\u1924\u1922\3\2\2\2\u1924\u1925\3\2\2\2"+
		"\u1925\u1927\3\2\2\2\u1926\u1928\t;\2\2\u1927\u1926\3\2\2\2\u1927\u1928"+
		"\3\2\2\2\u1928\u01e5\3\2\2\2\u1929\u192d\7\u01ef\2\2\u192a\u192d\7\u02a4"+
		"\2\2\u192b\u192d\5\u02a2\u0152\2\u192c\u1929\3\2\2\2\u192c\u192a\3\2\2"+
		"\2\u192c\u192b\3\2\2\2\u192d\u01e7\3\2\2\2\u192e\u193b\7\u01ef\2\2\u192f"+
		"\u193b\7\u02bf\2\2\u1930\u1931\7\u011c\2\2\u1931\u1932\7\u00e0\2\2\u1932"+
		"\u1933\7\u00e6\2\2\u1933\u1934\7\u00e0\2\2\u1934\u193b\7\u0223\2\2\u1935"+
		"\u1936\7(\2\2\u1936\u1937\7\u00e6\2\2\u1937\u1938\7\u00e0\2\2\u1938\u193b"+
		"\7\u0223\2\2\u1939\u193b\5\u02a2\u0152\2\u193a\u192e\3\2\2\2\u193a\u192f"+
		"\3\2\2\2\u193a\u1930\3\2\2\2\u193a\u1935\3\2\2\2\u193a\u1939\3\2\2\2\u193b"+
		"\u01e9\3\2\2\2\u193c\u193d\7I\2\2\u193d\u193e\7\u014b\2\2\u193e\u193f"+
		"\5\u03ba\u01de\2\u193f\u1940\7\u00e6\2\2\u1940\u1941\5\u032c\u0197\2\u1941"+
		"\u1942\7\u0336\2\2\u1942\u1943\5\u0392\u01ca\2\u1943\u1956\7\u0337\2\2"+
		"\u1944\u194a\7\u017d\2\2\u1945\u194b\7\u020b\2\2\u1946\u1947\7\u02be\2"+
		"\2\u1947\u1948\7\u031c\2\2\u1948\u194b\t<\2\2\u1949\u194b\7\u02de\2\2"+
		"\u194a\u1945\3\2\2\2\u194a\u1946\3\2\2\2\u194a\u1949\3\2\2\2\u194b\u194e"+
		"\3\2\2\2\u194c\u194d\7\u0338\2\2\u194d\u194f\7\u026c\2\2\u194e\u194c\3"+
		"\2\2\2\u194e\u194f\3\2\2\2\u194f\u1954\3\2\2\2\u1950\u1951\7\u0338\2\2"+
		"\u1951\u1952\7\u0221\2\2\u1952\u1953\7\u0324\2\2\u1953\u1955\5\u0396\u01cc"+
		"\2\u1954\u1950\3\2\2\2\u1954\u1955\3\2\2\2\u1955\u1957\3\2\2\2\u1956\u1944"+
		"\3\2\2\2\u1956\u1957\3\2\2\2\u1957\u1959\3\2\2\2\u1958\u195a\7\u0339\2"+
		"\2\u1959\u1958\3\2\2\2\u1959\u195a\3\2\2\2\u195a\u01eb\3\2\2\2\u195b\u195d"+
		"\7\u016d\2\2\u195c\u195e\t=\2\2\u195d\u195c\3\2\2\2\u195d\u195e\3\2\2"+
		"\2\u195e\u195f\3\2\2\2\u195f\u1960\7\u014b\2\2\u1960\u1962\5\u0380\u01c1"+
		"\2\u1961\u1963\5\u03ba\u01de\2\u1962\u1961\3\2\2\2\u1962\u1963\3\2\2\2"+
		"\u1963\u1967\3\2\2\2\u1964\u1965\7\u0302\2\2\u1965\u1966\7\u031c\2\2\u1966"+
		"\u1968\7\u0173\2\2\u1967\u1964\3\2\2\2\u1967\u1968\3\2\2\2\u1968\u01ed"+
		"\3\2\2\2\u1969\u196a\7I\2\2\u196a\u196b\7\u0157\2\2\u196b\u196c\5\u0382"+
		"\u01c2\2\u196c\u196d\7\u0336\2\2\u196d\u196f\5\u02ac\u0157\2\u196e\u1970"+
		"\7\u0338\2\2\u196f\u196e\3\2\2\2\u196f\u1970\3\2\2\2\u1970\u1971\3\2\2"+
		"\2\u1971\u1974\7\u0337\2\2\u1972\u1973\7\u023b\2\2\u1973\u1975\5\u03bc"+
		"\u01df\2\u1974\u1972\3\2\2\2\u1974\u1975\3\2\2\2\u1975\u1979\3\2\2\2\u1976"+
		"\u1978\5\u01f0\u00f9\2\u1977\u1976\3\2\2\2\u1978\u197b\3\2\2\2\u1979\u1977"+
		"\3\2\2\2\u1979\u197a\3\2\2\2\u197a\u197f\3\2\2\2\u197b\u1979\3\2\2\2\u197c"+
		"\u197d\7\u00e6\2\2\u197d\u1980\5\u03ba\u01de\2\u197e\u1980\7Z\2\2\u197f"+
		"\u197c\3\2\2\2\u197f\u197e\3\2\2\2\u197f\u1980\3\2\2\2\u1980\u1984\3\2"+
		"\2\2\u1981\u1982\7\u02ed\2\2\u1982\u1985\5\u03ba\u01de\2\u1983\u1985\7"+
		"Z\2\2\u1984\u1981\3\2\2\2\u1984\u1983\3\2\2\2\u1984\u1985\3\2\2\2\u1985"+
		"\u1987\3\2\2\2\u1986\u1988\7\u0339\2\2\u1987\u1986\3\2\2\2\u1987\u1988"+
		"\3\2\2\2\u1988\u01ef\3\2\2\2\u1989\u199d\7\u017d\2\2\u198a\u198b\7\u0336"+
		"\2\2\u198b\u1990\5\u02be\u0160\2\u198c\u198d\7\u0338\2\2\u198d\u198f\5"+
		"\u02be\u0160\2\u198e\u198c\3\2\2\2\u198f\u1992\3\2\2\2\u1990\u198e\3\2"+
		"\2\2\u1990\u1991\3\2\2\2\u1991\u1993\3\2\2\2\u1992\u1990\3\2\2\2\u1993"+
		"\u1994\7\u0337\2\2\u1994\u199e\3\2\2\2\u1995\u199a\5\u02be\u0160\2\u1996"+
		"\u1997\7\u0338\2\2\u1997\u1999\5\u02be\u0160\2\u1998\u1996\3\2\2\2\u1999"+
		"\u199c\3\2\2\2\u199a\u1998\3\2\2\2\u199a\u199b\3\2\2\2\u199b\u199e\3\2"+
		"\2\2\u199c\u199a\3\2\2\2\u199d\u198a\3\2\2\2\u199d\u1995\3\2\2\2\u199e"+
		"\u01f1\3\2\2\2\u199f\u19a0\7I\2\2\u19a0\u19a1\7\u0176\2\2\u19a1\u19a6"+
		"\5\u0384\u01c3\2\u19a2\u19a3\7\u0336\2\2\u19a3\u19a4\5\u0392\u01ca\2\u19a4"+
		"\u19a5\7\u0337\2\2\u19a5\u19a7\3\2\2\2\u19a6\u19a2\3\2\2\2\u19a6\u19a7"+
		"\3\2\2\2\u19a7\u19b1\3\2\2\2\u19a8\u19a9\7\u017d\2\2\u19a9\u19ae\5\u01f4"+
		"\u00fb\2\u19aa\u19ab\7\u0338\2\2\u19ab\u19ad\5\u01f4\u00fb\2\u19ac\u19aa"+
		"\3\2\2\2\u19ad\u19b0\3\2\2\2\u19ae\u19ac\3\2\2\2\u19ae\u19af\3\2\2\2\u19af"+
		"\u19b2\3\2\2\2\u19b0\u19ae\3\2\2\2\u19b1\u19a8\3\2\2\2\u19b1\u19b2\3\2"+
		"\2\2\u19b2\u19b3\3\2\2\2\u19b3\u19b4\7\20\2\2\u19b4\u19b8\5\u01be\u00e0"+
		"\2\u19b5\u19b6\7\u017d\2\2\u19b6\u19b7\7.\2\2\u19b7\u19b9\7\u00ed\2\2"+
		"\u19b8\u19b5\3\2\2\2\u19b8\u19b9\3\2\2\2\u19b9\u19bb\3\2\2\2\u19ba\u19bc"+
		"\7\u0339\2\2\u19bb\u19ba\3\2\2\2\u19bb\u19bc\3\2\2\2\u19bc\u01f3\3\2\2"+
		"\2\u19bd\u19be\t>\2\2\u19be\u01f5\3\2\2\2\u19bf\u19c0\7\n\2\2\u19c0\u19c1"+
		"\7\u0157\2\2\u19c1\u19ed\5\u0382\u01c2\2\u19c2\u19c3\7\u013e\2\2\u19c3"+
		"\u19c4\7\u0336\2\2\u19c4\u19c5\7\u023c\2\2\u19c5\u19c6\7\u0324\2\2\u19c6"+
		"\u19c7\t?\2\2\u19c7\u19ee\7\u0337\2\2\u19c8\u19c9\7\4\2\2\u19c9\u19ee"+
		"\5\u02ae\u0158\2\u19ca\u19cb\7\n\2\2\u19cb\u19cc\78\2\2\u19cc\u19ee\5"+
		"\u02b0\u0159\2\u19cd\u19ce\7h\2\2\u19ce\u19cf\78\2\2\u19cf\u19ee\5\u03ba"+
		"\u01de\2\u19d0\u19d1\7h\2\2\u19d1\u19d2\7=\2\2\u19d2\u19ee\5\u03ba\u01de"+
		"\2\u19d3\u19d4\7\u017d\2\2\u19d4\u19d5\7.\2\2\u19d5\u19d6\7\4\2\2\u19d6"+
		"\u19d7\7=\2\2\u19d7\u19d8\5\u03ba\u01de\2\u19d8\u19d9\7\u0089\2\2\u19d9"+
		"\u19da\7\u00ad\2\2\u19da\u19db\7\u0336\2\2\u19db\u19dc\5\u0392\u01ca\2"+
		"\u19dc\u19dd\7\u0337\2\2\u19dd\u19de\7\u010f\2\2\u19de\u19df\5\u0382\u01c2"+
		"\2\u19df\u19e0\7\u0336\2\2\u19e0\u19e1\5\u0392\u01ca\2\u19e1\u19e2\7\u0337"+
		"\2\2\u19e2\u19ee\3\2\2\2\u19e3\u19e4\7.\2\2\u19e4\u19e5\7=\2\2\u19e5\u19ee"+
		"\5\u03ba\u01de\2\u19e6\u19e7\t\27\2\2\u19e7\u19e9\7\u0164\2\2\u19e8\u19ea"+
		"\5\u03ba\u01de\2\u19e9\u19e8\3\2\2\2\u19e9\u19ea\3\2\2\2\u19ea\u19ee\3"+
		"\2\2\2\u19eb\u19ec\7\u02a2\2\2\u19ec\u19ee\5\u01f0\u00f9\2\u19ed\u19c2"+
		"\3\2\2\2\u19ed\u19c8\3\2\2\2\u19ed\u19ca\3\2\2\2\u19ed\u19cd\3\2\2\2\u19ed"+
		"\u19d0\3\2\2\2\u19ed\u19d3\3\2\2\2\u19ed\u19e3\3\2\2\2\u19ed\u19e6\3\2"+
		"\2\2\u19ed\u19eb\3\2\2\2\u19ee\u19f0\3\2\2\2\u19ef\u19f1\7\u0339\2\2\u19f0"+
		"\u19ef\3\2\2\2\u19f0\u19f1\3\2\2\2\u19f1\u01f7\3\2\2\2\u19f2\u19f3\7\n"+
		"\2\2\u19f3\u19f6\7U\2\2\u19f4\u19f7\5\u03ba\u01de\2\u19f5\u19f7\7K\2\2"+
		"\u19f6\u19f4\3\2\2\2\u19f6\u19f5\3\2\2\2\u19f7\u1a04\3\2\2\2\u19f8\u19f9"+
		"\7\u025c\2\2\u19f9\u19fa\7\u025f\2\2\u19fa\u19fb\7\u0324\2\2\u19fb\u1a05"+
		"\5\u03ba\u01de\2\u19fc\u19fd\7\67\2\2\u19fd\u1a05\5\u03ba\u01de\2\u19fe"+
		"\u19ff\7\u013e\2\2\u19ff\u1a02\5\u01fa\u00fe\2\u1a00\u1a01\7\u017d\2\2"+
		"\u1a01\u1a03\5\u0240\u0121\2\u1a02\u1a00\3\2\2\2\u1a02\u1a03\3\2\2\2\u1a03"+
		"\u1a05\3\2\2\2\u1a04\u19f8\3\2\2\2\u1a04\u19fc\3\2\2\2\u1a04\u19fe\3\2"+
		"\2\2\u1a05\u1a07\3\2\2\2\u1a06\u1a08\7\u0339\2\2\u1a07\u1a06\3\2\2\2\u1a07"+
		"\u1a08\3\2\2\2\u1a08\u01f9\3\2\2\2\u1a09\u1a21\5\u01fc\u00ff\2\u1a0a\u1a21"+
		"\5\u01fe\u0100\2\u1a0b\u1a21\5\u0202\u0102\2\u1a0c\u1a21\5\u0204\u0103"+
		"\2\u1a0d\u1a21\5\u0208\u0105\2\u1a0e\u1a21\5\u0222\u0112\2\u1a0f\u1a21"+
		"\5\u0224\u0113\2\u1a10\u1a21\5\u0226\u0114\2\u1a11\u1a21\5\u0228\u0115"+
		"\2\u1a12\u1a21\5\u022a\u0116\2\u1a13\u1a21\5\u022c\u0117\2\u1a14\u1a21"+
		"\5\u022e\u0118\2\u1a15\u1a16\7\u0201\2\2\u1a16\u1a21\5\u0372\u01ba\2\u1a17"+
		"\u1a21\5\u0230\u0119\2\u1a18\u1a21\5\u0232\u011a\2\u1a19\u1a21\5\u0234"+
		"\u011b\2\u1a1a\u1a21\5\u0236\u011c\2\u1a1b\u1a21\5\u0238\u011d\2\u1a1c"+
		"\u1a21\5\u023a\u011e\2\u1a1d\u1a21\5\u023c\u011f\2\u1a1e\u1a21\5\u023e"+
		"\u0120\2\u1a1f\u1a21\5\u0240\u0121\2\u1a20\u1a09\3\2\2\2\u1a20\u1a0a\3"+
		"\2\2\2\u1a20\u1a0b\3\2\2\2\u1a20\u1a0c\3\2\2\2\u1a20\u1a0d\3\2\2\2\u1a20"+
		"\u1a0e\3\2\2\2\u1a20\u1a0f\3\2\2\2\u1a20\u1a10\3\2\2\2\u1a20\u1a11\3\2"+
		"\2\2\u1a20\u1a12\3\2\2\2\u1a20\u1a13\3\2\2\2\u1a20\u1a14\3\2\2\2\u1a20"+
		"\u1a15\3\2\2\2\u1a20\u1a17\3\2\2\2\u1a20\u1a18\3\2\2\2\u1a20\u1a19\3\2"+
		"\2\2\u1a20\u1a1a\3\2\2\2\u1a20\u1a1b\3\2\2\2\u1a20\u1a1c\3\2\2\2\u1a20"+
		"\u1a1d\3\2\2\2\u1a20\u1a1e\3\2\2\2\u1a20\u1a1f\3\2\2\2\u1a21\u01fb\3\2"+
		"\2\2\u1a22\u1a23\7\u019e\2\2\u1a23\u1a34\5\u0396\u01cc\2\u1a24\u1a25\7"+
		"\u019f\2\2\u1a25\u1a34\7\u00e3\2\2\u1a26\u1a2b\7\u00e6\2\2\u1a27\u1a28"+
		"\7\u0221\2\2\u1a28\u1a29\7\u0324\2\2\u1a29\u1a2c\7\u00e6\2\2\u1a2a\u1a2c"+
		"\7\u00e3\2\2\u1a2b\u1a27\3\2\2\2\u1a2b\u1a2a\3\2\2\2\u1a2c\u1a34\3\2\2"+
		"\2\u1a2d\u1a2e\7\u01a0\2\2\u1a2e\u1a34\5\u0396\u01cc\2\u1a2f\u1a30\7\u01a1"+
		"\2\2\u1a30\u1a34\5\u0396\u01cc\2\u1a31\u1a32\7\u01a2\2\2\u1a32\u1a34\t"+
		"\t\2\2\u1a33\u1a22\3\2\2\2\u1a33\u1a24\3\2\2\2\u1a33\u1a26\3\2\2\2\u1a33"+
		"\u1a2d\3\2\2\2\u1a33\u1a2f\3\2\2\2\u1a33\u1a31\3\2\2\2\u1a34\u01fd\3\2"+
		"\2\2\u1a35\u1a36\7\u01b5\2\2\u1a36\u1a46\7\u0324\2\2\u1a37\u1a47\7\u00e3"+
		"\2\2\u1a38\u1a43\7\u00e6\2\2\u1a39\u1a3e\5\u0200\u0101\2\u1a3a\u1a3b\7"+
		"\u0338\2\2\u1a3b\u1a3d\5\u0200\u0101\2\u1a3c\u1a3a\3\2\2\2\u1a3d\u1a40"+
		"\3\2\2\2\u1a3e\u1a3c\3\2\2\2\u1a3e\u1a3f\3\2\2\2\u1a3f\u1a42\3\2\2\2\u1a40"+
		"\u1a3e\3\2\2\2\u1a41\u1a39\3\2\2\2\u1a42\u1a45\3\2\2\2\u1a43\u1a41\3\2"+
		"\2\2\u1a43\u1a44\3\2\2\2\u1a44\u1a47\3\2\2\2\u1a45\u1a43\3\2\2\2\u1a46"+
		"\u1a37\3\2\2\2\u1a46\u1a38\3\2\2\2\u1a47\u01ff\3\2\2\2\u1a48\u1a49\7\u019d"+
		"\2\2\u1a49\u1a4a\7\u0324\2\2\u1a4a\u1a4f\5\u0396\u01cc\2\u1a4b\u1a4c\7"+
		"\u01b4\2\2\u1a4c\u1a4d\7\u0324\2\2\u1a4d\u1a4f\t@\2\2\u1a4e\u1a48\3\2"+
		"\2\2\u1a4e\u1a4b\3\2\2\2\u1a4f\u0201\3\2\2\2\u1a50\u1a51\7>\2\2\u1a51"+
		"\u1a52\7\u0324\2\2\u1a52\u1a53\t\67\2\2\u1a53\u0203\3\2\2\2\u1a54\u1a55"+
		"\7\u01ca\2\2\u1a55\u1a59\5\u0396\u01cc\2\u1a56\u1a57\7\u01cb\2\2\u1a57"+
		"\u1a59\tA\2\2\u1a58\u1a54\3\2\2\2\u1a58\u1a56\3\2\2\2\u1a59\u0205\3\2"+
		"\2\2\u1a5a\u1a5b\7\n\2\2\u1a5b\u1a5c\7n\2\2\u1a5c\u1a5f\5\u03ba\u01de"+
		"\2\u1a5d\u1a5e\7\24\2\2\u1a5e\u1a60\5\u03ba\u01de\2\u1a5f\u1a5d\3\2\2"+
		"\2\u1a5f\u1a60\3\2\2\2\u1a60\u1a68\3\2\2\2\u1a61\u1a62\7\u014c\2\2\u1a62"+
		"\u1a66\7\u0324\2\2\u1a63\u1a67\7\u014f\2\2\u1a64\u1a67\7\u0152\2\2\u1a65"+
		"\u1a67\7\u01e5\2\2\u1a66\u1a63\3\2\2\2\u1a66\u1a64\3\2\2\2\u1a66\u1a65"+
		"\3\2\2\2\u1a67\u1a69\3\2\2\2\u1a68\u1a61\3\2\2\2\u1a68\u1a69\3\2\2\2\u1a69"+
		"\u1a6a\3\2\2\2\u1a6a\u1a6b\7\20\2\2\u1a6b\u1a6c\7\u015b\2\2\u1a6c\u1a6d"+
		"\7\u0336\2\2\u1a6d\u1a6e\7\u00b9\2\2\u1a6e\u1a6f\7\u0324\2\2\u1a6f\u1a74"+
		"\7\u031c\2\2\u1a70\u1a71\7\u0338\2\2\u1a71\u1a72\7\u00b8\2\2\u1a72\u1a73"+
		"\7\u0324\2\2\u1a73\u1a75\tB\2\2\u1a74\u1a70\3\2\2\2\u1a74\u1a75\3\2\2"+
		"\2\u1a75\u1a76\3\2\2\2\u1a76\u1ae4\7\u0337\2\2\u1a77\u1ae5\7\u02fa\2\2"+
		"\u1a78\u1a79\7\u0086\2\2\u1a79\u1a7a\7\u013a\2\2\u1a7a\u1a7b\7\u0336\2"+
		"\2\u1a7b\u1a7c\7\25\2\2\u1a7c\u1a8d\7\u0324\2\2\u1a7d\u1a7f\7\u017c\2"+
		"\2\u1a7e\u1a80\tC\2\2\u1a7f\u1a7e\3\2\2\2\u1a7f\u1a80\3\2\2\2\u1a80\u1a83"+
		"\3\2\2\2\u1a81\u1a82\7+\2\2\u1a82\u1a84\5\u03ba\u01de\2\u1a83\u1a81\3"+
		"\2\2\2\u1a83\u1a84\3\2\2\2\u1a84\u1a8e\3\2\2\2\u1a85\u1a86\7+\2\2\u1a86"+
		"\u1a88\5\u03ba\u01de\2\u1a87\u1a89\7\u017c\2\2\u1a88\u1a87\3\2\2\2\u1a88"+
		"\u1a89\3\2\2\2\u1a89\u1a8b\3\2\2\2\u1a8a\u1a8c\tC\2\2\u1a8b\u1a8a\3\2"+
		"\2\2\u1a8b\u1a8c\3\2\2\2\u1a8c\u1a8e\3\2\2\2\u1a8d\u1a7d\3\2\2\2\u1a8d"+
		"\u1a85\3\2\2\2\u1a8e\u1aa0\3\2\2\2\u1a8f\u1a91\7\u0338\2\2\u1a90\u1a8f"+
		"\3\2\2\2\u1a90\u1a91\3\2\2\2\u1a91\u1a92\3\2\2\2\u1a92\u1a93\7\u01ef\2"+
		"\2\u1a93\u1a94\7\u0324\2\2\u1a94\u1a9e\tD\2\2\u1a95\u1a9c\7\u018e\2\2"+
		"\u1a96\u1a9d\7\5\2\2\u1a97\u1a9d\7\u029b\2\2\u1a98\u1a99\7\5\2\2\u1a99"+
		"\u1a9d\7\u029b\2\2\u1a9a\u1a9b\7\u029b\2\2\u1a9b\u1a9d\7\5\2\2\u1a9c\u1a96"+
		"\3\2\2\2\u1a9c\u1a97\3\2\2\2\u1a9c\u1a98\3\2\2\2\u1a9c\u1a9a\3\2\2\2\u1a9d"+
		"\u1a9f\3\2\2\2\u1a9e\u1a95\3\2\2\2\u1a9e\u1a9f\3\2\2\2\u1a9f\u1aa1\3\2"+
		"\2\2\u1aa0\u1a90\3\2\2\2\u1aa0\u1aa1\3\2\2\2\u1aa1\u1aa8\3\2\2\2\u1aa2"+
		"\u1aa4\7\u0338\2\2\u1aa3\u1aa2\3\2\2\2\u1aa3\u1aa4\3\2\2\2\u1aa4\u1aa5"+
		"\3\2\2\2\u1aa5\u1aa6\7\u00cb\2\2\u1aa6\u1aa7\7\u0324\2\2\u1aa7\u1aa9\t"+
		"E\2\2\u1aa8\u1aa3\3\2\2\2\u1aa8\u1aa9\3\2\2\2\u1aa9\u1ab0\3\2\2\2\u1aaa"+
		"\u1aac\7\u0338\2\2\u1aab\u1aaa\3\2\2\2\u1aab\u1aac\3\2\2\2\u1aac\u1aad"+
		"\3\2\2\2\u1aad\u1aae\7\u00cc\2\2\u1aae\u1aaf\7\u0324\2\2\u1aaf\u1ab1\7"+
		"\u031c\2\2\u1ab0\u1aab\3\2\2\2\u1ab0\u1ab1\3\2\2\2\u1ab1\u1ab2\3\2\2\2"+
		"\u1ab2\u1ae5\7\u0337\2\2\u1ab3\u1ab4\7\u0086\2\2\u1ab4\u1ab5\7V\2\2\u1ab5"+
		"\u1ab6\7\u0336\2\2\u1ab6\u1ab7\7\25\2\2\u1ab7\u1ac8\7\u0324\2\2\u1ab8"+
		"\u1aba\7\u017c\2\2\u1ab9\u1abb\tC\2\2\u1aba\u1ab9\3\2\2\2\u1aba\u1abb"+
		"\3\2\2\2\u1abb\u1abe\3\2\2\2\u1abc\u1abd\7+\2\2\u1abd\u1abf\5\u03ba\u01de"+
		"\2\u1abe\u1abc\3\2\2\2\u1abe\u1abf\3\2\2\2\u1abf\u1ac9\3\2\2\2\u1ac0\u1ac1"+
		"\7+\2\2\u1ac1\u1ac3\5\u03ba\u01de\2\u1ac2\u1ac4\7\u017c\2\2\u1ac3\u1ac2"+
		"\3\2\2\2\u1ac3\u1ac4\3\2\2\2\u1ac4\u1ac6\3\2\2\2\u1ac5\u1ac7\tC\2\2\u1ac6"+
		"\u1ac5\3\2\2\2\u1ac6\u1ac7\3\2\2\2\u1ac7\u1ac9\3\2\2\2\u1ac8\u1ab8\3\2"+
		"\2\2\u1ac8\u1ac0\3\2\2\2\u1ac9\u1adb\3\2\2\2\u1aca\u1acc\7\u0338\2\2\u1acb"+
		"\u1aca\3\2\2\2\u1acb\u1acc\3\2\2\2\u1acc\u1acd\3\2\2\2\u1acd\u1ace\7\u01ef"+
		"\2\2\u1ace\u1acf\7\u0324\2\2\u1acf\u1ad9\tD\2\2\u1ad0\u1ad7\7\u018e\2"+
		"\2\u1ad1\u1ad8\7\5\2\2\u1ad2\u1ad8\7\u029b\2\2\u1ad3\u1ad4\7\5\2\2\u1ad4"+
		"\u1ad8\7\u029b\2\2\u1ad5\u1ad6\7\u029b\2\2\u1ad6\u1ad8\7\5\2\2\u1ad7\u1ad1"+
		"\3\2\2\2\u1ad7\u1ad2\3\2\2\2\u1ad7\u1ad3\3\2\2\2\u1ad7\u1ad5\3\2\2\2\u1ad8"+
		"\u1ada\3\2\2\2\u1ad9\u1ad0\3\2\2\2\u1ad9\u1ada\3\2\2\2\u1ada\u1adc\3\2"+
		"\2\2\u1adb\u1acb\3\2\2\2\u1adb\u1adc\3\2\2\2\u1adc\u1ade\3\2\2\2\u1add"+
		"\u1adf\7\u0338\2\2\u1ade\u1add\3\2\2\2\u1ade\u1adf\3\2\2\2\u1adf\u1ae0"+
		"\3\2\2\2\u1ae0\u1ae1\7\u0122\2\2\u1ae1\u1ae2\7\u0324\2\2\u1ae2\u1ae3\t"+
		"F\2\2\u1ae3\u1ae5\7\u0337\2\2\u1ae4\u1a77\3\2\2\2\u1ae4\u1a78\3\2\2\2"+
		"\u1ae4\u1ab3\3\2\2\2\u1ae5\u0207\3\2\2\2\u1ae6\u1ae7\5\u020a\u0106\2\u1ae7"+
		"\u0209\3\2\2\2\u1ae8\u1ae9\5\u020c\u0107\2\u1ae9\u1aea\5\u0212\u010a\2"+
		"\u1aea\u1aef\3\2\2\2\u1aeb\u1aec\5\u020e\u0108\2\u1aec\u1aed\5\u0214\u010b"+
		"\2\u1aed\u1aef\3\2\2\2\u1aee\u1ae8\3\2\2\2\u1aee\u1aeb\3\2\2\2\u1aef\u020b"+
		"\3\2\2\2\u1af0\u1af1\7\u0283\2\2\u1af1\u020d\3\2\2\2\u1af2\u1af3\7\u0180"+
		"\2\2\u1af3\u020f\3\2\2\2\u1af4\u1af5\7\u0324\2\2\u1af5\u0211\3\2\2\2\u1af6"+
		"\u1af7\5\u0210\u0109\2\u1af7\u1af8\5\u0218\u010d\2\u1af8\u1b03\3\2\2\2"+
		"\u1af9\u1b03\7~\2\2\u1afa\u1b03\7\u0088\2\2\u1afb\u1b03\7\u00e3\2\2\u1afc"+
		"\u1b03\7\u0119\2\2\u1afd\u1afe\7\u012a\2\2\u1afe\u1b03\tG\2\2\u1aff\u1b03"+
		"\7\u02e6\2\2\u1b00\u1b01\7\u02f1\2\2\u1b01\u1b03\7\u031c\2\2\u1b02\u1af6"+
		"\3\2\2\2\u1b02\u1af9\3\2\2\2\u1b02\u1afa\3\2\2\2\u1b02\u1afb\3\2\2\2\u1b02"+
		"\u1afc\3\2\2\2\u1b02\u1afd\3\2\2\2\u1b02\u1aff\3\2\2\2\u1b02\u1b00\3\2"+
		"\2\2\u1b03\u0213\3\2\2\2\u1b04\u1b05\5\u0210\u0109\2\u1b05\u1b06\5\u0216"+
		"\u010c\2\u1b06\u1b09\3\2\2\2\u1b07\u1b09\7\u00e3\2\2\u1b08\u1b04\3\2\2"+
		"\2\u1b08\u1b07\3\2\2\2\u1b09\u0215\3\2\2\2\u1b0a\u1b0b\5\u0218\u010d\2"+
		"\u1b0b\u0217\3\2\2\2\u1b0c\u1b0d\5\u021c\u010f\2\u1b0d\u1b0e\5\u0220\u0111"+
		"\2\u1b0e\u1b0f\5\u021a\u010e\2\u1b0f\u1b10\5\u021e\u0110\2\u1b10\u0219"+
		"\3\2\2\2\u1b11\u1b12\7\u033a\2\2\u1b12\u021b\3\2\2\2\u1b13\u1b14\7\u015b"+
		"\2\2\u1b14\u1b15\7\u033a\2\2\u1b15\u1b16\7g\2\2\u1b16\u021d\3\2\2\2\u1b17"+
		"\u1b18\7\u031c\2\2\u1b18\u021f\3\2\2\2\u1b19\u1b1a\5\u03ba\u01de\2\u1b1a"+
		"\u1b1b\7\u0331\2\2\u1b1b\u1b1c\5\u0220\u0111\2\u1b1c\u1b24\3\2\2\2\u1b1d"+
		"\u1b1e\5\u03ba\u01de\2\u1b1e\u1b1f\7\u0331\2\2\u1b1f\u1b22\3\2\2\2\u1b20"+
		"\u1b22\5\u03ba\u01de\2\u1b21\u1b1d\3\2\2\2\u1b21\u1b20\3\2\2\2\u1b22\u1b24"+
		"\3\2\2\2\u1b23\u1b19\3\2\2\2\u1b23\u1b21\3\2\2\2\u1b24\u0221\3\2\2\2\u1b25"+
		"\u1b26\7\u01cc\2\2\u1b26\u1b27\5\u0396\u01cc\2\u1b27\u0223\3\2\2\2\u1b28"+
		"\u1b29\7\u01ef\2\2\u1b29\u1b2a\5\u0396\u01cc\2\u1b2a\u0225\3\2\2\2\u1b2b"+
		"\u1b2c\tH\2\2\u1b2c\u0227\3\2\2\2\u1b2d\u1b2e\tI\2\2\u1b2e\u0229\3\2\2"+
		"\2\u1b2f\u1b30\tJ\2\2\u1b30\u022b\3\2\2\2\u1b31\u1b32\7\u01d9\2\2\u1b32"+
		"\u1b33\7\u0324\2\2\u1b33\u1b34\tK\2\2\u1b34\u022d\3\2\2\2\u1b35\u1b36"+
		"\7\u01d2\2\2\u1b36\u1b4f\5\u0396\u01cc\2\u1b37\u1b38\7\u02f8\2\2\u1b38"+
		"\u1b4f\5\u0396\u01cc\2\u1b39\u1b3a\7\u01d7\2\2\u1b3a\u1b3d\7\u0324\2\2"+
		"\u1b3b\u1b3e\5\u03ba\u01de\2\u1b3c\u1b3e\7\u0320\2\2\u1b3d\u1b3b\3\2\2"+
		"\2\u1b3d\u1b3c\3\2\2\2\u1b3e\u1b4f\3\2\2\2\u1b3f\u1b40\7\u01d6\2\2\u1b40"+
		"\u1b43\7\u0324\2\2\u1b41\u1b44\5\u03ba\u01de\2\u1b42\u1b44\7\u0320\2\2"+
		"\u1b43\u1b41\3\2\2\2\u1b43\u1b42\3\2\2\2\u1b44\u1b4f\3\2\2\2\u1b45\u1b46"+
		"\7\u0260\2\2\u1b46\u1b47\7\u0324\2\2\u1b47\u1b4f\t\t\2\2\u1b48\u1b49\7"+
		"\u02f5\2\2\u1b49\u1b4a\7\u0324\2\2\u1b4a\u1b4f\t\t\2\2\u1b4b\u1b4c\7\u02fb"+
		"\2\2\u1b4c\u1b4d\7\u0324\2\2\u1b4d\u1b4f\7\u031c\2\2\u1b4e\u1b35\3\2\2"+
		"\2\u1b4e\u1b37\3\2\2\2\u1b4e\u1b39\3\2\2\2\u1b4e\u1b3f\3\2\2\2\u1b4e\u1b45"+
		"\3\2\2\2\u1b4e\u1b48\3\2\2\2\u1b4e\u1b4b\3\2\2\2\u1b4f\u022f\3\2\2\2\u1b50"+
		"\u1b59\7\u0215\2\2\u1b51\u1b52\7\u01a3\2\2\u1b52\u1b53\7\u0093\2\2\u1b53"+
		"\u1b54\7\u0324\2\2\u1b54\u1b57\5\u03ba\u01de\2\u1b55\u1b57\7\u00e3\2\2"+
		"\u1b56\u1b51\3\2\2\2\u1b56\u1b55\3\2\2\2\u1b57\u1b5a\3\2\2\2\u1b58\u1b5a"+
		"\tL\2\2\u1b59\u1b56\3\2\2\2\u1b59\u1b58\3\2\2\2\u1b5a\u0231\3\2\2\2\u1b5b"+
		"\u1b5c\7\u025a\2\2\u1b5c\u1b5d\t\t\2\2\u1b5d\u0233\3\2\2\2\u1b5e\u1b5f"+
		"\7\u0280\2\2\u1b5f\u1b60\tM\2\2\u1b60\u0235\3\2\2\2\u1b61\u1b62\7\u02a5"+
		"\2\2\u1b62\u1b68\tN\2\2\u1b63\u1b64\7\u02f4\2\2\u1b64\u1b68\5\u0396\u01cc"+
		"\2\u1b65\u1b66\7\u027f\2\2\u1b66\u1b68\tO\2\2\u1b67\u1b61\3\2\2\2\u1b67"+
		"\u1b63\3\2\2\2\u1b67\u1b65\3\2\2\2\u1b68\u0237\3\2\2\2\u1b69\u1b70\7\u01ed"+
		"\2\2\u1b6a\u1b70\7\u01e4\2\2\u1b6b\u1b70\7\u0262\2\2\u1b6c\u1b70\7\u01f1"+
		"\2\2\u1b6d\u1b6e\7\u0219\2\2\u1b6e\u1b70\5\u0396\u01cc\2\u1b6f\u1b69\3"+
		"\2\2\2\u1b6f\u1b6a\3\2\2\2\u1b6f\u1b6b\3\2\2\2\u1b6f\u1b6c\3\2\2\2\u1b6f"+
		"\u1b6d\3\2\2\2\u1b70\u0239\3\2\2\2\u1b71\u1b72\7\u0190\2\2\u1b72\u1b77"+
		"\5\u0396\u01cc\2\u1b73\u1b74\7\u029d\2\2\u1b74\u1b77\t\t\2\2\u1b75\u1b77"+
		"\t\t\2\2\u1b76\u1b71\3\2\2\2\u1b76\u1b73\3\2\2\2\u1b76\u1b75\3\2\2\2\u1b77"+
		"\u023b\3\2\2\2\u1b78\u1b79\7\u0192\2\2\u1b79\u1b8e\5\u0396\u01cc\2\u1b7a"+
		"\u1b7b\7\u0193\2\2\u1b7b\u1b8e\5\u0396\u01cc\2\u1b7c\u1b7d\7\u0194\2\2"+
		"\u1b7d\u1b8e\5\u0396\u01cc\2\u1b7e\u1b7f\7\u0195\2\2\u1b7f\u1b8e\5\u0396"+
		"\u01cc\2\u1b80\u1b81\7\u0198\2\2\u1b81\u1b8e\5\u0396\u01cc\2\u1b82\u1b83"+
		"\7\u01bc\2\2\u1b83\u1b84\7\u0324\2\2\u1b84\u1b8e\7\u031c\2\2\u1b85\u1b86"+
		"\7\u01be\2\2\u1b86\u1b8e\5\u0396\u01cc\2\u1b87\u1b88\7\u0272\2\2\u1b88"+
		"\u1b8e\5\u0396\u01cc\2\u1b89\u1b8a\7\u0297\2\2\u1b8a\u1b8e\5\u0396\u01cc"+
		"\2\u1b8b\u1b8c\7\u02a6\2\2\u1b8c\u1b8e\5\u0396\u01cc\2\u1b8d\u1b78\3\2"+
		"\2\2\u1b8d\u1b7a\3\2\2\2\u1b8d\u1b7c\3\2\2\2\u1b8d\u1b7e\3\2\2\2\u1b8d"+
		"\u1b80\3\2\2\2\u1b8d\u1b82\3\2\2\2\u1b8d\u1b85\3\2\2\2\u1b8d\u1b87\3\2"+
		"\2\2\u1b8d\u1b89\3\2\2\2\u1b8d\u1b8b\3\2\2\2\u1b8e\u023d\3\2\2\2\u1b8f"+
		"\u1b90\7\u02eb\2\2\u1b90\u1b91\7\u0324\2\2\u1b91\u1b92\7\u031c\2\2\u1b92"+
		"\u1b93\tP\2\2\u1b93\u023f\3\2\2\2\u1b94\u1b95\7\u0121\2\2\u1b95\u1b96"+
		"\7\u018c\2\2\u1b96\u1b9b\7\u031c\2\2\u1b97\u1b98\7\u0121\2\2\u1b98\u1b9b"+
		"\7\u021d\2\2\u1b99\u1b9b\7\u0267\2\2\u1b9a\u1b94\3\2\2\2\u1b9a\u1b97\3"+
		"\2\2\2\u1b9a\u1b99\3\2\2\2\u1b9b\u0241\3\2\2\2\u1b9c\u1b9d\7h\2\2\u1b9d"+
		"\u1ba0\7\u009f\2\2\u1b9e\u1b9f\7\u009a\2\2\u1b9f\u1ba1\7x\2\2\u1ba0\u1b9e"+
		"\3\2\2\2\u1ba0\u1ba1\3\2\2\2\u1ba1\u1bb2\3\2\2\2\u1ba2\u1ba7\5\u0244\u0123"+
		"\2\u1ba3\u1ba4\7\u0338\2\2\u1ba4\u1ba6\5\u0244\u0123\2\u1ba5\u1ba3\3\2"+
		"\2\2\u1ba6\u1ba9\3\2\2\2\u1ba7\u1ba5\3\2\2\2\u1ba7\u1ba8\3\2\2\2\u1ba8"+
		"\u1bb3\3\2\2\2\u1ba9\u1ba7\3\2\2\2\u1baa\u1baf\5\u0246\u0124\2\u1bab\u1bac"+
		"\7\u0338\2\2\u1bac\u1bae\5\u0246\u0124\2\u1bad\u1bab\3\2\2\2\u1bae\u1bb1"+
		"\3\2\2\2\u1baf\u1bad\3\2\2\2\u1baf\u1bb0\3\2\2\2\u1bb0\u1bb3\3\2\2\2\u1bb1"+
		"\u1baf\3\2\2\2\u1bb2\u1ba2\3\2\2\2\u1bb2\u1baa\3\2\2\2\u1bb3\u1bb5\3\2"+
		"\2\2\u1bb4\u1bb6\7\u0339\2\2\u1bb5\u1bb4\3\2\2\2\u1bb5\u1bb6\3\2\2\2\u1bb6"+
		"\u0243\3\2\2\2\u1bb7\u1bb8\5\u03ba\u01de\2\u1bb8\u1bb9\7\u00e6\2\2\u1bb9"+
		"\u1bba\5\u0380\u01c1\2\u1bba\u0245\3\2\2\2\u1bbb\u1bbc\5\u03ba\u01de\2"+
		"\u1bbc\u1bbd\7\u0331\2\2\u1bbd\u1bbf\3\2\2\2\u1bbe\u1bbb\3\2\2\2\u1bbe"+
		"\u1bbf\3\2\2\2\u1bbf\u1bc0\3\2\2\2\u1bc0\u1bc1\5\u03ba\u01de\2\u1bc1\u1bc2"+
		"\7\u0331\2\2\u1bc2\u1bc3\5\u03ba\u01de\2\u1bc3\u0247\3\2\2\2\u1bc4\u1bc5"+
		"\7h\2\2\u1bc5\u1bc8\t8\2\2\u1bc6\u1bc7\7\u009a\2\2\u1bc7\u1bc9\7x\2\2"+
		"\u1bc8\u1bc6\3\2\2\2\u1bc8\u1bc9\3\2\2\2\u1bc9\u1bca\3\2\2\2\u1bca\u1bcf"+
		"\5\u0386\u01c4\2\u1bcb\u1bcc\7\u0338\2\2\u1bcc\u1bce\5\u0386\u01c4\2\u1bcd"+
		"\u1bcb\3\2\2\2\u1bce\u1bd1\3\2\2\2\u1bcf\u1bcd\3\2\2\2\u1bcf\u1bd0\3\2"+
		"\2\2\u1bd0\u1bd3\3\2\2\2\u1bd1\u1bcf\3\2\2\2\u1bd2\u1bd4\7\u0339\2\2\u1bd3"+
		"\u1bd2\3\2\2\2\u1bd3\u1bd4\3\2\2\2\u1bd4\u0249\3\2\2\2\u1bd5\u1bd8\5\u024c"+
		"\u0127\2\u1bd6\u1bd8\5\u024e\u0128\2\u1bd7\u1bd5\3\2\2\2\u1bd7\u1bd6\3"+
		"\2\2\2\u1bd8\u024b\3\2\2\2\u1bd9\u1bda\7h\2\2\u1bda\u1bdd\7\u0164\2\2"+
		"\u1bdb\u1bdc\7\u009a\2\2\u1bdc\u1bde\7x\2\2\u1bdd\u1bdb\3\2\2\2\u1bdd"+
		"\u1bde\3\2\2\2\u1bde\u1bdf\3\2\2\2\u1bdf\u1be4\5\u0384\u01c3\2\u1be0\u1be1"+
		"\7\u0338\2\2\u1be1\u1be3\5\u0384\u01c3\2\u1be2\u1be0\3\2\2\2\u1be3\u1be6"+
		"\3\2\2\2\u1be4\u1be2\3\2\2\2\u1be4\u1be5\3\2\2\2\u1be5\u1be8\3\2\2\2\u1be6"+
		"\u1be4\3\2\2\2\u1be7\u1be9\7\u0339\2\2\u1be8\u1be7\3\2\2\2\u1be8\u1be9"+
		"\3\2\2\2\u1be9\u024d\3\2\2\2\u1bea\u1beb\7h\2\2\u1beb\u1bee\7\u0164\2"+
		"\2\u1bec\u1bed\7\u009a\2\2\u1bed\u1bef\7x\2\2\u1bee\u1bec\3\2\2\2\u1bee"+
		"\u1bef\3\2\2\2\u1bef\u1bf0\3\2\2\2\u1bf0\u1bf5\5\u0384\u01c3\2\u1bf1\u1bf2"+
		"\7\u0338\2\2\u1bf2\u1bf4\5\u0384\u01c3\2\u1bf3\u1bf1\3\2\2\2\u1bf4\u1bf7"+
		"\3\2\2\2\u1bf5\u1bf3\3\2\2\2\u1bf5\u1bf6\3\2\2\2\u1bf6\u1bf8\3\2\2\2\u1bf7"+
		"\u1bf5\3\2\2\2\u1bf8\u1bfc\7\u00e6\2\2\u1bf9\u1bfd\7U\2\2\u1bfa\u1bfb"+
		"\7\6\2\2\u1bfb\u1bfd\7\u0138\2\2\u1bfc\u1bf9\3\2\2\2\u1bfc\u1bfa\3\2\2"+
		"\2\u1bfd\u1bff\3\2\2\2\u1bfe\u1c00\7\u0339\2\2\u1bff\u1bfe\3\2\2\2\u1bff"+
		"\u1c00\3\2\2\2\u1c00\u024f\3\2\2\2\u1c01\u1c02\7h\2\2\u1c02\u1c05\7\u008e"+
		"\2\2\u1c03\u1c04\7\u009a\2\2\u1c04\u1c06\7x\2\2\u1c05\u1c03\3\2\2\2\u1c05"+
		"\u1c06\3\2\2\2\u1c06\u1c07\3\2\2\2\u1c07\u1c0c\5\u0386\u01c4\2\u1c08\u1c09"+
		"\7\u0338\2\2\u1c09\u1c0b\5\u0386\u01c4\2\u1c0a\u1c08\3\2\2\2\u1c0b\u1c0e"+
		"\3\2\2\2\u1c0c\u1c0a\3\2\2\2\u1c0c\u1c0d\3\2\2\2\u1c0d\u1c10\3\2\2\2\u1c0e"+
		"\u1c0c\3\2\2\2\u1c0f\u1c11\7\u0339\2\2\u1c10\u1c0f\3\2\2\2\u1c10\u1c11"+
		"\3\2\2\2\u1c11\u0251\3\2\2\2\u1c12\u1c13\7h\2\2\u1c13\u1c1d\7\u014b\2"+
		"\2\u1c14\u1c16\7\u0338\2\2\u1c15\u1c14\3\2\2\2\u1c15\u1c16\3\2\2\2\u1c16"+
		"\u1c1a\3\2\2\2\u1c17\u1c18\5\u0382\u01c2\2\u1c18\u1c19\7\u0331\2\2\u1c19"+
		"\u1c1b\3\2\2\2\u1c1a\u1c17\3\2\2\2\u1c1a\u1c1b\3\2\2\2\u1c1b\u1c1c\3\2"+
		"\2\2\u1c1c\u1c1e\5\u03ba\u01de\2\u1c1d\u1c15\3\2\2\2\u1c1e\u1c1f\3\2\2"+
		"\2\u1c1f\u1c1d\3\2\2\2\u1c1f\u1c20\3\2\2\2\u1c20\u1c21\3\2\2\2\u1c21\u1c22"+
		"\7\u0339\2\2\u1c22\u0253\3\2\2\2\u1c23\u1c24\7h\2\2\u1c24\u1c27\7\u0157"+
		"\2\2\u1c25\u1c26\7\u009a\2\2\u1c26\u1c28\7x\2\2\u1c27\u1c25\3\2\2\2\u1c27"+
		"\u1c28\3\2\2\2\u1c28\u1c29\3\2\2\2\u1c29\u1c2b\5\u0382\u01c2\2\u1c2a\u1c2c"+
		"\7\u0339\2\2\u1c2b\u1c2a\3\2\2\2\u1c2b\u1c2c\3\2\2\2\u1c2c\u0255\3\2\2"+
		"\2\u1c2d\u1c2e\7h\2\2\u1c2e\u1c31\7\u0176\2\2\u1c2f\u1c30\7\u009a\2\2"+
		"\u1c30\u1c32\7x\2\2\u1c31\u1c2f\3\2\2\2\u1c31\u1c32\3\2\2\2\u1c32\u1c33"+
		"\3\2\2\2\u1c33\u1c38\5\u0384\u01c3\2\u1c34\u1c35\7\u0338\2\2\u1c35\u1c37"+
		"\5\u0384\u01c3\2\u1c36\u1c34\3\2\2\2\u1c37\u1c3a\3\2\2\2\u1c38\u1c36\3"+
		"\2\2\2\u1c38\u1c39\3\2\2\2\u1c39\u1c3c\3\2\2\2\u1c3a\u1c38\3\2\2\2\u1c3b"+
		"\u1c3d\7\u0339\2\2\u1c3c\u1c3b\3\2\2\2\u1c3c\u1c3d\3\2\2\2\u1c3d\u0257"+
		"\3\2\2\2\u1c3e\u1c3f\7I\2\2\u1c3f\u1c40\7\u02fc\2\2\u1c40\u1c45\5\u0384"+
		"\u01c3\2\u1c41\u1c42\7\u008c\2\2\u1c42\u1c43\5\u03b2\u01da\2\u1c43\u1c44"+
		"\5\u03b4\u01db\2\u1c44\u1c46\3\2\2\2\u1c45\u1c41\3\2\2\2\u1c45\u1c46\3"+
		"\2\2\2\u1c46\u1c4d\3\2\2\2\u1c47\u1c48\7\20\2\2\u1c48\u1c49\7\u0157\2"+
		"\2\u1c49\u1c4a\7\u0336\2\2\u1c4a\u1c4b\5\u02ac\u0157\2\u1c4b\u1c4c\7\u0337"+
		"\2\2\u1c4c\u1c4e\3\2\2\2\u1c4d\u1c47\3\2\2\2\u1c4d\u1c4e\3\2\2\2\u1c4e"+
		"\u0259\3\2\2\2\u1c4f\u1c50\7h\2\2\u1c50\u1c53\7\u02fc\2\2\u1c51\u1c52"+
		"\7\u009a\2\2\u1c52\u1c54\7x\2\2\u1c53\u1c51\3\2\2\2\u1c53\u1c54\3\2\2"+
		"\2\u1c54\u1c55\3\2\2\2\u1c55\u1c56\5\u0384\u01c3\2\u1c56\u025b\3\2\2\2"+
		"\u1c57\u1c5a\5\u025e\u0130\2\u1c58\u1c5a\5\u0260\u0131\2\u1c59\u1c57\3"+
		"\2\2\2\u1c59\u1c58\3\2\2\2\u1c5a\u025d\3\2\2\2\u1c5b\u1c5c\7\u00ea\2\2"+
		"\u1c5c\u1c5d\7\u0336\2\2\u1c5d\u1c5e\5\u03ba\u01de\2\u1c5e\u1c5f\7\u0338"+
		"\2\2\u1c5f\u1c60\7\u0320\2\2\u1c60\u1c61\7\u0337\2\2\u1c61\u025f\3\2\2"+
		"\2\u1c62\u1c63\7\u00e9\2\2\u1c63\u1c64\7\u0336\2\2\u1c64\u1c65\7\u0320"+
		"\2\2\u1c65\u1c66\7\u0338\2\2\u1c66\u1c67\7\u0320\2\2\u1c67\u1c68\7\u0337"+
		"\2\2\u1c68\u1c6a\7\u0331\2\2\u1c69\u1c6b\5\u03ba\u01de\2\u1c6a\u1c69\3"+
		"\2\2\2\u1c6a\u1c6b\3\2\2\2\u1c6b\u1c6c\3\2\2\2\u1c6c\u1c6e\7\u0331\2\2"+
		"\u1c6d\u1c6f\5\u03ba\u01de\2\u1c6e\u1c6d\3\2\2\2\u1c6e\u1c6f\3\2\2\2\u1c6f"+
		"\u1c70\3\2\2\2\u1c70\u1c71\7\u0331\2\2\u1c71\u1c72\5\u03ba\u01de\2\u1c72"+
		"\u0261\3\2\2\2\u1c73\u1c74\7Y\2\2\u1c74\u1c76\7\u031b\2\2\u1c75\u1c77"+
		"\7\20\2\2\u1c76\u1c75\3\2\2\2\u1c76\u1c77\3\2\2\2\u1c77\u1c78\3\2\2\2"+
		"\u1c78\u1c7a\5\u02a6\u0154\2\u1c79\u1c7b\7\u0339\2\2\u1c7a\u1c79\3\2\2"+
		"\2\u1c7a\u1c7b\3\2\2\2\u1c7b\u1c9f\3\2\2\2\u1c7c\u1c7d\7Y\2\2\u1c7d\u1c82"+
		"\5\u02a4\u0153\2\u1c7e\u1c7f\7\u0338\2\2\u1c7f\u1c81\5\u02a4\u0153\2\u1c80"+
		"\u1c7e\3\2\2\2\u1c81\u1c84\3\2\2\2\u1c82\u1c80\3\2\2\2\u1c82\u1c83\3\2"+
		"\2\2\u1c83\u1c86\3\2\2\2\u1c84\u1c82\3\2\2\2\u1c85\u1c87\7\u0339\2\2\u1c86"+
		"\u1c85\3\2\2\2\u1c86\u1c87\3\2\2\2\u1c87\u1c9f\3\2\2\2\u1c88\u1c89\7Y"+
		"\2\2\u1c89\u1c8b\7\u031b\2\2\u1c8a\u1c8c\7\20\2\2\u1c8b\u1c8a\3\2\2\2"+
		"\u1c8b\u1c8c\3\2\2\2\u1c8c\u1c8d\3\2\2\2\u1c8d\u1c8f\5\u02a8\u0155\2\u1c8e"+
		"\u1c90\7\u0339\2\2\u1c8f\u1c8e\3\2\2\2\u1c8f\u1c90\3\2\2\2\u1c90\u1c9f"+
		"\3\2\2\2\u1c91\u1c92\7\u017d\2\2\u1c92\u1c93\7\u0311\2\2\u1c93\u1c94\7"+
		"\u0336\2\2\u1c94\u1c96\7\u0320\2\2\u1c95\u1c97\7\u0338\2\2\u1c96\u1c95"+
		"\3\2\2\2\u1c96\u1c97\3\2\2\2\u1c97\u1c98\3\2\2\2\u1c98\u1c99\7\20\2\2"+
		"\u1c99\u1c9a\5\u03ba\u01de\2\u1c9a\u1c9c\7\u0337\2\2\u1c9b\u1c9d\7\u0339"+
		"\2\2\u1c9c\u1c9b\3\2\2\2\u1c9c\u1c9d\3\2\2\2\u1c9d\u1c9f\3\2\2\2\u1c9e"+
		"\u1c73\3\2\2\2\u1c9e\u1c7c\3\2\2\2\u1c9e\u1c88\3\2\2\2\u1c9e\u1c91\3\2"+
		"\2\2\u1c9f\u0263\3\2\2\2\u1ca0\u1ca2\7\63\2\2\u1ca1\u1ca3\7\u0210\2\2"+
		"\u1ca2\u1ca1\3\2\2\2\u1ca2\u1ca3\3\2\2\2\u1ca3\u1ca4\3\2\2\2\u1ca4\u1ca6"+
		"\5\u0394\u01cb\2\u1ca5\u1ca7\7\u0339\2\2\u1ca6\u1ca5\3\2\2\2\u1ca6\u1ca7"+
		"\3\2\2\2\u1ca7\u1cbe\3\2\2\2\u1ca8\u1caa\7X\2\2\u1ca9\u1cab\7\u0210\2"+
		"\2\u1caa\u1ca9\3\2\2\2\u1caa\u1cab\3\2\2\2\u1cab\u1cad\3\2\2\2\u1cac\u1cae"+
		"\7P\2\2\u1cad\u1cac\3\2\2\2\u1cad\u1cae\3\2\2\2\u1cae\u1caf\3\2\2\2\u1caf"+
		"\u1cb1\5\u0394\u01cb\2\u1cb0\u1cb2\7\u0339\2\2\u1cb1\u1cb0\3\2\2\2\u1cb1"+
		"\u1cb2\3\2\2\2\u1cb2\u1cbe\3\2\2\2\u1cb3\u1cbe\5\u02c0\u0161\2\u1cb4\u1cbe"+
		"\5\u02c6\u0164\2\u1cb5\u1cb7\7\u00e8\2\2\u1cb6\u1cb8\7\u0210\2\2\u1cb7"+
		"\u1cb6\3\2\2\2\u1cb7\u1cb8\3\2\2\2\u1cb8\u1cb9\3\2\2\2\u1cb9\u1cbb\5\u0394"+
		"\u01cb\2\u1cba\u1cbc\7\u0339\2\2\u1cbb\u1cba\3\2\2\2\u1cbb\u1cbc\3\2\2"+
		"\2\u1cbc\u1cbe\3\2\2\2\u1cbd\u1ca0\3\2\2\2\u1cbd\u1ca8\3\2\2\2\u1cbd\u1cb3"+
		"\3\2\2\2\u1cbd\u1cb4\3\2\2\2\u1cbd\u1cb5\3\2\2\2\u1cbe\u0265\3\2\2\2\u1cbf"+
		"\u1cc0\7\32\2\2\u1cc0\u1cc1\7U\2\2\u1cc1\u1cce\5\u03ba\u01de\2\u1cc2\u1ccb"+
		"\7\u010d\2\2\u1cc3\u1cc5\7\u0338\2\2\u1cc4\u1cc3\3\2\2\2\u1cc4\u1cc5\3"+
		"\2\2\2\u1cc5\u1cc6\3\2\2\2\u1cc6\u1cc7\tQ\2\2\u1cc7\u1cc8\7\u0324\2\2"+
		"\u1cc8\u1cca\7\u0320\2\2\u1cc9\u1cc4\3\2\2\2\u1cca\u1ccd\3\2\2\2\u1ccb"+
		"\u1cc9\3\2\2\2\u1ccb\u1ccc\3\2\2\2\u1ccc\u1ccf\3\2\2\2\u1ccd\u1ccb\3\2"+
		"\2\2\u1cce\u1cc2\3\2\2\2\u1cce\u1ccf\3\2\2\2\u1ccf\u1cd8\3\2\2\2\u1cd0"+
		"\u1cd2\7\u0338\2\2\u1cd1\u1cd0\3\2\2\2\u1cd1\u1cd2\3\2\2\2\u1cd2\u1cd3"+
		"\3\2\2\2\u1cd3\u1cd4\tQ\2\2\u1cd4\u1cd5\7\u0324\2\2\u1cd5\u1cd7\7\u0320"+
		"\2\2\u1cd6\u1cd1\3\2\2\2\u1cd7\u1cda\3\2\2\2\u1cd8\u1cd6\3\2\2\2\u1cd8"+
		"\u1cd9\3\2\2\2\u1cd9\u1cf2\3\2\2\2\u1cda\u1cd8\3\2\2\2\u1cdb\u1ce0\7\u015e"+
		"\2\2\u1cdc\u1cde\7\u0338\2\2\u1cdd\u1cdc\3\2\2\2\u1cdd\u1cde\3\2\2\2\u1cde"+
		"\u1cdf\3\2\2\2\u1cdf\u1ce1\5\u03ba\u01de\2\u1ce0\u1cdd\3\2\2\2\u1ce1\u1ce2"+
		"\3\2\2\2\u1ce2\u1ce0\3\2\2\2\u1ce2\u1ce3\3\2\2\2\u1ce3\u1cf3\3\2\2\2\u1ce4"+
		"\u1cee\7\u015e\2\2\u1ce5\u1ce7\7\u0338\2\2\u1ce6\u1ce5\3\2\2\2\u1ce6\u1ce7"+
		"\3\2\2\2\u1ce7\u1ce8\3\2\2\2\u1ce8\u1ce9\tR\2\2\u1ce9\u1cec\7\u0324\2"+
		"\2\u1cea\u1ced\7\u0320\2\2\u1ceb\u1ced\5\u03ba\u01de\2\u1cec\u1cea\3\2"+
		"\2\2\u1cec\u1ceb\3\2\2\2\u1ced\u1cef\3\2\2\2\u1cee\u1ce6\3\2\2\2\u1cef"+
		"\u1cf0\3\2\2\2\u1cf0\u1cee\3\2\2\2\u1cf0\u1cf1\3\2\2\2\u1cf1\u1cf3\3\2"+
		"\2\2\u1cf2\u1cdb\3\2\2\2\u1cf2\u1ce4\3\2\2\2\u1cf3\u1d15\3\2\2\2\u1cf4"+
		"\u1cf5\7\u00ce\2\2\u1cf5\u1cfa\7\u015e\2\2\u1cf6\u1cf8\7\u0338\2\2\u1cf7"+
		"\u1cf6\3\2\2\2\u1cf7\u1cf8\3\2\2\2\u1cf8\u1cf9\3\2\2\2\u1cf9\u1cfb\5\u03ba"+
		"\u01de\2\u1cfa\u1cf7\3\2\2\2\u1cfb\u1cfc\3\2\2\2\u1cfc\u1cfa\3\2\2\2\u1cfc"+
		"\u1cfd\3\2\2\2\u1cfd\u1cff\3\2\2\2\u1cfe\u1cf4\3\2\2\2\u1cff\u1d00\3\2"+
		"\2\2\u1d00\u1cfe\3\2\2\2\u1d00\u1d01\3\2\2\2\u1d01\u1d16\3\2\2\2\u1d02"+
		"\u1d03\7\u00ce\2\2\u1d03\u1d0d\7\u015e\2\2\u1d04\u1d06\7\u0338\2\2\u1d05"+
		"\u1d04\3\2\2\2\u1d05\u1d06\3\2\2\2\u1d06\u1d07\3\2\2\2\u1d07\u1d08\tR"+
		"\2\2\u1d08\u1d0b\7\u0324\2\2\u1d09\u1d0c\7\u0320\2\2\u1d0a\u1d0c\5\u03ba"+
		"\u01de\2\u1d0b\u1d09\3\2\2\2\u1d0b\u1d0a\3\2\2\2\u1d0c\u1d0e\3\2\2\2\u1d0d"+
		"\u1d05\3\2\2\2\u1d0e\u1d0f\3\2\2\2\u1d0f\u1d0d\3\2\2\2\u1d0f\u1d10\3\2"+
		"\2\2\u1d10\u1d12\3\2\2\2\u1d11\u1d02\3\2\2\2\u1d12\u1d13\3\2\2\2\u1d13"+
		"\u1d11\3\2\2\2\u1d13\u1d14\3\2\2\2\u1d14\u1d16\3\2\2\2\u1d15\u1cfe\3\2"+
		"\2\2\u1d15\u1d11\3\2\2\2\u1d15\u1d16\3\2\2\2\u1d16\u1db7\3\2\2\2\u1d17"+
		"\u1db4\7\u017d\2\2\u1d18\u1d1a\7\u0338\2\2\u1d19\u1d18\3\2\2\2\u1d19\u1d1a"+
		"\3\2\2\2\u1d1a\u1d1b\3\2\2\2\u1d1b\u1db3\7a\2\2\u1d1c\u1d1e\7\u0338\2"+
		"\2\u1d1d\u1d1c\3\2\2\2\u1d1d\u1d1e\3\2\2\2\u1d1e\u1d1f\3\2\2\2\u1d1f\u1db3"+
		"\7H\2\2\u1d20\u1d22\7\u0338\2\2\u1d21\u1d20\3\2\2\2\u1d21\u1d22\3\2\2"+
		"\2\u1d22\u1d23\3\2\2\2\u1d23\u1db3\tS\2\2\u1d24\u1d26\7\u0338\2\2\u1d25"+
		"\u1d24\3\2\2\2\u1d25\u1d26\3\2\2\2\u1d26\u1d27\3\2\2\2\u1d27\u1d28\7\u01de"+
		"\2\2\u1d28\u1d2b\7\u0324\2\2\u1d29\u1d2c\7\u0320\2\2\u1d2a\u1d2c\5\u03ba"+
		"\u01de\2\u1d2b\u1d29\3\2\2\2\u1d2b\u1d2a\3\2\2\2\u1d2c\u1db3\3\2\2\2\u1d2d"+
		"\u1d2f\7\u0338\2\2\u1d2e\u1d2d\3\2\2\2\u1d2e\u1d2f\3\2\2\2\u1d2f\u1d30"+
		"\3\2\2\2\u1d30\u1d31\7\u025f\2\2\u1d31\u1d32\7\u0324\2\2\u1d32\u1db3\5"+
		"\u03ba\u01de\2\u1d33\u1d35\7\u0338\2\2\u1d34\u1d33\3\2\2\2\u1d34\u1d35"+
		"\3\2\2\2\u1d35\u1d36\3\2\2\2\u1d36\u1db3\7\u01c8\2\2\u1d37\u1d39\7\u0338"+
		"\2\2\u1d38\u1d37\3\2\2\2\u1d38\u1d39\3\2\2\2\u1d39\u1d3a\3\2\2\2\u1d3a"+
		"\u1db3\7\u0085\2\2\u1d3b\u1d3d\7\u0338\2\2\u1d3c\u1d3b\3\2\2\2\u1d3c\u1d3d"+
		"\3\2\2\2\u1d3d\u1d4a\3\2\2\2\u1d3e\u1d3f\7y\2\2\u1d3f\u1d42\7\u0324\2"+
		"\2\u1d40\u1d43\7\u0320\2\2\u1d41\u1d43\5\u03ba\u01de\2\u1d42\u1d40\3\2"+
		"\2\2\u1d42\u1d41\3\2\2\2\u1d43\u1d4b\3\2\2\2\u1d44\u1d45\7\u011a\2\2\u1d45"+
		"\u1d48\7\u0324\2\2\u1d46\u1d49\7\u031c\2\2\u1d47\u1d49\5\u03ba\u01de\2"+
		"\u1d48\u1d46\3\2\2\2\u1d48\u1d47\3\2\2\2\u1d49\u1d4b\3\2\2\2\u1d4a\u1d3e"+
		"\3\2\2\2\u1d4a\u1d44\3\2\2\2\u1d4b\u1db3\3\2\2\2\u1d4c\u1d4e\7\u0338\2"+
		"\2\u1d4d\u1d4c\3\2\2\2\u1d4d\u1d4e\3\2\2\2\u1d4e\u1d4f\3\2\2\2\u1d4f\u1db3"+
		"\tT\2\2\u1d50\u1d52\7\u0338\2\2\u1d51\u1d50\3\2\2\2\u1d51\u1d52\3\2\2"+
		"\2\u1d52\u1d53\3\2\2\2\u1d53\u1db3\tU\2\2\u1d54\u1d56\7\u0338\2\2\u1d55"+
		"\u1d54\3\2\2\2\u1d55\u1d56\3\2\2\2\u1d56\u1d57\3\2\2\2\u1d57\u1db3\tV"+
		"\2\2\u1d58\u1d5a\7\u0338\2\2\u1d59\u1d58\3\2\2\2\u1d59\u1d5a\3\2\2\2\u1d5a"+
		"\u1d5b\3\2\2\2\u1d5b\u1d5c\7\u00c6\2\2\u1d5c\u1d5f\7\u0324\2\2\u1d5d\u1d60"+
		"\7\u0320\2\2\u1d5e\u1d60\5\u03ba\u01de\2\u1d5f\u1d5d\3\2\2\2\u1d5f\u1d5e"+
		"\3\2\2\2\u1d60\u1db3\3\2\2\2\u1d61\u1d63\7\u0338\2\2\u1d62\u1d61\3\2\2"+
		"\2\u1d62\u1d63\3\2\2\2\u1d63\u1d64\3\2\2\2\u1d64\u1d65\7\u00c7\2\2\u1d65"+
		"\u1d66\7\u0324\2\2\u1d66\u1db3\7\u0320\2\2\u1d67\u1d69\7\u0338\2\2\u1d68"+
		"\u1d67\3\2\2\2\u1d68\u1d69\3\2\2\2\u1d69\u1d6a\3\2\2\2\u1d6a\u1d6b\7\37"+
		"\2\2\u1d6b\u1d6e\7\u0324\2\2\u1d6c\u1d6f\7\u031c\2\2\u1d6d\u1d6f\5\u03ba"+
		"\u01de\2\u1d6e\u1d6c\3\2\2\2\u1d6e\u1d6d\3\2\2\2\u1d6f\u1db3\3\2\2\2\u1d70"+
		"\u1d72\7\u0338\2\2\u1d71\u1d70\3\2\2\2\u1d71\u1d72\3\2\2\2\u1d72\u1d73"+
		"\3\2\2\2\u1d73\u1d74\7$\2\2\u1d74\u1d77\7\u0324\2\2\u1d75\u1d78\7\u031c"+
		"\2\2\u1d76\u1d78\5\u03ba\u01de\2\u1d77\u1d75\3\2\2\2\u1d77\u1d76\3\2\2"+
		"\2\u1d78\u1db3\3\2\2\2\u1d79\u1d7b\7\u0338\2\2\u1d7a\u1d79\3\2\2\2\u1d7a"+
		"\u1d7b\3\2\2\2\u1d7b\u1d7c\3\2\2\2\u1d7c\u1d7d\7\u00c0\2\2\u1d7d\u1d80"+
		"\7\u0324\2\2\u1d7e\u1d81\7\u031c\2\2\u1d7f\u1d81\5\u03ba\u01de\2\u1d80"+
		"\u1d7e\3\2\2\2\u1d80\u1d7f\3\2\2\2\u1d81\u1db3\3\2\2\2\u1d82\u1d84\7\u0338"+
		"\2\2\u1d83\u1d82\3\2\2\2\u1d83\u1d84\3\2\2\2\u1d84\u1d85\3\2\2\2\u1d85"+
		"\u1db3\tW\2\2\u1d86\u1d88\7\u0338\2\2\u1d87\u1d86\3\2\2\2\u1d87\u1d88"+
		"\3\2\2\2\u1d88\u1d89\3\2\2\2\u1d89\u1db3\tX\2\2\u1d8a\u1d8c\7\u0338\2"+
		"\2\u1d8b\u1d8a\3\2\2\2\u1d8b\u1d8c\3\2\2\2\u1d8c\u1d8d\3\2\2\2\u1d8d\u1db3"+
		"\7\u0116\2\2\u1d8e\u1d90\7\u0338\2\2\u1d8f\u1d8e\3\2\2\2\u1d8f\u1d90\3"+
		"\2\2\2\u1d90\u1d91\3\2\2\2\u1d91\u1d94\7\u014d\2\2\u1d92\u1d93\7\u0324"+
		"\2\2\u1d93\u1d95\7\u031c\2\2\u1d94\u1d92\3\2\2\2\u1d94\u1d95\3\2\2\2\u1d95"+
		"\u1db3\3\2\2\2\u1d96\u1d98\7\u0338\2\2\u1d97\u1d96\3\2\2\2\u1d97\u1d98"+
		"\3\2\2\2\u1d98\u1d99\3\2\2\2\u1d99\u1db3\tY\2\2\u1d9a\u1d9c\7\u0338\2"+
		"\2\u1d9b\u1d9a\3\2\2\2\u1d9b\u1d9c\3\2\2\2\u1d9c\u1d9d\3\2\2\2\u1d9d\u1db3"+
		"\tZ\2\2\u1d9e\u1da0\7\u0338\2\2\u1d9f\u1d9e\3\2\2\2\u1d9f\u1da0\3\2\2"+
		"\2\u1da0\u1da1\3\2\2\2\u1da1\u1da2\7\u01ef\2\2\u1da2\u1da3\7\u0336\2\2"+
		"\u1da3\u1da4\7\u018e\2\2\u1da4\u1da5\7\u0324\2\2\u1da5\u1da6\t[\2\2\u1da6"+
		"\u1da7\7\u0338\2\2\u1da7\u1da8\7\u0138\2\2\u1da8\u1da9\7+\2\2\u1da9\u1db0"+
		"\7\u0324\2\2\u1daa\u1db1\5\u03ba\u01de\2\u1dab\u1dac\7\u0138\2\2\u1dac"+
		"\u1dad\7\22\2\2\u1dad\u1dae\7\u00ad\2\2\u1dae\u1daf\7\u0324\2\2\u1daf"+
		"\u1db1\5\u03ba\u01de\2\u1db0\u1daa\3\2\2\2\u1db0\u1dab\3\2\2\2\u1db1\u1db3"+
		"\3\2\2\2\u1db2\u1d19\3\2\2\2\u1db2\u1d1d\3\2\2\2\u1db2\u1d21\3\2\2\2\u1db2"+
		"\u1d25\3\2\2\2\u1db2\u1d2e\3\2\2\2\u1db2\u1d34\3\2\2\2\u1db2\u1d38\3\2"+
		"\2\2\u1db2\u1d3c\3\2\2\2\u1db2\u1d4d\3\2\2\2\u1db2\u1d51\3\2\2\2\u1db2"+
		"\u1d55\3\2\2\2\u1db2\u1d59\3\2\2\2\u1db2\u1d62\3\2\2\2\u1db2\u1d68\3\2"+
		"\2\2\u1db2\u1d71\3\2\2\2\u1db2\u1d7a\3\2\2\2\u1db2\u1d83\3\2\2\2\u1db2"+
		"\u1d87\3\2\2\2\u1db2\u1d8b\3\2\2\2\u1db2\u1d8f\3\2\2\2\u1db2\u1d97\3\2"+
		"\2\2\u1db2\u1d9b\3\2\2\2\u1db2\u1d9f\3\2\2\2\u1db3\u1db6\3\2\2\2\u1db4"+
		"\u1db2\3\2\2\2\u1db4\u1db5\3\2\2\2\u1db5\u1db8\3\2\2\2\u1db6\u1db4\3\2"+
		"\2\2\u1db7\u1d17\3\2\2\2\u1db7\u1db8\3\2\2\2\u1db8\u0267\3\2\2\2\u1db9"+
		"\u1dba\7\32\2\2\u1dba\u1dbb\7\u00bc\2\2\u1dbb\u1dd3\5\u03ba\u01de\2\u1dbc"+
		"\u1dc1\7\u015e\2\2\u1dbd\u1dbf\7\u0338\2\2\u1dbe\u1dbd\3\2\2\2\u1dbe\u1dbf"+
		"\3\2\2\2\u1dbf\u1dc0\3\2\2\2\u1dc0\u1dc2\5\u03ba\u01de\2\u1dc1\u1dbe\3"+
		"\2\2\2\u1dc2\u1dc3\3\2\2\2\u1dc3\u1dc1\3\2\2\2\u1dc3\u1dc4\3\2\2\2\u1dc4"+
		"\u1dd4\3\2\2\2\u1dc5\u1dcf\7\u015e\2\2\u1dc6\u1dc8\7\u0338\2\2\u1dc7\u1dc6"+
		"\3\2\2\2\u1dc7\u1dc8\3\2\2\2\u1dc8\u1dc9\3\2\2\2\u1dc9\u1dca\tR\2\2\u1dca"+
		"\u1dcd\7\u0324\2\2\u1dcb\u1dce\7\u0320\2\2\u1dcc\u1dce\5\u03ba\u01de\2"+
		"\u1dcd\u1dcb\3\2\2\2\u1dcd\u1dcc\3\2\2\2\u1dce\u1dd0\3\2\2\2\u1dcf\u1dc7"+
		"\3\2\2\2\u1dd0\u1dd1\3\2\2\2\u1dd1\u1dcf\3\2\2\2\u1dd1\u1dd2\3\2\2\2\u1dd2"+
		"\u1dd4\3\2\2\2\u1dd3\u1dbc\3\2\2\2\u1dd3\u1dc5\3\2\2\2\u1dd4\u1df6\3\2"+
		"\2\2\u1dd5\u1dd6\7\u00ce\2\2\u1dd6\u1ddb\7\u015e\2\2\u1dd7\u1dd9\7\u0338"+
		"\2\2\u1dd8\u1dd7\3\2\2\2\u1dd8\u1dd9\3\2\2\2\u1dd9\u1dda\3\2\2\2\u1dda"+
		"\u1ddc\5\u03ba\u01de\2\u1ddb\u1dd8\3\2\2\2\u1ddc\u1ddd\3\2\2\2\u1ddd\u1ddb"+
		"\3\2\2\2\u1ddd\u1dde\3\2\2\2\u1dde\u1de0\3\2\2\2\u1ddf\u1dd5\3\2\2\2\u1de0"+
		"\u1de1\3\2\2\2\u1de1\u1ddf\3\2\2\2\u1de1\u1de2\3\2\2\2\u1de2\u1df7\3\2"+
		"\2\2\u1de3\u1de4\7\u00ce\2\2\u1de4\u1dee\7\u015e\2\2\u1de5\u1de7\7\u0338"+
		"\2\2\u1de6\u1de5\3\2\2\2\u1de6\u1de7\3\2\2\2\u1de7\u1de8\3\2\2\2\u1de8"+
		"\u1de9\tR\2\2\u1de9\u1dec\7\u0324\2\2\u1dea\u1ded\7\u0320\2\2\u1deb\u1ded"+
		"\5\u03ba\u01de\2\u1dec\u1dea\3\2\2\2\u1dec\u1deb\3\2\2\2\u1ded\u1def\3"+
		"\2\2\2\u1dee\u1de6\3\2\2\2\u1def\u1df0\3\2\2\2\u1df0\u1dee\3\2\2\2\u1df0"+
		"\u1df1\3\2\2\2\u1df1\u1df3\3\2\2\2\u1df2\u1de3\3\2\2\2\u1df3\u1df4\3\2"+
		"\2\2\u1df4\u1df2\3\2\2\2\u1df4\u1df5\3\2\2\2\u1df5\u1df7\3\2\2\2\u1df6"+
		"\u1ddf\3\2\2\2\u1df6\u1df2\3\2\2\2\u1df6\u1df7\3\2\2\2\u1df7\u1ea5\3\2"+
		"\2\2\u1df8\u1ea2\7\u017d\2\2\u1df9\u1dfb\7\u0338\2\2\u1dfa\u1df9\3\2\2"+
		"\2\u1dfa\u1dfb\3\2\2\2\u1dfb\u1dfc\3\2\2\2\u1dfc\u1ea1\7a\2\2\u1dfd\u1dff"+
		"\7\u0338\2\2\u1dfe\u1dfd\3\2\2\2\u1dfe\u1dff\3\2\2\2\u1dff\u1e00\3\2\2"+
		"\2\u1e00\u1ea1\7H\2\2\u1e01\u1e03\7\u0338\2\2\u1e02\u1e01\3\2\2\2\u1e02"+
		"\u1e03\3\2\2\2\u1e03\u1e04\3\2\2\2\u1e04\u1ea1\tS\2\2\u1e05\u1e07\7\u0338"+
		"\2\2\u1e06\u1e05\3\2\2\2\u1e06\u1e07\3\2\2\2\u1e07\u1e08\3\2\2\2\u1e08"+
		"\u1e09\7\u01de\2\2\u1e09\u1e0c\7\u0324\2\2\u1e0a\u1e0d\7\u0320\2\2\u1e0b"+
		"\u1e0d\5\u03ba\u01de\2\u1e0c\u1e0a\3\2\2\2\u1e0c\u1e0b\3\2\2\2\u1e0d\u1ea1"+
		"\3\2\2\2\u1e0e\u1e10\7\u0338\2\2\u1e0f\u1e0e\3\2\2\2\u1e0f\u1e10\3\2\2"+
		"\2\u1e10\u1e11\3\2\2\2\u1e11\u1e12\7\u025f\2\2\u1e12\u1e13\7\u0324\2\2"+
		"\u1e13\u1ea1\5\u03ba\u01de\2\u1e14\u1e16\7\u0338\2\2\u1e15\u1e14\3\2\2"+
		"\2\u1e15\u1e16\3\2\2\2\u1e16\u1e17\3\2\2\2\u1e17\u1ea1\7\u01c8\2\2\u1e18"+
		"\u1e1a\7\u0338\2\2\u1e19\u1e18\3\2\2\2\u1e19\u1e1a\3\2\2\2\u1e1a\u1e1b"+
		"\3\2\2\2\u1e1b\u1ea1\7\u0085\2\2\u1e1c\u1e1e\7\u0338\2\2\u1e1d\u1e1c\3"+
		"\2\2\2\u1e1d\u1e1e\3\2\2\2\u1e1e\u1e2b\3\2\2\2\u1e1f\u1e20\7y\2\2\u1e20"+
		"\u1e23\7\u0324\2\2\u1e21\u1e24\7\u0320\2\2\u1e22\u1e24\5\u03ba\u01de\2"+
		"\u1e23\u1e21\3\2\2\2\u1e23\u1e22\3\2\2\2\u1e24\u1e2c\3\2\2\2\u1e25\u1e26"+
		"\7\u011a\2\2\u1e26\u1e29\7\u0324\2\2\u1e27\u1e2a\7\u031c\2\2\u1e28\u1e2a"+
		"\5\u03ba\u01de\2\u1e29\u1e27\3\2\2\2\u1e29\u1e28\3\2\2\2\u1e2a\u1e2c\3"+
		"\2\2\2\u1e2b\u1e1f\3\2\2\2\u1e2b\u1e25\3\2\2\2\u1e2c\u1ea1\3\2\2\2\u1e2d"+
		"\u1e2f\7\u0338\2\2\u1e2e\u1e2d\3\2\2\2\u1e2e\u1e2f\3\2\2\2\u1e2f\u1e30"+
		"\3\2\2\2\u1e30\u1ea1\tT\2\2\u1e31\u1e33\7\u0338\2\2\u1e32\u1e31\3\2\2"+
		"\2\u1e32\u1e33\3\2\2\2\u1e33\u1e34\3\2\2\2\u1e34\u1ea1\tU\2\2\u1e35\u1e37"+
		"\7\u0338\2\2\u1e36\u1e35\3\2\2\2\u1e36\u1e37\3\2\2\2\u1e37\u1e38\3\2\2"+
		"\2\u1e38\u1ea1\tV\2\2\u1e39\u1e3b\7\u0338\2\2\u1e3a\u1e39\3\2\2\2\u1e3a"+
		"\u1e3b\3\2\2\2\u1e3b\u1e3c\3\2\2\2\u1e3c\u1e3d\7\u00c6\2\2\u1e3d\u1e40"+
		"\7\u0324\2\2\u1e3e\u1e41\7\u0320\2\2\u1e3f\u1e41\5\u03ba\u01de\2\u1e40"+
		"\u1e3e\3\2\2\2\u1e40\u1e3f\3\2\2\2\u1e41\u1ea1\3\2\2\2\u1e42\u1e44\7\u0338"+
		"\2\2\u1e43\u1e42\3\2\2\2\u1e43\u1e44\3\2\2\2\u1e44\u1e45\3\2\2\2\u1e45"+
		"\u1e46\7\u00c7\2\2\u1e46\u1e47\7\u0324\2\2\u1e47\u1ea1\7\u0320\2\2\u1e48"+
		"\u1e4a\7\u0338\2\2\u1e49\u1e48\3\2\2\2\u1e49\u1e4a\3\2\2\2\u1e4a\u1e4b"+
		"\3\2\2\2\u1e4b\u1e4c\7\37\2\2\u1e4c\u1e4f\7\u0324\2\2\u1e4d\u1e50\7\u031c"+
		"\2\2\u1e4e\u1e50\5\u03ba\u01de\2\u1e4f\u1e4d\3\2\2\2\u1e4f\u1e4e\3\2\2"+
		"\2\u1e50\u1ea1\3\2\2\2\u1e51\u1e53\7\u0338\2\2\u1e52\u1e51\3\2\2\2\u1e52"+
		"\u1e53\3\2\2\2\u1e53\u1e54\3\2\2\2\u1e54\u1e55\7$\2\2\u1e55\u1e58\7\u0324"+
		"\2\2\u1e56\u1e59\7\u031c\2\2\u1e57\u1e59\5\u03ba\u01de\2\u1e58\u1e56\3"+
		"\2\2\2\u1e58\u1e57\3\2\2\2\u1e59\u1ea1\3\2\2\2\u1e5a\u1e5c\7\u0338\2\2"+
		"\u1e5b\u1e5a\3\2\2\2\u1e5b\u1e5c\3\2\2\2\u1e5c\u1e5d\3\2\2\2\u1e5d\u1e5e"+
		"\7\u00c0\2\2\u1e5e\u1e61\7\u0324\2\2\u1e5f\u1e62\7\u031c\2\2\u1e60\u1e62"+
		"\5\u03ba\u01de\2\u1e61\u1e5f\3\2\2\2\u1e61\u1e60\3\2\2\2\u1e62\u1ea1\3"+
		"\2\2\2\u1e63\u1e65\7\u0338\2\2\u1e64\u1e63\3\2\2\2\u1e64\u1e65\3\2\2\2"+
		"\u1e65\u1e66\3\2\2\2\u1e66\u1ea1\tW\2\2\u1e67\u1e69\7\u0338\2\2\u1e68"+
		"\u1e67\3\2\2\2\u1e68\u1e69\3\2\2\2\u1e69\u1e6a\3\2\2\2\u1e6a\u1ea1\tX"+
		"\2\2\u1e6b\u1e6d\7\u0338\2\2\u1e6c\u1e6b\3\2\2\2\u1e6c\u1e6d\3\2\2\2\u1e6d"+
		"\u1e6e\3\2\2\2\u1e6e\u1ea1\7\u0116\2\2\u1e6f\u1e71\7\u0338\2\2\u1e70\u1e6f"+
		"\3\2\2\2\u1e70\u1e71\3\2\2\2\u1e71\u1e72\3\2\2\2\u1e72\u1e75\7\u014d\2"+
		"\2\u1e73\u1e74\7\u0324\2\2\u1e74\u1e76\7\u031c\2\2\u1e75\u1e73\3\2\2\2"+
		"\u1e75\u1e76\3\2\2\2\u1e76\u1ea1\3\2\2\2\u1e77\u1e79\7\u0338\2\2\u1e78"+
		"\u1e77\3\2\2\2\u1e78\u1e79\3\2\2\2\u1e79\u1e7a\3\2\2\2\u1e7a\u1ea1\tY"+
		"\2\2\u1e7b\u1e7d\7\u0338\2\2\u1e7c\u1e7b\3\2\2\2\u1e7c\u1e7d\3\2\2\2\u1e7d"+
		"\u1e7e\3\2\2\2\u1e7e\u1ea1\tZ\2\2\u1e7f\u1e81\7\u0338\2\2\u1e80\u1e7f"+
		"\3\2\2\2\u1e80\u1e81\3\2\2\2\u1e81\u1e86\3\2\2\2\u1e82\u1e87\7\u026d\2"+
		"\2\u1e83\u1e84\7\u02db\2\2\u1e84\u1e85\7\u0324\2\2\u1e85\u1e87\7\u0320"+
		"\2\2\u1e86\u1e82\3\2\2\2\u1e86\u1e83\3\2\2\2\u1e87\u1ea1\3\2\2\2\u1e88"+
		"\u1e8a\7\u0338\2\2\u1e89\u1e88\3\2\2\2\u1e89\u1e8a\3\2\2\2\u1e8a\u1e8b"+
		"\3\2\2\2\u1e8b\u1ea1\7\u0266\2\2\u1e8c\u1e8e\7\u0338\2\2\u1e8d\u1e8c\3"+
		"\2\2\2\u1e8d\u1e8e\3\2\2\2\u1e8e\u1e8f\3\2\2\2\u1e8f\u1e90\7\u01ef\2\2"+
		"\u1e90\u1e91\7\u0336\2\2\u1e91\u1e92\7\u018e\2\2\u1e92\u1e93\7\u0324\2"+
		"\2\u1e93\u1e94\t[\2\2\u1e94\u1e95\7\u0338\2\2\u1e95\u1e96\7\u0138\2\2"+
		"\u1e96\u1e97\7+\2\2\u1e97\u1e9e\7\u0324\2\2\u1e98\u1e9f\5\u03ba\u01de"+
		"\2\u1e99\u1e9a\7\u0138\2\2\u1e9a\u1e9b\7\22\2\2\u1e9b\u1e9c\7\u00ad\2"+
		"\2\u1e9c\u1e9d\7\u0324\2\2\u1e9d\u1e9f\5\u03ba\u01de\2\u1e9e\u1e98\3\2"+
		"\2\2\u1e9e\u1e99\3\2\2\2\u1e9f\u1ea1\3\2\2\2\u1ea0\u1dfa\3\2\2\2\u1ea0"+
		"\u1dfe\3\2\2\2\u1ea0\u1e02\3\2\2\2\u1ea0\u1e06\3\2\2\2\u1ea0\u1e0f\3\2"+
		"\2\2\u1ea0\u1e15\3\2\2\2\u1ea0\u1e19\3\2\2\2\u1ea0\u1e1d\3\2\2\2\u1ea0"+
		"\u1e2e\3\2\2\2\u1ea0\u1e32\3\2\2\2\u1ea0\u1e36\3\2\2\2\u1ea0\u1e3a\3\2"+
		"\2\2\u1ea0\u1e43\3\2\2\2\u1ea0\u1e49\3\2\2\2\u1ea0\u1e52\3\2\2\2\u1ea0"+
		"\u1e5b\3\2\2\2\u1ea0\u1e64\3\2\2\2\u1ea0\u1e68\3\2\2\2\u1ea0\u1e6c\3\2"+
		"\2\2\u1ea0\u1e70\3\2\2\2\u1ea0\u1e78\3\2\2\2\u1ea0\u1e7c\3\2\2\2\u1ea0"+
		"\u1e80\3\2\2\2\u1ea0\u1e89\3\2\2\2\u1ea0\u1e8d\3\2\2\2\u1ea1\u1ea4\3\2"+
		"\2\2\u1ea2\u1ea0\3\2\2\2\u1ea2\u1ea3\3\2\2\2\u1ea3\u1ea6\3\2\2\2\u1ea4"+
		"\u1ea2\3\2\2\2\u1ea5\u1df8\3\2\2\2\u1ea5\u1ea6\3\2\2\2\u1ea6\u0269\3\2"+
		"\2\2\u1ea7\u1ea8\7\32\2\2\u1ea8\u1ea9\7+\2\2\u1ea9\u1eaa\5\u03ba\u01de"+
		"\2\u1eaa\u1eab\7\u015e\2\2\u1eab\u1eac\7\u0082\2\2\u1eac\u1ead\7\u0324"+
		"\2\2\u1ead\u1ecd\7\u0320\2\2\u1eae\u1eaf\7\u017d\2\2\u1eaf\u1eb0\7\u028d"+
		"\2\2\u1eb0\u1eb1\7\u00ad\2\2\u1eb1\u1ec8\7\u0336\2\2\u1eb2\u1eb4\7\u0338"+
		"\2\2\u1eb3\u1eb2\3\2\2\2\u1eb3\u1eb4\3\2\2\2\u1eb4\u1eb5\3\2\2\2\u1eb5"+
		"\u1eb6\7\u0082\2\2\u1eb6\u1eb7\7\u0324\2\2\u1eb7\u1ec9\7\u0320\2\2\u1eb8"+
		"\u1eba\7\u0338\2\2\u1eb9\u1eb8\3\2\2\2\u1eb9\u1eba\3\2\2\2\u1eba\u1ebb"+
		"\3\2\2\2\u1ebb\u1ebc\7\u01ef\2\2\u1ebc\u1ebd\7&\2\2\u1ebd\u1ebe\7\u00f5"+
		"\2\2\u1ebe\u1ebf\7\u0324\2\2\u1ebf\u1ec9\7\u0320\2\2\u1ec0\u1ec2\7\u0338"+
		"\2\2\u1ec1\u1ec0\3\2\2\2\u1ec1\u1ec2\3\2\2\2\u1ec2\u1ec3\3\2\2\2\u1ec3"+
		"\u1ec4\7\u01d4\2\2\u1ec4\u1ec5\7&\2\2\u1ec5\u1ec6\7\u00f5\2\2\u1ec6\u1ec7"+
		"\7\u0324\2\2\u1ec7\u1ec9\7\u0320\2\2\u1ec8\u1eb3\3\2\2\2\u1ec8\u1eb9\3"+
		"\2\2\2\u1ec8\u1ec1\3\2\2\2\u1ec9\u1eca\3\2\2\2\u1eca\u1ec8\3\2\2\2\u1eca"+
		"\u1ecb\3\2\2\2\u1ecb\u1ecc\3\2\2\2\u1ecc\u1ece\7\u0337\2\2\u1ecd\u1eae"+
		"\3\2\2\2\u1ecd\u1ece\3\2\2\2\u1ece\u026b\3\2\2\2\u1ecf\u1ed0\7\32\2\2"+
		"\u1ed0\u1ed1\7\u00be\2\2\u1ed1\u1ed2\7\u00ad\2\2\u1ed2\u1ed3\7\u015e\2"+
		"\2\u1ed3\u1ed4\7\u0082\2\2\u1ed4\u1ed5\7\u0324\2\2\u1ed5\u1ed6\7\u0320"+
		"\2\2\u1ed6\u1ed7\7\u01ef\2\2\u1ed7\u1ed8\7&\2\2\u1ed8\u1ed9\7\u00f5\2"+
		"\2\u1ed9\u1eda\7\u0324\2\2\u1eda\u1edb\7\u0320\2\2\u1edb\u026d\3\2\2\2"+
		"\u1edc\u1edd\7\32\2\2\u1edd\u1ede\7\u0139\2\2\u1ede\u1edf\7\u00be\2\2"+
		"\u1edf\u1ee0\7\u00ad\2\2\u1ee0\u1ee1\7\u015e\2\2\u1ee1\u1ee2\7\u0082\2"+
		"\2\u1ee2\u1ee3\7\u0324\2\2\u1ee3\u1ee4\7\u0320\2\2\u1ee4\u1ee5\7\u01ef"+
		"\2\2\u1ee5\u1ee6\7&\2\2\u1ee6\u1ee7\7\u00f5\2\2\u1ee7\u1ee8\7\u0324\2"+
		"\2\u1ee8\u1ee9\7\u0320\2\2\u1ee9\u026f\3\2\2\2\u1eea\u1eeb\7w\2\2\u1eeb"+
		"\u1eec\5\u0272\u013a\2\u1eec\u0271\3\2\2\2\u1eed\u1eee\7\u031b\2\2\u1eee"+
		"\u1ef0\7\u0324\2\2\u1eef\u1eed\3\2\2\2\u1eef\u1ef0\3\2\2\2\u1ef0\u1ef3"+
		"\3\2\2\2\u1ef1\u1ef4\5\u038a\u01c6\2\u1ef2\u1ef4\5\u02cc\u0167\2\u1ef3"+
		"\u1ef1\3\2\2\2\u1ef3\u1ef2\3\2\2\2\u1ef4\u1efd\3\2\2\2\u1ef5\u1efa\5\u0274"+
		"\u013b\2\u1ef6\u1ef7\7\u0338\2\2\u1ef7\u1ef9\5\u0274\u013b\2\u1ef8\u1ef6"+
		"\3\2\2\2\u1ef9\u1efc\3\2\2\2\u1efa\u1ef8\3\2\2\2\u1efa\u1efb\3\2\2\2\u1efb"+
		"\u1efe\3\2\2\2\u1efc\u1efa\3\2\2\2\u1efd\u1ef5\3\2\2\2\u1efd\u1efe\3\2"+
		"\2\2\u1efe\u1f00\3\2\2\2\u1eff\u1f01\7\u0339\2\2\u1f00\u1eff\3\2\2\2\u1f00"+
		"\u1f01\3\2\2\2\u1f01\u1f18\3\2\2\2\u1f02\u1f03\7\u0336\2\2\u1f03\u1f08"+
		"\5\u0276\u013c\2\u1f04\u1f05\7\u033e\2\2\u1f05\u1f07\5\u0276\u013c\2\u1f06"+
		"\u1f04\3\2\2\2\u1f07\u1f0a\3\2\2\2\u1f08\u1f06\3\2\2\2\u1f08\u1f09\3\2"+
		"\2\2\u1f09\u1f0b\3\2\2\2\u1f0a\u1f08\3\2\2\2\u1f0b\u1f12\7\u0337\2\2\u1f0c"+
		"\u1f0e\7\20\2\2\u1f0d\u1f0c\3\2\2\2\u1f0d\u1f0e\3\2\2\2\u1f0e\u1f0f\3"+
		"\2\2\2\u1f0f\u1f10\t\\\2\2\u1f10\u1f11\7\u0324\2\2\u1f11\u1f13\7\u0320"+
		"\2\2\u1f12\u1f0d\3\2\2\2\u1f12\u1f13\3\2\2\2\u1f13\u1f15\3\2\2\2\u1f14"+
		"\u1f16\7\u0339\2\2\u1f15\u1f14\3\2\2\2\u1f15\u1f16\3\2\2\2\u1f16\u1f18"+
		"\3\2\2\2\u1f17\u1eef\3\2\2\2\u1f17\u1f02\3\2\2\2\u1f18\u0273\3\2\2\2\u1f19"+
		"\u1f1a\7\u031b\2\2\u1f1a\u1f1c\7\u0324\2\2\u1f1b\u1f19\3\2\2\2\u1f1b\u1f1c"+
		"\3\2\2\2\u1f1c\u1f26\3\2\2\2\u1f1d\u1f20\5\u02ca\u0166\2\u1f1e\u1f20\5"+
		"\u03ba\u01de\2\u1f1f\u1f1d\3\2\2\2\u1f1f\u1f1e\3\2\2\2\u1f20\u1f22\3\2"+
		"\2\2\u1f21\u1f23\t]\2\2\u1f22\u1f21\3\2\2\2\u1f22\u1f23\3\2\2\2\u1f23"+
		"\u1f27\3\2\2\2\u1f24\u1f27\7Z\2\2\u1f25\u1f27\7\u00e0\2\2\u1f26\u1f1f"+
		"\3\2\2\2\u1f26\u1f24\3\2\2\2\u1f26\u1f25\3\2\2\2\u1f27\u0275\3\2\2\2\u1f28"+
		"\u1f29\t\3\2\2\u1f29\u0277\3\2\2\2\u1f2a\u1f2c\5\u02a2\u0152\2\u1f2b\u1f2d"+
		"\7\u0339\2\2\u1f2c\u1f2b\3\2\2\2\u1f2c\u1f2d\3\2\2\2\u1f2d\u1f66\3\2\2"+
		"\2\u1f2e\u1f3a\7\u0092\2\2\u1f2f\u1f31\7\6\2\2\u1f30\u1f32\7\u028f\2\2"+
		"\u1f31\u1f30\3\2\2\2\u1f31\u1f32\3\2\2\2\u1f32\u1f3b\3\2\2\2\u1f33\u1f38"+
		"\5\u0292\u014a\2\u1f34\u1f35\7\u0336\2\2\u1f35\u1f36\5\u0392\u01ca\2\u1f36"+
		"\u1f37\7\u0337\2\2\u1f37\u1f39\3\2\2\2\u1f38\u1f34\3\2\2\2\u1f38\u1f39"+
		"\3\2\2\2\u1f39\u1f3b\3\2\2\2\u1f3a\u1f2f\3\2\2\2\u1f3a\u1f33\3\2\2\2\u1f3b"+
		"\u1f3e\3\2\2\2\u1f3c\u1f3d\7\u00e6\2\2\u1f3d\u1f3f\5\u0382\u01c2\2\u1f3e"+
		"\u1f3c\3\2\2\2\u1f3e\u1f3f\3\2\2\2\u1f3f\u1f40\3\2\2\2\u1f40\u1f41\7\u015e"+
		"\2\2\u1f41\u1f46\5\u03ba\u01de\2\u1f42\u1f43\7\u0338\2\2\u1f43\u1f45\5"+
		"\u03ba\u01de\2\u1f44\u1f42\3\2\2\2\u1f45\u1f48\3\2\2\2\u1f46\u1f44\3\2"+
		"\2\2\u1f46\u1f47\3\2\2\2\u1f47\u1f4c\3\2\2\2\u1f48\u1f46\3\2\2\2\u1f49"+
		"\u1f4a\7\u017d\2\2\u1f4a\u1f4b\7\u0092\2\2\u1f4b\u1f4d\7\u00ed\2\2\u1f4c"+
		"\u1f49\3\2\2\2\u1f4c\u1f4d\3\2\2\2\u1f4d\u1f50\3\2\2\2\u1f4e\u1f4f\7\20"+
		"\2\2\u1f4f\u1f51\5\u03ba\u01de\2\u1f50\u1f4e\3\2\2\2\u1f50\u1f51\3\2\2"+
		"\2\u1f51\u1f53\3\2\2\2\u1f52\u1f54\7\u0339\2\2\u1f53\u1f52\3\2\2\2\u1f53"+
		"\u1f54\3\2\2\2\u1f54\u1f66\3\2\2\2\u1f55\u1f5c\7\u011d\2\2\u1f56\u1f57"+
		"\7\u0336\2\2\u1f57\u1f58\7\u017d\2\2\u1f58\u1f59\7\u01c1\2\2\u1f59\u1f5a"+
		"\7\u0324\2\2\u1f5a\u1f5b\7\u031b\2\2\u1f5b\u1f5d\7\u0337\2\2\u1f5c\u1f56"+
		"\3\2\2\2\u1f5c\u1f5d\3\2\2\2\u1f5d\u1f5f\3\2\2\2\u1f5e\u1f60\7\u0339\2"+
		"\2\u1f5f\u1f5e\3\2\2\2\u1f5f\u1f60\3\2\2\2\u1f60\u1f66\3\2\2\2\u1f61\u1f66"+
		"\5\u0284\u0143\2\u1f62\u1f66\5\u0286\u0144\2\u1f63\u1f66\5\u0288\u0145"+
		"\2\u1f64\u1f66\5\u027a\u013e\2\u1f65\u1f2a\3\2\2\2\u1f65\u1f2e\3\2\2\2"+
		"\u1f65\u1f55\3\2\2\2\u1f65\u1f61\3\2\2\2\u1f65\u1f62\3\2\2\2\u1f65\u1f63"+
		"\3\2\2\2\u1f65\u1f64\3\2\2\2\u1f66\u0279\3\2\2\2\u1f67\u1f68\7I\2\2\u1f68"+
		"\u1f69\7+\2\2\u1f69\u1f6c\5\u03ba\u01de\2\u1f6a\u1f6b\7\24\2\2\u1f6b\u1f6d"+
		"\5\u03ba\u01de\2\u1f6c\u1f6a\3\2\2\2\u1f6c\u1f6d\3\2\2\2\u1f6d\u1f71\3"+
		"\2\2\2\u1f6e\u1f6f\7\u008c\2\2\u1f6f\u1f72\5\u027c\u013f\2\u1f70\u1f72"+
		"\5\u0280\u0141\2\u1f71\u1f6e\3\2\2\2\u1f71\u1f70\3\2\2\2\u1f72\u1f79\3"+
		"\2\2\2\u1f73\u1f74\7\u0186\2\2\u1f74\u1f75\7\u0086\2\2\u1f75\u1f76\7\34"+
		"\2\2\u1f76\u1f77\7\u01e1\2\2\u1f77\u1f78\7\u0324\2\2\u1f78\u1f7a\t\t\2"+
		"\2\u1f79\u1f73\3\2\2\2\u1f79\u1f7a\3\2\2\2\u1f7a\u027b\3\2\2\2\u1f7b\u1f7c"+
		"\7\u0199\2\2\u1f7c\u1f8d\5\u03ba\u01de\2\u1f7d\u1f7f\7\u01f3\2\2\u1f7e"+
		"\u1f7d\3\2\2\2\u1f7e\u1f7f\3\2\2\2\u1f7f\u1f80\3\2\2\2\u1f80\u1f81\7\u0082"+
		"\2\2\u1f81\u1f82\7\u0324\2\2\u1f82\u1f8a\7\u0320\2\2\u1f83\u1f84\7\u017d"+
		"\2\2\u1f84\u1f85\7\u028d\2\2\u1f85\u1f86\7\u00ad\2\2\u1f86\u1f87\7\u0336"+
		"\2\2\u1f87\u1f88\5\u027e\u0140\2\u1f88\u1f89\7\u0337\2\2\u1f89\u1f8b\3"+
		"\2\2\2\u1f8a\u1f83\3\2\2\2\u1f8a\u1f8b\3\2\2\2\u1f8b\u1f8d\3\2\2\2\u1f8c"+
		"\u1f7b\3\2\2\2\u1f8c\u1f7e\3\2\2\2\u1f8d\u027d\3\2\2\2\u1f8e\u1f8f\t^"+
		"\2\2\u1f8f\u1f90\7\u0324\2\2\u1f90\u1f97\7\u0320\2\2\u1f91\u1f92\7\u0338"+
		"\2\2\u1f92\u1f93\t_\2\2\u1f93\u1f94\7&\2\2\u1f94\u1f95\7\u00f5\2\2\u1f95"+
		"\u1f96\7\u0324\2\2\u1f96\u1f98\7\u0320\2\2\u1f97\u1f91\3\2\2\2\u1f97\u1f98"+
		"\3\2\2\2\u1f98\u027f\3\2\2\2\u1f99\u1f9a\7\u01ef\2\2\u1f9a\u1f9b\7&\2"+
		"\2\u1f9b\u1f9c\7\u00f5\2\2\u1f9c\u1f9d\7\u0324\2\2\u1f9d\u1f9f\7\u0320"+
		"\2\2\u1f9e\u1f99\3\2\2\2\u1f9e\u1f9f\3\2\2\2\u1f9f\u1fa0\3\2\2\2\u1fa0"+
		"\u1fa1\7\u017d\2\2\u1fa1\u1fa2\7\u02e4\2\2\u1fa2\u1fa3\7\u0324\2\2\u1fa3"+
		"\u1fa8\7\u0320\2\2\u1fa4\u1fa5\7\u0338\2\2\u1fa5\u1fa7\5\u0282\u0142\2"+
		"\u1fa6\u1fa4\3\2\2\2\u1fa7\u1faa\3\2\2\2\u1fa8\u1fa6\3\2\2\2\u1fa8\u1fa9"+
		"\3\2\2\2\u1fa9\u0281\3\2\2\2\u1faa\u1fa8\3\2\2\2\u1fab\u1fac\t`\2\2\u1fac"+
		"\u1fad\7\u0324\2\2\u1fad\u1fae\7\u0320\2\2\u1fae\u0283\3\2\2\2\u1faf\u1fb0"+
		"\7\u00e8\2\2\u1fb0\u1fb1\7\u02e7\2\2\u1fb1\u1fb2\7\u00ad\2\2\u1fb2\u1fb3"+
		"\5\u03ba\u01de\2\u1fb3\u1fb4\7\u01d4\2\2\u1fb4\u1fb5\7&\2\2\u1fb5\u1fb6"+
		"\5\u0290\u0149\2\u1fb6\u1fc0\3\2\2\2\u1fb7\u1fb8\7\u00e8\2\2\u1fb8\u1fb9"+
		"\7\u00be\2\2\u1fb9\u1fba\7\u00ad\2\2\u1fba\u1fbb\7\u01d4\2\2\u1fbb\u1fbc"+
		"\7&\2\2\u1fbc\u1fbd\7\u00f5\2\2\u1fbd\u1fbe\7\u0324\2\2\u1fbe\u1fc0\7"+
		"\u0320\2\2\u1fbf\u1faf\3\2\2\2\u1fbf\u1fb7\3\2\2\2\u1fc0\u0285\3\2\2\2"+
		"\u1fc1\u1fc2\7\63\2\2\u1fc2\u1fc3\7\u02e7\2\2\u1fc3\u1fc4\7\u00ad\2\2"+
		"\u1fc4\u1fcd\5\u03ba\u01de\2\u1fc5\u1fc6\7\63\2\2\u1fc6\u1fc7\7\6\2\2"+
		"\u1fc7\u1fc8\7\u02e7\2\2\u1fc8\u1fcd\7\u022e\2\2\u1fc9\u1fca\7\63\2\2"+
		"\u1fca\u1fcb\7\u00be\2\2\u1fcb\u1fcd\7\u00ad\2\2\u1fcc\u1fc1\3\2\2\2\u1fcc"+
		"\u1fc5\3\2\2\2\u1fcc\u1fc9\3\2\2\2\u1fcd\u0287\3\2\2\2\u1fce\u1fcf\7I"+
		"\2\2\u1fcf\u1fd0\7\u00be\2\2\u1fd0\u1fd1\7\u00ad\2\2\u1fd1\u1fd2\7\u01ef"+
		"\2\2\u1fd2\u1fd3\7&\2\2\u1fd3\u1fd4\7\u00f5\2\2\u1fd4\u1fd5\7\u0324\2"+
		"\2\u1fd5\u1ff2\7\u0320\2\2\u1fd6\u1fd7\7I\2\2\u1fd7\u1fd8\7\u02e7\2\2"+
		"\u1fd8\u1fd9\7\u00ad\2\2\u1fd9\u1fdc\5\u03ba\u01de\2\u1fda\u1fdb\7\24"+
		"\2\2\u1fdb\u1fdd\5\u03ba\u01de\2\u1fdc\u1fda\3\2\2\2\u1fdc\u1fdd\3\2\2"+
		"\2\u1fdd\u1fe1\3\2\2\2\u1fde\u1fdf\7\u008c\2\2\u1fdf\u1fe0\7\u0292\2\2"+
		"\u1fe0\u1fe2\5\u03ba\u01de\2\u1fe1\u1fde\3\2\2\2\u1fe1\u1fe2\3\2\2\2\u1fe2"+
		"\u1fe3\3\2\2\2\u1fe3\u1fed\7\u017d\2\2\u1fe4\u1fe9\5\u028a\u0146\2\u1fe5"+
		"\u1fe6\7\u01ef\2\2\u1fe6\u1fe7\7&\2\2\u1fe7\u1fe9\5\u028e\u0148\2\u1fe8"+
		"\u1fe4\3\2\2\2\u1fe8\u1fe5\3\2\2\2\u1fe9\u1feb\3\2\2\2\u1fea\u1fec\7\u0338"+
		"\2\2\u1feb\u1fea\3\2\2\2\u1feb\u1fec\3\2\2\2\u1fec\u1fee\3\2\2\2\u1fed"+
		"\u1fe8\3\2\2\2\u1fee\u1fef\3\2\2\2\u1fef\u1fed\3\2\2\2\u1fef\u1ff0\3\2"+
		"\2\2\u1ff0\u1ff2\3\2\2\2\u1ff1\u1fce\3\2\2\2\u1ff1\u1fd6\3\2\2\2\u1ff2"+
		"\u0289\3\2\2\2\u1ff3\u1ff4\7\u022d\2\2\u1ff4\u1ff5\7\u0324\2\2\u1ff5\u2003"+
		"\7\u0320\2\2\u1ff6\u1ff7\7\u018e\2\2\u1ff7\u1ff8\7\u0324\2\2\u1ff8\u2003"+
		"\5\u028c\u0147\2\u1ff9\u1ffa\7\u021b\2\2\u1ffa\u1ffb\7\u0324\2\2\u1ffb"+
		"\u2003\7\u0320\2\2\u1ffc\u1ffd\7\u0293\2\2\u1ffd\u1ffe\7\u0324\2\2\u1ffe"+
		"\u2003\7\u0320\2\2\u1fff\u2000\7\u01c7\2\2\u2000\u2001\7\u0324\2\2\u2001"+
		"\u2003\t\f\2\2\u2002\u1ff3\3\2\2\2\u2002\u1ff6\3\2\2\2\u2002\u1ff9\3\2"+
		"\2\2\u2002\u1ffc\3\2\2\2\u2002\u1fff\3\2\2\2\u2003\u028b\3\2\2\2\u2004"+
		"\u2005\t\63\2\2\u2005\u028d\3\2\2\2\u2006\u2007\7+\2\2\u2007\u2012\5\u03ba"+
		"\u01de\2\u2008\u2009\7\22\2\2\u2009\u200a\7\u00ad\2\2\u200a\u2012\5\u03ba"+
		"\u01de\2\u200b\u200c\7\u02e7\2\2\u200c\u200d\7\u00ad\2\2\u200d\u2012\5"+
		"\u03ba\u01de\2\u200e\u200f\7\u00f5\2\2\u200f\u2010\7\u0324\2\2\u2010\u2012"+
		"\7\u0320\2\2\u2011\u2006\3\2\2\2\u2011\u2008\3\2\2\2\u2011\u200b\3\2\2"+
		"\2\u2011\u200e\3\2\2\2\u2012\u028f\3\2\2\2\u2013\u2014\7+\2\2\u2014\u2019"+
		"\5\u03ba\u01de\2\u2015\u2016\7\u017d\2\2\u2016\u2017\7\u00f5\2\2\u2017"+
		"\u2018\7\u0324\2\2\u2018\u201a\7\u0320\2\2\u2019\u2015\3\2\2\2\u2019\u201a"+
		"\3\2\2\2\u201a\u202b\3\2\2\2\u201b\u201c\7\22\2\2\u201c\u201d\7\u00ad"+
		"\2\2\u201d\u2022\5\u03ba\u01de\2\u201e\u201f\7\u017d\2\2\u201f\u2020\7"+
		"\u00f5\2\2\u2020\u2021\7\u0324\2\2\u2021\u2023\7\u0320\2\2\u2022\u201e"+
		"\3\2\2\2\u2022\u2023\3\2\2\2\u2023\u202b\3\2\2\2\u2024\u2025\7\u02e7\2"+
		"\2\u2025\u2026\7\u00ad\2\2\u2026\u202b\5\u03ba\u01de\2\u2027\u2028\7\u00f5"+
		"\2\2\u2028\u2029\7\u0324\2\2\u2029\u202b\7\u0320\2\2\u202a\u2013\3\2\2"+
		"\2\u202a\u201b\3\2\2\2\u202a\u2024\3\2\2\2\u202a\u2027\3\2\2\2\u202b\u0291"+
		"\3\2\2\2\u202c\u2047\7w\2\2\u202d\u202e\7\u0176\2\2\u202e\u2047\5\u03ba"+
		"\u01de\2\u202f\u2030\7\u02ea\2\2\u2030\u2047\5\u03ba\u01de\2\u2031\u2033"+
		"\7\u01c0\2\2\u2032\u2034\5\u03ba\u01de\2\u2033\u2032\3\2\2\2\u2033\u2034"+
		"\3\2\2\2\u2034\u2047\3\2\2\2\u2035\u2036\7I\2\2\u2036\u2047\ta\2\2\u2037"+
		"\u2047\7\u02d3\2\2\u2038\u2047\7\u021e\2\2\u2039\u2047\7\u0133\2\2\u203a"+
		"\u2047\7\u010f\2\2\u203b\u2047\7\u00a3\2\2\u203c\u2044\7\n\2\2\u203d\u203f"+
		"\7\r\2\2\u203e\u203d\3\2\2\2\u203e\u203f\3\2\2\2\u203f\u2042\3\2\2\2\u2040"+
		"\u2043\5\u03ba\u01de\2\u2041\u2043\7U\2\2\u2042\u2040\3\2\2\2\u2042\u2041"+
		"\3\2\2\2\u2043\u2045\3\2\2\2\u2044\u203e\3\2\2\2\u2044\u2045\3\2\2\2\u2045"+
		"\u2047\3\2\2\2\u2046\u202c\3\2\2\2\u2046\u202d\3\2\2\2\u2046\u202f\3\2"+
		"\2\2\u2046\u2031\3\2\2\2\u2046\u2035\3\2\2\2\u2046\u2037\3\2\2\2\u2046"+
		"\u2038\3\2\2\2\u2046\u2039\3\2\2\2\u2046\u203a\3\2\2\2\u2046\u203b\3\2"+
		"\2\2\u2046\u203c\3\2\2\2\u2047\u0293\3\2\2\2\u2048\u2049\7\u013e\2\2\u2049"+
		"\u204c\7\u031b\2\2\u204a\u204b\7\u0331\2\2\u204b\u204d\5\u03ba\u01de\2"+
		"\u204c\u204a\3\2\2\2\u204c\u204d\3\2\2\2\u204d\u204e\3\2\2\2\u204e\u204f"+
		"\7\u0324\2\2\u204f\u2051\5\u02cc\u0167\2\u2050\u2052\7\u0339\2\2\u2051"+
		"\u2050\3\2\2\2\u2051\u2052\3\2\2\2\u2052\u2070\3\2\2\2\u2053\u2054\7\u013e"+
		"\2\2\u2054\u2055\7\u031b\2\2\u2055\u2056\5\u03c0\u01e1\2\u2056\u2058\5"+
		"\u02cc\u0167\2\u2057\u2059\7\u0339\2\2\u2058\u2057\3\2\2\2\u2058\u2059"+
		"\3\2\2\2\u2059\u2070\3\2\2\2\u205a\u205b\7\u013e\2\2\u205b\u205c\7\u031b"+
		"\2\2\u205c\u205d\7\u0324\2\2\u205d\u205e\7P\2\2\u205e\u2069\5\u02c2\u0162"+
		"\2\u205f\u2067\7\u0086\2\2\u2060\u2061\7\u010b\2\2\u2061\u2068\7\u0278"+
		"\2\2\u2062\u2065\7\u016d\2\2\u2063\u2064\7\u00e2\2\2\u2064\u2066\5\u0392"+
		"\u01ca\2\u2065\u2063\3\2\2\2\u2065\u2066\3\2\2\2\u2066\u2068\3\2\2\2\u2067"+
		"\u2060\3\2\2\2\u2067\u2062\3\2\2\2\u2068\u206a\3\2\2\2\u2069\u205f\3\2"+
		"\2\2\u2069\u206a\3\2\2\2\u206a\u206c\3\2\2\2\u206b\u206d\7\u0339\2\2\u206c"+
		"\u206b\3\2\2\2\u206c\u206d\3\2\2\2\u206d\u2070\3\2\2\2\u206e\u2070\5\u02c8"+
		"\u0165\2\u206f\u2048\3\2\2\2\u206f\u2053\3\2\2\2\u206f\u205a\3\2\2\2\u206f"+
		"\u206e\3\2\2\2\u2070\u0295\3\2\2\2\u2071\u2072\7\34\2\2\u2072\u2073\7"+
		"d\2\2\u2073\u2076\tb\2\2\u2074\u2077\5\u03ba\u01de\2\u2075\u2077\7\u031b"+
		"\2\2\u2076\u2074\3\2\2\2\u2076\u2075\3\2\2\2\u2076\u2077\3\2\2\2\u2077"+
		"\u2079\3\2\2\2\u2078\u207a\7\u0339\2\2\u2079\u2078\3\2\2\2\u2079\u207a"+
		"\3\2\2\2\u207a\u20c3\3\2\2\2\u207b\u207c\7\34\2\2\u207c\u2086\tb\2\2\u207d"+
		"\u2080\5\u03ba\u01de\2\u207e\u2080\7\u031b\2\2\u207f\u207d\3\2\2\2\u207f"+
		"\u207e\3\2\2\2\u2080\u2084\3\2\2\2\u2081\u2082\7\u017d\2\2\u2082\u2083"+
		"\7\u0241\2\2\u2083\u2085\7\u0320\2\2\u2084\u2081\3\2\2\2\u2084\u2085\3"+
		"\2\2\2\u2085\u2087\3\2\2\2\u2086\u207f\3\2\2\2\u2086\u2087\3\2\2\2\u2087"+
		"\u2089\3\2\2\2\u2088\u208a\7\u0339\2\2\u2089\u2088\3\2\2\2\u2089\u208a"+
		"\3\2\2\2\u208a\u20c3\3\2\2\2\u208b\u208c\7:\2\2\u208c\u2099\tb\2\2\u208d"+
		"\u2090\5\u03ba\u01de\2\u208e\u2090\7\u031b\2\2\u208f\u208d\3\2\2\2\u208f"+
		"\u208e\3\2\2\2\u2090\u2097\3\2\2\2\u2091\u2092\7\u017d\2\2\u2092\u2093"+
		"\7\u0336\2\2\u2093\u2094\7\u01d9\2\2\u2094\u2095\7\u0324\2\2\u2095\u2096"+
		"\t\t\2\2\u2096\u2098\7\u0337\2\2\u2097\u2091\3\2\2\2\u2097\u2098\3\2\2"+
		"\2\u2098\u209a\3\2\2\2\u2099\u208f\3\2\2\2\u2099\u209a\3\2\2\2\u209a\u209c"+
		"\3\2\2\2\u209b\u209d\7\u0339\2\2\u209c\u209b\3\2\2\2\u209c\u209d\3\2\2"+
		"\2\u209d\u20c3\3\2\2\2\u209e\u20a0\7:\2\2\u209f\u20a1\7\u030d\2\2\u20a0"+
		"\u209f\3\2\2\2\u20a0\u20a1\3\2\2\2\u20a1\u20a3\3\2\2\2\u20a2\u20a4\7\u0339"+
		"\2\2\u20a3\u20a2\3\2\2\2\u20a3\u20a4\3\2\2\2\u20a4\u20c3\3\2\2\2\u20a5"+
		"\u20a6\7:\2\2\u20a6\u20c3\5\u03ba\u01de\2\u20a7\u20a8\7\u0121\2\2\u20a8"+
		"\u20c3\5\u03ba\u01de\2\u20a9\u20aa\7\u0121\2\2\u20aa\u20ad\tb\2\2\u20ab"+
		"\u20ae\5\u03ba\u01de\2\u20ac\u20ae\7\u031b\2\2\u20ad\u20ab\3\2\2\2\u20ad"+
		"\u20ac\3\2\2\2\u20ad\u20ae\3\2\2\2\u20ae\u20b0\3\2\2\2\u20af\u20b1\7\u0339"+
		"\2\2\u20b0\u20af\3\2\2\2\u20b0\u20b1\3\2\2\2\u20b1\u20c3\3\2\2\2\u20b2"+
		"\u20b4\7\u0121\2\2\u20b3\u20b5\7\u030d\2\2\u20b4\u20b3\3\2\2\2\u20b4\u20b5"+
		"\3\2\2\2\u20b5\u20b7\3\2\2\2\u20b6\u20b8\7\u0339\2\2\u20b7\u20b6\3\2\2"+
		"\2\u20b7\u20b8\3\2\2\2\u20b8\u20c3\3\2\2\2\u20b9\u20ba\7\u012d\2\2\u20ba"+
		"\u20bd\tb\2\2\u20bb\u20be\5\u03ba\u01de\2\u20bc\u20be\7\u031b\2\2\u20bd"+
		"\u20bb\3\2\2\2\u20bd\u20bc\3\2\2\2\u20bd\u20be\3\2\2\2\u20be\u20c0\3\2"+
		"\2\2\u20bf\u20c1\7\u0339\2\2\u20c0\u20bf\3\2\2\2\u20c0\u20c1\3\2\2\2\u20c1"+
		"\u20c3\3\2\2\2\u20c2\u2071\3\2\2\2\u20c2\u207b\3\2\2\2\u20c2\u208b\3\2"+
		"\2\2\u20c2\u209e\3\2\2\2\u20c2\u20a5\3\2\2\2\u20c2\u20a7\3\2\2\2\u20c2"+
		"\u20a9\3\2\2\2\u20c2\u20b2\3\2\2\2\u20c2\u20b9\3\2\2\2\u20c3\u0297\3\2"+
		"\2\2\u20c4\u20c6\7\u0211\2\2\u20c5\u20c7\7\u031c\2\2\u20c6\u20c5\3\2\2"+
		"\2\u20c6\u20c7\3\2\2\2\u20c7\u0299\3\2\2\2\u20c8\u20c9\7\u0170\2\2\u20c9"+
		"\u20cb\5\u03ba\u01de\2\u20ca\u20cc\7\u0339\2\2\u20cb\u20ca\3\2\2\2\u20cb"+
		"\u20cc\3\2\2\2\u20cc\u029b\3\2\2\2\u20cd\u20cf\7\u013f\2\2\u20ce\u20d0"+
		"\7\u0320\2\2\u20cf\u20ce\3\2\2\2\u20cf\u20d0\3\2\2\2\u20d0\u029d\3\2\2"+
		"\2\u20d1\u20d2\7W\2\2\u20d2\u20d7\5\u03bc\u01df\2\u20d3\u20d4\7\u0336"+
		"\2\2\u20d4\u20d5\5\u035a\u01ae\2\u20d5\u20d6\7\u0337\2\2\u20d6\u20d8\3"+
		"\2\2\2\u20d7\u20d3\3\2\2\2\u20d7\u20d8\3\2\2\2\u20d8\u20db\3\2\2\2\u20d9"+
		"\u20da\7\u017d\2\2\u20da\u20dc\5\u02a0\u0151\2\u20db\u20d9\3\2\2\2\u20db"+
		"\u20dc\3\2\2\2\u20dc\u20de\3\2\2\2\u20dd\u20df\7\u0339\2\2\u20de\u20dd"+
		"\3\2\2\2\u20de\u20df\3\2\2\2\u20df\u029f\3\2\2\2\u20e0\u20e3\5\u03bc\u01df"+
		"\2\u20e1\u20e2\7\u0338\2\2\u20e2\u20e4\5\u03bc\u01df\2\u20e3\u20e1\3\2"+
		"\2\2\u20e3\u20e4\3\2\2\2\u20e4\u02a1\3\2\2\2\u20e5\u20e6\7w\2\2\u20e6"+
		"\u20e7\7\20\2\2\u20e7\u20e8\tc\2\2\u20e8\u02a3\3\2\2\2\u20e9\u20eb\7\u031b"+
		"\2\2\u20ea\u20ec\7\20\2\2\u20eb\u20ea\3\2\2\2\u20eb\u20ec\3\2\2\2\u20ec"+
		"\u20ed\3\2\2\2\u20ed\u20f0\5\u03b2\u01da\2\u20ee\u20ef\7\u0324\2\2\u20ef"+
		"\u20f1\5\u02cc\u0167\2\u20f0\u20ee\3\2\2\2\u20f0\u20f1\3\2\2\2\u20f1\u02a5"+
		"\3\2\2\2\u20f2\u20f3\7\u0157\2\2\u20f3\u20f4\7\u0336\2\2\u20f4\u20f5\5"+
		"\u02ac\u0157\2\u20f5\u20f6\7\u0337\2\2\u20f6\u02a7\3\2\2\2\u20f7\u20f8"+
		"\7\u030f\2\2\u20f8\u20fa\7\u0336\2\2\u20f9\u20fb\td\2\2\u20fa\u20f9\3"+
		"\2\2\2\u20fa\u20fb\3\2\2\2\u20fb\u20fc\3\2\2\2\u20fc\u20fd\5\u02aa\u0156"+
		"\2\u20fd\u20fe\7\u0337\2\2\u20fe\u02a9\3\2\2\2\u20ff\u2100\7\u031d\2\2"+
		"\u2100\u2101\7\u0331\2\2\u2101\u2102\7\u031d\2\2\u2102\u02ab\3\2\2\2\u2103"+
		"\u210a\5\u02ae\u0158\2\u2104\u2106\7\u0338\2\2\u2105\u2104\3\2\2\2\u2105"+
		"\u2106\3\2\2\2\u2106\u2107\3\2\2\2\u2107\u2109\5\u02ae\u0158\2\u2108\u2105"+
		"\3\2\2\2\u2109\u210c\3\2\2\2\u210a\u2108\3\2\2\2\u210a\u210b\3\2\2\2\u210b"+
		"\u02ad\3\2\2\2\u210c\u210a\3\2\2\2\u210d\u2111\5\u02b0\u0159\2\u210e\u2111"+
		"\5\u02b2\u015a\2\u210f\u2111\5\u02b6\u015c\2\u2110\u210d\3\2\2\2\u2110"+
		"\u210e\3\2\2\2\u2110\u210f\3\2\2\2\u2111\u02af\3\2\2\2\u2112\u2116\5\u03ba"+
		"\u01de\2\u2113\u2117\5\u03b2\u01da\2\u2114\u2115\7\20\2\2\u2115\u2117"+
		"\5\u02cc\u0167\2\u2116\u2113\3\2\2\2\u2116\u2114\3\2\2\2\u2117\u211a\3"+
		"\2\2\2\u2118\u2119\7\67\2\2\u2119\u211b\5\u03ba\u01de\2\u211a\u2118\3"+
		"\2\2\2\u211a\u211b\3\2\2\2\u211b\u211d\3\2\2\2\u211c\u211e\5\u039a\u01ce"+
		"\2\u211d\u211c\3\2\2\2\u211d\u211e\3\2\2\2\u211e\u2134\3\2\2\2\u211f\u2120"+
		"\7=\2\2\u2120\u2122\5\u03ba\u01de\2\u2121\u211f\3\2\2\2\u2121\u2122\3"+
		"\2\2\2\u2122\u2123\3\2\2\2\u2123\u2125\5\u039c\u01cf\2\u2124\u2126\5\u039c"+
		"\u01cf\2\u2125\u2124\3\2\2\2\u2125\u2126\3\2\2\2\u2126\u2135\3\2\2\2\u2127"+
		"\u212d\7\u0097\2\2\u2128\u2129\7\u0336\2\2\u2129\u212a\7\u031c\2\2\u212a"+
		"\u212b\7\u0338\2\2\u212b\u212c\7\u031c\2\2\u212c\u212e\7\u0337\2\2\u212d"+
		"\u2128\3\2\2\2\u212d\u212e\3\2\2\2\u212e\u2132\3\2\2\2\u212f\u2130\7\u00dd"+
		"\2\2\u2130\u2131\7\u0086\2\2\u2131\u2133\7\u0113\2\2\u2132\u212f\3\2\2"+
		"\2\u2132\u2133\3\2\2\2\u2133\u2135\3\2\2\2\u2134\u2121\3\2\2\2\u2134\u2127"+
		"\3\2\2\2\u2134\u2135\3\2\2\2\u2135\u2137\3\2\2\2\u2136\u2138\7\u0124\2"+
		"\2\u2137\u2136\3\2\2\2\u2137\u2138\3\2\2\2\u2138\u213c\3\2\2\2\u2139\u213b"+
		"\5\u02b4\u015b\2\u213a\u2139\3\2\2\2\u213b\u213e\3\2\2\2\u213c\u213a\3"+
		"\2\2\2\u213c\u213d\3\2\2\2\u213d\u02b1\3\2\2\2\u213e\u213c\3\2\2\2\u213f"+
		"\u2140\5\u03ba\u01de\2\u2140\u2141\te\2\2\u2141\u2145\5\u02cc\u0167\2"+
		"\u2142\u2146\7\u0242\2\2\u2143\u2144\7\u00dd\2\2\u2144\u2146\7\u0242\2"+
		"\2\u2145\u2142\3\2\2\2\u2145\u2143\3\2\2\2\u2145\u2146\3\2\2\2\u2146\u02b3"+
		"\3\2\2\2\u2147\u2148\7=\2\2\u2148\u214a\5\u03ba\u01de\2\u2149\u2147\3"+
		"\2\2\2\u2149\u214a\3\2\2\2\u214a\u2170\3\2\2\2\u214b\u214c\7\u0101\2\2"+
		"\u214c\u214f\7\u00ad\2\2\u214d\u214f\7\u0169\2\2\u214e\u214b\3\2\2\2\u214e"+
		"\u214d\3\2\2\2\u214f\u2151\3\2\2\2\u2150\u2152\5\u0398\u01cd\2\u2151\u2150"+
		"\3\2\2\2\u2151\u2152\3\2\2\2\u2152\u2154\3\2\2\2\u2153\u2155\5\u02bc\u015f"+
		"\2\u2154\u2153\3\2\2\2\u2154\u2155\3\2\2\2\u2155\u2171\3\2\2\2\u2156\u215a"+
		"\7.\2\2\u2157\u2158\7\u00dd\2\2\u2158\u2159\7\u0086\2\2\u2159\u215b\7"+
		"\u0113\2\2\u215a\u2157\3\2\2\2\u215a\u215b\3\2\2\2\u215b\u215c\3\2\2\2"+
		"\u215c\u215d\7\u0336\2\2\u215d\u215e\5\u02e2\u0172\2\u215e\u215f\7\u0337"+
		"\2\2\u215f\u2171\3\2\2\2\u2160\u2161\7\u0089\2\2\u2161\u2163\7\u00ad\2"+
		"\2\u2162\u2160\3\2\2\2\u2162\u2163\3\2\2\2\u2163\u2164\3\2\2\2\u2164\u2165"+
		"\7\u010f\2\2\u2165\u2166\5\u0382\u01c2\2\u2166\u2167\7\u0336\2\2\u2167"+
		"\u2168\5\u0392\u01ca\2\u2168\u216a\7\u0337\2\2\u2169\u216b\5\u02b8\u015d"+
		"\2\u216a\u2169\3\2\2\2\u216a\u216b\3\2\2\2\u216b\u216d\3\2\2\2\u216c\u216e"+
		"\5\u02ba\u015e\2\u216d\u216c\3\2\2\2\u216d\u216e\3\2\2\2\u216e\u2171\3"+
		"\2\2\2\u216f\u2171\5\u039a\u01ce\2\u2170\u214e\3\2\2\2\u2170\u2156\3\2"+
		"\2\2\u2170\u2162\3\2\2\2\u2170\u216f\3\2\2\2\u2171\u02b5\3\2\2\2\u2172"+
		"\u2173\7=\2\2\u2173\u2175\5\u03ba\u01de\2\u2174\u2172\3\2\2\2\u2174\u2175"+
		"\3\2\2\2\u2175\u21b6\3\2\2\2\u2176\u2177\7\u0101\2\2\u2177\u217a\7\u00ad"+
		"\2\2\u2178\u217a\7\u0169\2\2\u2179\u2176\3\2\2\2\u2179\u2178\3\2\2\2\u217a"+
		"\u217c\3\2\2\2\u217b\u217d\5\u0398\u01cd\2\u217c\u217b\3\2\2\2\u217c\u217d"+
		"\3\2\2\2\u217d\u217e\3\2\2\2\u217e\u217f\7\u0336\2\2\u217f\u2180\5\u0390"+
		"\u01c9\2\u2180\u2182\7\u0337\2\2\u2181\u2183\5\u02bc\u015f\2\u2182\u2181"+
		"\3\2\2\2\u2182\u2183\3\2\2\2\u2183\u2186\3\2\2\2\u2184\u2185\7\u00e6\2"+
		"\2\u2185\u2187\5\u03ba\u01de\2\u2186\u2184\3\2\2\2\u2186\u2187\3\2\2\2"+
		"\u2187\u21b7\3\2\2\2\u2188\u218c\7.\2\2\u2189\u218a\7\u00dd\2\2\u218a"+
		"\u218b\7\u0086\2\2\u218b\u218d\7\u0113\2\2\u218c\u2189\3\2\2\2\u218c\u218d"+
		"\3\2\2\2\u218d\u218e\3\2\2\2\u218e\u218f\7\u0336\2\2\u218f\u2190\5\u02e2"+
		"\u0172\2\u2190\u2191\7\u0337\2\2\u2191\u21b7\3\2\2\2\u2192\u2194\7Z\2"+
		"\2\u2193\u2195\7\u0336\2\2\u2194\u2193\3\2\2\2\u2194\u2195\3\2\2\2\u2195"+
		"\u219a\3\2\2\2\u2196\u219b\7\u0320\2\2\u2197\u219b\7\u033e\2\2\u2198\u219b"+
		"\5\u0334\u019b\2\u2199\u219b\7\u031c\2\2\u219a\u2196\3\2\2\2\u219a\u2197"+
		"\3\2\2\2\u219a\u2198\3\2\2\2\u219a\u2199\3\2\2\2\u219b\u219c\3\2\2\2\u219c"+
		"\u219a\3\2\2\2\u219c\u219d\3\2\2\2\u219d\u219f\3\2\2\2\u219e\u21a0\7\u0337"+
		"\2\2\u219f\u219e\3\2\2\2\u219f\u21a0\3\2\2\2\u21a0\u21a1\3\2\2\2\u21a1"+
		"\u21a2\7\u0086\2\2\u21a2\u21b7\5\u03ba\u01de\2\u21a3\u21a4\7\u0089\2\2"+
		"\u21a4\u21a5\7\u00ad\2\2\u21a5\u21a6\7\u0336\2\2\u21a6\u21a7\5\u0392\u01ca"+
		"\2\u21a7\u21a8\7\u0337\2\2\u21a8\u21a9\7\u010f\2\2\u21a9\u21ae\5\u0382"+
		"\u01c2\2\u21aa\u21ab\7\u0336\2\2\u21ab\u21ac\5\u0392\u01ca\2\u21ac\u21ad"+
		"\7\u0337\2\2\u21ad\u21af\3\2\2\2\u21ae\u21aa\3\2\2\2\u21ae\u21af\3\2\2"+
		"\2\u21af\u21b1\3\2\2\2\u21b0\u21b2\5\u02b8\u015d\2\u21b1\u21b0\3\2\2\2"+
		"\u21b1\u21b2\3\2\2\2\u21b2\u21b4\3\2\2\2\u21b3\u21b5\5\u02ba\u015e\2\u21b4"+
		"\u21b3\3\2\2\2\u21b4\u21b5\3\2\2\2\u21b5\u21b7\3\2\2\2\u21b6\u2179\3\2"+
		"\2\2\u21b6\u2188\3\2\2\2\u21b6\u2192\3\2\2\2\u21b6\u21a3\3\2\2\2\u21b7"+
		"\u02b7\3\2\2\2\u21b8\u21b9\7\u00e6\2\2\u21b9\u21c1\7]\2\2\u21ba\u21bb"+
		"\7\u0265\2\2\u21bb\u21c2\7\u0184\2\2\u21bc\u21c2\7)\2\2\u21bd\u21be\7"+
		"\u013e\2\2\u21be\u21c2\7\u00e0\2\2\u21bf\u21c0\7\u013e\2\2\u21c0\u21c2"+
		"\7Z\2\2\u21c1\u21ba\3\2\2\2\u21c1\u21bc\3\2\2\2\u21c1\u21bd\3\2\2\2\u21c1"+
		"\u21bf\3\2\2\2\u21c2\u02b9\3\2\2\2\u21c3\u21c4\7\u00e6\2\2\u21c4\u21cc"+
		"\7\u016d\2\2\u21c5\u21c6\7\u0265\2\2\u21c6\u21cd\7\u0184\2\2\u21c7\u21cd"+
		"\7)\2\2\u21c8\u21c9\7\u013e\2\2\u21c9\u21cd\7\u00e0\2\2\u21ca\u21cb\7"+
		"\u013e\2\2\u21cb\u21cd\7Z\2\2\u21cc\u21c5\3\2\2\2\u21cc\u21c7\3\2\2\2"+
		"\u21cc\u21c8\3\2\2\2\u21cc\u21ca\3\2\2\2\u21cd\u02bb\3\2\2\2\u21ce\u21cf"+
		"\7\u017d\2\2\u21cf\u21d0\7\u0336\2\2\u21d0\u21d5\5\u02be\u0160\2\u21d1"+
		"\u21d2\7\u0338\2\2\u21d2\u21d4\5\u02be\u0160\2\u21d3\u21d1\3\2\2\2\u21d4"+
		"\u21d7\3\2\2\2\u21d5\u21d3\3\2\2\2\u21d5\u21d6\3\2\2\2\u21d6\u21d8\3\2"+
		"\2\2\u21d7\u21d5\3\2\2\2\u21d8\u21d9\7\u0337\2\2\u21d9\u02bd\3\2\2\2\u21da"+
		"\u21db\5\u03bc\u01df\2\u21db\u21df\7\u0324\2\2\u21dc\u21e0\5\u03bc\u01df"+
		"\2\u21dd\u21e0\5\u0396\u01cc\2\u21de\u21e0\7\u031c\2\2\u21df\u21dc\3\2"+
		"\2\2\u21df\u21dd\3\2\2\2\u21df\u21de\3\2\2\2\u21e0\u02bf\3\2\2\2\u21e1"+
		"\u21e2\7Y\2\2\u21e2\u2202\5\u0394\u01cb\2\u21e3\u21ed\7P\2\2\u21e4\u21eb"+
		"\5\u02c2\u0162\2\u21e5\u21e6\7\u0086\2\2\u21e6\u21e9\7\u016d\2\2\u21e7"+
		"\u21e8\7\u00e2\2\2\u21e8\u21ea\5\u0392\u01ca\2\u21e9\u21e7\3\2\2\2\u21e9"+
		"\u21ea\3\2\2\2\u21ea\u21ec\3\2\2\2\u21eb\u21e5\3\2\2\2\u21eb\u21ec\3\2"+
		"\2\2\u21ec\u21ee\3\2\2\2\u21ed\u21e4\3\2\2\2\u21ed\u21ee\3\2\2\2\u21ee"+
		"\u2203\3\2\2\2\u21ef\u21f1\tf\2\2\u21f0\u21ef\3\2\2\2\u21f0\u21f1\3\2"+
		"\2\2\u21f1\u21f3\3\2\2\2\u21f2\u21f4\7\u02c1\2\2\u21f3\u21f2\3\2\2\2\u21f3"+
		"\u21f4\3\2\2\2\u21f4\u21f5\3\2\2\2\u21f5\u21f6\7P\2\2\u21f6\u21f7\7\u0086"+
		"\2\2\u21f7\u2200\5\u01be\u00e0\2\u21f8\u21fe\7\u0086\2\2\u21f9\u21fa\7"+
		"\u010b\2\2\u21fa\u21ff\7\u0278\2\2\u21fb\u21ff\7\u016d\2\2\u21fc\u21fd"+
		"\7\u00e2\2\2\u21fd\u21ff\5\u0392\u01ca\2\u21fe\u21f9\3\2\2\2\u21fe\u21fb"+
		"\3\2\2\2\u21fe\u21fc\3\2\2\2\u21ff\u2201\3\2\2\2\u2200\u21f8\3\2\2\2\u2200"+
		"\u2201\3\2\2\2\u2201\u2203\3\2\2\2\u2202\u21e3\3\2\2\2\u2202\u21f0\3\2"+
		"\2\2\u2203\u2205\3\2\2\2\u2204\u2206\7\u0339\2\2\u2205\u2204\3\2\2\2\u2205"+
		"\u2206\3\2\2\2\u2206\u02c1\3\2\2\2\u2207\u2209\5\u02c4\u0163\2\u2208\u2207"+
		"\3\2\2\2\u2209\u220c\3\2\2\2\u220a\u2208\3\2\2\2\u220a\u220b\3\2\2\2\u220b"+
		"\u220d\3\2\2\2\u220c\u220a\3\2\2\2\u220d\u220e\7\u0086\2\2\u220e\u220f"+
		"\5\u01be\u00e0\2\u220f\u02c3\3\2\2\2\u2210\u2216\tA\2\2\u2211\u2216\t"+
		"g\2\2\u2212\u2216\th\2\2\u2213\u2216\ti\2\2\u2214\u2216\7\u02fd\2\2\u2215"+
		"\u2210\3\2\2\2\u2215\u2211\3\2\2\2\u2215\u2212\3\2\2\2\u2215\u2213\3\2"+
		"\2\2\u2215\u2214\3\2\2\2\u2216\u02c5\3\2\2\2\u2217\u2221\7\u0081\2\2\u2218"+
		"\u221f\7\u0264\2\2\u2219\u221f\7\u028a\2\2\u221a\u221f\7\u0203\2\2\u221b"+
		"\u221f\7\u0231\2\2\u221c\u221d\tj\2\2\u221d\u221f\5\u02cc\u0167\2\u221e"+
		"\u2218\3\2\2\2\u221e\u2219\3\2\2\2\u221e\u221a\3\2\2\2\u221e\u221b\3\2"+
		"\2\2\u221e\u221c\3\2\2\2\u221e\u221f\3\2\2\2\u221f\u2220\3\2\2\2\u2220"+
		"\u2222\7\u008c\2\2\u2221\u221e\3\2\2\2\u2221\u2222\3\2\2\2\u2222\u2224"+
		"\3\2\2\2\u2223\u2225\7\u0210\2\2\u2224\u2223\3\2\2\2\u2224\u2225\3\2\2"+
		"\2\u2225\u2226\3\2\2\2\u2226\u2230\5\u0394\u01cb\2\u2227\u2228\7\u00a6"+
		"\2\2\u2228\u222d\7\u031b\2\2\u2229\u222a\7\u0338\2\2\u222a\u222c\7\u031b"+
		"\2\2\u222b\u2229\3\2\2\2\u222c\u222f\3\2\2\2\u222d\u222b\3\2\2\2\u222d"+
		"\u222e\3\2\2\2\u222e\u2231\3\2\2\2\u222f\u222d\3\2\2\2\u2230\u2227\3\2"+
		"\2\2\u2230\u2231\3\2\2\2\u2231\u2233\3\2\2\2\u2232\u2234\7\u0339\2\2\u2233"+
		"\u2232\3\2\2\2\u2233\u2234\3\2\2\2\u2234\u02c7\3\2\2\2\u2235\u2236\7\u013e"+
		"\2\2\u2236\u223a\5\u03ba\u01de\2\u2237\u223b\5\u03ba\u01de\2\u2238\u223b"+
		"\5\u02ca\u0166\2\u2239\u223b\5\u0396\u01cc\2\u223a\u2237\3\2\2\2\u223a"+
		"\u2238\3\2\2\2\u223a\u2239\3\2\2\2\u223b\u223d\3\2\2\2\u223c\u223e\7\u0339"+
		"\2\2\u223d\u223c\3\2\2\2\u223d\u223e\3\2\2\2\u223e\u2267\3\2\2\2\u223f"+
		"\u2240\7\u013e\2\2\u2240\u2241\7\u0162\2\2\u2241\u2242\7\u0228\2\2\u2242"+
		"\u224c\7\u0234\2\2\u2243\u2244\7\u010b\2\2\u2244\u224d\7\u02ff\2\2\u2245"+
		"\u2246\7\u010b\2\2\u2246\u224d\7\u01bb\2\2\u2247\u2248\7\u02ac\2\2\u2248"+
		"\u224d\7\u010b\2\2\u2249\u224d\7\u02d9\2\2\u224a\u224d\7\u02cf\2\2\u224b"+
		"\u224d\7\u031c\2\2\u224c\u2243\3\2\2\2\u224c\u2245\3\2\2\2\u224c\u2247"+
		"\3\2\2\2\u224c\u2249\3\2\2\2\u224c\u224a\3\2\2\2\u224c\u224b\3\2\2\2\u224d"+
		"\u224f\3\2\2\2\u224e\u2250\7\u0339\2\2\u224f\u224e\3\2\2\2\u224f\u2250"+
		"\3\2\2\2\u2250\u2267\3\2\2\2\u2251\u2252\7\u013e\2\2\u2252\u2253\7\u0099"+
		"\2\2\u2253\u2254\5\u0382\u01c2\2\u2254\u2256\5\u0396\u01cc\2\u2255\u2257"+
		"\7\u0339\2\2\u2256\u2255\3\2\2\2\u2256\u2257\3\2\2\2\u2257\u2267\3\2\2"+
		"\2\u2258\u2259\7\u013e\2\2\u2259\u225a\7\u0193\2\2\u225a\u2267\5\u0396"+
		"\u01cc\2\u225b\u225c\7\u013e\2\2\u225c\u225d\7\u0297\2\2\u225d\u2267\5"+
		"\u0396\u01cc\2\u225e\u225f\7\u013e\2\2\u225f\u2260\7\u0194\2\2\u2260\u2267"+
		"\5\u0396\u01cc\2\u2261\u2262\7\u013e\2\2\u2262\u2263\7\u0195\2\2\u2263"+
		"\u2267\5\u0396\u01cc\2\u2264\u2265\7\u013e\2\2\u2265\u2267\5\u033e\u01a0"+
		"\2\u2266\u2235\3\2\2\2\u2266\u223f\3\2\2\2\u2266\u2251\3\2\2\2\u2266\u2258"+
		"\3\2\2\2\u2266\u225b\3\2\2\2\u2266\u225e\3\2\2\2\u2266\u2261\3\2\2\2\u2266"+
		"\u2264\3\2\2\2\u2267\u02c9\3\2\2\2\u2268\u226b\5\u03b6\u01dc\2\u2269\u226b"+
		"\7\u031b\2\2\u226a\u2268\3\2\2\2\u226a\u2269\3\2\2\2\u226b\u02cb\3\2\2"+
		"\2\u226c\u226d\b\u0167\1\2\u226d\u2275\5\u02ce\u0168\2\u226e\u2275\5\u0334"+
		"\u019b\2\u226f\u2275\5\u02d0\u0169\2\u2270\u2275\5\u038e\u01c8\2\u2271"+
		"\u2275\5\u02d4\u016b\2\u2272\u2275\5\u02d2\u016a\2\u2273\u2275\5\u0364"+
		"\u01b3\2\u2274\u226c\3\2\2\2\u2274\u226e\3\2\2\2\u2274\u226f\3\2\2\2\u2274"+
		"\u2270\3\2\2\2\u2274\u2271\3\2\2\2\u2274\u2272\3\2\2\2\u2274\u2273\3\2"+
		"\2\2\u2275\u2289\3\2\2\2\u2276\u2277\f\7\2\2\u2277\u2278\tk\2\2\u2278"+
		"\u2288\5\u02cc\u0167\b\u2279\u227a\f\6\2\2\u227a\u227b\tl\2\2\u227b\u2288"+
		"\5\u02cc\u0167\7\u227c\u227d\f\5\2\2\u227d\u227e\5\u03be\u01e0\2\u227e"+
		"\u227f\5\u02cc\u0167\6\u227f\u2288\3\2\2\2\u2280\u2281\f\4\2\2\u2281\u2282"+
		"\5\u03c0\u01e1\2\u2282\u2283\5\u02cc\u0167\5\u2283\u2288\3\2\2\2\u2284"+
		"\u2285\f\f\2\2\u2285\u2286\7\67\2\2\u2286\u2288\5\u03ba\u01de\2\u2287"+
		"\u2276\3\2\2\2\u2287\u2279\3\2\2\2\u2287\u227c\3\2\2\2\u2287\u2280\3\2"+
		"\2\2\u2287\u2284\3\2\2\2\u2288\u228b\3\2\2\2\u2289\u2287\3\2\2\2\u2289"+
		"\u228a\3\2\2\2\u228a\u02cd\3\2\2\2\u228b\u2289\3\2\2\2\u228c\u2291\7Z"+
		"\2\2\u228d\u2291\7\u00e0\2\2\u228e\u2291\7\u031b\2\2\u228f\u2291\5\u03b6"+
		"\u01dc\2\u2290\u228c\3\2\2\2\u2290\u228d\3\2\2\2\u2290\u228e\3\2\2\2\u2290"+
		"\u228f\3\2\2\2\u2291\u02cf\3\2\2\2\u2292\u2293\7*\2\2\u2293\u2295\5\u02cc"+
		"\u0167\2\u2294\u2296\5\u0342\u01a2\2\u2295\u2294\3\2\2\2\u2296\u2297\3"+
		"\2\2\2\u2297\u2295\3\2\2\2\u2297\u2298\3\2\2\2\u2298\u229b\3\2\2\2\u2299"+
		"\u229a\7k\2\2\u229a\u229c\5\u02cc\u0167\2\u229b\u2299\3\2\2\2\u229b\u229c"+
		"\3\2\2\2\u229c\u229d\3\2\2\2\u229d\u229e\7m\2\2\u229e\u22ac\3\2\2\2\u229f"+
		"\u22a1\7*\2\2\u22a0\u22a2\5\u0344\u01a3\2\u22a1\u22a0\3\2\2\2\u22a2\u22a3"+
		"\3\2\2\2\u22a3\u22a1\3\2\2\2\u22a3\u22a4\3\2\2\2\u22a4\u22a7\3\2\2\2\u22a5"+
		"\u22a6\7k\2\2\u22a6\u22a8\5\u02cc\u0167\2\u22a7\u22a5\3\2\2\2\u22a7\u22a8"+
		"\3\2\2\2\u22a8\u22a9\3\2\2\2\u22a9\u22aa\7m\2\2\u22aa\u22ac\3\2\2\2\u22ab"+
		"\u2292\3\2\2\2\u22ab\u229f\3\2\2\2\u22ac\u02d1\3\2\2\2\u22ad\u22ae\7\u0340"+
		"\2\2\u22ae\u22b2\5\u02cc\u0167\2\u22af\u22b0\tm\2\2\u22b0\u22b2\5\u02cc"+
		"\u0167\2\u22b1\u22ad\3\2\2\2\u22b1\u22af\3\2\2\2\u22b2\u02d3\3\2\2\2\u22b3"+
		"\u22b4\7\u0336\2\2\u22b4\u22b5\5\u02cc\u0167\2\u22b5\u22b6\7\u0337\2\2"+
		"\u22b6\u22bc\3\2\2\2\u22b7\u22b8\7\u0336\2\2\u22b8\u22b9\5\u02d8\u016d"+
		"\2\u22b9\u22ba\7\u0337\2\2\u22ba\u22bc\3\2\2\2\u22bb\u22b3\3\2\2\2\u22bb"+
		"\u22b7\3\2\2\2\u22bc\u02d5\3\2\2\2\u22bd\u22c6\7\u00e0\2\2\u22be\u22c6"+
		"\5\u03b6\u01dc\2\u22bf\u22c6\5\u0334\u019b\2\u22c0\u22c6\7\u031b\2\2\u22c1"+
		"\u22c2\7\u0336\2\2\u22c2\u22c3\5\u02d6\u016c\2\u22c3\u22c4\7\u0337\2\2"+
		"\u22c4\u22c6\3\2\2\2\u22c5\u22bd\3\2\2\2\u22c5\u22be\3\2\2\2\u22c5\u22bf"+
		"\3\2\2\2\u22c5\u22c0\3\2\2\2\u22c5\u22c1\3\2\2\2\u22c6\u02d7\3\2\2\2\u22c7"+
		"\u22c8\5\u01be\u00e0\2\u22c8\u02d9\3\2\2\2\u22c9\u22cc\7\u017d\2\2\u22ca"+
		"\u22cb\7\u0311\2\2\u22cb\u22cd\7\u0338\2\2\u22cc\u22ca\3\2\2\2\u22cc\u22cd"+
		"\3\2\2\2\u22cd\u22ce\3\2\2\2\u22ce\u22d3\5\u02dc\u016f\2\u22cf\u22d0\7"+
		"\u0338\2\2\u22d0\u22d2\5\u02dc\u016f\2\u22d1\u22cf\3\2\2\2\u22d2\u22d5"+
		"\3\2\2\2\u22d3\u22d1\3\2\2\2\u22d3\u22d4\3\2\2\2\u22d4\u22e4\3\2\2\2\u22d5"+
		"\u22d3\3\2\2\2\u22d6\u22d7\7\u017d\2\2\u22d7\u22dc\7 \2\2\u22d8\u22d9"+
		"\7\u0336\2\2\u22d9\u22da\5\u032a\u0196\2\u22da\u22db\7\u0337\2\2\u22db"+
		"\u22dd\3\2\2\2\u22dc\u22d8\3\2\2\2\u22dc\u22dd\3\2\2\2\u22dd\u22de\3\2"+
		"\2\2\u22de\u22df\7\20\2\2\u22df\u22e0\7\u0336\2\2\u22e0\u22e1\5\u01be"+
		"\u00e0\2\u22e1\u22e2\7\u0337\2\2\u22e2\u22e4\3\2\2\2\u22e3\u22c9\3\2\2"+
		"\2\u22e3\u22d6\3\2\2\2\u22e4\u02db\3\2\2\2\u22e5\u22ea\5\u03ba\u01de\2"+
		"\u22e6\u22e7\7\u0336\2\2\u22e7\u22e8\5\u0392\u01ca\2\u22e8\u22e9\7\u0337"+
		"\2\2\u22e9\u22eb\3\2\2\2\u22ea\u22e6\3\2\2\2\u22ea\u22eb\3\2\2\2\u22eb"+
		"\u22ec\3\2\2\2\u22ec\u22ed\7\20\2\2\u22ed\u22ee\7\u0336\2\2\u22ee\u22ef"+
		"\5\u01be\u00e0\2\u22ef\u22f0\7\u0337\2\2\u22f0\u02dd\3\2\2\2\u22f1\u22f4"+
		"\5\u038e\u01c8\2\u22f2\u22f4\7\u031b\2\2\u22f3\u22f1\3\2\2\2\u22f3\u22f2"+
		"\3\2\2\2\u22f4\u22f7\3\2\2\2\u22f5\u22f8\7\u0324\2\2\u22f6\u22f8\5\u03c0"+
		"\u01e1\2\u22f7\u22f5\3\2\2\2\u22f7\u22f6\3\2\2\2\u22f8\u22f9\3\2\2\2\u22f9"+
		"\u2302\5\u02cc\u0167\2\u22fa\u22fb\5\u03ba\u01de\2\u22fb\u22fc\7\u0331"+
		"\2\2\u22fc\u22fd\5\u03ba\u01de\2\u22fd\u22fe\7\u0336\2\2\u22fe\u22ff\5"+
		"\u035a\u01ae\2\u22ff\u2300\7\u0337\2\2\u2300\u2302\3\2\2\2\u2301\u22f3"+
		"\3\2\2\2\u2301\u22fa\3\2\2\2\u2302\u02df\3\2\2\2\u2303\u2308\5\u02e2\u0172"+
		"\2\u2304\u2305\7\u0338\2\2\u2305\u2307\5\u02e2\u0172\2\u2306\u2304\3\2"+
		"\2\2\u2307\u230a\3\2\2\2\u2308\u2306\3\2\2\2\u2308\u2309\3\2\2\2\u2309"+
		"\u02e1\3\2\2\2\u230a\u2308\3\2\2\2\u230b\u2310\5\u02e4\u0173\2\u230c\u230d"+
		"\7\u00ee\2\2\u230d\u230f\5\u02e4\u0173\2\u230e\u230c\3\2\2\2\u230f\u2312"+
		"\3\2\2\2\u2310\u230e\3\2\2\2\u2310\u2311\3\2\2\2\u2311\u02e3\3\2\2\2\u2312"+
		"\u2310\3\2\2\2\u2313\u2318\5\u02e6\u0174\2\u2314\u2315\7\13\2\2\u2315"+
		"\u2317\5\u02e6\u0174\2\u2316\u2314\3\2\2\2\u2317\u231a\3\2\2\2\u2318\u2316"+
		"\3\2\2\2\u2318\u2319\3\2\2\2\u2319\u02e5\3\2\2\2\u231a\u2318\3\2\2\2\u231b"+
		"\u231d\7\u00dd\2\2\u231c\u231b\3\2\2\2\u231c\u231d\3\2\2\2\u231d\u231e"+
		"\3\2\2\2\u231e\u231f\5\u02e8\u0175\2\u231f\u02e7\3\2\2\2\u2320\u2321\7"+
		"x\2\2\u2321\u2322\7\u0336\2\2\u2322\u2323\5\u02d8\u016d\2\u2323\u2324"+
		"\7\u0337\2\2\u2324\u2358\3\2\2\2\u2325\u2326\5\u02cc\u0167\2\u2326\u2327"+
		"\5\u03be\u01e0\2\u2327\u2328\5\u02cc\u0167\2\u2328\u2358\3\2\2\2\u2329"+
		"\u232a\5\u02cc\u0167\2\u232a\u232b\5\u03be\u01e0\2\u232b\u232c\tn\2\2"+
		"\u232c\u232d\7\u0336\2\2\u232d\u232e\5\u02d8\u016d\2\u232e\u232f\7\u0337"+
		"\2\2\u232f\u2358\3\2\2\2\u2330\u2332\5\u02cc\u0167\2\u2331\u2333\7\u00dd"+
		"\2\2\u2332\u2331\3\2\2\2\u2332\u2333\3\2\2\2\u2333\u2334\3\2\2\2\u2334"+
		"\u2335\7\35\2\2\u2335\u2336\5\u02cc\u0167\2\u2336\u2337\7\13\2\2\u2337"+
		"\u2338\5\u02cc\u0167\2\u2338\u2358\3\2\2\2\u2339\u233b\5\u02cc\u0167\2"+
		"\u233a\u233c\7\u00dd\2\2\u233b\u233a\3\2\2\2\u233b\u233c\3\2\2\2\u233c"+
		"\u233d\3\2\2\2\u233d\u233e\7\u009c\2\2\u233e\u2341\7\u0336\2\2\u233f\u2342"+
		"\5\u02d8\u016d\2\u2340\u2342\5\u035a\u01ae\2\u2341\u233f\3\2\2\2\u2341"+
		"\u2340\3\2\2\2\u2342\u2343\3\2\2\2\u2343\u2344\7\u0337\2\2\u2344\u2358"+
		"\3\2\2\2\u2345\u2347\5\u02cc\u0167\2\u2346\u2348\7\u00dd\2\2\u2347\u2346"+
		"\3\2\2\2\u2347\u2348\3\2\2\2\u2348\u2349\3\2\2\2\u2349\u234a\7\u00b5\2"+
		"\2\u234a\u234d\5\u02cc\u0167\2\u234b\u234c\7p\2\2\u234c\u234e\5\u02cc"+
		"\u0167\2\u234d\u234b\3\2\2\2\u234d\u234e\3\2\2\2\u234e\u2358\3\2\2\2\u234f"+
		"\u2350\5\u02cc\u0167\2\u2350\u2351\7\u00a9\2\2\u2351\u2352\5\u039a\u01ce"+
		"\2\u2352\u2358\3\2\2\2\u2353\u2354\7\u0336\2\2\u2354\u2355\5\u02e2\u0172"+
		"\2\u2355\u2356\7\u0337\2\2\u2356\u2358\3\2\2\2\u2357\u2320\3\2\2\2\u2357"+
		"\u2325\3\2\2\2\u2357\u2329\3\2\2\2\u2357\u2330\3\2\2\2\u2357\u2339\3\2"+
		"\2\2\u2357\u2345\3\2\2\2\u2357\u234f\3\2\2\2\u2357\u2353\3\2\2\2\u2358"+
		"\u02e9\3\2\2\2\u2359\u235f\5\u02ee\u0178\2\u235a\u235b\7\u0336\2\2\u235b"+
		"\u235c\5\u02ea\u0176\2\u235c\u235d\7\u0337\2\2\u235d\u235f\3\2\2\2\u235e"+
		"\u2359\3\2\2\2\u235e\u235a\3\2\2\2\u235f\u2363\3\2\2\2\u2360\u2362\5\u02ec"+
		"\u0177\2\u2361\u2360\3\2\2\2\u2362\u2365\3\2\2\2\u2363\u2361\3\2\2\2\u2363"+
		"\u2364\3\2\2\2\u2364\u02eb\3\2\2\2\u2365\u2363\3\2\2\2\u2366\u2368\7\u0168"+
		"\2\2\u2367\u2369\7\6\2\2\u2368\u2367\3\2\2\2\u2368\u2369\3\2\2\2\u2369"+
		"\u236d\3\2\2\2\u236a\u236d\7u\2\2\u236b\u236d\7\u00a5\2\2\u236c\u2366"+
		"\3\2\2\2\u236c\u236a\3\2\2\2\u236c\u236b\3\2\2\2\u236d\u2373\3\2\2\2\u236e"+
		"\u2374\5\u02ee\u0178\2\u236f\u2370\7\u0336\2\2\u2370\u2371\5\u02ea\u0176"+
		"\2\u2371\u2372\7\u0337\2\2\u2372\u2374\3\2\2\2\u2373\u236e\3\2\2\2\u2373"+
		"\u236f\3\2\2\2\u2374\u02ed\3\2\2\2\u2375\u2377\7\u0133\2\2\u2376\u2378"+
		"\to\2\2\u2377\u2376\3\2\2\2\u2377\u2378\3\2\2\2";
	private static final String _serializedATNSegment4 =
		"\u2378\u237a\3\2\2\2\u2379\u237b\5\u02f0\u0179\2\u237a\u2379\3\2\2\2\u237a"+
		"\u237b\3\2\2\2\u237b\u237c\3\2\2\2\u237c\u237f\5\u0306\u0184\2\u237d\u237e"+
		"\7\u00a6\2\2\u237e\u2380\5\u0382\u01c2\2\u237f\u237d\3\2\2\2\u237f\u2380"+
		"\3\2\2\2\u2380\u2383\3\2\2\2\u2381\u2382\7\u008c\2\2\u2382\u2384\5\u0314"+
		"\u018b\2\u2383\u2381\3\2\2\2\u2383\u2384\3\2\2\2\u2384\u2387\3\2\2\2\u2385"+
		"\u2386\7\u017a\2\2\u2386\u2388\5\u02e2\u0172\2\u2387\u2385\3\2\2\2\u2387"+
		"\u2388\3\2\2\2\u2388\u2396\3\2\2\2\u2389\u238a\7\u0093\2\2\u238a\u238c"+
		"\7&\2\2\u238b\u238d\7\6\2\2\u238c\u238b\3\2\2\2\u238c\u238d\3\2\2\2\u238d"+
		"\u238e\3\2\2\2\u238e\u2393\5\u02fe\u0180\2\u238f\u2390\7\u0338\2\2\u2390"+
		"\u2392\5\u02fe\u0180\2\u2391\u238f\3\2\2\2\u2392\u2395\3\2\2\2\u2393\u2391"+
		"\3\2\2\2\u2393\u2394\3\2\2\2\u2394\u2397\3\2\2\2\u2395\u2393\3\2\2\2\u2396"+
		"\u2389\3\2\2\2\u2396\u2397\3\2\2\2\u2397\u239a\3\2\2\2\u2398\u2399\7\u0094"+
		"\2\2\u2399\u239b\5\u02e2\u0172\2\u239a\u2398\3\2\2\2\u239a\u239b\3\2\2"+
		"\2\u239b\u02ef\3\2\2\2\u239c\u239f\7\u015f\2\2\u239d\u23a0\5\u02f2\u017a"+
		"\2\u239e\u23a0\5\u02f4\u017b\2\u239f\u239d\3\2\2\2\u239f\u239e\3\2\2\2"+
		"\u23a0\u23a3\3\2\2\2\u23a1\u23a2\7\u017d\2\2\u23a2\u23a4\7\u02ef\2\2\u23a3"+
		"\u23a1\3\2\2\2\u23a3\u23a4\3\2\2\2\u23a4\u02f1\3\2\2\2\u23a5\u23a6\tp"+
		"\2\2\u23a6\u23ad\7\u00f6\2\2\u23a7\u23a8\7\u0336\2\2\u23a8\u23a9\5\u02cc"+
		"\u0167\2\u23a9\u23aa\7\u0337\2\2\u23aa\u23ab\7\u00f6\2\2\u23ab\u23ad\3"+
		"\2\2\2\u23ac\u23a5\3\2\2\2\u23ac\u23a7\3\2\2\2\u23ad\u02f3\3\2\2\2\u23ae"+
		"\u23b4\7\u031c\2\2\u23af\u23b0\7\u0336\2\2\u23b0\u23b1\5\u02cc\u0167\2"+
		"\u23b1\u23b2\7\u0337\2\2\u23b2\u23b4\3\2\2\2\u23b3\u23ae\3\2\2\2\u23b3"+
		"\u23af\3\2\2\2\u23b4\u02f5\3\2\2\2\u23b5\u23b6\7\u00ef\2\2\u23b6\u23b7"+
		"\7&\2\2\u23b7\u23bc\5\u02fc\u017f\2\u23b8\u23b9\7\u0338\2\2\u23b9\u23bb"+
		"\5\u02fc\u017f\2\u23ba\u23b8\3\2\2\2\u23bb\u23be\3\2\2\2\u23bc\u23ba\3"+
		"\2\2\2\u23bc\u23bd\3\2\2\2\u23bd\u23ca\3\2\2\2\u23be\u23bc\3\2\2\2\u23bf"+
		"\u23c0\7\u0275\2\2\u23c0\u23c1\5\u02cc\u0167\2\u23c1\u23c8\tq\2\2\u23c2"+
		"\u23c3\7\u0081\2\2\u23c3\u23c4\tr\2\2\u23c4\u23c5\5\u02cc\u0167\2\u23c5"+
		"\u23c6\tq\2\2\u23c6\u23c7\7\u0278\2\2\u23c7\u23c9\3\2\2\2\u23c8\u23c2"+
		"\3\2\2\2\u23c8\u23c9\3\2\2\2\u23c9\u23cb\3\2\2\2\u23ca\u23bf\3\2\2\2\u23ca"+
		"\u23cb\3\2\2\2\u23cb\u02f7\3\2\2\2\u23cc\u23cd\7\u0086\2\2\u23cd\u2425"+
		"\7\"\2\2\u23ce\u23cf\7\u0086\2\2\u23cf\u23d7\7\u030f\2\2\u23d0\u23d4\7"+
		"\u010a\2\2\u23d1\u23d2\7\u0336\2\2\u23d2\u23d3\7\u0320\2\2\u23d3\u23d5"+
		"\7\u0337\2\2\u23d4\u23d1\3\2\2\2\u23d4\u23d5\3\2\2\2\u23d5\u23d8\3\2\2"+
		"\2\u23d6\u23d8\7\u019c\2\2\u23d7\u23d0\3\2\2\2\u23d7\u23d6\3\2\2\2\u23d8"+
		"\u23dc\3\2\2\2\u23d9\u23db\5\u02fa\u017e\2\u23da\u23d9\3\2\2\2\u23db\u23de"+
		"\3\2\2\2\u23dc\u23da\3\2\2\2\u23dc\u23dd\3\2\2\2\u23dd\u23e9\3\2\2\2\u23de"+
		"\u23dc\3\2\2\2\u23df\u23e7\7\u0338\2\2\u23e0\u23e8\7\u0310\2\2\u23e1\u23e5"+
		"\7\u0312\2\2\u23e2\u23e3\7\u0336\2\2\u23e3\u23e4\7\u0320\2\2\u23e4\u23e6"+
		"\7\u0337\2\2\u23e5\u23e2\3\2\2\2\u23e5\u23e6\3\2\2\2\u23e6\u23e8\3\2\2"+
		"\2\u23e7\u23e0\3\2\2\2\u23e7\u23e1\3\2\2\2\u23e8\u23ea\3\2\2\2\u23e9\u23df"+
		"\3\2\2\2\u23e9\u23ea\3\2\2\2\u23ea\u23ee\3\2\2\2\u23eb\u23ec\7\u0338\2"+
		"\2\u23ec\u23ed\7\u01e9\2\2\u23ed\u23ef\ts\2\2\u23ee\u23eb\3\2\2\2\u23ee"+
		"\u23ef\3\2\2\2\u23ef\u2425\3\2\2\2\u23f0\u23f1\7\u0086\2\2\u23f1\u23f2"+
		"\7\u030f\2\2\u23f2\u23f6\7\u01f7\2\2\u23f3\u23f5\5\u02fa\u017e\2\u23f4"+
		"\u23f3\3\2\2\2\u23f5\u23f8\3\2\2\2\u23f6\u23f4\3\2\2\2\u23f6\u23f7\3\2"+
		"\2\2\u23f7\u23fb\3\2\2\2\u23f8\u23f6\3\2\2\2\u23f9\u23fa\7\u0338\2\2\u23fa"+
		"\u23fc\7\u0310\2\2\u23fb\u23f9\3\2\2\2\u23fb\u23fc\3\2\2\2\u23fc\u2425"+
		"\3\2\2\2\u23fd\u23fe\7\u0086\2\2\u23fe\u23ff\7\u030f\2\2\u23ff\u2403\7"+
		"\u0284\2\2\u2400\u2401\7\u0336\2\2\u2401\u2402\7\u0320\2\2\u2402\u2404"+
		"\7\u0337\2\2\u2403\u2400\3\2\2\2\u2403\u2404\3\2\2\2\u2404\u2408\3\2\2"+
		"\2\u2405\u2407\5\u02fa\u017e\2\u2406\u2405\3\2\2\2\u2407\u240a\3\2\2\2"+
		"\u2408\u2406\3\2\2\2\u2408\u2409\3\2\2\2\u2409\u240e\3\2\2\2\u240a\u2408"+
		"\3\2\2\2\u240b\u240c\7\u0338\2\2\u240c\u240d\7\u01e9\2\2\u240d\u240f\t"+
		"s\2\2\u240e\u240b\3\2\2\2\u240e\u240f\3\2\2\2\u240f\u2425\3\2\2\2\u2410"+
		"\u2411\7\u0086\2\2\u2411\u2412\7\u0229\2\2\u2412\u241a\tt\2\2\u2413\u2414"+
		"\7\u0338\2\2\u2414\u2418\7\u02b8\2\2\u2415\u2416\7\u0336\2\2\u2416\u2417"+
		"\7\u0320\2\2\u2417\u2419\7\u0337\2\2\u2418\u2415\3\2\2\2\u2418\u2419\3"+
		"\2\2\2\u2419\u241b\3\2\2\2\u241a\u2413\3\2\2\2\u241a\u241b\3\2\2\2\u241b"+
		"\u241e\3\2\2\2\u241c\u241d\7\u0338\2\2\u241d\u241f\7\u0220\2\2\u241e\u241c"+
		"\3\2\2\2\u241e\u241f\3\2\2\2\u241f\u2422\3\2\2\2\u2420\u2421\7\u0338\2"+
		"\2\u2421\u2423\7\u030c\2\2\u2422\u2420\3\2\2\2\u2422\u2423\3\2\2\2\u2423"+
		"\u2425\3\2\2\2\u2424\u23cc\3\2\2\2\u2424\u23ce\3\2\2\2\u2424\u23f0\3\2"+
		"\2\2\u2424\u23fd\3\2\2\2\u2424\u2410\3\2\2\2\u2425\u02f9\3\2\2\2\u2426"+
		"\u2427\7\u0338\2\2\u2427\u2428\tu\2\2\u2428\u02fb\3\2\2\2\u2429\u242b"+
		"\5\u02cc\u0167\2\u242a\u242c\tv\2\2\u242b\u242a\3\2\2\2\u242b\u242c\3"+
		"\2\2\2\u242c\u02fd\3\2\2\2\u242d\u242e\5\u02cc\u0167\2\u242e\u02ff\3\2"+
		"\2\2\u242f\u2430\7\u00ed\2\2\u2430\u2431\7\u0336\2\2\u2431\u2436\5\u0302"+
		"\u0182\2\u2432\u2433\7\u0338\2\2\u2433\u2435\5\u0302\u0182\2\u2434\u2432"+
		"\3\2\2\2\u2435\u2438\3\2\2\2\u2436\u2434\3\2\2\2\u2436\u2437\3\2\2\2\u2437"+
		"\u2439\3\2\2\2\u2438\u2436\3\2\2\2\u2439\u243a\7\u0337\2\2\u243a\u0301"+
		"\3\2\2\2\u243b\u243c\7\u01fc\2\2\u243c\u2469\7\u031c\2\2\u243d\u243e\t"+
		"w\2\2\u243e\u2469\7\u0093\2\2\u243f\u2440\tx\2\2\u2440\u2469\7\u0168\2"+
		"\2\u2441\u2442\ty\2\2\u2442\u2469\7\u00ab\2\2\u2443\u2444\7\u01f5\2\2"+
		"\u2444\u2469\7\u0309\2\2\u2445\u2446\7\u0206\2\2\u2446\u2469\7\u00ef\2"+
		"\2\u2447\u2469\7\u021c\2\2\u2448\u2449\7\u022b\2\2\u2449\u2469\7\u00fc"+
		"\2\2\u244a\u244b\7\u022c\2\2\u244b\u2469\7\u00fc\2\2\u244c\u244d\7\u024c"+
		"\2\2\u244d\u2469\7\u031c\2\2\u244e\u244f\7\u024d\2\2\u244f\u2469\7\u031c"+
		"\2\2\u2450\u2451\7\u027b\2\2\u2451\u2452\7\u0086\2\2\u2452\u2453\7\u0336"+
		"\2\2\u2453\u2458\5\u0304\u0183\2\u2454\u2455\7\u0338\2\2\u2455\u2457\5"+
		"\u0304\u0183\2\u2456\u2454\3\2\2\2\u2457\u245a\3\2\2\2\u2458\u2456\3\2"+
		"\2\2\u2458\u2459\3\2\2\2\u2459\u245b\3\2\2\2\u245a\u2458\3\2\2\2\u245b"+
		"\u245c\7\u0337\2\2\u245c\u2469\3\2\2\2\u245d\u245e\7\u027b\2\2\u245e\u245f"+
		"\7\u0086\2\2\u245f\u2469\7\u0300\2\2\u2460\u2461\7\u0280\2\2\u2461\u2469"+
		"\tM\2\2\u2462\u2469\7\u02a4\2\2\u2463\u2464\7\u02b7\2\2\u2464\u2469\7"+
		"\u00fc\2\2\u2465\u2466\7\u0170\2\2\u2466\u2467\7\u00fc\2\2\u2467\u2469"+
		"\7\u0320\2\2\u2468\u243b\3\2\2\2\u2468\u243d\3\2\2\2\u2468\u243f\3\2\2"+
		"\2\u2468\u2441\3\2\2\2\u2468\u2443\3\2\2\2\u2468\u2445\3\2\2\2\u2468\u2447"+
		"\3\2\2\2\u2468\u2448\3\2\2\2\u2468\u244a\3\2\2\2\u2468\u244c\3\2\2\2\u2468"+
		"\u244e\3\2\2\2\u2468\u2450\3\2\2\2\u2468\u245d\3\2\2\2\u2468\u2460\3\2"+
		"\2\2\u2468\u2462\3\2\2\2\u2468\u2463\3\2\2\2\u2468\u2465\3\2\2\2\u2469"+
		"\u0303\3\2\2\2\u246a\u2471\7\u031b\2\2\u246b\u2472\7\u0300\2\2\u246c\u246f"+
		"\7\u0324\2\2\u246d\u2470\5\u03b6\u01dc\2\u246e\u2470\7\u00e0\2\2\u246f"+
		"\u246d\3\2\2\2\u246f\u246e\3\2\2\2\u2470\u2472\3\2\2\2\u2471\u246b\3\2"+
		"\2\2\u2471\u246c\3\2\2\2\u2472\u0305\3\2\2\2\u2473\u2478\5\u0312\u018a"+
		"\2\u2474\u2475\7\u0338\2\2\u2475\u2477\5\u0312\u018a\2\u2476\u2474\3\2"+
		"\2\2\u2477\u247a\3\2\2\2\u2478\u2476\3\2\2\2\u2478\u2479\3\2\2\2\u2479"+
		"\u0307\3\2\2\2\u247a\u2478\3\2\2\2\u247b\u247c\7\u0336\2\2\u247c\u2481"+
		"\5\u0276\u013c\2\u247d\u247e\7\u0338\2\2\u247e\u2480\5\u0276\u013c\2\u247f"+
		"\u247d\3\2\2\2\u2480\u2483\3\2\2\2\u2481\u247f\3\2\2\2\u2481\u2482\3\2"+
		"\2\2\u2482\u2484\3\2\2\2\u2483\u2481\3\2\2\2\u2484\u2485\7\u0337\2\2\u2485"+
		"\u0309\3\2\2\2\u2486\u248c\7\u033b\2\2\u2487\u2488\5\u0382\u01c2\2\u2488"+
		"\u2489\7\u0331\2\2\u2489\u248a\5\u030a\u0186\2\u248a\u248c\3\2\2\2\u248b"+
		"\u2486\3\2\2\2\u248b\u2487\3\2\2\2\u248c\u030b\3\2\2\2\u248d\u248e\5\u0382"+
		"\u01c2\2\u248e\u248f\7\u0331\2\2\u248f\u2491\3\2\2\2\u2490\u248d\3\2\2"+
		"\2\u2490\u2491\3\2\2\2\u2491\u2497\3\2\2\2\u2492\u2498\5\u03ba\u01de\2"+
		"\u2493\u2494\7\u0335\2\2\u2494\u2498\7\u0097\2\2\u2495\u2496\7\u0335\2"+
		"\2\u2496\u2498\7\u02bc\2\2\u2497\u2492\3\2\2\2\u2497\u2493\3\2\2\2\u2497"+
		"\u2495\3\2\2\2\u2498\u249a\3\2\2\2\u2499\u249b\5\u0346\u01a4\2\u249a\u2499"+
		"\3\2\2\2\u249a\u249b\3\2\2\2\u249b\u030d\3\2\2\2\u249c\u249d\5\u03ba\u01de"+
		"\2\u249d\u249e\7\u0331\2\2\u249e\u249f\5\u03ba\u01de\2\u249f\u24a1\5\u0308"+
		"\u0185\2\u24a0\u24a2\5\u0346\u01a4\2\u24a1\u24a0\3\2\2\2\u24a1\u24a2\3"+
		"\2\2\2\u24a2\u24ae\3\2\2\2\u24a3\u24a4\5\u03ba\u01de\2\u24a4\u24a5\7\u033a"+
		"\2\2\u24a5\u24a6\7\u033a\2\2\u24a6\u24a8\5\u03ba\u01de\2\u24a7\u24a9\5"+
		"\u0308\u0185\2\u24a8\u24a7\3\2\2\2\u24a8\u24a9\3\2\2\2\u24a9\u24ab\3\2"+
		"\2\2\u24aa\u24ac\5\u0346\u01a4\2\u24ab\u24aa\3\2\2\2\u24ab\u24ac\3\2\2"+
		"\2\u24ac\u24ae\3\2\2\2\u24ad\u249c\3\2\2\2\u24ad\u24a3\3\2\2\2\u24ae\u030f"+
		"\3\2\2\2\u24af\u24b0\5\u0356\u01ac\2\u24b0\u24b1\7\u0324\2\2\u24b1\u24b2"+
		"\5\u02cc\u0167\2\u24b2\u24b8\3\2\2\2\u24b3\u24b5\5\u02cc\u0167\2\u24b4"+
		"\u24b6\5\u0346\u01a4\2\u24b5\u24b4\3\2\2\2\u24b5\u24b6\3\2\2\2\u24b6\u24b8"+
		"\3\2\2\2\u24b7\u24af\3\2\2\2\u24b7\u24b3\3\2\2\2\u24b8\u0311\3\2\2\2\u24b9"+
		"\u24be\5\u030a\u0186\2\u24ba\u24be\5\u030c\u0187\2\u24bb\u24be\5\u030e"+
		"\u0188\2\u24bc\u24be\5\u0310\u0189\2\u24bd\u24b9\3\2\2\2\u24bd\u24ba\3"+
		"\2\2\2\u24bd\u24bb\3\2\2\2\u24bd\u24bc\3\2\2\2\u24be\u0313\3\2\2\2\u24bf"+
		"\u24c4\5\u0316\u018c\2\u24c0\u24c1\7\u0338\2\2\u24c1\u24c3\5\u0316\u018c"+
		"\2\u24c2\u24c0\3\2\2\2\u24c3\u24c6\3\2\2\2\u24c4\u24c2\3\2\2\2\u24c4\u24c5"+
		"\3\2\2\2\u24c5\u0315\3\2\2\2\u24c6\u24c4\3\2\2\2\u24c7\u24cd\5\u0318\u018d"+
		"\2\u24c8\u24c9\7\u0336\2\2\u24c9\u24ca\5\u0318\u018d\2\u24ca\u24cb\7\u0337"+
		"\2\2\u24cb\u24cd\3\2\2\2\u24cc\u24c7\3\2\2\2\u24cc\u24c8\3\2\2\2\u24cd"+
		"\u0317\3\2\2\2\u24ce\u24d2\5\u031a\u018e\2\u24cf\u24d1\5\u0324\u0193\2"+
		"\u24d0\u24cf\3\2\2\2\u24d1\u24d4\3\2\2\2\u24d2\u24d0\3\2\2\2\u24d2\u24d3"+
		"\3\2\2\2\u24d3\u0319\3\2\2\2\u24d4\u24d2\3\2\2\2\u24d5\u24d7\5\u032c\u0197"+
		"\2\u24d6\u24d8\5\u0348\u01a5\2\u24d7\u24d6\3\2\2\2\u24d7\u24d8\3\2\2\2"+
		"\u24d8\u2504\3\2\2\2\u24d9\u24db\5\u0380\u01c1\2\u24da\u24dc\5\u0348\u01a5"+
		"\2\u24db\u24da\3\2\2\2\u24db\u24dc\3\2\2\2\u24dc\u2504\3\2\2\2\u24dd\u24df"+
		"\5\u032e\u0198\2\u24de\u24e0\5\u0348\u01a5\2\u24df\u24de\3\2\2\2\u24df"+
		"\u24e0\3\2\2\2\u24e0\u2504\3\2\2\2\u24e1\u24e6\5\u0332\u019a\2\u24e2\u24e4"+
		"\5\u0348\u01a5\2\u24e3\u24e5\5\u0354\u01ab\2\u24e4\u24e3\3\2\2\2\u24e4"+
		"\u24e5\3\2\2\2\u24e5\u24e7\3\2\2\2\u24e6\u24e2\3\2\2\2\u24e6\u24e7\3\2"+
		"\2\2\u24e7\u2504\3\2\2\2\u24e8\u24e9\5\u0322\u0192\2\u24e9\u24ea\5\u0348"+
		"\u01a5\2\u24ea\u2504\3\2\2\2\u24eb\u24ed\5\u0334\u019b\2\u24ec\u24ee\5"+
		"\u0348\u01a5\2\u24ed\u24ec\3\2\2\2\u24ed\u24ee\3\2\2\2\u24ee\u2504\3\2"+
		"\2\2\u24ef\u24f1\7\u031b\2\2\u24f0\u24f2\5\u0348\u01a5\2\u24f1\u24f0\3"+
		"\2\2\2\u24f1\u24f2\3\2\2\2\u24f2\u2504\3\2\2\2\u24f3\u24f4\7\u031b\2\2"+
		"\u24f4\u24f5\7\u0331\2\2\u24f5\u24fa\5\u0334\u019b\2\u24f6\u24f8\5\u0348"+
		"\u01a5\2\u24f7\u24f9\5\u0354\u01ab\2\u24f8\u24f7\3\2\2\2\u24f8\u24f9\3"+
		"\2\2\2\u24f9\u24fb\3\2\2\2\u24fa\u24f6\3\2\2\2\u24fa\u24fb\3\2\2\2\u24fb"+
		"\u2504\3\2\2\2\u24fc\u2504\5\u031c\u018f\2\u24fd\u24fe\7\u033a\2\2\u24fe"+
		"\u24ff\7\u033a\2\2\u24ff\u2501\5\u0334\u019b\2\u2500\u2502\5\u0348\u01a5"+
		"\2\u2501\u2500\3\2\2\2\u2501\u2502\3\2\2\2\u2502\u2504\3\2\2\2\u2503\u24d5"+
		"\3\2\2\2\u2503\u24d9\3\2\2\2\u2503\u24dd\3\2\2\2\u2503\u24e1\3\2\2\2\u2503"+
		"\u24e8\3\2\2\2\u2503\u24eb\3\2\2\2\u2503\u24ef\3\2\2\2\u2503\u24f3\3\2"+
		"\2\2\u2503\u24fc\3\2\2\2\u2503\u24fd\3\2\2\2\u2504\u031b\3\2\2\2\u2505"+
		"\u2506\7\u00ec\2\2\u2506\u2507\7\u0336\2\2\u2507\u2508\5\u02cc\u0167\2"+
		"\u2508\u2509\7\u0338\2\2\u2509\u250c\5\u02cc\u0167\2\u250a\u250b\7\u0338"+
		"\2\2\u250b\u250d\5\u02cc\u0167\2\u250c\u250a\3\2\2\2\u250c\u250d\3\2\2"+
		"\2\u250d\u250e\3\2\2\2\u250e\u2514\7\u0337\2\2\u250f\u2510\7\u017d\2\2"+
		"\u2510\u2511\7\u0336\2\2\u2511\u2512\5\u031e\u0190\2\u2512\u2513\7\u0337"+
		"\2\2\u2513\u2515\3\2\2\2\u2514\u250f\3\2\2\2\u2514\u2515\3\2\2\2\u2515"+
		"\u031d\3\2\2\2\u2516\u251b\5\u0320\u0191\2\u2517\u2518\7\u0338\2\2\u2518"+
		"\u251a\5\u0320\u0191\2\u2519\u2517\3\2\2\2\u251a\u251d\3\2\2\2\u251b\u2519"+
		"\3\2\2\2\u251b\u251c\3\2\2\2\u251c\u031f\3\2\2\2\u251d\u251b\3\2\2\2\u251e"+
		"\u251f\7\u031d\2\2\u251f\u2521\5\u03b2\u01da\2\u2520\u2522\7\u0320\2\2"+
		"\u2521\u2520\3\2\2\2\u2521\u2522\3\2\2\2\u2522\u0321\3\2\2\2\u2523\u2524"+
		"\7,\2\2\u2524\u2525\7\u0336\2\2\u2525\u2526\7-\2\2\u2526\u2527\5\u0382"+
		"\u01c2\2\u2527\u2528\7\u0338\2\2\u2528\u2529\tz\2\2\u2529\u252a\7\u0337"+
		"\2\2\u252a\u0323\3\2\2\2\u252b\u252d\7\u00a2\2\2\u252c\u252b\3\2\2\2\u252c"+
		"\u252d\3\2\2\2\u252d\u2533\3\2\2\2\u252e\u2530\t{\2\2\u252f\u2531\7\u00f0"+
		"\2\2\u2530\u252f\3\2\2\2\u2530\u2531\3\2\2\2\u2531\u2533\3\2\2\2\u2532"+
		"\u252c\3\2\2\2\u2532\u252e\3\2\2\2\u2533\u2535\3\2\2\2\u2534\u2536\t|"+
		"\2\2\u2535\u2534\3\2\2\2\u2535\u2536\3\2\2\2\u2536\u2537\3\2\2\2\u2537"+
		"\u2538\7\u00ab\2\2\u2538\u2539\5\u0316\u018c\2\u2539\u253a\7\u00e6\2\2"+
		"\u253a\u253b\5\u02e2\u0172\2\u253b\u254e\3\2\2\2\u253c\u253d\7J\2\2\u253d"+
		"\u253e\7\u00ab\2\2\u253e\u254e\5\u0316\u018c\2\u253f\u2540\7J\2\2\u2540"+
		"\u2541\7\u0197\2\2\u2541\u254e\5\u0316\u018c\2\u2542\u2543\7\u00f0\2\2"+
		"\u2543\u2544\7\u0197\2\2\u2544\u254e\5\u0316\u018c\2\u2545\u2546\7\u00fb"+
		"\2\2\u2546\u2547\5\u0326\u0194\2\u2547\u2548\5\u0348\u01a5\2\u2548\u254e"+
		"\3\2\2\2\u2549\u254a\7\u016b\2\2\u254a\u254b\5\u0328\u0195\2\u254b\u254c"+
		"\5\u0348\u01a5\2\u254c\u254e\3\2\2\2\u254d\u2532\3\2\2\2\u254d\u253c\3"+
		"\2\2\2\u254d\u253f\3\2\2\2\u254d\u2542\3\2\2\2\u254d\u2545\3\2\2\2\u254d"+
		"\u2549\3\2\2\2\u254e\u0325\3\2\2\2\u254f\u2550\7\u0336\2\2\u2550\u2551"+
		"\5\u035e\u01b0\2\u2551\u2552\7\u0086\2\2\u2552\u2553\5\u038e\u01c8\2\u2553"+
		"\u2554\7\u009c\2\2\u2554\u2555\5\u0354\u01ab\2\u2555\u2556\7\u0337\2\2"+
		"\u2556\u0327\3\2\2\2\u2557\u2558\7\u0336\2\2\u2558\u2559\5\u02cc\u0167"+
		"\2\u2559\u255a\7\u0086\2\2\u255a\u255b\5\u038e\u01c8\2\u255b\u255c\7\u009c"+
		"\2\2\u255c\u255d\7\u0336\2\2\u255d\u255e\5\u032a\u0196\2\u255e\u255f\7"+
		"\u0337\2\2\u255f\u2560\7\u0337\2\2\u2560\u0329\3\2\2\2\u2561\u2566\5\u038e"+
		"\u01c8\2\u2562\u2563\7\u0338\2\2\u2563\u2565\5\u038e\u01c8\2\u2564\u2562"+
		"\3\2\2\2\u2565\u2568\3\2\2\2\u2566\u2564\3\2\2\2\u2566\u2567\3\2\2\2\u2567"+
		"\u032b\3\2\2\2\u2568\u2566\3\2\2\2\u2569\u256b\5\u0382\u01c2\2\u256a\u256c"+
		"\5\u034c\u01a7\2\u256b\u256a\3\2\2\2\u256b\u256c\3\2\2\2\u256c\u032d\3"+
		"\2\2\2\u256d\u256e\7\u00eb\2\2\u256e\u256f\7\u0336\2\2\u256f\u2570\7\u0320"+
		"\2\2\u2570\u2571\7\u0338\2\2\u2571\u2572\7\u0320\2\2\u2572\u2573\7\u0338"+
		"\2\2\u2573\u2574\7\u0320\2\2\u2574\u2588\7\u0337\2\2\u2575\u2576\7\u00eb"+
		"\2\2\u2576\u2577\7\u0336\2\2\u2577\u2578\7%\2\2\u2578\u2579\7\u0320\2"+
		"\2\u2579\u2583\7\u0338\2\2\u257a\u257f\5\u0330\u0199\2\u257b\u257c\7\u0338"+
		"\2\2\u257c\u257e\5\u0330\u0199\2\u257d\u257b\3\2\2\2\u257e\u2581\3\2\2"+
		"\2\u257f\u257d\3\2\2\2\u257f\u2580\3\2\2\2\u2580\u2584\3\2\2\2\u2581\u257f"+
		"\3\2\2\2\u2582\u2584\5\u03ba\u01de\2\u2583\u257a\3\2\2\2\u2583\u2582\3"+
		"\2\2\2\u2584\u2585\3\2\2\2\u2585\u2586\7\u0337\2\2\u2586\u2588\3\2\2\2"+
		"\u2587\u256d\3\2\2\2\u2587\u2575\3\2\2\2\u2588\u032f\3\2\2\2\u2589\u258a"+
		"\5\u03ba\u01de\2\u258a\u258b\7\u0324\2\2\u258b\u258c\t\30\2\2\u258c\u0331"+
		"\3\2\2\2\u258d\u2598\5\u02d8\u016d\2\u258e\u258f\7\u0336\2\2\u258f\u2590"+
		"\5\u02d8\u016d\2\u2590\u2591\7\u0337\2\2\u2591\u2598\3\2\2\2\u2592\u2598"+
		"\5\u0358\u01ad\2\u2593\u2594\7\u0336\2\2\u2594\u2595\5\u0358\u01ad\2\u2595"+
		"\u2596\7\u0337\2\2\u2596\u2598\3\2\2\2\u2597\u258d\3\2\2\2\u2597\u258e"+
		"\3\2\2\2\u2597\u2592\3\2\2\2\u2597\u2593\3\2\2\2\u2598\u0333\3\2\2\2\u2599"+
		"\u261e\5\u035c\u01af\2\u259a\u261e\5\u035e\u01b0\2\u259b\u261e\5\u0360"+
		"\u01b1\2\u259c\u259d\5\u039e\u01d0\2\u259d\u259f\7\u0336\2\2\u259e\u25a0"+
		"\5\u035a\u01ae\2\u259f\u259e\3\2\2\2\u259f\u25a0\3\2\2\2\u25a0\u25a1\3"+
		"\2\2\2\u25a1\u25a2\7\u0337\2\2\u25a2\u261e\3\2\2\2\u25a3\u25a4\7\u01a9"+
		"\2\2\u25a4\u25a5\7\u0336\2\2\u25a5\u25a6\7\u033b\2\2\u25a6\u261e\7\u0337"+
		"\2\2\u25a7\u25a8\7\u01b1\2\2\u25a8\u25a9\7\u0336\2\2\u25a9\u25aa\5\u02cc"+
		"\u0167\2\u25aa\u25ab\7\20\2\2\u25ab\u25ac\5\u03b2\u01da\2\u25ac\u25ad"+
		"\7\u0337\2\2\u25ad\u261e\3\2\2\2\u25ae\u25af\7G\2\2\u25af\u25b0\7\u0336"+
		"\2\2\u25b0\u25b1\5\u03b2\u01da\2\u25b1\u25b2\7\u0338\2\2\u25b2\u25b5\5"+
		"\u02cc\u0167\2\u25b3\u25b4\7\u0338\2\2\u25b4\u25b6\5\u02cc\u0167\2\u25b5"+
		"\u25b3\3\2\2\2\u25b5\u25b6\3\2\2\2\u25b6\u25b7\3\2\2\2\u25b7\u25b8\7\u0337"+
		"\2\2\u25b8\u261e\3\2\2\2\u25b9\u25ba\7\u01b6\2\2\u25ba\u25bb\7\u0336\2"+
		"\2\u25bb\u25bc\7\u033b\2\2\u25bc\u261e\7\u0337\2\2\u25bd\u25be\7\66\2"+
		"\2\u25be\u25bf\7\u0336\2\2\u25bf\u25c0\5\u035a\u01ae\2\u25c0\u25c1\7\u0337"+
		"\2\2\u25c1\u261e\3\2\2\2\u25c2\u261e\7N\2\2\u25c3\u261e\7O\2\2\u25c4\u25c5"+
		"\7\u01cd\2\2\u25c5\u25c6\7\u0336\2\2\u25c6\u25c7\7\u031d\2\2\u25c7\u25c8"+
		"\7\u0338\2\2\u25c8\u25c9\5\u02cc\u0167\2\u25c9\u25ca\7\u0338\2\2\u25ca"+
		"\u25cb\5\u02cc\u0167\2\u25cb\u25cc\7\u0337\2\2\u25cc\u261e\3\2\2\2\u25cd"+
		"\u25ce\7\u01ce\2\2\u25ce\u25cf\7\u0336\2\2\u25cf\u25d0\7\u031d\2\2\u25d0"+
		"\u25d1\7\u0338\2\2\u25d1\u25d2\5\u02cc\u0167\2\u25d2\u25d3\7\u0338\2\2"+
		"\u25d3\u25d4\5\u02cc\u0167\2\u25d4\u25d5\7\u0337\2\2\u25d5\u261e\3\2\2"+
		"\2\u25d6\u25d7\7\u01cf\2\2\u25d7\u25d8\7\u0336\2\2\u25d8\u25d9\7\u031d"+
		"\2\2\u25d9\u25da\7\u0338\2\2\u25da\u25db\5\u02cc\u0167\2\u25db\u25dc\7"+
		"\u0337\2\2\u25dc\u261e\3\2\2\2\u25dd\u25de\7\u01d0\2\2\u25de\u25df\7\u0336"+
		"\2\2\u25df\u25e0\7\u031d\2\2\u25e0\u25e1\7\u0338\2\2\u25e1\u25e2\5\u02cc"+
		"\u0167\2\u25e2\u25e3\7\u0337\2\2\u25e3\u261e\3\2\2\2\u25e4\u25e5\7\u020e"+
		"\2\2\u25e5\u25e6\7\u0336\2\2\u25e6\u261e\7\u0337\2\2\u25e7\u25e8\7\u020f"+
		"\2\2\u25e8\u25e9\7\u0336\2\2\u25e9\u261e\7\u0337\2\2\u25ea\u25eb\7\u0097"+
		"\2\2\u25eb\u25ec\7\u0336\2\2\u25ec\u25ef\5\u03b2\u01da\2\u25ed\u25ee\7"+
		"\u0338\2\2\u25ee\u25f0\7\u031c\2\2\u25ef\u25ed\3\2\2\2\u25ef\u25f0\3\2"+
		"\2\2\u25f0\u25f3\3\2\2\2\u25f1\u25f2\7\u0338\2\2\u25f2\u25f4\7\u031c\2"+
		"\2\u25f3\u25f1\3\2\2\2\u25f3\u25f4\3\2\2\2\u25f4\u25f5\3\2\2\2\u25f5\u25f6"+
		"\7\u0337\2\2\u25f6\u261e\3\2\2\2\u25f7\u261e\7\u0254\2\2\u25f8\u25f9\7"+
		"\u00e1\2\2\u25f9\u25fa\7\u0336\2\2\u25fa\u25fb\5\u02cc\u0167\2\u25fb\u25fc"+
		"\7\u0338\2\2\u25fc\u25fd\5\u02cc\u0167\2\u25fd\u25fe\7\u0337\2\2\u25fe"+
		"\u261e\3\2\2\2\u25ff\u2600\7\u02e3\2\2\u2600\u2601\7\u0336\2\2\u2601\u2602"+
		"\5\u02cc\u0167\2\u2602\u2603\7\u0338\2\2\u2603\u2604\7\u031c\2\2\u2604"+
		"\u2605\7\u0338\2\2\u2605\u2606\7\u031c\2\2\u2606\u2607\7\u0338\2\2\u2607"+
		"\u2608\5\u02cc\u0167\2\u2608\u2609\7\u0337\2\2\u2609\u261e\3\2\2\2\u260a"+
		"\u261e\7\u013d\2\2\u260b\u261e\7\u0156\2\2\u260c\u260d\7\u00aa\2\2\u260d"+
		"\u260e\7\u0336\2\2\u260e\u260f\5\u02cc\u0167\2\u260f\u2610\7\u0338\2\2"+
		"\u2610\u2611\5\u02cc\u0167\2\u2611\u2612\7\u0337\2\2\u2612\u261e\3\2\2"+
		"\2\u2613\u261e\5\u0336\u019c\2\u2614\u2615\7\u009b\2\2\u2615\u2616\7\u0336"+
		"\2\2\u2616\u2617\5\u02e2\u0172\2\u2617\u2618\7\u0338\2\2\u2618\u2619\5"+
		"\u02cc\u0167\2\u2619\u261a\7\u0338\2\2\u261a\u261b\5\u02cc\u0167\2\u261b"+
		"\u261c\7\u0337\2\2\u261c\u261e\3\2\2\2\u261d\u2599\3\2\2\2\u261d\u259a"+
		"\3\2\2\2\u261d\u259b\3\2\2\2\u261d\u259c\3\2\2\2\u261d\u25a3\3\2\2\2\u261d"+
		"\u25a7\3\2\2\2\u261d\u25ae\3\2\2\2\u261d\u25b9\3\2\2\2\u261d\u25bd\3\2"+
		"\2\2\u261d\u25c2\3\2\2\2\u261d\u25c3\3\2\2\2\u261d\u25c4\3\2\2\2\u261d"+
		"\u25cd\3\2\2\2\u261d\u25d6\3\2\2\2\u261d\u25dd\3\2\2\2\u261d\u25e4\3\2"+
		"\2\2\u261d\u25e7\3\2\2\2\u261d\u25ea\3\2\2\2\u261d\u25f7\3\2\2\2\u261d"+
		"\u25f8\3\2\2\2\u261d\u25ff\3\2\2\2\u261d\u260a\3\2\2\2\u261d\u260b\3\2"+
		"\2\2\u261d\u260c\3\2\2\2\u261d\u2613\3\2\2\2\u261d\u2614\3\2\2\2\u261e"+
		"\u0335\3\2\2\2\u261f\u2625\5\u0338\u019d\2\u2620\u2625\5\u033a\u019e\2"+
		"\u2621\u2625\5\u033c\u019f\2\u2622\u2625\5\u033e\u01a0\2\u2623\u2625\5"+
		"\u0340\u01a1\2\u2624\u261f\3\2\2\2\u2624\u2620\3\2\2\2\u2624\u2621\3\2"+
		"\2\2\u2624\u2622\3\2\2\2\u2624\u2623\3\2\2\2\u2625\u0337\3\2\2\2\u2626"+
		"\u262b\7\u031b\2\2\u2627\u262b\7\u031d\2\2\u2628\u262b\7s\2\2\u2629\u262b"+
		"\5\u033a\u019e\2\u262a\u2626\3\2\2\2\u262a\u2627\3\2\2\2\u262a\u2628\3"+
		"\2\2\2\u262a\u2629\3\2\2\2\u262b\u262c\3\2\2\2\u262c\u262d\7\u0331\2\2"+
		"\u262d\u262e\7\u0305\2\2\u262e\u262f\7\u0336\2\2\u262f\u2630\7\u0320\2"+
		"\2\u2630\u2631\7\u0338\2\2\u2631\u2632\7\u0320\2\2\u2632\u2652\7\u0337"+
		"\2\2\u2633\u2638\7\u031b\2\2\u2634\u2638\7\u031d\2\2\u2635\u2638\7s\2"+
		"\2\u2636\u2638\5\u033a\u019e\2\u2637\u2633\3\2\2\2\u2637\u2634\3\2\2\2"+
		"\u2637\u2635\3\2\2\2\u2637\u2636\3\2\2\2\u2638\u2639\3\2\2\2\u2639\u263a"+
		"\7\u0331\2\2\u263a\u263b\7\u02ba\2\2\u263b\u263c\7\u0331\2\2\u263c\u263d"+
		"\7\u0305\2\2\u263d\u263e\7\u0336\2\2\u263e\u263f\7\u0320\2\2\u263f\u2640"+
		"\7\u0338\2\2\u2640\u2641\7\u0320\2\2\u2641\u2652\7\u0337\2\2\u2642\u2647"+
		"\7\u031b\2\2\u2643\u2647\7\u031d\2\2\u2644\u2647\7s\2\2\u2645\u2647\5"+
		"\u033a\u019e\2\u2646\u2642\3\2\2\2\u2646\u2643\3\2\2\2\u2646\u2644\3\2"+
		"\2\2\u2646\u2645\3\2\2\2\u2647\u2648\3\2\2\2\u2648\u2649\7\u0331\2\2\u2649"+
		"\u264a\7\u00f3\2\2\u264a\u264b\7\u0331\2\2\u264b\u264c\7\u0305\2\2\u264c"+
		"\u264d\7\u0336\2\2\u264d\u264e\7\u0320\2\2\u264e\u264f\7\u0338\2\2\u264f"+
		"\u2650\7\u0320\2\2\u2650\u2652\7\u0337\2\2\u2651\u262a\3\2\2\2\u2651\u2637"+
		"\3\2\2\2\u2651\u2646\3\2\2\2\u2652\u0339\3\2\2\2\u2653\u2657\7\u031b\2"+
		"\2\u2654\u2657\7\u031d\2\2\u2655\u2657\5\u0380\u01c1\2\u2656\u2653\3\2"+
		"\2\2\u2656\u2654\3\2\2\2\u2656\u2655\3\2\2\2\u2657\u2658\3\2\2\2\u2658"+
		"\u2659\7\u0331\2\2\u2659\u265a\7\u0294\2\2\u265a\u265b\7\u0336\2\2\u265b"+
		"\u265c\7\u0320\2\2\u265c\u266a\7\u0337\2\2\u265d\u2661\7\u031b\2\2\u265e"+
		"\u2661\7\u031d\2\2\u265f\u2661\5\u0380\u01c1\2\u2660\u265d\3\2\2\2\u2660"+
		"\u265e\3\2\2\2\u2660\u265f\3\2\2\2\u2661\u2662\3\2\2\2\u2662\u2663\7\u0331"+
		"\2\2\u2663\u2664\7\u02ba\2\2\u2664\u2665\7\u0331\2\2\u2665\u2666\7\u0294"+
		"\2\2\u2666\u2667\7\u0336\2\2\u2667\u2668\7\u0320\2\2\u2668\u266a\7\u0337"+
		"\2\2\u2669\u2656\3\2\2\2\u2669\u2660\3\2\2\2\u266a\u033b\3\2\2\2\u266b"+
		"\u266c\t}\2\2\u266c\u266d\7\u0331\2\2\u266d\u266e\7\u01f4\2\2\u266e\u266f"+
		"\7\u0336\2\2\u266f\u2670\7\u0320\2\2\u2670\u2671\7\u0337\2\2\u2671\u033d"+
		"\3\2\2\2\u2672\u2673\t}\2\2\u2673\u2674\7\u0331\2\2\u2674\u2675\7\u025c"+
		"\2\2\u2675\u2676\7\u0336\2\2\u2676\u2677\7\u0320\2\2\u2677\u2678\7\u0337"+
		"\2\2\u2678\u033f\3\2\2\2\u2679\u267a\t}\2\2\u267a\u267b\7\u0331\2\2\u267b"+
		"\u267c\7\u0269\2\2\u267c\u267d\7\u0336\2\2\u267d\u267e\7\u0320\2\2\u267e"+
		"\u267f\7\u0337\2\2\u267f\u0341\3\2\2\2\u2680\u2681\7\u0179\2\2\u2681\u2682"+
		"\5\u02cc\u0167\2\u2682\u2683\7\u015d\2\2\u2683\u2684\5\u02cc\u0167\2\u2684"+
		"\u0343\3\2\2\2\u2685\u2686\7\u0179\2\2\u2686\u2687\5\u02e2\u0172\2\u2687"+
		"\u2688\7\u015d\2\2\u2688\u2689\5\u02cc\u0167\2\u2689\u0345\3\2\2\2\u268a"+
		"\u268c\7\20\2\2\u268b\u268a\3\2\2\2\u268b\u268c\3\2\2\2\u268c\u268d\3"+
		"\2\2\2\u268d\u268e\5\u0356\u01ac\2\u268e\u0347\3\2\2\2\u268f\u2691\7\20"+
		"\2\2\u2690\u268f\3\2\2\2\u2690\u2691\3\2\2\2\u2691\u2692\3\2\2\2\u2692"+
		"\u2693\5\u034a\u01a6\2\u2693\u0349\3\2\2\2\u2694\u2696\5\u03ba\u01de\2"+
		"\u2695\u2697\5\u034c\u01a7\2\u2696\u2695\3\2\2\2\u2696\u2697\3\2\2\2\u2697"+
		"\u034b\3\2\2\2\u2698\u269a\7\u017d\2\2\u2699\u2698\3\2\2\2\u2699\u269a"+
		"\3\2\2\2\u269a\u269b\3\2\2\2\u269b\u269c\7\u0336\2\2\u269c\u26a3\5\u0350"+
		"\u01a9\2\u269d\u269f\7\u0338\2\2\u269e\u269d\3\2\2\2\u269e\u269f\3\2\2"+
		"\2\u269f\u26a0\3\2\2\2\u26a0\u26a2\5\u0350\u01a9\2\u26a1\u269e\3\2\2\2"+
		"\u26a2\u26a5\3\2\2\2\u26a3\u26a1\3\2\2\2\u26a3\u26a4\3\2\2\2\u26a4\u26a6"+
		"\3\2\2\2\u26a5\u26a3\3\2\2\2\u26a6\u26a7\7\u0337\2\2\u26a7\u034d\3\2\2"+
		"\2\u26a8\u26a9\7\u017d\2\2\u26a9\u26aa\7\u0336\2\2\u26aa\u26b1\5\u0350"+
		"\u01a9\2\u26ab\u26ad\7\u0338\2\2\u26ac\u26ab\3\2\2\2\u26ac\u26ad\3\2\2"+
		"\2\u26ad\u26ae\3\2\2\2\u26ae\u26b0\5\u0350\u01a9\2\u26af\u26ac\3\2\2\2"+
		"\u26b0\u26b3\3\2\2\2\u26b1\u26af\3\2\2\2\u26b1\u26b2\3\2\2\2\u26b2\u26b4"+
		"\3\2\2\2\u26b3\u26b1\3\2\2\2\u26b4\u26b5\7\u0337\2\2\u26b5\u034f\3\2\2"+
		"\2\u26b6\u26b8\7\u026a\2\2\u26b7\u26b6\3\2\2\2\u26b7\u26b8\3\2\2\2\u26b8"+
		"\u26e9\3\2\2\2\u26b9\u26cd\7\u009f\2\2\u26ba\u26bb\7\u0336\2\2\u26bb\u26c0"+
		"\5\u0352\u01aa\2\u26bc\u26bd\7\u0338\2\2\u26bd\u26bf\5\u0352\u01aa\2\u26be"+
		"\u26bc\3\2\2\2\u26bf\u26c2\3\2\2\2\u26c0\u26be\3\2\2\2\u26c0\u26c1\3\2"+
		"\2\2\u26c1\u26c3\3\2\2\2\u26c2\u26c0\3\2\2\2\u26c3\u26c4\7\u0337\2\2\u26c4"+
		"\u26ce\3\2\2\2\u26c5\u26ca\5\u0352\u01aa\2\u26c6\u26c7\7\u0338\2\2\u26c7"+
		"\u26c9\5\u0352\u01aa\2\u26c8\u26c6\3\2\2\2\u26c9\u26cc\3\2\2\2\u26ca\u26c8"+
		"\3\2\2\2\u26ca\u26cb\3\2\2\2\u26cb\u26ce\3\2\2\2\u26cc\u26ca\3\2\2\2\u26cd"+
		"\u26ba\3\2\2\2\u26cd\u26c5\3\2\2\2\u26ce\u26ea\3\2\2\2\u26cf\u26d0\7\u009f"+
		"\2\2\u26d0\u26d1\7\u0324\2\2\u26d1\u26ea\5\u0352\u01aa\2\u26d2\u26e1\7"+
		"\u0087\2\2\u26d3\u26d4\7\u0336\2\2\u26d4\u26d5\5\u0352\u01aa\2\u26d5\u26d6"+
		"\7\u0336\2\2\u26d6\u26db\7\u031d\2\2\u26d7\u26d8\7\u0338\2\2\u26d8\u26da"+
		"\7\u031d\2\2\u26d9\u26d7\3\2\2\2\u26da\u26dd\3\2\2\2\u26db\u26d9\3\2\2"+
		"\2\u26db\u26dc\3\2\2\2\u26dc\u26de\3\2\2\2\u26dd\u26db\3\2\2\2\u26de\u26df"+
		"\7\u0337\2\2\u26df\u26e0\7\u0337\2\2\u26e0\u26e2\3\2\2\2\u26e1\u26d3\3"+
		"\2\2\2\u26e1\u26e2\3\2\2\2\u26e2\u26ea\3\2\2\2\u26e3\u26ea\7\u02cf\2\2"+
		"\u26e4\u26ea\7\u02d9\2\2\u26e5\u26e6\7\u02da\2\2\u26e6\u26e7\7\u0324\2"+
		"\2\u26e7\u26ea\7\u031c\2\2\u26e8\u26ea\7\u031d\2\2\u26e9\u26b9\3\2\2\2"+
		"\u26e9\u26cf\3\2\2\2\u26e9\u26d2\3\2\2\2\u26e9\u26e3\3\2\2\2\u26e9\u26e4"+
		"\3\2\2\2\u26e9\u26e5\3\2\2\2\u26e9\u26e8\3\2\2\2\u26ea\u0351\3\2\2\2\u26eb"+
		"\u26ee\5\u03ba\u01de\2\u26ec\u26ee\7\u031c\2\2\u26ed\u26eb\3\2\2\2\u26ed"+
		"\u26ec\3\2\2\2\u26ee\u0353\3\2\2\2\u26ef\u26f0\7\u0336\2\2\u26f0\u26f5"+
		"\5\u0356\u01ac\2\u26f1\u26f2\7\u0338\2\2\u26f2\u26f4\5\u0356\u01ac\2\u26f3"+
		"\u26f1\3\2\2\2\u26f4\u26f7\3\2\2\2\u26f5\u26f3\3\2\2\2\u26f5\u26f6\3\2"+
		"\2\2\u26f6\u26f8\3\2\2\2\u26f7\u26f5\3\2\2\2\u26f8\u26f9\7\u0337\2\2\u26f9"+
		"\u0355\3\2\2\2\u26fa\u26fd\5\u03ba\u01de\2\u26fb\u26fd\7\u0320\2\2\u26fc"+
		"\u26fa\3\2\2\2\u26fc\u26fb\3\2\2\2\u26fd\u0357\3\2\2\2\u26fe\u26ff\7\u0173"+
		"\2\2\u26ff\u2700\7\u0336\2\2\u2700\u2701\5\u035a\u01ae\2\u2701\u2709\7"+
		"\u0337\2\2\u2702\u2703\7\u0338\2\2\u2703\u2704\7\u0336\2\2\u2704\u2705"+
		"\5\u035a\u01ae\2\u2705\u2706\7\u0337\2\2\u2706\u2708\3\2\2\2\u2707\u2702"+
		"\3\2\2\2\u2708\u270b\3\2\2\2\u2709\u2707\3\2\2\2\u2709\u270a\3\2\2\2\u270a"+
		"\u0359\3\2\2\2\u270b\u2709\3\2\2\2\u270c\u2711\5\u02cc\u0167\2\u270d\u270e"+
		"\7\u0338\2\2\u270e\u2710\5\u02cc\u0167\2\u270f\u270d\3\2\2\2\u2710\u2713"+
		"\3\2\2\2\u2711\u270f\3\2\2\2\u2711\u2712\3\2\2\2\u2712\u035b\3\2\2\2\u2713"+
		"\u2711\3\2\2\2\u2714\u2715\t~\2\2\u2715\u2716\7\u0336\2\2\u2716\u2717"+
		"\7\u0337\2\2\u2717\u271f\5\u0364\u01b3\2\u2718\u2719\7\u026f\2\2\u2719"+
		"\u271a\7\u0336\2\2\u271a\u271b\5\u02cc\u0167\2\u271b\u271c\7\u0337\2\2"+
		"\u271c\u271d\5\u0364\u01b3\2\u271d\u271f\3\2\2\2\u271e\u2714\3\2\2\2\u271e"+
		"\u2718\3\2\2\2\u271f\u035d\3\2\2\2\u2720\u2721\t\177\2\2\u2721\u2722\7"+
		"\u0336\2\2\u2722\u2723\5\u0362\u01b2\2\u2723\u2725\7\u0337\2\2\u2724\u2726"+
		"\5\u0364\u01b3\2\u2725\u2724\3\2\2\2\u2725\u2726\3\2\2\2\u2726\u2741\3"+
		"\2\2\2\u2727\u2728\t\u0080\2\2\u2728\u272b\7\u0336\2\2\u2729\u272c\7\u033b"+
		"\2\2\u272a\u272c\5\u0362\u01b2\2\u272b\u2729\3\2\2\2\u272b\u272a\3\2\2"+
		"\2\u272c\u272d\3\2\2\2\u272d\u272f\7\u0337\2\2\u272e\u2730\5\u0364\u01b3"+
		"\2\u272f\u272e\3\2\2\2\u272f\u2730\3\2\2\2\u2730\u2741\3\2\2\2\u2731\u2732"+
		"\7\u01b7\2\2\u2732\u2733\7\u0336\2\2\u2733\u2734\5\u0362\u01b2\2\u2734"+
		"\u2735\7\u0337\2\2\u2735\u2741\3\2\2\2\u2736\u2737\7\u0213\2\2\u2737\u2738"+
		"\7\u0336\2\2\u2738\u2739\5\u02cc\u0167\2\u2739\u273a\7\u0337\2\2\u273a"+
		"\u2741\3\2\2\2\u273b\u273c\7\u0214\2\2\u273c\u273d\7\u0336\2\2\u273d\u273e"+
		"\5\u035a\u01ae\2\u273e\u273f\7\u0337\2\2\u273f\u2741\3\2\2\2\u2740\u2720"+
		"\3\2\2\2\u2740\u2727\3\2\2\2\u2740\u2731\3\2\2\2\u2740\u2736\3\2\2\2\u2740"+
		"\u273b\3\2\2\2\u2741\u035f\3\2\2\2\u2742\u2743\t\u0081\2\2\u2743\u2744"+
		"\7\u0336\2\2\u2744\u2745\5\u02cc\u0167\2\u2745\u2746\7\u0337\2\2\u2746"+
		"\u2747\5\u0364\u01b3\2\u2747\u2757\3\2\2\2\u2748\u2749\t\u0082\2\2\u2749"+
		"\u274a\7\u0336\2\2\u274a\u2751\5\u02cc\u0167\2\u274b\u274c\7\u0338\2\2"+
		"\u274c\u274f\5\u02cc\u0167\2\u274d\u274e\7\u0338\2\2\u274e\u2750\5\u02cc"+
		"\u0167\2\u274f\u274d\3\2\2\2\u274f\u2750\3\2\2\2\u2750\u2752\3\2\2\2\u2751"+
		"\u274b\3\2\2\2\u2751\u2752\3\2\2\2\u2752\u2753\3\2\2\2\u2753\u2754\7\u0337"+
		"\2\2\u2754\u2755\5\u0364\u01b3\2\u2755\u2757\3\2\2\2\u2756\u2742\3\2\2"+
		"\2\u2756\u2748\3\2\2\2\u2757\u0361\3\2\2\2\u2758\u275a\to\2\2\u2759\u2758"+
		"\3\2\2\2\u2759\u275a\3\2\2\2\u275a\u275b\3\2\2\2\u275b\u275c\5\u02cc\u0167"+
		"\2\u275c\u0363\3\2\2\2\u275d\u275e\7\u00f1\2\2\u275e\u2762\7\u0336\2\2"+
		"\u275f\u2760\7\u0281\2\2\u2760\u2761\7&\2\2\u2761\u2763\5\u035a\u01ae"+
		"\2\u2762\u275f\3\2\2\2\u2762\u2763\3\2\2\2\u2763\u2765\3\2\2\2\u2764\u2766"+
		"\5\u02f6\u017c\2\u2765\u2764\3\2\2\2\u2765\u2766\3\2\2\2\u2766\u2768\3"+
		"\2\2\2\u2767\u2769\5\u0366\u01b4\2\u2768\u2767\3\2\2\2\u2768\u2769\3\2"+
		"\2\2\u2769\u276a\3\2\2\2\u276a\u276b\7\u0337\2\2\u276b\u0365\3\2\2\2\u276c"+
		"\u276d\t\u0083\2\2\u276d\u276e\5\u0368\u01b5\2\u276e\u0367\3\2\2\2\u276f"+
		"\u2776\5\u036c\u01b7\2\u2770\u2771\7\35\2\2\u2771\u2772\5\u036a\u01b6"+
		"\2\u2772\u2773\7\13\2\2\u2773\u2774\5\u036a\u01b6\2\u2774\u2776\3\2\2"+
		"\2\u2775\u276f\3\2\2\2\u2775\u2770\3\2\2\2\u2776\u0369\3\2\2\2\u2777\u277a"+
		"\5\u036c\u01b7\2\u2778\u277a\5\u036e\u01b8\2\u2779\u2777\3\2\2\2\u2779"+
		"\u2778\3\2\2\2\u277a\u036b\3\2\2\2\u277b\u277c\7\u02fe\2\2\u277c\u2782"+
		"\7\u0288\2\2\u277d\u277e\7\u031c\2\2\u277e\u2782\7\u0288\2\2\u277f\u2780"+
		"\7K\2\2\u2780\u2782\7\u02ba\2\2\u2781\u277b\3\2\2\2\u2781\u277d\3\2\2"+
		"\2\u2781\u277f\3\2\2\2\u2782\u036d\3\2\2\2\u2783\u2784\7\u02fe\2\2\u2784"+
		"\u2788\7\u0205\2\2\u2785\u2786\7\u031c\2\2\u2786\u2788\7\u0205\2\2\u2787"+
		"\u2783\3\2\2\2\u2787\u2785\3\2\2\2\u2788\u036f\3\2\2\2\u2789\u278a\7\u0201"+
		"\2\2\u278a\u278f\5\u0372\u01ba\2\u278b\u278c\7\u0338\2\2\u278c\u278e\5"+
		"\u0372\u01ba\2\u278d\u278b\3\2\2\2\u278e\u2791\3\2\2\2\u278f\u278d\3\2"+
		"\2\2\u278f\u2790\3\2\2\2\u2790\u27ac\3\2\2\2\u2791\u278f\3\2\2\2\u2792"+
		"\u2793\7\u01d7\2\2\u2793\u2796\7\u0324\2\2\u2794\u2797\5\u03ba\u01de\2"+
		"\u2795\u2797\7\u0320\2\2\u2796\u2794\3\2\2\2\u2796\u2795\3\2\2\2\u2797"+
		"\u27ac\3\2\2\2\u2798\u2799\7\u01d6\2\2\u2799\u279c\7\u0324\2\2\u279a\u279d"+
		"\5\u03ba\u01de\2\u279b\u279d\7\u0320\2\2\u279c\u279a\3\2\2\2\u279c\u279b"+
		"\3\2\2\2\u279d\u27ac\3\2\2\2\u279e\u279f\7\u0260\2\2\u279f\u27a0\7\u0324"+
		"\2\2\u27a0\u27ac\t\t\2\2\u27a1\u27a2\7\u02f5\2\2\u27a2\u27a3\7\u0324\2"+
		"\2\u27a3\u27ac\t\t\2\2\u27a4\u27a5\7\u02fb\2\2\u27a5\u27a6\7\u0324\2\2"+
		"\u27a6\u27ac\7\u031c\2\2\u27a7\u27a8\7\u01d2\2\2\u27a8\u27ac\t\t\2\2\u27a9"+
		"\u27aa\7\u02f8\2\2\u27aa\u27ac\t\t\2\2\u27ab\u2789\3\2\2\2\u27ab\u2792"+
		"\3\2\2\2\u27ab\u2798\3\2\2\2\u27ab\u279e\3\2\2\2\u27ab\u27a1\3\2\2\2\u27ab"+
		"\u27a4\3\2\2\2\u27ab\u27a7\3\2\2\2\u27ab\u27a9\3\2\2\2\u27ac\u0371\3\2"+
		"\2\2\u27ad\u27b4\7\u0336\2\2\u27ae\u27af\7\u026b\2\2\u27af\u27b0\7\u0324"+
		"\2\2\u27b0\u27b5\t\u0084\2\2\u27b1\u27b2\7\u01e2\2\2\u27b2\u27b3\7\u0324"+
		"\2\2\u27b3\u27b5\7\u0320\2\2\u27b4\u27ae\3\2\2\2\u27b4\u27b1\3\2\2\2\u27b5"+
		"\u27b6\3\2\2\2\u27b6\u27b7\7\u0337\2\2\u27b7\u0373\3\2\2\2\u27b8\u27bb"+
		"\5\u0376\u01bc\2\u27b9\u27bb\5\u0378\u01bd\2\u27ba\u27b8\3\2\2\2\u27ba"+
		"\u27b9\3\2\2\2\u27bb\u0375\3\2\2\2\u27bc\u27bd\7\u01fe\2\2\u27bd\u27c0"+
		"\5\u03ba\u01de\2\u27be\u27bf\7?\2\2\u27bf\u27c1\7\u0201\2\2\u27c0\u27be"+
		"\3\2\2\2\u27c0\u27c1\3\2\2\2\u27c1\u27c3\3\2\2\2\u27c2\u27c4\7Z\2\2\u27c3"+
		"\u27c2\3\2\2\2\u27c3\u27c4\3\2\2\2\u27c4\u27c7\3\2\2\2\u27c5\u27c6\7?"+
		"\2\2\u27c6\u27c8\7\u0251\2\2\u27c7\u27c5\3\2\2\2\u27c7\u27c8\3\2\2\2\u27c8"+
		"\u27c9\3\2\2\2\u27c9\u27ce\5\u0378\u01bd\2\u27ca\u27cb\7\u0338\2\2\u27cb"+
		"\u27cd\5\u0378\u01bd\2\u27cc\u27ca\3\2\2\2\u27cd\u27d0\3\2\2\2\u27ce\u27cc"+
		"\3\2\2\2\u27ce\u27cf\3\2\2\2\u27cf\u0377\3\2\2\2\u27d0\u27ce\3\2\2\2\u27d1"+
		"\u27d2\7\u0336\2\2\u27d2\u27d3\7\u025f\2\2\u27d3\u27d6\7\u0324\2\2\u27d4"+
		"\u27d7\5\u03ba\u01de\2\u27d5\u27d7\7\u0320\2\2\u27d6\u27d4\3\2\2\2\u27d6"+
		"\u27d5\3\2\2\2\u27d7\u27d9\3\2\2\2\u27d8\u27da\7\u0338\2\2\u27d9\u27d8"+
		"\3\2\2\2\u27d9\u27da\3\2\2\2\u27da\u27db\3\2\2\2\u27db\u27dc\7\u0083\2"+
		"\2\u27dc\u27dd\7\u0324\2\2\u27dd\u27df\7\u0320\2\2\u27de\u27e0\7\u0338"+
		"\2\2\u27df\u27de\3\2\2\2\u27df\u27e0\3\2\2\2\u27e0\u27e7\3\2\2\2\u27e1"+
		"\u27e2\7\u02d7\2\2\u27e2\u27e3\7\u0324\2\2\u27e3\u27e5\5\u03c2\u01e2\2"+
		"\u27e4\u27e6\7\u0338\2\2\u27e5\u27e4\3\2\2\2\u27e5\u27e6\3\2\2\2\u27e6"+
		"\u27e8\3\2\2\2\u27e7\u27e1\3\2\2\2\u27e7\u27e8\3\2\2\2\u27e8\u27f2\3\2"+
		"\2\2\u27e9\u27ea\7\u024e\2\2\u27ea\u27ed\7\u0324\2\2\u27eb\u27ee\5\u03c2"+
		"\u01e2\2\u27ec\u27ee\7\u0301\2\2\u27ed\u27eb\3\2\2\2\u27ed\u27ec\3\2\2"+
		"\2\u27ee\u27f0\3\2\2\2\u27ef\u27f1\7\u0338\2\2\u27f0\u27ef\3\2\2\2\u27f0"+
		"\u27f1\3\2\2\2\u27f1\u27f3\3\2\2\2\u27f2\u27e9\3\2\2\2\u27f2\u27f3\3\2"+
		"\2\2\u27f3\u27fa\3\2\2\2\u27f4\u27f5\7\u01ff\2\2\u27f5\u27f6\7\u0324\2"+
		"\2\u27f6\u27f8\5\u03c2\u01e2\2\u27f7\u27f9\7\u0338\2\2\u27f8\u27f7\3\2"+
		"\2\2\u27f8\u27f9\3\2\2\2\u27f9\u27fb\3\2\2\2\u27fa\u27f4\3\2\2\2\u27fa"+
		"\u27fb\3\2\2\2\u27fb\u27fc\3\2\2\2\u27fc\u27fd\7\u0337\2\2\u27fd\u0379"+
		"\3\2\2\2\u27fe\u27ff\5\u03ba\u01de\2\u27ff\u2800\7\u0331\2\2\u2800\u2801"+
		"\5\u03ba\u01de\2\u2801\u2802\7\u0331\2\2\u2802\u2803\5\u03ba\u01de\2\u2803"+
		"\u2804\7\u0331\2\2\u2804\u2810\3\2\2\2\u2805\u2806\5\u03ba\u01de\2\u2806"+
		"\u2808\7\u0331\2\2\u2807\u2809\5\u03ba\u01de\2\u2808\u2807\3\2\2\2\u2808"+
		"\u2809\3\2\2\2\u2809\u280a\3\2\2\2\u280a\u280b\7\u0331\2\2\u280b\u2810"+
		"\3\2\2\2\u280c\u280d\5\u03ba\u01de\2\u280d\u280e\7\u0331\2\2\u280e\u2810"+
		"\3\2\2\2\u280f\u27fe\3\2\2\2\u280f\u2805\3\2\2\2\u280f\u280c\3\2\2\2\u280f"+
		"\u2810\3\2\2\2\u2810\u2811\3\2\2\2\u2811\u2812\5\u03ba\u01de\2\u2812\u037b"+
		"\3\2\2\2\u2813\u2819\5\u03ba\u01de\2\u2814\u2815\5\u03ba\u01de\2\u2815"+
		"\u2816\7\u0331\2\2\u2816\u2817\5\u03ba\u01de\2\u2817\u2819\3\2\2\2\u2818"+
		"\u2813\3\2\2\2\u2818\u2814\3\2\2\2\u2819\u037d\3\2\2\2\u281a\u2820\5\u03ba"+
		"\u01de\2\u281b\u281c\5\u03ba\u01de\2\u281c\u281d\7\u0331\2\2\u281d\u281e"+
		"\5\u03ba\u01de\2\u281e\u2820\3\2\2\2\u281f\u281a\3\2\2\2\u281f\u281b\3"+
		"\2\2\2\u2820\u037f\3\2\2\2\u2821\u2822\5\u03ba\u01de\2\u2822\u2823\7\u0331"+
		"\2\2\u2823\u2824\5\u03ba\u01de\2\u2824\u2825\7\u0331\2\2\u2825\u2826\5"+
		"\u03ba\u01de\2\u2826\u2827\7\u0331\2\2\u2827\u2833\3\2\2\2\u2828\u2829"+
		"\5\u03ba\u01de\2\u2829\u282b\7\u0331\2\2\u282a\u282c\5\u03ba\u01de\2\u282b"+
		"\u282a\3\2\2\2\u282b\u282c\3\2\2\2\u282c\u282d\3\2\2\2\u282d\u282e\7\u0331"+
		"\2\2\u282e\u2833\3\2\2\2\u282f\u2830\5\u03ba\u01de\2\u2830\u2831\7\u0331"+
		"\2\2\u2831\u2833\3\2\2\2\u2832\u2821\3\2\2\2\u2832\u2828\3\2\2\2\u2832"+
		"\u282f\3\2\2\2\u2832\u2833\3\2\2\2\u2833\u2834\3\2\2\2\u2834\u2835\5\u03ba"+
		"\u01de\2\u2835\u0381\3\2\2\2\u2836\u2837\5\u03ba\u01de\2\u2837\u2839\7"+
		"\u0331\2\2\u2838\u283a\5\u03ba\u01de\2\u2839\u2838\3\2\2\2\u2839\u283a"+
		"\3\2\2\2\u283a\u283b\3\2\2\2\u283b\u283c\7\u0331\2\2\u283c\u2841\3\2\2"+
		"\2\u283d\u283e\5\u03ba\u01de\2\u283e\u283f\7\u0331\2\2\u283f\u2841\3\2"+
		"\2\2\u2840\u2836\3\2\2\2\u2840\u283d\3\2\2\2\u2840\u2841\3\2\2\2\u2841"+
		"\u2842\3\2\2\2\u2842\u2851\5\u03ba\u01de\2\u2843\u2844\5\u03ba\u01de\2"+
		"\u2844\u2846\7\u0331\2\2\u2845\u2847\5\u03ba\u01de\2\u2846\u2845\3\2\2"+
		"\2\u2846\u2847\3\2\2\2\u2847\u2848\3\2\2\2\u2848\u2849\7\u0331\2\2\u2849"+
		"\u284e\3\2\2\2\u284a\u284b\5\u03ba\u01de\2\u284b\u284c\7\u0331\2\2\u284c"+
		"\u284e\3\2\2\2\u284d\u2843\3\2\2\2\u284d\u284a\3\2\2\2\u284d\u284e\3\2"+
		"\2\2\u284e\u284f\3\2\2\2\u284f\u2851\7 \2\2\u2850\u2840\3\2\2\2\u2850"+
		"\u284d\3\2\2\2\u2851\u0383\3\2\2\2\u2852\u2853\5\u03ba\u01de\2\u2853\u2854"+
		"\7\u0331\2\2\u2854\u2856\3\2\2\2\u2855\u2852\3\2\2\2\u2855\u2856\3\2\2"+
		"\2\u2856\u2857\3\2\2\2\u2857\u2858\5\u03ba\u01de\2\u2858\u0385\3\2\2\2"+
		"\u2859\u285a\5\u03ba\u01de\2\u285a\u285b\7\u0331\2\2\u285b\u285d\3\2\2"+
		"\2\u285c\u2859\3\2\2\2\u285c\u285d\3\2\2\2\u285d\u285e\3\2\2\2\u285e\u285f"+
		"\5\u03ba\u01de\2\u285f\u0387\3\2\2\2\u2860\u286c\5\u0386\u01c4\2\u2861"+
		"\u2862\5\u03ba\u01de\2\u2862\u2864\7\u0331\2\2\u2863\u2865\5\u03ba\u01de"+
		"\2\u2864\u2863\3\2\2\2\u2864\u2865\3\2\2\2\u2865\u2866\3\2\2\2\u2866\u2867"+
		"\7\u0331\2\2\u2867\u2869\3\2\2\2\u2868\u2861\3\2\2\2\u2868\u2869\3\2\2"+
		"\2\u2869\u286a\3\2\2\2\u286a\u286c\5\u03ba\u01de\2\u286b\u2860\3\2\2\2"+
		"\u286b\u2868\3\2\2\2\u286c\u0389\3\2\2\2\u286d\u287b\5\u0388\u01c5\2\u286e"+
		"\u286f\5\u03ba\u01de\2\u286f\u2870\7\u0331\2\2\u2870\u2871\5\u03ba\u01de"+
		"\2\u2871\u2873\7\u0331\2\2\u2872\u2874\5\u03ba\u01de\2\u2873\u2872\3\2"+
		"\2\2\u2873\u2874\3\2\2\2\u2874\u2875\3\2\2\2\u2875\u2876\7\u0331\2\2\u2876"+
		"\u2878\3\2\2\2\u2877\u286e\3\2\2\2\u2877\u2878\3\2\2\2\u2878\u2879\3\2"+
		"\2\2\u2879\u287b\5\u03ba\u01de\2\u287a\u286d\3\2\2\2\u287a\u2877\3\2\2"+
		"\2\u287b\u038b\3\2\2\2\u287c\u287f\5\u0380\u01c1\2\u287d\u287f\7\u031b"+
		"\2\2\u287e\u287c\3\2\2\2\u287e\u287d\3\2\2\2\u287f\u038d\3\2\2\2\u2880"+
		"\u2881\5\u0382\u01c2\2\u2881\u2882\7\u0331\2\2\u2882\u2884\3\2\2\2\u2883"+
		"\u2880\3\2\2\2\u2883\u2884\3\2\2\2\u2884\u2885\3\2\2\2\u2885\u28b1\5\u03ba"+
		"\u01de\2\u2886\u2887\5\u0382\u01c2\2\u2887\u2888\7\u0331\2\2\u2888\u288a"+
		"\3\2\2\2\u2889\u2886\3\2\2\2\u2889\u288a\3\2\2\2\u288a\u288b\3\2\2\2\u288b"+
		"\u28b1\7\u01bc\2\2\u288c\u288d\5\u0382\u01c2\2\u288d\u288e\7\u0331\2\2"+
		"\u288e\u2890\3\2\2\2\u288f\u288c\3\2\2\2\u288f\u2890\3\2\2\2\u2890\u2891"+
		"\3\2\2\2\u2891\u28b1\7\u02df\2\2\u2892\u2893\5\u0382\u01c2\2\u2893\u2894"+
		"\7\u0331\2\2\u2894\u2896\3\2\2\2\u2895\u2892\3\2\2\2\u2895\u2896\3\2\2"+
		"\2\u2896\u2897\3\2\2\2\u2897\u28b1\7\u0297\2\2\u2898\u2899\5\u0382\u01c2"+
		"\2\u2899\u289a\7\u0331\2\2\u289a\u289c\3\2\2\2\u289b\u2898\3\2\2\2\u289b"+
		"\u289c\3\2\2\2\u289c\u289d\3\2\2\2\u289d\u28b1\7\u0198\2\2\u289e\u289f"+
		"\5\u0382\u01c2\2\u289f\u28a0\7\u0331\2\2\u28a0\u28a2\3\2\2\2\u28a1\u289e"+
		"\3\2\2\2\u28a1\u28a2\3\2\2\2\u28a2\u28a3\3\2\2\2\u28a3\u28b1\7\u0195\2"+
		"\2\u28a4\u28a5\5\u0382\u01c2\2\u28a5\u28a6\7\u0331\2\2\u28a6\u28a8\3\2"+
		"\2\2\u28a7\u28a4\3\2\2\2\u28a7\u28a8\3\2\2\2\u28a8\u28a9\3\2\2\2\u28a9"+
		"\u28b1\7\u0194\2\2\u28aa\u28ab\5\u0382\u01c2\2\u28ab\u28ac\7\u0331\2\2"+
		"\u28ac\u28ae\3\2\2\2\u28ad\u28aa\3\2\2\2\u28ad\u28ae\3\2\2\2\u28ae\u28af"+
		"\3\2\2\2\u28af\u28b1\7\u0193\2\2\u28b0\u2883\3\2\2\2\u28b0\u2889\3\2\2"+
		"\2\u28b0\u288f\3\2\2\2\u28b0\u2895\3\2\2\2\u28b0\u289b\3\2\2\2\u28b0\u28a1"+
		"\3\2\2\2\u28b0\u28a7\3\2\2\2\u28b0\u28ad\3\2\2\2\u28b1\u038f\3\2\2\2\u28b2"+
		"\u28b4\5\u03ba\u01de\2\u28b3\u28b5\tv\2\2\u28b4\u28b3\3\2\2\2\u28b4\u28b5"+
		"\3\2\2\2\u28b5\u28bd\3\2\2\2\u28b6\u28b7\7\u0338\2\2\u28b7\u28b9\5\u03ba"+
		"\u01de\2\u28b8\u28ba\tv\2\2\u28b9\u28b8\3\2\2\2\u28b9\u28ba\3\2\2\2\u28ba"+
		"\u28bc\3\2\2\2\u28bb\u28b6\3\2\2\2\u28bc\u28bf\3\2\2\2\u28bd\u28bb\3\2"+
		"\2\2\u28bd\u28be\3\2\2\2\u28be\u0391\3\2\2\2\u28bf\u28bd\3\2\2\2\u28c0"+
		"\u28c5\5\u03ba\u01de\2\u28c1\u28c2\7\u0338\2\2\u28c2\u28c4\5\u03ba\u01de"+
		"\2\u28c3\u28c1\3\2\2\2\u28c4\u28c7\3\2\2\2\u28c5\u28c3\3\2\2\2\u28c5\u28c6"+
		"\3\2\2\2\u28c6\u0393\3\2\2\2\u28c7\u28c5\3\2\2\2\u28c8\u28cb\5\u03ba\u01de"+
		"\2\u28c9\u28cb\7\u031b\2\2\u28ca\u28c8\3\2\2\2\u28ca\u28c9\3\2\2\2\u28cb"+
		"\u0395\3\2\2\2\u28cc\u28cd\t\t\2\2\u28cd\u0397\3\2\2\2\u28ce\u28cf\t\u0085"+
		"\2\2\u28cf\u0399\3\2\2\2\u28d0\u28d2\7\u00dd\2\2\u28d1\u28d0\3\2\2\2\u28d1"+
		"\u28d2\3\2\2\2\u28d2\u28d3\3\2\2\2\u28d3\u28d4\7\u00e0\2\2\u28d4\u039b"+
		"\3\2\2\2\u28d5\u28dd\5\u039a\u01ce\2\u28d6\u28d7\7Z\2\2\u28d7\u28da\5"+
		"\u02d6\u016c\2\u28d8\u28d9\7\u017d\2\2\u28d9\u28db\7\u0173\2\2\u28da\u28d8"+
		"\3\2\2\2\u28da\u28db\3\2\2\2\u28db\u28dd\3\2\2\2\u28dc\u28d5\3\2\2\2\u28dc"+
		"\u28d6\3\2\2\2\u28dd\u039d\3\2\2\2\u28de\u28e4\5\u038a\u01c6\2\u28df\u28e4"+
		"\7\u0120\2\2\u28e0\u28e4\7\u00b2\2\2\u28e1\u28e4\7\u01a9\2\2\u28e2\u28e4"+
		"\7\u01b6\2\2\u28e3\u28de\3\2\2\2\u28e3\u28df\3\2\2\2\u28e3\u28e0\3\2\2"+
		"\2\u28e3\u28e1\3\2\2\2\u28e3\u28e2\3\2\2\2\u28e4\u039f\3\2\2\2\u28e5\u28e6"+
		"\7\34\2\2\u28e6\u28e7\7F\2\2\u28e7\u28e8\7\u02f2\2\2\u28e8\u28e9\7\u0336"+
		"\2\2\u28e9\u28ea\7\u031b\2\2\u28ea\u28eb\7\u0337\2\2\u28eb\u28ec\7\u02f1"+
		"\2\2\u28ec\u28ed\7\u0324\2\2\u28ed\u28ef\5\u01c0\u00e1\2\u28ee\u28f0\7"+
		"\u0339\2\2\u28ef\u28ee\3\2\2\2\u28ef\u28f0\3\2\2\2\u28f0\u03a1\3\2\2\2"+
		"\u28f1\u28f2\7\34\2\2\u28f2\u28f4\7\u01e1\2\2\u28f3\u28f5\7F\2\2\u28f4"+
		"\u28f3\3\2\2\2\u28f4\u28f5\3\2\2\2\u28f5\u28f6\3\2\2\2\u28f6\u28f7\7\u031b"+
		"\2\2\u28f7\u28f8\7\u008c\2\2\u28f8\u28f9\7\u0139\2\2\u28f9\u28fa\5\u03a6"+
		"\u01d4\2\u28fa\u28fb\7\u015e\2\2\u28fb\u28fc\7\u0139\2\2\u28fc\u28ff\5"+
		"\u03a6\u01d4\2\u28fd\u28fe\7\u0338\2\2\u28fe\u2900\7\u0320\2\2\u28ff\u28fd"+
		"\3\2\2\2\u28ff\u2900\3\2\2\2\u2900\u2901\3\2\2\2\u2901\u2902\7\u00e6\2"+
		"\2\u2902\u2903\7D\2\2\u2903\u291a\5\u03a4\u01d3\2\u2904\u290b\7\u017d"+
		"\2\2\u2905\u2906\t\u0086\2\2\u2906\u2907\7\u0324\2\2\u2907\u2909\7\u031b"+
		"\2\2\u2908\u290a\7\u0338\2\2\u2909\u2908\3\2\2\2\u2909\u290a\3\2\2\2\u290a"+
		"\u290c\3\2\2\2\u290b\u2905\3\2\2\2\u290b\u290c\3\2\2\2\u290c\u2913\3\2"+
		"\2\2\u290d\u290e\7\u00b4\2\2\u290e\u290f\7\u0324\2\2\u290f\u2911\t\2\2"+
		"\2\u2910\u2912\7\u0338\2\2\u2911\u2910\3\2\2\2\u2911\u2912\3\2\2\2\u2912"+
		"\u2914\3\2\2\2\u2913\u290d\3\2\2\2\u2913\u2914\3\2\2\2\u2914\u2918\3\2"+
		"\2\2\u2915\u2916\7\u01ef\2\2\u2916\u2917\7\u0324\2\2\u2917\u2919\t\t\2"+
		"\2\u2918\u2915\3\2\2\2\u2918\u2919\3\2\2\2\u2919\u291b\3\2\2\2\u291a\u2904"+
		"\3\2\2\2\u291a\u291b\3\2\2\2\u291b\u291d\3\2\2\2\u291c\u291e\7\u0339\2"+
		"\2\u291d\u291c\3\2\2\2\u291d\u291e\3\2\2\2\u291e\u03a3\3\2\2\2\u291f\u2922"+
		"\5\u03ba\u01de\2\u2920\u2922\5\u02cc\u0167\2\u2921\u291f\3\2\2\2\u2921"+
		"\u2920\3\2\2\2\u2922\u03a5\3\2\2\2\u2923\u2926\5\u03ba\u01de\2\u2924\u2926"+
		"\5\u02cc\u0167\2\u2925\u2923\3\2\2\2\u2925\u2924\3\2\2\2\u2926\u03a7\3"+
		"\2\2\2\u2927\u2928\7m\2\2\u2928\u2929\7F\2\2\u2929\u292b\7\u031b\2\2\u292a"+
		"\u292c\7\u0339\2\2\u292b\u292a\3\2\2\2\u292b\u292c\3\2\2\2\u292c\u2939"+
		"\3\2\2\2\u292d\u2934\7\u017d\2\2\u292e\u292f\7q\2\2\u292f\u2930\7\u0324"+
		"\2\2\u2930\u2931\t\3\2\2\u2931\u2932\7\u01de\2\2\u2932\u2933\7\u0324\2"+
		"\2\u2933\u2935\t\3\2\2\u2934\u292e\3\2\2\2\u2934\u2935\3\2\2\2\u2935\u2937"+
		"\3\2\2\2\u2936\u2938\7\u01b8\2\2\u2937\u2936\3\2\2\2\u2937\u2938\3\2\2"+
		"\2\u2938\u293a\3\2\2\2\u2939\u292d\3\2\2\2\u2939\u293a\3\2\2\2\u293a\u03a9"+
		"\3\2\2\2\u293b\u293d\7\u0178\2\2\u293c\u293b\3\2\2\2\u293c\u293d\3\2\2"+
		"\2\u293d\u293e\3\2\2\2\u293e\u293f\7\u0336\2\2\u293f\u2940\5\u03ac\u01d7"+
		"\2\u2940\u2946\7\u0337\2\2\u2941\u2943\7\u0338\2\2\u2942\u2941\3\2\2\2"+
		"\u2942\u2943\3\2\2\2\u2943\u2944\3\2\2\2\u2944\u2945\7\u02f1\2\2\u2945"+
		"\u2947\5\u01c0\u00e1\2\u2946\u2942\3\2\2\2\u2946\u2947\3\2\2\2\u2947\u2949"+
		"\3\2\2\2\u2948\u294a\7\u0339\2\2\u2949\u2948\3\2\2\2\u2949\u294a\3\2\2"+
		"\2\u294a\u03ab\3\2\2\2\u294b\u294c\7\u008f\2\2\u294c\u294d\7F\2\2\u294d"+
		"\u294e\7\u0093\2\2\u294e\u294f\t\3\2\2\u294f\u2950\7\u008c\2\2\u2950\u2952"+
		"\5\u03ae\u01d8\2\u2951\u2953\7\u0339\2\2\u2952\u2951\3\2\2\2\u2952\u2953"+
		"\3\2\2\2\u2953\u03ad\3\2\2\2\u2954\u2955\5\u03ba\u01de\2\u2955\u2956\7"+
		"\u0331\2\2\u2956\u2957\5\u03ba\u01de\2\u2957\u2958\7\u0331\2\2\u2958\u2959"+
		"\5\u03ba\u01de\2\u2959\u295c\3\2\2\2\u295a\u295c\5\u03ba\u01de\2\u295b"+
		"\u2954\3\2\2\2\u295b\u295a\3\2\2\2\u295c\u03af\3\2\2\2\u295d\u295e\7\u02cd"+
		"\2\2\u295e\u295f\7\u00e6\2\2\u295f\u2960\7F\2\2\u2960\u2961\t\3\2\2\u2961"+
		"\u2962\7\u0252\2\2\u2962\u2963\7\u02fc\2\2\u2963\u2967\5\u02cc\u0167\2"+
		"\u2964\u2965\7\u0336\2\2\u2965\u2966\t\3\2\2\u2966\u2968\7\u0337\2\2\u2967"+
		"\u2964\3\2\2\2\u2967\u2968\3\2\2\2\u2968\u296a\3\2\2\2\u2969\u296b\7\u0339"+
		"\2\2\u296a\u2969\3\2\2\2\u296a\u296b\3\2\2\2\u296b\u03b1\3\2\2\2\u296c"+
		"\u296e\5\u03ba\u01de\2\u296d\u296f\7\u0097\2\2\u296e\u296d\3\2\2\2\u296e"+
		"\u296f\3\2\2\2\u296f\u2977\3\2\2\2\u2970\u2971\7\u0336\2\2\u2971\u2974"+
		"\t\u0087\2\2\u2972\u2973\7\u0338\2\2\u2973\u2975\7\u031c\2\2\u2974\u2972"+
		"\3\2\2\2\u2974\u2975\3\2\2\2\u2975\u2976\3\2\2\2\u2976\u2978\7\u0337\2"+
		"\2\u2977\u2970\3\2\2\2\u2977\u2978\3\2\2\2\u2978\u2982\3\2\2\2\u2979\u297b"+
		"\7e\2\2\u297a\u297c\7\u00ff\2\2\u297b\u297a\3\2\2\2\u297b\u297c\3\2\2"+
		"\2\u297c\u2982\3\2\2\2\u297d\u2982\7\u0226\2\2\u297e\u2982\7\u02f3\2\2"+
		"\u297f\u2982\7\u02d8\2\2\u2980\u2982\7\u01a7\2\2\u2981\u296c\3\2\2\2\u2981"+
		"\u2979\3\2\2\2\u2981\u297d\3\2\2\2\u2981\u297e\3\2\2\2\u2981\u297f\3\2"+
		"\2\2\u2981\u2980\3\2\2\2\u2982\u03b3\3\2\2\2\u2983\u2987\7\u00e0\2\2\u2984"+
		"\u2987\7Z\2\2\u2985\u2987\5\u03b6\u01dc\2\u2986\u2983\3\2\2\2\u2986\u2984"+
		"\3\2\2\2\u2986\u2985\3\2\2\2\u2987\u03b5\3\2\2\2\u2988\u2998\7\u0320\2"+
		"\2\u2989\u2998\7\u0321\2\2\u298a\u298c\5\u03b8\u01dd\2\u298b\u298a\3\2"+
		"\2\2\u298b\u298c\3\2\2\2\u298c\u298d\3\2\2\2\u298d\u2998\7\u031c\2\2\u298e"+
		"\u2990\5\u03b8\u01dd\2\u298f\u298e\3\2\2\2\u298f\u2990\3\2\2\2\u2990\u2991"+
		"\3\2\2\2\u2991\u2998\tp\2\2\u2992\u2994\5\u03b8\u01dd\2\u2993\u2992\3"+
		"\2\2\2\u2993\u2994\3\2\2\2\u2994\u2995\3\2\2\2\u2995\u2996\7\u0335\2\2"+
		"\u2996\u2998\t\u0088\2\2\u2997\u2988\3\2\2\2\u2997\u2989\3\2\2\2\u2997"+
		"\u298b\3\2\2\2\u2997\u298f\3\2\2\2\u2997\u2993\3\2\2\2\u2998\u03b7\3\2"+
		"\2\2\u2999\u299a\tm\2\2\u299a\u03b9\3\2\2\2\u299b\u299f\5\u03bc\u01df"+
		"\2\u299c\u299f\7\u0318\2\2\u299d\u299f\7\u031a\2\2\u299e\u299b\3\2\2\2"+
		"\u299e\u299c\3\2\2\2\u299e\u299d\3\2\2\2\u299f\u03bb\3\2\2\2\u29a0\u29a1"+
		"\t\u0089\2\2\u29a1\u03bd\3\2\2\2\u29a2\u29b2\7\u0324\2\2\u29a3\u29b2\7"+
		"\u0325\2\2\u29a4\u29b2\7\u0326\2\2\u29a5\u29a6\7\u0326\2\2\u29a6\u29b2"+
		"\7\u0324\2\2\u29a7\u29a8\7\u0325\2\2\u29a8\u29b2\7\u0324\2\2\u29a9\u29aa"+
		"\7\u0326\2\2\u29aa\u29b2\7\u0325\2\2\u29ab\u29ac\7\u0327\2\2\u29ac\u29b2"+
		"\7\u0324\2\2\u29ad\u29ae\7\u0327\2\2\u29ae\u29b2\7\u0325\2\2\u29af\u29b0"+
		"\7\u0327\2\2\u29b0\u29b2\7\u0326\2\2\u29b1\u29a2\3\2\2\2\u29b1\u29a3\3"+
		"\2\2\2\u29b1\u29a4\3\2\2\2\u29b1\u29a5\3\2\2\2\u29b1\u29a7\3\2\2\2\u29b1"+
		"\u29a9\3\2\2\2\u29b1\u29ab\3\2\2\2\u29b1\u29ad\3\2\2\2\u29b1\u29af\3\2"+
		"\2\2\u29b2\u03bf\3\2\2\2\u29b3\u29b4\t\u008a\2\2\u29b4\u03c1\3\2\2\2\u29b5"+
		"\u29b7\7\u031c\2\2\u29b6\u29b8\t\u008b\2\2\u29b7\u29b6\3\2\2\2\u29b7\u29b8"+
		"\3\2\2\2\u29b8\u03c3\3\2\2\2\u05ea\u03c7\u03d0\u03d4\u03da\u03dd\u03e1"+
		"\u03e5\u03ee\u03f5\u0496\u049d\u04ab\u04af\u04b2\u04b6\u04ba\u04be\u04c3"+
		"\u04c8\u04ca\u04ce\u04d1\u04d8\u04db\u04e4\u04e7\u04f2\u04f5\u04fa\u04ff"+
		"\u0502\u0507\u050b\u050e\u0512\u0515\u0518\u051f\u0523\u0525\u052a\u0530"+
		"\u0534\u0541\u0547\u054a\u0553\u0556\u0567\u056f\u0574\u0577\u057c\u057f"+
		"\u0584\u058c\u0591\u0594\u0599\u059f\u05a4\u05b5\u05b8\u05bb\u05be\u05c3"+
		"\u05cc\u05db\u05ec\u05f7\u05fd\u060c\u061b\u0624\u0628\u062d\u0633\u0639"+
		"\u063c\u0641\u0646\u064e\u0658\u066b\u0673\u0680\u0682\u068e\u0690\u0697"+
		"\u06a0\u06a6\u06af\u06be\u06c8\u06d2\u06fa\u0711\u0735\u0747\u074a\u074f"+
		"\u0752\u0757\u075a\u075f\u0762\u0767\u076a\u0772\u0775\u077d\u078a\u0795"+
		"\u079a\u079e\u07a4\u07bb\u07c7\u07d2\u07d7\u07db\u07e1\u07e3\u07f0\u0807"+
		"\u080e\u0817\u081c\u081f\u0824\u0827\u082c\u0831\u084d\u0854\u0859\u0860"+
		"\u0862\u086d\u0873\u0882\u0890\u0893\u0895\u089a\u089e\u08a1\u08a3\u08a9"+
		"\u08ac\u08ae\u08b4\u08b6\u08cc\u08d4\u08dc\u08de\u08e0\u08e9\u08fe\u090b"+
		"\u091a\u091e\u0941\u0944\u0949\u095b\u095e\u0963\u097d\u098b\u0990\u0998"+
		"\u099d\u09a4\u09b9\u09de\u09e3\u09f6\u0a02\u0a05\u0a0a\u0a0d\u0a13\u0a22"+
		"\u0a27\u0a2f\u0a32\u0a37\u0a3c\u0a3f\u0a57\u0a5e\u0a63\u0a68\u0a6d\u0a6f"+
		"\u0a76\u0a83\u0a89\u0a8e\u0a96\u0aa6\u0aad\u0ab2\u0ab7\u0aba\u0ac0\u0ac6"+
		"\u0acb\u0ad0\u0ad5\u0ad8\u0ade\u0ae4\u0aef\u0af2\u0afc\u0b02\u0b06\u0b0a"+
		"\u0b27\u0b34\u0b3a\u0b44\u0b47\u0b5b\u0b5f\u0b63\u0b68\u0b77\u0b7e\u0b87"+
		"\u0b8f\u0b92\u0b97\u0b9c\u0ba4\u0baa\u0bae\u0bb4\u0bb9\u0bbd\u0bc4\u0bcc"+
		"\u0bd4\u0bdd\u0be2\u0be6\u0be9\u0bed\u0bf3\u0bf8\u0c00\u0c08\u0c0e\u0c14"+
		"\u0c17\u0c1c\u0c1f\u0c26\u0c28\u0c2b\u0c31\u0c34\u0c39\u0c3c\u0c41\u0c44"+
		"\u0c49\u0c4c\u0c51\u0c54\u0c57\u0c5a\u0c61\u0c65\u0c6c\u0c73\u0c79\u0c86"+
		"\u0c8a\u0c8f\u0c99\u0ca2\u0ca6\u0cb2\u0cb8\u0cbd\u0cbf\u0cd3\u0cd7\u0cdf"+
		"\u0ce8\u0cee\u0cf4\u0cfc\u0cfe\u0d08\u0d0c\u0d0f\u0d13\u0d18\u0d1e\u0d21"+
		"\u0d25\u0d2d\u0d2f\u0d32\u0d3a\u0d42\u0d49\u0d50\u0d52\u0d54\u0d59\u0d5f"+
		"\u0d62\u0d64\u0d66\u0d69\u0d6e\u0d71\u0d76\u0d85\u0d8c\u0d93\u0d95\u0d97"+
		"\u0d9c\u0da2\u0da5\u0da7\u0da9\u0dac\u0db1\u0db4\u0db9\u0dc6\u0dcb\u0dd4"+
		"\u0dd9\u0ddf\u0de3\u0de7\u0df8\u0dfa\u0e04\u0e09\u0e0b\u0e0f\u0e15\u0e1d"+
		"\u0e22\u0e25\u0e2d\u0e30\u0e35\u0e3a\u0e3f\u0e44\u0e49\u0e4e\u0e52\u0e57"+
		"\u0e62\u0e67\u0e6a\u0e6d\u0e72\u0e75\u0e7a\u0e7d\u0e82\u0e85\u0e8a\u0e8d"+
		"\u0e92\u0e95\u0e9a\u0ea0\u0ea5\u0ea8\u0ead\u0eb4\u0eb6\u0ebc\u0ec5\u0eca"+
		"\u0ecc\u0ed8\u0ede\u0eea\u0eed\u0ef2\u0ef4\u0efe\u0f03\u0f05\u0f09\u0f0f"+
		"\u0f21\u0f23\u0f32\u0f44\u0f4c\u0f56\u0f66\u0f7b\u0f86\u0f8c\u0f95\u0f9e"+
		"\u0fa4\u0fad\u0fb2\u0fb5\u0fba\u0fbd\u0fc2\u0fc5\u0fcd\u0fd3\u0fd7\u0fde"+
		"\u0fe4\u0fe8\u0feb\u0fed\u0ff0\u0ff5\u0ff8\u0ffd\u1000\u1005\u1008\u100d"+
		"\u1010\u101f\u102a\u1036\u103d\u1044\u1048\u104d\u1050\u1055\u1058\u105d"+
		"\u1060\u1069\u1070\u107f\u1083\u1088\u1093\u109d\u10a9\u10af\u10b1\u10b9"+
		"\u10c2\u10c7\u10d2\u10d5\u10d9\u10e1\u10e5\u10e9\u10f1\u10f6\u10fe\u1103"+
		"\u1107\u1109\u110e\u1117\u111a\u111f\u1126\u112c\u112e\u1133\u1139\u113f"+
		"\u1144\u114a\u1151\u1156\u115b\u1160\u1163\u1167\u116b\u116f\u1173\u1178"+
		"\u117c\u1180\u118a\u1190\u1197\u119a\u11a0\u11a6\u11ab\u11ad\u11b3\u11b5"+
		"\u11ba\u11c0\u11c6\u11cb\u11cd\u11d1\u11d5\u11d8\u11e6\u11eb\u11ef\u11fc"+
		"\u11ff\u1201\u1209\u1213\u1219\u1220\u1223\u1229\u122f\u1234\u1236\u123c"+
		"\u123e\u1243\u1249\u124f\u1255\u125a\u125c\u1260\u1264\u1267\u1275\u127a"+
		"\u127e\u128b\u128e\u1290\u1298\u12a3\u12ac\u12b5\u12c0\u12c9\u12d2\u12de"+
		"\u12e2\u12e7\u12e9\u12eb\u12f0\u12f4\u12f9\u12fb\u12fd\u130b\u1310\u1326"+
		"\u133c\u1341\u134e\u1356\u136a\u136d\u1373\u137b\u1382\u1387\u138b\u138f"+
		"\u1392\u1399\u13ab\u13ad\u13c1\u13c9\u13ce\u13e0\u13ef\u13f1\u13f8\u13ff"+
		"\u1404\u1409\u140f\u1414\u1416\u141d\u1423\u1429\u142c\u1432\u143c\u143f"+
		"\u1446\u1449\u144e\u1450\u1458\u145c\u1462\u1467\u1469\u146c\u1473\u1479"+
		"\u1480\u1483\u1489\u148e\u1490\u1493\u149b\u14a1\u14a8\u14ab\u14b1\u14b6"+
		"\u14b8\u14c0\u14c8\u14ce\u14d3\u14d5\u14df\u14e4\u14ee\u14f4\u1500\u1502"+
		"\u1509\u150f\u1515\u151b\u1520\u1522\u1529\u1531\u1537\u1545\u1547\u154a"+
		"\u154f\u1551\u155d\u1563\u1571\u1573\u1576\u157b\u157e\u1583\u1585\u158e"+
		"\u1595\u159b\u159e\u15a3\u15aa\u15ac\u15b2\u15b4\u15bc\u15be\u15c4\u15c6"+
		"\u15cc\u15ce\u15d5\u15d8\u15da\u15dd\u15e1\u15e3\u15ec\u15f2\u15f6\u15fe"+
		"\u1605\u160b\u160d\u1618\u161d\u1623\u1627\u1631\u1639\u1645\u1648\u1650"+
		"\u1652\u1655\u1659\u165c\u1666\u166c\u1674\u1678\u167c\u1685\u168b\u168f"+
		"\u1692\u169d\u16a1\u16a8\u16ad\u16b0\u16b8\u16bc\u16bf\u16c3\u16c6\u16ca"+
		"\u16d1\u16d5\u16d7\u16d9\u16dc\u16df\u16e2\u16e8\u16eb\u16f3\u16f5\u16f8"+
		"\u16fc\u16ff\u1705\u1708\u170c\u170f\u1712\u1719\u171c\u1723\u1729\u172d"+
		"\u1737\u173a\u173d\u1741\u1744\u1747\u174a\u174e\u1751\u1759\u175b\u175f"+
		"\u1762\u176a\u176e\u1772\u1779\u177d\u177f\u1781\u1784\u1787\u178a\u1792"+
		"\u1798\u179e\u17a0\u17a4\u17a7\u17ac\u17b1\u17b4\u17bc\u17c0\u17c7\u17ca"+
		"\u17d3\u17d6\u17da\u17e2\u17e5\u17e9\u17ec\u17fa\u17fe\u1801\u1805\u1808"+
		"\u180d\u1810\u1816\u1819\u1820\u1824\u1826\u182e\u1831\u1835\u183c\u1841"+
		"\u1844\u1850\u1853\u1859\u1860\u1865\u186a\u1871\u1878\u187b\u1883\u188b"+
		"\u188e\u1896\u18a1\u18a4\u18ae\u18b5\u18ba\u18bd\u18c7\u18ca\u18cd\u18d5"+
		"\u18e0\u18e3\u18e6\u18ec\u18f1\u18f5\u18ff\u1902\u1905\u190b\u1911\u1919"+
		"\u191c\u1920\u1924\u1927\u192c\u193a\u194a\u194e\u1954\u1956\u1959\u195d"+
		"\u1962\u1967\u196f\u1974\u1979\u197f\u1984\u1987\u1990\u199a\u199d\u19a6"+
		"\u19ae\u19b1\u19b8\u19bb\u19e9\u19ed\u19f0\u19f6\u1a02\u1a04\u1a07\u1a20"+
		"\u1a2b\u1a33\u1a3e\u1a43\u1a46\u1a4e\u1a58\u1a5f\u1a66\u1a68\u1a74\u1a7f"+
		"\u1a83\u1a88\u1a8b\u1a8d\u1a90\u1a9c\u1a9e\u1aa0\u1aa3\u1aa8\u1aab\u1ab0"+
		"\u1aba\u1abe\u1ac3\u1ac6\u1ac8\u1acb\u1ad7\u1ad9\u1adb\u1ade\u1ae4\u1aee"+
		"\u1b02\u1b08\u1b21\u1b23\u1b3d\u1b43\u1b4e\u1b56\u1b59\u1b67\u1b6f\u1b76"+
		"\u1b8d\u1b9a\u1ba0\u1ba7\u1baf\u1bb2\u1bb5\u1bbe\u1bc8\u1bcf\u1bd3\u1bd7"+
		"\u1bdd\u1be4\u1be8\u1bee\u1bf5\u1bfc\u1bff\u1c05\u1c0c\u1c10\u1c15\u1c1a"+
		"\u1c1f\u1c27\u1c2b\u1c31\u1c38\u1c3c\u1c45\u1c4d\u1c53\u1c59\u1c6a\u1c6e"+
		"\u1c76\u1c7a\u1c82\u1c86\u1c8b\u1c8f\u1c96\u1c9c\u1c9e\u1ca2\u1ca6\u1caa"+
		"\u1cad\u1cb1\u1cb7\u1cbb\u1cbd\u1cc4\u1ccb\u1cce\u1cd1\u1cd8\u1cdd\u1ce2"+
		"\u1ce6\u1cec\u1cf0\u1cf2\u1cf7\u1cfc\u1d00\u1d05\u1d0b\u1d0f\u1d13\u1d15"+
		"\u1d19\u1d1d\u1d21\u1d25\u1d2b\u1d2e\u1d34\u1d38\u1d3c\u1d42\u1d48\u1d4a"+
		"\u1d4d\u1d51\u1d55\u1d59\u1d5f\u1d62\u1d68\u1d6e\u1d71\u1d77\u1d7a\u1d80"+
		"\u1d83\u1d87\u1d8b\u1d8f\u1d94\u1d97\u1d9b\u1d9f\u1db0\u1db2\u1db4\u1db7"+
		"\u1dbe\u1dc3\u1dc7\u1dcd\u1dd1\u1dd3\u1dd8\u1ddd\u1de1\u1de6\u1dec\u1df0"+
		"\u1df4\u1df6\u1dfa\u1dfe\u1e02\u1e06\u1e0c\u1e0f\u1e15\u1e19\u1e1d\u1e23"+
		"\u1e29\u1e2b\u1e2e\u1e32\u1e36\u1e3a\u1e40\u1e43\u1e49\u1e4f\u1e52\u1e58"+
		"\u1e5b\u1e61\u1e64\u1e68\u1e6c\u1e70\u1e75\u1e78\u1e7c\u1e80\u1e86\u1e89"+
		"\u1e8d\u1e9e\u1ea0\u1ea2\u1ea5\u1eb3\u1eb9\u1ec1\u1ec8\u1eca\u1ecd\u1eef"+
		"\u1ef3\u1efa\u1efd\u1f00\u1f08\u1f0d\u1f12\u1f15\u1f17\u1f1b\u1f1f\u1f22"+
		"\u1f26\u1f2c\u1f31\u1f38\u1f3a\u1f3e\u1f46\u1f4c\u1f50\u1f53\u1f5c\u1f5f"+
		"\u1f65\u1f6c\u1f71\u1f79\u1f7e\u1f8a\u1f8c\u1f97\u1f9e\u1fa8\u1fbf\u1fcc"+
		"\u1fdc\u1fe1\u1fe8\u1feb\u1fef\u1ff1\u2002\u2011\u2019\u2022\u202a\u2033"+
		"\u203e\u2042\u2044\u2046\u204c\u2051\u2058\u2065\u2067\u2069\u206c\u206f"+
		"\u2076\u2079\u207f\u2084\u2086\u2089\u208f\u2097\u2099\u209c\u20a0\u20a3"+
		"\u20ad\u20b0\u20b4\u20b7\u20bd\u20c0\u20c2\u20c6\u20cb\u20cf\u20d7\u20db"+
		"\u20de\u20e3\u20eb\u20f0\u20fa\u2105\u210a\u2110\u2116\u211a\u211d\u2121"+
		"\u2125\u212d\u2132\u2134\u2137\u213c\u2145\u2149\u214e\u2151\u2154\u215a"+
		"\u2162\u216a\u216d\u2170\u2174\u2179\u217c\u2182\u2186\u218c\u2194\u219a"+
		"\u219c\u219f\u21ae\u21b1\u21b4\u21b6\u21c1\u21cc\u21d5\u21df\u21e9\u21eb"+
		"\u21ed\u21f0\u21f3\u21fe\u2200\u2202\u2205\u220a\u2215\u221e\u2221\u2224"+
		"\u222d\u2230\u2233\u223a\u223d\u224c\u224f\u2256\u2266\u226a\u2274\u2287"+
		"\u2289\u2290\u2297\u229b\u22a3\u22a7\u22ab\u22b1\u22bb\u22c5\u22cc\u22d3"+
		"\u22dc\u22e3\u22ea\u22f3\u22f7\u2301\u2308\u2310\u2318\u231c\u2332\u233b"+
		"\u2341\u2347\u234d\u2357\u235e\u2363\u2368\u236c\u2373\u2377\u237a\u237f"+
		"\u2383\u2387\u238c\u2393\u2396\u239a\u239f\u23a3\u23ac\u23b3\u23bc\u23c8"+
		"\u23ca\u23d4\u23d7\u23dc\u23e5\u23e7\u23e9\u23ee\u23f6\u23fb\u2403\u2408"+
		"\u240e\u2418\u241a\u241e\u2422\u2424\u242b\u2436\u2458\u2468\u246f\u2471"+
		"\u2478\u2481\u248b\u2490\u2497\u249a\u24a1\u24a8\u24ab\u24ad\u24b5\u24b7"+
		"\u24bd\u24c4\u24cc\u24d2\u24d7\u24db\u24df\u24e4\u24e6\u24ed\u24f1\u24f8"+
		"\u24fa\u2501\u2503\u250c\u2514\u251b\u2521\u252c\u2530\u2532\u2535\u254d"+
		"\u2566\u256b\u257f\u2583\u2587\u2597\u259f\u25b5\u25ef\u25f3\u261d\u2624"+
		"\u262a\u2637\u2646\u2651\u2656\u2660\u2669\u268b\u2690\u2696\u2699\u269e"+
		"\u26a3\u26ac\u26b1\u26b7\u26c0\u26ca\u26cd\u26db\u26e1\u26e9\u26ed\u26f5"+
		"\u26fc\u2709\u2711\u271e\u2725\u272b\u272f\u2740\u274f\u2751\u2756\u2759"+
		"\u2762\u2765\u2768\u2775\u2779\u2781\u2787\u278f\u2796\u279c\u27ab\u27b4"+
		"\u27ba\u27c0\u27c3\u27c7\u27ce\u27d6\u27d9\u27df\u27e5\u27e7\u27ed\u27f0"+
		"\u27f2\u27f8\u27fa\u2808\u280f\u2818\u281f\u282b\u2832\u2839\u2840\u2846"+
		"\u284d\u2850\u2855\u285c\u2864\u2868\u286b\u2873\u2877\u287a\u287e\u2883"+
		"\u2889\u288f\u2895\u289b\u28a1\u28a7\u28ad\u28b0\u28b4\u28b9\u28bd\u28c5"+
		"\u28ca\u28d1\u28da\u28dc\u28e3\u28ef\u28f4\u28ff\u2909\u290b\u2911\u2913"+
		"\u2918\u291a\u291d\u2921\u2925\u292b\u2934\u2937\u2939\u293c\u2942\u2946"+
		"\u2949\u2952\u295b\u2967\u296a\u296e\u2974\u2977\u297b\u2981\u2986\u298b"+
		"\u298f\u2993\u2997\u299e\u29b1\u29b7";
	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 - 2025 Weber Informatics LLC | Privacy Policy